After Microsoft acquired GitHub, many developers have been looking for alternatives to host their code. Microsoft (and many other giant companies) has a habit of purchasing a proven technology/sites/products to expand its reach. Skype is one example, and now Github is as well.
However, the news about its acquisition of GitHub was a cold shower for the community. While I personally never liked GitHub and consider it a usability disaster, it was the go-to destination for hosting a huge amount of open source projects. Monopoly is rarely healthy, and the (impeding) end of GitHub proves it all over again.
Fortunately, there are a lot of other version control systems for you to choose from. Not all of them have all the functionality of GitHub, but depending on what you need them for, the choices are pretty good. If you are one of those developers looking to switch from GitHub, we’ll list here some of the alternatives – they are all self-hosted because you do not want to trust somebody else with your precious code, right?
Even before GitHub went into the wrong hands, GitLab was a pretty popular alternative. Now I expect it will draw much more attention. GitLab is open source, and its core edition is free. There are paid versions as well; they start at $4 per user per month. It’s a complete DevOps lifecycle tool with planning, testing, packaging, and releasing functionality. It comes with a wiki and issue-tracking features, too. You can deploy GitLab inhouse or in the cloud.
If painless installation is your top concern, then there is nothing better for you than Gogs. It comes with ready-to-use binaries for Windows, Linux, Mac, and Raspberry Pi, but you can also use Go to install it on any other platform where Go runs. Gogs is lightweight and fast, and even though it doesn’t have all the features of big expensive suits, it comes with a wiki, bug tracking, version control, etc.
Trac is a great choice if you are looking for a minimalistic GitHub alternative. Essentially, Trac is an enhanced wiki and issue-tracking system for software development projects. For version control it uses Git and Subversion, but it can work with a dozen others, too (e.g. Mercurial, Perforce, etc.). With its good reporting functionality, Trac is a good choice if you have to regularly and closely monitor the progress of projects.
GitBucket is a GitHub clone written in Scala. It doesn’t have as many features as the other apps on the list. In fact, its main advantage is its similarity to GitHub. In other words, if you start missing GitHub, you can always resort to GitBucket. Its features include repository viewer, issues tracking, pull requests, and a wiki. You can extend its functionality with the help of plugins, but don’t expect too much from them.
Unlike the other software on this list, Mercurial is completely different from GitHub because it doesn’t use the Git server, though you can convert your Mercurial data into Git objects. Mercurial isn’t the only non-git server alternative of GitHub – there are many other version control systems, such as Perforce, Subversion, etc., you can use to manage your source code.
I included Mercurial because it’s good, cross platform, and comes with a ton of extensions. Additionally, many of my friends, who have used both GitHub and Mercurial, say Mercurial is much easier to use. I also like its distributed architecture. In terms of features, the core install isn’t mind-blowing, but there are extensions for almost anything imaginable.
With or without GitHub, life goes on. Don’t mourn GitHub too much – it might be a good thing that it’s now owned by Microsoft. This will stimulate the growth of its alternatives, and I do believe some of them will become better than the GitHub we know today.