Getting help with Launchpad
Published by Matthew Revell October 6, 2008 in General

Recent scene at Launchpad HQ
There are few things more frustrating than working on something and then being held up because you can’t get the help you need. I know this all too well: my quest for world domination has long been stalled because the sonic screwdriver help-line people never answer my emails.
With Launchpad, we’re trying something new to make sure you get the help you need. Each week day there’s a named member of the Launchpad team whose job is to answer your questions, whether in #launchpad, in Launchpad Answers, on launchpad-users or to help@launchpad.net.
This means that on top of the usual cast of Launchpad types in #launchpad, for eight or so hours each day you’ll have a named contact that you can ping for help.
You can see which person’s on duty by checking the Help Rotation page on the Launchpad help wiki and also by looking at #launchpad’s channel topic.
Let us know what you think of the new help rotation and how we can improve it.
Telephone operators photograph from Seattle Municipal Archives. Creative Commons licensed.
Launchpod episode 10 – API and bug plugins
Published by Matthew Revell October 3, 2008 in Podcast
Launchpod: the Launchpad team podcast!
Hosts: Matthew Revell, Graham Binns and Joey Stanford.
Theme: Obscurity by Barry Warsaw.
- 02.32: Leonard Richardson talks about the progress and scope of the Launchpad API.
- 13.45: Graham Binns talks about Launchpad’s plugins for Bugzilla and Trac, which allow bug comment history sharing across bug trackers>/li>
Send us your ideas and questions to feedback@launchpad.net!
Launchpad Code down-time Monday 6th October 2008
Published by Matthew Revell October 2, 2008 in Notifications
On October 6th Launchpad’s code hosting and browsing will be unavailable for around four hours from 22.00 UTC.
- Going offline: 22.00 UTC 6th October
- Expected back before: 02.00 UTC 7th October
During this down-time, the following services will be unavailable:
- pushing to, pulling and branching from Launchpad-hosted branches
- code browsing
- code review
- mirroring from externally hosted Bazaar branches
- imports from CVS and Subversion repositories.
Mirrors and imports will return to their normal schedule following the down-time.
Non-code hosting parts of Launchpad should be unaffected.
We’re taking these services offline to upgrade the hardware that powers Launchpad’s code hosting service. Not only will this help Launchpad handle the increasing increasing number of people using code hosting but will also enable us to introduce exciting new features in coming Launchpad releases.
If you have any questions or comments, please post them here.
This week in Launchpad’s web API
Published by Leonard Richardson September 26, 2008 in General
You didn’t expect it, but here it is. “This Week in Launchpad’s Web API” returns for one more week! This week we’re pleased to announce that you can now search the bug tasks associated with a project, project group, distribution, or milestone. We know a lot of people have been waiting for this feature.
>>> launchpadlib_project = launchpad.projects['launchpadlib']
>>> me = launchpad.me
>>> my_launchpadlib_bugs = launchpadlib_project.searchTasks(assignee=me)
The interface to searchTasks is very similar to the interface to Launchpad’s advanced search form. That fact should get you started searching easily.
The other bug news is that you can now post a comment to a bug by invoking newMessage on the bug.
Release files are now exposed through the web service. This means you can now integrate release management tools into Launchpad. When you do a release of your program, the same tool that packages the release can upload the release file to Launchpad and make a Launchpad release for it.
>>> series = launchpad.projects['myproject'].series[0]
>>> release = series.addRelease(
... version=new_item_name, code_name='sumo',
... summary='super new beta',
... description='The be-all end-all version for the next century.',
... changelog='Fixes security bug. Adds external support.')
>>> release.add_file(filename="release.tgz",
... file_content="[binary data]",
... content_type="application/x-gzip")
Finally, we’ve changed launchpadlib so that when you upload a file, you need to set the filename you want the file to have on the server side. Previously, there was no way to set the filename.
>>> release_file = release.files[0]
>>> filehandle = release_file.open("application/x-gzip", "new-filename.tgz", "w")
>>> ...
This week in Launchpad’s web API
Published by Leonard Richardson September 18, 2008 in API, Cool new stuff, General
This status report was put off until today because the edge site was frozen. This update is huge. We’ve made one change to launchpadlib, exposed a whole lot of Launchpad’s project registry, and published branches for the first time.
Since the development cycle is over, the next update will probably be in two weeks.
Where is everyone? Maps on profile pages
Published by Matthew Revell September 17, 2008 in Cool new stuff
Something I love about Launchpad is that I can quickly get a feeling for the people whose work I come across. Some of what you see on a Launchpad profile page is more geared towards knowing the person than their work.
We’ve added a bit more to that “getting to know you” part of the profile page with our new Google Maps mash-up. Now you’ve got the option of showing other people where in the world you are by flagging your location.
This is pretty cool for a bit of fun but when it comes to organising team meetings – in person or online – it becomes really useful. Take a look at the profile page for the Launchpad Developers team. On our team map you get a quick-glance feeling for where in the world members of the Launchpad team are.
Visit your profile page to set your location.
Karma for code reviews
Published by Matthew Revell in Code, Cool new stuff
The guys in the Launchpad-Bazaar integration team added code review to Launchpad earlier this year.
Now, when you take part in a code review it’ll count towards your Launchpad karma!
If you’re new to code review, take a look at my previous post.
Launchpad offline 22.00 – 23.59 UTC 17th September 2008
Published by Matthew Revell September 15, 2008 in Notifications
We’re releasing Launchpad 2.1.9 on Wednesday (17th September). During the roll-out of the new code, we need to take Launchpad offline for a short while. We allow a window of two hours.
Going offline: 22.00 UTC 17th September 2008
Expected back before: 23.59 UTC 17th September 2008
Keep reading this blog for the 2.1.9 release announcement!
Last week in Launchpad’s web API
Published by Leonard Richardson September 8, 2008 in API, General
Barry Warsaw, Francis Lacoste, and I gave an IRC chat about the Launchpad web service as part of Ubuntu Developer Week. There’s a transcript available in case you missed it.
The big news from last week is that we finally have the API documentation being generated whenever a new version of Launchpad is deployed. Whatever server your script is running against, the /+apidoc
URL will contain the reference documentation for that version of Launchpad. launchpad.net’s documentation will change when we do an official release of Launchpad, and edge.launchpad.net’s and staging.launchpad.net’s will be updated much more often, as our changes get pushed out to those servers.
But there’s more! I also added support to launchpadlib for access to the binary files hosted by Launchpad: mugshots, bug attachments, and so on. This is everything described in the reference doc as “a file resource.” If you upgrade launchpadlib, you can now access these files with a Pythonic file object interface.
The server side of this has been in place since we launched the web service, so in theory you could have been messing with uploaded files this whole time by writing a custom-built client. But only recently did I update the hacking document that makes it easy to see how to do this.
Finally, Edwin, Brad, and I have continued working on exporting the Launchpad registry. Of note are three new hosted-file resources: a project’s brand
, logo
, and icon
. Project groups also have more of their fields published.
This week: more things published through the registry, hopefully some progress on bugs as well.
This week in Launchpad’s web API
Published by Leonard Richardson August 29, 2008 in API, Cool new stuff
Last week the Launchpad web service didn’t change, because the source tree was frozen pending a Launchpad release. But this week we landed the branches we wrote last week, as well as some new ones.
The biggest change this week is client-side caching. Update your copy of launchpadlib to revision 17 and change your scripts to pass a directory name into the Launchpad constructor. That directory will be used as a cache.
>>> cachedir = "/home/me/.launchpadlib/cache/"
>>> launchpad = Launchpad(credentials, STAGING_SERVICE_ROOT, cachedir)
Without the cache, it takes several seconds just to start up launchpadlib. Every time you create a Launchpad
object, the library has to download information about how Launchpad
works. With the cache in place, launchpadlib will download that information once and reuse it for every Launchpad
object you create. The cache will also store the bugs, people, and other objects you retrieve as you use launchpadlib. The more often you use the same Launchpad objects, the more time the cache will save you. When we change Launchpad, launchpadlib will notice and will download the documents that have changed.
Second, Edwin Grubbs continued his work on publishing the Launchpad registry. launchpad.projects
is now open for business. You can get basic information about Launchpad projects, their milestones and branches.
>>> bzr = launchpad.projects['bzr']
>>> bzr.title
u'Bazaar Version Control System'
>>> bzr.programming_language
u'Python'
>>> [milestone.name for milestone in bzr.all_milestones]
[u'0.9a', u'1.3.1rc1', u'1.4rc2', u'1.5', u'1.6', ...]
Finally, I’ve given launchpadlib some code that uses the client-side cache to avoid the “lost update problem.” This happens when two people modify the same object without coordinating, and the second one unknowingly overwrites the first person’s changes. If you use launchpadlib to make a change and it turns out someone else has changed the same object, you’ll get a chance to look at the new version of the object and see if your changes are still relevant.
One thing we haven’t done yet is gotten the API HTML reference to be regenerated whenever we change the web service. I planned to work on this yesterday, but instead spent the day fixing bugs. I’m working on it now and we should have it up early next week.
Next week we’ll see also more of the Launchpad registry exposed, and some long-awaited aspects of Launchpad’s bug tracker. And on Tuesday, Barry Warsaw and I will be talking about Launchpad’s web service API as part of Ubuntu Developer Week. That’s at 1900 UTC, in #ubuntu-classroom on irc.freenode.net.