Ubuntu In a Nutshell: Unity and Convergence

This article is part of a series of blog posts covering the many different areas of work going on in Ubuntu right now. See the introduction post here that links to all the articles.

Unity is the graphical environment that we ship in a default Ubuntu installation. Released for the first time about three years ago, Unity is focused on simplicity and consistency across multiple devices. In this article I am going to cover the history of Unity and how Unity 8 is driving a new era of code and design convergence in Ubuntu.

Although Unity is a single graphical experience, you can think of it in three broad buckets:

  1. Design – the visual design and interaction experience.
  2. Platform – the core Unity platform software.
  3. Services – a set of functions that Unity makes available to applications for integration and for content to be viewed.

Back when the design team started working on Unity the goal was to solve a key set of problems in the user experience of Linux and build a simple and efficient user interface, but to also build a set of design patterns that could scale across multiple form-factors.

Design is a complex process, and a process inspired by ideas but defined by practical real-world testing. As the team developed ideas, tested them, and iterated on them, these ideas were boiled into a set of common design patterns that were not merely intended for a desktop…but that could be applied to other form-factors too. This was a challenging prospect: to a reasonable extent, building design around a specific form-factor is much easier than producing scalable designs across these different form factors, and the level of design work that went into Unity was and continues to be incredible.

It is important to remember that this design effort was not limited to the launcher, panel, indicators and other common visible pieces that we associate as the building blocks of Unity; it was also the gestures, login manager, toolkit components, dash components, and more. The goal has always been to have a consistent design story across everything we do: Unity, Juju, conference booths, websites, and more, and thus the Unity work needed to be able to exist within this wider design story.

As the designs formed for Unity the development team kicked into action.

Back in the early days we had two different code-bases for Unity; a 3D and 2D code-base. The simple reason for this is that some OEMs wanted to ship Unity on hardware without 3D acceleration, so we decided to have two different branches and share as much code as possible between these branches so we could serve all potential OEMs.

These branches were quite different though. Unity 3D was written with Compiz and a graphical toolkit we created called NUX, and Unity 2D was written in Qt/QML. As you can imagine, this resulted in some duplication of effort and some deltas between 3D and 2D. The teams worked their socks off, but these technical limitations were causing some headaches.

As the goals to spin up our full convergence story across TV, Mobile, Tablet, and Desktop became more important it was clear that we needed to make a decision about these two different code-bases. After an extensive amount of discussion it was decided to focus explicitly on Qt/QML as our primary code-base, a decision that also matched our decision to focus on Qt/QML as the core of our Ubuntu SDK.

This now brought technical consistency across our engineering teams: Qt/QML would form the bases for Unity, the Ubuntu SDK, new application development, our app developer community growth and more. I had been lobbying for a focus on Qt/QML for some years, so speaking personally I was delighted by this move. :-)

A core benefit of Unity is the rich range of services that it provides. This includes services such as:

  • The Launcher – showing running apps, progress bars, number pills, quicklists etc.
  • The Messaging Menu – all of your messages in one place, irrespective of source or network.
  • The HUD – search enabled for all your apps so you can find exactly what you need by finger or voice.

Another very significant service is The Dash. In previous versions of Unity the dash provided a place to search your local system and a limited set of online services. For Ubuntu 13.10 the dash has been extended to search 50+ services all from the home scope. The dash provides a consistent place to find and search for content, apps, information and more.

Again, it is important to remember that these services are not just useful for the desktop…they apply to all the different form-factors we are focusing on. This, tied together with our convergence-ready SDK means you can consume these services in your app and they run across all these different devices.

Unity 8

Earlier I mentioned the decision to focus on Qt/QML as our core development focus, but that was not the only decision moving forward with Unity however. The goal was also to build true convergence into the core Unity code-base too. Our goal was to have a single Unity code-base and when you run it on a Desktop you get one experience, and when you run it on Phone you get another experience. This boils the full convergence story down into a single code-base, which also means that if you fix a bug in that code-base, the bug fix applies to all devices too.

This is true convergence: a single code-base with a scalable set of design patterns that can be deployed on a wide range of devices.

This focus has materialized in Unity 8; the next generation of Unity that is currently running in the Ubuntu Phone and Ubuntu Tablet images. On the desktop we are still running Unity 7 (based on Compiz and Nux) until Unity 8 has desktop features baked in.

If you want to see this convergence working, install Unity 8 on your Saucy desktop with:

sudo apt-get install unity8

Then run it with:

export UBUNTU_ICON_THEME=ubuntu-mobile
unity8 -mousetouch

This will load what looks like Ubuntu Phone on your desktop in a window. It should look like this:

Remember, Unity changes how it operates based on the screen size. To see this in action, increase the size of the window and you will now see something that looks like LightDM:

Re-size it smaller again and it looks like the phone interface again.

Another fun test is when at the phone size, slide from the left of the window to show the Launcher and click the Ubuntu button. Now click the ‘Search’ button and the search box takes up the full width of the window:

Now re-size the window to be much bigger and click the ‘Search’ button again; the search box now appears to the right of the window:

This is a subtle example of how Unity 8 adjusts the experience based upon the screen size and the goal is that we will make many such changes to optimize the Unity experience across these different form factors, but the core ingredients, technology, and focus on content is the same, just visible from different perspectives.

Are We There Yet?

Today Unity 8 is running on the phone and tablet. Currently the vast majority of engineering focus is going into making everything work for Ubuntu Phone, but all of this engineering going into Unity 8 is built within the context of working on other devices too. As an example, although Unity 8 running on a full sized desktop screen looks like a mobile device running on a monitor (a native desktop UI will be added later), the core of the dash and all the system services will be desktop ready: they just need to be extended to support that screen profile.

In other words, although it might feel we are not working on the desktop, everything the engineering teams are working on is work we would need to do for the desktop in Unity 8 anyway, so it is all valuable work heading in a consistent direction.

Not only this but there is a far greater level of continuous integration and testing in Unity now than ever before. Every four hours there is a battery of tests run against the trunk code-base and if the tests pass a new package appears in the Ubuntu archive, giving you the opportunity to test it and keep up to date with the very latest in Unity. All feature planning and tracking is done publicly in blueprints and discussed at our Ubuntu Developer Summits.

The goal is that the phone user interface in Unity 8 will be mostly complete for Ubuntu 13.10, and then the focus will be on Desktop between 13.10 and 14.10 with the goal of shipping Unity 8 on the desktop in Ubuntu 14.10, thus spanning full convergence across all form-factors with this single Unity code-base and set of scalable design patterns.

  • Niclas

    “…and then the focus will be on Desktop between 13.10 and 14.10 with the goal of shipping Unity 8 on the desktop in Ubuntu 14.10…” did you mean 14.04 there or really 14.10 ?

  • Anonymous

    Currently 14.10.

  • Craig Hrabal

    Thanks for this post, as myself and others have been rather confused as to the intentions as far as this goes. Contributors are seeing UDS filled with Phone onramps and not a lot of notice towards Desktop at all. I think most of us (including the ones who have recently left the project in recent months) can accept the fact that the phone is a priority “for now” as it is very new technology and has to be ironed out. 10.04 was a miraculous journey to 12.04, but I think a lot will find that the same journey on the desktop from 12.04 to 14.04 seems sort of stagnant.

    However, the goal back then in the Precise days was convergence, and I think most in Ubuntu were excited about that prospect. I think most envisioned, however, that the UI would be made for the desktop first, then translated to the phone. It has been the other way around, which leaves some wondering if Unity 8 desktop will be identical to Unity 8 phone or a touch-first experience that is counter-intuitive. I think it’s easy to fear that, but I think you have eased some of our worries.

  • Anonymous

    All core apps like “music” and “calendar” in future will have desktop interface? Do you plan change file manager from nautilus to core apps “files” in 14.10?

  • Anonymous

    Yes, our goal is that the core apps will become fully converged. :-)

  • thor

    The seach field is on right side and in unity is on the left side. That is a mess.

  • Niclas

    Ok thanks for answering Jono!

  • Prithviraj Nag

    Nice to know that. Thank you :) Another question regarding core apps, I understand that Facebook and Twitter core apps were cancelled due to some legal issues, so is there currently any plan to somehow make these apps happen? As well as other popular apps like Skype, Maps, etc.? (I’m talking about full native versions of these, not web apps)

  • Prithviraj Nag

    Will the tablet interface (that is, those additional features that are not there on the phone interface, like side-stage, multi user login, etc.) arrive by 14.04?

  • http://hude.blogfa.com/ Ali Najafi

    The HUD is the greatest thing I’ve seen [= used] since two years ago I joined Ubuntu. I’m somehow dependent on it so that feel something is absent while working on others’ computers. I really can’t wait to see convergence story in practice.

  • John Smith

    Unity is the whole shell, so what you’re saying makes absolutely no sense. That aside, the right side is obviously the best place for the search box to be in tablet and desktop modes, as if it weren’t the left side would be too crowded and the title would be messed up.

  • Convergence

    Yes it seems like sane strategy and i hope it will be production ready by 14.10. Meaning OEMs will be confident to put out hardware (PCs, phones, tablets, TVs…) with Unity Next preinstalled.

    On the desktop side please don’t remove stuff like desktop icons… Then we all will be happy and to bad Compiz have to go for example but i hope in the end everything will come together nicely!

  • aurangzaib

    Its great to see the direction and practical innovation in ubuntu, ubuntu is much pleasant to use than at 10.04(the release i started with)

  • Anonymous

    Like to hear that :).

  • TR Precht

    Fantastic! When I first started back into the Linux world in 2008 after a very long hiatus, I dabbled with Ubuntu and thought this is a great OS. Unfortunately I would go between it and Windows and OSX several times for various reasons, but I always leaned towards Ubuntu (which is now my only OS on my desktop at home). Something that I always wished I had was some sort of convergence device to keep me locked in. I had envisioned something like the Asus PadFone, phone to tablet to laptop deal with Ubuntu instead. I’m glad Ubuntu is focusing on this concept.

    I don’t really understand all the hate that people have against the focus on the mobile, because it points back to the desktop getting better. If the ‘one OS to rule them all, one image to bind them’ idea plays out properly, if the phone is solid and secure and efficient, then those improvements would HAVE to serve in making the desktop more efficient. I just don’t see why others aren’t latching onto that.

    Great work to Ubuntu in general for the great strides it is making, and also great work to you and your team for the cat herding of the community you do.

    Cheers!

  • Marco

    So People who only use LTSs are going to see Unity 8 firstly in 2016… Hm…

  • Wyllie Young Wylls Chilunga

    will click packages on the desktop have graphical installers like exe’s in windows? that would be awesome because here in my country people are not huge fans of downloading all there software(not everyone though) and alot of the people i have introduced to ubuntu complain alot about this…..so please make .clicks install offline :D

  • http://www.theixo.com/ Apofis

    You needn’t worry about the focus being on phone first with Unity. This design path actually comes from a tried and tested place. The current approach with Responsive Web Design is mobile first. The thing is, it’s a lot easier creating a specific layout for a small screen first, and then building out as the resolution increases than it is to build for the largest resolution you can and then trying to squeeze everything down.

    You can check out the following websites for a nice showcase of responsive web design to get an idea of how this all comes together; I’m sure you will see that the full size desktop pages do not suffer at all from the design convention. http://mediaqueri.es/ and http://zurb.com/responsive

  • http://www.theixo.com/ Apofis

    The beautiful thing is, twitter, facebook, and Google Maps already have pretty competent small resolution versions of their websites, so I think it would be a waste to worry about non-HTML5 apps for them.

    And in any case, as Ubuntu Phone gains traction and popularity, those companies will create apps themselves. Also, since it is Linux after all, it might very well be possible to get an android wrapper to run these apps.

  • Prithviraj Nag

    You can already perform offline installation if you have the “.deb” package of the software, by double-clicking it, just like “.exe” … “.click” packages just make the packaging process easier for developers …

  • Junior

    You can install .debs, but only if you have the dependencies installed, so in most cases you’ll need internet

  • Wyllie Young Wylls Chilunga

    it seems you clearly don’t get what i am trying to say..i know that but they still need to get dependancys, and there no graphical installers, the usc sometimes is a problem

  • Marcos V.F.

    sounds terrible for me!

  • Brendan Strunk

    It’s so exhilarating to test unity 8 in the latest version of Ubuntu!! So far my impressions of unity 8 in alpha stage are very positive. Ubuntu is amazing!

  • Teucs

    “The thing is, it’s a lot easier creating a specific layout for a small screen first, and then building out as the resolution increases than it is to build for the largest resolution you can and then trying to squeeze everything down.”

    I have to admit that this sounds perfectly reasonable concernig the emphasis on mobile devices.

    I’m curious to see how Unity 8 handles different workspaces. Organizing the desktop and apps has become essential to me after using GNOME Shell. It’s great to have things organized in different workspaces instead of just slamming everything on one workspace and trying to use the dock to make sense of relevant apps to current task.

    I found that in Unity the workspace management (grid) isn’t as simple/clear compared to elementary OS, GNOME or even OS X. (1D VS 2D).

  • Teucs

    Nah, people are just freaking out because the desktop doesn’t behave and look like it has for decades (cognitive dissonance). Give young kids, without prior computing experience, a modern desktop, let them use it for years and after that give them, say the good ol’ GNOME2, and they’d also freak out. This is the way forward.

  • https://www.youtube.com/user/fatriff Fatriff

    that’s interesting cos I have no use whatsoever for the HUD and it doesn’t impact my using Unity in anyway.

  • http://www.theixo.com/ Apofis

    I generally use multiple monitors, and keep tasks separate to their monitors. I’ve never gotten into the multiple-workspace groove myself.