technoduck
Blog | Git | Files | [WIP] |
About | PGP | Mail

Tangled

Personal git forges

In pursuit of federation for git forges, few attempts are being made.

Until recently the main one being Forgejo, with utilization of ActivityPub, the driving force behind Mastodon, Pleroma, and the like, as communication protocol.

how Personal

Forgejo is a community maintained fork of Gitea, and for good reason and with good effect. It allowed them to while maintaining some compatibility, but also go into a radically different direction then Gitea could.

A consequence of being a fork of Gitea is well, at core being a git forge designed for communities and not individuals.

Not in a usage sense, but in operations sense.

say what

Frogejo my beloved, always will be. Its delightful to work with, its easy to host and run, its dead easy to update (don't forget breaking config changes), action runners are easy to setup and use, and the whole thing is easy to manage.

That all however comes at a cost of a whole-ass web-server running all the time, with a postgres db running in the background where your repositories are actually kept.

At scale its well, the best case scenario. But we aren't talking about the best case scenario we are talking about 1 (one) idiot (big one) running it for personal projects.

And that's a lot of overhead for what can be a bare git repo on a server running git-daemon.

Its not useless overhead, but having a whole gig of memory on my poor 2 gig VPS taken up by a git forge I don't use even a 3rd of services of is a bit too much. (also cant federate just yet).

Alternatives?

git-send-mail, the most federalized mode of collaboration in the world, used to work on the Linux kernel, arguably? largest community project right now.

It is flexible, infinitely customizable for both you the user and the recipient, and requires no account other then a single (1) email address I hope everyone has. But like IRC chatrooms, it is realistically used by far not all even amongst developers, and is more or less inaccessible to people new to the whole git thing.

Radicle, fully P2P, custom communication protocol, similar system that all nodes are viewable from the central website, but there is no central authority for what the repo state is, it is local first. Really interesting, written in rust, and will get a good amount of attention from me because well it's pretty cool. To collaborate in the network, like with the Tor network, from which it drew heavy inspiration as I understand (again, really cool), one has to run their own node. Which isn't ideal always for, same issues as before, beginners (although getting to understand such things one could argue is a worthy and formative trial by fire, and should be done).

Tangled The topic of today

Tangled

A very new and currently in development git forge based on the AT Protocol, used by Bluesky.

I will let them make their own case, in a rather short and sweet introduction.

With the long story short being as such.

To collaborate, one requires a Bluesky account. More precisely an account in the AT Protocol network, but I digress. Repositories are hosted on knots, headless servers that behave very much like git-daemons, with repositories being hosted in bare repos.

There is a central knot managed by the tangled team, knot.tangled.sh, on which anyone can make a repo, or if you are authorized with other knots, hosted by anyone, you can author repos there.

All of that, can be viewed on centrally in the appview hosted by tangled.sh team at, you guessed it, tangled.sh. (in theory there can be other appview, the same way as there are alternative clients for bsky.app, there could be alternative appviews for tangled, with the same underlying content).

So, account creation is not complex, hosting your own nodes is not a requirement, it is linked to a social network, which could be argued to be excessive, but you can create alternative accounts if you don't want your code to be associated with your public activity (or the other way around).

And, while Forgejo is indeed lightweight and performant, very few things can compete with

* knotserver.service - tangled knot server
     Loaded: loaded (/etc/systemd/system/knotserver.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-03-14 02:44:33 UTC; 3 days ago
   Main PID: [you thought] (knotserver)
      Tasks: 7 (limit: 2424)
     Memory: 50.9M
        CPU: 32.406s
     CGroup: /system.slice/knotserver.service
             - [nuh-uh] /usr/local/bin/knotserver

Ah yes, 50.9M of memory used. Much better.

Anyway gotta get now git.technoduck.me to redirect to my git profile on tangled, which should be https://tangled.sh/@technoduck.me.

Or fully remove, I have not decided yet.

Anyway, that's it.

Go on collaborooting or something.