Thursday, October 27, 2011

Introducing Inqlude, the Qt library archive

Today I would like to introduce you to Inqlude, the Qt library archive. The goal of this project is to provide a comprehensive listing of all existing libraries for developers of Qt applications. So if you are creating applications using the Qt toolkit, and are looking for libraries, components or modules to use, Inqlude is meant to be the place where you find all information and pointers to get started.


The Inqlude project started at the KDE sprint at Randa this summer, where we discussed the idea of a "CPAN for Qt". There is a thriving ecosystem of libraries around Qt, KDE obviously being a big part of it. But there is no easy way to get the complete picture of it, and simply get the libraries which fit your needs best, independent of if they are part of Qt itself, of KDE, or of any other of the numerous places, where people publish their code. Other languages and frameworks have systems for this, like Perl has with CPAN, or Ruby has with Rubygems. So these served as inspiration and I did a prototype on my way back from the sprint on a Swiss train.

During the Qt contributors' summit, the desktop summit, and recently this week at the Qt contributors' day at the Qt DevDays in Munich, we had more discussions about it, collected feedback on the prototype, and refined the concept. During the last SUSE hack week I sat down to bring the code and the web site up to an alpha state, where it could serve a useful starting point for the project, for application developers to find libraries, and for library authors to contribute data about their projects.

The main component now is the web site. It's listing the data about Qt based libraries. These are only pointers, there is no hosting of code or packages involved. Inqlude is not meant to duplicate any of the functionality of code hosters, or distribution packaging systems, but integrate well with what's already there.



The meta data is stored in a git repository. So it's easy to contribute, following the well-known procedures of submitting patches. More information can be found on the "how to contribute" page on inqlude.org.

In addition to the web page, there is an inqlude command line tool. This can be used to get libraries and install them locally. Right now it's a prototype. It works with openSUSE 11.4 using the openSUSE build service as source. In the future we'll add more backends for other distributions and add more information about packages, so that you can easily install the libraries you need. Again this is not meant to duplicate any existing tools, so we'll make use of the native package management stacks and build tools which are already there.

The command line tool is inspired by the Ruby gem system, which makes it amazingly easy to distribute and get software. The inqlude command line tool prototype uses this mechanism itself. See the instructions how to get and use it on the inqlude.org page for more details. With C++ it's of course more difficult to distribute software, because there is a build step. But here comes the open build service to the rescue, which takes care of this step.


So what's next? This blog marks the official beginning of the alpha phase. The general structure of the web site is in place. So the next steps are to complete the collection of library data, and make the web site ready for end users. When this is done, we'll enter the beta phase. The goal of this phase will be to make the command line client ready for end users. Then we'll release Inqlude as 1.0, ready for production use.

If you want to help, you are more than welcome. Just go to the inqlude@kde.org mailing list. There we'll coordinate development, collect data, discuss, and help, if you have questions. See you there.

Friday, October 14, 2011

Fifteen years of KDE

Fifteen years ago Matthias Ettrich started the KDE community. On 14th October 1996 he wrote his famous email to the de.comp.os.linux.misc group on Usenet. He called for other programmers to join him to create a free desktop environment for Linux targeted at end users. Many, many people joined. Thousands of developers wrote millions lines of code. We did 90 stable releases of our core set of applications alone, not counting all additional stuff and the thousands of 3rd party applications.


So now, fifteen years later, we are done. We have a wonderful free desktop environment for Linux which is used by millions of users every day. Well, are we done? Not quite. While we have reached the original goal of creating an appealing desktop which makes Linux accessible to everyone for everyday tasks, our scope has broadened. There are whole new classes of devices in need of free and friendly user interfaces, it's not only the desktop anymore. The cloud presents new opportunities for connecting computers more than ever, and presents new challenges for freedom of software and data.

We are on it. The last two weeks saw frentic activity in the KDE community. Last week we released version 4.7.2 of our flagship product, the classical desktop. On Sunday we released Plasma Active One, our speedboat going into the waters of tablets and the device spectrum. On Tuesday we released ownCloud 2, our helicopter going into the cloud on its mission to retain your freedom and control about your data.


The KDE desktop is part of our live. We and millions of others use it every day. It's great for getting work done. We are on par with other desktops, but we are still pushing the limits and innovating, for all the users out there. This won't change anytime soon.


Plasma Active is one of the results of our innovation activities. It brings KDE to tablets, and it comes with a strong vision to create an elegant, desirable user experience for a spectrum of devices. It builds on the foundation of the KDE software, but it opens new doors, explores new areas. I'm really looking forward to what we can achieve there.


ownCloud goes beyond what we have done before. It runs in the cloud. But it's built on the values and the community of KDE. We deeply care about software freedom. Enabling users to retain control about their data and their privacy is a big part of that. ownCloud does that where other cloud solutions fall short. It brings fresh blood and energy, and opens up a space, which we weren't able to address before. Here as well I'm looking forward to what we can do.

Fifteen years of KDE is a long time. I joined the community in 1999, and I can say that KDE changed my life. I probably wouldn't have the job I have today without KDE, I wouldn't live where I live today, and I would miss a lot of great experiences and friends I wouldn't have met. In the interview I gave for the "people behind KDE" series, there was a question, what my favorite feature of KDE was. My answer was: "the community". Many other KDE people answered the same.

That's the core. KDE is an awesome community. I'm proud to be part of it, and I'm looking forward to be part of it for the next fifteen years of KDE.

Thursday, October 13, 2011

The demise of the Windows platform

I bought a Windows game last week. What I got was a scenic tour through the demise of the Windows platform. I knew that Windows as gaming platform was troublesome, but it never was as clear that it's actually moving towards irrelevance. If you ever have seriously played games on Windows you know this cocktail of driver updates, googling error messages, entering illegiible cryptic codes from stickers hidden in game boxes, waiting for online activation, going through update popups of various origins, and what not. It took me something like two hours before I was even able to start the game. I love games, and I have played quite some games on Windows, but I might be done with this now.

Of course Windows as a platform won't go away anytime soon. There are hundreds of millions of people running it. But the interesting part is that there are less and less reasons to do so. One of the arguments why people don't use Linux on their desktops always was "I need Windows to run my games". I heard this a thousand times. But as this argument becomes irrelevant, the only argument left is "I have always run Windows".

The free Linux desktop is mature. It's not only on par with proprietary desktops on other operating systems, it actually is innovating and moving beyond what other systems do. It covers all the needs of the vast majority of use cases. It has a variety of office suites, it runs several fine web browsers (another area where Windows has lost relevance up to the point of being made fun of), it has excellent tools and applications in almost any area you can think of, it's a primary choice for software developers, it even moves beyond classical desktops to netbooks, tablets, and more.

In addition the free desktop has some inherent attributes where Windows just can't compete, first of all the software freedom, but also the development model, and the distribution ecosystem. When you install a Linux desktop you have a fully functional system, you can browse the web, you can send email, you can edit your spreadsheet, even printing works out of the box these days. When you have Windows installed you are at the beginning of an odyssey to add all the bits and pieces you need to have make your system functional and secure.

Some might argue, that the desktop itself is becoming irrelevant. For some areas that might be true. People will use their phones or tablets or game consoles for things they have done on a desktop before. But there are so many people using their computers for work and other serious things, where you do want to have a solid desktop, probably not exclusively, but it won't go away for a very long time.

You might also argue, that people are using web applications instead of desktop applications. This also might be true in some areas. But the interesting part is that web applications have developed into another kind of desktop applications. The platform is different, it's Javascript and the web client environment, and the apps are heavily connected to web services. But you absolutely need a solid platform on your local system to be able to run the web apps. This platform is more than ever based on Linux (think Android), and there is no reason why this shift shouldn't continue to happen very quickly.

KDE is in an interesting position here. We are one of the key players on the free desktop, we have a mature classical desktop, we are expanding to other form factors and into the web, we have a strong community, which can make things happen, nobody would have expected to be possible (or who thought that Matthias announcement from 15 years ago would result in something like we have today).

We even have a story on Windows, where we have central applications like Kontact or Okular, which are more than a replacement for the apps, which are only running on Windows. This is more important than ever as a migration strategy. It's very easy to arrive at a point, where all the applications you run on Windows, are actually running natively on Linux as well. Running LibreOffice, Firefox, and Kontact on Windows? Fine, move over to Linux, it will run as well and better, and you will enjoy the freedoms of free software.

We have a chance to change the world, let's do it.

Sunday, September 25, 2011

SUSE hack week

Hack week. One week of ferocious hacking on new ideas without interruptions. SUSE does this twice a year to trigger those innovations, you can't realize when you are swamped by day-to-day work. Of course it's not the only way or opportunity to do new things, but it gives the freedom to actually get something done on a topic, which is not covered by conventional product planning. It's productive, it's fun, it creates great results. Next week it's the seventh edition of hack week. We are collecting ideas and activities in openFATE.



Nat started the first SUSE hack week four years ago. Others followed suit. This is quite a bit of history. So I was thinking of what I did the six times before, and what I want to do at the seventh time. Here is a summary. My hack week blog, which I usually use to report about my hack week progress, has some more details.

Hack week 1: Dynamic web services portal

In the first hack week I tried to put a dynamic web services portal together based on enriched ("activated") Atom feeds. The goal was to collect information from various source like Bugzilla, Email, FATE, Blogs, aggregate them and offer actions to work on them, such as closing a bug, responding to an email, but all from one uniform view. I wasn't able to really get this project off the ground, as I was spending quite some time on helping others, watching, what was going on, and discussing ideas. A week probably also was too short for the ambition of this project. But it was an interesting attempt, and failure is an option at hack week. Others were more successful. Ars technica has a nice piece "Novell Hack Week: an experiment in innovation" with lots more details.


Hack week 2: KDE 4.0 beta

In the second hack week a couple of KDE hackers at SUSE teamed up to bring some parts of KDE 4.0 into shape for the beta release. We took a big office sat down together and worked on various parts of KDE to make it ready for the next beta release. I did a dive again into the KOrganizer code, fixed some bugs, cleaned up the code, did some porting work, and more. It was a very targeted effort, and it was great to work in a team.



Hack week 3: Social desktop

The social desktop project was one of my most successful hack week projects so far. Again it was a team effort. Frank Karlitschek, Sebastian Trüg and Dirk Müller joined me to work on the implementation of some of the social desktop ideas Frank had presented at his Akademy 2008 keynote. While Frank was working on the server side I was implementing libattica as client library to provide social desktop features via the open collaboration services protocol. We got quite a bit of work done, and the project won a 3rd prize as best overall project at hack week. There is an interview, which was taken at Hackweek III, where I give some background and also talk about some other stuff around my work.

It's great to see that the project is still alive and kicking today, several years later. The protocol and the client library I started are widely used now, and it's used as base for  many different use cases, such as downloading wallpapers, providing a software shop, or updating Plasmoid backends. It's awesome when ideas pan out.




Hack week 4: KDE SDK

For hackweek 4 I thought I would try a big, ambitious project, I wanted to do for a long time already, provide an integrated, easy-to-use kit for KDE development. Taking great components like Qt Creator, using wonderful tool like the build service and SUSE Studio, I wanted to put together a software appliance, which could easily be used to develop KDE programs out of the box without much setup effort. I wrote a Qt Creator plugin, added KDE templates, did some services integration with git and opendesktop.org, and put everything together in an appliance. I got a lot of good feedback on the concept, but it was more work than I could do in a week, and I wasn't able to follow up later, so it's still an unfinished project. Would be great to eventually take it up again.


Hack week 5: SUSE Studio GUI client

SUSE Studio has a nice API, which can be used to control all the various aspects of appliance building and publishing. For the fifth hack week I decided to implement a GUI client for SUSE Studio using this API. It also gave me the opportunity to hack a bit on kxml_compiler, which is part of Kode, my multi-year side project for handling various aspects of XML in C++ in an easy way. I made quite some progress and had a client able to run test drives with native integration in the UI. I didn't find time to continue to work on this project after hack week, though, and there are other clients now as well. I'm not sure how much future this project has.


Hack week 6: Polka, the humane address book for the cloud

This was my most ambitious hack week project so far. I fundamentally rethought how I approached address book applications, and came up with a concept based on user's view on people from ground up. I called it a humane address book for the cloud. I had thought about that quite some time already, and also had written some code. But hack week gave me the opportunity to really bring it to a state, where I could share it with others. The feedback was amazing. One of my favorite responses was "I saw the future". Polka now is in a state, where it's actually useful, and I did a first release during the last openSUSE conference. This project has a bright future, I'll definitely continue to work on it.



Next hackweek: Qt library archive

This is my plan for hack week 7. Get the Qt library archive project beyond the prototype state. This started at a KDE sprint in Randa, was continued at the Qt Collaborator's Summit, got some more discussions at the Desktop Summit, and now needs some work to be taken to the next level. The idea is simple, create a web site listing all Qt libraries out there, and an easy way how to use them, think CPAN for Qt libraries.

There are a lot of things, which need to be done. If you are interested in joining me to work on this, don't hesitate to ping me. These are the things I plan to work on:

  • Finalize library meta data format
  • Adapt prototype tool to support the final format
  • Collect real meta data for as many libraries as possible
  • Finish the backend for installing binary packages on openSUSE via the openSUSE build service
  • Look into backends for other distributions, ideally using the same build service integration
  • Get libraries packages, which aren't
  • Implement a Qt based client, possibly with a QML based GUI
A lot to do. Help is very much appreciated. If you are at SUSE or somewhere else, if you are a KDE, Qt hacker, a packager, an upstream library author, a Ruby programmer, or a QML specialist, don't hesitate, you are very welcome to join the fun. Just contact me, and we'll figure out the rest.

Thursday, September 22, 2011

My openSUSE conference

Last week was the openSUSE conference in Nürnberg. Here are some of my impressions. I loved the relaxed, crazy atmosphere, mixing so many different people with so many different backgrounds, skills, interests, and fascinating projects. This spans quite a broad range of topics, not only on the software side from kernel to office suite, but also in other areas from cheese over quadrocopters to self-replicating machines. This community is seriously rocking the boat.

openSUSE Conference 2011: All openSUSE- and Free Software enthusiasts are invited to come together at this conference to learn, hack and have a lot of fun.

I gave two presentations at the conference. The first was about Polka, my humane address book for the cloud, which I mostly wrote during the last SUSE hack week. I explained the concept of addressing the problem from the user's side, not from an implementation point of view. Humans don't think about people in terms of vCards, but in terms of groups, pictures, time, and space. The Polka user interface reflects that.

I also did the first release of Polka during my presentation live on stage. So if you want to try it, go to the Polka home page and download the tarball. It's an early release, but it should work quite well. I intend to stabilize it a bit more and then do a 1.0 release. If you find bugs, please let me know.


The other talk I gave was a lightning talk in the Speedy Geeko session. Twenty slides in five minutes. This was fun. There were a nice variety of topics, including bees, fire fighters, and crazy scotsmen. My talk was about Maria Montessori, the Italian educator, who founded the Montessori schools. A lot of the concepts from her philosophy of education have interesting parallels in what we do in open source development.


There were many more talks. I only had a chance to listen to a few of them, but I enjoyed Greg's talk about the Kernel and Tumbleweed (change faster to be more successful), and Martin's talk about Wayland (wait until it's done, and then wait some more). Dominik showed the latest from SUSE Studio in a presentation and we also had the kiosk at the venue, which always is a great way to show, explore, and explain Studio.

Another great thing was that there were so many KDE people at the conference. It shows the strong relationship of openSUSE and its upstream projects, and KDE makes some excellent use of openSUSE, e.g. as base for Plasma Active. This is a great fit, and I think it's hard to underestimate how important collaboration between downstream and upstream is. We'll only win together.

Finally it was great to feel the enthusiasm of the community, people who came from all over the world, hang out at the barbecue in the evening, listen to 8-bit music, drinking openSUSE beer and chatting about openSUSE and many other things. The Zentrifuge was a wonderful venue for that. It certainly was an inspiring event. When is the next conference?

Tuesday, August 16, 2011

Back from Berlin

I'm back from the desktop summit, back from Berlin. It was an intense event, lots of great people, lots of great content. So I arrived at home tired, but inspired. Read on for my personal conclusion.


The conference was excellent. All the presentations I saw were of high quality. It also turned out to be exactly the right thing to put everything into one program, independent of affiliation of speakers or targeted community. I enjoyed the opportunity to learn more about some projects I'm usually not following that much. It was also great to have presentations done jointly by people from different communities, like the one from Lydia and Seif, or the upstream/downstream discussion led by Vincent, or the intern show case lightning talks.

One of the highlights of the conference was the panel discussion about copyright assignment. It's a complex topic, but the panelists brought up good arguments and lot of food for thought. Mark spoiled his argumentation a bit at the end by introducing his generosity concept. This certainly has its place when talking about motivation in a community, but in the context of legal agreements with companies it's very questionable, if generosity should be a dominant concept. My takeaway from the panel and some other discussions I had at the summit is that KDE e.V. is in a very good position here with the Fiduciary License Agreement, we optionally provide for KDE contributors. This provides a good balance of the different interests and adds safety for contributors and community.

The other big thing at the desktop summit was the general assembly of KDE e.V. It was a very focused and organized session. Mirko led it in record time. Lydia was elected as new board member replacing Adriaan, and I was reelected for my third term. In the afternoon we had a good BoF session about KDE e.V. questions, and we had a very good discussion about how to involve more people in KDE e.V. work. There is a lot to do, which is very important to be able to sustain the support for the community, expanding the individual supporting membership program, managing relations to existing and new corporate partners, maintaining our trademarks, keeping up and improving our infrastructure for sprints, membership, and KDE e.V. work, the next Akademy, and much more. We will do a KDE e.V. sprint later this year to get some work done on these topics, and to involve more people beyond the members of the board.

The last part of the desktop summit was the workshop week. It was packed. It felt more busy to me than at any previous event. There was a lot going on. The experiment with showing all KDE sprints of the last year in one hour worked well. We had 21 lightning talks and it was impressive to see, what happened there, how many people spend their passion and skills on these focused events. It can't be underestimated how much energy they put into the community, and how much things get done or triggered when you put a bunch of KDE people in the same room for a long weekend. For next year, I'll try to put this kind of session into the main conference program, as it really deserves to be shown to a big audience.


Another nice trend from the sprints became more visible. Several people used Kanban as a method to organize, visualize, and track the work done at sprints. Kevin introduced it a while ago, and the feedback to that is very positive. It's a low tech method of managing the activities at a sprint by basically putting sticky notes on a wall. By providing some simple rules for the flow of these sticky notes through the different stages of work being done, and applying constraints to how much work is going on in parallel, it's possible to maintain some good flow. Things get done quicker and it's easier to adapt to new things coming up. I think Kanban works best for the longer sprints, where you have more than just two short days on a weekend, but it's certainly worth experimenting with it as it's designed to adapt to different needs by modifying the rules and constraints as needed.

Finally I noticed two trends, which I really welcome. First is that there seems to be a growing interest in usability and design. We had design keynotes. It was said in many talks that people were looking for more involvement with designers. Technologies like QML provide new ways to involve designers and design thinking. There were usability BoFs and lots of discussion about how to better address users's needs. The second trend is that there seems to actually emerge a convincing story for KDE on devices beyond the desktop. Plasma Active is spearheading this, and many people are able to contribute there now with the ExoPCs Intel gave out for development. It could be called a mobile story, but it's more than that, because many of the concepts work on desktops as well, so it's rather about addressing the spectrum of devices we are talking about for quite a while now. This goes well with the first trend about focusing more on design, as we are exploring areas, where there don't exist many strict concepts about how to do things, and it could be seen as closer to the user as some of the other areas we are active in. Lot's of interesting stuff is happening here. I'm looking forward to what we will be able to come up with in the next future.

Last but not least I was really impressed by the work of the volunteer team. They did an amazing job in making the event run very smoothly. This, together with a great venue and the support of the university, the city, and all the sponsors, provided the perfect environment for the community to have a productive and enjoyable time. The volunteer team also showed how much we can reach, when KDE and GNOME people are working together. It sets a high bar for future events. Thanks a lot to everybody involved.

Monday, August 8, 2011

One year of KDE sprints

On Wednesday we'll do the experiment to present all KDE sprints which happened within the last year in one hour. We have speakers lined up, slides prepared, and just need you to come and listen. The session is happening on Wednesday, August 10th, at 10am in room 1.205 here at the desktop summit. See the workshop program for more details.


We had such a great set of no less than 21 sprints over the last year. So it will be exciting and fun to see a compressed version of that in one go. I'm looking forward to see you at the session on Wednesday.

Thursday, August 4, 2011

Approaching the desktop summit

It's only one day left until the global KDE and GNOME communities meet at Berlin for the second desktop summit. Hundreds of free software contributors from all over the world, the core of the free desktop community is meeting at the Humboldt-Universität zu Berlin in the middle of the German capital from August 6th to 12th.


It's those people who create the software, which millions and millions of users see, feel, and use every day, on the desktop and beyond, who make great technology accessible to everybody. Many of you participate in this effort, and by doing this with free software we are providing nothing less than one of the building blocks of free society. Getting all the creative minds, the people with passion for beautiful, elegant, powerful, amazing software, together at one event, that's remarkable, and I'm looking forward to what we'll breed at Berlin, what ideas, collaborations, what code will emerge.

For me one of the most important parts of the desktop summit will be the general assembly of KDE e.V. Without KDE e.V. events like this wouldn't be possible. It provides the organizational foundation, which is necessary to run a community on the scale KDE has reached. The general assembly is the annual check point, where we report and reflect on the state of the organization, and decide about its future direction. As a member of the board it's my duty and my honor to report on what we have achieved.


This year is a bit special as we'll have elections for two of the five board positions, and I'm running for my third term. While we have achieved a lot with KDE e.V. over the past years, we are still in a position, where we have the chance to achieve a lot more, for the KDE community, for free software, and, as already said, for a free society in general. To make some of this happen is one of the main goals I have for my third term. I need your support and your help for that, and I hope we can build an even stronger organization, where many of you join the effort of making the world a better place through our technology.

The main part of the desktop summit of course is the conference. We have a great lineup of keynote speakers: Thomas Thwaite, Claire Rowloand, Dirk Hohndel, Stuart Javis, and Nick Richards.We have dozens of other presentations, which cover the whole spectrum of the free desktop, technology, community, from both, the KDE and GNOME communities, and related project. If you are interested in free software on the desktop and reaching beyond the desktop, there is no better place to be than Berlin next week. As a special highlight we have a panel about copyright assignment with Mark Shuttleworth, Michael Meeks, and Bradley Kuhn, moderated by Karen Sandler. This is going to be interesting. KDE has a clear position there with the fiduciary license agreement we created with the help of the FSFE, which preserves freedom, gives equal rights to contributors, and doesn't create any barrier of entry.

The other big part of the desktop summit will be the workshops and BoF sessions, the less formal events, which take place towards end of the week. This is where people have time and opportunity to mingle, to collaborate, to exchange ideas, to discuss projects. I'm running an experiment there, the attempt to cover a full year of KDE sprints in one hour. We'll have a series of lightning talks giving an impression of what happened at the 21 sprints we had since Akademy a year ago. I'm also looking forward to discuss and finalize the recommended KDE git workflow we came up with at the sprint in Randa in June. Finally I also intend to move forward with the idea of a Qt library archive, which also originated at Randa, and which we discussed in more detail at the Qt contributors' summit.
As always I'm also carrying the hat of my employer, SUSE. openSUSE is a great distribution to run both KDE and GNOME, and SUSE Studio, my main project at SUSE, also can be useful in the context of the desktop communities in various ways. If you are interested in any of that, would like to discuss it, or need help getting something done, don't hesitate to talk to me.

Tomorrow I'll board a train and go to Berlin to dive into this special sphere of the free software community again. It's my ninth of the big annual events organized by KDE, be it Kastle, Akademy, or the Desktop Summit. I can't wait to meet all the old and new friends who make up this wonderful community.

See you in Berlin.

Tuesday, July 26, 2011

KDE 4.7 release party in Nürnberg

Following the motto "Think Global, Party Local", we'll have a KDE 4.7 release party in Nürnberg on Wednesday, 27th July. It will take place at the SUSE offices, starting at 19:30, and we'll have a few short talks, and the opportunity to chat, have some beers, and celebrate the latest KDE release. If you happen to be in Nürnberg and would like to meet some of the local KDE guys, you are very welcome to join. See the community wiki for the details.

Monday, June 27, 2011

Putting things together

Half a year ago there was a thread on the kde-core-devel mailing list with the topic "why kdelibs?". I gave a potential answer and this resulted in a series of great discussions. While these discussions were very constructive, it was pretty clear, that we would need an in-person meeting to finally answer the question about the future of the KDE platform.


At the same time Mario was preparing the third KDE developer meeting at Randa, Switzerland. It began with a Tokamak sprint in 2009, continued with a combined KDE multimedia and KDE edu sprint, and for 2011 he was preparing a triple sprint with KDE multimedia, KDevelop, and Nepomuk. Mario put up with the adventure and offered to host another sprint as well, so we put things together and added the Platform 11 sprint to the list.


The sprint ended two weeks ago. It turned out to be four and a half sprint in one, with the kdenlive gang joining us for some extended hacking fun. Almost sixty KDE people were in the middle of the Swiss mountains, coding, discussing, and plotting the future. It was an inspiring and productive event, thanks to the hospitality of Mario and his team (including his family), thanks to the incredible energy, which is unleashed, when KDE people get together. I have been at many sprints over the last years, but it still amazes me every single time, that it immediately feels like meeting old friends, even if you have never met the people in person before. But it's more than just a bunch of friends. It's a group of professionals, putting an incredible amount of passion, creativity, and talent into KDE. This makes these kind of events unique and it's stunning what can be achieved there.

For me the most important result of the Platform 11 sprint was the consensus we built about where we want to move the KDE platform. It's about making the components we provide more accessible to developers, expanding our reach, and cleaning up our technology. We'll go with more modular frameworks with less dependencies, which can be used naturally along other Qt libraries, and a release process which will deliver our work quickly. More details are described in a series of mails about the future of our frameworks from Sebas, the intended organization of our frameworks from Kevin, a plan to transition to KDE frameworks from David, and the KDE git workflow from me, on the kde-core-devel mailing list. To reflect the changes we'll refer to the KDE libraries and required runtime components as the KDE Frameworks in the future and retire the use of the platform term. This expresses well, that KDE provides utility for building great applications, but isn't tying users or developers to a monolithic block of dependencies.


What happened to the idea of merging the KDE development platform and Qt? It was a radical idea to trigger some thoughts, not a plan how to actually proceed. The main goals behind the idea, to make the KDE libraries more accessible, lower the barrier for developers using the libraries, to remove redundancies, to clean up the developer story, grow the developer community, and provide a consistent story to users, they still hold. A lot of what we discussed at Randa goes into this direction. Libraries will become more self-contained and we'll try to put quite some code into Qt. For a full merge neither Qt nor KDE are ready yet, so I think it's a good solution for now, to work on the concrete plans we came up with at Randa along the goals of making the KDE frameworks more easily accessible and available to a wide audience of application developers.

The other sprints happening at Randa also created impressive results. The multimedia guys were putting together the bits and pieces around Amarok, Phonon, PulseAudio, and KMix, and kdeenlive joined the KDE community. At the Nepomuk sprint the Zeitgeist and Nepomuk developers came up with a plan how to integrate their technologies, putting together the best parts of semantic technology on the free desktop. The KDevelop group was tremendously focused, they weren't really visible to me. When I was leaving Randa I met Alexander Dymo at the train station, as we took the same train, and he told me that they managed to check off all their todo items during the sprint. That's impressive, and it reflects the spirit of the Randa meeting.


We had a great mix of people at Randa, KDE dinosaurs and fresh blood, people central to the community for years, and people just joining. We had some friends from the GNOME community there, and we had local people being interested in what we were up to. Even when taking a walk through a bit of the mountains around Randa, we met people interested in what we were doing and ended up discussing KDE.


In the end to me the dominant theme of the meeting was putting things together. We did that with our plans for the KDE frameworks, we did that with various parts of the community, we did it with our relation to other communities, and of course we put quite some code together on top of all that.

Sunday, June 5, 2011

More Polka, please

After blogging about Polka, my experiment with a radically new take on an address book, I got a lot of great feedback. I appreciate all the comments, questions, and encouragement. Two people made me particularly happy, as they not only sent feedback, but also contributed some welcome work. Sascha Manns built packages, and Saleel Velankar created a beautiful logo. Free software rocks.


When I started with Polka, one of the main ideas was to not do a traditional desktop user interface, but try out something more natural. One of the side thoughts was that this kind of interface might also work well on some non-desktop devices, for example on devices with a touch interface. But I didn't really know, if it would work. So I decided to try it out.

My first attempt resulted in a port of Polka to MeeGo. MeeGo is a system targeted at touch interfaces, and being Qt based it seemed to be close enough for a getting Polka to work on it. It took me a while to get a working development environment set up, but thanks to Google, and careful study of a bunch of Wiki pages, I finally was able to create MeeGo packages with QtCreator and run them in an emulator.

Porting Polka then was not a huge effort anymore. The proven approach of bundling it with a mini version of kdelibs covering only the functionality required by Polka on MeeGo worked out well again. So here is Polka Touch.


Unfortunately I didn't have a MeeGo device, and the emulator only gives a very limited impression, of how the user interface works. So I needed real hardware, and luckily I came across some cheap WeTab.

The WeTab comes with some version of MeeGo, but I didn't bother with trying to build packages for it, but installed openSUSE. Again some Googling and studying of Wiki pages was required, but then openSUSE ran on the WeTab like a charm. The WeTab might not be the greatest tablet hardware from an end user's perspective, but for a developer it's great. I even was able to compile Polka directly on the tablet.


So how does Polka work on a tablet with a touch interface? It works surprisingly well. Arranging people by moving them around on the canvas feels even better than on the desktop. The menus work well, not using traditional desktop menus definitely is a win here. The dialogs for input of data, are not that great, but it should be straight-forward to adapt them to some more native method to gather data from the user. Another thing which needs some improvement is the use of the canvas background to show a menu for adding labels. This is easily activated accidentally by just touching the screen. It would be better to support scrolling the canvas with touching the background. This might even be interesting on the desktop version.

Overall I have to say it's fun to use Polka on a tablet. Still needs some tweaks, but the first experience is already quite good. It's nice, when ideas work out.

Friday, June 3, 2011

Platform 11 at Randa

I'm at the Platform 11 sprint at Randa. We are here to discuss and shape the future of the KDE platform. It's the first meeting of this kind since Trysil five years ago. Four people who were at Trysil also made it to Randa, including a respectable dinosaur, but it's great to also have new and very new faces around.


Randa is a great location. It's a small village in the south of Switzerland, in the middle of the mountains. The Swiss railroad system did an impressive job of bringing us to Randa on a steep and winding track. Now we are surrounded by thousands of meters of mountains, and there is snow and glaciers, but no escape. Perfect time to focus on the KDE platform.


Yesterday we did a brainstorming and collection of topics to discuss, and started to go into projects in smaller breakout groups. A Kanban board keeps us on track and moving. There is a lot to discuss, but it's already pretty clear, that there is a solid base of consensus on many of the core questions, how to make kdelibs more modular, how to better seperate and define the framework and the platform, how to lower the barrier for application developers. We will need to do lots of additional work to sort out details and find the best solutions to the key questions, but that's what we are here for. So I'm looking forward to the next few days, and all the results we'll create.

Thursday, March 24, 2011

Show us your work on the free desktop

The deadline for the Call for Participation of the Berlin Desktop Summit is approaching. The deadline for submitting proposals for presentations and lightning talks is tomorrow. So you still have the chance to submit a presentation and talk about your work on the free desktop at the wonderful event in Berlin that the desktop summit promises to be. It takes place from 6th to 12th August this year and combines the annual conferences of the KDE and GNOME communities.

Some of you might think that your contributions to the free desktop to the event are not relevant enough to warrant submitting a talk. That often is not true. While we will have well-known speakers who have done ground-breaking things on the free desktop, we all have started small, and sometimes especially the small projects, which are still young, are the most interesting ones to hear about. So please don't hesitate to try it, submit a presentation, talk about the projects you are passionate about, share the love for the free desktop with the community. Berlin is the right place for this.

Submit your proposal now.

Monday, March 14, 2011

It's not an address book

It began about ten years ago, when I rewrote the KDE address book library. I implemented a nice API, vCard parsing, and a representation of something I called an Addressee back then, a contact, the data belonging to a person or any other entity, closely modelled after the fields of vCard, which is a fine standard for storing and exchanging address book data.

We wrote KAddressBook as an application to manage contact data on top of the address book library, and while it's a nice and useful application, in some ways it still follows to some degree the technical thinking coming from the structure of the underlying implementation. This shows in the user interface, and makes it less useful, attractive, and intuitive as it could be.

So I thought it would be a good idea to experiment a bit and approach the task of handling people data from the other direction. Ignoring technical aspects of the implementation, or constraints of underlying technology, but thinking from a user's point of view, thinking about what's a natural way how to deal with this kind of data. I started to think and code a bit, and during Hackweek 6 I went on and got the application I started to a level where I think it's time now to share it and gather some more feedback.


But before I come to the application itself, here is some of the motives and concepts behind it.

Mental model of people

The first thing I did was trying to come up with an idea of what the mental model is how people think about people. The way address books usually present this data is practical in some ways, but when you think about other people, do you have an alphabetically ordered list of names in your mind? Probably not. So I collected a list of concepts, which better address the mental model of people.

Groups. People usually belong to some groups. There are colleagues, friends, familiy, the weird group of hackers you hang around with on IRC. These groups are often used to classify people, and provide a pretty solid way to structure how you organize people, the KDE guy you met at last year's Akademy, the colleague who used to study with you at university. People often belong to multiple groups, and sometimes there is no clear mapping.

Pictures. When thinking of people you usually have some kind of picture in mind. You would recognize most persons you know on a photo without effort. Pictures are widely used to identify people, and pictures of people, especially of people you have a closer relation with are easily available from various sources now.

Fuzzy information. In many cases the information you have about other people is somewhat fuzzy. You might not know the exact address, just a city. You might only know a nickname, or the date of the birthday, but not the year, or you might have trouble assigning the parts of a foreign name to the fields of a technical address book. Is it a middle name or is it part of the given name? Is this the surname, or maybe a suffix? While it's nice from a technical view, to have this exact classification of fields of a record, in practice and from a human point of view, it often just is neither possible nor important. Humans deal with fuzzy information pretty well, especially when dealing with other people.

Time. An important factor to classify information is time. You remember that you met a person at a certain time. When having multiple phone numbers available, the time, when you got them, will give an important hint about which one is more likely to work. In general, knowing when something changes, helps a lot with navigating information.

Space. Another important factor is space. You think of people being close to each other, either physical, as in neighbors, or in a logical way, as in family. A family tree is a great example how space is used to organize and structure people. There are also numerous other ways how to relate people in a spacial configuration. How they appear on a photo, a seating order for a celebration, and many more.

It's not paper

In addition to coming up with a way how to meet the mental model of how people think about people, I also wanted to take benefit of having available the power of managing the data on a computer. There are many address book applications which resemble paper address books, going as far as mimicking the texture of the leather cover. But being able to manage the data electronically without the restrictions of paper, leather, and spiral binders, gives some unique freedom and potential in a couple of areas.

Ubiquity. As it's so easy to store, transmit, and distribute data electronically, data can be ubiquitous, it can be available at work as well as at home, or when being on the road, on your laptop, phone, tablet. It can live in the cloud, easily accessible from everywhere.

History. Without the restrictions of paper, there is no reason to ever delete data. You can keep an unlimited history, which gives you the safety to always being able to go back, if you have changed something you later realize you didn't want to change, or if a need to access old data arises. This all can be done in a way, which hides old data from the current view, to not clutter the most recent view you normally use.

Low-cost editing. With electronic data, the cost of editing, rearranging, duplicating, and deleting data is very low. You can easily duplicate a set of entries about people to do some rearrangements, and then delete it again after a few minutes without loosing anything. No striked through entries, no wasted pieces of paper, no mess of failed attempts to get something done. This provides the opportunity for ad-hoc editing, especially if combined with some kind of history.

Connect to the cloud. A ton of personal data lives in the cloud, on various web sites, in structured and not so structured ways. With Facebook, Google, Linkedin, your corporate directory server, the data on your private mail account and much more, you have access to a lot of data from the people you usually deal with. By putting an application at the right place, you can connect all this to represent your personal social network.

Unconstrained user interface

Finally I wanted to go beyond the standard user interface of current address book applications. There is much value in standardized interfaces, taking into account style guides, using standard components, and all the other good stuff of working in a nicely defined, consistent, and integrated environment. But I wanted to experiment with leaving this behind and trying some non-standard concepts.

So I decided to not care much about standard widgets, to get rid of everything, which was non-essential to the actual application, to use animations gratiously to make the interface dynamic and support the user in understanding transitions. I also decided to try a new kind of menu, which isn't seen much on desktop applications, but could give more direct access to the actions the user needs. Finally I also decided to create a UI, which is not limited to a specific form factor, but can deal with a variety of devices, not only classical desktops, but also stuff like tablets, or maybe even phones.

Polka

Now that you know where I came from let me introduce you to my experiment. I call it Polka. It's an application for dealing with people data based on the concepts I described, thinking from a user's point of view, matching the mental model of how we think about people, and not caring too much about the current status quo in terms of address book applications. I summarized that in the FATE entry for my hackweek project, where I called it the humane address book for the cloud. The title came from the idea to approach an address book not from the technical point of view, but from what is relevant for human users, and to tie it to all the data and functionality which is available in the cloud.


I started to think about this quite some time ago, and did write some code here and there, but during last hackweek I made the effort to actually put it all together and polish it so that it hopefully adequately illustrates the concepts I wanted to experiment with.

Let me explain some of the main elements of Polka.

Group view

The central part of Polka is the group view. It shows a group of people and possibly some sub groups. The display is based on people's pictures and makes use of the view as a kind of canvas, where the members of the groups can freely be arranged. Names are shown for entries where no picture is set, and they are shown for all entries, when hovering over with the mouse pointer, so it's easy to identify people.


By default all people are shown in a compact regular arrangement, but you can simply move all entries around to create a different arrangement. The next screenshot shows an example. It's the group of people, who attended the Osnabrück 8 meeting. The arrangement reflects where people were on the group photo.


That's just one application for arranging people freely. You could also reflect breakout groups, seating orders, a family tree, or any other relations between people. The basic idea is that you use space to naturally reflect how you are thinking of people. People can be added to as many groups as needed, and any group can contain other groups with the same or different people. The arrangement of people is specific to the view of the group, but the entries of people are always the same, they are just links, so a person can appear in multiple groups, but the data is only there once.

Menus

For menus and getting access to actions in general I wanted to experiment with something different than the classical menu bars and context menus, and see if I could find a way to make it more natural and direct to work with the elements shown in the user interface. So I got rid of all traditional menus, no menu bar, no status bar, no right clicks.

In the previous screen shot you can see how you get access to actions for a person. If you hover over a person, there is shown a fan-like menu, where you can select some person-related options. For general options there is the "main" menu disk at the top right, which also shows actions on hover. You can also click on the canvas to get options which are related to a certain location like adding a label.

This all is pretty simple, and you don't even have to be very exact, when hitting a menu, so it probably would also work with a touch screen, although I didn't try it, so take this with a grain of salt.

Person view

When you click on the "show" menu item, a detailed view of the person is shown. It includes all the data you store about this person. This is the usual contact information, but most of it is stored in a relatively free form. You don't have to identify components of the name or the address for example. They are just text fields. You can also easily add free form text by adding comments to every field of the person's data. The speech bubble indicates where a comment is there, and you can add general comments to the person's entry. All this helps dealing with the fuzziness which data about people often has.


When you hover over a data field, some editor controls are shown to comment, edit or remove the field, and the information is shown when the fields was modified the last time. This way you can judge, which fields are relevant, and which ones might be outdated, and it also can help with putting the entry in the perspective of time, they might be related to something which happened at a certain time you remember.

An important element are the pictures of the person. Polka collects pictures from different sources on the web, e.g. from your Twitter profile, and you can easily add more pictures by using a built in screenshot function. So if you see a picture of a person on a web site, in your mail client or any other place, you can just capture it directly from the display without having to deal with saving image files or getting URLs.

What the screenshots don't show is how the views transition. It's all done dynamically with animations converting between views of different groups or when the details of a person are shown. This makes it easier to keep track of what belongs where, and also is fun, because it looks and feels nice and smooth.

History

Polka takes care of saving data in the background. The user doesn't need to know or think of that at all. All changes are saved and the complete history of changes is preserved, so data is never lost, and there is no need for confirmation dialogs or anything like that.


The data can also be shared via a server, including the full history. So all your people's data is always available and shown in the same way, no matter where you are.

Storing the history also makes it possible to have unlimited undo, even across different computers. But I haven't implemented any user interface for that yet.

Technology

So much about what Polka does and how the user interface looks and behaves. Although the implementation is not that important, it is working code, so some technical details might still be interesting.

The data is stored in an application-specific XML format, including all the meta data like comments, when something changed, the position of objects in the views. So everything is in one place and can easily be versioned and shared. The interface to the XML is generated via kxml_compiler from an example XML file. So there is a native API to access the data without having to maintain the code to read and write the XML and represent it in C++ objects.

To store history and for sharing the data across machines, everything is stored in a git repository. Every change is recorded, so the full history is available in the git history. Git is amazing as a storage backend. As it's so fast, it's not really noticable that storing data is more than just writing a file, and by using git's distributed nature, sharing the data and its history with a server and across different machines comes almost for free.

The UI is implement with QGraphicsView and the Qt animation framework. I thought about using QML, but as C++ is my native language, using QGraphicsView directly seemed like the more straight-forward way to me. The implementation separates models handling the data and the views reasonable well, though, so adding a QML based view should be possible without too much hassle.

For the person's view I use Webkit. The data is rendered as HTML and CSS and shown in Webkit. This gives some more flexibility and power than a widgets or QGraphicsView based view, and also opens a path towards the web. I tried again to write a small library to make it convenient to generate HTML and CSS. It's better than some of Spaghetti code I wrote in the past for this purpose, but it still doesn't match the elegange of for example some of the Ruby based solutions for this. It's a pretty tough problem in C++.

Other than that it's a pretty much standard KDE application. It doesn't make too much use of the platform, though, as I consciously didn't use many of the standard UI elements.

Code

The code for Polka is available at git://anongit.kde.org/scratch/cschumac/polka.git. It's still experimental, so use with care, although by the use of git as a storage backend your data is pretty safe.

I don't have specific plans for making a release or making it a more official part of KDE right now, but will continue to use it as a playground for trying out concepts and maybe provide some inspiration for other projects.

I am interested in feedback and comments. So don't hesitate to contact me, if you have questions, ideas, comments, or suggestions.

So I'm at the end with this blog post, and while it is a very long post, there is still a lot to tell. For now I'll let the code speak, and maybe I'll blog again later to discuss some more details about specific aspects of Polka.

Monday, February 14, 2011

I love Free Software

Free Software is the foundation for a lot of what we are doing. It provides the base, on which our community can operate with autonomy and passion. Especially in times when landscapes are shifting it's reassuring to know that the freedoms of Free Software guarantee us and the rest of the world that we can use and develop our software following our purpose and to the benefit of the millions of users out there.

I love Free Software!

For me the Free Software community always has been a welcoming, rewarding, and enriching place. I would like to take the opportunity to say thank you to all the users and developers, students and professionals, volunteers and commercial contributors, who spend their time and passion on making the world a better place through software.

I love Free Software!

Monday, January 24, 2011

Choosing a project for Hackweek 6

It's Hackweek again in SUSE land for the next five days. It's the sixth edition and there already is a nice list of projects in openFATE.


I haven't decided, what I'll work on, yet. There are four projects I'm thinking about. I entered all of them in openFATE for now, will sleep for a night, and then take a decision tomorrow morning, when I'll start hacking. If you have input, preferences, what you would like to see happen, or if you would like to join me in one of these projects, please let me know.

These are the projects I have in mind:

Developer sprint support tool

We have discussed this a couple of times in the KDE community, as there are happening a lot of sprints there, and it would be great to have a tool, which supports taking care of the administrative aspects, helps with reporting of results, and supports the productive process. This would be a nice one-week project, especially, if somebody else would like to join the fun and help developing it. It would certainly also benefit openSUSE and other communities.

Read more in openFATE #311141.

One-click appliance installer for SUSE Gallery

Once-click install works nicely in openSUSE for packages. But we don't have a comparable mechanism for appliances on SUSE Gallery yet. It would be great, if you could just click on a button on an appliance page in SUSE Gallery and the system would automatically take care of installing the appliance, so you could use it right away. This could simply be downloading it and running it in KVM or something different depending on the type and content of the appliance.

Read more in openFATE #311142.

Alternative configuration backend for KDE applications

This is a fun idea from the area of cross-desktop configuration. It wouldn't be the first attempt to come up with some cross-toolkit, cross-desktop, cross-platform configuration system for desktop application, but I'm not aware of any attempts from this angle so far. The idea would be to extend kconfig_compiler to support other configuration backends than just KConfig. This could be QSettings, or dconf, or something completely different. There probably are some practical obstacles I didn't consider yet, but it would be interesting to see, if it's possible to move KDE apps to use a GNOME configuration backend by a simple recompile.

Read more in openFATE #311144.

Humane address book for the cloud

This project goes back to some of my roots. Something like ten years ago I rewrote the KDE address book library and worked quite a bit on KAddressbook, the application to handle contacts in KDE. Back at that time I was deep into the vCard format, and thought it would be a good idea to give the user all the power the format provides. While a couple of good things came from that, I now think, that this approach was a bad idea.

Address book data should be handled in a way, which is more natural than assuming people are just a list of alphabetical ordered contacts with a lot of sophisticated data fields. Especially these days, where lots of personal data is stored in the cloud, there must be better ways how to make use of the technology we have at hand, and put it to use in a way, which puts people first, and the way how they think about dealing with their data, information about other people, and their relationships to them.

Read more in openFATE 311143.