Monday, 25 October 2010

Unity on the Desktop

Mark's keynote at UDS spoke about one of the biggest changes to happen in Ubuntu since it's inception: Unity as the default desktop. As the technical lead for the project, I wanted to explain some of the technical changes that will occur this cycle to put us in the best position for Natty:

Graphics Support

Firstly, it's good to mention that it's actually "Unity as the default desktop if your graphics card and drivers support it". We've learnt a harsh lesson this cycle about where Unity works well, where it should work but doesn't and finally where we just can't expect it to work.

Therefore, it is going to be a primary focus this cycle to enable Unity on as many chipsets as possible. We will be much more lenient about what OpenGL features are required (allowing runtime fallbacks through detection and through quirks files for those chipsets that lie about their capabilities).

That means that we'll make a best attempt at running, trying to gracefully degrade through features, but at least getting to you a panel, launcher and places.

So what happens when we detect that we just can't run? We hope to automatically fallback to GNOME Desktop, which will give the best experience at that point.

Performance and Compiz

This is a huge issue on the current Unity implementation. Yes, if you have good hardware it'll work fine, but it's unacceptable for it not to be performant on, for instance, Intel i945 based systems. There are a few reasons for the current performance issues, and after much thinking and testing, we have decided to move Unity's view implementation from Mutter to Compiz 0.9.

For what Unity needs to do, Compiz will give us a huge benefit in terms of performance and power usage, as well as allowing us to get closer to the graphics hardware and easily implement the graceful fallbacks of GL capabilities that I mentioned above.

It also means we can build on the great work of the Compiz team's upstream work and their excellent window management plugins to provide a more complete desktop experience, faster.

We're finalising some technical bits and pieces with regards to the switch and we're aiming to get it into archive ASAP. I'll be sure to post here as soon as we've done that.

Stability and Quality

Stability is the final technical issue to solve for the desktop. We have come leaps and bounds from the early Maverick cycle (currently most of the crashes are graphics issues, trying to do things the drivers don't support). We want to continue this and we will be pushing more things out of the Unity process and into D-Bus based services that can crash at their pleasure (but hopefully they won't :), and Unity can just restart the services instead of crashing itself.

Unity was always architected like this, but we've found ways to get the last bits of logic out of process and so you should see a rock-solid Unity on your desktop this cycle.

Quality is of upmost importance and is the focus for this cycle, over features or anything else. The community did an excellent job last cycle for Unity and we hope to repay the favour by fixing as many bugs as possible and assuring that Unity oozes quality.

Finally, for those thinking that we are starting from scratch due to the move to Compiz, I can assure you that we aren't and honestly, we couldn't. Unity is architected to separate the views from the models and controllers, and we are using that to enable us to quickly port our views to Compiz while keeping and bug fixing the models and controllers.

Saturday, 17 July 2010

Gwibber Concept - Part 1

I was going through one of my old computer's hard-drives recently and found lots of mockups from a couple of years back of GNOME applications I had done in my spare time. I was inspired and opened up Inkscape to see if I could still come up with anything interesting. Gwibber was my victim of choice as I had spoken to Ryan and Ken at UDS recently about it's UI and the difficulties Gtk was providing them (and of course, someone saying something is hard to do in Gtk is always a challenge I can't resist ;).

Gwibber was an interesting problem user-interface wise as, although there are many Twitter applications with great UIs out there, there aren't many that have to:

1. Support multiple accounts from different services, presenting the information in one stream to the user
2. Be able to filter the main view to one account (i.e. choosing to only see Twitter-related material in the views)
3. Integrate into many different desktops, but still try and have it's own identity

So, after thinking about these points and also looking at/using the best microblogging applications on Windows and Mac (Seesmic, Tweetie, TweetDeck), I've stolen a lot of ideas and come up with:

Theme-wise, they are obviously using Ubuntu's Ambiance theme as the palate, but I think the look would work fine on Fedora/SuSe as long as your taking the right colours from the Gtk theme. There is controlled use of gradients to work better with Gtk themeing (so you get something good looking without having to write tons of custom widgets which do lot's of drawing). There is use of some DX-team tech (Windicators, CSD), but nothing that couldn't have a simple fallback on other desktops.

I have highlighted some of my favourite things in the next image:

There are lots of nice ideas (I think) missing, hence this is "part 1". Hopefully I'll have time to finish off the other views soon, as well as apply some more polish to these ones (and apply feedback you give :).

Okay, time to pack bags for flight tomorrow to Prague for the Platform Sprint. I've got more ideas for other applications that could fit into this style (Rhythmbox and Evolution are on my radar), if you guys like it.

Monday, 10 May 2010


Following on from Mark's keynote at UDS, I'm very pleased to announce Unity:

In it's current iteration, Unity consists of an easy-to-use launcher on the left and a panel up top. We have been and will continue to focus on a very quick log-in time, touch-friendliness and excellent usability.

The launcher allows you to launch and switch to your favorite programs, as well as any other applications you open during your session. The launcher is designed to be touch-friendly and group all your application windows into one icon. You can easily access your windows via a right-click (or long-touch) on the application icon. Adding a new favorite launcher is as easy as launching the application and then right-click-> Add to launcher.

The panel is a custom implementation that consists simply of a Ubuntu icon allowing you to quickly pick an open window and, on the other side, we've been able to harness the excellent work being done in the other half of the Desktop Experience team on Indicators, which allow us to render you panel entirely in Clutter.

In it's current incarnation, Unity is geared towards a 'light' variation of Ubuntu, which concentrates on getting the user to the web as quickly as possible. We would like Unity to be the default session for Ubuntu Netbook Edition 10.10 (Maverick) and we hope to present some ideas this week to show how we think we can make the transition to a mostly web-based session to a more fully-featured session for netbooks (including search, better file management, and easier window management). I hope people will attend the UNE sessions this week (either personally or remotely) and give their feedback/ideas).

I'm really excited about this release and I can't wait to begin working on some of the new ideas (which you'll hear about shortly from others involved in the project :). In addition to the user-friendliness, I feel there are some interesting technical aspects of Unity that I'll detail in another post. For now, please go ahead and grab Unity using the following instructions:

1. sudo add-apt-repository ppa:canonical-dx-team/une
2. sudo apt-get install unity
3. Logout and then log back in selecting 'Unity UNE Session' from your login screen.
4. Enjoy!

Sunday, 11 April 2010

Shiney Shiney

Seeing as I wasn't ever able to complete the work I started on AWN 0.4 a couple of years ago, it's only fitting that I congratulate the guys that have done a *massive* amount of work since picking it up over a year ago and brought AWN 0.4 to release!

It contains a bunch of new features, as well as being a complete rewrite from the ground up, introducing some exciting possibilities and should allow much faster release cycles in the future.

Instead of going through all the features here, I'd ask you to check out Michal's excellent post which has all the new features plus pictures and videos.

I've been told it should be landing in Lucid's archives soon, so keep a look out. A tarball is available here. If you have any questions/comments, please see the wiki or join #awn on Freenode.