SYSTEM Cited by 1 source
Sapling-compatible Server¶
The Sapling-compatible server is the server-side counterpart of the Sapling client — a "scalable, distributed source control Rust service we use at Meta to serve Sapling and (soon) Git repositories." As of the 2022-11-15 announcement, it is not yet open-sourced. Post-quote: "we hope to open-source the Sapling-compatible server".
Role¶
Most of Sapling's scale features require the Sapling server to be fully effective. The announcement post enumerates:
- Full lazy history download — the client fetches commits/trees/files on demand from a Sapling-aware server.
- Segmented Changelog — specifically, the server side that builds and serves segment graphs.
- Per-file history graphs — "maintaining per-file history graphs
that allow answering
sl log FILEin less than a second, regardless of how old the file is." Server-side structure; does not exist on Git-backed repos. - Virtual file system — the VFS needs a server to fetch file contents on first access.
- Commit Cloud — all commits auto-uploaded; sharing via commit hash.
- Incremental monorepo migration — "you can incrementally migrate repositories into (or out of) the monorepo, allowing you to experiment with monorepos before committing to them."
- Future Git-serving — "serve Sapling and (soon) Git repositories" — i.e. the Sapling server may evolve into a managed Git host on top of Meta's storage substrate.
Architecture (as disclosed)¶
- Language: Rust.
- Design: "scalable, distributed" (unspecified further).
The post does not disclose any of the following: deployment model (per-repo shards? multi-tenant?), storage backend, replication strategy, the wire protocol that talks to the Sapling client, or any operational telemetry at Meta scale.
Seen in¶
- sources/2024-09-10-meta-sapling-source-control-thats-user-friendly-and-scalable — canonical-first wiki introduction. Flagged as the substrate for most Sapling scale features; flagged as not-yet-open-source.
Related¶
- systems/sapling-scm — the client.
- systems/meta-segmented-changelog — one of the scale primitives the server enables.
- systems/sapling-virtual-fs — another server-dependent primitive.
- systems/commit-cloud-meta — another server-dependent primitive.
- concepts/lazy-history-download — the design stance the server materializes fully.
- concepts/monorepo — the scale regime the server is built for.