Launchpad Report for 2006-03-31

Christian Robottom Reis kiko at async.com.br
Tue Apr 4 23:11:35 BST 2006


Just when you thought it was safe to go home! Here's a report of changes
for the second, third and last weeks of March. Apologies for the delay
in sending this report out; this month included a sprint in Launchpad
that threw the scheduled reports slightly off.

The changes listed below were running in production as of Monday morning
at revision 3354 with the following revisions cherry picked in: r3358,
r3362, r3373, r3382.

Extraordinarily this week there was a new rollout done on Tuesday to fix
a few showstoppers on the SFTP server side of things; I'll send out
another report this week that accounts for that.

Important user-visible features or fixes are marked with exclamation
points; other highlights marked with a star.

----------------------------------------------------------------------

Highlights
==========
The list of highlights over these three weeks is too long to list! An
amazing amount of activity happened over the past three weeks, in
particular, during and after the Launchpad sprint.

* On the Malone front, bug watches, branch registration, simplified
  editing and mail notifications are the hot topics. 

* Rosetta had a large number of solid improvements to the import and
  export workflow, and a number of long-standing bugs in this area were
  fixed and placed in production.

* The support tracker now allows setting up contacts to be notified when
  new requests are placed, which was a major requirement for serious
  community support.

* The Soyuz production branch was landed in rocketfuel, greatly
  simplifying the work done in maintaining it. A number of improvements
  and UI fixes were applied to it as well.

* The SFTP server was deployed, allowing people to push branches to
  bazaar.launchpad.net.

* So many infrastructure improvements were made it's hard to highlight
  them: the fix for the Retry top-crasher, XML-RPC support and SQLObject
  prejoining are among the most important.

* The performance work done over this month and the last have brought
  Launchpad to a significantly better level of service.

* I'm going to stop listing improvements now because there are really too
  many to be singled out -- read the exclamation points below if you are
  interested!


Malone
======
! Malone now offers the ability to register bzr branches as fixes for a
  bug. This allows a developer to specify what branch is being used to
  fix a certain bug, and provides a way to track status of that branch
  (bradb, ddaa).
! The second part of bug watch improvements was landed: syncing of
  statuses with Bugzilla bug watches now works as expected, and bugtasks
  that are linked to active bug watches are read-only in the bug pages
  (spec BugWatches, BjornT)
! It is now possible to alter the status of a bug in the main bug
  page; this was by far the #1 user request for Malone and the feature
  makes it a lot easier to update one or more bugs as a set (mpt,
  bradb).
! Mail notifications done by a single person are now batched in 5-minute
  chunks; this should reduce the amount of bug mail Malone sends out to
  end-users, and allows us to capture bug history in a more structured
  format. The bugmail format was also modified to improve batched
  display (BjornT)
* Changing milestones on bugs is now restricted to distribution and
  upstream owners (bradb).
* The code that does comment formatting was updated to further attempt
  to avoid destroying preformatted text (bug 3002, mpt).
* The new buglist format and the advanced search form now include the
  original sort widget (bug 35478, bradb).
* The batch size was tweaked in the production configs to render
  listings with a larger number of bugs (stub).
* Bug listings no longer include Fix Released bugs by default (bug
  34046, matsubara).
* Bugs no longer have short descriptions; they have been merged into
  the main description when they were relevant (mpt).
* Filtering bug queries by component is now possible (bug 33342, bradb).
* Navigation in bug listings was moved to the left, consistently with
  the rest of Launchpad (bradb).
- Personal bug listings now correctly allow searching for specific
  statuses (matsubara).
- Distribution buglists no longer crash when including bugs with no
  source package indicated (bug 33862, BjornT).
- Nicknames are now correctly checked for uniqueness (bug 33904,
  matsubara).
- Remote bug watches have whitespace stripped around them when entered
  by the user (part of bug 34105, BjornT).
- Clearing out the source package of a bugtask no longer fails (bug
  34235, BjornT).
- Using teams with no contact addresses as bug contacts no longer
  crashes (bug 34238, BjornT).
- The message when viewing a bug in a context for which it is not
  reported was improved (bug 30958, mpt).
- We now provide direct links to remote bug watches (bug 29851, mpt).
- The BugTaskSet searching code was unified to avoid duplicating the SQL
  code related to bug privacy (kiko).
- The target milestone layout on the advanced search page was fixed (bug
  36411, bradb).
- Bug menu items were fixed on the bug editing page (bug 32269, mpt).

Rosetta
=======
! Newline character handling in Rosetta was revamped; it now correctly
  handles the various different "standard" newline indicators,
  normalizing the format entered by the end-user, and warning when
  encountering content that is inconsistent (bug 1681, carlos).
! The translation import queue was reimplemented, and many translation
  export fixes were made to the export code. This was a major change in
  the Rosetta infrastructure that allows processing a large number of
  imports and exports in faster and less error-prone manner. The new
  queue now implements filtering options and algorithms that attempt to
  minimize the manual work to be done (bug 33020, carlos).
! Handling of Big5 -- and other encoding formats that can include bytes
  which are literal escapes -- was fixed by converting to UTF-8 early in
  the Rosetta parser (jamesh).
! When parsing a translation file that lacks a proper header we now
  raise POSyntaxError instead of crashing miserably. This was the second
  most common crash when importing new translations (bug 1892, carlos).
! When exporting a translation file, if we are unable to encode the file
  using the declared character set, we now export to UTF-8. This works
  around the fact that many translation files have incorrect character
  sets indicated, and it also accommodates for Rosetta translations that
  include extended characters (bug 1572, carlos).
* A bug that caused fuzzy translations to be accepted as official in
  certain circumstances was tracked down and fixed; it related to
  SQLObject-level caching (bug 1660, carlos).
* Language packs are now always exported in UTF-8 format (carlos).
* A crash in the translation page related to verification of plural
  forms was fixed (bug 31381, matsubara).
- A bug that caused subsequent imports issued by the same person to be
  ignored was fixed (bug 36044, carlos).

Support
=======
! Distributions, source packages and upstream products now offer the
  ability to indicate support contacts, who are automatically subscribed
  when new support requests are filed. This allows the support tracker
  to be used much more effectively, providing support communities with a
  notification system to enhance their work (BjornT)

Soyuz
=====
! The Soyuz production branch was finally landed in production. This was
  a heroic review and code update effort that can not unnoticed: a diff
  of over 15,000 lines was analyzed and reviewed; tests were added; code
  was fixed; fixes from tip were backported; eye and hand were not
  spared getting this done, but in the end it was done -- and all
  rejoiced (cprov, Kinnison, jamesh).
! The second, final part of the initial mirror management feature was
  implemented. This includes the script for probing mirrors and
  verifying how up-to-date their content is, along with a host of other
  fixes to the code (spec MirrorManagement, salgado)
* The personal package page was further improved: it now displays in two
  columns, allows in-table sorting, and displays only the latest version
  uploaded of all relevant packages in the same table; this reduces the
  general size of the page while still displaying the information that
  is most useful to the end-user (kiko).
* A number of UI improvements to Soyuz were implemented, including a
  web view into the upload queue, improvements to the build queue pages,
  and more (cprov).
* The change-override tool was fixed (cprov).
- The package search page no longer returns results in multiplicity (bug
  35905, kiko).
- Traversal was fixed to binary package releases that are not in the
  PUBLISHED status (bug 36208, kiko).
- The binary package publishing history listing no longer crashes when
  displaying packages with removals requested (bug 32605, kiko).
- A minor traversal issue was fixed for DistroReleaseBinaryPackage
  (kiko).
- The distribution page no longer offers a link to Change Members if the
  user does not have the permissions to (bug 1001, mpt).

Specifications
==============
! A large number of improvements were implemented in the specification
  tracker. This includes the ability to target specifications to
  distribution releases and upstream product series, based on a
  nomination and approval system. The new system allows one to track
  implementation of the specification separately from its elaboration
  and approval. Sorting, filtering, menus and the layout of the
  specification listings was also improved. (mark).
! The specification tracker now implements an email listener that
  forwards notifications sent by a specification hosting system (such as
  Moin) to the specification's subscribers (BjornT).
! Email notifications are now sent out to related people when changing a
  specification (BjornT).
- Requesting feedback twice for the same person no longer crashes (bug
  29934, matsubara).

The Bazaar (Code)
=================
! The code for the SFTP server was finally integrated and deployed to
  bazaar.launchpad.net. This allows end-users to push bzr branches to
  this location, and Launchpad will pick up and display changes to these
  branches publically (spec SupermirrorFilesystemHierarchy, spiv).
* It is now possible to fetch a branch by URL, and the branch's URL is
  now a unique identifier for it; this allows us to use URLs to identify
  branches throughout Launchpad (ddaa).
- The branch scanner now correctly detects and handles uncommits (ddaa)
- Branch listings were improved (ddaa)
- Page titles for branches were updated to properly handle branches with
  no title (ddaa)

Launchpad
=========
! Launchpad now offers a default 2-column template, with one column of
  portlets and the main content area expanding to the right. This change
  allows us to accomodate tables well and also promotes better
  accessibility for clients with reduced browser widths. A number of
  pages have been or are in the process of being converted to this
  template (mpt).
! Karma values are now normalized per category: this means that the
  maximum karma available from working on Malone and Rosetta is the
  same; this should make for a more level playing ground, and it rewards
  people that work across multiple appliations (stub).
* Karma is no longer calculated for teams (stub).
* Given and family name columns, largely unused, were removed from the
  Person table (stub).
* The code of conduct pages were reworked to make their meaning
  clearer to end-users (part of bug 31933, mpt).
- Error pages now correctly indicated that the word "bug" needs to be
  included when emailing the system-error address (mpt).
- Adding events to the top-level calendar no longer crashes (bug 2112,
  matsubara)
- A broken "Unsubscribe to Bounty" link was removed (mpt).
- Menuitems for support requests and people were simplified (mpt).
- We no longer explicitly suggest registering a new product when
  searching for a product fails. The product search results were also
  reformatted slightly (mpt).
- The team page no longer offers a link to edit Members if the
  user does not have the permissions to (bug 31839, mpt).
- The FOAF RDF export now includes a correctly-calculated mbox_sha1sum
  (bug 35198, stub).

Infrastructure
==============
! Retry exceptions, the single most recurring cause of crashes, are now
  properly handled in the Zope publisher code (bug 31478, stub).
! The upgrade to PostgreSQL 8.1 was completed, giving us further
  improvements in locking and performance. This upgrade required minor
  updates to our test and database schema code (stub, SteveA).
! An SQLObject feature that allows for selective optimization through
  premeditated joining and caching was implemented. This feature allows
  us to dramatically reduce the number of queries issued against the
  database in most cases, reducing and eliminating timeouts in all but
  the most severe cases. This optimization was applied to all
  problematic pages in Launchpad, and a very small number of pages now
  remain as performance issues (spiv, kiko).
! XMLRPC support was added to the Launchpad infrastructure, making it
  very easy to offer public APIs through a browser class. This will
  allow building very useful external APIs with minimal developer
  effort. Navigation components were additionally made available to the
  XMLRPC request object (SteveA).
! The standard error message display Launchpad offers was significantly
  improved; there are now distinct notification styles for error,
  warning, informational, and debug messages (mpt).
! Client-side certificates are no longer negotiated for any of our
  sites; this fixes an issue that caused some users and some browsers to
  be unable to access the Launchpad sites (Znarl).
! PQM was revamped to include progress output and filter submissions
  according to which project it is servicing. Test output was also
  modified to output incrementally to better support this feature
  (lifeless, stub).
* The batch navigator API was refactored, reducing the amount of work
  necessary to implement batching, and avoiding duplication and
  confusion in handling its arguments. Much refactoring and optimization
  was done, and a number of smaller bugfixes were also implemented. All
  callsites were updated to use the new API (bugs 33290, 1235 and
  others, kiko).
* The hang-detection logic in our test runner infrastructure was
  previously inverted, which caused it to never actually kick in. This
  is now fixed (spiv).
* Full-text search quoting was fixed to handle a number of special
  symbols (bugs 32071, 33920, stub).
- We now try harder to avoid leaving signal handlers behind when tearing
  down test cases (spiv).
- The librarian now calculates MD5 sums for files stored in it; this
  implements a requirement for implementing PersonPackageArchives
  (spiv).
- SQLObject now copes with single-column tables (bug 35952).
- The ZODB was completely disabled and references to it removed, in an
  attempt to avoid threading deadlocks in production (SteveA).
- dbschema items now include a sortkey field that allows specifying an
  integer value for sorting dbschema items (SteveA).
- Menus now have a request instance variable, like views do. This allows
  creating dynamic menus (SteveA).
- The duration of the entire request, instead of just SQL time, is now
  properly reported in OOPS reports (jamesh).
- A minor fix to count() queries on set operations was implemented
  (kiko).
- SelectResults.__nonzero__ only issues one query now, and avoids
  including any prejoined columns, which are irrelevant to it (kiko).
- The distrorelease vocabulary no longer uses the object database ID to
  refer to the object, fixing its use in autogenerated forms (carlos).
- The GeneralFormView now includes facet support (mpt).
- A number of validation functions were cleaned up (matsubara).
- Queries on alternate IDs now cause SQLObject to issue only one query,
  caching the result, instead of two (spiv).
- The sqlvalues function now correctly handles SQLObject and DBSchema
  items (kiko)
- All SQLObject tests now pass, and are now required when merging
  SQLObject code into RF (salgado, spiv).
- The backported, intelligent version of SQLMultipleJoin was now added
  to all database classes that still used the old version, which is a
  performance enhancement on many levels given that the old version
  issued a large number of queries when joining (bug 33625, matsubara)
- The system gettextpo library is used instead of our copy of it; we
  used a copy because it contained updates that have now been rolled
  into the released versions (jamesh).
- shortlist() now correctly indicates what callsite is using it
  incorrectly (stub).
- Database diagrams were updated (stub).

Upcoming Changes
================
- ShipitForDapper (salgado)
- POMsgSetPage (carlos)
- Fixes for session concurrency crashes (stub)
- launchpad-server and launchpad-developer packages (jblack, jbailey)

Planned Changes
===============
- Zope 3.2 update (stub, SteveA)
- CrowdControl (SteveA)

-- 
Christian Robottom Reis | http://async.com.br/~kiko/ | [+55 16] 3376 0125



More information about the launchpad-users mailing list