nickg-anthropic

Joined 23 days ago

Karma
152
Submissions
29
Member since
Oct 8
View on Hacker News

Recent submissions

Comment · 15 days ago
Just because you might find this interesting: Scion deviates significantly in this regard in order to deal with merges; coming from git, we land code to our main branch via merge so it's a common occurrence.

We do discourage (but not block) some trickier DAG things you could have done in git and are probably moving towards squashing and rebasing for landing since many things become simpler without merges, but we simply had to deal with merges (and handle git compatibility while migrating) to pull this off. Particularly, full DAG merge bases add a lot of complexity and it gave us some concrete ideas on how to improve git's commit graph data structures by an order of magnitude or more.

Comment · 16 days ago
Very little, overall.

This system was actually built incrementally over several months and did not start out as a full VCS -- it started as a read-only service that ingested data from our Git repo to take pressure off of CI and other tools needing to materialize checkouts for certain types of repo/graph questions. Even when we did decide to go all the way, we were operating in a hybrid Git/Scion world for months during the migration and the path to get there made the system and code very unique to our infrastructure.

Comment · 16 days ago
I don't use HN often, so I made an account for this purpose that would make it clear who I was in relation to the article.
Comment · 16 days ago
Hi! I am the original author of the blog post and wanted to clear the air a bit here.

We credited Sapling because that's how Meta itself externally refers to the entire system, including the Mononoke server, and we wanted to follow that convention. We will add an additional footnote to clarify this. [edit: this is done]

We were inspired by many things while building Scion, such as the great ideas in Mononoke's Bonsai data model, and didn't intend to obfuscate that in any way. We were also inspired heavily by https://martin.kleppmann.com/2015/03/04/turning-the-database..., for example, which also describes the "derived data" concept using the same words.

We also did not just tell Claude to build us a version control system; we did a lot of research on what would work and not work for our use case and coming from an existing large Git repo (rather than Mercurial, as Mononoke did) required many novelties beyond some of these data structures.

The intent was to give credit to Mononoke without getting too deep in the weeds of comparing and contrasting each point of the data model where we diverged. There are many ex-Meta employees at Anthropic who were inspired by how joyful using source control was because of Mononoke, which deserves a lot of credit to you and the source control team there. We had that experience as a north star from the beginning while making decisions that map to our (different) needs.

Comment · 17 days ago
The point explicitly isn't that you should vibe-code your own VCS. There are a lot of ideas here that would be directly applicable to git, for example, and we are working to share the learnings with the right companies and maintainers.
Comment · 18 days ago
If you're referring to this part: > This does mean that concurrent changes can conflict, but Claude can typically fix these conflicts faster than humans can even identify them.

We never allow textual conflicts, but semantic conflicts (for example, if someone adds changes the logic of a function and cleans up all affected callsites concurrently with a new call being added) are an unavoidable fact of very large repos unless you completely serialize merging with running extensive validation at the proposed batch tip, which isn't practical at a certain commit rate.

As for cross-repo changes, not exactly, but there are ways we could allow such a thing if we wanted. We're thinking about it.

Comment · 18 days ago
Of course! The point is that it is a non-starter to operate this way but git doesn't hold your hand to do the right thing here. Everyone probably lands on approximately similar solutions with varying degrees of sophistication (which is something that could probably be improved in the ecosystem!) and even those common patterns stopped working for us as the repo continued to grow.
Comment · 18 days ago
That's true, but logistically speaking the way that git wants data to exist on disk makes it very, very hard to do the kinds of things we needed to do given how many nodes we have that need source code and how quickly the repo is growing. We do have some ideas on how this can be improved upstream!
Comment · 18 days ago
Building all of the systems to train and serve our models, internal tools and infrastructure, (lots and lots of) research, our product and API surfaces, and more. We have a lot of problems that we can solve with code and there are all sorts of new projects spinning up every week.
Comment · 18 days ago
It sounds like it would be simple, but there are a lot of logistical issues with making git happy with this in practice. Repacking things for repo maintenance, for example, but there are many other problems.
Comment · 18 days ago
The changeset and tree manifests are still a Merkle tree in the ways that matter (i.e., it's all immutable, content-addressed, verifiable if you were so inclined), the client just doesn't need the entire thing locally.
Comment · 18 days ago
There actually was lot more hand-writing of the code back then! Or, at least, only moderately assisted by Claude with a lot of human-still-typing-things-in-an-editor. The ability to delegate larger chunks of code to Claude had a noticeable, step function increase with Mythos Preview.
Comment · 18 days ago
A monorepo gives us a really consistent tooling floor where everything more or less works in a uniform way. We've had a lot of success with it, in general, and it gives us a lot of leverage in the sense that we can make a sweeping change in one atomic commit rather than have to run a campaign across hundreds or thousands of repos, all with their own norms and tools.
Comment · 18 days ago
https://cloud.google.com/spanner, though technically any database would work if you know how to scale them. Spanner just has a few nice properties for our scale.

Good call about us not defining it, I can fix that! And this blog post was 100% human-written.

Comment · 18 days ago
It actually scales by "going wider" and being able to do more things rather than iterating on the same code over and over again. If you can only write X amount of code per day because of some limitation (human attention, source control, CI, whatever it is), you would of course use that energy on the highest priority and highest value work. As we remove scaling issues in source control, for example, we can just "do more things" without worrying about bringing down infrastructure.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton