3

Automatically import files to Launchpad using product release finder

Published by Curtis Hovey July 24, 2009 in Cool new stuff, Projects

Launchpad has a little known feature that is getting better. The product release finder is a process that runs everyday to locate new releases and import them to Launchpad. The process uses the series’ Release file pattern to locate files and import them to the appropriate release. It can even create releases for series. The process is robust and worth consideration if you want to upload large release files for your project.

The project owner and series release manager can set the Release URL pattern by the series edit page. The pattern is an ftp, http, or https URL with a glob (*) in the part of the file name that varies with each release for a series. For example:

http://widgets.dom/downloads/widget-2.*

describes all files that start with ‘widget-2.’. This might be the source for two different releases, widget-2.1.tar.gz and widget-2.2.3.tar.gz. The pattern will also match multiple files that belong to a single release, such as widget-2.1.tar.gz, widget-2.1.zip, widget-2.1.changelog.

Many projects choose to group files in series in a directory of their own, in which case the Release URL pattern would look something like:

http://widgets.dom/downloads/2.8/*

You can tell the product release finder to search multiple directories by using a glob for a directory. For example, if your project separates release files in directories for each OS then you can try

http://widgets.dom/downloads/*/widget-2.*

to scan downloads/ubuntu/widget-2.* and downloads/mac/widget-2.*.

Be careful to include the common part of the series in the URL, otherwise files from different series will be imported to the wrong series. Do not do something like:

http://widgets.dom/all-releases/*

because any file that looks like it has version information in it will be imported to one series.

In all cases, the product release finder will extract the version from the file name, and match it to a milestone name. It will create the milestone and release it if necessary. If a version cannot be extracted, the file is ignored.

The version numbers extracted from file names conform to Launchpad URL name rules. So if your release files have underscores or pluses in their version names, dashes will be substituted. Flavour information is also ignored in the file name. For example these file names yield these versions:


emacs-21.10.tar.gz => 21.10
vpnc-0.2-rm+zomb-pre1.tar.gz => 0.2-rm-zomb-pre1
warzone2100-2.0.5_rc1.tar.bz2 => 2.0.5-rc1
furiusisomount-0.8.1.0_de_DE.tar.gz => 0.8.1.0
glow-0.2.1_i386.deb => 0.2.1
Bazaar-1.16.1.win32-py2.5.exe => 1.16.1

What’s Next

The product release finder should notify owners and release managers when there are problems with imports. A lot of problems were fixed recently, but there are two issues we are still seeing in the logs that indicate the Release url pattern must be updated for some projects. The product release finder cannot access the server or directory in some of the URLs. There are also a few URLs that have no glob. They appear to be the URL to a single file, where a glob is needed so that the series can have many releases. If the product release finder does not find your files after a few days, review the Release url pattern and check the remote site to verify they are fine.

We will update the UI to make the Release url pattern more prominent, and easier to set for each series.


0

Answer contacts can assign questions

Published by Curtis Hovey July 23, 2009 in General, Projects

Launchpad has supported assigning questions to users for several years, but the privilege was limited to project owners. This meant the feature was rarely used. Since the feature was also not visible, answer contacts often requested that we develop the feature. Question listing now include the assignee column. Answer contacts can assign a question to a user via the edit page. The assigned user will receive a notification about the assigned question. An assigned question will never expire; the assignee is obligated to answer the question.

The launchpad team had considered removing this feature two year ago because it was not popular. There were a few users who explained the need to assign questions to knowledgeable or privileged answer contacts. Simply put, the problem was not that assignment was unwanted, but that it could not be used by the people who needed the feature. The Launchpad team did not really understand how users were trying to use Launchpad until we decided to take turns answering every question asked to the launchpad project. We soon understood the need to assign questions to users. There are many questions that can only be answered by one or two people. The assignment must be visible to everyone, otherwise you would spend an hour reviewing open questions that were already assigned to someone. The cruelest part of assignment that that the assignee was never told that he has a task to complete.

This situation was especially frustrating for me because Answers is the application I started working on when I joined the Launchpad team. I knew that I could fix the issues in a few hours of work. Answers however, is not an application we are developing at the moment, I could not work on it during work hours. So I decided to fix the assignee feature on a Saturday. I could do this because the Launchpad on-call reviewer cannot easily say no to a merge request for a branch. I was also pretty certain my branch would be accepted because the reviewer is also answer contact who has experienced the assignee problems too.

The on-call reviewer rule is in place to ensure every patch is reviewed and given an opportunity to merge. This rule applies to everyone. Some Launchpad users have submitted patches for Launchpad pages and scripts and we have reviewed and merged them. Launchpad is now open source. You too can submit a branch knowing that someone must review it. Many of the Launchpad team members hack on Launchpad on our own time because we love Launchpad. Yet we still cannot fix every bug, or implement every feature. There are a lot of bugs that can be solved in a few hours work. If you want help to close a issue that you care about, we can help. Again the on-call reviewer is obligated try to advise on implementation issues. Also, Launchpad developers prefer to have pre-implementation plans to ensure that when someone decides to start a branch, it can be completed in less than two days and will be accepted by a reviewer. Someone on the #launchpad-dev channel on freenode can help.


12

Focusing on the Launchpad UI

Published by Martin Albisetti July 22, 2009 in Coming changes, General

Now that we’ve released Launchpad’s source code, our next couple of months of work are going to be mostly focused on our page layouts.
Launchpad has been around for quite a few years now, and tight release schedules packed with ever-changing features have had the side effect of us ending up with a lot of pages with different layouts.
In the next 2 months, we plan to fix that, and make sure every single page in Launchpad (452 templates!) has our new “3.0 look n’ feel”.
What does that look like, you may ask yourself?

Well, we’re still working on it, as we’re going to change the UI for the navigation (as well as tweak it’s functionality a bit, more on navigation in a future post). We do have rough draft which we’re starting to work towards, figure out what works and what doesn’t with real data, things we didn’t think about, etc.

The first major page we’re converting is the project overview page, currently being worked on by the world famous Curtis Hovey, and the initial draft should look similar to this:

It’s important to note we’re still working on the UI, so the image above is our starting point rather than the end product.

Since it will take some time to make all the changes, we’re most likely not going to make a Launchpad release in August, and jump straight to September. Roll-outs to our edge server will continue to happen daily, and we’ll need your feedback on the changes more than ever. If you’re interested in helping us, just join the beta testers team.

Exciting times!  đŸ™‚


48

Launchpad is now open source.

Published by Karl Fogel July 21, 2009 in General

This is a post I’ve been looking forward to for a long time:

Launchpad is now open source!

We released it today under the GNU Affero General Public license, version 3. Note that although we had previously announced that we’d be holding back two components (codehosting and soyuz), we changed our minds: they are included — all the code is open.

Big congratulations (and thanks) to the Canonical Launchpad team, who worked overtime to make this happen sooner rather than later, and to Mark Shuttleworth, whose decision it was to open source Launchpad in the first place.

Rather than repeat the various release announcements, I’ll just point to them:

The Canonical Launchpad developers will be on IRC in channel #launchpad-dev on irc.freenode.net. That’s the place to go for real time development discussion and questions. For usage issues, #launchpad is still the place, as before.

The mailing list is launchpad-dev {AT} lists.launchpad.net, which you can subscribe to by joining the ~launchpad-dev team. Again, that’s the development mailing list; user questions should still go to launchpad-users {AT} lists.launchpad.net.

Please bear with us as we learn how to be an open source team. Many of the Launchpad developers have open source experience already, of course, but as a team we’ve been working on Launchpad in-house for some years. This is a big change. We’ve been looking forward to it, though, and are ready and eager.

That’s all. Happy hacking :-).

-Karl Fogel


2

Git imports

Published by Jonathan Lange July 8, 2009 in Bazaar, Code

As you might have heard already, Launchpad can now import code from Git repositories. You can then create Bazaar branches of those Git repos.

For example:

bzr branch lp:git

Thanks to Jelmer for bzr-git and Michael & Paul for tying it into our rock-solid import system.


4

Launchpad privacy policy update

Published by Matthew Revell July 1, 2009 in Notifications

We have added a paragraph, concerning the location data on Launchpad user profile pages, to the Launchpad privacy policy’s “Submitted data” section. That section now reads:

“Launchpad users may add information about themselves via their Launchpad accounts and or their personal pages. This information may assist Launchpad in providing services to the contributor such as email notifications of changes to bugs, projects, teams, etc..

“Your Launchpad account has the option to store a location for you and to display it on your profile page. Until you set that location yourself, other registered Launchpad users can set it on your behalf. Once your location is set, you can hide it from other users.”

View the full privacy policy.


1

Release planning

Published by Curtis Hovey June 29, 2009 in Projects

Over several months, we have released many small improvements to the project series, milestone, and releases pages to make release planning easier in Launchpad. Well, not all the changes were small. Some were subtly disruptive. Here is an explanation if what happened that I hope will give you ideas of how we can make more improvements.

In November of 2008, Barry Warsaw and myself sprinted with Martin Albisetti to plan the Registry features for Launchpad 3.0. Martin was very insistent that we make series management easier for developers. He proposed a timeline to visualise the past and future of lines of development. You can see the first draft of this feature on the project page now. We are adding it to the series page and the series timeline page (which has always claimed to be a timeline even though it did not present one) for the next release.

I realised during the discussion of how to make the timeline that I did not like the series page, or the milestone and release pages. They looked like historical documents, they were not tools that helped me plan releases.

The immediate problem was that milestones were disconnect from releases, the former must lead to the latter. Even if your project does not use milestones for planning, the information of the milestone is implicit in the release. The release is a device for holding the release notes and the release files, all the other information is the milestone. We made the milestone the primary artefact of the series…milestones may existing long before a release, and not every milestone leads to a release. Creating a release is really an event at the conclusion of the active life of a milestone. We still permit projects to create a release directly from the series page, but you must select the milestone that is being released. If the milestone does not exist, you can create it at that moment. There is no additional work in this process; the milestone fields are the same fields that the release duplicated.

By creating a single page to present the milestone and its release, it became easy to see the planned and achieved work. The page initially shows all the bugs and blueprints targeted for the milestone and you can see the state of each one. When the release is created, the milestone is deactivated (bugs and blueprints cannot be targeted to it any more) and the release note and files are displayed.

The series page now shows the milestone and releases for the series. You can see a summary of all the work targeted to the milestone. You can see which milestones have releases. Developers can see the location of bazaar branch where they can make contributions. Distro packages are listed for distro maintainers and curious users. Adding a milestone to a series is very easy, adding many is easy too.

These pages make my job easier. They are now tools. They could be better though. Martin pressed me into adding the counts of bugs and blueprints in each status for each milestone to the series page. I can see now that they are very useful. I want to add this same summary information to the milestone page. I want to see a burndown chart on the milestone page. A burndown chart is a tool that compares the remaining work in a milestone to an ideal line to meet the milestone estimated release date. I want to know when progress is slow so that I can take action to meet my series’ schedule.

I decided to use the title of “release manager” for the driver assigned to a series. This is a UI improvement. I am a release manager, but I cannot create milestones or releases. Nor can I update these if I want to make a correction. I cannot effectively plan, nor can I create the objective of most of my plans. This sucks. I want to give the release manager the power to accomplish his objectives.

Please give this tools a try. Your feedback is appreciated, as too are your ideas for new features that make release planning easier.


1

Extra options when filing bugs

Published by Gavin Panella June 26, 2009 in Bug Tracking, Cool new stuff

You may have noticed that we introduced some useful new options when filing bugs. These are especially useful to anyone who files lots of bugs.

Something for everyone.

Everyone can now set tags when filing a bug. Previously, only people going via the advanced bug filing page would have the option.

One caveat: the tag field is not yet wired up with the magical tag auto-completer that you can use on the bug page itself, but that’s coming.

Something for bug supervisors.

If you’re filing a bug against a project for which you’re a bug supervisor, some additional fields appear in the new Extra options area (which is collapsed by default, but can be expanded by clicking on it). There are options to let you to set the initial status, the importance and the milestone of the bug, and also assign it directly to someone to work on.

If you have any problems with these new features, please file bugs against Launchpad Bugs, or talk to the help contact in #launchpad on freenode.


2

Series dashboards

Published by Matthew Revell June 24, 2009 in Cool new stuff

Up until now, series overview pages have offered a historical overview of a series. Today, we’ve released our new series overview pages that work much more like a dashboard for people driving a series.

Before we look at the new dashboards, let’s clear up some terminology: to clarify the difference between the roles, we’ve changed the name “series driver” to the more familiar term “release manager”. Most projects use series as lines of development that result in one or more releases and so it makes sense to reflect that in the role’s name.

Project drivers remain as they are.

So, back to the new series dashboards: take a look at the page for Drizzle’s trunk series and you’ll see that the page now has a whole load of information that makes it easier to see the current state of that series. Perhaps of most interest is the Milestones and releases section.

Bugs and blueprints in the milestone section of Drizzle's trunk series dashboard

At a glance, you can see how much work is planned for the series’ upcoming milestones and the progress being made with those blueprints and bugs.

Further down on the page you get links to the series’ mainline Bazaar branch and details of packages associated with the series.

If you’re a series release manager, let us know what other information you’d find useful on the series dashboards.


4

Searching bugs with tags now with wings!

Published by Gavin Panella in Bug Tracking

Even if you’ve been living on Earth, you could be forgiven for not knowing about the richer tag syntax in the advanced bug search (e.g. in Bugs in Ubuntu: Advanced search), frankly because it’s very new and it’s not mentioned anywhere in the UI (yet). There are two additions to the syntax that a handful of hardcore Launchpadders have been yearning after for some time.

First up, you can search for bugs with any tag, doesn’t matter which, and for bugs with no tags. To search for the presence of one or more tags, use “*” (asterisk) in the query, and to search for the complete absence of tags, use “-*” (minus asterisk).

Secondly, you can search for the absence of a specific tag. Simply prefix the tag with a minus, e.g. “-toaster”.

You can combine these new forms as well. For example, to search for bugs with no tags at all or with no crumpet tag, you could search for “-* -crumpet“, making sure the Any radio button is selected. Everybody needs crumpets!

Have fun!

If you run into any problems, please report the bug in Malone.


Previous Entries
Next Entries