4 ms·
https://tangled.sh https://tangled.sh is an atproto (same tech as Bluesky) git collaboration platform. https://blog.tangled.sh/intro https://blog.tangled.sh/int
by icy 1y ago
https://tangled.sh https://tangled.sh is an atproto (same tech as Bluesky) git collaboration platform. https://blog.tangled.sh/intro 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 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 https://tangled.sh/@tangled.sh/core) and we have a neat little community built around it on our Discord https://chat.tangled.sh https://chat.tangled.sh.
Last night was a ton of fun with the sudden influx of users thanks to the GitHub news. :)
- mozzius 1y agothis is the only one really gunning for the “hub” part of github, very exciting stuff
- icapybara 1y agoI like the design of your site. Loads very fast, looks clean.
- aranw 1y agoI'm really liking tangled.sh but I don't think it supports private repos seen as it's built on top of atproto
- yjftsjthsd-h 1y ago> jujutsu support What does that mean? Doesn't jj just use git as its backend?
- icy 1y agoWe support stacked pull requests tracked using jj's change-ids: https://blog.tangled.sh/stacking https://blog.tangled.sh/stacking
- abound 1y agoYou 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 https://blog.tangled.sh/stacking
- icy 1y agoGlad 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>
- microflash 1y agoLooks 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?
- icy 1y agoYeah, 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!).
- danielspace23 1y agoJust 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.
- yjftsjthsd-h 1y ago> 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?