Canonical Voices

Posts tagged with 'planet ubuntu'


Just a quick note: today I did a Reddit Ask Me Anything, and there were a lot of questions that I answered that cover a range of different topics. You can read it all here.

Read more

I have something rather cool to show you:

This is a screenshot of Ubuntu Accomplishments with support for Ask Ubuntu badges. This means that when you get an Ask Ubuntu badge, you will see a notification bubble appear on your desktop, and you can see all of your Ask Ubuntu badges with the rest of your trophies.

Currently all the Ask Ubuntu badges are working with Ubuntu Accomplishments, and all have working integration tests.

One of the nice features of Ubuntu Accomplishments is that you can browse documentation for the different Opportunities that you have not yet accomplished. This provides a neat way of learning how to accomplish new things.

As an example, I don’t have the Strunk and White Ask Ubuntu trophy yet. When I click on it I see:

While we have all the Ask Ubuntu accomplishments working and all the tests written, we still need help to get the documentation written for all the badges. This is where we need your help.

How To Help

Helping is simple!

Head over to this page for instructions of how to get started. You will basically grab the accomplishments, pick one from the list that has not had documentation written yet, submit the docs, and then tick it off the list.

We really want to get the Ask Ubuntu accomplishments into the 0.2 Ubuntu Accomplishments release next week, so if you folks can help, that would be awesome!

Read more

We are delighted to announce that the Humble Indie Bundle, that was just announced will have all the games available in the Ubuntu Software Center running natively on Ubuntu.

For the next few weeks you can go and donate whatever you like to buy Amnesia: The Dark Descent, Psychonauts, LIMBO, Superbrothers: Sword and Sworcery EP and if you pay more than the average you also get Bastion.

Remember, you only have a few weeks to go and donate whatever you like to buy the games, and when you have bought them from the Humble Indie Bundle Website you can install them with a single click in the Ubuntu Software Center!

Proceeds go to the Electronic Frontier Foundation and Childs Play, so snap up these awesome games, running natively on Ubuntu, and help charities and indie game devs!

We have a few other fun things planned over the next few weeks, so stay tuned!

Go and grab the games!

Read more

Before we get started, I want to offer all of my American friends a thoughtful Memorial Day (I was going to say ‘happy’ memorial day, but there is nothing particularly ‘happy’ about the meaning behind the day). I hope you all have a nice day with family and/or friends.

On an unrelated note, I just wanted to have a quick call for Django web developers to participate in a fun new project as part of the Ubuntu Accomplishments system.

The idea is simple: part of the fun of achieving trophies for things you have accomplished on your computer and in the community is showing your trophies to your friends, colleagues, and other community members.

Fortunately, this is not a particularly complex project to build: it just requires a consistent vision, and plenty of hands on deck to make the magic happen.

To help smooth things along, I wrote a spec complete with mockups and implementation details that explains how the system works, and how some of the functionality could be implemented.

To give you a brief example of how it could work, the idea is that a user can voluntarily show their accomplishments online. When this is enabled you can browse all of their accomplishments on one page:

You can also click on a collection to view the trophies by category:

There are all kinds of other interesting things that we could do too such as showing other people who have accomplished similar trophies, showing statistics, connecting to social media platforms and more.

Getting Involved

Sound interesting? Do you know how to program with Django and want to get involved?

Well, you are a legend. Let me explain how you get started.

  1. First, go and read the spec to get an idea of how the project will work.
  2. Next, join our mailing list and send an email expressing an interesting in participating in the Web Gallery project. You should also read these two threads to get up to sync: 1 2
  3. Now see the Trello board and pick one of the topics that needs completing and assign it to yourself. The Trello provides a nice means to see who is working on what and the status of that work.
  4. Now check out the code with bzr branch lp:ubuntu-accomplishments-web and start hacking.
  5. You can get help on the mailing list as well as in #ubuntu-accomplishments on Freenode IRC.

Thanks and I look forward to you joining our community!

Read more

The Internet has been alive with doom saying since the IPv4 global address pool was parcelled out.  Now I do not subscribe to the view that the Internet is going to end imminently, but I do feel that if the technical people out there do not start playing with IPv6 soon then what hope is there for the masses?

In the UK getting native IPv6 is not a trivial task, only one ISP I can find seems to offer it and of course it is not the one I am with.  So what options do I have?  Well there are a number of different types of IPv4 tunnelling techniques such as 6to4 but these seem to require the ability to handle the transition on your NAT router, not an option here.  The other is a proper 6in4 tunnel to a tunnel broker but this needs an end-point.

As I have a local server that makes a sensible anchor for such a tunnel.  Talking round with those in the know I settled on getting a tunnel from Hurricane Electric (HE), a company which gives out tunnels to individuals for free and seems to have local presence for their tunnel hosts.  HE even supply you with tools to cope with your endpoint having a dynamic address, handy.  So with an HE tunnel configuration in hand I set about making my backup server into my IPv6 gateway.

First I had to ensure that protocol 41 (the tunnelling protocol) was being forwarded to the appropriate host.  This is a little tricky as this required me to talk to the configurator for my wireless router.  With that passed on to my server I was able to start configuring the tunnel.

Following the instructions on my HE tunnel broker page, a simple cut-n-paste into /etc/network/interfaces added the new tunnel network device, a quick ifup and my server started using IPv6.  Interestingly my apt-cacher-ng immediately switched backhaul of its incoming IPv4 requests to IPv6 no configuration needed.

Enabling IPv6 for the rest of the network was surprisingly easy.  I had to install and configure radv with my assigned prefix.  It also passed out information on the HE DNS servers, prioritising IPv6 in DNS lookup results.  No changes were required for any of the client systems; well other than enabling firewalls.  Win.

Overall IPv6 is still not simple as it is hard to obtain native IPv6 support, but if you can get it onto your network the client side is working very well indeed.

Read more

IMPORTANT: Before I get started, if you are running the daily PPA of Ubuntu Accomplishments, please use the releases PPA instead right now as the validation server is using the 0.1 accomplishments collection as opposed to the faily 0.2 accomplishments. If you are using the daily PPA you accomplishments will not get verified.

Now…normal service resuming…

As we build up to the 0.2 release of Ubuntu Accomplishments we have hit feature freeze and are now focusing on bug-fixing. We have also locked down the strings in the viewer and daemon, and this means that we want to reach out to our awesome community of translators to help get this baby translated into every possible language.

How to help

First, head over and translate the daemon and the viewer:

Helping with this effort is simple. First, please go and help translate the daemon and viewer:

Thanks for your contributions; a few minutes contributing translators can make the Ubuntu Accomplishments experience nicer for thousands of users!

Providing Localized Documentation

When you have translated the daemon and viewer, we really need help translating the Ubuntu Community Accomplishments collection too.

Importantly, this is not just about word-for-word translation from English to another language, but instead providing awesome documentation designed for people who speak your native language.

As an example, every accomplishment has a Summary section which provides an introduction to the accomplishment, what is involved, and what the jargon means. Feel free to write the most detailed explanation you like in your language, even if the original English version is quite short. The English translation is provided as an example: feel free to improve on the summary in your own language.

Another good example are the Links and Help resources: the original English ones will be English resources – feel free to provide resources and links that are native to your language.

I want to encourage you all to help make the documentation for your language the best possible documentation for new users (e.g. “e.g. our French documentation is the most complete of any of the languages!“). :-)

How to help

Here is how you do this as it is a little different:

Contributing is really simple. Just follow these steps:

First, go to

When you go there you might see some languages listed below like this:

If you don’t or would like to select another language, click the Change your preferred languages link and select the languages you want to translate in to. Those languages will now appear like the ones above. The colored bar shows what proportion of the accomplishments are translated (green) and what are not (red).

Now click one of the languages (e.g. if I click on English (United Kingdom)) and you will see the list of things you can translate. Here is an example of one:

The translation of Ubuntu Accomplishments works a little differently. You should IGNORE the English line at the top (e.g. where it says member-loco-team_description) and instead look at the documentation just below. There it tells you which accomplishment you are editing and what the original English translation is. In the above image you can see we are writing German documentation, the accomplishment is ‘LoCo Team Member’ and this specific field in the accomplishment documentation is ‘steps’. More the different fields below.

You can now type your own language’s documentation into the New translation box. For the larger chunks of text you can use the grey button at the end of the New translation box to make the text entry bigger.

If there is already a translation there and you want to edit and improve it, click the Current <language> translation button and the text will be copied to the edit box where you can edit it.

Now click the Save button at the bottom of the page to save your contributions. Sometimes you have to scroll to the right to see the Save button due to some of the long chunks of the text on the page.

Thanks for making Ubuntu easier and more fun to participate in for our community!

Read more

I have rather nice little story to share with you all.

My mother in law, Sue, has what can be best described as a dog-earred mess of a laptop. A reasonably modern Lenovo Thinkpad with Windows Vista, it was painfully slow to use, crammed with all manner of bloatware and pre-installed rubbish that came with the machine and the applications she installed, and likely hiding some spyware, viruses and other uglyness.

Now, I am not a fan of Windows at the best of times, but this was beyond software preferences: the machine was barely usable. Sue though, being the trooper she is, gritted her teeth and just got on with it, going about her business as usual.

Recently here in the USA it was Mothers Day and I had an interesting idea. We had an old Dell Inspiron that has been kicking around for the last four years or so, and I decided to install Ubuntu 12.04 on there for her as a surprise.

So, I downloaded the ISO, put it on a USB stick and the installation went flawlessly. Ubuntu 12.04 detected all of the hardware perfectly, and I rebooted. I was a little curious to see how Unity was going to fare on a machine that to my knowledge is at least four years old, possibly five or six years old, and it was slick and fast. Now, I am not being generous here…the performance is genuinely snappy; I was really quite impressed. Nice work, Unity team. :-)

On mothers day I met up with Sue and her husband and my brother in law (Erica was out of the country) and I gave her the laptop. Naturally, she was overjoyed, but whereas I planned on sitting down with her after dinner to show her how Ubuntu works, we ultimately didn’t get a chance to and she took the machine home with her. As such, all I did was tell her the password for logging in and then she was pretty much on her own with the option of calling me if she got stuck.

Now, Sue is very much a computer novice. She has no outside interest in computers…for her it is a tool, pure and simple. I was a little nervous how she would get on.

A few days later I heard back from her and she was absolutely overjoyed. She was browsing around the machine, installing software, accessing websites in Firefox, creating and saving documents in Libreoffice, and the last I heard from a few hours ago…signing up to Ubuntu One so she can ensure her files are backed up to the cloud.

As just one cog in this Ubuntu and wider Open Source and Free Software machine, I am really proud that we as a community could deliver this experience to her. I am confident that a few years back the experience would not have been so smooth and consistant, and it is fantastic to see Free Software thrilling regular people who just want get things done with their computers, safely and enjoyably. Thanks to everyone who contribute to make this little success story happen. :-)

Read more

Eagle eyed readers may have noticed I have been talking a lot about Ubuntu Accomplishments in the last few weeks…more so than usual… Well, to put it bluntly, my wife has been out of town for a few weeks and as such my evenings have had my husband time replaced with sitting in a darkened room, surrounded by empty Lean Cuisine trays, sipping on coffee, hacking to the sound-track of Gov’t Mule. If I had more hair, I really would feel like was 18 again. :-)

Anyway, enough of the goings on at Castle Bacon, so what is the latest in the Ubuntu Accomplishments camp? Well, I have some fun things to share…

0.2. Like 0.1 But Twice As Awesome

We are now officially on the road to 0.2. We have decided to codename our releases after notable accomplishments in history, so the next release will be codenamed lightbulb and has a release date set for Tues 12th June 2012. You can see our targeted bugs lists (daemon : viewer) to get a feel for what we have yet to do.

While on the covers 0.2 might seem a small and incremental release, there has been a lot going on as we work to bring quality and precision to the code and the user experience.


The 0.1 release was an important milestone for us. With over 230 people testing it and over 900 trophies issued, we were shocked pleased to see a surprisingly low number of bug reports coming in.

0.1 also helped us to identify the deficiencies in our current API, so we planned on maturing it significantly for 0.2. Rafal Cieslak did a stunning job implementing this work and the API is not only more mature and more consistant, but faster and better testable.

Categories and Sub-Categories

As our accomplishments collection has started grow, it has been clear that we needed two features that were not in 0.1:

  • Accomplishments should be able to appear in multiple categories (e.g Set Up Your SSH key should appear in both Development and Launchpad categories).
  • Some (but not all) categories are too big and general and could benefit from sub-categories (e.g. Games could be divided into different genres or specific games).

To focus on this work I put together a mock-up and explored some different ideas of exposing this cleanly. This was the final design:

Over the weekend Rafal and I tag-teamed this one; Rafal built the support into the API and I built the front-end support for this in the client. It now looks like this:

In this screenshot none of the sub-categories are selected, so all Launchpad accomplishments are displayed. If you click one of the sub-categories it only shows those opportunities. This still needs some visual tweaks and polish, but it works quite nicely.

Multiple Dependencies

Another lesson from 0.1 was that while most accomplishments only need one other opportunity completing first before it can be unlocked, some need more than one. As an example, On Planet Ubuntu requires you to have a SSH key and be an Ubuntu Member. As such, we built in support for multiple dependencies.

Now the client show which dependencies you have yet to accomplish before the opportunity is unlocked:

Credit Where Credit Is Due

Ubuntu Accomplishments is a fairly big vision with lots of moving parts that will involve lots of contibutors. While a few of us hack on the core system, the real value in the system are the hundreds of accomplishments that could be exposed via it. These different accomplishments are available in grouped Collections and we expect many different people to contribute to different collections (e.g. the Ubuntu Community Accomplishments collection).

As such, we wanted to be able to expose these contributions to our clients. To do this we built support into the API for an author field in each accomplisment, and clients can now display this in their help dialog box. Here is the official client showing off the credits:

The default behavior is that it will show the contributors for each collection you have installed as well as the core system.

New Accomplishments

One of the most pleasant outcomes of 0.1 was getting many different accomplishment contributions from the community. In total we have added the following to the Ubuntu Community Accomplishments collection:

  • Accomplishments Contributor
  • Attend LoCo Team Event
  • Bug Squad Member
  • Ubuntu Forums Council Member
  • Ubuntu Forums Staff Member
  • Imported an SSH Key
  • Ubuntu Beginners Team Council Member
  • Ubuntu Beginners Team Member
  • Bug Control Member
  • Ubuntu Forums Ubuntu Member
  • Blog on Planet Ubuntu
  • Ubuntu Cloak
  • Signed Canonical Contributor Agreement
  • Uploaded First Branch To Launchpad

Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci, and José Antonio Rey for these contributions!

Would you like to contribute an accomplishment? See the list of ideas and get started!

Ubuntu Desktop Accomplishments

Do you know what is exciting about the following screenshot?

We fixed local accomplishments support in 0.2 (these are accomplishments on your computer such as sending your first email or installing your first application). We will be building out our own desktop collection and the above screenshot shows the very first accomplishment that is in the new Ubuntu Desktop Accomplishments collection. This is still very much early days, but I am particularly looking forward to building this collection out: I want it to become one of the best ways of learning the many different things you can do on your computer in Ubuntu.

UPDATE: After I posted this I added support for local accomplishments to the Accomplishment Information app itself. See a short video demo below:

Can’t see the video? Click here!

Spring Cleaning

In addition to this more visible work, there has been lots of other things going on as we clean up our code base and bring maturity and predictability to the project. This has included:

  • Many improvement to the validation server: more resiliance, better logging of failures, and some performance improvements.
  • As I wrote about the other day, we are now doing automated daily testing of accomplishments as well as graphing growth.
  • Improving our documentation and support for how people can contribute to the project as well as contributing accomplishments.

Moving Forward

I just want to say a huge thank-you to everyone who has been participating in the project! I am looking forward to 0.2 as another important milesone. I will be following up in the next week about areas in which we are looking for help in the project that you might be able to contribute to.

If you are interested in joining us, be sure to install it, join #ubuntu-accomplishments on Freenode IRC, and join the mailing list.

Read more

Recently I have been talking a little about building quality and precision into Ubuntu Accomplishments. Tonight I put one of the final missing pieces in place and I thought I would share in a little more detail about some of this work. Some of you might find this useful in your own projects.

Before I get started though, I just wanted to encourage you to start playing our software and for those of you that had a crash when using certain languages with the Accomplishments Information viewer, I released a 0.1.2 update earlier that fixes this.

Automated Testing

As we continue to grow the Ubuntu Community Accomplishments collection it is going to be more and more complex to ensure all of the accomplishments are working effectively every day; we are already at 28 accomplishments and growing! What’s more, the community accomplishments scripts work by checking third-party services for data (e.g. Launchpad) to assess if you have accomplished something. These external services may change their APIs, adjust how they work, add/reduce services etc, so we need to know right away when one of our accomplishments no longer works and needs updating.

To do this I wrote a tool called battery. It works by reading in a test that is available for each accomplishment that feeds the accomplishment validation data that should succeed and also data that should not validate. As an example, for the Ubuntu Member accomplishment the data that succeeds is an existing member’s email address (such as my own) and the test for failure is an email address on Launchpad that is not a member. The original script requires the user’s email address to assess this accomplishment, so battery tests simply require the same types of information, with data that can trigger success and failure.

This approach allows us to test for three outcomes:

  • That the valid email address returns exit code 0 (the script ran successfully and the user is verified as being an Ubuntu Member).
  • That the invalid email address returns exit code 1 (the script ran successfully but the user is not an Ubuntu Member).
  • If the script has an internal issues and returns exit code 2.

The way this works is that battery includes a customized version of the general accomplishments.daemon module that we use for the backend service. In the code I override the back-end module and load a custom module. This way the original accomplishment script does not need to be modified; instead of get_extra_information() calling the back-end daemon and gathering the user’s details, the custom module that comes with battery instead has it’s own get_extra_information() that gets returns the test data so battery can run the tests.

Originally battery only output textual results, but this would require us manually running it. As such, last night I added HTML output support. I then enabled battery to run once a day and automatically update the HTML results. You can see the output here.

There are a few important features in this report other than a list of all the accomplishment test results:

  • It shows the failures: this provides a simple way for us to dive into the accomplishments and fix issues where they occur.
  • It shows which tests, if any, are missing. This gives us a TODO lists for tests that we need to write.

While this was useful, it still required that we would remember to visit the web page to see the results. This could result in days passing without us noticing a failure.

Tonight I fixed this by adding email output support to battery. With it I can pass an email address as a command-line switch and battery will generate an email report of the test run. I also added battery‘s default behavior to only generate an email when there are failures or tests are missing. This prevents it generating results that don’t need action.

With this feature I have set battery to send a daily “Weather Report” to the Ubuntu Accomplishments mailing list; this means that whenever we see a weather report, something needs fixing. :-)

One final, rather nice feature, that I also added was the ability to run battery on one specific accomplishment. This is useful for when we are reviewing contributions of new accomplishments; we ask every contributor to add one of these simple tests, and using battery we can test that the script works for validation success, validation failure, and script failure with a single command. This makes reviewing contributions much easier and faster and improves our test coverage.


Something Mark Shuttleworth discussed at UDS was the idea of us building instrumentation into projects to help us identify ways in which we can make better decisions around how we build software. This is something I have also been thinking of for a while, and to kick the tyres on this I wanted to first track popularity and usage of Ubuntu Accomplishments before exploring other ways of learning how people contribute to communities to help us build a better community.

Just before we released version 0.1 of Ubuntu Accomplishments, I created a little script that does a scan of the validation server to generate some statistics about the number of daily new users, the daily number of new trophies issued, and the totals. Importantly, I only count users and trophies, and I am only interest in publishing anonymized data, not exposing someone’s own activity.

To do this my script scans the data and generates a CSV file with the information I am interested in. I then used the rather awesome Google Charts API to take my CSV and generate the Javascript need to display the graph. Here are some examples:

While this is not exactly instrumentation, it got me thinking about the kind of data that could be interesting to explore. As an example, we could arguably explore which types of contributions in our community are of most interest in our users, how effective our documentation and resources are, which processes are working better than others, and also some client side instrumentation that explores how people use Ubuntu Accomplishments and how they find it rewarding and empowering.

Importantly, none of this instrumentation will happen without anyone’s consent; privacy always has to be key, but I think the idea of exploring patterns and interesting views of data could be a fantastic means of building better software and communities.

Read more

At the Ubuntu Developer Summit last week I delivered a plenary on the Tuesday called Accomplishing An Awesome App Developer Platform that tells the story of how the Ubuntu app developer platform enabled me to build the Ubuntu Accomplishments system that I designed with Aq. The presentation walks through the story of how we designed the system, and how everything was available in Ubuntu to create the client, back-end daemon, validation server, and desktop integration. I think it is a good example of how Ubuntu can help app devs to create interesting ideas and apps.

I thought this might be handy to have on YouTube, so I re-recorded it today, and you can see the video below:

Can’t see it? Watch it here!

If you want to create your own application for Ubuntu, be sure to visit

Read more

I just released a new update for the Ubuntu Community Accomplishments collection. This new release (0.1.1) includes the following new community accomplishments:

  • Accomplishments Contributor
  • Attend LoCo Team Event
  • Bug Squad Member
  • Ubuntu Forums Council Member
  • Ubuntu Forums Staff Member
  • Imported an SSH Key
  • Ubuntu Beginners Team Council Member
  • Ubuntu Beginners Team Member
  • Bug Control Member
  • Ubuntu Forums Ubuntu Member
  • Launchpad Profile Mugshot is now fixed too.

Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci for contributing these additions! It is wonderful to see our community growing!

If you want to contribute accomplishments, be sure to see our guidelines, some suggestions, and how to get started!

If you are already running Ubuntu Accomplishments 0.1, you just need to do the following to get the new set:

sudo apt-get update
sudo apt-get upgrade

If you are running the daemon, kill it first with killall -9 twistd and then load Accomplishments Information from the dash.

If you are new to Ubuntu Accomplishments, be sure you have your Ubuntu One set up and running on your computer, and then follow these installation instructions.

Read more

In the Ubuntu world we have some common values that are not just focused on freedom, but also in how we build Ubuntu. Values such as cadence, design, quality and precision help guide us in building the best Ubuntu that we can.

These values continued to be common themes at the recent Ubuntu Developer Summit in California. Today our culture continues to involve important integration work that is a rich and interesting challenge, but this work has also been augmented by us building assurances around Ubuntu too; assurances such as regular releases (cadence), the reliability and quality of the experience (quality), and attention to detail in both design and engineering (precision) are all examples of the strong balance of predictability and innovation that we want to bring.

These values are not limited to Ubuntu though: we want Ubuntu to be a platform where you can get the very best software experience, whether you are using Open Source or commercial applications. In a nutshell, we want to take the lessons we have been learning regarding cadence, design, quality and precision and share them with our upstreams. This is going to be a big chunk of what Michael Hall will be focusing on in the coming months.

One upstream project though that I am actively involved in in my spare time is Ubuntu Accomplishments and I wanted to share some of our plans surrounding our next 0.2 release and how these values are forming an important core of this work. Before I continue though, I just want to say a huge thank-you to everyone who has been participating in Ubuntu Accomplishments. Ever since our 0.1 release a few weeks ago we have had over 180 people start using this very early PPA and a number of people have started contributing accomplishments. Thanks to all of you!


With the expanded number of accomplishments being contributed, I started thinking last week about how we could perform better testing around these contributions as well as daily testing reports; I wanted to ensure that our project, even though we are very young and small, demonstrates a level of quality that we can be proud of. To kick this off, this weekend I wrote a small tool called battery that helps us assure quality. I created a validation test for every accomplishment and battery runs all the accomplishments and feeds them this data that will cause an accomplishment to succeed as well as fail. This serves a few valuable purposes:

  • We now have better testing for new contributions and we can test both success and failure more effectively.
  • We can build testing into the accomplishment submission process so that when someone contributes an accomplishment we will ask them to also submit a test file (the test file is extremely simple and just specifies data used for success and data used for failure). This should take a contributor ten seconds to put together.
  • Finally, we can now run battery in an automated environment every day and have it alert us when one of the tests fails. This gives us better visibility on our accomplishments collections to ensure that we can assure quality and resolve issues quickly.

As an important part of building good design into the system, battery was designed to not require any changes to the existing accomplishments sets and require a bare minimum from our contributors who should be spending more time having fun writing accomplishments than caring about tests. I am delighted with the results.

The Road To 0.2

In addition to helping to ensure the accomplishment contribution process is simple (see our list of ideas for accomplishments and how to create them), we have been planning the 0.2 release. This will continue to focus on refinements and building a strong, reliable platform for both community and local accomplishments.

We will be focusing on the following in the 0.2 cycle:

  • Local Accomplishment Support – in 0.1 we focused our efforts primarily on community accomplishments (that is, accomplishments that need to be verified). Although we have always supported local accomplishments (these are accomplishments on your computer such as installing a package for the first time or sending your first email), this local support was a little broken in 0.1. I have already landed a branch from Rafal that fixes these bugs, using GNOME Mines as the test application. We will continue to refine this support.
  • Daemon and API Refinements – this won’t be visible to the user but we are planning a raft of API improvements to ensure that the back-end daemon is precise and high quality. This requires some functional changes, API naming conventions, standardizing on accomplishment IDs and other improvements.
  • Growing Ubuntu Community Accomplishments – we plan on continuing to grow and expand the Ubuntu Community Accomplishments collection. We need help though, and that help could come from you! If you know a little Python and want to help our community, be sure to let me know! You can also join our IRC channel at #ubuntu-accomplishments.
  • Introducing Ubuntu Desktop Accomplishments – we plan on introducing our first set of desktop accomplishments that can be used with the local accomplishments feature in the system. This will help us to start mapping out an awesome journey for how ours users use the desktop, discover things to do, and more!

It was wonderful to see the excitement and interest around Ubuntu Accomplishments at UDS, and I am excited to see where the project can take us. If you want to join us, be sure to join the mailing list and/or join us on IRC on freenode in #ubuntu-accomplishments.

Read more

Just a quick reminded that my band Severed Fifth will be playing tonight at:

Roosters Roadhouse, 1700 Clement Avenue, Alameda, CA 94501

This is about a 5 – 10min cab ride from the Oakland Marriot hotel.

Get down there for about 7.30pm to ensure you get your tickets as the show has sold out of pre-sold tickets. We go on stage at 8pm. Hope to see you there!

Read more
Stéphane Graber

Quite a few people have been asking for a status update of LXC in Ubuntu as of Ubuntu 12.04 LTS. This post is meant as an overview of the work we did over the past 6 months and pointers to more detailed blog posts for some of the new features.

What’s LXC?

LXC is a userspace tool controlling the kernel namespaces and cgroup features to create system or application containers.

To give you an idea:

  • Feels like somewhere between a chroot and a VM
  • Can run a full distro using the “host” kernel
  • Processes running in a container are visible from the outside
  • Doesn’t require any specific hardware, works on all supported architectures

A libvirt driver for LXC exists (libvirt-lxc), however it doesn’t use the “lxc” userspace tool even though it uses the same kernel features.

Making LXC easier

One of the main focus for 12.04 LTS was to make LXC dead easy to use, to achieve this, we’ve been working on a few different fronts fixing known bugs and improving LXC’s default configuration.

Creating a basic container and starting it on Ubuntu 12.04 LTS is now down to:

sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-container
sudo lxc-start -n my-container

This will default to using the same version and architecture as your machine, additional option are obviously available (–help will list them). Login/Password are ubuntu/ubuntu.

Another thing we worked on to make LXC easier to work with is reducing the number of hacks required to turn a regular system into a container down to zero.
Starting with 12.04, we don’t do any modification to a standard Ubuntu system to get it running in a container.
It’s now even possible to take a raw VM image and have it boot in a container!

The ubuntu-cloud template also lets you get one of our EC2/cloud images and have it start as a container instead of a cloud instance:

sudo apt-get install lxc cloud-utils
sudo lxc-create -t ubuntu-cloud -n my-cloud-container
sudo lxc-start -n my-cloud-container

And finally, if you want to test the new cool stuff, you can also use juju with LXC:

[ ! -f ~/.ssh/ ] && ssh-keygen -t rsa
sudo apt-get install juju apt-cacher-ng zookeeper lxc libvirt-bin --no-install-recommends
sudo adduser $USER libvirtd
juju bootstrap
sed -i "s/ec2/local/" ~/.juju/environments.yaml
echo " data-dir: /tmp/juju" >> ~/.juju/environments.yaml
juju bootstrap
juju deploy mysql
juju deploy wordpress
juju add-relation wordpress mysql
juju expose wordpress

# To tail the logs
juju debug-log

# To get the IPs and status
juju status

Making LXC safer

Another main focus for LXC in Ubuntu 12.04 was to make it safe. John Johansen did an amazing work of extending apparmor to let us implement per-container apparmor profiles and prevent most known dangerous behaviours from happening in a container.

NOTE: Until we have user namespaces implemented in the kernel and used by the LXC we will NOT say that LXC is root safe, however the default apparmor profile as shipped in Ubuntu 12.04 LTS is blocking any armful action that we are aware of.

This mostly means that write access to /proc and /sys are heavily restricted, mounting filesystems is also restricted, only allowing known-safe filesystems to be mounted by default. Capabilities are also restricted in the default LXC profile to prevent a container from loading kernel modules or control apparmor.

More details on this are available here:

Other cool new stuff

Emulated architecture containers

It’s now possible to use qemu-user-static with LXC to run containers of non-native architectures, for example:

sudo apt-get install lxc qemu-user-static
sudo lxc-create -n my-armhf-container -t ubuntu -- -a armhf
sudo lxc-start -n my-armhf-container

Ephemeral containers

Quite a bit of work also went into lxc-start-ephemeral, the tool letting you start a copy of an existing container using an overlay filesystem, discarding any change you make on shutdown:

sudo apt-get install lxc
sudo lxc-create -n my-container -t ubuntu
sudo lxc-start-ephemeral -o my-container

Container nesting

You can now start a container inside a container!
For that to work, you first need to create a new apparmor profile as the default one doesn’t allow this for security reason.
I already did that for you, so the few commands below will download it and install it in /etc/apparmor.d/lxc/lxc-with-nesting. This profile (or something close to it) will ship in Ubuntu 12.10 as an example of alternate apparmor profile for container.

sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-host-container -t ubuntu
sudo wget -O /etc/apparmor.d/lxc/lxc-with-nesting
sudo /etc/init.d/apparmor reload
sudo sed -i "s/#lxc.aa_profile = unconfined/lxc.aa_profile = lxc-container-with-nesting/" /var/lib/lxc/my-host-container/config
sudo lxc-start -n my-host-container
(in my-host-container) sudo apt-get install lxc
(in my-host-container) sudo stop lxc
(in my-host-container) sudo sed -i "s/10.0.3/10.0.4/g" /etc/default/lxc
(in my-host-container) sudo start lxc
(in my-host-container) sudo lxc-create -n my-sub-container -t ubuntu
(in my-host-container) sudo lxc-start -n my-sub-container


Outside of the existing manpages and blog posts I mentioned throughout this post, Serge Hallyn did a very good job at creating a whole section dedicated to LXC in the Ubuntu Server Guide.
You can read it here:

Next steps

Next week we have the Ubuntu Developer Summit in Oakland, CA. There we’ll be working on the plans for LXC in Ubuntu 12.10. We currently have two sessions scheduled:

If you want to make sure the changes you want will be in Ubuntu 12.10, please make sure to join these two sessions. It’s possible to participate remotely to the Ubuntu Developer Summit, through IRC and audio streaming.

My personal hope for LXC in Ubuntu 12.10 is to have a clean liblxc library that can be used to create bindings and be used in languages like python. Working towards that goal should make it easier to do automated testing of LXC and cleanup our current tools.

I hope this post made you want to try LXC or for existing users, made you discover some of the new features that appeared in Ubuntu 12.04. We’re actively working on improving LXC both upstream and in Ubuntu, so do not hesitate to report bugs (preferably with “ubuntu-bug lxc”).

Read more

Some of you may have seen the news of our very first Ubuntu Accomplishments release. Thank-you to everyone for testing the system; the feedback has been wonderful so far. :-)

The power of the Ubuntu Accomplishments system is dependant on the range of accomplishments available to our users; a comprehensive range of accomplishments that span the full Ubuntu community will make the system an exciting and empowering resource. As such, I would like to put out a call to encourage you lovely people to contribute some accomplishments

Fortunately all you need to know is a little Python to contribute here.

How to Participate

This is how you can help:

  1. First, ensure you are running the new release. Find out how to install it by clicking here.
  2. Now familiarise yourself with our guidelines for what makes a great accomplishment (we are looking to avoid the ‘X number of SOMETHING achieved‘ accomplishments as they can be gamed and abused easily. We are instead looking for accomplishments for new experiences and skills such as ‘First Translation Made‘ or ‘First Contribution to the Ubuntu Sponsorship Queue‘. We have lots of ideas available on this page for inspiration!
  3. Now read the tutorial and create your accomplishment (thanks to Rafal Cieslak for his excellent work on the tutorial).
  4. With your accomplishment ready, submit it to the project and we will review it: details of how to do this are in the tutorial.


Importantly, while this blog post is seeking contributions for the Ubuntu Community collection of accomplishments, if you want to create a collection of accomplishments for your community or project (e.g. your software project, distro, local user group etc), you can use the same tutorial and resources to get started! Let us know if you have any questions!

Getting Help

If you have questions, you can get help in a few places:

  • Join the mailing list – we have an active email discussion list and you are welcome to join and post questions.
  • IRC Channel – we have the #ubuntu-accomplishments channel on the freenode IRC network.

Thanks so much for your contributions!

Read more

Yesterday I announced the first Ubuntu Accomplishments release. It is wonderful to see so many of you trying the system; many thanks!

As part of the 0.1 release, we have added David Callé‘s Ubuntu Accomplishments Unity lens to the 0.1 PPA. It looks like this:

The lens neatly integrates into your desktop your trophies and available opportunities. Clicking on an opportunity will show information about how to accomplish it.


To install the lens first, add the PPA to your system with:

sudo add-apt-repository ppa:ubuntu-accomplishments/releases

Now update your package list:

sudo apt-get update

Ensure you have the full Ubuntu Accomplishments system (including the accomplishments-lens package):

sudo apt-get install accomplishments-daemon accomplishments-viewer
ubuntu-community-accomplishments accomplishments-lens

You will need to re-login to see the lens.

Please note: you will need to have the accomplishments back-end process running to use the lens. This is simple: just load Accomplishments Information from the dash and this will start the back-end process. You can now view the lens.

As ever, you can report bugs here.

Thanks, David, for your efforts in creating the lens!

Read more

Back in January I first posted about initial progress on the Ubuntu Accomplishments project; an effort to present our users with fantastic documentation and guidance for a range of different community activities and automatically award our users with trophies when they accomplish those activities. The end-goal is to make opportunities on your computer and in your community more discoverable and satisfying when accomplished.

Importantly, Ubuntu Accomplishments is not about meaningless awards such as 1000 posts to a forum or 500 bug comments (the like of such can be easily gamed and generate too much noise to signal), but we are instead focusing on awards for new experiences and skills acquisition (e.g. learning how to file a bug, becoming an Ubuntu Member etc). You can see our guidelines for how we decide on what makes a great accomplishment here.

Well, after a furious period of development, I am delighted to announce our very first release: Ubuntu Accomplishments 0.1. This first release is a huge milestone in the project: this isn’t just a small GUI app…to build this first milestone involved creating a back-end service (featuring a DBUS API), a Python API to ease writing accomplishments, a server validation service, a graphical front-end, and a collection of community accomplishments to get people started. In addition to this everyone’s favorite Callé…David Callé…has created a Unity lens for the system which we plan on releasing over the next few days too.

Currently the 0.1 release does the following:

  • Browse a range of different Ubuntu Community opportunities and filter them based on different categories.
  • Click on different opportunities to discover more about them, what is involved, how to get started, as well as tips and tricks for success.
  • Some opportunities require others to be completed before you can progress: this provides a logical on-ramp for participation.
  • Accomplishments are automatically checked to see if you have achieved them. If you have they are verified to ensure they can’t be faked.
  • The GUI client shows your collection of accomplished trophies as well as the available opportunities.
  • Comprehensive Unity integration featuring Launcher numbering, notification bubbles, and hi-resolution icons.
  • Full translated and available in a range of languages (language support varies due to the early nature of this release…but you you can help translate it!).
  • We also provide a collection of community accomplishments covering Development, LoCo Teams, Juju, Governance and more. We need more accomplishments contributing and I will be talking more over the next few days about how you can contribute.

The goal of the 0.1 release was to demonstrate the core system working and I am delighted to share this first release with you.


Please note, there is a reason why this is version 0.1 – this is a very early version, so use with caution. There are bound to be some bugs, but we welcome all testing so we can resolve bugs and problems. Thanks!

The 0.1 release is only available for Ubuntu 12.04 and is available in a PPA. You will need to have an Ubuntu One account set up and working (you don’t need a paid account, just the free account).

You can install the PPA by following these instructions.

First, add the PPA to your system with:

sudo add-apt-repository ppa:ubuntu-accomplishments/releases

Now update your package list:

sudo apt-get update

Now install the packages:

sudo apt-get install accomplishments-daemon accomplishments-viewer

To use the system simple click on the Accomplishments Information app in the Unity dash. The graphical app will load and if you wait a few minutes you should start seeing notification bubbles arriving that tell you which trophies you have achieved.

You can browse the Opportunities by double-clicking on them to read more about them. You can view your collection of trophies by clicking on My Trophies.

Known Issues

A few known issues with this first release:

  • Unicode decode crash – we have had a report of a translation causing a crash when clicking on an opportunity to view it.
  • You have to start the GUI to start the back-end process. This will be started on login in the future.

Reporting Bugs

If you find a bug you can report it here. We are keen to know about all bugs you find!


I just want to offer thanks to the following people who helped get this 0.1 release out:

  • Rafal Cieslak
  • Stuart Langridge
  • Matt Fischer
  • Duncan McGreggor
  • David Callé
  • Simon Watson


Next Steps

Moving forward we want to focus on these areas:

  • Growing our range of accomplishments in the community to have an expansive collection that covers all parts of the community.
  • Fix up support for local accomplishments so that you can browse opportunities for things on your computer (e.g. sending your first email in Thunderbird) and be awardd trophies for these.
  • Fix bugs reported by you good people to get things rock solid.
  • Expand our translation coverage.

If you would like to get involved and participate, please join our mailing list. Thanks!

Read more

Many of you will be familiar with the Ubuntu Accomplishments project I have been working on recently. Well, we are gearing up to release our very first 0.1 release in the next week in a PPA, but we have one area where I would like to reach out to you folks for help.


We want to ensure that Ubuntu Accomplishments is available in as many languages possible; not just the application, but also the fantastic documentation that is part of the application.

As such, can I please ask you wonderful people to help contribute your translations by following the instructions below.

Translating the Application Software

We want to ensure the backend process (which displays the accomplishments achieved and opportunities unlocked bubbles) as well as the graphical client is fully translated. To translate just follow these steps:

  1. Go to the daemon translations page and the viewer translations page.
  2. Ensure you have the language you want to selected (you can change this by clicking the Change your preferred languages… link at the bottom of the page.
  3. You should see a row for each language you have selected. Click on the number under Untranslated and go and add your translation.
  4. Sit back and bask in your wonderful contribution to Ubuntu Accomplishments!

Oh, and if there are no translations for your chosen language, please do go and add translations!

Translating the Accomplishment Information

For each of the different opportunities (things you can achieve in the system) we provide comprehensive documentation for how to achieve that particular accomplishment.

Translating these is very similar. To do this just follow these instructions:

  1. Go to the Ubuntu Community Accomplishments translations page.
  2. Ensure you have the language you want to selected (you can change this by clicking the Change your preferred languages… link at the bottom of the page.
  3. The translation of Ubuntu Accomplishments works a little differently. You should IGNORE the English line at the top and instead look at the documentation just below. There it tells you which accomplishment you are editing and what the original English translation is.
  4. You can now type your own language’s documentation into the New translation box. For the larger chunks of text you can use the grey button at the end of the New translation box to make the text entry bigger. If there is already a translation there and you want to edit and improve it, click the Current <language> translation button and the text will be copied to the edit box where you can edit it.
  5. Now click the Save button at the bottom of the page to save your contributions. Sometimes you have to scroll to the right to see the Save button due to some of the long chunks of the text on the page.

Thanks in advance to every one of you who helps to translate Ubuntu Accomplishments!

Read more

Today we released the highly-anticipated Ubuntu 12.04 LTS release after a busy six month development cycle. The release is available in Desktop (see OMG! Ubuntu!’s great summary), Server, and Cloud Infrastructure form. You can also install the desktop easily from Windows by clicking here.

I am hugely proud of Ubuntu 12.04 LTS; I believe it is the best and bravest release we have ever shipped, and I am delighted to see Ubuntu’s continued progress in delivering a simple, elegant, and powerful Free Software platform for the Desktop, Server, and Cloud.

Aside from the release, the Ubuntu 12.04 cycle was in my mind an evolutionary cycle for us as a project. The focus on quality was firm and unrelenting; initiatives such as gated trunks, acceptance criteria, automated testing, and a strong focus on growing a testing community and widening our manual tests, all contributed to delivering a solid release. Canonical as a company continued to see a lot of growth, as did our community with initiatives such as the Developer Advisory team, application developer focused outreach, and our continued growth of the Juju charming community. I am not only proud of the 12.04 LTS release, but also of these workflow and growth improvements we also made as a community that are not immediately visible in the release. Thank-you to everyone who helped drive this important work.

Thank-you also to everyone of you who has participated in this release, whether you have worked on packages, provided testing, documentation, translations, support, advocacy, or anything else. Ubuntu really is a community effort, and without our wonderful community of contributors and supporters we would be nothing. Thank-you for all of your hard work and fantastic efforts.

After a busy six months let’s all take a few minutes to take a step back and be proud of what we accomplished. Rock and roll. :-)

Read more


View larger.

…that’s why. :-)

Read more