Archive for the ‘KDE’ Category

New hardware => new KNewsTicker!

Sunday, October 21st, 2007

My kind employer decided to grant me a brand new ThinkPad R61 - yay! Not only does this new machine allow my to play my beloved World of Warcraft in all its graphical glory, it also made me spend most of this weekend on hacking KDE4.

I decided to use the latest Kubuntu release 7.10 and not only did it come with a nice default setup, getting KDE trunk to build on this thing was quite simple as well - I basically followed the KDE4 build instructions I found online.

My plan was to give some love to my pet project KNewsTicker by porting it to KDE4. After a while of research it turned out though that so many things changed which affect KNewsTicker:

  • Qt3 is gone, Qt4 is the new standard. In particular, the way of creating menus (like KNewsTickers context menu) changed a lot.
  • Kicker is gone, Plasma is the new standard.
  • kdepimlibs features the ’syndication’ library, a further development of librss (which I factored out of KNT a few years ago for akregator to use). So I don’t need my own RSS parsing code at all anymore.

Given that KNewsTicker is quite small, I ended up throwing almost everything away and starting from scratch. By now, I have a KNewsTicker plasmoid which can scroll the headlines of the KDE news along. It’s still pretty rough, for example you cannot extend the list of news feeds at the moment (except by editing the configuration file by hand). In fact, the only things you can configure via the settings dialog are the font size, font color and update interval. It’s a start though!

The obligatory screenshot showing the new KNT in all its glory:

This shows my current KDE4 desktop in a Xephyr window.

Finalized return from aKademy

Thursday, July 12th, 2007

This year’s KDE conference was again worthwhile going to. Wish I had been able to stay longer. Talks were good and seeing familiar and new faces proved to be very nice again. I might be in the minority but in my opinion the initial lack of an Internet connection was a good thing. It made people talk to each other or closely listen to a presentation rather than staring at their screen and using IRC to chat with people elsewhere or inside the same room.

Everything would have been perfect if I would not have to add three more people to the list of those that commenced their stay by filing a Property Irregularity Report at Glasgow Airport.

(more…)

Revision Control with SVN

Friday, May 11th, 2007

Today we finally switched to Subversion as our revision control system at work. After using CVS for about ten years, the list of things we didn’t like about it became long enough to justify switching to something different.

At first it wasn’t quite clear what that “something different” would be; many KDE people (mainly from the Linux camp) suggested to use Git but that’s a no-go for us (we need our revision control system to work on Windows as well), leaving aside that some people here would probably rather walk over broken glass than adjusting their work style. :-)

Since we’ve been using Subversion for quite some time at KDE, and we know that it feels very much like CVS (minus the annoying things), it came as a natural choice. First attempts to convert our internal repository went very well, and now - with the switch being final - many scripts which were developed as little side projects to KDE, such as ’svnlastchange’, become useful to us, too.

And I don’t have to do the mental switch between svn and cvs all the time when moving between the office and home. :-)

The biggest advantage Subversion gave me so far is related to merging patches: I have different checkouts for different Squish branches (one for 3.2, one for HEAD^H^H^H^Htrunk, et cetera) and very often I’m committing something to one checkout and then want to merge the same patch to the other checkout. I wrote a little script for that called ‘ilc’ (for ‘integratelastchange’ ;-)) which makes that very easy. With that script I can just do


$ cd ~/src/squish/trunk
// .. Hack away ..
$ svn ci foo
Sending foo
Transmitting file data .
Committed revision 12000.
$ ilc 12000 ../32-branch

And that’s it. However, I’d like to get rid of the revision number argument so that when the script is invoked with just one argument, it will always integrate the revision which I just checked in. Unfortunately the different types of revisions (COMMITTED and BASE and PREV and whatnot) confuse me a bit, I couldn’t find the right one yet.

Maybe some reader knows how to do that?

Even if that can’t be solved, I can now hardly imagine how we managed to survive this long with CVS on KDE. :-)

KDE’s Panel Vacuum

Friday, April 27th, 2007

I’m quite amazed by how technologies which I used to discard as ‘hype’ (like, Solid or Phonon or so) actually seem to work. For real. Maybe I should feel a bit of shame but I don’t since this reflex of being sceptical of projects which have a fancy code name but not visible code base has proven quite useful in the past - helps to avoid working on vapourware.

Anyway, one of the KDE features of which I didn’t see anything other than mockups yet is KDE’s new panel framework thing dubbed Plasma. I was aware of the fancy web page for some time now (now that I view that page again - what the heck is ‘Appeal’? appeal.kde.org redirects to www.kde.org - is that an omen already?) but still, I didn’t actually *see* it yet. Of course, it’s listed as some integral part of the KDE4 architecture, but that’s pretty much all the information I could get out of KDE’s tech base regarding Plasma.

Okay, not quite. There’s the Plasma project page in the techbase. Unfortunately I can’t claim that it made things any less shady for me. Call me a pessimist but I don’t think that it’s a good sign the Raport Menu Plasmoid has a fancy logo but no code. Maybe I’m lacking vision or professionalism but I prefer to have something before I give it a logo or a name. And something means something which I can compile and run and fix.

Well, I’m not trying to be a naysayer here but I think that the situation around Plasma is kind of… shady. My impression is that it’s –> <– this close to dieing the dreaded buzzword hype death. On the other hand, this is maybe not such a bad thing… (more…)

KJS Speedups

Tuesday, March 27th, 2007

Best code is written with bad weather outside. This was proven by Maks recent work on KDE’s JavaScript engine at least. While cold and snow were plaguing North America Maks developed some nice and effective optimizations that were merged into trunk last night.

Now what was this about? The easy but slow dynamic variable lookup of KDE 3 is now replaced by a static lookup where the symbol can be bound to a local variable. On the other hand, local variables are skipped if a variable is known not to be part of the set. Due to the dynamic nature of JavaScript this approach cannot be used in all cases but wherever it applies the speedup is very noticeable. Two performance test cases supplied by Richard Moore and the iBench JavaScript test finished in 13% to 39% less time than before. Quite a bit for a single patch!

If one considers the sum of all the latests improvements done by KHTML hackers from and outside of Konqueror will perform significantly better in KDE 4. iBench and Ian Hixie’s JavaScript and DOM performance tests show a speedup factors of 2, 3 and sometimes even higher! This leads to a clear outperforming of Firefox 2.0 in some HTML test cases.

Above results will not apply 1:1 to every page. Some bottlenecks are definitely still left but will be addressed for KDE 4.0 or later releases.

KMail talking ManageSieve

Wednesday, March 14th, 2007

My favourite IMAP server Archiveopteryx gained Sieve support with version 1.16 that came out last month. Apart from a few small harmless glitches it worked out of the box which finally means the end of client-side e-mail filtering for me. But it took Frerich less than a minute to discover that KMail’s support for managing the rule files did not want to work with the new server component.

After some debugging I discovered that the KIO slave did not even get past the authentication stage. The guys of Oryx were quick to fix the behavior of the STARTTLS and AUTHENTICATE commands but we are still stuck with kio_sieve not accepting the response of a CRAM-MD5 authentication attempt. It wants a {number+}crlf *octet literal but the server simply sends a “….” quoted string.

The server behavior is fine according to the standard draft and before I file a wish to change the behavior to a KMail-friendly one I’ll try to implement the missing part in the KDE client. Might help other users with other servers in the future, too. Guess that the ManageSieve support was never tested with anything but the Cyrus server…