Hacker Newsnew | past | comments | ask | show | jobs | submit | icy's commentslogin

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

> jujutsu support

What does that mean? Doesn't jj just use git as its backend?


We support stacked pull requests tracked using jj's change-ids: https://blog.tangled.sh/stacking

I like the design of your site. Loads very fast, looks clean.

Thanks! Excellent site-wide performance is something we aim for -- hence our stack of Go + htmx!

Do I miss something? The site only shows a stream but nothing to describe or show the project.

That's the global timeline. If you'd like to look at a demo repositoy https://tangled.sh/@tangled.sh/core is a good one (monorepo for Tangled).

Ah I see, thanks. I only clicked on the first link assuming this was the project page.

Yeah, GitHub is cooked. Now's a good time to consider migrating to alternative forges like Tangled (https://tangled.sh; bit of a shameless plug, I'll admit. I'm the co-founder). We've got a more advanced PR flow, jujutsu change-id support and we just launched our in-house CI! https://blog.tangled.sh/ci

Long-term, we aim to be the new social coding platform, collectively built in the open.


Tangled is a pretty cool idea, but I'm sorry to say that I'm hoping Gerrit gets a resurgence.

It fits my "do one thing, do it well" philosophy as it doesn't have opinions about CI, Issue trackers or even how you view the code online.

I'll admit that it's a nasty bastard to set up properly though, and the options for viewing repositories are universally terrible when not bundled with a code-review system (like Gitea, Github and Gitlab). Alas.


There are .rpm/.deb packages for Gerrit that make installation/upgrades pretty simple.

The fact that it stores everything in files on disk (no databases except for caches that can be regenerated) makes backup/restore and replication a breeze compared to many other more complicated systems.


Yeah, fair enough. Gerrit is solid software but it’s really just a review tool: not an alternative code forge — which we’re aiming to be.

You say "forge" and stuff like "collectively built in the open"? Do you consider the repos "public", "private" or what?

You have a very short privacy policy [https://tangled.sh/privacy], but no guarantees of AI-bot-scraping protection. What if anything is your users' expectation of privacy of their repos against third parties, including malicious ones? Really you need to set that out clearly in your privacy policy.


Not sure I understand your first comment. Repositories are currently public only since we’re built on the AT Protocol, which doesn’t yet have private data (in the works!).

Thanks for the feedback re: the privacy policy. It’s still actively being improved and we take a lot of effort to protect against AI scrapers. I’ll update the policy verbiage to include that.


You were suggesting GitHub users migrate to your forge, and historically, one of GitHub's big features was private repos. And at least historically, Github private repos claimed to provide protections against unauthorized access/scrapers.

But AT Protocol can't.

So currently, you're only suitable for non-commercial users. (Can you name any commercial org using Tangled.sh on source code?)

Does AT Protocol have any rough milestone (date?) for private data?

> we take a lot of effort to protect against AI scrapers.

Sorry that's not stating a guarantee of anything, it's an unquantifiable aspiration. I asked what you guarantee your users. IP access logs? Alerts? Response times? Blocks? IP whitelisting?


Plug or not, this is relevant and on-topic. +1 to offset this unnecessary voting behavior.

Github Pages is a must too.

We’re working on it!

Damn, why all the downvotes?

Probably "bit of a shameless plug, I'll admit. I'm the co-founder". Lots of HN users don't like feeling advertised to.

Figured it would be better to be up front about it -- and people know they can ask questions.

(I didn't downvote you.) I think being upfront about it is always good. What is even better is stating it in the first sentence and making sure your whole comment is not an ad, except for maybe the "what are you working on" type of threads. This is just my opinion and not something codified in the guidelines, etc.

Besides the plug, calling a company with $2B+ revenue "cooked" is annoying.

That would be Grande LLM and Tall LLM.


Really wish they’d make a 5,5” version of this. Desperately holding on to my 13 mini.


thanks for the mention! I was just composing a reply haha.


We’re building a new social-enabled git collaboration platform on top of Bluesky’s AT Protocol: https://tangled.sh

You can read an intro here: https://blog.tangled.sh/intro (it’s publicly available now, not invite-only).

In short, at the core of Tangled is what we call “knots”; they’re lightweight, headless servers that serve up your git repository, and the contents viewed and collaborated upon via the “app view” at tangled.sh. All social data (issues, comments, PRs, other repo metadata) is stored “on-proto”—in your AT Protocol PDS.

We just shipped our pull requests feature (read more here: https://blog.tangled.sh/pulls) along with interdiffs and format-patch support! https://bsky.app/profile/tangled.sh/post/3lne7a4eb522g

We’ve also got a Discord now: https://chat.tangled.sh — come hang!


We’ve been building a new social-enabled git collaboration platform on top of Bluesky’s AT Protocol: https://tangled.sh

You can read an intro here: https://blog.tangled.sh/intro (it’s publicly available now, not invite-only).

In short, at the core of Tangled is what we call “knots”; they’re lightweight, headless servers that serve up your git repository, and the contents viewed and collaborated upon via the “app view” at tangled.sh. All social data (issues, comments, PRs, other repo metadata) is stored “on-proto”—in your AT Protocol PDS.

We don’t just plan to reimplement GitHub, but rethink and improve on the status quo. For instance, we plan to make stacked PRs and stacked diff-based reviews first-class citizens of the platform.

Right now, our pull request feature is rather simplistic but very useful still: you paste your git diff output, and “resubmit” for a new round of review (if necessary). You can see an example here: https://tangled.sh/@tangled.sh/core/pulls/14

We’re fully open source: https://tangled.sh/@tangled.sh/core and are actively building. Come check it out!


How is the support for LFS? Also, what backend language? I have some Go code for implementing an LFS server and auth but did not want to build a full code forge. All of the major Git hosts have woefully bad LFS management (e.g. if you want to purge a file from history have to delete the whole repository).


We don't support LFS at the moment. Everything is in Go.


It does indeed! One of my favourite iOS keyboard features.


Noted!


Hey, you can indeed push to someone’s knot if they’ve invited you on it. The knot server will automatically populate your ssh pubkeys (if you’ve added them) allowing you to push. :)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: