Title "Automate It All"
Student Nirbheek Chauhan
Mentor Stephen Anthony Klimaszewski
Abstract
A few statistics:
Gentoo currently has 12462 packages, 24473 ebuilds[1] and 254 devs
with 43 "away"[2]. Besides these, there are 2600 ebuilds sitting
maintainer-wanted in bugzilla[3]. A conservative estimate of the
current workload on developers comes out to 12500/250 = 50 packages
per developer.

This workload is more than enough to burn out even the most active dev
in no time. This instead leads to orphaned packages, under-maintained
packages, and in general reduces the level of QA an ebuild goes
through.

Two particular examples of tedious and potentially automatable tasks
the student came across were:

1. Having to manually recompile all the reverse deps of xulrunner to
test for breakage with xulrunner-1.9[4].
2. Seeing hundreds of bugs being filed for a missing pkgconfig
dependency[5] which had a trivial fix.

Most developers have neither the time nor the energy to maintain
dedicated chroots for testing. To make matters worse, the current
system makes collaboration between developers very difficult since
there is no central place where all the resources can be shared,
statuses of the packages viewed, etc.

This project intends to create a webapp cum framework which eases the
workload of developers by providing them with an infrastructure that
allows them to queue jobs which can then be pulled from the server by
slaves, completed, and the results sent back. These jobs can be
extremely flexible in nature since the maintainer will have very few
restrictions on what he wants to do in the executables he uploads.
This will result in the automation of a maintainer's tasks to a great
degree.

Sample Use Cases:
- A library is upgraded. Packages that rdep on it can be auto-checked
  for breakage, and [Tracker] bugs automatically (after maintainer
  double-checking) generated in Gentoo Bugzilla.
- Dependencies can be auto-verified for accuracy. Examples include
  missing depends, incorrect versions, incomplete deps
  (built_with_use), etc.
- Arch-testing can become faster -- devs who don't have time to sit
  and do testing can just setup a slave (minimal configuration
  necessary) on their machine and pull jobs queued by other devs in
  the arch team.
- Devs can use/write app-specific test scripts to verify that a
  package works. Perl modules which usually have an inbuilt `make
  test` are a good example.
- Sane binpkg maintenance will become feasible -- bug 473[6] can then
  finally be closed.

1. http://gentoo-portage.com/Newest at 17/03/2008 12:03 GMT
2. http://www.gentoo.org/news/en/gmn/20080317-newsletter.xml
3. http://tinyurl.com/39dxwm
4. https://bugs.gentoo.org/show_bug.cgi?id=213296
5. http://tinyurl.com/2jmg2z
6. http://bugs.gentoo.org/show_bug.cgi?id=473