Tuesday, October 26, 2010

This is it!

This is it! Porting the Unity view to Compiz, comibing the Desktop and UNE editions, and defaulting to UNE for users who can run it. This is is a huge opportunity for the Ubuntu community to make something that can deliver free desktops to millions and millions of people who don't have software freedome today. And also, having a lot of fun with our friends doing something really big along the way.

There is also a big risk here. We *have* to make Natty "really good". But what does "really good" mean? I guess this is inherently subjective, so here's my take on it. "Really good" is multi-faceted, and for me, I think about Unity "goodness" in the following dimensions.
  • Launcher Performance - Is the launcher snappy and responive?
  • Launcher Quality - Is the launcher robust and not buggy?
  • Launcher Appeal - Is the launcher visually beautiful and are the interactions fun?
  • Launcher Functionality - Does the Launcher have the essential functions that users need?
  • Find and Launch Apps - Can users easily launcher their apps?
  • File Management - Can users find their files and operate on them as desiered?
  • Search - Does the Unity search work well for users?
  • Dash Appeal - Is Places visually beautiful and are the interactions fun?
  • Dash Performance - Is places snappy and responsive?
  • Dash Quality - Is places robust and not buggy?
  • Indicator Functionality - Do the indicators have the essential functions users need?
  • Indicator Quality - Are the indicators robust and not buggy?
  • Indicator Performance - Are the indicators snappy and responsive?
  • Indicator Appeal - Are the idnicators visually beautiful and are the interactions fun?
  • Global Menu Integration - Are applications across the desktop working well with the Global Menu?
  • Application Launch Time - Do applications seem to launch quickly and smoothly?
  • Application Window Management - Can users position windows, and use desktops as desired?
  • Accessibility - Is the toolkit accessible to screen readers, is the functionality of the desktop universally available?
So, after thinking about all these different facets, I hit on the idea of represent the current state on the target state in a spider diagram. In the following diagram, the blue shape is the current shape of Unity (in Maverick) and the Red shape is where I think Unity needs to get to in Natty. I made this by grading each facet on scale of 1-10 in an Open Office Spreadsheet. Again, in a subjective manner.

So, clearly, there is a lot of work to do to get Unity "into shape". And, of course, we still need to be awesome maintainers. We need to keep up with upstreams, fix bugs, respond to users, etc... This part of our work has the further complication that the Server Edition is starting to get some more serious usage, so we need to ensure that we're doing the right things for server as well.

So, how do we be great maintainers, while getting Unity into great shape? Well, for the Ubuntu Engineering Team (of which I am the Director), the answer is to focus. I will be asking each team to limit their work items so that they can have plenty of bandwidth open to help with bug finding, bug fixing, enhancing performance, etc... whatever it takes to change the shape of the spider diagram.

Here are the 5 foci for Ubuntu engineering:
  1. Unity - Well, not much more to say what I mean here.
  2. 2D experience - Not all users will have hardware to run Unity. For these users, we must ensure that Ubuntu continues to work really really for them, just as well as Maverick works, and just as well as Unity in Natty works.
  3. Software Center - This an important area for us to continue to make innovation and progress in order to meet the needs and expectations of users and software developers. So, this is the one area of actual feature development that is staying on the list of focus areas.
  4. Testing - Ubuntu Engineering needs to become a testing organization. I want to see automated itnegration testing for Unity, and I want to see it starting soon.
  5. Contributions - This is possibly the most important part. We need to step up our responsiveness to existing core contributors and new contributors. We should be implementing fewer features ourselves, but we should be ensuring a really great and personal experience for people who contribute patches, apps, etc... So, Ubuntu Engineers should be signing up for fewer features, but more time for contributors.