Multi-package projects
Hi,
Debian does not have a good way to manage projects that require changes
to large numbers of source packages to be successful. Handling projects
like that currently requires buy-in from each individual package
maintainer; if the project does not manage to convince sufficient
numbers of maintainers, it is liable to fail.
This problem is bad enough when it is a noncontroversial project, but
gets worse when the project is controversial; some people will oppose
the project on principle because they believe it will not improve
Debian, which will result in effectively a mess of half-baked solutions
that can't really be used.
I've given this some thought over the past few days, and have come up
with something that I believe might work, and I would like to submit it
as a proposal to see what others think. I want to clarify that it was
not created with a specific multi-package project in mind, although I
will give some examples. Additionally, the proposal foresees a pretty
big role for the release team. I haven't discussed this with them (or
anyone else, for that matter), and so it might be that a new team will
have to be created if the release team thinks this won't be for them;
but I do think they would be the best fit (they would have to coordinate
with this proposed new team at any rate, anyway), so I'll not muddle the
waters by using wording like "the release team, or any other team that
would take up this role". Just imagine I did though ;-)
On to it:
- Any team of persons who would like to propose a project that requires
changes to multiple packages will make, at the beginning of the
release cycle, a proposal to the release team that outlines the
proposed goals and scope of the project. (e.g., "SE Linux
configuration for all daemons in the archive")
- The release team will make sure that interested parties are made aware
of the proposed new projects, so that they can object/chime
in/join/whatever. (e.g., send a d-d-a mail)
- After the merits and problems of the proposed new projects are
discussed, the release team decides which projects are accepted for
the next release.
(I specifically do not mention what rules the release team should
follow in deciding which projects to accept -- I trust their
judgement)
- Accepted projects get the following:
- A mailing list and a pseudo-package in the BTS to coordinate efforts
- Relaxed NMU rules
(People working on the project should *not* NMU at will; they are
still expected to work with maintainers, who may request things like
changes to proposed patches, short delays so that it won't conflict
with other work the maintainer is doing on the package, and/or
additional work, such as autopkgtests. However, in the absense of
reasonable package maintainer objections, NMUs should be done at low
threshold)
- At the beginning of the release cycle, the release team will also set
a date at which point the currently-active multi-package projects are
evaluated. This date is expected to be near the end of the release
cycle.
- During the release cycle, the team driving the project is expected to
submit patches to source packages where and as necessary, and to
follow up on bug reports that are assigned to their pseudo-package.
- During the release cycle, people *not* driving the project are
expected to apply patches speedily, in the spirit of collaboration.
They are *not* expected to work on the project (although they are of
course welcome to if they want to); any bugs that are filed that are
related to the changes made by the multi-package project may be
promptly reassigned to the project's pseudo-package and/or set to a
non-RC severity. The team driving the project may *not* reassign the
bug back to the package without either a patch that fixes the bug, or
an explanation of why the bug is a bug in the code that is not related
to the multi-package project (with the onus of proof here lying on the
project).
- During the release cycle, the release team is may do things like keep
an eye on the progress of the various projects and guide the teams
driving them as to things they consider critical when the
- When the date that was decided upon by the release team has arrived,
multi-package projects will be evaluated, and each will be placed in
one of the following four categories:
- Succeeded: the project is complete, no further work is required for
it. The pseudo-package will be closed, any bugs still assigned to it
will be reassigned back to the relevant source package, and the
maintainers of these packages will from now on be responsible for
maintaining the required changes (this might be appropriate for a
project that desires a change in how we do things, but that has no
further work once the change has been done, such as, e.g., the
usrmerge project could have been)
- Failed: the project failed to reach its goals, and it is unlikely
that it will ever do so. Any code in packages relevant to the
project may be immediately removed by their maintainers before the
release (there should be a sufficient amount of time for maintainers
to do so before the freeze), whether it is functional or not.
- Postponed: the project failed to reach all of its goals, but it is
likely they might be able to do so in the next release cycle.
Maintainers *may* remove code relevant to this project before the
next release with the same rules as projects in the "failed"
category, but the project will probably be back next release, so it
is likely they'll have to add that code back by that time.
- Maintained: the project reached it goals, and will be active in the
next release. Outstanding patches (if any) should be fixed and/or
applied ASAP; failure to apply such patches will become RC for the
relevant source package. However, the project is not finished, and
the pseudo-package will not be closed; further bugs that are
relevant only to the given project may still be assigned to the
pseudo-package, during this release cycle or future ones.
Maintainers of the project are expected to continue to provide
assistance to maintainers, and future evaluations of multi-package
projects for future releases may reclassify the project as "failed"
or "postponed" should it fall back in keeping up with maintainer
requests (this classification might be appropriate for projects that
require significant domain-specific knowledge, such as a "SE Linux
configuration for all daemons" project, or that require testing on
non-default installations, such as a "add support back for sysvinit"
project).
The goal of this proposal is to attempt to balance the (sometimes
conflicting) interests of multiple parties:
- Package maintainers who are not interested in a project should not
have to work on it (they can just reassign bugs and forget about
them);
- Developers who are interested in a project should not be stymied by
having to convince each and every individual developer of the merits
of their proposal (they have to convince the project at large before
they can get started, but once that's happened the project is active
and maintainers are expected to apply reasonable patches); they get a
chance to complete their project, but there is a clear "success or
bust" cut-off point;
- Projects that will require ongoing maintenance will be maintained by
the people who care about it; should these people disappear, there
will again be a clear "success or bust" cut-off point after which the
relevant code can be immediately removed.
Does any of that make sense?
Thanks,
--
w@uter.{be,co.za}
wouter@{grep.be,fosdem.org,debian.org}
I will have a Tin-Actinium-Potassium mixture, thanks.
Reply to: