The focus on content is a core principle that drives how we build Ubuntu. This not only includes getting the clutter out of the way and maximizing your view on your content (such as integrated window borders and overlay scroll-bars), but it also includes searching for, browsing, and consuming content as easily as possible.

At the core of this latter approach to content is the Ubuntu dash and the scopes that power it. For those unfamiliar with this technology, when you tap or click the Ubuntu button on your Ubuntu computer, smart-phone, or tablet you currently see a number of different views such as Home, Apps, Music, and Videos.

Within these views we have a series of “scopes” that deliver both online and offline content. As an example, in our music scope we show music on your computer/device as well as music available to download or purchase online too.

All of this integrates search right into the heart of Ubuntu; no longer do you need to open up a software store, music app, or video app to access content you either own or would like to aquire…it is all integrated into the core of Ubuntu.

Ever since we released this technology we have been evaluating the feedback from our users, through formalized user testing, as well as input from content providers who are keen to deliver content via these services. We have reviewed all of this feedback and made a set of changes that improve and refine how the dash and scopes work, and we want to share some of those updates here.

This post does not summarize all improvements we are making; we have other refinements in store, and we will provide those updates closer to the time.

All screenshots in this post are of working code on the phone and tablet, much of which you can see at MWC this week. This technology will also be coming to the desktop at a later date.

The Core of the Dash

One of the constraining aspects about our previous dash was some of the limitations in terms of how scope results are presented to the user. Ubuntu users will be very familiar with a search resulting in the same visual structure of how results appear, which you can then click a result to see a preview view with more details.

We have refined and improved this by building a “dash toolkit” that can be used to customize how results are displayed now.

As an example, here are some screenshots of the dash displaying different types of results:

The Scopes Store

In our previous dash the notion of scopes were something that the Ubuntu development team were primarily involved in – we would ship a number of scopes switched on by default and the user could enable/disable those scopes where appropriate.

In our new dash we are treating scopes almost like in-dash apps; that is, a scope is something a provider can ship to users and the user can enable or disable the scopes that are of most interest to them. This makes the dash infinitely pluggable, more tuned to the user’s needs, and combined with the customization of how results are displayed, it makes the dash far more compelling for both users and content providers.

This range of scopes is delivered by the Scopes store which provides a range of categories and available scopes.

As an example, if you are a Grooveshark fan you can head into the Scopes store and add the Grooveshark scope and now your search will return Grooveshark content.
In action

Let’s take this new technology for a spin to demonstrate how it works.

In the screenshot below we can see the familiar apps scope. Here we can see apps that are installed, apps available to download, and we can search for apps too:

Let’s now see a more customized scope in the form of a guide to Barcelona:

Here you can see a combination of recommended places to visit, transport information, weather and more:

This scope is pulling together a variety of online components in a customized view and can be shipped as a scope that you can install on your computer or device.

Let’s look at another example. Here we have a scope for World Cup information:

Finally, let’s take a look at how we browse and install scopes. This is the scopes store:

Here we can select a scope easily and install it by tapping it.

When will I get this?

This technology is going to be arriving for Ubuntu for smart-phones and tablets in the next few weeks. Those of you using Ubuntu for devices can expect to find it as part of a norma system update.

For the desktop this technology will arrive at a later date when converge our Unity 8 platform on the desktop. We expect this to be around the time of Ubuntu 14.10 – Ubuntu 15.04.

The Developer Story

This new technology opens up a wealth of opportunities for developers. Over the coming weeks we will be providing a full tutorial, API documentation, quick-start guides, and more on developer.ubuntu.com to help you get stared building and deliver scopes to users.

We will announce when this content has been released on this blog.

FAQ

Why did you change the dash and scopes?

Based on feedback from our users, through formalized user testing, and input from content providers, we wanted to make a series of improvements to refine how the dash and scopes work.

When can we expect this technology to arrive?

We expect these improvements to be landing in the Ubuntu for phones and tablets images in the next few weeks.

How can I enable/disable scopes?

You determine which scopes are searched by adding them to (or removing them from) your favourites list. Even if a scope is not in your favourites list, you can explicitly navigate to that scope and start a search, without adding that scope to your favourites list. So, you are in complete control at all times of which scopes are searched.

What security/privacy measures are you putting in place with this technology?

While we will ship with a set of default scopes, the user can switch of any scopes if they choose to do so.

Each scope runs as a separate process in its own sandbox, secure via AppArmor. The sandbox is enforced at the kernel level, so it is impossible for a scope implementation to break out of the sandbox (for example, by making system calls directly).

Scopes that are installed in the device have exactly one of two possible AppArmor profiles: network access or file system access. If a scope can access the network (for example, to retrieve email headers from a remote imap account), that scope cannot access the file system. Conversely, if a scope can access the file system (for example, to search for locally-installed media files), it cannot access the network. This prevents a scope from retrieving sensitive information from the file system and then shipping it out via the network to some remote server.

Scopes are also prevented from accessing each others’ network endpoints. This means that a scope installed on the device cannot send queries to other scopes on the device in an attempt to collect private information.

What languages can I write these scopes in?

C++, Javascript, and Go.