← Back to context

Comment by icy

3 days ago

https://tangled.sh is an atproto (same tech as Bluesky) git collaboration platform. https://blog.tangled.sh/intro

We have a more advanced PR flow (stacking, round-based reviews), jujutsu support and we just launched our new CI system. Come join! https://tangled.sh/signup. The goal is to be the new town square for collaborating with friends and open source communities.

It's built fully in the open (https://tangled.sh/@tangled.sh/core) and we have a neat little community built around it on our Discord https://chat.tangled.sh.

Last night was a ton of fun with the sudden influx of users thanks to the GitHub news. :)

Just an fyi for everyone: while Tangled is built partly on top of ATProto, it differs from its component architecture widely, as the tasks that should be done by the AppView are offloaded to "knots", self-hostable servers specific to Tangled that do most of the Git heavy lifting. It violates the "user data stays on the PDS" principle, as repo data stay on knots, not in PDSes. As far as I know, no other ATProto application has a similiar architecture.

  • > It violates the "user data stays on the PDS" principle, as repo data stay on knots, not in PDSes.

    I'm not familiar with ATProto; what does this mean in practice? Does it just change the failure modes if something breaks?

You piqued my interest with the mention of jujutsu support. I just read the post on using it for code review [1] for stacked PRs and was really impressed, awesome work!

I've never used Gerrit directly, but I'm guessing that Jujutsu's change IDs are like a native version of what Gerrit does there.

I regularly (attempt to) do stacked diffs on GitHub with jj, and even with a bunch of automations it's still a clunky, awkward experience.

[1] https://blog.tangled.sh/stacking

  • Glad you liked it! Yes, jj's change IDs are very similar to Gerrit's, but instead of a commit trailer it's now a header in the commit object itself. For example:

        $ git cat-file commit caa00e20
    
    
        tree e8418bf7e7c626fdf5b1570e6efcddf1e1b0c923
        parent 1e3a841997f81c9b0ed21dc5a91e783fcf2f4ec7
        author Anirudh Oppiliappan <anirudh@tangled.sh> 1754996643 +0300
        committer Anirudh Oppiliappan <anirudh@tangled.sh> 1754996799 +0300
        change-id skwlyzyomnwqntksmoqkrllqlpsskztt
    
        xrpc/{errors,serviceauth}: split shared xrpc code to top-level package
    
        Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.sh>

Looks very interesting. Just signed up.

A few things that would make me actually use it: - namespaces (aka, organizations in GitHub terminology) - private repos (I usually start with private repos and then make them public)

The interface is really friendly and I like how approachable it is. You should make dedicated docs site instead of throwing folks at a bunch of markdowns. Maybe create a “Pages” equivalent and demo it by building a docs site?

  • Yeah, for now orgs/namespaces are their own accounts (even better if you have a dedicated domain for your org). Private repos aren't a thing just yet since we use AT Protocol, and all data on protocol is public -- for now. This will change soon.

    Appreciate the feedback! A dedicated docs site is in the works (along side a pages offering!).

I'm really liking tangled.sh but I don't think it supports private repos seen as it's built on top of atproto

this is the only one really gunning for the “hub” part of github, very exciting stuff