In this thread, I'll have ramblings about the new, next-generation backporting infrastructure. Major shortcomings I saw with Warty Backports were:
1.Can only have one backports developer. Any more, then sync would start overwriting and conflicting each others' changes. BOY, wouldn't that be fun? 2.Upload downtime. While uploading and committing changes, the repository would be in an inconsistent state. People would get mysterious Forbidden errors. 3.Circle of Trust / Integrity: There's no method of making sure that packages weren't tampered with. There's no bookkeeping of who MADE the backport. 4.Inefficiency of Backport Announcements: It took way too much effort to write a backports announcement. Sometimes, writing this takes longer than making the actual backport! 5.Inefficiency of promotions architecture. Too much of this process was MANUAL! I would like a user-friendly, automated promotions interface. 6.Lack of statistics. I'd like more detailed reports about backport usage than “200 downloads daily”. When's “off-peak” hours? Which packages are most popular?
The Solution: UBP-NG
This is going to be a PHP+MySQL driven, pseudo-web-based backports tree management protocol, with a versioning system backend. It solves all the problems above.
1.You can have multiple developers. Each one gets a login name via PHP and a CVS/Subversion account. Optionally, restrictive permissions may be imposed through CVS ACL's or Authz (I think). Hopefully, it won't be necessary to do so! Versioning systems are DESIGNED to prevent simultaneous-work conflicts. 2.The main download tree can synchronize with the CVS tree at preset times daily. Optionally, two trees may be available for download, and the download script rotates them for synchronization. In addition, the versioning system and the download tree will most likely be on the SAME SYSTEM, which means almost instant synchronization. 3.CVS/Subversion keeps logs of who's done what. On top of that, a checksum/hash will be made by the PHP script, whenever a backport in the versioning tree is registered with the web frontend. Only registered and checksummed packages will be permitted to download. Unregistered packages will cause a 404 error, packages that fail checksumming will cause a 500/Internal Server Error. Both will alert the backports tree maintainer. 4.Once a backport is registered with the frontend, there will be enough information in the database, so that info pages can be generated on-the-fly. For backport announcements, all a maintainer has to do is provide a link. 5.The Versioning System Tree won't hold the APT directory structure. It'll be generated on-the-fly, by the download script. The MySQL database will hold info about exactly what section (backports, backports-staging, extras, etc etc etc) a given package goes in. The PHP frontend will have a user-friendly interface to designate which sections contain which packages. 6.The download script will keep statistics about downloads.