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 via email to