This is still just a draft, and therefore it doesn't reflect an official position. But I'm looking for some early feedback.

The draft is attached as PDF, but here's a snippet from the introduction, which describes the paper:


Bloomberg has a code base with tens of thousands of independent C++ projects, which are integrated together with a package-manager approach with aggressive dependency rebuilds to ensure coherency of all those projects into what we call a “distribution snapshot”.

That distribution snapshot contains prebuilt artifacts. Most developers will create a build context that contains only the source code they’re expecting to change, and build against an installed location where artifacts (headers, archives, pkg-config files) are deployed.

This stands in contrast with the practice of a “monorepo”. At Bloomberg we explain that distinction by the categories “Source-to-Source Builds” versus “Source-to-Binary Builds”. We will start by exploring those concepts, and how they reflect real-world practice.

It is our understanding that Bloomberg’s experience is not dissimilar to most Free/Libre Open Source Software communities, so while this document is heavily influenced by our particular experience, this document tries to frame it in a way that is not Bloomberg-specific.

After we describe the state of the world before the adoption of modules, we will break down different requirements for the successful adoption of modules for organizations that follow similar patterns.


Let me know what you folks think,