goodbye github, hello tangled (pt 1)
open-source, github, tangled, microslop
for a very long time now, i’ve been contemplating switching away from GitHub and finding a better alternative. i have felt this for various reasons, which i feel i shouldn’t need to explain, but here’s a little summary of issues that i’ve seen from my own experiences and a couple of my friends:
- ui has been getting very buggy and slow over the years. i’ve noticed significant slowdowns especially when browsing GitHub on my phone, which i do often
- occasional service reliability issues, atleast in my area. there’s been cases recently where i haven’t been able to download releases for some reason or even visit the site
- their intrusive push for AI, including Copilot, and losing focus on what really matters - the developer experience (see Leah’s take on this, I share a lot of the same sentiment)
- owned by Microsoft, and haven’t introduced any innovative features since the acquisition (2018!)
- many, many, many other complaints
anyways. the only realistic options i’ve had other than GitHub for a while were either using GitLab, Codeberg or self-hosting my own Git forge. and here’s a few reasons why i haven’t switched to any of those.
i heavily dislike GitLab. it has so many performance issues and such a steep learning curve with it’s very complex, cluttered and unintuitive UI. i just really never enjoyed using it, and that could also deter contributors.
Codeberg is not bad by any means, and i love what they do and stand for! however, nearly every time i’ve tried to switch to it i’ve had issues with it taking forever to load or not loading at all. maybe i’m just very unlucky, idk. this seemed to have been a reoccurring issue for me and if i’m using a software forge i need it to be reliable.
and lastly, self-hosting a Git forge, from my perspective, can be a pain to deal with and is just not worth it for me. because most of the time, from my knowledge, you have to run a mail server, set up your own account system, and setup oauth. i find it overkill, and it also deters collaborators as they have to make new accounts specifically to PR to my projects. and yes, while i am technically “self-hosting” Tangled, i’ll get to why that’s different.
..so, what is Tangled? and why?
Tangled is a decentralized Git hosting and collaboration platform, and these are reasons why i’ve been using it:
- using Tangled gives you the best of both worlds: the backend (Git storage and CI) that contains the data you actually care about is decentralized and can be self-hosted, as in you can own all of your data. however, Tangled has a centralized frontend (App View) which acts as a consolidated view into the entire network, including those self-hosted instances. it keeps everything connected, and also simplifies self-hosting.
- for future reference, Tangled calls their Git storage servers “Knots” and their CI servers “Spindles”.
- as an example, if i wanted to access my friend’s repository on Tangled, i just go to
https://tangled.org/friend2.org/coolproject, even if they are hosting the data themselves. i don’t have to fiddle with accounts or anything, i can stay on Tangled. - this means that people self-hosting a Tangled Knot don’t have to go through the complexities of setting up account management, or a mail server, or anything like that. it only took me about 15 minutes to set up my own personal server.
- and of course, if you don’t want to deal with self-hosting, you can just use Tangled’s own storage and CI server aswell, which they provide for free. i just prefer to be able to easily back up and manage all my important data at any time, in case something like the GitLab incident happened again.

- Tangled is built on ATProto, so you can optionally use a Bluesky account for login. many people have Bluesky accounts nowadays, so you can just log in with that and you’re good to go. no need to deal with manage a separate account, which is what tends to turn most people away.
- if you weren’t aware, you can actually self-host your Bluesky account and it’s data (they call it a Personal Data Server). The Personal Data Server contains your user and post data on Bluesky, along with user data for other ATProtocol services like Tangled.
- Bluesky operates their own PDS under
bsky.social, which is the most popular PDS and is what most people use. Tangled also operates a PDS undertangled.sh. and, you can host your own aswell. you can even painlessly migrate all of your data between PDS’s, without losing any followers or data as each person has a unique ID that doesn’t change.- i recommend checking out the @me website if you want a visual representation of how the PDS works. try entering in your Bluesky handle after logging in to Tangled with your Bluesky PDS!
- Tangled’s UI/UX design is amazingly simple, easy to understand, and very lightweight. so much so, that i even spent a day or two redesigning my entire website around this style. that’s how much i enjoy it (okay well my website also just looked like total dogshit before, as i was lazy, but whatever…)
- Tangled’s pull request model is far superior to GitHub’s. it follows a round-based pull request flow, with inter-diffing between rounds. you can just paste a
git diff/git format-patchif you want to make quick changes! of course, you can also just compare a fork as usual. - If you self-host your CI server, you can run workflows on your own infrastructure. and, it natively supports Nix, so you have access to pretty much any package you need. seriously, Nixpkgs has everything.
there’s a lot to love about Tangled as a code hosting service. they learned from the mistakes of previous software forges and made something very nice to use and polished. however, it is important to keep in mind that Tangled is very new. it’s still in alpha, and is rapidly developing. at this time, it is currently missing a few features you may need which other forges offer:
- private repositories are not a feature yet
- you can’t run workflows on a cron job yet (to my knowledge)
- there is no built-in static site hosting
- however, there are projects such as wisp.place which offer free static site hosting, integrated with ATProtocol. i’m currently using that to host this site right now, and you can find my automatic deploy workflow on my devins.page/devins.page repository on Tangled.
- still a somewhat small userbase at the moment. it may be cumbersome to explain what Tangled is, which is exactly why i wrote this!
as much as i would like to, i won’t be fully switching away from GitHub. i’ll still be using GitHub for my organization, along with my most popular projects such as devins-badges. i also still need to use it to contribute to most projects. however, i will be migrating my personal projects over. maybe once Tangled is more mature i’ll consider moving the other stuff.
but overall i’ve been very happy with the service these past couple days and i’m extremely ecstatic for what’s to come. at some point i intend on making a “part 2” to this article explaining my experience migrating to Tangled, and possibly making a little guide to hosting your own Knot/Spindle (however I only really have ever done it on NixOS so it might just be better for you to follow the official documentation).
please keep in mind: i am very new to this as i have only looked into ATProtocol and discovered Tangled pretty recently, so i could be wrong about some of the things i said regarding AT/Tangled in this article. let me know if i should maybe edit anything. this is also one of my first proper articles i’ve ever written. i’ll be writing more.
comments
wanna comment? reply on bluesky