My obligatory 'moving to SourceHut' post

by on 2024-11-29 | License Permalink

I’ve moved all of my software and related projects from my Gitlab.com account to SourceHut, the hacker’s forge.

It seems to be the given thing to announce this move on one’s blog, so here it is. Outside of my day job — which requires that I use whatever software forge a project or client needs us to, usually Github — most of my forge usage is incredibly lightweight and personal with a few notable exceptions.

I mostly use git forges for private repos: my dotfiles, encrypted passwords, personal writing, and my plaintext planner. I do have some public repos which mostly consist of some software that I write for myself and release as Free Software as a matter of principle. I really doubt that anyone has even stumbled across them let alone finds them useful!

As such, moving software forges really isn’t a big deal for me. I’m not dragging a community of contributors with me and I’m not moving anything that people really rely on for personal or professional use.

Despite this, I felt compelled to write this post and reflect on this move as it is the result of a sort of personal internal pressure that’s built over a few years. Moving to SourceHut has brought my daily actions closer in alignment to my values and the way I like to do my computing.

First and foremost, I wish to promote SourceHut to anyone and everyone I meet. As far as I can tell the team behind SourceHut are true keepers of the flame and SourceHut is testament to that. I’ve quietly admired Drew DeVault, arguably the most public face behind SourceHut, for some time as his views on computing and a lot of his values seem to align with mine quite nicely. I know nothing about the rest of the team but the vision and execution of SourceHut does them all proud.

When people gush about SourceHut they usually cite the following things:

This post will be no different. These are exactly the reasons — to varying extents — that I have signed up as a customer of SourceHut.

When Microsoft bought Github in 2018 I moved all of my personal repos to Gitlab.com. It was admittedly a knee-jerk reaction as I came of age with FLOSS and became allergic to Microsoft stuff. In retrospect, I feel that this reaction has been more than justified since the advent of Copilot and the controversies that have followed.

I still maintain my old account on Github as I use it for work at ODSC but I dislike using Github for a number of reasons beyond the standard “it’s operated by Microsoft”. Although to be clear – this is a perfectly valid reason in-and-of-itself to avoid Github.

I’ve also since grown a bit annoyed by Gitlab. I used to be a fan because I believed it was FLOSS and I knew that you could install and run your own instance if needed. In fact the first instance of Gitlab I used was the (now defunct) instance hosted at Open Lab where I did my PhD. Open Lab researchers and staff used it to write and store software developed for research and a few of the LaTeX or Markdown inclined academics used it to do our academic writing as well. I later learned that Gitlab is “open core” and “source available” a model which makes me both roll my eyes and wince a bit inside. Github’s platform is proprietary, although everyone seems to give it a free pass usually with the argument of “well they give you free repo hosting!”.

SourceHut itself is totally FLOSS and available for download and self-hosting:

In addition to licensing both Gitlab and Github’s interfaces have been increasingly bothering me. These are incredibly Javascript-laden and I find them loud and confusing as well as slow. I use a keyboard to navigate the web as much as possible via a Firefox extension which does link highlighting. Activating this on each Gitlab and Github creates a visual minefield of interactions and I’ve never been able to consistently get around without reaching for the mouse — thus breaking my concentration and workflow — after about three minutes.

Gitlab.com is especially grievous. I find it even more confusing to use than Github, not just in terms of the visual minefield of interactions but even where various settings and forms are located at any given time. When I eventually do find what I’m looking for, if I try to use my keyboard to perform an action I make a disproportionate amount of missteps and each one produces weird and confusing behaviour. In addition to this, Cloudfare makes me validate my browser every time I need to sign in or sometimes just to view a repo on the platform. I can’t use my keyboard to pass the Cloudfare check and it breaks me straight out of my concentration.

I ended up moving to the Github CLI to make my Github usage a bit more tolerable at work. I know there’s an equivalent CLI for Gitlab but hopefully I won’t need it now.

By way of contrast, SourceHut’s interface is an absolute delight to use for a number of reasons. In the list above I described it as the “epitome of usability” and I am not understating this. It is, for many reasons, one of the most usable interfaces to some web-based software I have ever used. I don’t usually like to flex the “I have a PhD in HCI and Design” muscle a lot; but trust me when I say that professional and academic analysis would rate SourceHut’s “user experience” very highly indeed.

SourceHut does not clutter its interface at all. Everything is clear and designed to be read. Everything is relevant for a software engineer or related professional interacting with the repository. The layout is good and any signposting to other parts of the repo is clear and concise. Each page loads extremely quickly and lightly and works without Javascript. I haven’t tried yet, but I also reckon I could very comfortably use it via a Terminal browser.

There are no weird gamified or social media features. No stars or badges, thank heavens1. There’s just a focus on the project. Besides repos, other important software forge features are implemented as other modular tools. I don’t use any of these at the moment so I have much less to say about them although I foresee a time when I may find the issue tracking useful.

I’ve also found SourceHut to be blazing fast outside of the web interface. When I migrated my repos, the initial push to SourceHut happened in the blink of an eye. Each subsequent pull and push has been just as quick. I understand that my repos are piddly little things compared to some codebases but I am very impressed and it’s set a new standard for what I expect out of a software forge.

Another major quality of life feature for me has been the way that repos are spun up. All I needed to do was set the remote to a desired repo name and push; SourceHut then created the repo for me and all I needed to do afterwards was decide whether it was a public repo or not. I’ve since learned that Gitlab.com does allow this but it did not let me know it was possible at all. Again, SourceHut told me how to do this front-and-centre.

I’m also looking forward to the email-based patch workflow that SourceHut uses. I’ve not got a particularly strong opinion re Pull Requests because they’re all I’ve ever known. I went to university to study Computer Science in late 2011 and graduated in 2014 before going straight into a doctoral program. I didn’t enter industry until 2018 by which time Github had been established as dominant for a number of years.

I am, however, looking forward to learning about doing email-based patches. I haven’t sat and analysed it thoroughly, but I’m wary of Github simply for being a centralised proprietary service which sits atop Git; a decentralised system. My initial take is that the Pull Request mechanism only cements this position further. In any case, I’m always up for learning how to better use the tools I rely on daily and this seems like a perfect opportunity for that.

I’ve written a lot already and you probably already know whether SourceHut is for you but I really wanted to convey how I experienced joy when signing up for and starting to use SourceHut. This is special to me because I feel at times there is precious little about modern tech to feel joy about. I think that’s enough reason to start using SourceHut if it aligns with you in any way; even disregarding the fact that it’s not infested with AI like other platforms!

I look forward to many years with SourceHut.


  1. I’ve never understood any legitimate need for Github stars. If you need to remember a repository, isn’t that what your browser’s bookmarks are for? And the less said about badges the better… ↩︎