This is a personal post and does not necessarily represent the views or opinions of my employer, Canonical.
Wow, what a cycle the Ubuntu 11.04 Natty Narwhal one has been. When we set out on this mission back in October 2010 there were uncertain waters ahead of us. We were proposing Unity for inclusion in our main Ubuntu desktop version, and we knew this was a significant undertaking that touched a lot of teams and people. As we race towards the release of Ubuntu 11.04 Natty Narwhal on the 28th April 2011, I am proud of the progress everyone has made. It has been a cycle where we all knew we needed to come together as a community to deliver, and many people have played a key role in that success so far.
Delivering Unity in 11.04 was a pretty ambitious goal; not just a case of deploying it into the distribution, but it needed to be ported to Compiz (after we experienced some performance issues with it’s previous mutter/clutter base), accessibility support needed building in, new designs needed to be implemented, and Unity needed to meet the high quality standards that our users should expect. In the words of Stiffler, it was “on like Donkey Kong” for 11.04.
Joining The Dots
From a public perspective, most curious onlookers would only assess the raw software development machinery of this work; tasks such as making Unity fast and stable, porting it to Compiz, building in features and accessibility etc. It is easy to assess this work; keep an on the Launchpad project and the bug list, read the news sites, hang-out in
#ayatana on Freenode and get a general feel for the work going on.
There were though many internal Canonical team management and coordination tasks to achieve. Unity is not produced by one team – the Design Team, Desktop Experience Team, Ayatana Contributors, Ubuntu Platform Team, Ubuntu Accessibility Team, Community Team, Multitouch Team and QA Team all have a piece in this jigsaw puzzle, and as engineering managers, we set out to ensure these teams were all aligned like cogs in a smooth-running machine.
Holy confusion, Batman! How many metaphors does Bacon need to use in every blog post?!
It is a pretty comprehensive challenge to ship a new Operating System every six months, and when you have this many teams working together to deliver a single consistent product, it requires some careful coordination. Sure, there were some snafus and some crossed-wires at times, but by-and-large, the teams worked exceptionally well together. Credit goes to the team leads for ensuring these lines of communication were clear.
At the beginning of the cycle Unity was something of a blank canvas. Jason Smith had already done some work in porting it to Compiz, and I remember Jorge and I intently looking forward to the first drop of it in the distribution. When it eventually landed in Natty it was heavily broken, Compiz constantly crashed, and it had a fraction of the functionality it has now. It was broken, but it was a start. Now the team could keeping revving on it.
Thus started the weekly cadence by Desktop Experience team, led by David Barth and Duncan McGreggor, and the Ubuntu Desktop team, led by Jason Warner. With it, the Desktop Experience team would feverishly work all week on functionality and bug fixes and every Thursday Didier “didrocks” Roche and co. from the Desktop Team would package Unity and upload it into Natty.
didrockson IRC, but your mind sees this guy.
Step by step, features landed…the Launcher…the Indicators…the Lenses…the Dash…and more. We would see the details starting to form; little niceties such as only showing compatible apps when dragging a file onto the Launcher, the window management features, and the Launcher progress bars and emblems. We saw the performance solidifying in the Lenses and Dash. We saw little bits of fit and finish forming, and while Compiz crashers were a common source of complaints from early Natty testers, Sam “SmSpillaz” Spilsbury worked around the clock to get them fixed and bring the stability that even our development branch users have come to expect in Ubuntu.
While all of this was going on, I was also taking Unity and it’s success very seriously in my own team. Aside from having weekly calls with some community teams and helping the different team leads to ensure the lines of communication were flowing smoothly, my team was focused firmly on community growth.
At the start of this cycle I tasked Jorge Castro with a very specific set of objectives. That is: I wanted him to work on growing the Unity contributor community. This task involved a range of different components – I had built unity.ubuntu.com to get him started, but I asked him to ensure the contributor workflow was well documented and simplified and to regularly reach out and inspire people to contribute. At the heart of this campaign I wanted to see a continuation of the making Ubuntu more personal meme that I kicked off at the last Ubuntu Developer Summit, and to build on the cadence approach that has become commonplace in the Ubuntu community.
The result of this was the Unity Bitesize Bugs campaign – a weekly set of simple and easy to fix bugs that help new contributors get started easily. Ever since Natty opened up for development, we were steadily growing a community of testers who would test all aspects of the new code that was landing and providing a solid bug list for the Unity developers to work on. The goal was to take this bug list, tease out which ones are great for new contributors to get start with, and build awareness around those bugs. Kudos to Alex Launi for some stellar bug triage work in this ares; a man so capable, he could be confused for a bot. It’s happened before with other people. Really.
Happiness is typing
ubuntu-bug unityinto a terminal”.
The Unity Bitesize Bugs campaign was built on top of new documentation, simple instructions for how to participate, and a weekly set of blog posts that encouraged participation and celebrated the success of those who did. Jorge did a wonderful job with this work. He created these resources, reached out to new community members, and showcased these personal stories. It was wonderful to see new folks getting excited about the technology and joining the Ayatana and Ubuntu family.
The result of this work has been a significant number of new contributors participating in Unity and Ayatana, more activity in
#ayatana on freenode, a constant stream of merge proposals, and the Unity experience getting better every day for everyone. Thank-you to everyone who has participated and continued to be a part of our community!
On the 24th Feb 2011 we hit Feature Freeze and the team shifted their focus from feature development to bug fixing. Each week the team would dig through the Unity bug list contributed by testers throughout the Natty cycle and focus on the most important bugs. On average each Unity release fixes around 60 bugs a week. Pretty impressive work, and testament not only to the work going on in the Desktop Experience team and by our community contributors, but also the global Natty testing community who have been diligently upgrading each week, testing, and filing bugs.
This weekly cadence and the strong focus on bug fixing has resulted in Unity in Natty getting steadily more and more stable and efficient. It really feels like everything is really solidifying – there is still lots to do, but we are getting there.
Today is Mon 4th April and we still have three weeks until we release. Already Unity in Natty is feeling great, and I have little doubt that as the team drills through the bug list Unity will continue to feel more and more consistent. I am confident Natty is going to be a great release. Sure, there will still be some bugs – no software is ever perfect – but I personally will be satisfied that everyone with a position of influence on Natty (such as all the folks I have mentioned thus far), will have given their level-best to help make Natty a success.
Software is software, and while exciting, what excites me personally about Natty is actually not the software. The goals and focus of Natty is what I have been dreaming about since I got involved in Open Source – to take the value and opportunity of collaborative community and to work together to make technology better to help make people’s lives better.
Linux has always traditionally served the needs of technical types such as myself very well, and that is awesome. One of the reasons I got interested in Linux was that I had a full-blown UNIX on my computer. I loved that the technology wasn’t hidden from me. I remember when I was eighteen I would print out directory listings of important system directories such as
/etc and go through each file one by one and learn what the file did. It helped working in a computer bookshop with little to do, lots of Linux books, and a boss that had no interest in making any of us work. I used it as an opportunity to learn, and it was a real adventure for me – I would literally stay awake at night thirsting for more knowledge.
This period always reminds me a little of this gem from XKCD:
While this wonderful sense of technical freedom is a thrill for many of us, and it is certainly a very valid product of the freedom we celebrate in our technology, it is not for everyone.
My primary motivation has always been in bringing freedom to those folks who don’t have the technical expertise and interest that we have; the mums and dads, auntie’s and uncles, school kids, teachers, small business owners, charity workers, and others who consider computers a tool and not a philosophy. While I get a real kick seeing people enjoying using Ubuntu and enjoying the technology and how it is put together, what really gets my engines running is seeing Free Software delivering access to technology and information for folks who haven’t got the first idea of what the software is or how it works. For me, technology that serves a very non-technical benefit (such as learning, getting access to healthcare information, or helping someone to express their creativity or spirit) is a wonderful outcome of what many of us can bring to the fold.
This is a huge opportunity for Free Software; to build a solution for these end-users; a solution that distills the freedoms we often celebrate in the Free Software world such as transparency, openness, standards, and collaboration, in a form where these users purely feel the benefits. This is not a one horse race. I am delighted that this is an opportunity that many of us are aiming for, be it Ubuntu with Unity, Fedora with GNOME Shell, Elementary, the KDE team, or any other projects for that matter.
The Complete Package
What excites me specifically about Ubuntu 11.04 is that it feels like the pieces are coming together. There has been a lot of talk recently about shells, such as Unity and GNOME Shell, but the shell is really only a tiny part of the puzzle. While the shell needs to deliver a great experience, so does the installer, the ability to browse and install apps easily, access social networking, send email, listen to music, watch videos, create new content and more. I really feel like Ubuntu is getting to a point where the experience of these different elements is by-and-large sheened to the point where most of the end-user demographic that I have been speaking about could get by with ease.
Of course, and as I am sure you cynical buggers will point out, there are deficiencies, bugs, and problems. There always will be — this is software — but I feel we are getting to the point at which the whole is really projecting an image and experience much more than the sum of it’s parts. I have often felt similar about previous releases, but it feels much more prevalent and tangible in Unity.
I am excited, and I am thankful to every one of you folks who has the same dream – to bring Free Software to everyone and help change people’s lives in the process and them that little bit better.