Getting multiarch dpkg into Debian
Clearly, a functioning multiarch implementation will require extensive support from the packaging mechanism. To that end, a number of developers have been working on extending the dpkg utility for some time; patch sets adding multiarch support to dpkg were posted as early as 2009. Much of this work has been supported by Canonical and Linaro, so it is not entirely surprising that it shipped first with the Ubuntu distribution; the 11.04 release included basic multiarch support. Until very recently, though, the necessary dpkg changes had not found their way into Debian - not even into the experimental repository.
A number of attempts have been made over time to push the dpkg changes into experimental. The holdup each time appears to have been the same: dpkg maintainer Guillem Jover blocked the push until he could do a full review of the relevant code. The problem, it seems, is that this review never happened; Guillem is a busy developer and has not been able to find the time to do that work. So the multiarch-compatible dpkg remained out of the repository; only those willing to build it from source were able to test the multiarch changes. Playing with fundamental packaging system changes is scary enough without having to build the tools, so this situation can only have led to less testing of multiarch support in Debian as a whole.
In October, 2011, Philipp Kern, representing the release team, expressed concern about the delay, saying:
Currently nobody can test multiarch with in-archive software. The multi arch patches did not even land in experimental, despite some pokes from fellow project members.
Philipp requested that the new dpkg find its way into experimental immediately, with a move to unstable two weeks later. But things did not happen that way; instead, Guillem blocked another attempt to upload the work into experimental. Debian project leader Stefano Zacchiroli responded with some concerns of his own:
Guillem did not respond to this message until March 3, 2012 - over four months after it was sent. Meanwhile, the dpkg work languished outside of the Debian repositories. In January, 2012, Cyril Brulebois pushed the new dpkg using the Debian non-maintainer update (NMU) process. An NMU can be a way to route around an unresponsive or distracted maintainer, but the process has its limits; in this case, Guillem simply reverted the NMU, leaving the situation as it was before.
At the beginning of February, Stefano apparently decided that the situation had gone on for too long. The powers of the project leader are famously limited, though; there was nothing Stefano could do on his own to force a solution to the problem. The Debian Technical Committee, however, is a different story; it is empowered by the Debian Constitution as the final decision maker in the case of otherwise unresolvable technical disputes. So Stefano referred the problem to the committee, asking that it decide whether one of the dpkg maintainers can block progress indefinitely in such a situation.
The committee did not need long to reach a decision; it concluded unanimously that Guillem's blocking of the dpkg upload should be overridden. Guillem was given a set of deadlines by which to get the code into experimental (then unstable); if those deadlines were not met, one of the other dpkg maintainers (Raphaƫl Hertzog) was given the power to do the upload instead. As it happens, Guillem met the deadline and Debian now has a multiarch-capable package manager. This move has spawned another massive email thread - but this is Debian we're talking about, so it's really just business as usual at this point. Multiarch in wheezy is back on track.
While the Technical Committee resolved this particular conflict, it did not (and probably could not hope to) resolve the larger question. Debian, like many free software projects, tries to make its decisions by consensus whenever possible. But the project also gives developers something close to absolute power over the packages that they maintain. Occasionally, those two principles will come into conflict, as was the case here. Resolving such conflicts will never be easy.
In this case, everybody was working toward the same goals. Even those who were most critical of Guillem's behavior stopped far short of suggesting that he was deliberately trying to delay the multiarch work. He was simply trying to ensure the highest level of technical excellence for a package he maintains - a package that is critical to the functioning of the distribution as a whole. The problem is that he ran afoul of a project that has been trying - with significant success - to bring a bit more predictability to the release process in recent years. Overriding him was probably necessary if the release goals were to be met, but it must still feel harsh to a developer who has put a lot of time into improving the project's core infrastructure.
A large project like Debian, in the end, will have occasional conflicts
involving developers who, for whatever reason, are seen as holding up
important changes. So there needs to be some sort of mechanism for
avoiding and dealing with such blockages. Debian's approach, which
includes having teams of developers (instead of a single person) working on
important packages and the Technical Committee as a court of last resort
appears to work pretty well. The benevolent dictator model used by a
number of other projects can also be effective, depending on the quality of
the dictator. In the end, our community does not often have serious
problems in this area; we are able to manage the interactions of thousands
of dispersed developers with surprisingly little friction. But it's good
to know that these conflicts can be resolved when they do arise.
Posted Mar 6, 2012 21:24 UTC (Tue)
by alvieboy (guest, #51617)
[Link] (4 responses)
I'm glad this finally moves on.
However, I can understand Guillem. I also develop and maintain a packaging system myself, and I'm not very open when it comes to change it, for the sake of stability. But sometimes we have to do it, and the first thing we need to do is to convince ourselves that those changes are indeed a necessary move. This is why I think Guillem did not accept them, he is not convinced they are necessary or that they lack the required quality (I think the former, but I might be wrong).
Still, he seems to have been forced to accept those changes. This will eventually cause a bigger problem, cause you cannot properly maintain something you don't agree with.
Hopefully Debian will manage to overcome this, and so Guillem. Let's hope they do, for the sake of their users (like myself).
Alvie
Posted Mar 7, 2012 8:54 UTC (Wed)
by josh (subscriber, #17465)
[Link] (3 responses)
Posted Mar 7, 2012 10:50 UTC (Wed)
by stefanor (subscriber, #32895)
[Link] (2 responses)
Posted Mar 10, 2012 17:31 UTC (Sat)
by mv (subscriber, #17258)
[Link] (1 responses)
Posted Mar 11, 2012 22:15 UTC (Sun)
by man_ls (guest, #15091)
[Link]
Posted Mar 6, 2012 21:38 UTC (Tue)
by cmorgan (guest, #71980)
[Link] (1 responses)
Chris
Posted Mar 7, 2012 0:26 UTC (Wed)
by scientes (guest, #83068)
[Link]
Posted Mar 6, 2012 22:36 UTC (Tue)
by bug1 (guest, #7097)
[Link] (5 responses)
Development decisions and release management decisions should be made by different people, each have different goals. Developers have long term goals, release management short/medium term goals. There is a conflict of interest.
Unfortunately debian has a long history of linking the two.
Posted Mar 6, 2012 23:08 UTC (Tue)
by alvieboy (guest, #51617)
[Link]
These conflicts arise every time because they have to (and glad they do). There's no actual split between "development" and "release management". Both have same goal - to get the best-of-the-art delivered to the user. Different motivations, perhaps, but goal is the same. Different paths to accomplish same goal, but they tend to balance each other.
Equilibrium is the key word. Like in everything else in life.
Now, saying that "Conflicts like this should never happen"... They do, and I'm glad they do - that means people actually worry about. Both developers, and "release managers".
Alvie
Posted Mar 6, 2012 23:19 UTC (Tue)
by rahvin (guest, #16953)
[Link] (3 responses)
Second, managing a process and people involved in that process is HARD even in commercial environments where you can tell someone what they should work on. It's even harder in environments where you can't tell someone what to do because they are a volunteer.
The package maintainer was right to want stability in dpkg and the technical committee was also right to want to move the code forward as it's a critical part of MultiArch. So if they are both right the trick is to bring about a solution that recognizes that and works with the process, that's HARD. As the article says the tech committee issued an ultimatum so the package maintainer made time for the review and got the patch merged. The process worked and in particular worked on a project with true democratic control and a mostly volunteer workforce. To me that's a direct indication of the dedications of the Debian maintainers. I think the only possibly negative thing this really indicates is that Guillem needs some more help (or needs to trust his helpers more) but DPKG is one of the most critical pieces of the Debian toolchain so I understand his caution.
Posted Mar 7, 2012 11:11 UTC (Wed)
by pboddie (guest, #50784)
[Link] (1 responses)
I think that the general point here is that in projects people need to be able to ask for help, and people must be willing to offer help. Again, in general, good management is about bringing these things together, whereas bad management (as many of us are unfortunately all too aware) often involves someone thinking that their job is merely to tell you what to do, frequently not contributing to the activity in any way other than to indicate that things must be done more quickly, as opposed to helping you get your work done by giving you what you need.
Posted Mar 12, 2012 10:00 UTC (Mon)
by man_ls (guest, #15091)
[Link]
Posted Mar 8, 2012 2:05 UTC (Thu)
by rgmoore (✭ supporter ✭, #75)
[Link]
The underlying problem is that the standard procedure doesn't give any kind of deadline for the package maintainer to respond. That's reasonable because there really isn't a one-size-fits-all response interval, but it means there's a danger that something will be put on the back burner and never taken off because the maintainer always sees something else as a higher priority. That seems to have been what happened in this case, and it wasn't until the technical committee gave him a firm deadline that he bumped the priority enough to do the review.
The big question is whether there needs to be some general procedure for dealing with this kind of problem, or whether ad hoc solutions will work. This is a rare case where the package is on the critical release path for the whole project, so the technical committee really had to step in. But what happens when it's on a less important project that isn't going to hold up the whole release? Can a maintainer put off changes indefinitely because he wants to review everything and doesn't have time to do it? Does there need to be some kind of general process to generate a definitive answer for changes that have been delayed?
Posted Mar 7, 2012 16:28 UTC (Wed)
by walex (guest, #69836)
[Link] (13 responses)
RPM and other packaging systems have not had this limitation EVER. Indeed RPM can also handle having library packages of different versions too, something that Debian mishandles by putting the version in the base package name too. It is very sad that Debian is based on such a weak technical foundation, but it all goes to prove that putting in a lot of extra effort can make even poor technical choices work up to a point. It is also sad that there is no popular community based distribution that can compete with Debian and has better technical foundations (and less bizarre policies).
Posted Mar 7, 2012 20:24 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link] (9 responses)
Also, RPMs are supposed to be relocatable. Even though it doesn't work in practice since nobody tests it. Then there are questions of foreign architectures - how do I install an ARM version of libxml.so so I can use qemu to run my binary without full-system emulation?
Posted Mar 7, 2012 20:44 UTC (Wed)
by vonbrand (subscriber, #4458)
[Link] (8 responses)
Haven't used --force for untold ages here... forcing the installation of something without the proper dependencies will brew trouble. Yes, the RPM format allows relocatable packages; in practice making something relocatable is a major undertaking, for very little use (so almost nobody hops through all the required hoops). Small wonder. Yes, just installing some random arch's libraries and executables and then having the whole thing magically run would be nice... if you are into that. If the software is open source, a native (and thus presumably much more performant) package is at the end of your fingertips, so this point is moot for most of the user population anyway.
Posted Mar 7, 2012 22:53 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link] (7 responses)
And it'll mostly 'just work' in Debian.
Posted Mar 8, 2012 2:27 UTC (Thu)
by rahulsundaram (subscriber, #21946)
[Link] (6 responses)
Posted Mar 9, 2012 20:19 UTC (Fri)
by mlankhorst (subscriber, #52260)
[Link] (5 responses)
Posted Mar 9, 2012 20:49 UTC (Fri)
by rahulsundaram (subscriber, #21946)
[Link]
Posted Mar 12, 2012 13:24 UTC (Mon)
by mpr22 (subscriber, #60784)
[Link] (3 responses)
Posted Mar 13, 2012 12:00 UTC (Tue)
by mlankhorst (subscriber, #52260)
[Link] (2 responses)
Posted Mar 7, 2012 20:58 UTC (Wed)
by Tobu (subscriber, #24111)
[Link]
So far we have three design choices: package states keyed by a name, by a (name, arch) tuple, and by a (name, arch, version) tuple.
Keying by name is simple and robust: packages with different names must agree not to own the same file names.
Keying by version is tricky and bug-prone: if versions are to be parallel installable, different versions of a package either need to not own the same files, or to keep identical contents in files that didn't move. This doesn't seem compatible with shipping changelogs or common resources.
Keying by arch while requiring that the versions stay locked, on the other hand, is safe: the files were built from the same source, so files that are shared across architectures will easily be identical; architecture-dependent files will need to use paths that embed the architecture name.
Posted Mar 8, 2012 1:49 UTC (Thu)
by smoogen (subscriber, #97)
[Link]
RPM packaging chose a way to do this via policy that I believe dpkg could ahve done.. but it would not have met other goals of theirs to make sure it worked on N+1 architectures. So lets not try to start a "my packaging system is better than yours" because those never convince anyone of anything.
Posted Mar 16, 2012 1:53 UTC (Fri)
by jjs (guest, #10315)
[Link]
In this case, Debian is going beyond biarch to multi-arch. Not just have x86-32 and x86-64 (amd64) installed, but say have ARM, SPARC64, x86-32, and x86-64 simultaneously installed, to ease cross-development. That's hard, But Debian is working to get it right.
Posted Mar 8, 2012 17:59 UTC (Thu)
by guillemj (subscriber, #49706)
[Link] (1 responses)
Posted Mar 8, 2012 18:19 UTC (Thu)
by rahulsundaram (subscriber, #21946)
[Link]
Posted Mar 9, 2012 8:02 UTC (Fri)
by sml (guest, #75391)
[Link]
To echo the first post, I think this shows the power of Debian's democratic structure. Approaches to fundamental change on the scale of multiarch are always going to be controversial and consensus difficult and slow.
It's unfortunate that Guillem's conscientious approach to dpkg maintainership (and lack of free time) clashed with release goals, but I guess this is the price of striving for release predictability. Maybe it's the "Ubuntu effect".
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
This follow-up may be interesting. Besides announcing an upload of multiarch capable dpkg to unstable, Guillem points out some results from the code review.
Getting multiarch dpkg into Debian
Yes, it is really interesting, and it gives a new perspective on the whole article: the version of dpkg in experimental may cause db corruption.
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
I think the only possibly negative thing this really indicates is that Guillem needs some more help (or needs to trust his helpers more)
May I nominate this comment for distribution quote of the week?
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
The package maintainer just wanted time to review the code to ensure it met the standards for a package that basically controls the stability of the entire distribution.
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Nope. Quite a significant part of 'regular' Linux population uses bi-arch support every day. And it's going to get even more complex with the new x32 architecture.
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
It seems to me that if a -devel package has to be --force'd, you should examine why - then either fix the cause if it's at your end, or file a bug report if the cause is at the package maintainer's end.
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
Getting multiarch dpkg into Debian
