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?