Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
3 files changed, 248 insertions, 0 deletions
-rw-r--r--src/blog.du7
-rw-r--r--src/blog/gitlab-killed-itself/index.du234
-rw-r--r--src/blog/index.du7
diff --git a/src/blog.du b/src/blog.du
index d282d38..70ae473 100644
--- a/src/blog.du
+++ b/src/blog.du
@@ -7,6 +7,13 @@ Articles detailing personal experiences or exploration of certain topics.
\n
+#### {i 2026}
+
+:defs
+; {gb} 15 Nov   {url GitLab killed itself;/blog/gitlab-killed-itself}
+: {` Medium dive} | {` Opinion} | {` git} {` GitLab} {` GitHub} {` SourceHut} {` Codeberg}
+
+
#### {i 2024}
:defs
diff --git a/src/blog/gitlab-killed-itself/index.du b/src/blog/gitlab-killed-itself/index.du
new file mode 100644
index 0000000..ed23782
--- /dev/null
+++ b/src/blog/gitlab-killed-itself/index.du
@@ -0,0 +1,234 @@
+'def title GitLab killed itself
+'def desc Why I switched away from GitLab and the current state of forges
+
+# {title}
+
+{pagenav 9 min;14 Nov 2026;15 Nov 2026}
+
+:contents
+:numbered
+1. {uhref Why I switched to GitLab in the first place}
+2. {uhref Moving to...}
+.numbered
+1. {uhref GitHub}
+2. {uhref Self-hosting and cgit}
+3. {uhref SourceHut}
+4. {uhref Codeberg}
+
+3. {uhref All in all}
+
+
+
+On September 17, GitLab announced that {url they're changing gitlab.com's rate limits;https://about.gitlab.com/blog/rate-limit-change-2026}.
+This wouldn't have been a big deal, save for one change:
+
+> A request that arrives with no credentials gets 60 requests per hour per IP address.
+
+{i Are you kidding me?!}
+
+To make it clear, we're {b not} talking about 60 {i pages}, these are {b requests}!
+Since everything is loaded dynamically, a single page makes {i multiple} requests to load, which obviously scales with the complexity of a page.
+
+The result?
+This limit can be reached in {b 5 minutes of browsing}...
+Blocking your {b entire IP} address from unauthenticated access.....
+What's even funnier, loading the landing GitLab page {i also counted to that restriction}.......
+
+In all fairness, they did eventually fix the main webpage and you could still log in (if you had saved the link to the page).
+This did not affect git operations, those have a reasonable rate limit.
+
+However, this whole fiasco has left me with a bitter taste in the mouth.
+I have since moved the overwhelming majority of repositories to other platforms.
+
+To think I used to like GitLab...
+
+## Why I switched to GitLab in the first place
+
+{url I made my account on 02 November 2020;https://gitlab.com/Syndamia}, about 1 year and 9 months after {url my GitHub account;https://github.com/Syndamia?tab=overview&from=2019-01-01&to=2019-01-31}.
+The event which moved me to create it has long since been forgotten, because I started using it seriously about a year later.
+
+For reference, I was still in my early developer stages, having written code non-professionally for about 3 years.
+However, it wasn't the growing appreciation for open-source, the availability of GitLab's source code, or the hate towards Microsoft{fn {url Microsoft bought GitLab in 2018;https://news.microsoft.com/source/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/}} of an emerging Linux user which decided the switch (though those did contribute).
+
+It was the interface.
+At the end of the day, the primary difference between different code hosting websites is their UI, features are more or less the same between them and push/pull operations are all the same.
+
+I'm a desktop computer user, small screens are way too uncomfortable to use for anything serious.
+Given that virtually all modern computer monitors are 16:9, sidebars present a much more optimal and convenient way to navigate.
+That and the warmer gruvbox-style colors of GitLab at the time swayed me to move the few repositories I had on GitHub.
+
+The years since have shown me some other cool features, like the ability to turn off a vast majority of features in the sidebar, reducing its size, and project-level snippets.
+In 2022/2023 I also dabbled in CI/CD and found GitLab's YML-based system to be simpler and more convenient than GitHub's.
+
+Up until now everything was great, with exception to the {url 2022 redesign;https://gitlab.com/gitlab-org/gitlab/-/commit/a4ec234db9eb72466dba55caaac79fbca1763163}, which made the colors all cold{fn As a matter of fact, I disliked this so much, I published a {url rough userscript to bring them back;https://greasyfork.org/en/scripts/455131-gitlab-old-dark-colors}. Recent-ish updates broke it, but for a while it worked well.}.
+This even prompted me to consider self-hosting an instance, though {url the 8 CPU and 8 GB RAM requirements dissuaded me;https://docs.gitlab.com/install/requirements/}{fn They were probably lower at the time, but not by much (I'm too lazy to look it up)}.
+
+This request limit makes it impractical to share code anymore.
+Do remember, for many projects the repository is the primary website and sometimes just cloning the repository is not good enough.
+Even excluding issues, project-specific snippets or releases, the web interface also shows a rendered README, which is supposed to be the entrypoint for a project.
+
+Looking back now, it seems that GitLab never left GitHub's shadow, and given the way things are going, it never will.
+The rate limit change is so fundamental to the entire user experience, I've lost all hope for the future of the platform.
+
+It is time to move.
+
+## Moving to...
+
+After a bit of work I narrowed down my search to a few websites and technologies.
+This is by no means an extensive list, these are just the options I settled down on.
+
+### GitHub
+
+Everything written so far shouldn't make you think I've abandoned GitHub.
+It's just that I used it when there was a reason to.
+Many university projects were written there, since that's what lecturers and students used, I didn't want to introduce friction.
+Forks of, and contributions to, other GitHub projects were obviously done in the same place.
+
+Nevertheless, I'm not making it my main software hub.
+As already hinted at, I despise Microsoft and their products.
+I mean, I wrote a {url blogpost about how they could practically erase the idea of opensource;../microsoft-and-foss-extinguish} back in 2024.
+
+Since then it has been brought to my attention{fn {url https://github.com/AndrewRadev/}} that in 2023 it was officially stated how GitHub was {url to become an AI-powered developer platform;https://github.blog/news-insights/product-news/universe-2023-copilot-transforms-github-into-the-ai-powered-developer-platform/}:
+
+> Just as GitHub was founded on Git, today we are re-founded on Copilot.
+
+Furthermore, as it turns out, their AI assistant Copilot {url is trained on GitHub's repositories;https://nogithub.codeberg.page/}:
+
+> GitHub Copilot is trained on billions of lines of public code.
+ The suggestions it makes to you are adapted to your code, but the processing behind it is ultimately informed by code written by others.
+
+On the topic of AI, I'm not about to go on a 7-minute long description on why I do not support it.
+Thankfully, someone else did this for me: {url I Am An AI Hater;https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html}.
+Consider my thoughts to be accurately materialised in their words.
+
+### Self-hosting and cgit
+
+Of course, the possibilities of self-hosting something are endless.
+And that is precisely what put me off of the idea for years.
+
+The server on which this website is hosted is quite underpowered, having only 2 EPYC CPU cores and 2 GB of RAM.
+At the same time, I'll be the only person using it, so in reality, I need push/pull support and a very basic interface to browse files and commits {i (without logging in)}.
+
+This is where I found {url this YouTube video by tsoding;https://www.youtube.com/watch?v=iuIdBfjL62s}.
+In short:
+
+.bulleted
+- git has built-in support for synchronising with a remote via ssh
+- you can directly clone/push/pull/... from/to any {url bare repository;https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server}
+
+Pretty quickly I setup a chroot jail with {url some convenience scripts;https://git.syndamia.com/conf/git.syndamia.com/cli/} and started moving repositories over.
+
+Still, my webui problems weren't fixed until I found {url cgit;https://git.zx2c4.com/cgit/about/}.
+The entire service is written in C, saving me hassle with the wide variety of bloated nodejs alternatives, the implementation is very lightweight and easy to modify.
+As a bonus, it's trusted by some very large projects, like {url The Linux Kernel;https://git.kernel.org/}, {url Qt;https://code.qt.io/cgit/}, {url FreeBSD;https://cgit.freebsd.org/} and {url Gentoo;https://gitweb.gentoo.org/} to name a few.
+
+It has been in use on {url https://git.syndamia.com} since around 15 March 2026 and I started developing {url my own fork;https://git.syndamia.com/fork/cgit/} since 27 September 2026.
+I'm incredibly happy with cgit, nonetheless, it is {b not} the complete solution.
+
+For starters, it only provides the means to browse repositories from the web.
+Issues, pull requests, CI/CD, ... are all obviously not supported.
+
+As it stands, I've delegated {url https://git.syndamia.com} to personal projects, which shouldn't see any outside collaboration or require deployments.
+For the few others which do not fall into this criteria, something else must be used.
+
+### SourceHut
+
+An interesting choice out of the more niche source {url forges;https://en.wikipedia.org/wiki/Forge_(software)} is {url SourceHut;https://sr.ht}.
+For starters, the URLs themselves are intriguing, the top-level domain is only five characters, "sr.ht".
+Moreover, usernames are prepended with a tilde "~"{fn Probably inspired by Apache's antique {url per-user web directories;https://httpd.apache.org/docs/2.4/howto/public_html.html} feature, which as far as I know, once used to be extremely popular, especially in university systems}.
+
+{url sourcehut.org;https://sourcehut.org}, their "marketing website", showcases a fairly impressive set of features, alongside the standard git web interface:
+.bulleted
+- {url Mercurial;https://en.wikipedia.org/wiki/Mercurial} support (an alternative version-control system to git)
+- Built-in mailing list support, allowing web patchset management
+- IRC client and {url bouncer;https://en.wikipedia.org/wiki/IRC_bouncer} with chat log management
+- {url CLI tool;https://sr.ht/~xenrox/hut/} with full feature support like account exports and migrations
+
+Services are plentiful and you can pick & match what you want.
+{url The pricing page;https://sourcehut.org/pricing/#service-availability} splits the platform into 9 different services.
+Oh, did I not mention, SourceHut is paid for.
+Not for everything, a free account allows you to contribute and browse without hassle.
+And yeah, as a measure against AI crawlers, source code and commits are not publicly available without an account.
+
+These restrictions kind of defeat my use case: browsing without an account is not really possible.
+Pricing is not very high, 4€/month without VAT{fn Because {url VAT is different between union-members;https://europa.eu/youreurope/business/finance-and-tax/vat/vat-rules-rates/index_en.htm#functional-toggle-3}} at their cheapest tier.
+I'm not against paying that, though at the same time I'm already paying for my self-hosted repositories, do I really want to pay more?
+
+Another issue I have is with the UI itself, I find it somewhat clumsy.
+Something about the color scheme makes it hard for my eyes to lock into different layout components{fn Different themes are not available in the platform itself. I'm primarily focused on what the service provides, you could always cobble together a userscript/extension which changes the colors.}.
+Likewise, the way navigation is done feels sluggish.
+
+A project/hub contains source repositories, mailing lists and tickets across all repos.
+Below that you'll find the particular repository's file listing, commit log and refs.
+Beneath both are shown the file(s), log and blame.
+For markdown documents, a fourth level is shown with which to switch between rendered and source view.
+
+This multilayered approach feels to me like I have to navigate an unnecessary amount of menus and sub-menus to see what I want.
+Perhaps I'm just too used to how things are done in other forges.
+One of the primary changes in my cgit fork is about simplifying the repository summary page: adding a file listing and README rendering right below a few commits and refs (highly reminiscent of how GitHub/GitLab does it), instead of only{fn Evidently I'm skipping over some elements\; you get the point.} showing commits and refs.
+
+All of these dullnesses have swayed me away from using the forge or self-hosting it.
+
+It should probably also be addressed who runs the show.
+We already know GitHub is owned by Microsoft.
+GitLab is {url publically-traded;https://finance.yahoo.com/quote/GTLB/} so I would argue it is ran more by the shareholders and tech trends than someone with a particular vision.
+
+SourceHut is founded and maintained by {url Drew DeVault;https://drewdevault.com/}.
+He is a fairly controversial figure, especially for his editorial work on the {url Stallman report;https://stallman-report.org/}.
+At the same time, {url the sway window manager;https://swaywm.org/} and {url wlroots;https://gitlab.freedesktop.org/wlroots/wlroots} (the library behind {url Hyprland;https://hypr.land/}) were originally made by DeVault.
+Likewise, in August {url use of LLMs was entirely prohibited on SourceHut;https://sourcehut.org/blog/2026-08-27-tos-changes-and-llms/#changes}, which is a plus.
+
+Personally, I trust his technical skills and don't really hold any qualms against him; I wouldn't consider myself tapped in enough to judge his character.
+Even so, his involvement might drive others away, I found it relevant to mention.
+
+### Codeberg
+
+Funnily enough, I made a Codeberg account {url on 8 Jun 2022;https://codeberg.org/Syndamia}.
+Obviously the exact reason has faded from my memory, though I'm pretty sure it was because I wanted to add another star to the {url SpywareWatchdog repository;https://codeberg.org/shadow/SpywareWatchdog}, whose badge is prominently featured on the front page of {url this website;/}.
+
+Codeberg is powered by ({url a fork of;https://codeberg.org/Codeberg-Infrastructure/forgejo}) {url Forgejo;https://forgejo.org/}{fn Should be noted that the Forgejo project itself is {url in the custody of the Codeberg non-profit;https://forgejo.org/faq/#who-owns-the-forgejo-domains-and-trademarks}}, itself an open-source fork of the now disgraced {url Gitea;https://forgejo.org/2022-12-15-hello-forgejo/}.
+Per contra to SourceHut, it's UI mimics the older GitHub interface and the free tier is much more permissive.
+Even though their colors are cold and dark too, I find them much more pleasant.
+Evidently, you can self-host it and on a fairly weak machine: 1-2 cores with 1-2 GB RAM (still a tad too much for me, though marginally more enticing).
+
+Moreover, this is the first forge thus far which is operated by a non-profit: {url Codeberg e.V.;https://docs.codeberg.org/getting-started/what-is-codeberg/#what-is-codeberg-e.v.%3F}.
+Their budgeting is {url public;https://codeberg.org/Codeberg-e.V./Documents-Public/src/branch/main/2026/01-01-Financial-Plan-Budgets.pdf} and it's direction is governed by {url the vote of active members;https://codeberg.org/Codeberg-e.V.#repositories} (anyone can {url subscribe for membership;https://join.codeberg.org/?lang=en}).
+
+Oh, and one more thing, SourceHut's ban on LLMs was influenced by the earlier {url Codeberg ban on LLMs;https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html}.
+That doesn't eliminate the ability for there to be problems though.
+
+In {url July 2026, a ToS change was committed, following member vote, to "Disallow cryptocurrency projects";https://codeberg.org/Codeberg/org/pulls/1254}.
+Unfortunately, the way in which this change was implement has been vague.
+
+The "final" verdict as of writing has been that ({url confirmed by a member of the Codeberg presidentium;https://codeberg.org/Codeberg/org/pulls/1254#issuecomment-19924861}):
+
+> If a project does not harm the reputation of Codeberg (e.g. by scamming people or doing other shady stuff) it does not fall under this specific rule.
+ And if it did, it would be a TOS violation even before the change.
+ Cryptocurrency (the scammy kind) was just added as an example here.
+
+At the same time, on the website {url a banner with the following message was introduced;https://codeberg.org/Codeberg-Infrastructure/forgejo/commit/8a75226bbb940a7689a5f07ac4916161bcc14a11}:
+
+> Cryptocurrency projects are no longer allowed
+
+All in all, I would say this ToS change should've been handled better.
+
+Nevertheless, I like the idea of having my code under the control of a non-profit, instead of for-profits which thus far have shown to eventually ruin their entire platform.
+Forgejo doesn't have the few things I really liked about older GitLab, yet it feels the best of all modern FOSS systems.
+
+For those reasons, I've decided to host all larger/collaborative projects to Codeberg for the foreseeable future.
+In reality, none of my work is popular enough for any of this to matter.
+Even so, I hope one day it will gain some traction and maybe even persuade more interest in Codeberg itself.
+
+Only time will tell.
+
+## All in all
+
+{url I Am An AI Hater;https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html}
+
+GitLab's future is bleak, GitHub's bleaker.
+SourceHut is interesting but too obtuse for me.
+
+Codeberg is maintained by a non-profit and its system looks great.
+cgit is fantastic for self-hosted repository navigation and extensibility.
+
+{footnotes}
diff --git a/src/blog/index.du b/src/blog/index.du
index d282d38..70ae473 100644
--- a/src/blog/index.du
+++ b/src/blog/index.du
@@ -7,6 +7,13 @@ Articles detailing personal experiences or exploration of certain topics.
\n
+#### {i 2026}
+
+:defs
+; {gb} 15 Nov   {url GitLab killed itself;/blog/gitlab-killed-itself}
+: {` Medium dive} | {` Opinion} | {` git} {` GitLab} {` GitHub} {` SourceHut} {` Codeberg}
+
+
#### {i 2024}
:defs