SourceHut is often described as being a minimalistic alternative to large code-hosting platforms like Codeberg or GitHub. It uses the email based workflow of git rather than the pull-merge workflow and is generally considered as being more of an esoteric platform.
For me, as an user, those statements have both truth and wrongs. While the platform is more esotheric, meaning that it is not aimed towards a beginner developer, it being considered minimalistic downplays the features of the platform.
This blogpost aims to provide more information about the platform, how it became what it is today and why it might be a good choice for hosting projects on.
Where SourceHut came from
In 2015, Drew DeVault, wanted an alternative for file-sharing services like MediaCrush or Pomf.se and thus bought the domain sr.ht and started developing his own service. The platform was approval only, meaning that Drew DeVault would need to explicitly create an user account for each individual. The source code was made available so that anybody could technically host their own instance of the file-hosting service.
In 2017, the SourceHut suite was published on said domain. Whilst the file-sharing service continued existing, the main focus of the domain shifted to becomming an code-forge.
Unix philosophy and SourceHut
The unix philosophy states that programs only should do one thing well each. This means that instead of having one application do twenty things, there should be twenty programs that each are small but extensible. This concept can be seen in the SourceHut project in almost every aspect. Instead of developing one monolithic platform, Drew opted to create smaller applications, that would integrate well with each other, however they might not need each other. This means that SourceHut should be considered more of a suite instead of one thing. What this means for the users is that there are multiple services. One for hosting git repositories, one for continuous integration, one for managing tickets and one for managing user preferences.
Whilst every service needs the user account service, the git service does not need the continuous integration service or the ticket management service. Because the SourceHut suite is fully open-source, licensed under the GPL3 license, this also means that other projects could host one or more of the provided services of the suite. An example being Alpine Linux, which use the mailing list service of the suite for their projects.
Why SourceHut is considered as being minimalistic
The SourceHut suite might not offer everything that other code forges do, like complex project management using canban boards, automatic vulnerability scanning or the ability to follow or star repositories, it offers a thought-out feature set for each service provided.
For example, projects are not limited to one repository, like in GitLab. This means that a project can have multiple repositories, multiple (issue-)trackers and multiple mailing lists. Projects, repositories, (issue-)trackers and even continuous integration builds can be marked as unlisted, meaning that they will not show up on the users profile, but when shared are still viewable. Of course, they also can be set to private.
Another thing, that I found very useful is the ability of creating a vm using the continous integration service, that I can SSH into for testing applications and building pipelines. Failed pipelines are also kept alive for 10 minutes so the developer can examine what failed and why.
SourceHut can be considered as being minimalistic, this does not mean that it is not extremely powerful. It doesn’t try to distract the developer with gamifying the forge, but tries to only show exactly what is needed.
Paying for a source forge?
Yes, paying for software is essential in my opinion. I’d rather pay for a source forge that cares about it’s users and respects their data then have my source forge train ai on my data, have a relationship with ICE as well as being told that I should “embrace AI or get out”.
Of course, there is Codeberg and if you just want to move away from Github, this is probably the best way to go. It is free, backed by a german non-profit and is fully open-source. This is basically a no-brainer for every github user out there. As far as I know it is also is sustainable so it will not go away anytime soon.
The things that make me favour SourceHut instead of Codeberg is that SourceHut is very reliable, meaning that it has a really good uptime, the awesome CI service as well as the unix philosophy behind the project. Codeberg will be a great fit for many developers out there, however if you need something that you can rely upon, SourceHut will be my choice. Nevertheless, I have a huge respect for the developers of Codeberg and I’m really glad for their work.
One last note; If you decide to use Codeberg, please consider donating them some money. This helps the open-source project and supports their work greatly!