Boy we’ve got something exciting for you today – a lengthy exclusive interview with Unity’s Technical Lead and Canonical DX Team Member Neil Patel.

Neil is a 27 year old Software Engineer from Northwood, near London. He’s been working for Canonical for a couple of years, and has previously been heavily involved in the original Netbook Remix Launcher.

Now, Neil occupies his time with Unity. As the Technical Lead for Unity, he oversees a lot of the development on the new shell for Ubuntu, and leading up to Natty his job is sure to become ever more stressful.

Neil is the guy you go to with your questions about Unity, and that’s exactly what we did when I sat down for an interview with him this week.

Although it’s long, this interview is a total must read for anyone interested in the future of Ubuntu, so set aside some time and get to it!

Interview time!

We know that the focus for Unity in Natty will be on stability, but Unity was originally designed for small screens. What changes, if any, are you making to enhance the experience on a larger screen?

There are a few core issues that we’ve been trying to tackle (where ‘we’ is both the Design and DX team):

  1. The static, always-visible launcher
  2. The Dash (Places, Homescreen etc)
  3. Window Management (always maximised, undecorated vs. floating)

As you’ve seen, the launcher has grown some sense of the current situation on your desktop and can now intelligently hide itself if you have lots of windows or if you’ve maximised a window. We’re trying to get it so it’s there when you need it, and not when you don’t.

We’re trying to get it so it’s there when you need it, and not when you don’t.

The Dash has gone through a few design iterations before we were confident on how we wanted it to be presented on the desktop. We’re running a couple of weeks behind our schedule, but are hoping to starting landing the Dash work from this week (though a bunch of non-view work has already begin to creep in over the last few weeks).

The main change with the Dash is that we’re hoping to float the dash window over the rest of the windows on your desktop, allowing you to quickly activate & use it without suffering a huge context change (imagine the 10.10 style Dash on a 1920×1080 monitor!).

We’ll try and make it a ratio of your screen size, with some adjustments so it always looks good and works as quick as possible. As mentioned, you should see the start of this from this week’s release.

The Unity App Launcher, October 2010

Finally, Window Management. We knew that the merging of maximised window’s titlebars into the panel was a keeper. If you use unity now with a maximised window, it’s an incredibly “focused” experience on the work you are doing, with only 24px of height taken from the screen to give you the menubars and system state. With the hidden menubars, you get and even cleaner look (hidden menubars are still work in progress, however, so please save judgement until release :).

The auto-maximising of windows has just landed in trunk, by default, but this is just for now, until we play with the ratios for desktop mode (probably make them much tighter than netbook), or just de-activate on desktop.

One other thing I’d like to mention is the work that’s gone into making the experience with Ambience / Radience / any-Metacity-theme-that-uses-1px-borders better. Sam (Spilsbury, of Compiz fame), has worked on an experimental decorator which allows these themes to specify an invisible border around the window (in the shadow) that makes using 2, 1, or 0px border decorations much, much more comfortable. We’ve also got some other tricks up our sleeves for window management, but you’ll have to wait for them ;)

Why doesn’t Unity work on my netbook?

You’re doing it wrong! :) Seriously, though, it’s worth waiting for Alpha 2, as even I couldn’t install Natty until recently (had to upgrade from Maverick). FWIW, we have a number of developers running Unity on a Dell Mini 9 very, very smoothly.

Will Unity for Netbook Edition be any different to Unity for Desktop Edition come Natty?

Yeah, all the things which we will change for the Desktop edition will automatically switch back to netbook-style when we detect a netbook. This will obviously need some good testing, and I’m leaning towards making it an option (autodetect / desktop / netbook) in case people want to use Desktop on netbook or vice versa.

Backlight on and off
Dock effects in Unity (Natty branch)

We believe you personally own a lot of gadgets from all sorts of manufacturers – everything from an iPad to a Kindle to an Android smartphone. How do you personally feel Ubuntu compares?

Yeah, lots of gadgets :) I think Ubuntu Core is mostly there, we have excellent developers working on making Ubuntu faster, less power hungry and more stable (together with the goodness coming from upstream, of course).

Above Ubuntu Core, I think we’re in the right track with Unity to push our shell UI to the next level. I worry slightly that most applications are not coming with us, though, but I think that the work on Gtk3 and bringing in Qt onto the CD for 11.10 will arm developers with better tools to builder nicer applications, even if it’s just because of the two sides competing against each-other ;)

I’d just like someone to make the choice so we can all fall in line, likely grudgingly, and start building a platform.

My other little pass time is playing with SDKs of various platforms, and I think that’s where we are lacking the most. Too many languages and too many toolkits (I know that goes against what I said earlier, oh well, I’m ill!) seem to have got us to a situation where all are half-documented or half-complete and it just makes attracting new developers harder. I think the work that has begun in creating developer.ubuntu.com will hopefully guide us to the right place.

I don’t have a preferred language or toolkit anymore, I’d just like someone to make the choice so we can all fall in line, likely grudgingly, and start building a platform.

Following the announcment that Unity was desktop bound there was a lot of hot air and posturing by some sections of the community concerned about Ubuntu limiting choice, and accusations of Ubuntu becoming a free Mac OS X clone. Have you got anything to reassure these people?

I think the beauty of Ubuntu is that we don’t actually limit choice. Want to switch between XFCE, Unity, KDE, LXDE, GNOME2, GNOME3 all in one day? Go for it, it’s just an apt-get install away. Yes, I think it’s hard for us to be vanilla GNOME, due to carrying some patches etc, but honestly that’s why I moved to Ubuntu in the first place, I wanted it to just work. There has been a lot of work by the desktop team to try and make many of these patches run-time optional too, if you really want to use pure upstream (though honestly I don’t know the status of that).

With regards to Unity, I’d just ask for you to bear with us. Natty release is still some time away, we have lots of changes still coming and lots of bugs still to fix. Some things don’t immediately make sense without other features landing, but we hope that the complete experience you get when you install 11.04 will blow you away.

I subscribe to OMG! Ubuntu, I know how much you guys love your bling, and so only thing I can say is “Can a team that consists of the creator of AWN, creator of Docky, creator of Cairo Dock, core contributor of Zeitgeist, maintainer of Compiz, a game developer from Ubisoft, and many other OSS contributors, really let you down?” (We’ll forget about 10.10 for this exercise ;)

How much effort has been placed on usabiltiy in Unity? Have you been collaborating with the design team on user testing and research?

A very large effort. We collaborate with the Design team throughout the cycle, working with them (technical oversight) when they are designing/mocking up new features, they then work with us when we implement those features (providing assets/opinion/etc).

My understanding of the process is that they will often come up with 2-3 (maybe more) different designs for a feature before mocking them up and user testing them (which starts the design iterations). They will also often revisit things after implementation, say if a lot of people are finding the feature difficult to use, or if we couldn’t implement it exactly and what we couldn’t do make the entire thing not work. So you’ll see every few weeks or so that Unity trunk gets hit with a “design update”, to tweak or clarify implementation.

David Siegel, one of the original Unity designers left Canonical last year

They also produce specifications of use-cases that we will use to implement the features. QA will then use these specifications to check our implementations against what was specified. This is something that we’re still getting better at, learning about what flow suits everyone best (you don’t want too many bug-fix cycles when you’re worrying more about features, but you also don’t want to hit feature freeze with 1,000 bugs to fix).

Can you name some solid design principles that Unity is built on?

I’m doing this interview at night, full of medicine and Lemsip so I’m not able to actually give you the correct answer. However, I can tell you what I see when I look at it or watch it being designed: the words that come to mind are light, space, balance and contrast.

Light and space because we don’t want to be cluttered (you’ll see how places has been simplified soon), balance because I think we hit a good point between switching/launching/notifying on the Shell without smacking you with information, and finally contrast because I think we’re good at focusing the user to certain areas when needed (this will become more apparent in the coming weeks).

That’s about as fancy as answer your getting from me right now…/me takes off the beret.

For Ubuntu to be able to compete with the big names, it not only has to be free (as in beer), but it also must to be appealing enough to convince users to make the change in the first place. What original features are you thinking of including in future revisions of Unity to really make Ubuntu stand out amongst the crowd?

That would be telling :)

To be honest, I don’t think it’s much of the secret, I believe any OS that wants to break into the market needs to be coming with stability, speed, slickness, ease-of-use, great applications, a great web browser, and awesome support.

The work on Unity adds some of these to Ubuntu, I hope OEMs see Unity and feel like it’s something that they can sell. In the same way, I hope that if we do get some space on a website or in a store, the look & feel, polish and ease-of-use grabs the attention of consumers.

The work on the Software Centre has allowed us to put applications front-and-centre, now we just need to spread the desire to make beautiful, as well as functional apps.

We just need to spread the desire to make beautiful, as well as functional apps.

Social from the start is something Mark pushed when Lucid was released last April. Is this being improved for Natty?

Yep, Ken VanDine (Gwibber developer) has been working on this. Things have slowed down recently with some big platform changes beneath us (GTK3, GDBus etc), however I hope it picks up again from now, especially as he is now in charge of the Me Menu!

If time permits, I’m also trying to help him work on making a Gwibber that looks and acts like my mockups some time back, all based on Gtk (rather than Gtk+ Webkit). If the moons align, we’ll be able to get a very fast, stable Gwibber into Natty before feature freeze.

I’m not sure if there is anything else on the radar for Natty for Social from the start, with Unity already being such a huge change for the platform. I think it’ll pick up again for 11.10.

Ubuntu’s “Me Menu”

What do you think of GNOME Shell? Have you learnt anything from them? Do you collaborate with the GNOME designers?

I think it’s cool, and I’m interested to see where they take it. Seeing the recent activity, I think the competition from Unity has helped them somewhat (as it should!) and I see a lot of Unity in their relayout branch, so I’m happy.

With regards to learning from it, I think the basic technical architecture is very similar (pane / launcher / search in WM), however at that point we start to differ greatly.

Shell does a lot of things in-process with Javascript. We decided early on (before 10.10) that we weren’t completely happy with this approach. We tried Mutter + Vala, but that didn’t work out, but now I like what we have: a fast rendering core written in C/C++ inside Compiz, with D-Bus standing between the that and the data models. I think this serves us well, and hopefully you’ll agree when you play with places in Natty, and see how much data we can push through during searches without having to effect Compiz’s performance.

Gnome Shell

I think the “let’s try and find a common design ground” didn’t really work well (indicators/appindicators/etc). I think that’s okay, though, design shouldn’t be something you should barter, it’s just as important as code and therefore it’s good that people stuck to their guns and users get to see two different visions of the desktop and choose what they like best. It makes it a pain for app developers, however I think it’ll figure itself out over time.

Design shouldn’t be something you should barter.

How are you planning to maintain Unity over time, especially when GNOME begins to change to Shell in a year or two and the backend libraries begin changing with it?

I think this has been happening already (e.g. appindicator support). I think we’ll take on the brunt of maintenance where necessary (keeping patches up-to-date etc), but I think by working on shareable specifications between Unity, GNOME Shell and KDE (i.e. appindicators is implmentation of a spec that means apps behave correctly in both Unity and in KDE), we’ll be able to make application developers life’s easier.

I also think we can be intelligent about how we write our libraries, for instance, libappindicator knows how to fallback from indicators (Unity/KDE) to Trayicon (GNOME *), meaning developers have one API to code to, and we handle the rest. It’s still a burden for us, but I think it’s worthwhile in the end when you have things behaving correctly on your desktop.

Unity isn’t the first time Canonical has tried to create a Shell for special purposes. There was of course the Netbook Remix launcher, and before that I believe something called “Ubuntu MID Edition” – will Unity come and go like these have before it, or is it truly here to stay?

Yeah, I wrote UNR (both of them!) and before that the Clutter frontend for Hildon…so I know about launchers that come-and-go :)

Unity is the culmination of the work that went into UNR. We tried out a lot of things UNR and a lot of that found its way into Unity (auto-maximise windows, drop titlebar from maximised windows, window controls in titlebar, homescreen etc).

I think the main difference is that Unity has had the benefit of a lot more design and a lot more development. I definitely know it’s here to stay, just wait and see what we do with it ;)

Ubuntu’s Netbook Remix Launcher

What lessons did you learn from these previous projects?

Never trust 3D graphics on Linux.

Why did you start working for Canonical? Is it just a job, or are you passionate about open source and bringing Ubuntu to the mainstream?

Simply, Canonical gave me the opportunity to work on OSS that would also be shipped on real systems to consumers. I joined the OEM team initially, and used my experience of making the desktop stack do things it shouldn’t (writing AWN teaches you a lot of things like that) to create custom UIs for Dell etc. At the same time, I was given the opportunity to create the first iteration of UNR based on my previous experience. For me, this was amazing, as I got to write OSS as well as see it shipped on Dell.com!

It’s never been “just a job”, you don’t get much of that at Canonical. Most of the developers are being paid to work on things that they would have gladly done for free. I continue to work towards seeing more desktops/netbooks shipped with Ubuntu, more mentions of it in mainstream press, and it being spoken of in the same breath as the big guns!

It’s never been “just a job”, you don’t get much of that at Canonical.

What do you want Santa to bring you for Christmas?

Bit late (my bad), but it would have been Seif, so I could school him in FIFA11 on PS3 when there isn’t a questionable internet connection between UK(me) and Egypt(him). The man really knows how to make use of lag to score goals…

Finally, Unity on tablets – ever going to happen?

Dunno, ask Mark ;)

Thanks a bunch to Neil for taking the time out his incredibly busy schedule to provide us with such full bodied answers. I’m sure everyone appreciates it, and I know this interview will shed some light on some shadowy details of Unity in Ubuntu 11.04.

You can of course follow Neil on Twitter @njpatel (I highly suggest you do!)

Liked this interview? Why not check out other interviews we’ve conducted with the likes of Ubuntu’s Community Manager Jono Bacon, one of the co-founders of GNOME, Frederico Mena or perhaps when Joey and I got interviewed ourselves by Seif Lotfy?

Canonical dx team interviews neil patel Unity