Debian Trends

Debian packaging practices evolved over time. This page provides some historical perspective about *how* those practices evolved. This data was generated with lintian, a rather basic script, data from snapshot.debian.org starting in 2005, and computational power from Grid'5000. This is a static page, last refreshed in August 2023. If it is not fresh enough, nag the author!

All graphs are for Debian *testing* (main only, not contrib/non-free), because there is a number of unmaintained or abandonned packages in Debian *unstable* that we do not want to report about. Alternate graphs with Debian *unstable* are also provided. Each graph provides the number of packages in each case over time. Vertical lines indicate release dates.

- Provide ideas for more graphs. The current to-do list is:
- Standards-Version
- init scripts vs systemd units vs both (see #951653)
- patches and tags (DEP-3)
- age of packages (last upload date)
- dgit adoption (it is not clear how we can detect that)
- git packaging workflow (but there is probably no way for lintian to detect that)

- Make the necessary changes to lintian so that it can report information about the above stuff, and help include the lintian modifications into standard lintian.
- Hack on the data collection itself (there are development instructions in README.md)

Contact: Lucas Nussbaum <lucas@debian.org>

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

**This graph is currently broken due to #974641.**

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Non-cumulative graph with percent instead of packages counts (also for Debian
*unstable*) - Stacked graph with percent instead of packages counts (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*) - Status of packages on 2023-08-01 (CSV) (also for Debian
*unstable*)

Inspired by code smells (*any characteristic in the source code of a program that possibly indicates a deeper problem*), this page also provides a list of packages that should be refreshed to newer standards.

This is subjective (and feel free to criticize, but I might feel free to ignore critics :-) ). Here is the logic:

**Debhelper compatibility level:**on 2019-04-01, 87% of packages in unstable have a debhelper compatibility level of 9 or higher (9: 31%; 10: 18%; 11: 33%; 12: 5%). Therefore, using a debhelper compatibility level lower than 9 is a*smell*.**Build system:**on 2019-04-01, 85% of packages in unstable use dh (cdbs: 7.3%; debhelper: 6.6%; dhmk: 0.8%; no helper at all: 0.4%). So, not using dh is a*smell*.**Source format and patch system:**on 2019-04-01, 95% of packages in unstable use*3.0 (quilt)*(92.8%) or*3.0 (native)*(2.0%). Therefore, not using 3.0 is a*smell***VCS:**On 2019-04-01, 84.5% of packages use Git, 12.8% use no VCS at all, and 2.7% use another VCS. 52.7% use Git on Salsa, 27.8% use Git on Alioth (and will likely move to Salsa), while 4% use another Git platform. Therefore, not using Git and Salsa is a*smell*(except if the package is using dgit).**Overall**, 67.5% of packages use a debhelper compatibility level >= 9, dh, 3.0 (native) or 3.0 (quilt), Git, and either Salsa or Alioth.

Also available:

- Same graph for Debian
*unstable* - Non-cumulative graph (also for Debian
*unstable*) - Raw data as CSV (also for Debian
*unstable*)

Contact: Lucas Nussbaum <lucas@debian.org>. See Introduction for pointers to source code.