Plasma Active at Tokamak 5

Our two big topics at Tokamak 5 are infrastructural changes and libplasma2, and Plasma Active. In a session yesterday, we discussed the Plasma Active shell, and how we want to interact with it. The discussion was very fruitful, and based on a mockup by Riccardo, we decided to implement a top panel that you can drag out, offering access to the window switcher, the “system tray”, and a couple of other things. That’s quite a big visual change from what we have right now, but it allows us to achieve a number of interaction cleanups. Let’s look in more detail what we’re doing here:

  • Window switching – The top panel has a horizontal window list, which you can use to switch between app windows and widgets in your workspaces. The window decoration is going away, windows can be closed from the window list. The present windows effect has this already implemented, as a trashcan you can swipe your window into. It works pretty well and is snazzy.
  • Semantic Resource Visualization – In order to display things like files, contacts, bookmarks, music, etc. we use separate QML elements for different uses (items in a listview, for example). The data comes directly from Nepomuk. This part is also starting to work, we can list different resources, and based on its type (defined in the ontologies), it will choose a suitable QML file to display this Thing in a suitable way and allow for interaction with it.
  • Storage of bookmarks – As most of the information we use in Plasma Active is coming from Nepomuk, we decided to store the bookmarks in there as well. The NFO Ontology has classes for Bookmark and Bookmark folder, which is what we’re using here. Last night I’ve restructured the metadataengine to make it easier to build special purpose dataengines on top of that. These dataengines allow for easy access and usage in QML / Plasma Quick.
  • Web Dashboard – I’m doing some work on a nice way to view your bookmarks, as interacting with the web is an important use-case of Plasma Active. We now have (cached) previews of webpages, we can use directly in QML. Combined with the dataengine that lists bookmarks, it’s now easy to implement a bookmarks browser, done entirely in Plasma Quick, shippable as architecture-independent package. Connecting these bits and pieces is next on th list.

Some of these things are working already, others materialise as we speak, some will surely stay on our list until after Tokamak, so we’ve got something to hack on when everybody’s back. :)

Tokamak in Nijmegen

Tokamak 5 in NijmegenThis week’s a crazy one, at least according to our cat. The fifth edition of Tokamak (the Plasma team’s sprint) is taking place at my house, so I’ve got the house packed with geeks hacking away at godly and ungodly times. It’s been great so far, but just as well too busy for me to blog, or even answer my emails. (Feeding the various animals here trumps that, sorry. ;-))

So, what’s been happening? We’ve designed, discussed, implemented stuff, fixed bugs left and right and had quite some fun doing that. Aaron has already talked about some of the things we’re working on, my personal focus is on two aspects:

  • Improving overall user experience in Plasma Active
  • Visualisation of resources coming from Nepomuk

Both are fun topics, and I’ll blog about them in more detail once things settle down a bit here. If you’re curious, you can update your Plasma Active installation already, and follow our progress. I’m updating the packages regularly, so that you won’t fall behind too far during our development progress.

Plasma Active: A Box of Crayons

One of the results of the UX sprint in Berlin which I’m really happy with is that it helped me frame some of the bigger ideas behind in my mind behind Plasma Active, and make it digestable for someone who hasn’t spent a lot of time yet thinking about it, and digesting these ideas.

As really nice example Celeste came up with is “The Box of Crayons“.

Let’s say, we as developers create a crayon, just one color, one thickness, a tool that is fine for jotting down a note on a piece of paper. There’s something magic about this crayon however: You can change it, and you can clone it nearly effortlessly. We start spreading around the clones of this crayon. An artist picks it up, and starts sketching with it, but she’s quickly unhappy with the crayon’s thickness, and the color isn’t very beautiful either (surprise, it’s made by a software developer, those don’t have the same visual tastebuds as many others). The artist takes the crayon, clones it a few times, changes the thickness of some, adjusts the colors of others. She takes a sheet of paper (same magical capabilities) and starts drawing. Happy with this new box of crayons, she tells her friends, and starts sharing it with others (now as a box of coloured crayons, in different colors with different stroke-styles. Others go ahead and add paper, canvases in different forms or shapes…

Applied to Plasma and Active, this means that we have to bring the traditional tasks of application developers to a wider group of people, and deliver the possibilities and infrastructure to share and change our creations. Creating a new “App” (a crayon, or a piece of paper) is not necessarily programming something new, but it can also be a specialized version of something that is already there — as long as it provides added value, it’s a useful addition. An interesting aspect here is that this ties in closely with the core values of Free software, yet provides an intriguing way of blurring the lines between creators and consumers.

Plasma provides these generic crayons with magical capabilities already today. We want these to be used, shared, adapted and combined into new, desirable tools.

Plasma Active: Designing Flexible and Adaptive User Interfaces

UX Sprint

I am in Berlin right now, for the KDE User Experience sprint. This sprint combines developers and designers into one group to exchange ideas, and discuss possible solutions we in the KDE community are running into. The sprint is kindly hosted by Relevantive, and sponsored by the KDE e.V.. For me personally, the focus is on Plasma Active. In order to make Plasma Active less abstract and give us all a clearer idea of what this is, I’ve brought two tablets running Plasma Active to show people what we’re working on, explaining the concepts while showing where we are right now. The reactions have been very positive and open so far, even if surely I wasn’t able to provide every detail we envision.

One of the goals I came here for is to evaluate and test Plasma Active’s concepts with a wider group of people, with more professional designers, and with people who have expertise in fields that are critical to Plasma Active’s success. This has proven very valuable so far. I’m quite happy with the results, and most of the ideas and concept we worked out with respect to adapting apps (and UIs) to the device spectrum do address the important problems we have. In this morning’s discussion, we also came up with some recommendations to not repeat mistakes others have made in the past.

Design vs Implementation

One of the things that we have to avoid is to mix design and implemenation. If we target a spectrum of devices, that doesn’t mean we can deliver one-size-fits-all solutions. The contrary is true: Every device has a special ‘use-case’ (in a lose meaning), it has special attributes that make the device special. Let me give one example: an app for a smartphone vs. an app for a tablet computer. The most obvious similarity is that they’re both touchscreen devices. This means that an app that works well on a smartphone would probably also run fine on a tablet. A smartphone technically is very much a subset of a tablet (oversimplified, yes). The usage pattern of a tablet is much different, however. Your smartphone may be used “on the run”, with an attention span of a few seconds, while you’re using the tablet on your couch, as a more relaxed way to go through your pile of emails — your not easily distracted though. Apps need to be designed for that, so it is not as easy as just making some screen adjustments. The app has to be made for a specific use-case.

Separate Designs with shared implementation

The solution is of course to design separate applications, that take all this into account (device-specifics, such as input methods, screen size, etc.) and usage patterns (“What is this app used for?”) The design for a specific device has to be made on a blank sheet of paper. In the implementation phase, Plasma’s architecture comes in really handy. As Plasma is very portable and full of generic components for small tasks, we will often end up re-using 90% of the code. The thing we have to watch out for is to not let this ease of development lure us into laziness on the design side.

Plasma Active is creating a lot of blank sheets of paper, waiting to be filled. We need designers that want to help us fill these pages with what becomes the blueprint for desirable interfaces. If this is something you, as a designer (visual-, graphics-, interaction-, product-) find interesting, get in contact with us. We need you.

I’m going to the KDE UX sprint, then Tokamak is coming to me!

On Thursday, I’ll be travelling to Berlin for the KDE UX sprint, which is kindly hosted by relevantive in their office in the heart of Berlin. I’ll be meeting Nuno, Celeste, Hugo and a few others there, and we’ll be making plans. Topics are the human interface guidelines, getting more designers involved with KDE, and of course Plasma Active.

A few days after coming back, hell will break loose in Nijmegen, as the Plasma crew holds their Tokamak gathering here. Here means at our new house in Nijmegen in the east of the Netherlands (which is in the west of Europe ;)). I’m really looking forward to having my fellow Plasma hackers here, especially with all the excitement, new ideas and concepts coming along with Plasma Active. I’m sure it will be an epic Tokamak, and a really long one, too. Between first arrivals and least departures, there will be a whopping 12 nights. We’ll likely be doing an Open Day, so if you’re in the region, drop me an email if you’d like to come by to see the magic happen.

Speaking of Plasma Active itself, it’s off to a good start. We’ve spent crazy amounts of hours in very little time before I announced it on my blog, and we kicked off a surge of blog posts about this subject — with more to come. I’m really happy with the positive interest it generated so far, very promising.

With the past two weeks spending most of my time on documentation, packaging and communication, I got back into hacking mode today, and polished up my small metadata engine I had started writing not long ago. It’s working now, you can query all kinds of resources, either by filename, URL, Nepomuk Identifier or simple query term, and it gives you back a list of Nepomuk resources and their metadata. It’s pretty simple, but very powerful. It already provides most of what you need to write a simple filebrowser, or search widget in Plasma Quick. I’ll write a more detailed blog post (including screenshots) once I’m more happy with it, also visually. The basic metadata engine is already in master, and will be appearing in the next update of the Plasma Active packages, probably tomorrow. Now, back to hacking. =)

Plasma Active – A Desirable User Experience Encompassing the Device Spectrum

Plasma Active on a tabletToday, I’d like to announce to a wider audience a project we have been working on in and beyond the Plasma team. Its goal is to “Create a desirable user experience encompassing a spectrum of devices“, and it is called Plasma Active. A couple of things make Plasma Active special. First, the driver is the desirable user experience. That means that we want to create something, people want, and people want to use. It means we are less technology-focused, but are taken a user-centered approach. Second, we are not targeting a single device, or a narrowly-defined class of devices. Plasma Active is made to run on a spectrum of devices that make up the user experience together. Devices change, and so does the way the user interacts with them. By strongly separating data and visualisation / interaction, we do not re-invent the wheel but adapt to the requirements and expectations of a device, and about how devices work together for the user.

Running Plasma Active

We have a basic, Plasma-based shell right now, which runs on three target devices — and probably some more, but that’s what we’ve tested so far. It performs well, runs stable and is usable with a touch-screen. While Plasma Tablet is quite fun already, do not expect release quality yet, as it is a snapshot of our efforts. Find the download location for the Balsam Professional live image on the wiki.

open-slx has created a Balsam Professional live image based on openSUSE 11.4 running Plasma Active. open-slx (my employer) are developing Plasma Active for openSUSE in the openSUSE Build Service. We’ve also created packages which can be installed online on top of openSUSE 11.4. You can find installation instructions in our Wiki, also for Meego.

Of course you want to run Plasma Active on a ‘real’ device, we currently recommend either the ExoPC (WeTab), the Lenovo Ideapad, or a Viewsonic Viewpad 10. You can find instructions for devices in the Wiki

The demo video shows Plasma Active in action on a Viewsonic Viewpad 10.


There is still a long way to go. We’re missing key functionality, default applications, optimizations all over the place, and more. There is nothing fundamental that holds us back to bringing the full experience users expect to tablet devices, based on our well-known, beloved, proven software stack. We are focusing our first release, which is planned for September already, on tablet computers.
Since fixing a bunch of showstoppers over the past two weeks, I’ve actually started using Plasma Active for some light reading tasks (mostly web and RSS), and I’ve got to say: It rocks your socks. Being able to use a tablet computer which is based on Free software that you created yourself, is real fun. I’ve also handed it to friends who came by, and while they understood it’s an early prototype, I had a really hard time getting my gadget back. And that is only just the beginning. We have an excellent base to build a complete experience upon. In other words, it’s the perfect time to jump in and become part of something great and to help it also making it something really big.

Different goals need different processes

Widgets on Plasma ActiveWhen we put the pieces for Active together, it quickly became clear that if we want to succeed, we also have to rethink some of our collaboration processes. One of my pet peeves has always been that different essential parts of what the user gets in her hands come from different teams. If we want to put something desirable into the hands of our users we need to pull in the same direction. While we needed different skills, these skills have to align in how they’re applied. This makes communication more natural, leads to a more focused process, and ultimately a better result. It’s clear that such an endeavour will only work if enough people in our communities, and the communities around it think that this is a worthwhile thing to spend their time on, and that we can get the people that do to pull in the same direction. The good news, however is that we’ve been able to create a stable platform to do this, in terms of tools, processes, collaboration models and not at least software. That platform is Plasma Active.

Sounds interesting?

If you want to help us shape Plasma Active, and bring its vision to reality, we would like to invite you. Start with having a look at our list of tasks, and if you find something you can help with, tell us, subscribe to the Plasma Active mailing list, or join #active on Freenode’s IRC network. We have documented our ideas, concepts and processes in the wiki.

In the coming weeks, we will keep you updated about Plasma Active’s progress, and we will be able to reveal more of our vision as we give Plasma Active shape by making it become reality.

of rockstars, unicorns and Isaac Newton

A question that has bugged me for some time, is “how we can bring our creations into the hands of more users?”, and how we can show the world that a truely open and community developed system can bring great value to more people. How can we overcome the technical barriers that hold back so many people from benefitting from our hard work, all the genius, love and creativity we put into software. Since my first contact with Free software, Linux openSUSE and KDE, we have done some very solid work. We have technically caught up with Microsoft, and are delivering a product that is up to par in many aspects, and better in many more ways. While we have booked immense successes, we have not reached the goal of making the Linux desktop ubiquitous in the desktop market. In a world of iPhones and Android, we even see closed development models based on similar technology as ours being a big success, market-wise, but failing to deliver the full Freedom of a community-driven development model to end users.

Stormy weather on a calm sea

The past years’ development has completely changed how users interact with their digital environment. Where we used one desktop computer for all of our digital needs only a few years ago, there is a wide range of devices for specific use-cases now. This (I think very positive) development has widened the spectrum of devices our software can be used on. It has also effectively broken Microsoft’s monopoly in the market, which is now much more open: concurrent products such as Windows, iOs and Android. Looking at both options, many users experience a gap, however. With the market especially for tablet computers being brand-new, there is very little choice for users. If you want to have a tablet computer today, you can get an iPad in return for your soul or get a blown-up phone built to add your most personal data to The Big Index. If you’re of a more patient nature, you can cross fingers while waiting for an evidently upcoming surge of new tablet devices. If you’re interested in both, control over your data and control over what you run on your machine, bad luck.

While moving away some of their Internet use to other devices with more a more clearly defined purpose, and starting to use the Internet in completely new ways, many users have also found out that computers != Windows ™. New methods of input, and graphical effects allow for a more ergonomic use of all that’s out there. Dramatically increased user expectations demand more intuitive, beautiful and elegant user interfaces and ways for interacting with contacts, content and the web. This demand is I think very positive, for two reasons: users are much more willing to try new UI concepts, which leaves more room for innovation to creative people who really want to do something better. One positive aspect is that the demand for an awesome user experience makes the software running on the device, and the services it is offering more critical the desirability than the hardware, comparatively. Interpreting this as “the power to shape the product is now in the hands of the software developers” is unfortunately (I am a hacker) also very wrong. Let’s get back to that later.

Back to our question (remember, that was: “how can we bring our creations into the hands of more users?”), this leads me to believe that a locked-down market for end-user software is a thing of the past. To no surprise, increased competition comes with more pressure to deliver something really great.

Genetic advantage

Having studied, participated and helped shape Open Source development processes for a few years now, I’ve come to conclusion that the Free software community has three strengths that are critical to its success:

  • Economic force: We share resources. While we spent much of the past ten years to catch up with Microsoft on the technical side, the Free software development and licensing model simply obsoletes many closed source options. This basically means that you need a really large internal workforce and a lot of appeal to make your product competitive, or that you have to plug into the resources of the Free Software community.
  • A different agenda,: we are not primarily driven by monetary aspects, unlike our competitors, so we can for example license our software in a way that might not be economically effective at first, but provides much more long-term value. Not being limited by return of investment type obligations, our different agenda often shows that we can address a class of problems where “what is good for the user?” differs from “how do we make money out of that?” completely much better than our competition.
  • The Magic Spark: Open communities are much more receptive to healthy diversity. We’re many, and we all bring different things to the table. The chances of something genius happening are simply much better in an open and friendly environment, than behind closed doors.

Our chronic fragmentation issue

One of the really hard problems we have to solve though, is the fragmentation. Due to the diversity, we don’t work enough as a team, and while often share the same values, our vision of how our creations end up in the hands of end-users differ wildly. To solve the fragmentation, we have to have not only shared values, but also a development process supporting our vision, and we have to have a shared product vision. Yes, product vision. As bullshit-bingoesque as that sounds, the simple truth is that we have to use our strenghts to create something desirable, we probably won’t enlighten many people with the great value Free software can bring to the table with religion. On the positive side, desirability works very well for me personally. Much of what I do is driven by a sense of creation, and if the output is something that others want, it gives me the accomplishment of having created something of value. Desirability is the primary driver for this, it’s both an excellent product vision, and a fine goal to strive for personally.
There is one conceptual mistake about the fragmentation issue. The problem is not that the Linux community as a whole doesn’t work together, the problem is much more that not the right people are working closely together. The real problem isn’t fragmentation, it is the lack of full-product-thinking.

There is much more to the fragmentation issue, though. We’re trying to analyze this problem not from our own view, but from what is necessary to achieve our goal. While we have had limited success to attract UI and interaction designers, that excel as much as many of us do in our own fields, we have yet to shape the process in a way that is both attractive to people who can contribute design expertise, and helps them put their energy to good use. If you have ever seen a graphical artist cringe, when you showed him your finished application and asked him to now make it beautiful, that was a symptom for this brokenness in the process. So in those fields where you’re honestly lacking manpower, you need to work twice as hard to attract new blood. You need to cover the whole process, so this is one of the problems that need solving. Recognising that you lack this expertise (by asking yourself all those hard questions) is the first step. Communicating that you are open to such participation is an obvious second one. Proving that you actually are, and making that visible helps you get further. Defining yourself in terms of a common denominator helps. If you want to reach non-developing contributors, you might want to stress the free culture aspects of your project, if you want to attract designers, make sure people see that design plays an important role in your project. Offer and prepare the tools designers need to do their work well. Paraphrasing, if you ever had to ask a graphical designer to use a compiler, you’re doing it wrong, and you need to fix that.

Natural selection

Once all of the above is realised, the really hard part is of course to find this shared vision of something desirable. There are a couple of interesting aspects around this, many of them have to do with creative and outside of the box thinking, and about creating an environment that supports the growth of these ideas.
Let’s look at the process-side of things, however. Statistics tell us that it’s much simpler to find a shared vision among a bigger group of self-selecting individuals than among a smaller one. This means that we have to look across project borders, across comfort zones that have come natural to us — from both sides.
From another point of view, to create something desirable, we have to apply the same vision across all aspects of the software stack. This means we have to work from top to bottom. We need to build applications that users want, user interfaces that are beautiful, modern and adaptive, we need to get the technology underneath right, and we need to find suitable (by many measures) devices to run our software on, and it it also encompasses thinking about our collaboration models, taking the good parts and combining them with new insights, tools and processes. It means we need to think in creating a complete process that covers all these aspects from creation into the hands of more people.
A self-selecting group has one nasty, but natural attribute: it also means that some people do not take part. This is of course fine, if something is not your cup of tea, that doesn’t have to keep others from drinking it with great pleasure. Support can in some cases be as easy as letting go, and at least not providing pushback to something that might — or might not, this is not a no-risk game — create something truly great in the end, at least for some. Different priorities, agendas or simply envy can cause unproductive friction.

On the more cheerful side, such a group is absolutely killer to work in, being able to work towards your goal among a group that is heterogenous in skill and origin, but homogenous in the direction to take, you can pull amazing amounts of weight. This makes it (relatively) easier to make a difference, and your work is more likely to produce something that makes you happy. A friendly environment and good communication that costs little but gives back much energy is critical factor to create a positive feedback loop, a critical mass to get off the ground, momentum to move and keep moving your dream to completion. While participating early requires recognizing such a vision, and probably a certain willingness to take a risk, to endure uncomfiness in the beginning, it allows you to shape important aspects of that vision. A vision only goes so deep, making it come to life reveals all its facets, to you, but much more to those that hold your creation in their hands and recognise its value.

Unicorn or horse?

It is a common myth that great ideas just spring into existance. While there surely needs to be a spark, turning great ideas into a success is also very much hard work. Without checking my facts, I’d say it’s a reasonable assumption that all the years of hard studies, and understanding many things new and old, crediting the apple for hitting Isaac Newton is probably wildly irrational. Conversely, you might study all your life, and never get hit by the proverbial apple.
There is a way to make this apple more likely to hit you, however. Obviously, being well prepared, with all the tools and knowledge needed is a first. But you also need to answer all the hard questions. You need to look at the complete spectrum of aspects of your potentially genius idea. It means leaving your comfort zones, talking with others, being receptive to their ideas and incorporating them into your vision. That sometimes means that you have to take a step back from that concrete picture in your mind, and rethink what you are really looking for. This can be very hard, but doing this in a team of people with different background can help a lot (note that not everybody in this team of domain experts needs to take part of your group, you’re after the input they provide. You don’t have to convince them, you have to find the right answers to the questions they pose. Spotting a unicorn among a large herd of horses is much more a self-reflection game than a convince-and-defend battle.

At the same time, you have to recognize when people give you input without actually wanting to help you understand all the details, sometimes you get advice, even pushback because someone does not think it is good to drive attention away from something that is more important to them. The truth lies in the middle, of course. While you have the right to enthuse people about your ideas, you also have to play nicely. Notwithstanding altruism and the general rule of “don’t be an asshole”, being too aggressive about your own project will drive others nuts. The more success you have, this worsens. Higher trees catch more wind. In a way the amount of shit you see flying in your direction can be seen as a matter of success. It’s generally not productive for your own goals though to actually engage in this way, unless absolutely necessary. Check twice to be sure. Negative energy can have a desastrous effect on your productivity and on the joy and direct motivation you get out of your work, and that is in fact true for everybody directly involved. Ignoring the naysayers for naysaying is often a much better way to keep sane, than constantly paying close attention to it, trying to find the one good point they might have out of a stream of dung coming your way. It helps a lot when you recognize these patterns, learn how to mitigate communication going awry, and deal calmly and cool with potential real issues at hand. Do not forget to put mechanisms to shield yourself in place, in case it runs out of control. Do not underestimate that creating and maintaining a playing field that is fun for all to use is critical. Try to not make the neighbours angry, either.

Communication and scalability

Now let’s imagine you have this great idea. You know that you’ve something big in your hands, and for the sake of simplicity, it’s a truely genius idea by all reasonable and objective measures. In other words it truely kicks ass. Moreover, you have figured out most of the technicalities, so we even can be sure it’ll actually work. This just has to become a success. But how?

I’ve seen some really great ideas not coming to fruition because a key person ran out of breath. Imagine being a 17 year old kid, becoming a rock star overnight. Suddenly, playing the guitar exceptionally well is not enough anymore. You have to make sure that all the interest doesn’t fire back on your ability to ‘to your thing’, you need to think about how to deal with all the sudden interest. It’s a good idea to prepare that early on, so that you don’t have to explain everything to everybody in great detail. Writing down all the answers to the little questions you answered is a very much needed thing. If you want to convince people of a great idea, you have to give them the chance to understand these answers. If you can’t keep up with answering people’s questions, and you answer the same question in great detail over and over, that might be a sign that you should have put together an FAQ, or something that presents your idea in a more comprehensive way, and in a way that is easy to understand from the point of view of someone who might only spend a short amount of time seeing your idea. Clear, targeted documentation helps to mitigate the ‘running out of breath’-problem.

… aaaaand?

Now you expect a real conclusion? I certainly have something on my mind already. (What would your own little private view of the world be without the Answer to the Ultimate Question of Life, the Universe, and Everything, after all?) But let’s leave that for another day, maybe a Thursday.