The old Harvest was more of a proof-of-concept work than a system that was really usable. The code was unmaintainable and the UI did absolutely not scale, both in terms of accomodating the mass of opportunities and in terms of new requirements. Now that Harvest is ported to Django we can think of a new UI that is more flexible and accomodates desired common work scenarios.


The concept behind Harvest is deemed very useful: import opportunities from various scripts that already being run regularly through a very simple .csv format. The problem we are facing is that the current UI is just overwhelming and does not actually make it easier to decide what to do next. It does not scale.

The UI needs a clever way of selecting certain types of opportunities and certain sets of packages depending on the interest of the user.

Another requirement is to be able to comment on opportunities that are not Launchpad bugs or come from lists that "read-only". An example of this is - it'd be great to know if contributors could annotate opportunities like this with "looking into it" or "requested sync from Debian which will fix it".

Also marking an opportunity as "irrelevant" never worked reliably with the old Harvest. This is important to get fixed, so we can get opportunities like "Fedora patches" off the list if we can't make use of them.

User stories

  • Daniel wants to sponsor a few patches. He can upload to all parts of Ubuntu. He logs into Harvest, picks Sponsoring and is all set.
  • S├ębastien is a Desktop guy, he just cares about Desktop packages. He logs into Harvest, selects Desktop packages and can see everything that "needs to be done".
  • Jonathan, a new contributor, knows a bit about packaging and Ubuntu maintenance work and has a spare hour. He uses Kubuntu, so picks Kubuntu. Finds out there is a new upstream version to be packaged. Curious to learn more he clicks on the "?" after the "upgrade opportunity" and is sent to a page explaining how to go about software updates.
  • Benjamin finds out about a Fedora patch of the xmms2 package. He checks it out and finds that it only applies to an older version of xmms2. He marks the patch as "irrelevant".

  • Ara has a few spare minutes and wants to contribute to Ubuntu development. She goes to Harvest, finds the "featured opportunity lists" and because it's the end of the cycle it lists upgrade bugs that need fixing. She finds a bug in the postinst of a package and fixes it easily.


Early mockup

Early mockup by James Westby:

Current mockup

This mockup (by Daniel Holbach) accomodates many of the use-cases we need:

  • selection of package sets
  • selection of opportunity types
  • commenting
  • marking opportunities as irrelevant
  • inline help for certain kinds of opportunities


UI Changes

Instead of a giant list of opportunities we will go for expanders that let you focus on the list of packages. Daniel Holbach's mockup shows how you can

  • better pick opportunities based on their type of opportunity
  • better pick opportunities based on the set of packages you're interested in
  • mark opportunities as irrelevant
  • comment on opportunities

Code Changes

The porting of the backend is already done, the expected changes in the UI part are:

  • add OpenID support through python-django-openid-auth.

  • pull in list of package sets in Launchpad
  • check list of packages the user is bug contact for
  • check list of packages that the user is allowed to upload
  • add 'featured' flag for opportunities which can changed by the admin depending on where we are in the release cycle
  • allow user to select certain package sets or certain opportunity types in the UI
  • to get inline help on certain kinds of opportunities, add field in the opportunity list schema
  • add comment field for opportunities, if they're not in Launchpad to indicate the status of the opportunity
  • add possibility to mark opportunities as irrelevant
  • add possibility to set the skill level of opportunities


Harvest's data is still being read from lp:harvest-data, even faster than it was in the old Harvest.

BoF agenda and discussion

The ugly ;-) old one:

The beautiful new mockups:

The new implementation is going to be developed in Django

=== The UI ===

=== Features ====

   * For indicate work is being done on the current opportunity or patch review

=== Current code for Harvest ===

bzr branch lp:harvest

== New Ideas ==
 - skill level: easy, medium, hard (set default per opportunity list)


Harvest/NewUI (last edited 2009-12-03 12:46:41 by i59F77634)