KDE 4.0 @ Chaos Radio Express

Last Friday, before the KDE 4.0 release event, Tim Pritlove, host of the Chaos Radio Express Podcast (Subscribe) asked me if we could do an episode on KDE 4.0, as he was staying in Bonn. The result is a one hour show called Chaos Radio Express 68. It is a bit more technical than the one conducted earlier with Sebas, but also more chaotic, due to its spontaneous nature (We recorded it one hour before the first guests kicked in to celebrate and watch the video stream from Moutain View). It also references the episode on usability and interaction design with Peter Sikking and Ellen.

Unfortunately for all international readers of this blog, Chaos Radio is a podcast in German language, but luckily there is also Chaos Radio Express International (Subscribe), which provides a broad variety of topics (albeit no show on KDE yet).

Report: Release-Party in Bonn

Cocktail “KDE 4.0 Blue Lagoon”

Ingredients:

2cl Vodka
1-2cl Blue Curacao
2cl Cream
10cl Pinapple Juice
4cl Cream of Coconut
1-2 Ice Cubes

Howto:

Shake well. Decorate glass with a an orance slice. Before slicing the orange, cut and peel vertical stripes off the orange. This creates a nice gear look. Serve with a black straw.

For the non-alcoholic version, use blue curacao sirup and more juice instead of blue curacao and vodka. If you try a bit, you can create a color gradient with the coconut cream, which creates the lagoon effect.

To sum it up: it was an awesome party. We had a decently filled location, which surprised me because this particular party was announced less than one week in advance.

Starting at about 19:00 o’clock local time we saw a great show: Aaron giving an awesome keynote, Benjamin presenting KDE 4.0 apps on the Mac and Holger showing off KDE 4.0 on Windows in the typical understatement way of people from northern Germany :-). Thanks to Google for recording, Franz for organizing the streaming, and Dirk for getting a server capable of actually delivering the stream.


Keynote from the Bonn perspective: Aaaron rocking the show

To me that keynote (which we will hopefully soon be seeing on Youtube), was en par with the ones the Steve’s of this IT world deliver, just a lot warmer and more honest. Yet Aaron managed to present the incredible achievement that is KDE 4.0 in an amazing way.

After the keynote finished, the attendees had time to test KDE 4.0 and discuss various issues. As a special plus for those attending our party, we offered a special “KDE 4.0 Blue Lagoon Cocktail”, which was very well received. (recipe on the right, sorry for the crappy pic). Thanks go to Peter for organizing beer, Natascha for doing an excellent job as a bar tender, the Netzladen for hosting and to AurISP and PBR Systems for providing a projector for everyone to follow the keynote.

Oh, and Qt is (also) GPLv3 now. Yay!

KDE 4.0 Release Party in Bonn

After Harri started the series of announcements for locations of the KDE 4.0 release party, it’s now up to me:
We’ll have a party on Friday, January 18st, 19 hours. We are partying at the premises of the Bonner Netzladen e.V., a very renown hacker space. We plan to have a live stream from Mountain View and will provide guests with Club Mate, Kölsch and a special surprise drink! Of course, we’ll bring a KDE 4.0 test setup for everyone to play around with.

So if you are from the Cologne/Bonn area (or just closer to Bonn than to any other location, or just like us best…), come and join us. To allow for better planning, please add yourself to the respective Wiki page.

The IRC Admin-Bastards Beg Your Pardon

For all of you idling in #kde4-devel while celebrating the release: we closed down the channel in order to remerge it with #kde-devel, now that KDE 4.0 is out. So that is the reason why you got kicked by either me or dfaure :-). The channel is now a redirect if you try to join. If you feel insulted by the sudden kick: Sorry (well, from me, not sure how David feels about it ;-)).

But don’t worry, we rented a real party channel over at #kde4-release-party!

KDE 4.0.0 – The Start of Something Amazing

KDE 4.0 release bannerSo it’s been done: KDE 4.0.0 has just been released. This is not only the end of a long development effort, involving a lot of new ideas and even more sweat and tears in getting a .0 release out. It also marks the beginning of a new age in free desktop computing, new ideas and new technologies, some of which are still emerging and will find their way in later KDE 4 releases.

I was especially impressed with the page of the KDE Games folks, which makes you want KDE 4.0.0 just for the sake of playing some of the games they wrote and polished. A special hats off goes to the new KBattleship maintainer. The new version rocks. In related news, make sure to check the page of the KDE Education project.

So what does the future hold for KDE 4? Obviously, there will be lots of plasma applets and a lot of ported and new applications. Developing for KDE already is and will continously become a lot easier, especially due to the advanced scripting capabilities. To keep the learning curve low, we will do a developer tutorial sprint on TechBase once the dust of the release announcement has settled. And the best thing is: You can make a difference. No matter if you like coding, translations, doing arts or do something we don’t have a position for yet: Get involved and become a part of something amazing.

PS: If you want to celebrate the new release in parallel to the Mountain View event next friday and live in the Cologne/Bonn area, drop me a mail.

2007 & New Years Resolutions

Due to some rather strange pains in my back (probably muscle-related, I hope the doc will find out tomorrow), I am somewhat chained to my bed. With my action radius being limited significantly, I am doing what seems popular: I decided to give an update about my personal situation. To sum up 2007, it was a fairly nice but also stressful year, with a lot of changes in my private life, both positive and rather sad (which don’t belong here, drop me a mail if you care).

It also saw the release of the english, slightly updated version of my book on Qt 4 and held an awesome study-related internship at the coolest toolkit-vendor ever. I hope this explains why I remained so silent on the blog and (even worse) on the KDE commit list. I kept active in the background however, keeping TechBase running along with Dominik and setting up other MediaWiki-based websites for KDE.

As for 2008, there is a lot of things I want to do. I won’t bother you with all of them, just the very basic ones:

  • Finish studies (finally :))
  • Get more involved in KDE development again
  • Enjoy real-life even more than last year*

So, to all my friends, readers and KDE-enthusiasts i wish

A happy new 2008!

*(well actually, that looks like bad resolution at first sight, since 1 and 2 conflict with 3, but after all it’s all about the right balance, right?)

Leveraging Qt For Smooth Transition Effects

I hate the days close to exams. I am pretty annoyed with learning by then, and the times I decide to call “creative breaks” get longer and longer. Yesterday, I was looking for something that might be fun, touching an area I haven’t been touching before. Now I don’t consider myself a graphics expert. As such, I am a total n00b when it comes to nice-looking effects.

However what has always bothered me is that despite virtually anyone having a bare minimum of OpenGL support nowadays, we still don’t have OpenGL-accelerated blending or transitioning effects in KDE. Back when I was at Trolltech, Matthias voiced the same opinion. And so I decided to program something cool “when I would find some spare time”. Now, as we all know, there is no such thing as spare time. It’s merely a matter of feeling The Itch or, like in my case, feel like you need to do something funny for a change.

I think our users deserve some eye candy, so I hope a lot of people who write photo albums, etc, watch this. So I wrote a demo that leverages Qt’s OpenGL widget, good old QTimer and the rather new QTimeLine class to transiate smoothly between two images. I’d love to see something like this in Gwenview or KPhotoAlbum for instance.
(I also feel that I owe a nice QtOpenGL example to the readers of my Qt 4 book, which I am linking here purely for commercial reasons, but that’s a different story).

Anyway, highlights of the demo I came up with include:

  • extra smooth transition using EaseInOutCurve
  • toggling between fullscreen mode and window using Alt+Tab (although implemented quick and dirty)

As you dive into the source code, you will realize that there is nothing OpenGL specific about it. All it does is using plain Qt APIs. In fact, the source code allows for an easy replacement of QGLWidget with QWidget. After a recompile, the blending effect still works, although by far not as smooth on X11. This is because if you use QGLWidget, it will redirect all your Painter calls to a special paint device using a special paint engine, which translates your QPainter calls into OpenGL commands. You can, but don’t have to bother with native OpenGL calls at all.

I wish it was possible to detect a software renderer in a generic way, but I’m afraid that will only be possible with GLX specific code. That way the code would simply not use a transition on non OpenGL-accelerated hardware. Hints welcome in the comments, please prove me wrong.

Good Bye Berlin

I am writing these lines at Berlin Ostbahnhof, waiting for my train to arrive. It was a nice 11 weeks and working with the Trolltech guys in the Berlin Office was awesome. The same applies for the Oslo crowd of course, which I had the pleasure to meet for only about two days. Now its back to uni for me, finishing up studies. But this may well not have been the last time in Berlin for me. Who knows….

OMG, FrOSCon!

Do you know the feeling? For some reason, you need to detach from something you were involved in, and suddenly, after a while of not being deeply involved with it, you realize its just workling perfectly — at an amazing pace. If you know that feeling, you can share what I feel when I think about this years FrOSCon.

Looking back at the past two months, Berlin has turned out to be a nice place to live, even though I hardly found time to explore the city yet. The downside is that I have to travel the republic, and that takes quite some time.

Thus the conference seems to be approaching at the speed of light: Only about 30 hours to go until the coolest Open Source and Free Software Conference under the sun (we expect great weather with sunshine in the afternoon at bearable 25°C on saturday) kicks off.

As previously announced KDE will be there, sharing a booth and a room with the Amarok and Kubuntu Germany guys.

In the room, we’ll have a broad program to offer on Sunday.

  • 13:00: Marble: more than a virtual Desktop Globe
  • 14:00: Amarok :: Forming the Core 2
  • 16:00: Kubuntu in Deutschland :: gestern, heute und morgen
  • In addition, we might add some BoFs, stay tuned! On Saturday, there is even a talk on KDE 4 by our beloveth board member and promo guy Sebastian Kügler, who will give you an update on the current status. Earlier the day, I’ll be talking about a Qt-related Wikipedia Offline Reader written by students of our University.

    An of course the present developers take their time to answer your question on the project and can help you to get inolved if you join us in our room!

    PS: Make sure to be there to receive a personal surprise. All you need to do in addition is to bring in a USB stick.

    API-Design or How I Learned to Love Writing Docs

    After a short trip back back home to see the “Kölner Lichter”, one of the most impressive fireworks in germany with my gf, I went back to Berlin on Sunday. With plenty of time on my hand during the train trip, I decided to revisit a project I started in 2005: CollapsibleWidget. After I have probably missed every deadline for inclusion of this little thing into kdelibs for KDE 4.0, I still want to bring it into shape for use in individual parts of KDE, especially the control center.

    The widget is lurking around in playground for a good while now, and Aaron, our plasma god, has even added nice collapse animations to it. So it works, looks fancy, why the worry?

    Being a good libs coder, I was unsatisfied with the class I originally wrote for an number of reasons:

    1. The API involved the concept of a container class that holds a number of CollapsibleWidgets. This class is orthogonal to other widgets that might want to hold such an item and is therefore redundant.
    2. The API of the widget followed no particular class known from Qt or KDE.
    3. The naming conventions, code indentation levels, etc were non-consistant
    4. The API documentation was basically non-existant.
    5. As the Widget is composed of several items internally, it still uses an widget()/setWidget() idiom to handle setting the to-be-collapsed widgets.
    6. No sensible focus/buddy handling

    The first problem I was able to solve was number two: After discussing the issue a bit with some fellow trolls in the berlin office, we decided that it would probably be best to model the class closely around the API of QGroupBox. However I noticed that it does not make much sense to inherit from QGroupBox, as the API has several things that I have no use for (setFlat(), setCheckable(), etc.). I also don’t see a lot of potential for code reuse there. So I went and implemented most of the properties of QGroupBox, which looks pretty good, even if I am not yet sure if it makes sense to allow setting the labels alignment for instance.

    Also I was looking for a way to get rid of number one, the container. Qt has a container class that allows for scrolling: QScrollArea. The container class actually inherits from QScrollArea, but sets it up in a convinient way, e.g. adds multiple, resizable widgets to a QScrollArea, which takes some extra API calls. I just got rid of the class, documenting the QScrollArea setup procedure in the docs. I was contemplating to add a static factory method to CollapsibleWidget, but since we live in times of GUI designers, I think I should rather try to work out a convinient way to use those classes in designer. So I went to talk to Friedemann, our local designer guru here at Trolltech. and this morning he implemented support for QScrollArea! This means you can now put arbitrary widgets and layout inside a ScrollArea in designer. Yay!

    The need for designer integration also might also help me to get rid of number five and might ease to implement number six: Using the QPainter and QStyle API directly rather than using a QLabel and a QAbstractButton might help in reducing flicker, speeding things up and might also allow plain simple layouts, therefore avoiding the setWidget()/widget() hack.

    As for number three: Code reindention was done quickly, and the API inconsistancy was pretty much automatically solved by approaching number four: While writing the API docs, one is quick to notice a lot of inconsistancies within the API. I corrected all I noticed along the way. I also realized that the Widget wasn’t actually a collapsible widget, but much more an expandable widget, since it’s collapsed by default. Also, talking about expansion is a lot more consistant with other parts of Qt (think Item views). Also, the widget is better described as an expandable group box, than just an expandible widget. After all, it’s even modelled after QGroupBox. After prepending a K (the class is supposed to become part of kdelibs some day, right? :), I ended up with the nameKExpandableGroupBox.

    The code is in playground and comes with a small example to play around with. I’d appreciate your comments, especially on the name.

    Writing documentation really helped me to improve the API a lot. So I put my thumbs up and put on a cheesy smile to tell you: “While writing API documentation, I expirienced enlightenment – and so can you!”

    (ade, you SO owe me a beer for this one)