Choosing proprietary tools and services for your free software project ultimately sends a message to downstream developers and users of your project that freedom of all users—developers included—is not a priority.
—Matt Lee, https://www.linuxjournal.com/content/opinion-github-vs-gitlab
The D in DCVS is for distributed which Git can (& probably should) be—which should mean a project does not require a specific platform. Even if you would prefer an alternative UX, there should not be a barrier to contribution beyond email if a user does not wish to share data with Microsoft GitHub (alternatively, decentralized authentication). Due to this, many projects are stuck on MS GitHub thru vendor lock-in. As a user, I must fork your project on MS GitHub to submit a pull request & I must have an account to raise or comment on issues. Worse is some communities, like Elm & Nix have tied their user identity in the community to this closed system.
MS GitHub is closed source, proprietary. While Git is open & many of the projects on MS GitHub are, MS GitHub itself is not. If you have a problem, you can’t just send up a fix nor can you fork & self-host the project. The best you can do is beg on their forums for bugfixes & feature requests, which is not the process of free forges.
GitHub is owned by Microsoft—the same company that used embrace, extend, extinguish (EEE) in the past to ruin software as a whole. Microsoft is at it again trying to further monopolize with Azure, Codespaces, Visual Studio (regular & Code), npm, Sponsors, & trying to steal mindshare from free software with Windows Subsystem Linux (WSL) & your org with Teams. Over time, they have been pushing for tighter & tighter integrations, & we can assume eventually they will see no need to afford any interop & more proprietary extensions will be added. We can already see integrated ads for their MS Copilot in the source views now. This is what happens under capitalism and publicly-traded companies are legally obligated to make profits for the shareholders & have no real allegience to helping the users if it does not help profit.
MS GitHub is trying to make code unnecessarily ‘social’ which doesn’t need to exist. We don’t need targeted advertising for other projects or anxiety about how colorful status progress bars are.
Tip
I have created a uBlock Origin list to help declutter your MS GitHub experience while forced to be here. (Sorry MS GitHub doesn’t support rST’s callouts/admonitions, only works using unsemantic code using a blockquote that they post process since they don’t care about semantics).
The API of MS GitHub is not very stable. So while you can tool your way around simple things like an email workflow, it is not as simple with GitHub.
Search results are gated. When you search a project on Microsoft GitHub & looking to use the “Code” section, when you are not authenticated you will get a
?
results & clicking “Code” will bring you too a login. Users may not search code without a Microsoft account.Collapsed comments are gated. Folks will tell you anyone can read the issues or whatever, but there’s a subset of content completely closed from the public.
MS GitHub’s Copilot should not be supported & it’s controversially either spitting out code that violates GPL or as one lawyer said all outputs are derivative & must be in the public domain (so your code may have future legal issues), it copies bugs, & isn’t there to help more than you help train it. As predictied, it is now a product sold back to you. While lessening the barrier to entry for programming could be good, training on all of our open code behind a closed platform, closed data, & capital-hungry entity to sell isn’t in the spirit of open source or free software. Currently the project is under litigation.
The $500k donation PR stunt is an attempt to get more folks to buy into their payment platform (which will take an additional 10% cut beyond other transaction fees). Naturally this was paid out only to folks that signed up for their payment service in an attempt to bring others in on FOMO & further monopolize the source code platform.
We’ve seen most GPL, GNU, & privacy-oriented projects move to alternatives because they want to respect their users and the spirit of open source. I hope to see your projects move to one of the alternatives soon too!
Use an alternative Git code forge
- Git-supporting Code Forge Alternatives
- SourceHut
self-hostable AGPL service where using their hosted basics are free (including mailing lists & an IRC bouncer), but CI is paid, however it is not VC-funded nor does it have investors or shareholders to appease
- GNU Savannah
for FLOSS software where your projects need to be approved as such
- Forgejo
self-hosted, FLOSS GitHub clone essentially
- Codeberg
Forgejo hosted by a German non-profit
- cgit
tiny, self-hosted GPL Git UI
- Ayllu
another tiny, self-hosted AGPL Git UI with a bright future
- GitLab
free, open-core, Ruby-based forge support with full build pipeline & self-hostable community edition (however are VC-funded & is publicly traded so they have investors to appease, so we’ll see about the future)
Try an alternative to Git
- Some other VCS options
- Darcs
“Darcs is a free and open source, cross-platform version control system, […] with a very different approach: focus on changes rather than snapshots. Darcs offers a freer way of working, and a simpler user interface.” Ever thought it was weird that the order of patches matters in Git when the output is the same?
- Pijul
“Pijul is a free and open source (GPL2) distributed version control system. Its distinctive feature is to be based on a theory of patches, while still being fast and scalable. This makes it easy to learn and use, without any compromise on power or features.”
Ask your code communities & workplace to switch to an alternative code forge or officially back a mirror on an alternative. If that cannot be done, ask your code communities & workplace to at least allow additions to its larger ecosystem from these alternatives (plugins, packages, etc.) as well as posting a public mailing address to email code patches.
Oppose all attempts to standardize, endorse, or weigh anything in MS GitHub’s specific favor (like shorthands for packages)
Make sure educational institutions aren’t requiring students to sign up for proprietary accounts. It’s bad enough that the next generation continues to be trained in Adobe Suite & Microsoft Office instead of FLOSS / ethical options, but now Git & other VCSs are in the same boat where fundamentals can be learned that don’t require a proprietary service (and universites in particular have the resources to self-host at least cgit). If you are doing a workshop, bootcamp, or other smaller beginner-related activity, this rule should still apply. (German school are looking into it!)
I back free software & software with adjacent ideologies …where a lot of these projects are here without much forethought about the drawbacks. I care more about that ethos than my self-held stance on where the code is hosted, but we need to get more code off this platform. You can’t have any migration conversations without contributing to projects in good faith. To a lot of folks MS GitHub is seen as a default & alternatives were never considered (worse is the cross section of folks that conflate Git as MS GitHub).
I’m also glaring at MS GitHub for stripping out <abbr>
tags from rendered documents such as this even though these tags would help accessibility. Also thank you Microsoft for not properly implementing callouts which a) does not support reStructuredText/AsciiDoc & b) clashes with the CommonMark spec overloading blockquotes which render nonsemantic markup in most other contexts.
- Codeberg (primary)
- https://codeberg.org/toastal
- darcs hub
- https://hub.darcs.net/toastal
- Smeederee
- https://smeder.ee/~toastal
- SourceHut
- https://sr.ht/~toastal
- GitLab
- https://gitlab.com/toastal