Package Maintenance Support

A system for identifying and maintaining package support

Nick West
Last modified: Mon Jun 9 15:18:37 BST 2008

Introduction

The MINOS experiment is well into exploitation phase and has accumulated a large body of offline code on which that exploitation depends. As of June 2008 this is: Many of the packages are no longer being actively developed and in some cases the original developers have moved onto other work or have left the experiment entirely. This leaves us with a support problem: what happens when development results in a bug that may have been dormant in an unsupported package or at very least requires diagnostic work in that package to resolve?

This can be divided into two:-

  1. How do we assign support to all of our packages?

  2. How do we maintain this assignment as people come and go?

In order to address both problems a small python based system: PMS (Package Maintenance Support) has been developed. How it solves each of these questions is described below.

Identifying Maintainers

For every package we identify:-

For some packages we have very clear individual maintainers and stakeholder group, for the remainder PMS will perform an analysis of all the package commit logs to see who has worked on it recently, to pick candidate individual maintainers, and throughout its development, to suggest a stakeholder group.

This analysis is carried out at regular intervals. The latest results can be found at:-

  http://www-pnp.physics.ox.ac.uk/~west/minos/discussions/pms/

The initial identification of maintainers came, in part, from this analysis and in part from negotiation with the individuals involved.

Tracking Changes

Identifying maintainers is only half the battle, this exercise was undertaken several years ago and the list that it produced slowly fell out of date, so keeping the list up to date is the other half. PMS provides some low maintenance method for tracking changes and spotting holes in support as soon as they appear. It's based on a system where maintainers have to reaffirm at intervals, their willingness to continue in the role.

PMS records information about packages and maintainers in a couple of standard python configuration files:-

This information is used by PMS to generate package_maintenance.html so that everyone can see who maintains what.

The information can also be used to generate emails to each maintainers listing the groups they belong to and the packages they individually support. It is the last entry 'last_confirmation' which is used to pro-actively track changes.

The system works as follows and involves the PMS utility running as a daily cron at FNAL.

  1. It checks individual 'last_confirmation' and for any that are over some threshold, say 2 months, starts sending emails, every few days to the individual instructing them to check out maintainers.pms and update their entry. At the very least they have to change the 'last_confirmation' to bring it up to date. Should they try to forward date to get a quiet life that too will send email! They can choose to resign support entirely by removing their entry.

    This does require world write access and we have to trust people not to cheat, but this is CVS so we can track who does what!

  2. It checks for packages lacking individual or group maintenance. It also checks for individual entries that have not been updated in a while. It emails to the core group a list of all such packages and individuals.

  3. It generates a fresh copy of the package maintenance list.
In summary:-