Revision 2 as of 2009-09-01 19:11:13

Clear message

Dev Week -- Using the LP API for fun and profit -- leonardr -- Tue Sep 1st, 2009


(03:02:29 PM) didrocks: now, the stage is opened to leonardr
(03:02:35 PM) leonardr: thanks didrocks
(03:02:41 PM) didrocks: he will teach you about blackmagic on pythonlaunchpadlib :)
(03:03:10 PM) leonardr: My name is Leonard Richardson. I'm on the Launchpad Foundations team and I'm the co-author of the O'Reilly book "RESTful Web Services".
(03:03:16 PM) leonardr: I'm here to talk about the Launchpad web service API--how to use it and what advances have been made since the last UDW.
(03:03:31 PM) leonardr: I'll do an infodump for a few minutes and then take your questions for the rest of the hour.
(03:03:43 PM) leonardr: If you have questions during the infodump, just put them in #ubuntu-classroom-chat.
(03:03:51 PM) leonardr: I give this infodump at every UDW, so it may be familiar to you. I ask you to bear with me so I can get everyone up to speed.
(03:04:02 PM) leonardr: 1. Intro
(03:04:15 PM) leonardr: First thing to know is that we've got docs talking about the API here: https://help.launchpad.net/API
(03:04:19 PM) leonardr: Put simply, we've created an easy way for you to integrate Launchpad into your own applications.
(03:04:30 PM) leonardr: f you perform the same tasks on Launchpad over and over again, you can write a script that automates the tasks for you.
(03:04:38 PM) leonardr: You don't have to rely on fragile screen-scraping.
(03:04:43 PM) leonardr: If you're a developer of an IDE, testing framework, or some other program that has something to do with software development, you can integrate Launchpad into the program to streamline the development processes.
(03:04:49 PM) leonardr: If you run a website for a project hosted on Launchpad, you can get project data from Launchpad and publish it on your website.
(03:04:55 PM) leonardr: And so on. You can use the API to do most of the things you can do through the Launchpad web site.
(03:05:15 PM) leonardr: 2. Tools
(03:05:29 PM) leonardr: The simplest way to integrate is to use launchpadlib, a Python library we've written.
(03:05:34 PM) leonardr: see https://help.launchpad.net/API/launchpadlib, ubuntu package python-launchpadlib)
(03:05:45 PM) leonardr: This gives you a Python-idiomatic interface to the Launchpad API, so you don't have to know anything about HTTP client programming:
(03:05:56 PM) leonardr: >>> launchpad.me.name
(03:05:57 PM) leonardr: u'leonardr'
(03:05:57 PM) leonardr: >>> launchpad.bugs[1].title
(03:05:57 PM) leonardr: u'Microsoft has a majority market share'
(03:06:05 PM) leonardr: But it's also easy to learn the API's HTTP-based protocol and write your own client in some other language.
(03:06:09 PM) leonardr: (see https://help.launchpad.net/API/Hacking)
(03:06:27 PM) leonardr: 3. Progress and Roadmap
(03:06:32 PM) leonardr: At the last UDW I said that the web service publishes information about people, bugs, code branches, archives, and the launchpad registry (the projects, milestones, etc.)
(03:06:38 PM) leonardr: Here's what's been published since then (AFAIK):
(03:06:44 PM) leonardr: * The translation import queue (more or less read-only)
(03:06:51 PM) leonardr: * Lots of distro stuff i don't understand, like package uploads and package sets
(03:06:59 PM) leonardr: * Merge proposals and code reviews
(03:07:05 PM) leonardr: * Project releases
(03:07:09 PM) leonardr: * The hardware database
(03:07:19 PM) leonardr: The future:
(03:07:27 PM) leonardr: Publication through the web service is still not a priority for translations (apart from the import queue, which is done), answers, or blueprints.
(03:07:38 PM) leonardr: Work on publishing new things on the LP web service has slowed down since the last UDW, since most of Launchpad is published now.
(03:07:47 PM) leonardr: Right now I'm working on making the underlying library (lazr.restful) an attractive option for anyone who wants to publish a web service.
(03:07:53 PM) leonardr: We are also working on improving the client.
(03:08:03 PM) leonardr: So, that's the infodump, i invite your questions.
(03:08:20 PM) leonardr: <rugby471> leonardr: I have used python-launchpadlib in memaker and I loved it's simplicity, however the one gripe I had with it was the very first authentication request the user has to do with launchpad, is there any plans/thoughts on how to make this a bit less clunky?
(03:08:59 PM) leonardr: rugby471: yes
(03:09:16 PM) leonardr: this work is tracked in bug 387297
(03:10:09 PM) leonardr: basically, the workflow is the way it is because we wanted to exploit the fact that the user already trusts their web browser with their launchpad credentials, where (no offense) they don't trust your application