GitHub has become the main platform to collaborate on open source projects. It started out as managed git hosting. Over time it has incorporated features around the needs of open source projects. This includes basic issue tracking, wiki, pull requests, CI/CD and audit tooling.
GitHub being such a central and core platform for projects and software companies, also comes with drawbacks. It is a closed source product with a largely unknown road map. It is also a single point of failure for teams. Further, since the acquisition of GitHub by Microsoft, many are worried whether it will retain it's former independence. More often than not, acquisitions makes it even less transparent on what the future brings.
Luckily, many great open source alternatives have emerged and are suite better as they are tailored to specific needs.
Let's check out 5 great projects, which lets you get back control of your precious SCM and contributor communities.
GitLab was started in 2011 when Dmitriy Zaporozhets needed a tool to collaborate with his team. Since then the project has evolved dramatically and by now boasts an impressive feature set. In many areas like CI/CD or container management, it has even surpassed the feature set of GitHub.
Next to the typical features around source code management, GitLab now has support for continuous integration, auto dev-ops pipelines, security automation, agile development tooling and analytics around project development. Developers, who are used to GitHub will feel right at home.
GitLab follows an open core model. In this model, there is a Free & Open Source version of the product that offers most of the features. There is also a paid enterprise edition, suited for larger organizations.
GitLab is written in Rails but also has some components written in Go. Installing GitLab from source is an onerous undertaking and not for the faint of heart!
Gogs is "a painless self-hosted Git service" and the feature set and development takes this to heart. It offers everything that is required from a basic git hosting service but nothing more. For example, instead of writing a custom CI/CD system, it instead merely integrates with existing CI/CD systems like Jenkins, Drone, Concourse. This focus keeps it simple and lightweight and is thus ideal for small teams and personal projects. Gogs is written in Golang and thus highly performant.
Gitea is a community fork of the afore-mentioned Gogs. It was forked in November 2016 because the Gitea authors wanted a different management model that included more people. In contrast, contribution to the Gogs project is tightly controlled by the Gogs author. Gitea has a similar feature set as Gogs together with a slightly improved user interface. It also has a lot of small fixes under the hood. The contributor community maintains a active blog where you can read more about upcoming releases and features.
Phabricator was originally developed as an internal tool for Facebook. The project was continued independently under a new company founded by main developer Evan Priestley once he left Facebook. The new company Phacility develops Phabricator as an Open Source Project and provides hosted instances together with support.
Phabricator is actually a whole suite of tools around project management and not just git hosting. It includes Conpherence Group messaging, Phriction Wiki, Workboards, Herald Business Rules and much more.
Redmine was started in 2006 by Jean-Philippe. It is a free and open source, web-based project management and issue tracking tool. It allows users to manage multiple projects and associated sub-projects. It features per project wikis and forums, time tracking, and flexible, role-based access control.
One of the main strengths of Redmine over the other projects we have discussed so far is that it is extensible via plugins. There is an active community that develops and maintains Redmine plugins for just about every use case.
There is no clear winner as it heavily depends on the use-case. If non-git source code management is required, the options are Redmine & Phabricator. Redmine can appear to be a bit dated from a UX point of view. Phabricator looks modern but it's workflows are quite different from GitHub. GitLab, on the other hand, has the familiar UX as GitHub and covers nearly all use-cases for project management. However, GitLab is quite resource intensive to run and is a bit of a maintenance burden. Gogs & Gitea offer light weight solutions for basic Git hosting with issue tracking and pull/merge requests.
Cloudron is a platform that makes it easy to run and manage web apps like WordPress, Nextcloud, GitLab on your server. GitLab, Gogs, Gitea, Phabricator and Redmine are all available on the Cloudron Store and can be easily installed on your server with a few clicks.