[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#904302: Whether vendor-specific patch series should be permitted in the archive



On Sat, Jul 28, 2018 at 02:18:51AM +1000, Stuart Prescott wrote:
> Debian does not micromanage its maintainers and Debian most certainly does 
> not tell derivatives what to do; however, that is precisely what this 
> proposal is requesting.

Is it?  What I see is more like a derivative (or at least some of its
developers; Ubuntu has not had a formal discussion about this and I'm
sure we don't have unanimity) asking that Debian update its source
package standards to forbid a feature that was implemented with the best
of intentions to make that derivative's life easier, but which has in
fact turned out to have the reverse effect.

It's technically true that Ubuntu could individually decide to patch out
this feature in both dpkg and all of the source packages that use it,
and that we haven't not done so.  That's mainly because it would be a
fair amount of work, not to mention that the patches would be of a
really strange shape (removing ubuntu.series in an Ubuntu patch ...).
Furthermore, since the feature was originally there mainly to improve
collaboration with Ubuntu, or at least that's mostly how it's ended up
being used, if Ubuntu doesn't think it's working well in practice then
Debian processes are *exactly* the correct way to discuss it.  The
alternative is a bizarre ping-pong game of patch management behaviour
that would be very confusing for everyone outside the small group of
people up to speed with it, and that would do nobody any good in the
long run.

> Debian should not seek to prevent maintainers doing something that
> they have agreed to do in collaboration with downstreams.

My memory of the origin of this feature is that the dpkg developer who
originated it asked me if it might help with upstreaming changes from
Ubuntu to Debian, I said something along the lines of "uh, maybe, I
guess, it sounds like that would have some problems?", and then they
went ahead and did it.  I don't *think* it was originally a request that
came from derivatives, and I don't remember the sort of collaborative
design that I think you're suggesting here.

I admit that we in Ubuntu didn't push back as hard as in retrospect we
should have done, and some people were positive about the idea; but at
the time, there were a lot of ideas floating around about how to make
the process of upstreaming patches better, and while many of them were
helpful it would have been hard to manage a 100% hit rate.  (dpkg-vendor
and related features were implemented around the same time, and I think
those were a good idea and have been helpful.)

That said, it was some time back and I haven't been able to find any
actual transcripts of the conversation, so I'm relying on fallible human
memory and will gladly apologise if I'm wrong.  Still, this sort of
design decision should still be open to being revisited when it turns
out to have serious problems in practice.

> One might find vendor.series to be a poor technical solution, but then
> those who find it abhorrent might seek to find a better one, rather
> than attempt to resort to administrative power.

I think Steve and I, at least, have both made it clear what we think
would be better: briefly, apply patches unconditionally but if necessary
give them conditional behaviour that can be controlled at build time.
While this occasionally means making the patch a bit more complicated,
it simplifies management of the patch *series*, and avoids a whole
category of problems that maintainers make in practice.  (Certainly I've
been saying essentially this for years when people ask about this kind
of thing on #ubuntu-devel.)

However, features built into the source package format are tempting for
maintainers to use, and so we end up playing whack-a-mole.  The only
good fix for that is to remove the feature.  It doesn't require a
replacement at the level of the source package format, but it would
require ensuring that packages stop using the feature first, and that's
the kind of interoperability issue that requires a change in policy.
Even if policy doesn't jump straight to forbidding the use of
vendor-specific series, it would make things very much easier if it were
to formally deprecate them.

To me, this is similar to the DEB_AUTO_UPDATE_DEBIAN_CONTROL feature in
CDBS.  That was also introduced with good intentions to try to make
maintainers' lives easier, and it was tempting enough that for a while
quite a few people used it; but it proved to have deleterious
side-effects and so was deprecated.  (I think this was only ever
deprecated at the level of Lintian and the ftpmaster REJECT-FAQ rather
than actually in policy, but the basic idea seems similar.)

> Essentially, this is a request that the TC overrule both Debian maintainers 
> *and* derivative maintainers in what they have agreed as a workflow that 
> obviously works for them.

Again, this is a misstatement of what derivative maintainers have in
fact decided, except perhaps by omission.

Some individual package maintainers who care about some derivatives have
made the decision to use this feature.  That's not the same thing.

> Today, Debian decides to not allow debian/patches/vendor.series, then
> tomorrow, a derivative patches dpkg-source and Debian is asked to
> decide whether debian/patches/vendor-dammit-i-
> want-these-patches-applied.series is allowed in the source package.

A robust decision on this policy question ought to include documenting
the rationale for deprecating the feature, and writing that down in
policy for future travellers so that they can learn from the mistakes of
the past would help to forestall this hypothetical situation.  My
opinion from experience with this feature is that those derivative
maintainers would have an easier time if they used patches with
conditional behaviour (or maintained a local branch, of course, although
that was part of what source package management features like this were
trying to reduce).

I'm aware my comments here are mostly Ubuntu-specific; this is not only
because it's what I have most experience of, but also because I'm pretty
sure that ubuntu.series is the only kind of vendor series I've ever seen
in Debian source packages.  It's possible I've missed some.

-- 
Colin Watson                                       [cjwatson@debian.org]


Reply to: