Debian build helpers: dh dominates
It's been a while since someone did this. Back in 2009, Joey Hess made a talk at Debconf 9 about debhelper and mentioned in his slides (PDF) that it was used in most Debian packages. Here was the ratio (page 10):
- debhelper: 54%
- cdbs: 25%
- dh: 9%
- other: 3%
Then Lucas Nussbaum made graphs from snapshot.debian.org that did the same, but with history. His latest post (archive link because original is missing images), from 2015 confirmed Joey's 2009 results. It also showed cdbs was slowly declining and a sharp uptake in the dh usage (over debhelper). Here were the approximate numbers:
- debhelper: 15%
- cdbs: 15%
- dh: 69%
- other: 1%
I ran the numbers again. Jakub Wilk pointed me to the lintian.debian.org output that can be used to get the current state easily:
$ curl -so lintian.log.gz https://lintian.debian.org/lintian.log.gz
$ zgrep debian-build-system lintian.log.gz | awk '{print $NF}' | sort | uniq -c | sort -nr
25772 dh
2268 debhelper
2124 cdbs-with-debhelper.mk
257 dhmk
123 other
8 cdbs-without-debhelper.mk
Shoving this in a LibreOffice spreadsheet (sorry, my R/Python brain is slow today) gave me this nice little graph:
As of today, the numbers are now:
- debhelper: 7%
- cdbs: 7%
- dh: 84%
- other: 1%
(No the numbers don't add up. Yes it's a rounding error. Blame LibreOffice.)
So while cdbs lost 10% of the packages in 6 years, it lost another half of its share in the last 4. It's also interesting to note that debhelper and cdbs are both shrinking at a similar rate.
This confirms that debhelper development is where everything is happening right now. The new dh(1) sequencer is also a huge improvement that almost everyone has adopted wholeheartedly.
Now of course, that remaining 15% of debhelper/cdbs (or just 7% of cdbs, depending on how pedantic you are) will be the hard part to transition. Notice how the 1% of "other" packages hasn't really moved in the last four years: that's because some packages in Debian are old, abandoned, ignored, complicated, or all of the above. So it will be difficult to convert the remaining packages and finalize this great unification Joey (unknowingly) started ten years ago, as the remaining packages are probably the hard, messy, old ones no want wants to fix because, well, "they're not broken so don't fix it".
Still, it's nice to see us agree on something for a change. I'd be quite curious to see an update of Lucas' historical graphs. It would be particularly useful to see the impact of the old Alioth server replacement with salsa.debian.org, because it runs GitLab and only supports Git. Without an easy-to-use internal hosting service, I doubt SVN, Darcs, Bzr and whatever is left in "other" there will survive very long.
974 of the cdbs packages contain the word "haskell" in the package name, 42%. 274 of the cdbs packages contain the word "perl" in the package name, 12%. Chances are, groups like those may have tools to convert / generate packaging.