|
|
Subscribe / Log in / New account

Meta's Sapling source-code management system

Meta's Sapling source-code management system

Posted Nov 16, 2022 18:20 UTC (Wed) by IanKelling (subscriber, #89418)
Parent article: Meta's Sapling source-code management system

This is a fork of Mercurial, a GPLv2 program that accepts contributions under GPLv2. Yet, facebook is requiring contributions under a CLA which gives them a permissive license on contributions. They accepted a huge body of code without those conditions when they forked.

https://engineering.fb.com/2022/11/15/open-source/sapling...

"I’d also like to thank the Mercurial open source community for all their collaboration and inspiration" but this is also an announcement that their contributions are no longer welcome under GPL as they were before. Unless I'm missing something, that seems like a rather backhanded thank you.


to post comments

Meta's Sapling source-code management system

Posted Nov 17, 2022 10:42 UTC (Thu) by paulj (subscriber, #341) [Link] (6 responses)

I'm not sure this is a fork of the mercurial code-base.

The internal history of this, as I understood it (a couple of years out of date, and not near any team responsible - just as a user), is that FB started with mercurial. They then had to heavily customise hg to make it work at the ever greater scales they had internally with more and more code and developers working on it. Until they had effectively completely rewritten the back-end to use a Facebook specific, distributed object store - that's the "eden" bit in the source code I think (maybe simplified / pared-down for external use, I don't know). The front-end hg tools I think were heavily modified too. Sl however is a from scratch rewrite. I think it started out as a wrapper around the hg tools, but grew into a standalone front-end. There was also an effort to reimplement the back-end in Rust, along with front-end tooling for that - I think that's the "Mononoke" bit in the code, IIRC.

Last I remember, I /think/ the developer workflow still had some odd cases where you needed to use the hg commands, but for nearly all stuff you could use sl for your daily work-flow.

I presume that progressed to the stage where the completely rewritten Facebook^WMeta front-end + backend, sl / mononoke, can do everything itseflf, and is feature complete - and hence this can be released as "sapling" (retro-fitted name).

Meta's Sapling source-code management system

Posted Nov 17, 2022 10:47 UTC (Thu) by paulj (subscriber, #341) [Link] (1 responses)

Oh, and 'sl' was pretty cool and useful. I liked it.

I'd be a bit sceptical of using Facebook stuff outside of FB. There are internal brownie points for releasing stuff as open-source perhaps, but there are few to none for taking the time to maintain open-source stuff. Also, the internal culture is to build everything from a mono-repo, and have no concern for backward compatibilities (other than the non-atomic roll outs of binaries/artifacts from a build from said mono-repo). So I'd hate to depend on FB code outside of FB. In particular, the FB C++ library (folly) maintainers explicitly are hostile to attempts to make life easier for maintaining code out of FBCode that depends on their stuff.

Meta's Sapling source-code management system

Posted Nov 29, 2022 12:25 UTC (Tue) by scientes (guest, #83068) [Link]

> I'd be a bit sceptical of using Facebook stuff outside of FB.

Except ZSTD.

Meta's Sapling source-code management system

Posted Nov 17, 2022 15:28 UTC (Thu) by IanKelling (subscriber, #89418) [Link] (3 responses)

> I'm not sure this is a fork of the mercurial code-base.

I downloaded the repo. It is a copy of the mercurial repo from 2005 onward until it forks.

Meta's Sapling source-code management system

Posted Nov 17, 2022 16:45 UTC (Thu) by paulj (subscriber, #341) [Link] (2 responses)

Which code-base are you looking at?

I'm looking at https://github.com/facebook/sapling and - at a high-level anyway - I don't see anything from mercurial in the head/tip, nor in the history. I know internally that monnooke was a from-scratch rewrite. And the Eden object store and SCM backend isn't from mercurial either.

I could be confused, but can you be more explicit about what part of Sapling started out as mercurial code?

Meta's Sapling source-code management system

Posted Nov 18, 2022 13:52 UTC (Fri) by IanKelling (subscriber, #89418) [Link] (1 responses)

Yes, that repo you link to if you do git log --stat, and go to the end of the output, there are thousands of commits to mercurial starting in 2005. What history are you looking at? It isn't definitive, it will take a detailed analysis, but facebook should be the one clearly explaining whether mercurial copyrights are still a part of this codebase, that is another wrong they have done here. Also, you said "rewritten" as if that makes it no longer a fork but that in no way excludes it from being a fork of the same program https://en.wikipedia.org/wiki/Derivative_work.

Meta's Sapling source-code management system

Posted Nov 18, 2022 14:15 UTC (Fri) by paulj (subscriber, #341) [Link]

Yeah, sorry, you're right. The fb mercurial repo got merged in, to a subdir at some point - in gitk that happens in the middle of the history, and I had looked at top and bottom. :)

The mercurial code is there at: https://github.com/facebook/sapling/tree/main/eden/scm/ed... - maybe in other places.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds