Ubuntu installer slideshow

Screenshot of Ubuntu's installer slideshow
  • Personal project

Ubiquity Slideshow is a simple presentation that appears while users install the Ubuntu operating system. The project aims to encourage and inspire people so they are more comfortable using the system. I created it with the help of some talented designers in the Ubuntu community.

The slideshow has been included since Ubuntu 9.10, shipping to millions of users. It is implemented as HTML and JavaScript, embedded in the installer using WebkitGTK.

The project has seen many contributors through its life and it also includes slideshows for different Ubuntu flavours such as Xubuntu and Kubuntu. The project’s build system uses po4a, so it is easy for translators to localize the slideshow through Launchpad’s web interface for translations. The slideshow currently supports over 50 languages.

At this point, the design and copy is contributed by Canonical’s design team. I implemented those designs and I wrote code to fit the pieces together — always making sure slideshows are easy to create. Since I wandered off to other places, I have enjoyed watching this project from the sidelines. I am glad that it is generally running fine: people know how to continue maintaining it so Ubuntu makes a good first impression, and it appears to be relatively trouble-free.

Working on the slideshow gave me a wonderful opportunity to interact with different people in the Ubuntu community, and I greatly enjoyed it.

GNOME Break Timer

  • Google Summer of Code 2013

GNOME Break Timer is a break timer app for the GNOME desktop. It reminds users to take regular short breaks, as well as longer breaks, to improve their well-being. I created it for Google Summer of Code 2013, with the help of Jasper St. Pierre and Allan Day. It is written in Vala.

This went well as an educational exercise, although I haven’t had an opportunity to work on it much since the initial release. (In retrospect, it would have been better to build the application as part of an existing component, but, live and learn). Recently I have been working on some updates to get the application working with Wayland, and building as a Flatpak. So, watch this space: hopefully I will be able to share some new progress soon.

This went well as an educational exercise, although I haven’t had an opportunity to work on it much since the initial release. (In retrospect, it would have been better to build the application as part of an existing component, but, live and learn). Recently I have been working on some updates to get the application working with Wayland, and building as a Flatpak. So, watch this space: hopefully I will be able to share some new progress soon.

Ubuntu Software Updater

Screenshot of Ubuntu's software updater
  • Personal project

Ubuntu’s software updater originally presented updates as a long list of Debian package names, which was a source of confusion for some users. After a conversation at the Ubuntu Developer Summit, I participated in a rewrite of its UI code following a set of wireframes designed by Matthew Paul Thomas.

Michael Terry worked on a major refactor to support Python 3, while I focused on updating dialogs with new layouts, and improving the flow between those dialogs. I changed the list of packages to use a tree structure, grouped by applications. The list of applications is drawn from application metadata and package metadata, while the grouping itself is based on a set of rules involving package dependencies.

I enjoyed working on a real GTK+ application that is seen by millions of users. I certainly needed to pay extra attention to performance, as well as being careful that the changes I made were simple and understandable so the application would be easy to maintain in the future.

Harvest

  • Google Summer of Code 2010

Harvest was a web service intended to guide people who wish to contribute to Ubuntu. It aggregated small bug reports and other quick tasks which could use attention. For Google Summer of Code 2010, I worked with Daniel Holbach to design and implement its new web front-end.

Part of my project was to make Harvest fast. It maintained a large database with very similar data, so it was up to Harvest’s interface to make that data particularly useful. I added filters to quickly narrow down results, though my implementation was unusual: searching happened in real time. As the user selects filters, results immediately start to appear. This improved perceived performance and encouraged exploration. The system was carefully tuned to keep the number of unnecessary database hits to a minimum. Whenever something is pulled from the database, there is some expectation it will be useful to the end user.

I made many changes to Harvest’s Django backend, while the frontend was augmented with jQuery’s Ajax utilities to streamline interaction. I had a lot to write about the project, so, I went ahead and wrote a short retrospective. In May 2011, I updated the design to match Ubuntu’s official branding guidelines.