Collaborative Maintenance Proposal

This proposal is a very far-reaching proposal which started from the discussion about OrphanedPackages and which has been discussed IRL during the QA meeting (see the videos here). Everybody interested by this proposal is welcome to join the collab-maint-devel mailing list.

Short summary

We want to setup a complete infrastructure for handling the maintenance of (sets of) Debian packages. This infrastructure is meant to be used in several cases which have different expectations about such an infrastructure. Namely :

Packages from future Debian developers who are currently in the NM process

Packages from future MOTU which are in the MOTU School

Packages created by Ubuntu's MOTUs which must be integrated in Debian (to avoid divergence)

Goals and expected benefits

Make it easier for external contributors to help in the maintenance of Debian packages

Make it easier for Debian developers to sponsor and mentor volunteers

Make it possible for external contributors to maintain packages even if they don't want to become Debian developers

(this is only possible if the sponsoring process works well and that's why we need to improve our tools to make that easier)

How do we do that ?

Collaborative maintenance means using a Version Control System (VCS). Subversion being the most popular choice nowadays, we'll use this one as the basis of this proposal. However the infrastructure must be designed in a VCS-agnostic manner: it must be possible to write modules to add support of other VCS.

So the main part of the infrastructure is a subversion repository. Packages are handled like usual with svn-buildpackage in their own directory. Up to now, this is nothing new as many people already do it. We need to add meta-information in the repository and provide several services to ease the work of everyone.

What needs to be done

Meta-information to integrate in the infrastructure

A "maintenance-status" field describing each package :

orphaned: packages without regular maintainer

mentored: packages from someone who wants to become DD/MOTU (may also be a group of future DD/MOTU)

maintained: packages where a regular DD/MOTU is in the maintenance team

lowmaint: packages maintained by external contributors with no regular DD/MOTU in the team

An "upload-status" field (associated to the current version) :

need-review / need-upload

ready-for-upload / needs-more-work

uploaded

Access control layer

Since we want to open the access to many external contributors, we should be able to restrict their access to the packages that they are interested in. Of course the ACL (Access Control List) must be maintained by a group of trusted developers. This Wiki page explains how to proceed to set ACLs.

Web page

A (dynamic) web page must be created which describes the characteristics of all packages maintained in the repository :

Does the package exist in Debian ? (in Ubuntu ?)

Is the version in the repo newer than the version in unstable/experimental ?

Does the maintainer look for a "sponsor" ? (~ is the package ready to be uploaded ?)

Usual links :

Package Tracking System

Bugs

Links to any "generated content" (see below)

Content generated automatically

Diff between last version uploaded and actual version in repo

Output of lintian ?

Output of pbuilder run ? piuparts ?

Generate an aptable source repository (possibility to download the last sources without using svn)

Automatic integration with Debian infrastructure

For example, it should be possible to configure the infrastructure so that each SVN commits sends a mail with the diff to the Package Tracking System.

Also, the system should follow uploads made to unstable/experimental and check that they come from the repository. If not it should reintegrate it in the repo. It should also inform the maintainers about this (unfortunate) event.

For beginners who are not ready to use SVN yet, we may have a Dak install so that people can upload sources packages which would then directly get injected in the repository (idea from [NeilMcGovern] reformulated by RaphaelHertzog).

Links

Here are some other projects which should be contacted and which are working in the same direction :

Ubuntu is currently working on a tool called REVU which helps reviewing the packages from external contributors. See the specifications in particular for good ideas.

MultiDistroTools is a set of tools to help the MOTU in their work (review of packages, comparison with Debian, etc.)