Archive for the ‘Projects’ Category

Ibid chat bot

Monday, November 9th, 2009

Chat bots can be controversial. Apart from the fun to be had watching a friend carrying out an inadvertent Turing test, finding the right balance between useful information and annoyance seems to be one of the harder aspects of chatbotology.

I spoke to Jonathan Hitchcock, Michael Gorven and Stefano Rivera about their work on the Ibid chat bot.

Matthew: What are you doing with Ibid that’s different to other chat bots?

Ibid team: Like all bots, Ibid has two parts: the front end, and the back end, and we like to think that there is something to distinguish Ibid in both.

On the front end, we attempt to make the bot as intuitive as possible to interact with. All commands are natural language, and our philosophy is that the plugins should try to work out what the user actually wants to know and answer that, rather than forcing him/her to learn an esoteric set of syntax before he can use the bot. Queries are bubbled through plugins in order of priority so that the most relevant reply can be given.

Secondly, on the back end, Ibid is also divided into two parts: “sources” (i.e. transports, communication mediums – IRC, jabber, email, etc) and “plugins” (modules that tell the bot how to respond to various queries). The design aims to be clean and modular: all sources and plugins are discrete units that can be enabled or disabled without breaking any assumptions elsewhere in the code. Unlike other bots where non-IRC protocol support seems to be an afterthought, Ibid plugins deal with all protocols equally (hopefully without making them all equally bad).

This modularity helps both new and existing developers. It is easy to jump straight into a small part of the code without having to understand the entire system. It is also very easy to add new sources: we had a DC chat source up and running in under a day, and a prototype GSM SMS gateway in a weekend. In addition, hot-pluggability is an important goal of the project: you can add and remove plugins and sources on the fly, without having to restart the bot.

Matthew: Who do you see using Ibid?

Ibid team: As we’ve been developing the bot, we’ve started thinking in terms of three different personas: users, owners and developers.

Users are the end-users who happen to be in IM channels where an Ibid is running — they should just see the bot as a fun and useful tool. They’ll notice people using it to google things, store factoids, check the weather, do currency conversions, and so on, and start following suit. We’ve noticed that our bots very quickly become integral to channel communities, and we try to make sure the bot’s “personality” facilitates this: the natural language interface, and the characteristic responses that the bot gives aid this. Michael and Jonathan both have Ibid instances running internally at their companies, and the other employees find them very useful.

Owners are the people that run instances of the bot — they probably run the channels too, and they need a way to integrate other things with IM. Ibid aims to make that easy. We’ve already got plugins for checking RSS feeds, working out distances, fetching tweets, and so on — the plugin nature of the bot’s features mean that as soon as a new need arises, we can churn out some code to fulfill it.

This is where the third persona comes in: the developer. Ibid is designed to have a very low barrier to entry, and to make it very easy to write plugins, so it can be used as a framework for interfacing with almost anything. It already has plugins for interfacing with Bazaar, Trac and Buildbot, and a Launchpad plugin is in development. Because Ibid is so modular, stripping out all the funky stuff to build an IM interface to a single service is pretty simple, and Ibid hopes to be a good building block for such systems. Which brings us to your next question…

Matthew: Are you hoping to attract developers to Ibid?

Ibid team: See here.

That would be a yes. In the channels where we have Ibids running, users have contributed plugins for features they want, and in one case used it as a quick way to get an IRC game up and running. We’d like more of all of those.

We’ve done our best to make it as simple as possible to write Ibid plugins. There’s still some work to go (mostly documentation), but anyone who knows some basic Python should be able to hack a quick plugin together in a very short time.

We haven’t made an initial release yet, as some of the Internal APIs have some biggish problems that need to be resolved, but the bot is packaged and already works out of the box, and we’d love for people to start using it and contributing plugins.

Matthew: The project’s a fairly heavy user of Bazaar. What made you choose Bazaar over other VCSs?

Ibid team: It was almost accidental — we didn’t have much experience with DVCS, but we definitely wanted to use one rather than, say, subversion. We saw that the Ubuntu community was punting Bazaar, which is relatively sane (compared to, say Git), and ran with it. It turned out to be a good choice: it’s simple to learn and pretty powerful. It also has a very low barrier to entry, coming from more traditional VCSs, but you can ramp up to using the advanced features in fairly small, but logical steps (which makes it very similar to python, as a learning language, I suppose).

Matthew: What aspect of Launchpad has most helped your development of Ibid?

Ibid team: We originally started with Launchpad just to get quick bug-tracking integration, but soon discovered the other features on offer. After moving the source over to be wholly hosted on Launchpad, we started to use branches and merge-requests, and these have now become integral to our development methodology. Every feature and fix that we work on is developed in a separate branch and the merge reviewed by all three of us. Waiting for reviews can stagnate development a bit when all the developers are busy with their dayjobs, but we think the results are worth it — apart from the obvious benefits of catching bugs before they’re merged into trunk, the request-and-review process keeps us all involved and aware of what is happening in the project.

I imagine that as we grow, this benefit will lessen (since not everybody will review each merge), but it is still a good way of signalling to the rest of the team that changes are happening in an area, so that if they are interested, they can make their opinions heard before the changes get finalised.

As a whole, the tight Lauchpad-Bazaar integration has been a huge bonus, allowing us to develop from a few guys committing bits of code to trunk into a community with workflows, milestones, goals and a clear vision of where we’re headed. Having the VCS and the bug-tracker and the discussion boards and everything all in one place really builds cohesion in the project.

Matthew: What would you most like to see improved or otherwise changed in Launchpad?

Ibid team: We have been moving more and more of our project management into Launchpad (throwing out Trac, and our own Bazaar repository, and our own mailing lists, and so on), but there are still a few things that we have to host ourselves: repositories for non-Ubuntu packages (just Debian debs right now, but we’d like to include RPMs, etc, in the future), the build environments to create them (we have our own pbuilders presently), documentation, and our wiki.

There are free services that provide each of the above, such as the OpenSUSE build service, and the many “create your own wiki” services, but filling those gaps would mean our project could live entirely on Launchpad, and would bring along greater integration and easier flows.

Other neat things we could use would be support for Bazaar hooks, and permanently linking merge commits with the merge request — currently we include the merge request URL in the commit log.

Basically, tighter integration of everything would make project management much easier, and let us focus more on coding, which is always a win.

Matthew: Thanks Jonathan, Michael and Stefano!

Xibo: open source signage

Friday, September 11th, 2009

Xibo is a free software signage system. I asked its lead developers, Alex Harrington and Dan Garner, about the project.

Matthew: So, does Xibo power the sorts of display we see in train stations and airports?

Alex and Dan: Yes, and in shops, post offices, schools, universities, colleges, churches or hotels. Anywhere there is a need to display information to the public or employees via a screen or projector. There’s over 150 Xibo installs worldwide that we know of, running 250 screens — however the Launchpad download stats suggest the actual install base is much larger.

Xibo allows organisations to build up collections of images, videos, RSS feeds, Flash, Embedded or External HTML and Microsoft Powerpoint presentations and combine them together into presentations which can then, in turn, be scheduled on to one or more of the displays attached to the Xibo system.

Matthew: We’re pretty used to seeing the Windows blue screen of death on public displays. In building Xibo, what have you done to ensure high uptime and to avoid rather public, embarrassing, error screens?

Alex and Dan: The current stable release of Xibo (1.0.3 at the time of writing) comprises a server application written in PHP and a client application written in C#. The client is written with resilience in mind, and is capable of operating over poor quality internet connections or running offline for periods of time.

The classic BSOD FAIL images from digital signs are often the underlying operating system crashing rather than the signage application itself. To that end, the client attempts to be as light as possible on system resources to keep the workload on the OS manageable – We have a production client running on a Via EPIA Fanless Mini-ITX system.

Looking forward, we have a new cross-platform (Linux/Win/Mac) client coming written in Python using the libavg engine which is guaranteed BSOD free! It uses OpenGL to do a lot of the screen rendering which opens up a lot of possibilities for cool-new-shiney-bits later on.

Matthew: What’s the competition for Xibo?

Alex and Dan: There’s huge competition in the digital signage market place, however we’re frequently told that our offering is better than a lot of the commercial signage applications people have used before. In terms of Open Source competition, there is the Concerto Signage Project who are based at the Rensselaer Polytehnic Institute and released under the GPL v2.

What we’re hoping to bring to the DS market place is a Free solution translated in to many languages with a thriving community of contributors working together to make Xibo the best it can be. An example is the new Xibo Layout Exchange. Here you can download contributed artwork for use in the Xibo system but eventually we plan to allow people to share whole bundles of content.

Matthew: Are you building a business around Xibo?

Alex and Dan: The Xibo application is Free and we have no plans to change that. There are many options available to monetize Xibo (content creation, hosting, support, custom development etc) but there’s nothing in the pipeline at the moment.

Matthew: Why did you select the AGPL 3 as Xibo’s licence?

Alex and Dan: Xibo is written with SaaS (Software as a Service) in mind. We’re very happy for businesses to take Xibo, rebrand it and sell it as a service to their customers, but the freedom needs to be two-way. We wanted a license that ensured that modifications these companies made would be accessible to the end user, for the greater good of the project. AGPLv3 offers us those things, while being compatible with a lot of existing library code.

Matthew: Is there a community of people interested in developing an open source signage system?

Alex and Dan: Xibo currently has two main developers. We’ve had code contributions from a few other people to date, but there’s a fair learning curve which presents a hurdle for prospective developers. We’re working towards a more modular architecture which will allow people to develop plugins to the server and client to extend it’s functionallity, which should lower the barrier to entry significantly.

There’s an active support community already in the Forum and in Launchpad Answers. We’re also taking art submissions for the Layout Exchange, and there is already a huge list of blueprints in Launchpad for future development, contributed by many people.

At least one of the developers is planning to be at LugRadio Live 2009 and Oggcamp in Wolverhampton later this year — just as a visitor, we aren’t exhibiting, but they’ll be suitably dressed so come over and say hello!

Matthew: Heh, see you there. So, why did you choose Launchpad?

Alex and Dan: We have used Sourceforge and Subversion before, but we wanted to use Bazaar for the RCS and Launchpad gave us Bazaar hosting and a good bug tracker. The translations support has been a huge bonus as has Blueprints and Answers. It rolls almost everything we needed in to one convenient package. It also acts as an OpenID provider so we can give the community secure access to edit the wiki and authenticate with the forum.

Matthew: What have you found particularly useful in Launchpad?

Alex and Dan: I think possibly the single most useful feature is merge request tracking – allowing us to fix bugs in individual branches and then queue the fixes up for merging later on. Answers has been great for doing user support – especially where there’s four or five of us helping someone it gives a good overview of which issues are outstanding, and a clear progression to a bug if needed. The bugtracker integration with bzr is great too for keeping track of where fixes went.

Matthew: What would you like to see added to Launchpad?

Alex and Dan: In the early days it would have helped us a lot if Launchpad had provided a wiki too. Now we’ve got our own system in place migrating over makes less sense though. I’d love to see a “Convert to Blueprint” button in Answers, as we get a lot of people making feature requests there.

Matthew: Thanks both!

MySQL at Facebook on Launchpad

Friday, August 21st, 2009

I spotted this link in my Facebook news feed yesterday: MySQL at Facebook is a Launchpad project to which Facebook publishes its patches for MySQL.  There is also a Facebook note announcing the new project.

Surely Launchpad’s social networking credentials are in order now, and it’s just fun to point to a Facebook page on Launchpad rather than a Launchpad page on Facebook.

Zim and the art of wiki development

Thursday, August 13th, 2009

Zim logo

Zim is a desktop wiki that use both Launchpad and Bazaar. I asked Jaap Karssenberg, its founder and main developer, about the project.

Matthew: How does Zim compare with something like Tomboy?

Jaap: I really don’t know as I never used Tomboy for an extensive amount of time — it wasn’t around yet when I first started with Zim. From interface design I get the feeling Tomboy is designed as a replacement for sticky notes while Zim was designed as a replacement for an outliner. I think Zim is more tailored towards structuring notes. But Tomboy is moving fast as it has seemingly more developers and of course it gets traction from being included in Gnome.

Matthew: Do you think desktop wikis will eventually take over from larger applications, such as OpenOffice.org Writer, now that we’re increasingly producing documents for distribution online rather than via paper?

Jaap: I don’t think so, both serve different purposes. Wikis are very useful for storing information and building a knowledge base. Websites to some point have the same use cases, so a program like Zim can be used to build a website (in fact the Zim website itself is maintained in Zim). Office applications on the other hand are used when the focus is on layout and presentation of the data (e.g. writer and presenter) or do specialized calculations (e.g. calc). In my own workflow, I use Zim to collect notes about all my ongoing projects and this changes from day to day. When I need to produce a document these notes are the raw material, but I use an office application to produce a polished document. When such a document is finished itis published and does not change anymore.

Matthew: One of the great advantages of web-based wikis is collaboration. Does Zim have any features to enable collaboration?

Jaap: Zim has plugins to use version control like Bazaar or Subversion on the wiki data. My take on collaboration is that it can be done for a wiki the same way it can be done for code. Obviously you would need some betteer graphical interfaces for non-programmers to use it, but why not. This features doubles as backup mechanism and as synchronization. I especially like Bazaar for this due to it’s decentralized nature which fits a document concept real well.

Matthew: Are you looking for contributors?

Jaap: Always. Now it is just me on two nights a week and one or two irregular patch submitters. But we do have a lot of translators contributing already and
someone working on windows packages, which is very good. Still I feel the project is to much driven by a single developer.

Matthew: Why did you choose Launchpad and Bazaar?

Jaap: Bazaar was a logical choice as I was an avid Arch user before subversion and other modern version control systems arrived on the scene.

In the past I hosted projects on Sourceforge because I didn’t have my own hosting and needed centralized CVS etc. After some frustration I moved to Gnu Arch for version control and started hosting myself. But I started using Launchpad to allow translators to contribute and gradually discovered more useful features. I still have my own hosting contract for the website and put the bazaar branches there, but Launchpad is useful for contributers of other branches, translations and the bug tracker. Also running the mailing list there since my hosting provider doesn’t offer one. In short it spares me the work of setting up and maintaining those services myself.

Matthew: Thanks Jaap!

More power to the release manager

Tuesday, July 28th, 2009

Last month we made a small change to the series page as a commitment to making a distinction between the driver for a project and the driver of a series. The drivers of a project have the power to make the decision of what features go into a release. But the driver of a series is special. Often a select number of individuals are delegated the awesome responsibility to define the intent of a series, manage all the milestones necessary to meet the goals, and to create the release. Series drivers are release managers.

When developers talk about the trusted persons who are making the release happen, they use the term release manager. While Launchpad recognised the role, it required the person also be a project owner, which is not always suitable for large projects. Release managers do not need the power to edit the project information, they need the power to edit the series information, create milestones, and release them. That is the power they now have.

A project owner can set a user, or a team as the series release manager from the series page. Project drivers also have the power to create a series; they have the power to start planning to be make themselves the release manger of the series they create.

What’s next

Distribution have release managers too, they have the same responsibilities as project release managers, but giving them power is a bit tricky. For distributions other than Ubuntu, release managers will be able to create series and milestones, and edit their details just as a project release manager.

Ubuntu must be handled as an exception; the gift of Soyuz and Translations is also a curse. Many special tasks must be performed before an Ubuntu series can be register a series in Launchpad. The release managers for an Ubuntu series will have more power to edit the series details and milestones.

Open Mind and Launchpad

Tuesday, July 28th, 2009

Open MindOpen Mind is an open source effort to create a database of common sense concepts. I asked Catherine Havasi, Rob Speer and Ken Arnold about the project and their use of Launchpad.

Matthew: Open Mind is almost the stuff of 1950s science fiction. You’re building a database of the ambient knowledge that we all take for granted, is that right?

Catherine: Yup. We’re looking to capture that intuition about the world that people have but computers and devices don’t. When you’re walking down the street you don’t need to worry about whether you will fall through the sidewalk. When you tell a friend you bought some groceries at the store, you know not to explain to them how money works. This kind of knowledge, knowledge about the relationships between everyday objects and knowledge about people feel about situations and goals, is critical for pretty much any AI task: from knowledge management for companies to robots interacting with the world around them.

Rob: And while we do our day-to-day work on the short-term applications of our system, we do keep the idealistic long term of AI in mind sometimes. It’s interesting that you should mention science fiction — one of the things that indirectly led to me joining the group was the goal of creating a computer system that could hold a conversation, perhaps like Mycroft in “The Moon Is a Harsh Mistress” or at least one of his stupider siblings. Using what I knew about natural language processing, I tried making a silly little discourse system or two, but I could see a clear barrier to them ever saying anything useful, and that was their lack of access to common sense.

So from there I changed my goal to the lower-level goal of getting this common sense knowledge into a computer in the first place, and joined the Open Mind Common Sense project.

Catherine: I’ve actually never been much of a science fictiony person — I tend to read mysteries. However, I’ve been a part of collaborative projects on the internet since the ’90s — before Wikipedia — and I always wondered how to harness the power of this sort of project for something like artificial intelligence.

Matthew: What uses do you envisage for this data, or is that not yet important?

Rob: Oh, it’s important. If we didn’t have applications we wouldn’t have funding.

Catherine: Recently we have worked on a lot of external applications. A few years ago, we developed an inference algorithm called AnalogySpace, which uses linear algebra techniques to find patterns in our common sense data. We then take those patterns and extend them to our entire data set — it’s a great noise-resistant way to do inference. We’ve also got a new technique called “blending” which lets us reason over other datasets with common sense added in. This is a good first step to the dream of using Open Mind as a sort of semantic glue in AI and in human-computer interaction.

Rob: We use these techniques to develop tools for our sponsors that can deal with natural language text according to its meaning (and not just what words it contains), and experimental user interfaces that adapt to what they think the user’s goals are.

Catherine: Our machine-learning toolkit, Divisi, is open source, so other people can build applications that use these techniques as well. We’re trying to make our community more open for others to use our stuff in a wide variety of applications — that’s one of the reasons we’re using Launchpad.

Matthew: How are you populating the database?

Rob: Currently we populate the database through our public website. Anybody who logs into that site can contribute new knowledge or vote on existing knowledge. We’re also working on improving that site (which is the openmind-commons project in Launchpad).

Catherine: In addition, we’re working on games you can play online which would help populate and refine the database.

Matthew: How do you programmatically show links between concepts?

Catherine: We have a semantic network called ConceptNet, which is constructed automatically from common sentence patterns in our contributed data.

Rob: When someone has told Open Mind a statement of the form “You can use an X to Y”, for example, this lets us add the semantic link “UsedFor(X, Y)”. ConceptNet has hundreds of thousands of these links. The combination of Divisi and ConceptNet can be quite powerful for representing semantics in a programmatic way.

Matthew: Where does Launchpad come in?

Rob: At this point, doing research on Open Mind requires working with a rather complex set of code. Our group’s Subversion repository wasn’t cutting it any more. It was also becoming very difficult to introduce the code to new people (whether they are new members of the group or collaborators). Launchpad is what we’re using to organize and distribute our code, and to build community around it.

Catherine: We’re especially interested in making what we do open and accessible to everyone. We can’t do this alone.

Matthew: Why did you choose Launchpad?

Rob: The first decision was which revision control system we should use. We needed something that would enable a distributed workflow.

Ken: …so that one person trying out their crazy idea for a new representation wouldn’t have to choose between breaking everyone else’s code and leaving it uncommitted for weeks.

Rob: It was important to make branching not painful, so we could release packages such as ConceptNet more often than the coincidental times that every part of the system was in a stable state.

Ken: We also wanted to open up our processes to the community; some external observers have mistakenly thought that the project was “dead” because they couldn’t see our internal work.

Rob: We first experimented with Git a bit. Not everyone could get their head around it. It felt like black magic. When you don’t completely understand the system, you can’t be sure it’s doing what you want. (I recognize the irony of this statement coming from a bunch of AI researchers.) After looking at other options, we settled on Bazaar, which fit into our workflow well and let us continue to use the Subversion idioms we were familiar with.

From there, it became a natural choice to set up a Launchpad account. Now we have a reliable place to look for all our code — as well as a lot of other tools for organizing our development, and a way of keeping our downstream users in the loop.

We intend to use Launchpad to distribute releases of ConceptNet and Divisi, track bugs, answer questions from users, and possibly even keep tabs on our documentation. (Currently, it seems a bit inconvenient to manage documentation using Launchpad. I’ve filed bug #334688 about a minor fix to Blueprints that would help, but it would really be nice to have a “Documentation” tab or something.)

Other aspects of Launchpad seem promising also — for example, we could make our translation project more high-profile if we figure out how to bring it from our own Rosetta installation over to Launchpad, and the “Mentoring” system seems like a good idea for giving projects to undergraduates, who often take a long time getting their bearings and figuring out what they want to do. (I should know.)

About Catherine, Rob and Ken

Catherine Havasi: I started as one of the co-founders of this project back in 1999 as an undergrad at MIT. I’ve been with it on and off for nearly ten years now. I took breaks to pursue other projects, but kept coming back to Open Mind because of the need for common sense. I’m currently finishing a PhD at Brandeis and will be soon starting a postdoc at MIT working full-time on Open Mind.

Rob Speer: I joined this project as an undergrad in 2005. I then made it the subject of my graduate research starting in 2006. After a couple of research ideas that didn’t really go anywhere, I worked on updating our knowledge collection site to make it start doing the things our papers said it should do, including asking relevant questions to expand its knowledge. I gave the site the working title “Open Mind Commons”, which stuck. I’m working toward a Ph.D. now, with a goal of improving knowledge collection across multiple languages.

Ken Arnold: I’m a second-year Master’s student at the Media Lab. My first task my first year here was to rewrite the Open Mind Commons site in Python/Django. I’ve been maintaining it ever since (enough to get fed up with it and pine for a rewrite — again!). I also have been helping with Divisi. I’m mainly working on my master’s thesis now, but somehow I keep finding myself working on this stuff.

Automatically import files to Launchpad using product release finder

Friday, July 24th, 2009

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.

Answer contacts can assign questions

Thursday, July 23rd, 2009

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.

Release planning

Monday, June 29th, 2009

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.

Linking project releases in Launchpad to milestones

Tuesday, March 24th, 2009

In our 2.2.3 release of Launchpad — due 1st of April — we’re strengthening the relationship between milestones and releases.

Project releases will be explicitly linked to a milestone, meaning the release inherits the milestone’s series and identity information.

You’ll be able to create a new release from a milestone page or, if you don’t yet have a milestone, there’ll be an option to create a release and its parent milestone simultaneously. You can still have milestones that do not correspond to releases.

Just as now, the release will hold the release notes, changelog, date released, and any downloadable files.

What are Releases, Milestones, and Series?

Launchpad hosted projects can arrange their development into Series, which contain Milestones to which bugs can be targeted, and Releases which hold download tarballs and have release notes. Although Milestones and Releases go together, they were previously managed separately in Launchpad. Now they’re more unified.

Why are we doing this?

Many people already use releases and milestones in this way. Milestones aid release planning, and help people understand a project’s goals. Creating a release directly from a milestone implies that the milestone was reached.

Linking milestones to releases improves the data consistency between projects. With good milestone and release information, Launchpad can improve the presentation of series to explain what has happened, and what will happen. We hope that this will make it easier for people to know where and when to make contributions to your project.

This change also allows us to redesign the series, milestone, and release pages. Our goal is to better present the history and future of a project, as well as to improve the workflow for planners.

What you can do

You do not need to take any action regarding releases. We’re migrating existing releases by linking them to a milestone, or if there isn’t an appropriate milestone, creating a new one.

You can use Launchpad’s staging environment — https://staging.launchpad.net/ — right now to check what your releases
and milestones will look like under the new system.

We’d value your feedback so we can improve the data migration script. If you come across a problem, please report a bug here:

https://bugs.launchpad.net/launchpad

For other comments, send us an email to feedback@launchpad.net

How we’re making the migration

The release’s project, project series, version, code name, and summary come from the milestone it’s linked to. The release’s version will come from the milestone’s name.

When a release and a milestone share the same series and version/name, they are linked. The release’s summary will be appended to the milestone’s summary. You should review your project’s milestones. You can make changes to your project’s milestones and releases on launchpad.net to ensure they are merged correctly on staging.launchpad.net before the final migration.

When no milestone can be matched to a release, a new milestones is created from the release’s information. The milestone is not active, they will only appear on the project’s milestone page. There are a few instances where two series have a release of the same name. Milestone names are unique across a project. So the milestone’s name will contain the release’s version and series name (0.9-series-trunk). You can prevent this from happening by renaming some of your project’s releases on launchpad.net now — in most cases, the duplicate release name is on an obsolete series, or trunk. You can view all your projects series at:

https://launchpad.net/<your-project>/+series

We’re also taking the opportunity to rename a couple of things: description” becomes “summary” and the milestone’s visibility flag (in the REST API) is renamed to “active”.

We believe this change will make releases and milestones much more useful. Please do report bugs or email us if you have any comments.