Lars Wirzenius Consulting Ltd has created a Git repository with the source code of Debian 12 (bookworm), the main component. It's one repository for all the source code, as one commit. It's a monorepo.

To clone the repository (but read below before you run this):

git clone https://monorepo.liw.fi/git/debian

Please be kind to the proof-of-concept Git server and avoid cloning if 42 or more people are already cloning. The checkout will take a few hours and use about 500 GiB disk space, and have about 15 million files outside .git.

This is a read-only repository that will need to be moved onto Debian infrastructure before it's actually usable for collaboration.

Motivation

The monorepo will greatly simplify and improve the development process of Debian:

  • Simpler collaboration: every package uses the same process, and the same tools, and it'll be easier than ever to help with other people's packages.

  • Transitions are easier: all changes will be prepared in one branch and merged atomically, rather than uploading each source package separately.

  • Enables distribution-wide changes in general: With all the source code for everything in one tree, in on repository, it's feasible to make changes to Debian that affect many packages. For example, back in the day Debian took seven years to migrate /usr/doc to /usr/share/doc, and that can now be done in one commit.

  • Easier to see what has changed: the release notes maintainers will especially appreciate this. In the future, Debian release notes will be excruciatingly detailed. They will no longer merely say "bug fixes and improvements".

  • Better non-free management: if a package in main is ever found to contain non-free code, it can be removed using git filter-branch.

  • Better quality control: merges will only be happen after CI tests pass, using the bors tool from the developers of the Rust language. Currently packages are tested only after they've already been uploaded to the Debian archive. The change will reduce problems for people running the unstable branch of Debian in production. Soon there will be no bugs in unstable.

  • More development speed: because Debian developers will no longer need to spend time fixing bugs in unstable, and maintaining the Debian bug tracker, they will have more time and energy to update packages to newer versions. This, in turn, will motivate large enterprise users of Debian to fund Debian development more, as their primary complaint of the slow pace of change will finally be solved.

Future of ".dsc"

There will be no further need for the legacy .dsc source package format. Instead, a copy of the monorepo can be shipped.

Resource use

The monorepo is not small. However, given how important Debian is to their business, companies like Apple, Microsoft, Amazon, and Google, are already chomping at the bit to donate hardware and cloud resources to enable use of the monorepo. Expect an announcement on debian-devel-announce as soon as details have been worked out.

Implementation

The program unpack-debian-sources is available on the Radicle network as repository ID rad:zgYpM7b29D6wTMjEUxxzBjcF9EvK. Running it took about seven hours on my home computer. After that finished, I created the repository with the following commands:

git init .
git add -v .
git commit -m "Debian 12 (bookworm), main"

The git add took about 3.5 hours and git commit took another 2.5 hours. This required 16 GiB RAM to work. Since I've already done this, nobody else needs to. Everyone else can just clone, from my server or each other. The commit is:

commit 8ae3129b9f222534d6ed20dd0489fb8f2f1d1a97 (HEAD -> main, origin/main, origin/HEAD)
Author: Lars Wirzenius <liw@liw.fi>
Date:   Tue Mar 19 11:05:57 2024 +0000

    Debian 12 main

Have fun!

Disclaimer

This blog post is an April Fool's joke. Debian is not moving to a monorepo. I have not been a member of Debian since 2018. I don't speak for Debian. I would be very surprised if Debian would abandon its current development model of being developer and package centric. I don't even think it'd be sensible for Debian to have a monorepo. The monorepo is real, though it will be deleted by the end of April.

The real motivation for all this is that I sometimes like to be cruel to my tools. This time, I'm cruel to Git: can it handle a repository of this size? In 2009 it could not. In 2024 it can.