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