We're trying to design something for CollaborativeMaintenance. Check the actual source code in the repository :

Additional requirements

Overview

The infrastructure obviously needs a configuration file in which you give :

Given the amount of data involved, we need a (little) database to keep a cache of the most important information. And the database will probably also store some meta-information about the status of each package (see the kind of meta-information needed on CollaborativeMaintenance).

Many scripts are needed. Server side scripts:

Client side:

Modules

PkgRepository

PkgRepository is an interface (or an abstract object or whatever) that will be implemented by all modules providing support for a specific kind of "package repository" :

It should provide following services :

If the repository is "writable", it should also provide the following service :

Each instance of such a module is given a directory that it can use for its purpose.

FileCache

We obviously will have to download lots of files from Debian/Ubuntu mirrors (Sources packages mainly) and we need a smart cache if we don't want a full mirror copy sitting on the server and if we don't want to download the same files again and again.