Around 7 months ago from the time of publishing this post, I made the decision to switch away from GitHub. The majority of my frustrations came from their parent company, Microsoft, and the features that they were focusing on. It largely felt as if the direction they were starting to pivot towards wasn't what I needed out of a Git platform. So, I migrated most of my projects to GitLab.

But that's where you begin to notice how difficult it can be to switch off of GitHub. On the surface, a Git platform's primary purpose is to host and store a remote Git repository, usually bundled with social features that make it easier for users and developers to work together or share issues with a certain project.

But then you realize all of the additional things that can go into a platform, such as the CI/CD through GitHub Actions, the social features that make it easier to see what developers are up to, or as an "at a glance" of their work experience through their project history. On top of that, there are so many different platforms that integrate with GitHub itself, like automatic deployments on platforms like Vercel or Cloudflare.

The truth is, switching away from GitHub is actually a lot harder than you may originally think on the surface. And it doesn't just boil down to the feature-set either.

Microsoft and the heavy push for Copilot.

Listen, I'm not going to pretend to be "holier-than-thou" regarding AI. For a long time I've raved about how it should be used as a tool. Not as a complete replacement for human creativity, OR as a complete replacement for human review in general. And honestly, that's what Copilot originally started as - or at least in the GitHub world of things.

GitHub Copilot originally started as a "technical-preview" feature in 2021 as a plugin for VSCode. Releasing fully in late June of 2022, it served as a tool that would index and analyze your codebase and suggest tab-completions based on the context. It didn't generate the entire project, it served as a tool to help assist developers. It was genuinely useful.

Over time, we witnessed the skyrocket of OpenAI as they eventually became not-so-open. Microsoft would then partner with OpenAI, and that's when we started to see the "Microslop-ification" of Microsoft's products.

You know the iconic (for better and for worse) Office 365 subscription that Microsoft has had since 2011? Yeah, forget about all of that. We're instead going to call it Microsoft 365 - wait no no no... what if we instead called it Microsoft Copilot 365? Yes, we also still have another product called GitHub Copilot, and no, they aren't related or share any benefits.

Oh, and you know what... what if instead of PCs, we called them "Copilot+ PCs" and we had a dedicated key that opens Copilot at any given moment! Hell, let's try to put it on Xbox too!

The truth is, Microsoft has really been trying to get Copilot to be the center of everything, and GitHub has been no different. From the push to use Copilot in your editor/IDE of choice, to straight up having an "Agents" tab on every repository that you can't disable.

It became exhausting and unreliable.

So, what's the competition?

So, let's say that you wanted to leave GitHub. Where could you go to? Well, there's various different options depending on your needs, or if you want to self-host a Git platform.

In terms of cloud-based solutions, the go-to options are typically GitLab, Codeberg, or BitBucket. All of them have their advantages and don't worry - plenty of weaknesses too.

GitLab.

This is generally the one most people think of when they think of the "go-to alternative for GitHub." It's widely supported by deployment platforms, has a huge presence in the enterprise space, and it's where I moved my projects.

But if I'm being completely honest, it sucks ass. I mean genuinely this website is miserable to use. The sidebar on a repository alone has enough navigation items that on a 2560x1440p screen, I still can't see all the items when expanded. Compared to the simplicity of GitHub's code, issues, and pull requests page, it's simply ridiculous. And that tends to be a pattern across the entire website. It's just slow and overwhelming to use.

That being said, if you're looking for a GitHub alternative for your organization that you can host on your own infrastructure, GitLab has the benefit of being an option for that. You can already see it being used at scale in projects like Freedesktop or GNOME.

BitBucket.

It's owned by Atlassian. That alone should be enough of a telltale sign that you should probably stay away from this one. Atlassian is responsible for other services like Jira, Trello, and Confluence - which already don't have a fantastic reputation.

That being said, their product line is highly integrated into each other but it's intended exclusively for enterprise customers. If you already use Jira for work, it might be worth looking into, but not so much for the casual open-source developer.

And truth be told, I have zero experience with any Atlassian product except for maybe the dead corpse of Arc Browser. So I can't speak for how well BitBucket itself works.

Codeberg.

Codeberg itself is a publicly hosted instance of Forgejo ran by it's maintainers. Which itself is a fork of Gitea owned by the non-profit organization "Codeberg e.V." after Gitea was taken over by a for-profit company.

I tried out Codeberg, and in my opinion, it's easily one of the best platforms to act as a direct replacement to GitHub. The design is very familiar, and remains simple enough to let you get work done without having the complexities of something like GitLab. It keeps the same project and organization structure as GitHub that allows it to also have an extremely social aspect to it. One where you can follow a user, organization or repo to see what's new and follow what people are doing, or discover new ones.

One of the biggest drawbacks to Codeberg is that it's ran exclusively on donations and membership-fees to their nonprofit. While they assure you that there's little danger of Codeberg disappearing, it does make it a bit harder to trust going all-in on the platform.

But I highly respect the work that they're doing in hosting a public social Git platform, and in maintaining Forgejo; which is what I would recommend if you wanted to self-host your own Git platform. It's simplicity, lightweight footprint, and similarity to GitHub make it a no-brainer. You can see it being used in platforms like git.gay or dawn.wine.

I ultimately moved back to GitHub.

When I originally picked GitLab to host my projects, I picked it because it was commonly integrated into most services and I liked the idea of being able to group projects. Like for example, all of my projects were under the "rcw.lol" umbrella. But in that main group, I could have subgroups like I did for my Twitch extensions. It made it easier to have a folder-like structure to help organize and group projects that were similar to each other. I also wanted a platform that would probably last for a long time. And given GitLab's presence in the enterprise space, I figured it would be a good pick.

But unfortunately, the platform itself just has too many problems that it became more of a burden to use than anything. It mostly breaks down to the time wasted trying to navigate the website and waiting for things to load.

There's also a really important thing that's hard to replace. And that's the social aspect of GitHub. I still opened GitHub a couple times a week just to see what was new with the people I followed, the repositories that I've starred, what releases were new. Truth be told, almost everybody is still on GitHub because that's where everyone else. It's the same philosophy with social media. It's hard for a new competitor to take the space because it's hard to take an existing historic user base and convince them to migrate to elsewhere.

I wanted to write this to share my actual experience with moving to a platform that isn't GitHub. That isn't to say that you shouldn't move off GitHub if you feel inclined, do what you feel is right. But it's where people are. For open source software in particular, it's hard to convince a potential new user or contributor to create yet another account on a different platform. The chances that somebody could find your project as a solution to their problem and start using or contributing to it are genuinely just higher when you're where everyone else is.

So, for now, all of my active projects are back on my GitHub. And as always, thanks for reading.

❤️