| 1 |
[[!meta title="DEP-2: Debian Package Maintenance Hub"]]
|
| 2 |
|
| 3 |
Title: Debian Package Maintenance Hub
|
| 4 |
DEP: 2
|
| 5 |
State: DRAFT
|
| 6 |
Date: 2012-01-13
|
| 7 |
Drivers: Raphael Hertzog <hertzog@debian.org>
|
| 8 |
URL: http://dep.debian.net/deps/dep2
|
| 9 |
Abstract:
|
| 10 |
Debian maintainers rely on a multitude of services (DDPO, PTS,
|
| 11 |
DDPO-by-mail, BTS, etc), and information sources, in order to do
|
| 12 |
their job. The flow of information varies greatly from case to case.
|
| 13 |
.
|
| 14 |
This proposal is about creating a central infrastructure
|
| 15 |
that would consolidate several of those services and that would
|
| 16 |
standardize the information flow.
|
| 17 |
|
| 18 |
|
| 19 |
Rationale
|
| 20 |
---------
|
| 21 |
This new package maintenance infrastructure is needed:
|
| 22 |
|
| 23 |
* to fix long standing problems;
|
| 24 |
* to provide a clean base to implement new features:
|
| 25 |
* that will help maintainers do a better job;
|
| 26 |
* that will help packaging teams to organize themselves;
|
| 27 |
* that will help the QA team to ensure that all Debian packages are
|
| 28 |
well maintained.
|
| 29 |
|
| 30 |
### Problems to solve
|
| 31 |
|
| 32 |
#### Maintainer vs Uploader
|
| 33 |
|
| 34 |
The flow of information is not the same depending on whether you're
|
| 35 |
listed in the Maintainer field (in which case most services mail you
|
| 36 |
directly) or not (in which case you're supposed to subscribe via the PTS
|
| 37 |
or via a dedicated mailing list). But the opposite is true as well, some
|
| 38 |
information is only available via the PTS and many maintainers have to
|
| 39 |
subscribe to the PTS while excluding almost everything just to get
|
| 40 |
the information they want.
|
| 41 |
|
| 42 |
See also [#507288](http://bugs.debian.org/507288) for some more
|
| 43 |
discussions on this topic.
|
| 44 |
|
| 45 |
This makes it very painful to change/switch the Maintainer field because
|
| 46 |
people have to update their PTS subscriptions accordingly.
|
| 47 |
|
| 48 |
#### Duplication of work / inconsistency between the DDPO and the PTS
|
| 49 |
|
| 50 |
The DDPO and the PTS are completely separate services. This leads to
|
| 51 |
duplication of work when a new information needs to be made available in
|
| 52 |
their respective interface. It can also lead to inconsistencies between
|
| 53 |
both services when bug occurs or when different choices are made.
|
| 54 |
|
| 55 |
#### Mailing lists as Maintainer
|
| 56 |
|
| 57 |
We often have mailing lists listed in the Maintainer field and it's not
|
| 58 |
clear who are the real package maintainers and how many of them there are.
|
| 59 |
The Uploaders field is often outdated, and/or is just a representation of
|
| 60 |
who worked last on the package instead of who feels responsible for the
|
| 61 |
package.
|
| 62 |
|
| 63 |
### Goals
|
| 64 |
|
| 65 |
#### Provide a working replacement for DDPO/PTS
|
| 66 |
|
| 67 |
Since the service aims to merge the DDPO and the PTS, it must be a working
|
| 68 |
replacement of both services and its set of features must englobe the
|
| 69 |
features of the actual services.
|
| 70 |
|
| 71 |
#### Replace maintenance mailing lists
|
| 72 |
|
| 73 |
Packaging teams often separate the mailing list that gets the bug traffic and
|
| 74 |
other notifications from their main discussion mailing list. This new
|
| 75 |
infrastructure should entirely replace the former kind of mailing lists.
|
| 76 |
Anybody receiving notifications and information directed to the package
|
| 77 |
maintainer should get them via this new infrastructure.
|
| 78 |
|
| 79 |
It allows us to know how many people are notified for a given problem.
|
| 80 |
If nobody is notified, the package is effectively orphaned. A more
|
| 81 |
interesting case to detect is when several persons are being notified but
|
| 82 |
all of them are MIA or marked as not being available for Debian (busy/in
|
| 83 |
vacation).
|
| 84 |
|
| 85 |
#### Keep track of the list of maintainers
|
| 86 |
|
| 87 |
Packages using this infrastructure should automatically keep track
|
| 88 |
of the list of their maintainers because anyone subscribing to a package
|
| 89 |
must pick a "role":
|
| 90 |
- "maintainer" (only DD can select this role, or DM for their own packages)
|
| 91 |
- "contributor"
|
| 92 |
- "follower" (aka lurker)
|
| 93 |
|
| 94 |
#### Replace WNPP's RFH, RFA, O
|
| 95 |
|
| 96 |
Since the infrastructure already stores the information about who is
|
| 97 |
maintaining what, it only makes sense to extend it to provide the
|
| 98 |
list of orphaned packages (i.e. packages without maintainers).
|
| 99 |
|
| 100 |
RFH should be replaced by a system where the help request is better
|
| 101 |
formalized so that we can better direct new contributors in places
|
| 102 |
where their skills would be well used. Instead of just requesting
|
| 103 |
help, you could request:
|
| 104 |
- a new maintainer (to replace you, i.e. RFA)
|
| 105 |
- a supplementary co-maintainer
|
| 106 |
- a bug triager
|
| 107 |
- a C/Python/Perl/… programmer (you should be able to choose the programming
|
| 108 |
language)
|
| 109 |
|
| 110 |
Each request also documents whether there's an associated offer of
|
| 111 |
"mentorship" associated to the help request. Of course, there would
|
| 112 |
also be a free form description to give more details about what's
|
| 113 |
expected.
|
| 114 |
|
| 115 |
#### Replace the LowThresholdNmu list
|
| 116 |
|
| 117 |
The [LowThresholdNmu](http://wiki.debian.org/LowThresholdNmu) wiki page
|
| 118 |
is a hack to let people know when NMU are welcome and not frowned
|
| 119 |
upon. This information should be properly stored in the database
|
| 120 |
and it should be associated to each package.
|
| 121 |
|
| 122 |
#### Enable new interactions with maintainers
|
| 123 |
|
| 124 |
The central role of this new "communication infrastructure" makes it
|
| 125 |
possible to design new interactions with maintainers. Instead of being
|
| 126 |
only a source of information, the infrastructure could be used to query
|
| 127 |
package maintainers and/or let them provide supplementary information.
|
| 128 |
|
| 129 |
This could be used to improve the MIA tracking process.
|
| 130 |
|
| 131 |
This infrastructure would also be a more natural place to store the
|
| 132 |
"available for Debian work" boolean flag ("vacation") that's currently
|
| 133 |
never used because it's buried in db.debian.org and that it's not
|
| 134 |
practical to update it.
|
| 135 |
|
| 136 |
This infrastructure could also be used to let maintainers document the
|
| 137 |
responsibilities that they have agreed to endorse, and describe the
|
| 138 |
associated commitments. That way it would be easier to detect packages
|
| 139 |
that cannot be well maintained because the set of maintainers do not cover
|
| 140 |
all the tasks that must be assumed to have a properly maintained package.
|
| 141 |
|
| 142 |
#### Provide new services to packaging teams
|
| 143 |
|
| 144 |
Given that this infrastructure would have native support for packaging
|
| 145 |
teams, it would also be a good place to offer some standardized services
|
| 146 |
for them.
|
| 147 |
|
| 148 |
For example, one of the central tool for teams are their VCS and it can be
|
| 149 |
useful for teams to be able to monitor the state of their package in the
|
| 150 |
VCS. The [PET](http://pet.alioth.debian.org/) tool could be adapted,
|
| 151 |
integrated and made available to all teams by default.
|
| 152 |
|
| 153 |
#### Support alternate notification systems
|
| 154 |
|
| 155 |
Email is the only official media used to communicate information to
|
| 156 |
Debian package maintainers. If all the relevant mails are going through
|
| 157 |
a central service, it's possible to store those emails and to forward
|
| 158 |
the relevant information by other means (RSS, XMPP, IRC, etc.). Also
|
| 159 |
new maintainers can then have access to some historic information
|
| 160 |
that used to be private for no good reasons.
|
| 161 |
|
| 162 |
|
| 163 |
High-level design of the new infrastructure
|
| 164 |
-------------------------------------------
|
| 165 |
|
| 166 |
### Fixing the flow of information
|
| 167 |
|
| 168 |
In order to cleanly solve the problem of the information flow, and to get
|
| 169 |
rid of the hacks made everywhere to send a copy of the mails to the PTS,
|
| 170 |
packages would be (progressively) modified to indicate
|
| 171 |
“Maintainer: <source>@pkgmaint.debian.org” in their control file.
|
| 172 |
The current content of the field would be moved to the “Uploaders” field.
|
| 173 |
|
| 174 |
Until all packages have been converted, the PTS would forward copies of
|
| 175 |
the mails to ensure that the new infrastucture can still be used for all
|
| 176 |
packages (even those who have not been updated yet).
|
| 177 |
|
| 178 |
Using this intermediary address also solves the problem of maintainers who
|
| 179 |
orphan their packages and are still listed as maintainers in many released
|
| 180 |
packages.
|
| 181 |
|
| 182 |
QUESTION: It would be cleaner if DAK, the BTS, and all relevant services,
|
| 183 |
could stop sending mails to the Maintainer field, and would instead always
|
| 184 |
send the mail to the new infrastructure. That way we wouldn't need to
|
| 185 |
change the Maintainer field and there would be no transition period.
|
| 186 |
|
| 187 |
The new infrastructure would then be configured with initial subscriptions
|
| 188 |
for emails listed in Maintainer fields (except for mailing lists, since
|
| 189 |
the infrastructure aims to replace them).
|
| 190 |
|
| 191 |
### Leveraging UDD
|
| 192 |
|
| 193 |
At least the PTS has been parsing Sources/Packages files by itself, as
|
| 194 |
well as a bunch of other source of information. But many of the most
|
| 195 |
recent developments have piggy-backed on UDD to retrieve the information
|
| 196 |
needed, leaving to UDD the responsibility of bringing all the information
|
| 197 |
in a single place.
|
| 198 |
|
| 199 |
This principle should be generalized to avoid duplication of work and to
|
| 200 |
make sure that all the important information are available in UDD.
|
| 201 |
|
| 202 |
But we must make sure that UDD won't become a bottleneck. Either because
|
| 203 |
we have a local (live?) replicate of the database, or because we have
|
| 204 |
ensured that our usage of UDD is limited to batch tasks that are not
|
| 205 |
on the critical path for all the real-time user requests.
|
| 206 |
|
| 207 |
### Using a modern framework for web development
|
| 208 |
|
| 209 |
DDPO is implemented in PHP. The PTS uses a mix of Perl, Python, XSLT and
|
| 210 |
shell scripts. While both works very well and are reliable, the diversity
|
| 211 |
of the tools and the fact that some are not widely known (e.g. XSLT)
|
| 212 |
seriously limit the set of contributors who are able to hack on all the
|
| 213 |
parts of the infrastructure.
|
| 214 |
|
| 215 |
With a modern framework for web development, we enlarge the set of people
|
| 216 |
who are able to help us develop and maintain this infrastructure. It also
|
| 217 |
offers us a proper separation between presentation and code, so that it's
|
| 218 |
easier to let web designers integrate this service with the general
|
| 219 |
look&feel of the various Debian websites. On top of this, we get a fully
|
| 220 |
internationalized website for free.
|
| 221 |
|
| 222 |
### API for data export
|
| 223 |
|
| 224 |
If the infrastructure is going to have a central role, there will be
|
| 225 |
requests to extract data out of the system. We should cater for this by
|
| 226 |
providing a public API (over HTTP) allowing to retrieve all the (public)
|
| 227 |
information in some standardized manner.
|
| 228 |
|
| 229 |
JSON seems to be a good option for data export. It allows other services
|
| 230 |
to reuse information from the DPMH, and it makes it easy for various
|
| 231 |
web services to retrieve the information dynamically via Javascript.
|
| 232 |
|
| 233 |
### Native support of packaging teams
|
| 234 |
|
| 235 |
Any Debian Developer must be able to create a "packaging team" in the
|
| 236 |
system. Each packaging team has a set of packages that it maintains (or
|
| 237 |
keeps an eye on). Anyone can "subscribe" to the team and gets (by default)
|
| 238 |
all correspondance of all packages associated to that team.
|
| 239 |
|
| 240 |
The team subscription can be tuned (much like the current PTS subscription)
|
| 241 |
to receive only a subset of the usual mails. A direct package subscription would
|
| 242 |
take precedence over a team subscription, thus allowing the user to
|
| 243 |
exclude some packages from its team subscription (or get more info for
|
| 244 |
some specific packages where they are particularly interested).
|
| 245 |
|
| 246 |
|
| 247 |
Implementation details
|
| 248 |
----------------------
|
| 249 |
|
| 250 |
Questions:
|
| 251 |
|
| 252 |
* How do we store emails? For how long? (we store all mails except the BTS mails)
|
| 253 |
* What language and web framework? (buxy's default choice: Python & Django)
|
| 254 |
* How do we authenticate users? And for DD super-powers?
|
| 255 |
* [To be completed]
|
| 256 |
|
| 257 |
Acronyms
|
| 258 |
--------
|
| 259 |
|
| 260 |
* DPMH: Debian Package Maintenance Hub (this project)
|
| 261 |
* DDPO: [Debian Developer's Packages Overview](http://qa.debian.org/developer.php)
|
| 262 |
* PTS: [Package Tracking System](http://packages.qa.debian.org)
|
| 263 |
* BTS: [Bug Tracking System](http://bugs.debian.org)
|
| 264 |
* UDD: [Ultimate Debian Database](http://udd.debian.org)
|
| 265 |
* DD: Debian Developer
|
| 266 |
* WNPP: [Work Needing and Prospective Packages](http://www.debian.org/devel/wnpp/)
|
| 267 |
* RFH: Request For Help
|
| 268 |
* RFA: Request For Adoption
|
| 269 |
* O: Orphaned
|
| 270 |
* NMU: Non-Maintainer Upload
|
| 271 |
|
| 272 |
Changes
|
| 273 |
-------
|
| 274 |
|
| 275 |
* 2011-01-13: Initial draft by Raphaël Hertzog.
|
| 276 |
* 2011-01-28: Integrate feedback from debian-qa@lists.debian.org.
|