Monday, April 11, 2011

Contour joins the Plasma Active track: Get active with a new and innovative usage paradigm for digital devices

Many of you rememberme from being KDE e.V. president back in 2007 before I handed over to Aaron and later to Cornelius. Since then I've been rather busy with other things, driving Qt in business through my company basysKom and being involved with creating MeeGo. However, there are really exciting things happening in KDE. Those make me step deeper into KDE again and I'd like to let you know about it!

Today I would like to introduce to you the Contour project. Contour is part of Plasma Active - the project of the KDE community to create a desirable user experience encompassing a spectrum of devices such as Tablets, Smartphones, in-car or Set Top Boxes. There have been several blog posts by Sebas, Martin and Aaron.

Contour will contribute to this vision with a new and thrilling usage paradigm using adaptive activities and intelligent recommendations. The aim is to create a context-sensitive user interface that adapts to the users current context, activities and behavioral patterns. The overall goal is to create a data-centric user interface which is not concerned with applications but offers intelligently combined data through a context-sensitive recommendation manager.

Moving on from todays application-centric approach

Smartphones, tablets or PCs in general handle a huge amount of data like phone call logs, contact data, videos, photos, and much more. The classical approach on mobile systems is based on the idea that the user first chooses the application to reach their goal. They have to search for data and sort the information themselves. This creates a very static and application-centric user-experience. Contour goes one step beyond.

Activities and Recommendations

Contour sets out to break with this tradition and to combine the available data with personal usage patterns and context information. The Contour project aims to provide different entry points for different situations and contexts, called activities. In a work environment for example users have different preferences than they have on the train or at the opera. So the activities can contain different resources like files, contacts, applications, informations etc.

The system provides smart recommendations based on the current context like the current geo location, time but also the current activity, active files and applications or recent action history. So the provided resources depend not only on the context, but also on the previous behaviour of the user. The system tries to learn those patterns and adjusts to the users' needs in every situation.

Mockup showing Activity Browser

Activity with different resources such as documents, applications, contacts and more

Recommendation Overlay

Select activity with slideIn


Contour uses KDE technology

Contour is based on well-known Qt and KDE technologies like Plasma, Nepomuk and Qt Mobility and extends Plasma Active. These technologies will be combined and extended to create new ways of working and using digital devices.

Plasma is the desktop and mobile workspace of the KDE project, as well as a library for the retrieval and visualization of any kind of data, based on the Qt QGraphicsView and the Qt Quick framework. The Plasma library allows to build any kind of deeply personalized user interface, with a unified SVG-based theming system and with a clear separation between the data and its visualization. It is also the natural complement of Qt Quick to develop user interfaces that can adapt themselves (even with radical changes) for different form factor devices.

The Plasma Quick will be used as the primary user interface for the interaction with a Contour enabled device. It will visualize all the activities and suggestions of the system, and will be the UI framework for its main applications. The existing Qt Mobility APIs will be joined with sophisticated data mining algorithms to enrich the overall mobile user experience.

Nepomuk will act as the main data storage and query solution. Nepomuk allows a linkage between all kinds of information and powerful queries over the data. Apart from the file indexing Nepomuk is used as a passive framework providing services for other components to use.

Contour will be made available and tested on real world platforms. Initial target platforms are MeeGo and the Balsam Professional live image. basysKom and open-slx cooperate on providing packages to go.

Contour is Open Source

The Contour project is part of the Plasma Active Project in KDE. Originally it was started as a research project in basysKom. Very quickly it turned out, that KDE technology is a natural choice offering the functionality required for Contour. With Sebastian TrĂ¼g and Marco Martin joining Contour, it was clear, Contour would be developed as an open project and as an integral part of KDE, so that our big community can contribute and benefit.

Get Active!

I am very excited about Contour and Plasma Active offering innovative new user experience and technology to the device world. KDE has a lot of building blocks to offer. With Plasma Active we enable device manufacturers to easily integrate KDE into new devices. Thus we enable ourselves to be part of creating people's way of using devices. New contributors can join easily by creating Active Apps and adding more functionality in a large marketplace.

You are welcome to help us creating Contour. We invite you to read more about Contour in the wiki and subscribe to Contour or Plasma Active mailinglists / IRC channels.

Let's build the future. Let's get Active!


  1. Those mockups are very original - hmm where did the inspiration come from :)

  2. Sounds a very exciting concept and great to see the existing KDE solutions being used, but on that point can I just clarify the use of QtMobility versus the KDE equivalents? Will you be preferring to use for example the QtMobility Messaging and Contacts modules rather than Akonadi and KDEPIM, or their hardware api rather than Solid? Or will you only use those modules that we don't provide? My interest mostly applies to the QtLocation module, but I'm sure other areas of KDE will be interested in the plans, we probably need to debate at Platform 11 what KDE's attitude to use of QtMobility should be.


  3. From a market point of view, I hope KDE will embrace Qt Mobility. Qt Mobility provides a standard API for a wide range of mobile devices and it allows device manufacturers to support functionality in their devices. They just need to adapt the backends. I guess this will be done anyways and we get the functionality in KDE for free.

    However, I wouldn't see Qt Mobility set in stone. We in KDE should take an active part in contributing to Qt Mobility, suggesting changes etc. IMHO it is a good starting point and we should cooperate with Qt on improving the APIs over the time.

    So using Qt Mobility API is not a decision against KDE technology. Backends such as Akonadi or Marble should provide Qt Mobility APIs.

  4. transloid is correct. QtMobility APIs do things like Solid or Phonon: a standard api, and then plugins for the backend. So they do overlap with Phonon (QtMultimedia) and parts of Solid (Bearing), but not really with Akonadi.

    I'm also wondering which QtMobility APIs you had in mind. There's a bunch.

  5. You seem to suggest that the KDE libs should be a backend for QtMobility, it could equally be argued that QtMobility should be a backend for KDE libs, e.g. Marble or Solid use QtMobility when on Mobiles, but use our own backends on Linux/Win/Mac. The whole idea about our KDE libraries like Phonon is to provide an abstraction layer so apps have a single api that works on all platforms and provides the maximum common feature set on all platforms. QtMobility currently doesn't give us that at the moment, it's a simplified mobile-centic api with no backends for the desktop platforms and depending on it now would be a mistake. Now, in KDE5 we could consider using it even if we have to provide the desktop backends ourselves, but the api's would probably need serious work to support our required features. Hopefully OpenGov will give us a say in how QtMobility develops, perhaps eventually becoming QtPlatform with full desktop support, but I think it's naive to assume that QtMobility will ever be sufficient for all our platform requirements, just as Qt isn't sufficient for all our widget needs.