I added dh
to debhelper a decade ago, and now Debian is considering
making use of dh
mandatory. Not being part of Debian anymore, I'm in
the position of needing to point out something important about it anyway.
So this post is less about pointing in a specific direction as giving a
different angle to think about things.
debhelper was intentionally designed as a 100% solution for simplifying building Debian packages. Any package it's used with gets simplified and streamlined and made less a bother to maintain. The way debhelper succeeds at 100% is not by doing everything, but by being usable in little pieces, that build up to a larger, more consistent whole, but that can just as well be used sparingly.
dh
was intentionally not designed to be a 100% solution, because it is
not a collection of little pieces, but a framework. I first built
an 80% solution, which is the canned sequences of commands it runs plus
things like dh_auto_build
that guess at how to build any software. Then I
iterated to get closer to 100%. The main iteration was override targets in
the debian/rules file, to let commands be skipped or run out of order or
with options. That closed dh
's gap by a further 80%.
So, dh
is probably somewhere around a 96% solution now. It may have crept
closer still to 100%, but it seems likely there is still a gap, because it
was never intended to completely close the gap.
Starting at 100% and incrementally approaching 100% are very different design choices. The end results can look very similar, since in both cases it can appear that nearly everyone has settled on doing things in the same way. I feel though, that the underlying difference is important.
PS: It's perhaps worth re-reading the original debhelper email
and see how much my original problems with debstd would also apply to dh
if
its use were mandatory!
Hi joeyh,
thanks for expressing that; maybe this will have some weight.
Despite initial reluctance, I adopted dh for some of my packages, but I still wish to have the flexibility to not use it (sometimes, a rules file with dh is longer and more complex than one without, due to the need for too many overrides; sometimes, buildsystem detection works against you, etc.), let alone the idea of being forced to use something turns me off of things.
Being able to choose is good. (No matter what some people say about this not being about choice, I disagree there.) Monocultures have inherent problems.