Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

GitHub and Developer Ecosystem Control

Posted on Sep 28 I generally don't write on opinionated topics much but I'd like to have a discussion on Github. At its foundation GitHub was a solo entity that ran its own ship. It gained popularity with intuitive UI features around git such as pull requests. This began to pull in developers from the open source community and made their projects easier to manage and take contributions for. Then on June 4, 2018 Microsoft had announced it acquired GitHub. In this article I'll discuss the control that has established as well as the hurdles for alternatives for those concerned about the amount of control.The start of Microsoft had quite the friction with open source software and hobbyists. This can be seen in the infamous An Open Letter To Hobbyists dating back to 1976. There's also Steve Ballmer's thoughts on Linux being a cancer. History took an interesting turn however as Microsoft began working with open source and opening up several previously proprietary products as well. One notable event was Microsoft providing source code to the Samba project. This was fairly unheard of as Samba has already had some interesting history with Microsoft.This became even more interesting as Microsoft started to open source core technology such as Powershell, the DotNET platform, their internal Linux distribution, and much more. All this hosting on GitHub also made sense acquisition wise.Considering the history open source has had with Microsoft, it's not surprising that there were those reluctant to accept this at face value. GitLab and BitBucket both saw increases in user migration following the announcement. It's also important to consider that working with open source also needs to be viable as a business opportunity. Given how many companies run AWS or Google Cloud primarily on Linux servers, trying to push away Linux would not be a good idea. Having things like Powershell available across multiple operating systems can help provide a "one stop" style solution as well. The recent developments with Terraform's license change have also kindled uncertainty in trust of commercial entities with open source related content. So how can open source projects detach themselves from this kind of situation? Well, it's a bit complicated.This is probably the most crucial component out of everything. There is the danger of burnout from volunteer open source developers who can't get support or adoption for their code. With the last publicly announced 100 million user count, that's a lot of potential adopters and contributors. The largest alternative, GitLab, is estimated to be at around 30 million users. An ideal alternative would have either a substantial userbase or a very high amount of contributors to projects to be viableBitBucket and GitLab both have organizational backing, BitBucket even more so. GitLab does offer an open source core for those to self host. Though I must say the "Contact Sales" link at the top navigation banner is quite interesting. The GNU project does offer hosting services, though it's very much conditional on buying into their philosophy. There are also some options of hosted software such as heptapod and Codeberg.Finding a hosting solution backed by a considerable user base without a company behind it is difficultPart of the major userbase pull in GitHub revolves around hosting a considerable number of popular projects including Angular, React, Kubernetes, cpython, Ruby, tensorflow, and well even the software that powers this site Forem.On the other hand you may find large ecosystems revolving around their own dedicated hosting. Gnome and KDE both have their own self-hosted GitLab offerings. For Ubuntu related projects there's Launchpad. Finally as has already been mentioned before GNU Savannah for GNU/FLOSS type projects. That said, having several logins to contribute is not quite ideal.A number of popular projects can help contribute to growth of an alternativeI mostly put these together as they're directly related. In order to handle a large number of users, you need a decent amount of money or someone donating hosting/hardware. Either sponsored by large companies or funded from a mix of contribution sources. This is especially difficult if you're trying to avoid being too attached to companies. It really depends on if there are strings attached to contributions.There's also the issue of keeping the lights on. With company backed solutions there are at least dedicated teams to dealing with infrastructure issues. For funded projects they need enough to hire capable individuals or have the hosting solution offload the infrastructure workload. Otherwise people might give up contributing because of frustrations with any issues that arise (in particular heptapod was fairly slow when I attempted to use it). An alternative should run reliably and be able to handle operating expensesThis is also somewhat bundled together. Changes made difficult due to UI workflows will frustrate users who simply want to contribute. Losing functionality such as pull requests, built-in CI/CD, fine grained permissions management, dependency tracking, security features, etc. might also make them not want to migrate elsewhere. For open source volunteer project members making it as easy as possible for others to contribute helps prevent burnout and project abandonment. An alternative would benefit highly from a well designed user interface and features for streamlining common tasksA good majority of developer related tools that deal with source code management have integration with GitHub. Some may even use it to host components (GoLang packages). When developers go to use tools they feel comfort in knowing that GitHub support is a fairly standard offering. That said there are some packages which support standard git without relying on a platform like GitHub. It's still nice being able to handle both situations. GitLab has a fairly competitive list of integration offerings. This would make it ideal for those who want to switch their workloads without a substantial migration burden. The open source solution gitea also provides a fairly reasonable set of integrations as well.An alternative would benefit highly from integrations with popular development toolsWhile both a feature and integration, the importance is on a larger scale. Automated checks on PRs, deployments, scanning/analysis, etc. provided by CI/CD helps ease the burden of volunteer based open source software. This in turn helps mitigate the burnout situation. GitHub actually didn't have any CI/CD solutions and many projects used external solutions such as CircleCI and Travis CI. It wasn't until 2019 that GitHub Actions started to become a "don't need another external site" solution.While there certainly are external solutions such as the mentioned CircleCI and TravisCI it's still another service to login to and manage. GitLab does have its own CI/CD system but it's not a complete compatibility with GitHub actions for migration purposes. It also lacks the library of existing solutions that third party GitHub actions provides (you can see how this ends up here). Gitea based solutions can rely on Gitea actions which is meant to be compatible with GitHub actions (and thus shared actions). That said, it's in a relatively new state and will require polishing to get certain actions to work.An alternative should have a built in CI/CD system to ease maintainer burdens and not require another loginBeing a collaborative effort requires ways to streamline communication. This includes PRs, issues, discussions, etc. It also means being able to moderate such discussions so maintainers are not overwhelmed by communication overload. While I've noticed GitLab instances with wikis, issues, and PRs, there doesn't seem to be a discussions like feature to filter out basic questions or proposals for features out of issues. It's possible that discussion can happen elsewhere it's still one extra step on the contribution process.An alternative should make it easier for developers and contributors to collaborateTo be quite honest a unicorn solution that meets all of these requirements isn't very feasible. In order for users to want to give up what GitHub was offering:Also a mass exodus isn't something you're going to see unless Microsoft does something really brash with GitHub. Some scenarios that would make this possible:The first option doesn't really make any business sense for Microsoft. Payment for core service is a possibility, though it would depend on the extent. Shutting down their open source offerings is possible, though it would probably require a substantial structural change in the company. The last one we really don't know until someone calls it out with considerable evidence. It's one of those "even if they were they're not going to flat out tell us". So assuming this were to happen would could we possible expect as the outcome?In this situation a majority of individuals feel that they want the large community in a central location with a solid backing. This would most likely make GitLab unstable for a period of time dealing with the mass influx. However, it would also mean there would be less options and a major competitor put in a bad spot. This could mean a takeover of sales and business culture within the company which causes them to not make great decisions for open source.Another option is that a majority feels like migrating to GitLab may end up repeating the same problem. Instead they decide to utilize a still centralized, but community owned solution. This would probably be one of the more difficult choices as it requires duck taping something together quickly and then iterating on it to improve usability. It would all depend on how motivated the community is.It also could end up with major ecosystems branching out ala Twitter's situation where people become weary of having everything in a centralized location. This could lead to community sites for container ecosystems, JS ecosystems, programming language ecosystems, etc. While larger and more popular ecosystems might actually benefit from this focus wise, smaller ecosystems would lose discoverability. This would lead to higher abandonment of low adoption projects that might have turned into something good.The other solution is the communities are fragmented but are still able to interact with each other. This would require something similar to ActivityPub for the Fediverse. It should also support a shared authentication system to allow users to hop between different ecosystems with ease. A system for discovery mechanism for enabling promotion of smaller projects would also contribute greatly to helping the overall community. It does have the same issues with community centralization though, which is getting something up and running quickly for people to migrate to.As it is right now I don't think we'll see the current situation change much. A good number of developers want things easy, and Microsoft hasn't done anything extremely brash enough to warrant people thinking about it. Even then there's also still a chance that another solution pops up that developers organically migrate to over time, over-passing GitHub at some point.I think another part of it is that the free software philosophy needs to take a more modern approach to things. GNU websites are often stuck in the 90s style wise. Monetization approaches such as selling CDROM distributions aren't as viable anymore. Really the approach should focus more on making the user's lives easier first and foremost, followed by the philosophy of the source being open/free. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well Confirm For further actions, you may consider blocking this person and/or reporting abuse DASWU - Aug 30 Ben Halpern - Sep 19 haimantika mitra - Aug 30 Hetarth Shah - Aug 20 Once suspended, cwprogram will not be able to comment or publish posts until their suspension is removed. Once unsuspended, cwprogram will be able to comment and publish posts again. Once unpublished, all posts by cwprogram will become hidden and only accessible to themselves. If cwprogram is not suspended, they can still re-publish their posts from their dashboard. Note: Once unpublished, this post will become invisible to the public and only accessible to Chris White. They can still re-publish the post if they are not suspended. Thanks for keeping DEV Community safe. Here is what you can do to flag cwprogram: cwprogram consistently posts content that violates DEV Community's code of conduct because it is harassing, offensive or spammy. Unflagging cwprogram will restore default visibility to their posts. DEV Community — A constructive and inclusive social network for software developers. With you every step of your journey. Built on Forem — the open source software that powers DEV and other inclusive communities.Made with love and Ruby on Rails. DEV Community © 2016 - 2023. We're a place where coders share, stay up-to-date and grow their careers.



This post first appeared on VedVyas Articles, please read the originial post: here

Share the post

GitHub and Developer Ecosystem Control

×

Subscribe to Vedvyas Articles

Get updates delivered right to your inbox!

Thank you for your subscription

×