]> git.donarmstrong.com Git - debian-ctte.git/blobdiff - 914897_merged_usr/ballot.md
914897: Add a rebuttal point
[debian-ctte.git] / 914897_merged_usr / ballot.md
index 89888877cdd42e3685701bec5bdff34bb00060e2..4262f502a806ae92ec2a2e6c7e8b55dfd8beb082 100644 (file)
@@ -2,12 +2,11 @@
 
 ## What is "merged `/usr`"
 
-"Merged `/usr`" describes a possible future standard directories scheme in which the `/{bin,sbin,lib*}/` directories have been made superfluous through replacing them by symlinks to their `/usr` equivalents (/usr/{bin,sbin,lib*}).
+"Merged `/usr`" describes a possible future standard directories scheme in which the `/{bin,sbin,lib*}/` directories have been made superfluous through replacing them by symlinks to their `/usr` equivalents (`/usr/{bin,sbin,lib*}`).
 The motivation to get Debian systems to converge towards such a scheme is vastly documented elsewhere ([FDO's TheCaseForTheUsrMerge][0], [wiki.d.o UsrMerge][1]) but can be summarized as the following points:
 
-* having separate `/` and `/usr` filesystems has been useful in the past for booting without initramfs onto a minimal root filesystem that carried just enough to mount the `/usr` filesystem later in the boot process. Given the evolution of physical hosts' capabilities, initramfs'es have been default in Debian (and elsewhere) for a long time, and most systems no longer have an intermediate state during boot in which they have only `/`, but not `/usr`, mounted.
+* having separate `/` and `/usr` filesystems has been useful in the past for booting without initramfs onto a minimal root filesystem that carried just enough to mount the `/usr` filesystem later in the boot process. Given the evolution of physical hosts' capabilities, initramfs'es have been default in Debian (and elsewhere) for a long time, and most systems no longer have an intermediate state during boot in which they have only `/`, but not `/usr`, mounted. Booting hosts through that intermediate state is not systematically tested in Debian anymore.
 * another use-case is to be able to share an identical `/usr` over a network link; hence booting an initramfs, mounting a local `/`, then mounting `/usr` over the network. It seems that an initramfs with everything needed to mount a filesystem over a network link directly actually has a smaller footprint.
-* booting with `/` only is not systematically tested in Debian anymore;
 * the packaging infrastructure to install files outside of `/usr` is not standard and represents technical debt:
 * given its status as remnant "folklore", the distinction between what _needs_ to be shipped in `/` and what can stay in `/usr` is often interpreted arbitrarily;
 * allowing shipment of identically-named libraries or binaries in different paths can confuse common understanding of paths precedence.
@@ -15,7 +14,8 @@ The motivation to get Debian systems to converge towards such a scheme is vastly
 The arguments against moving the base directories' scheme towards "merged `/usr`" are as follows:
 
 * there's no gain in disrupting something that is not inherently broken;
-* `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks create confusing views of the system (`/bin/cat` and `/usr/bin/cat` are the same file), and dpkg doesn't support this situation cleanly [#134758](https://bugs.debian.org/134758).
+* `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks create confusing views of the system (`/bin/cat` and `/usr/bin/cat` are the same file), and dpkg doesn't support this situation cleanly: [#134758](https://bugs.debian.org/134758).
+* it is possible for distributions to converge towards having all system files in `/usr` in finite time instead of shortcutting this migration with `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks.
 
 [0]: https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
 [1]: https://wiki.debian.org/UsrMerge
@@ -65,14 +65,14 @@ These are the five possible situations at the time of bullseye (buster + 1):
 It can be summarized by the following table:
 
 ```
-|          |     Host types that are allowed     | Are merged-/usr  |    Official packages are built on   | Packages built on … can break on the other |
-| Codename | classical hosts | merged-/usr hosts | symlinks allowed | classical hosts | merged-/usr hosts |   classical hosts   |   merged-/usr hosts  |
-|----------|-----------------|-------------------|------------------|—----------------|-------------------|---------------------|----------------------|
-|     none |       yes       |         no        |         no       |       yes       |         no        |         yes         |          yes         |
-|     weak |       yes       |        yes        |        yes       |       yes       |         no        |          no         |          yes         |
-|   middle |       yes       |        yes        |        yes       |       yes       |        yes        |          no         |           no         |
-|     hard |       yes       |        yes        |        yes       |        no       |        yes        |          no         |           no         |
-|      all |       no        |        yes        |        yes       |        no       |        yes        |         yes         |           no         |
+|          |     Host types that are allowed       | Are merged `/usr` |     Official packages are built on    | Packages built on … can break on the other |
+| Codename | classical hosts | merged `/usr` hosts | symlinks allowed  | classical hosts | merged `/usr` hosts |   classical hosts   |  merged `/usr` hosts |
+|----------|-----------------|---------------------|-------------------|—----------------|---------------------|---------------------|----------------------|
+|     none |       yes       |          no         |         no        |       yes       |          no         |         yes         |          yes         |
+|     weak |       yes       |         yes         |        yes        |       yes       |          no         |          no         |          yes         |
+|   middle |       yes       |         yes         |        yes        |       yes       |         yes         |          no         |           no         |
+|     hard |       yes       |         yes         |        yes        |        no       |         yes         |          no         |           no         |
+|      all |       no        |         yes         |        yes        |        no       |         yes         |         yes         |           no         |
 ```
 
 The current state of buster is `weak`.