KMess - MSN / Live Messenger for Linux / KDE

Skip menu

Developer blogs

Planet KMess

This page is an aggregation of public weblogs written by contributors to KMess. It's a mix of stories about progress made in KMess, new cool features added to SVN, idea's for a next release, Linux / Open Source views and personal stories as well.

We'd love to hear what you think about new features, even a small whooho! or thank you note. Follow the links to visit the external weblogs to post a comment there.

July 05, 2010

Diederik van der Boor (vdboor)

We uhm.. had a lovely party at Akademy

Just after the first day of conference talks, it was time for a party! :-D

The party was held at the Love Hotel Nightclub, in Tampere. For the first few hours, the club was reserved for KDE alone, and everyone was able to chat with each other. And this is actually quite easy. You walk in front of a random developer, ask their name, and what he/she does in KDE. That's all you really need! And gives you a good head start for a conversation, full of enthusiasm for what the other is doing! That atmosphere alone is really unmatched elsewhere. Unbelievable and amazing. Later the evening, other local people also entered the club. It creating a nice mix up of hackers and locals. (and various girls!)

At the dinner beforehand, my fellow project members wondered how a KDE party would look like - taking the taking the high level of geekness into account. Well trust me I stated: KDE people can party!! Even dance and set a really good atmosphere! And it turned out to be real. Sjors mentioned afterwards this was the best best party he ever had!

During the evening we also got into a conversation up with college students from Mexico, and naturally you'll have to explain yourself. Like what friends you are with. To get the message across to the girls, I briefly said it was actually quite weird. and cool at the same time. We're here with ~300 friends. All from around the world, meeting here together in Tampere. [wow. what is the relation?] Well, again quite weird and cool. We make software. You know there is Windows, there is Apple. But there is a third one. And this one is done by volunteers. They work on it because they love to it. And that's something I admire. Like those anime people in the park today; totally dressed up. They also do that they love to do. And now we're here to build amazing software. As a means to improve the world. [wow]

The message got through pretty nice actually. It was not a talk about technical details, from mind to mind (like we tend to talk). It was a message from the heart, to the heart. It kind of struck her as I patiently told it, giving pauses, and letting the effect get through. It showed and shared the feeling and enthusiasm we all have, and it worked really well!

The rest of the night continued with amazing music by the DJ, and a lot of dancing, taking pictures, etc.. I hope to receive some pictures of the others over there. Perhaps they are better not to be posted here. :-P Aaron dancing yikey close, just for the fun of it. Me getting kind of itchy screaming, and there are pictures of that too. :-P Taken by locals.

wow that was a party. Did I recall that was with geeks? I'm dazzled, and even more when we took the final photo. It was taken after the party. At 3:39. :-|

July 05, 2010 08:15 PM - view comments

July 03, 2010

Diederik van der Boor (vdboor)

KMess at Akademy

Last year I went to Akademy as single KMess developer. This year however, things have changed! Valerio and Sjors are also able to attend, making it the first year we meet in real life! It's quite odd to see people for the first time, while you've been working when them for a few years already. :-) However, this goes extremely well. Having the same passion for KDE really helps, and comfortably talking to the other people around you!

We also hope to get KMess in a better state this week then it currently is. At our hotelroom (TOAS, 5th floor), we have a A3 paper where we write down all little annoyances, and see if we can fix them.

On particular note, we'd love to make progress with a new MSNP2P-stack. This should improve the transfer of display pictures, file transfer and webcam support. It currently requires some discussion to get it right, and that's something we've avoided for quite a while. With the three of us at Akademy, I'm positive we can get some work done! :-)

For now, I wish everyone a good night sleep, and see you tomorrow!

July 03, 2010 12:25 AM - view comments

May 12, 2010

Valerio Pilo (amroth)

GSoC: KMess is IN!

Hi everyone! Today I’ll offer my little blogspace to Daniel E. Moctezuma, our mentored student for Google Summer of Code  2010 :) He’ll explain what’s about to happen in KMess soon… enjoy!

Integration of a plug-in system into KMess

KMess, the Live/MSN Messenger alternative for Linux, has been growing in
the past years as a way of letting the users feel comfortable with
instant messenger programs by providing a messenger with almost a lot of
the features Windows Live Messenger has together with a nice user
interface (and much more of course ;) ). In order to keep this constant
improvement, the developer team has been working on a plug-in system. It
is a major feature as it allows which allows new features without
bloating KMess.

The primary goal of this project is to design and write code in a way
that plugins/scripts can get their full functionality, main control of
the following components is considered:

- Message text editor
- Personal message and status
- Message transfer
- Access to display picture

I will create some demo plugins to show the capabilities of the plugin
This way other plugin developers can see how can be done, so they can
use all their creativity for improving the experience for KMess users.
For the same purpose, appropriate documentation is also required, so
documenting all my efforts is an important part too.


- Message editor: have control of the text you send to your contacts, as
well as the text you receive from them. There are many possibilities,
but why not play some jokes to friends and something you write your
messages backwards. You know how painful it is to write long sentences
in reverse (let alone read them ;) ). Another, more reasonable, one is
predefined sentences: let the user to choose the trigger-commands and
message to be shown like if you type “>greet” could show “Hi! How are you?”.

- Personal message and status: control of your personal message. A
possible demo plugin is to change the personal message automatically at
certain hours configuring it in a simple window where I can set an
specific personal message or status to be shown at a certain time.

- Messages transfer: control how many people would you like to be able
to receive your message. The demo plugin could be: I would like to ask something to 5
people in private without opening each one of its windows and
writing/copy-pasting the same message 5 times, instead of that how about
selecting the contacts or group(s) you like to send the message(s).

- Display picture: control of the display pictures you show to your
contacts. As a demo, we could set an specific display picture to be
shown at a certain time or to be shown by an interval of time.

Awesome, to say the least! Thanks a lot, Daniel ;)

May 12, 2010 11:54 AM - view comments

December 01, 2009

Valerio Pilo (amroth)

KMess 2.0.1 is out!

Hello everyone!

I’m happy to announce that KMess 2.0.1 is out right now! (for those who are wondering, it is a Live Messenger alternative for KDE4 :D )

This release also contains a couple new shiny things other than the usual “fixed this, improved that” mutter:

  • Full hand-writing support! yay ISF-Qt!
  • Synchronization between Messenger’s friendly names, display pictures and personal messages
  • Fixes to the unbelievable MSN server issues of recent history

Now, head on to SourceForge to get it before everyone else starts to package it ;)

Then let us know what you think of it! You can reach us by using our forum, our development mailing list, IRC at #kmess on FreeNode, or by using LikeBack: open KMess, go to the Help menu, click “Send a comment to the developers”.

Also thanks to all translators, contributors and testers, not forgetting all users who sent us feedback via LikeBack! Hats off :)

December 01, 2009 12:08 AM - view comments

September 06, 2009

Valerio Pilo (amroth)

Allowing user feedback with LikeBack

LikeBack is a very effective way to allow your application’s users to contribute actively with your project.

It is composed by two parts:

  • A frontend, the most important part, that which will be seen and used by the users.
  • A backend, which the developers can use to see and answer to what users had to say.

In seven months of activity (we’ve started using it in KMess since february 2009) we’ve received well over 2500 comments: of those, the vast majority was useful to us: this should help understanding how bloody useful LikeBack is.

The flow of comments will be to you extremely useful to understand what your users want: we found that LikeBack really helped in giving the project a direction. It will be *their* direction – which needs to be also *yours*, if you want to keep your project alive! I think that 99% of the time, you’ll find the direction suggested by LikeBack comments will be the best one :)

Now a little tutorial on how it works, and how to install it (it’s not hard!):

The frontend

A screenshot, as usual, is worth a thousand words:

The LikeBack frontend

Users can send four types of feedback: things they liked; things they didn’t like; bugs; ideas for features.

The frontend is a set composed by:

  • a bar, which automatically moves itself to the current window, with the four icons corresponding to the four feedback types;
  • A dialog, which is used to allow the user to compose then send the feedback;
  • A “LikeBack” object, which is practically the only thing you’ll have to insert in your code, and allows you to customize how LikeBack will integrate in your application.

Once it is installed (more on this later), the user can use it in two ways. First, by clicking in the Bar icons, a very direct way; and second, by choosing “Send comment to the developers” from the Help menu. Once one of these action is made, the Dialog pops up. The developers can choose the languages they can read, to help the users choose how to write the feedback. Notice the online translator option (linking back to Google Translate) :)

After writing their comment, the user can choose whether he/she wants to remain anonymous or to be contacted back in case it’s needed. The obligatory privacy statement makes it clear that you developer won’t mess with the collected personal data – which amount to an email, the app’s version number, and which app’s window the feedback was sent from; anonymity or privacy assurance help keeping the user comfortable about telling his/her opinions to you.

Once he/she is done, the Ok button will send an HTTP POST request to your LikeBack installation, somewhere on the Web.

The backend

This is a simple web application, running on any web host with PHP5 and MySQL (you need root shell access to add some neat extras, explained below). Screenshots:

Backend: List of comments Backend: Comment

The first screenshot shows how flexible LikeBack is: you can show which bugs types to view or hide, and customize the list however you may wish. The list itself shows a very generous set of details from each ticket, and the line color gives a direct visual key to the feedback types.

In the comment view, easily accessible by clicking on the comment text, you will be able to see an extended form of the ticket list details, along with the commenter’s email (if any). The remarks system is a very powerful way to communicate with the user: it allows to send your remark both to the ticket remarks list, and also to the user email. Using a certain script which must be installed on your mail server, the user will be able to reply him/herself to the remark, establishing a full and direct conversation between you and them. If this is not listening to your user base, what is? ;)

Of course you can delegate LikeBack interaction to specific members of the team, to help keeping focus – we at KMess can get 5 to 20 comments each day, this means you could need to use a significant development time on LikeBack. Trading and sharing burdens between team members is even more important!

Another *great* feature of LikeBack is Trac triaging – you can enter a Trac ticket number, and LikeBack will close the ticket as soon as it is marked as done in Trac, also posting a remark about the event :) This can be expanded of course, making a Bugzilla interaction plugin is surely not hard!


How do you get LikeBack up & running? At the time of writing, the best way is checking out the LikeBack SVN; we will soon release version 1.4, which will also be packaged on SourceForge as a tarball.

Here’s the LikeBack SVN repo:

Installation instructions about the backend are also present in the README file:

  1. Install the Smarty library, usually by installing the smarty package on your server’s shell, or by installing it locally on the LikeBack directory (this is not tested at the moment, can you tell us if it works?)
  2. Put the Likeback backend/ directory contents in a publicly accessible location, say /likeback/ on your server, or somewhere less accessible/guessable, if you want
  3. Restrict access to admin/ by HTTP/HTTPS authentication
  4. Copy db.conf.template.php to db.conf.php and modify it with your database’s access details. We recommend, if possible, to use a separate username and password only for LikeBack, with only access to the LikeBack tables
  5. Make sure the user that runs all scripts can write to admin/templates/cache
  6. Run admin/install.php
  7. Optionally, to have LikeBack send weekly reminders to you, add a crontab entry to run cron/sendReminders.php weekly (see cron/crontab file about this)
  8. Test your installation!

When it’s ready, move on to the frontend! Copy the frontend/ directory in your source tree. Then we need to add LikeBack to a window: usually, the first QMainWindow which gets shown will be the best place for LikeBack. From the moment it’s enabled, the LikeBack Bar will move to every window or dialog automatically. If you want to add the menu entries to send feedback in other windows, you can instance LikeBack somewhere global, then call likeBack->createActions( actionCollection() ) whenever your other main windows are instanced.

Include the “likeback.h” file. Then, here’s the code to instance and set up LikeBack initially:

  1. Instance the LikeBack object:
    LikeBack *likeBack = new LikeBack( LikeBack::AllButtons, true /*showLikeBackBar/ );
    The first argument allows you to choose (with ORed flags) which of the 4 available feedback types you want to enable. The others will not show up anywhere.
    The bool argument allows you to initially show or hide the LikeBack Bar – but the user can override this option with the Help menu checkbox (also added by LikeBack).
  2. Then you need to set up where to send the feedback; that is, your server:
    likeBack->setServer( "", "/where/you/set/up/likeback/send.php", 80 );
  3. You can also choose on which windows the LikeBack bar is allowed to show up:likeBack->setWindowNamesListing( LikeBack::AllWindows );
  4. An important line: choosing which languages are known by the development team: at least one of each team members which have access to the LikeBack web interface must know at least one of the language locales you specify here (use the ISO short format in the list):
    likeBack->setAcceptedLanguages( QStringList() << "en" << "nl" << "it" << "de" );
  5. Finally, add to your window the LikeBack menu actions:likeBack->createActions( actionCollection() );
    and in your ui.rc file:

  6. If you don’t use a KXmlGuiWindow, but a plain KMainWindow, add the actions like this:KActionCollection *collection = new KActionCollection();
    collection->addAssociatedWidget( this );
    likeback->createActions( collection );
    menu()->addAction( collection->action( "likeBackSendComment" );
    menu()->addAction( collection->action( "likeBackShowIcons" );

See, it’s not really hard! And I must assure you – it pays off ;)


We didn’t invent LikeBack. We first learned about it from BasKet Note Pads, when KDE 3.5 was on all of our desktops.  We adopted it and, around october 2008, ported it to KDE4 – but only activated it in February 2009. Since then, we have improved it dramatically, and it’s really better than it was before. And we’re not done at all!


We’d like to see LikeBack in a lot of apps! If you have any question feel free to poke us (Valerio Pilo and Sjors Gielen):

  • on IRC: #kmess on Freenode
  • on our forum:
  • via email:

Thanks for reading ;)

PS. on a funny side, it took 2500+ comments to get our very first insult :D

September 06, 2009 04:40 PM - view comments

September 05, 2009

Valerio Pilo (amroth)

You know that your project is *awesome* whenâ¦

…when it takes two thousands, five hundred and thirty-five useful comments to get an insult:

«Why, thank you!»

«Why, thank you!»


We consider this as a great milestone :)

September 05, 2009 01:09 PM - view comments

August 02, 2009

Diederik van der Boor (vdboor)

Moving KMess from subversion to Git

Today I've been busy converting the KMess svn repository to git. [for the uninitiated: both svn and git are tools to track changes in the source code of an application. KMess is a MSN Messenger client for KDE ;-) ]. The reasons for git are twofold:

  • KDE is moving to git.
    Instead of trying to move from sourceforge -> KDE extragear now, we can directly move to git.
  • We seriously need better merge support now.
    As we're working on KMess 2.1 a lot of refactoring will happen; to create a library of our protocol code, and provide a plugin API. This requires branches for large changes, while continiously merging the mainline. Git can do this.

Which brings me back to today. Since our repository is also organized like KDE (/trunk/projectname/...) using svn-all-fast-export (made by Thiago) was the natural choice. This tool uses a "rules" file to specify which project a given repository paths should go to. It also offers ways to filter out commits.

Turns out that last feature is useful for us too. While the repository may look clean from the outside, it's history has some curlpits. A few times branches were created from the wrong path, deleted again, and recreated with the correct path. These can be filtered out.

Installing svn-all-fast-export

There are no binaries for the the application, so you'll have to run:

git clone git://
cd svn-all-fast-export

The devel packages for Qt, subversion and apr need to be installed. For openSUSE 11.1 I had to correct the file src/Makefile afterwards because the path to apr include path wasn't /usr/include/apr-1.0 but/usr/include/apr-1 instead.

Using it

First, you'll have to create a rules file. There are plenty of examples in the "examples" folder for this.

The documentation of svn-all-fast-export is absent at the moment - except for a few sample rule files. Fortunately the source code was quite readable, and it's Qt 4 application. Looking at the source, I've learned:

  • The option --identity-map= can be used to convert the svn accountnames to git's "full name " format.
  • The options --resume-from and --max-rev can be used to continue at a given part (e.g. after getting an error, you can write a rule for it, and continue with that revision).
  • The output directory for every sub-project (repository with git) needs to exist already, and it should be initialized with git init. Not doing this gives an "broken pipe" abort, and you'll find yourself looking through the source code to find out why. :-)

The result of my day includes of a large rules file, and shell scripts to automate everything. I've stored it in our subversion repository in a separate trunk/svn-to-git project, so feel free to look around. I hope these scripts can help you too. One thing.. there is again no documentation.... Read the source :-D

Issues left open

There are a few issues I haven't been able to solve yet.

  • A few sub projects were moved across the repository, which is split in separate git repositories (svn paths: /trunk/libisf -> /trunk/kmess/contrib/libisf). Is there a way to preserve the history for this?
  • The network-library branch was branched off /trunk/ instead of /trunk/kmess/, and moved afterwards to a different location. I've tried to mark both folders with /kmess/ appended as being part of the branch. Now I'm stuck with a network-library branch which lacks the base revision. Only the changed files can be found in the branch.
For these final issues I'd like to know: is there a way this can be solved?

August 02, 2009 11:23 PM - view comments

July 26, 2009

Valerio Pilo (amroth)

KMess 2.0 is (finally!) out

Hi my 25 readers!

I’m very, very happy to announce that the KMess team has released KMess version 2.0, after more than an year and an half of development!

Here’s some quick screenshots for you (there’s a better visual guide at our site):

The main window of KMess 2.0
The main window.
Chat window with muliple tabs support.
Chat window with muliple tabs support.
The new contact list screen.

The contact list screen.

As you can evidently see if you had KMess 1.5 installed, a whole lot of work went in this release (compare the new with the old).

First of all, we’ve ported it to KDE 4, and it was about time for that! The rest of the stuff is a pretty impressive list:

  • Support to receive and send Ink (hand-written) messages and Winks.
  • Improved custom emoticons management.
  • Options to copy a contact’s email, name, message, listened music and links present in the name/message
  • List of contact events, such as logins and logouts.
  • Open chat windows can be used again when reconnecting.
  • Quick retype of previous sent messages, using Ctrl+Up/Ctrl+Down.
  • MSN connections over HTTP, to deal with corporate firewalls which only allow connections to browse the web.
  • Support to chat with offline and invisible contacts.
  • Support to search for contacts in the contact list.
  • Support to send longer chat messages.
  • Option to choose the browser used to open web sites, Live Mail, and MSN support sites.
  • Support to group all chats in the same chat window (tabbed chatting).
  • Option to select a directory where all received files will be put.
  • Option to choose the interval of ports used for fast file transfers.
  • Option to keep short notes for each contact.
  • Contact List history box showing contact connections and disconnections.
  • Support to Messenger Plus Live’s text coloring and formatting.
  • Support for DBus remote application control.
  • Option to choose a previously chosen display picture.
  • Support for dark KDE color schemes.
  • Beautified long names and messages with a nice fading effect.
  • Drag&Drop support between the contact list and the chat window (invite contacts to chats) and within the contact list (sort groups and move contacts between groups).
  • Chat logs browser.
  • Contact list exporting in XML and CSV formats.
  • Option to show the own user’s display picture in chat.
  • Mixed contact list view, to group all offline contacts in a single “Offline” group.
  • Customizable display picture size in the contacts list.
  • Option to disable the background hummingbird image in the contact list.
  • More options to improve customization of the Contact List.
  • Support for KDE’s KWallet, to store passwords in a secure way.
  • Automatic detection of network connection and disconnection.
  • Option to block notifications when the status is set to Busy.
  • Option to disable displaying of received winks.
  • Automatic same-status reconnection to MSN after unwanted disconnections.
  • Option to disable and hide annoying received emoticons.
  • Customizable toolbars and keyboard shortcuts.
  • Saved accounts manager window.
  • “Now Listening” support for all MPRIS-enabled media players like Amarok.

That was quite a long list, huh? And it doesn’t include the countless bug fixes and improvements to existing features… ;)

Anyway, distributions should be including KMess 2.0 packages pretty soon, so to install it go looking in your package manager first. If they’re slow, compile it: go to our downloads page and click “KMess Source” and then on the Installing link below it to see how! It’s quite easy and quick, some 3 minutes and you’ll have KMess running :)

A final note for 1.5 users: We’ve prepared a simple upgrade script to port your 1.5 configuration over to the 2.0 one, run the in the source tarball :)

If you have any more questions or comments, please don’t refrain from telling us at our forum, on our development mailing list, via IRC at #kmess2 on FreeNode, or using LikeBack: open KMess, go to the Help menu, click “Send a comment to the developers” :)

We sincerely hope you will enjoy KMess 2 at least as much as we enjoyed creating it!

July 26, 2009 12:20 PM - view comments

May 12, 2009

Valerio Pilo (amroth)

KMess 2.0 beta 2 is out!

Hi, yesterday we’ve released our second beta of our next-gen Live Messenger client for KDE!

We’ve as usual put a lot of effort on it, and I invite everyone who uses MSN more than other IM protocols to give it a shot!

As a sample of the countless improved things in this version, here’s a little list of changes:

  • fixed disconnections after many hours of use.
  • fixed losing KDE Wallet passwords.
  • fixed typing notifications not appearing in WLM 2009.
  • fixed resending messages already sent as offline messages.
  • fixed searching for offline contacts.
  • fixed time of arrival of offline messages.
  • fixed contact list group sorting.
  • fixed many memory leaks.
  • improved the Chat History dialog and its integration with KMess.
  • improved drag and drop support in contact list.
  • improved handwriting message sending.
  • improved the file transfers window’s behavior.
  • improved chat session management.
  • updated English handbook.
  • 10 updated translations.

Obligatory shots:

There’s a lot more, specially under the hood; we try to keep KMess’ code easily understandable and well-commented so if you’d like to hack on it, I guarantee it’s very easy ;) (I’ve actually learned Qt over KMess’ code, writing my first patch ever after less than a week, that had to mean something.. right? Right?! )

Beta 2 marks our very own KDE-style string freeze, so that you’ll be certain that your translations will be still valid when the final release will be out. [This is actually a call for translators! If you can, open up this page and help us, thank you very much]

To take a closer look to Beta 2, our screenshots page provides a nice visual guide on it!

On unrelated news, I’d like to spend a couple words on LikeBack: if you don’t know about it, it’s an awesome way to easily get feedback from your app’s users. We first learned about it from BasKet Note Pads, in its KDE3 incarnation, then I fell in love with it and ported it to KDE4 around October 2008, and fnally put it into action around February 2009. Since then, me and our Sjors have improved it a whole lot: having received our first comment on February the 4th, I can proudly say that as of today May 11th, we’re a tiny bit short of our 1200 reports mark!!

We’re really proud of this, a whole lot of people have helped us improve KMess! We’re listening, and you’ll find that KMess 2.1 will contain the vast majority of your requests and suggestions.

I think I’ll shortly blog about it in a deeper fashion, the 1.2 version released some weeks ago contains a whole lot of sauce, and I’ll explain LikeBack and its history more thoroughly, too.

As usual, if you have anything to say about KMess (or Likeback and you aren’t willing to wait for the next post!), the discussion is open both here and at our boards!

May 12, 2009 02:07 AM - view comments

April 19, 2009

Diederik van der Boor (vdboor)

openSUSE running on a MacBook

Lately I got a request to blog more about the progress of KMess, and I've been scratching an itch on it. Since we're about to release a "KMess 2.0 beta 2" release I'll delay that for later today/tomorrow.

The train from work to home also started to get a bit boring so I've decided to install openSUSE on my MacBook. I really wanted to do this because KDE 4.2 is looking so sweet. Running OS X didn't feel right anymore at all. :-D

The setup was a bit difficult due to EFI-partitioning being messed up, but the actual install was easy. In case you're looking for a HOWTO, the openSUSE wiki pages give you everything you need. Most hardware seams to be working, including: bluetooth, wifi, audio, compositing, video out, special keys, sensors, iSight webcam (requires firmware). There are some quirks remaining though: at the login I briefly see some video memory garbage and the synaptics touchpad sometimes gets locked after suspend to ram.

However, now I can have some fun in the train, show pictures to friends easier, potentially expose Linux/KDE4 to more people, read cached e-mail, etc... Perhaps I could code somewhat, but most of my energy is still spent on my daily job and the renovation of my apartment in the evenings/weekends. I'll blog a bit more about that later. ;-)

April 19, 2009 05:42 PM - view comments

February 22, 2009

Valerio Pilo (amroth)

Hello worl..planet!

Hi! I’m Valerio Pilo, one of the developers of KMess – a KDE alternative to Windows Live Messenger.

This is my first post syndicated on the Planet, and incidentally also the first after an entire year of inactivity in my kmess-related blog. Having a lot of readers is quite a good incentive to writing :D

This post will first show you the next upcoming version of our fav msn client (first beta will be out this week probably), then tell you about a new project we’re slowly starting, libISF, which will be a library to encode and decode Microsoft’s ISF format (the spec is open now).

1. KMess 2.0 beta

Since 1.5.1 has been released – a couple months short of a year ago – KMess has changed immensely. It is only barely recognizable! After the porting effort, we’ve rewritten practically everything, bringing it to a whole new level. It is now a lot more integrated in KDE 4,  has undergone (multiple) reviews to improve its usability, and contains a whole lot of new stuff. But let’s directly see a bit of it ;)

Here’s the Contact List window:

new kmess 2 contact list

The new contact list

As  you can see, it’s pretty different than the previous one! And, I hope, better too ;) A lot of the stuff is customizable! The display pictures can be shown in various sizes or hidden; the contacts can be organized by groups, by online and offline, or mixed (that is, you see the groups with only online contacts, and the Offline group with all the rest, as you can do in WLM). And there’s more!

This is the new Chat window:

New Chat window

New Chat window

This one has received so much love that you would feel sick if you had read the list of commits :D First of all, the dreaded Sidebar is gone for good – but who wants can enable nice dock panels which do the same thing. For the rest of the crowd, there’s the nice Editors with the little buttons on the bottom:

Emoticon Editor

Emoticon Editor

Ink Drawing Editor

Ink Drawing Editor

Yes you can draw! At the moment it’s not completely compatible with WLM, it won’t work in 1-on-1 chats, but we’re working on it! (maybe before 2.0…also, see point 2 of this post!)  The square box in the emoticon editor is a live preview of the emoticon :)

Apart from these obvious changes, a ton of stuff was changed under the hood. We now fully support offline messaging. KMess can properly show MSN Plus! color tags, like [b]bold[/b], everywhere (or strip them away, which is the default). You can send, receive and manage custom emoticons with real ease. File transfers are really fast as always (and you can now choose which router ports KMess will need to be open for file transfers!). Accounts management is pretty easier now, too! We use KDE4’s Solid to retrieve network status (but we can cope with its absence). We use KDE4’s pretty notifications for everything – including network errors. KMess now automatically reconnects after a network loss, and is able to save your passwords securely within your KDE Wallet (and of course, if you don’t use it, kmess won’t).

This was just a little starter – the main course will be a nifty visual guide with everything, and it’ll come soon, after the beta release!

2. LibISF

To solve the problem of handwriting messages not working perfectly between us and WLM, we recently started working on a Qt-only library which will be able to encode and decode Microsoft’s once-proprietary format for storing brush strokes.

It will be released under the Lesser GPL license (LGPL) and will really be handy for whoever will need means of loading and saving input from touch-sensitive devices. And maybe also exchanging it with other devices, of course.

Its main features will be conversion from ISF to GIF format and better, to proper data structures (representing brush strokes) which can be used to interpret or show an image off them. It will also be able to transform strokes into ISF data blocks. Being development right at the start, we actually don’t know the direction it’ll take, so I can’t exclude that more features will come :)

It is already available on our SVN at .

Please, help us with it! You can contact us via the KMess Board, or via email, or via MSN (amroth at coldshock dot net).

February 22, 2009 06:14 PM - view comments

July 27, 2008

Diederik van der Boor (vdboor)

KMess 2.0 progress, personal stuff

With this blog entry I'd like to inform you all about the amazing progress we're making with KMess 2.0. It's been a bit quiet on the blogging side, but development surely didn't stop. The development timeline at reveals there are 200 commits within the last 30 days. :-)

Within a few days we hope to release a 2.0-alpha 2 release, which has the following new features:

  • Everything is running quite stable under KDE 4.
  • Tabbed chats are supported now. This is such a breeze, I wouldn't ever want to live without that anymore!
  • Every dialog received a nice makeover.
  • Connecting over HTTP is supported, making KMess usable for restricted LAN's.
  • Ink sending works!
  • Larger messages can be sent
  • MSNplus formatting can be displayed.
  • We've added an application-wide settings dialog for common settings.
  • Lots of nifty improvements everywhere; choose your fire transfer ports, automatically download to a folder, copy contact 'now listening' information, etc..

We stil have our share of things we like to improve, implement and annoyances to fix, so the upcoming release will still be called an alpha. Most of the work on KMess 2 has been done by Valerio and Antonio, so I like to thank them for this as well!

This is how KMess 2 look like now:

In the screenshot you see the ink receiving and tabbed chat in action.

KMess on Windows

There is experimental support for Windows as well:

There is no "setup.exe" yet to double-click on, but a lengthy manual of steps to install. Hence the reason we still call it experimental. Everything seams to work though.

Personal stuff

I didn't always find time to work on KMess in the past few months. If you have a daily job as web developer, not all evenings are easily spent on coding as well. :-P I still do a lot of things in the background, and I'm slowly starting to pick up coding again. I'm working through the first parts to receive webcam sessions, and you can expect this to be present in KMess too.

After the summer holidays I'll also be moving to to my very own appartment (maisonette actually). It has a small balcony, 3 bedrooms and a view to a lovely park in front, which I really love. Some work needs to be done before I can move in, like installing new kitchen and installing central heating. Guess you'll know what I'll be doing this autumn. :-)

Oh and:

So if you see a guy coding for KMess on a white MacBook running KDE on Windows, it's probably me :-) It's my first time on Akademy and I didn't make any plans yet, but love to join some BoF meetings and discuss innovation. Last time I checked, almost every pillar of KDE could find a place within KMess. :-)

July 27, 2008 09:21 PM - view comments

March 02, 2008

Diederik van der Boor (vdboor)

Communicating emoticons

This is not meant as a sentimental entry. It's about marketing and communicating a message to your potential users. Too often I find myself at a website of an Open Source project and ask myself. "where am I now? what the -beep- is this? and what can I do with it?"

As personal example I take as example. We tried really hard to fix this. The site is a lot of content nowadays, but we think there is a lot of room for improvement. While discussing this we Valerio came up with the following blog entry:

Why Ubuntu 8.04 needs better marketing

That article shows the big difference between a summary of technical details and something that appeals. Their revised announcement makes me all of a sudden excited about downloading Ubuntu 8.04. Less technical wording, clearly written sentenses and focus on what advantages does it has for me. Worth reading, this article is written really well!

In the comments there is also a nice observation:

The key however is to, like Apple, make a directly emotional appeal. Even Intel claims to be trying to take this route, inspired by Apple (successfully? Maybe). Take a look at Apple’s OS X page: The bold heading is very dominant. And it doesn’t really contain too much logic… again, it is an emotional appeal.

I really like Apple's site. It makes me enthusiastic about their products, and while browsing it just goes on. Yet I can also find a lot of technical details there. I couldn't describe why, but now I'm starting to understand the key aspect here: emotions.

Another example: Last week I was on a holiday/journey, and tried to explain a bit Aikido to the guy next to me. It's the martial art I practice and love. In the years I developed a few short phrases to explain it but somehow my description didn't get though at all. :-|

Fortunately I got a little advise whispered in my other ear: "you are too technical". Dang! I'm currently inspired by "feeling first, mind later" theories and this is another eye opener for me. By using more vague descriptions adjusted to the receiver (communicating a feeling/emotion) the other guy managed to get it a lot better. Whoa. Using less strict descriptions actually makes people grasp something better?

This incident among others makes me realize a lot of people are probably wired this way (call them alpha's if you wish). As technicians we love to communicate details, and the receiver can reconstruct the same image in their mind. Most people are not like that, or can't manage to be so. I didn't expect this gap could be so big. I noticed how this guy next to me responds much better while communicating an emotion, feeling or vague description (which you can technically put down as inaccurate, misleading, etc..). It has a strong effect, as the message is received in a more powerful way.

Meanwhile I'm starting to get an itch to do something with this conclusion within the KMess website too. If a lot of people are wired this way, shouldn't our websites reflect that? I'd like to call it "communicating emotions". :-)

We're looking for more ways to improve the KMess website. If you have suggestions, don't wait any longer and post them!

March 02, 2008 09:37 PM - view comments

February 20, 2008

Valerio Pilo (amroth)


Lately, an incredible – and probably unrepeatable – series of coincidences has happened. No upcoming exams, a lot of friends sick with flu, little work to do, no girlfriend, cold outside: mix them all together, pour in a cocktail glass, and you’ll get why I’ve been doing so many commits lately.

KMess 2 is coming on quite different from what I had initially thought. I was thinking at it just as a more free playground where to shove all the features I could read in Trac or imagine myself… but it’s more. As I continue fixing the last very small
problems in the code, I keep finding points where we could just throw away some old code – and create something better, faster, prettier instead.

I’m quite excited about the possibilities Qt4 and KDE4 are giving us, and I’m already exploring some of them, like a new contact list with a much improved style, for example. That’s just one example out of many since, as I said above, there’s a lot of room for improvement here and there, simply too much to list!

The downside in all this fertile ground, is that we’re alone seeding it. KMess has always been a small project; but this time, I’m feeling way more limited than when I was contributing for the 1.5 release, because of this. With all the thing we could do now that we have an incredibly powerful set of tools, some excellent network code, and a stable program, we can’t start rethinking everything from scratch because we’re so little developers. This sucks.

However, I’d continue improving KMess even if I was alone!

Regarding the project status, we’re still porting. But now, we’re almost done: here’s a screen grab of the SVN version!

That’s the current SVN version, for the KMess2 branch

There are still a couple glitches with file transfer, the contact list is still plain ugly, and the resource locator isn’t working correctly, but it’s almost done. I hope to be able to finish the port this week… then we’ll be able to start the real innovation ;)

February 20, 2008 10:36 AM - view comments

February 09, 2008

Diederik van der Boor (vdboor)

KDE 4 porting of KMess

A while ago I mentioned briefly KMess would be ported to KDE 4. We weren't sure when to do it yet. Eventually we decided to port it as soon as possible before doing new changes to the codebase. That would only make the porting more difficult, or give SVN a vague status to new contributions. So at 15 January I started a branch for porting the code.

After all automated changes we went through all files one by one (resuling in ~190 commits) before things managed to compile again. For those that are interested, there is a screenshot of the first run. Things crashed at startup, crashed deep in QHttp, froze, and corrupted memory multiple times. Once you manage to open the settings panel again things look really funny. :-P

We've managed to get these issues fixed in the last 2 weeks and things are starting to get back in shape. This is KMess after ~270 commits since the initial start of the 'kde4porting' branch:

Login dialog Full desktop

Note that the application is still not usable. Now we've gotten past most crashes we can fix everything we've broken and make it pretty. Some things were broken on purpose to get past all compiling errors, like the contact list, now playing information and saving of settings. In fact, your settings will likely be eaten at this point. :-P

There are some visible benefits for the KDE 4 porting already. Oxygen alone makes apps breathtaking beautiful. The networking code has less dependencies on KDE now, which helps to build a library from it later. The application startups almost instantly. Memory statistics also show some interesting effects (note the size is also affected by the shared libraries).

I'm not really sure what those numbers mean, but for the ignorant among us it makes KDE 4 applications look so much better. :-)

February 09, 2008 02:04 PM - view comments

January 10, 2008

Diederik van der Boor (vdboor)

KMess 1.5 released!

I'm pleased to announce the release of KMess 1.5, a MSN Messenger client for KDE.

After a long time of development from version 1.4 first, and the 1.5-pre series after, we've been able to obtain a very stable and feature-filled version.


Users of KMess 1.5-pre2 will might notice that file transfers have become stable while operating full-speed. The ugly popup balloons are gone and you can send custom emoticons now. A lot of bugs are squashed in the process, and the overall application got the polish it deserves.

Users of the last official stable release (1.4.3) will notice the quite some new interesting features. Most parts of the user interface have been improved. Combined with rich colorful chat styles it's a refreshing breeze for the eyes.

This release brings the MSN support to a level we're happy with. During the development of KMess 1.5-pre1 and pre2, we've added support for the things you'd expect from a MSN Messenger client. That's nudges, now playing information, custom emoticons, personal messages, fast file transfers and automatic download of display pictures. To make sure you don't miss something in a conversation, Winks and offline messages can also be received, being able to send those as well is still a todo.

Looking back

Making the release of KMess 1.5 took a lot of time. Much more time then I anticipated. The introduction of a new developer (thanks Valerio!) helped a lot here. Looking at the changes I'm really stunned how much we've been able to polish.

It was quite difficult to get the direct connections stable. They've been a source of many crashes and lockups. Seeing it work out all smooth now is just unbelievable. It just works, like every user expects it to be. But after so much trouble I'm filled with excitement each time I see that progress bar rush to 100% in no-time. It amazes me every time.

What felt as a little project with the 1.4 / 1.5-pre1 release, seams different now. With the new website, trac installation for developers (tickets and wiki pages), announcement writing, and rock solid release it feels this little project has matured a lot. It gives me confidence we'll be able to pull up a lot more nowadays. :-)

Future plans

KMess 1.5 will be the last version based on Qt 3 and KDE 3. The next major version will be based on Qt 4 / KDE 4. Originally I'd planned to get a release done before the KDE 4 beta's, but it took far more time to get the file transfers stable. It means there won't be a KMess 1.6, but a 2.0 version since KDE 4 will likely be adopted (e.g. with 4.1) by the time we're ready with 2.0.

I had some plans to collaborate with other projects before, but never really gotten to it yet. Since everyone is going for Decibel lately, I'm curious how we work towards that goal as well. I'm curious how it will work out, because I don't want to loose the specific MSN protocol features we have.

For now, enjoy the release! :-)

January 10, 2008 02:16 AM - view comments

December 17, 2007

Diederik van der Boor (vdboor)

Interesting books to read

Over the last few weeks I've been reading some intersting books, which are definitely worth to be read.

The first one is "Barbarians Led by Bill Gates". The book gives an intersting view point about Microsoft by an ex-programmer. How the work has been in those times, how projects were managed.

Interestingly to mention: it seams Windows was in fact seen as an unimportant project after it's initial failure with version 1.0. Management abandoned it, and some programmers kept poking arround to make it better - without all the management pressure. It appears the success of Windows 3.x was completely unexpected to Microsoft too! :-P

The book also tells about the beginnings of the marketing machine - you can say the biggest product of all. However I missed details about Microsoft's (imho unethical) behavior towards the outside world. I guess that stems from the fact the author is an ex-programmer, and he mostly tells what he has seen from his position: how projects were managed. Still an intersting read though, because it gives quite a different view on Microsoft's own developments and successes.

The second book I'm reading right now is "Getting Things Done" by David Allen. And oh my this is real nice piece of work! I've gotten an introduction to GTD before, but with the book everything falls more in place. I'm at page 66 now, and it's already an revelling experience for me. Not only does David advocate a different model of tracking todo's and planning projects, he also explains how his methology actually co-operates with the natural, intuitive, way your mind operates all the time. :-D

Additionally it's really geek friendly, addresses common pitfalls and yet I can manage my stuff with simple tools! I have got a pen+paper with me all times nowdays, I collect the todo-notes in a simple basket at home, and process those later into Kontact notes, Basket or KOrganizer (but even .txt files would do fine!).

Everyone who is doing "knowledge work" benefits from GTD. It works bottom-up, addressing the hectic atmosphere at your work/home first (which prevents you to move forward), and slowly helping you to get more overview of your projects, responsabilities and vision. It does this by helping you getting stuff out of your mind, so your mind can focus itself on more creative stuff, and do what's really good at (which isn't recalling todo's at the moment you actually needed them).

GTD promisis an interesting end result: to overcome stress, feel confident you won't miss something important, feel more relaxed and have more energy to actually do things. And while reading David's reasoning I believe this system will actually work for me, both personally and professionally. :-)

December 17, 2007 10:35 PM - view comments

October 12, 2007

Diederik van der Boor (vdboor)

KMess file transfer fixes; MSN Protocol goodies

Last week I've committed a major change to the KMess SVN. In this case "major" means the diffs were 100kB in size. :-O It fixes the last two problems we had with MSN direct connections, and brings the next release a lot closer too.

The first problem was caused by our way of sending file data. KMess 1.5-pre2 pushes messages to aggressively to the socket, choking the buffers of KExtendedSocket. By only sending the few bytes it could, this broke all message-length fields of squential packets. Oops..! This is fixed thanks to the readyWrite() signal and a lot of internal API refactoring. Hence the 100kB diffs.

Another problem was caused by some unknown protocol goodies revealed by Windows Live Messenger (WLM). Half way the transfer progressbar stalled in WLM, while KMess still thought it was sending file data. wtf... A closer look revealed it did get some messages back (flag 0x01). Now what..? That flag is isn't known yet at msnpiki.

From the WLM logs I've learned this means "chunk out-of-order", and it happened after KMess received some kind of "application/x-msnmsgr-transudpswitch" or "application/x-msnmsgr-transdestaddrupdate" message. I still have to clue what that message means or what to do with it, except sending an ACK as usual. I did figure out this broke the transfer in SVN. KMess incremented the message-ID to send the ACK, and now the remaining file data was sent with the wrong message-ID. Whoa. Not good! Fortunately it was easy to fix, and learned about some interesting new protocol messages too.

Finally, these two problems also broke picture transfers, emoticons and winks. Why you might ask? Those are also sent in parallel over the same direct connection! Almost everything is sent over the direct connection! It's good for performance and server load, but hard to code right at once. We've got it all working now, which I'm really proud of.

I can finally say that KMess supports direct connections properly for MSN file and picture transfers. Yay! :-)

October 12, 2007 01:11 AM - view comments

September 01, 2007

Valerio Pilo (amroth)


Hi readers! This is my first real post to the KMess blog.. I want today to let you know about the improvement to our beloved client that I’ve worked on in the past week or so.

This is “asd.gif”

This, lo and behold, is the first custom emoticon ever sent by a KMess client ;)

I’ve worked really hard on this improvement – I’m an emoticon junkie. I can’t resist. I put emoticons on almost every message I write. I find them very useful to clarify the tone of what you’re writing, and the standard MSN emoticons – even the KMess ones! – just can’t beat the expressivity of an animated picture chosen by yourself!

It allows the user to have a custom set of emoticons for every account. So, for example, you can have an account for your work contacts with serious custom emoticons, and one for your friends and family, with a lot of funny emoticons.

Right now it’s fairly complete: but there still are a couple things that have need of a good ol’ revision before I can “consider it done”. So please, take everything I say and every image you’ll see below, as only work-in-progress drafts. No guarantee that this will be the final look of it – nor even the way it’ll work!

Managing the current emoticons is a breeze. Here’s the Emoticon Settings dialog:

Look Ma! I’ve got a ton of them!

You can rename in place the emoticons, and remove them by selecting and clicking the Remove button. Couldn’t be easier, isn’t it! I was really surprised to find out how simple had been to create the whole dialog, and to make it work.. in like, 10 minutes?, i had read the documentation and written the first code down. And it worked. Flawlessly. I swear, never saw anything simple as Qt.

But let’s go on… There’s an “Add new…” button, too, right? Here’s what appears when you click it:

New emoticon dialog
KISS style

The dialog is live, so you’ll know you’ve inserted a valid image because it will be showed in the area with the KMess logo. The Ok button will enable only when it’s all ready to go, with an image and a shortcut for it. This was a little harder to realize how to make it. Thanks a lot to the KDE documentation team!

Finally, there’s the chat window. This will probably suffer the most modifications, since it’s more than a draft. it’s a pre-pre-pre-alpha ok? You’ve been warned. ^__^

New chat window, yay
Very very ugly, very very alpha chat window

It’s a mess. I’m still trying to find a better way to put the custom emoticons panel in… and there’s also the issue of that stupid sidebar which doesn’t have a scrollbar… the most annoying thing currently in KMess, I say. As a relative newbie to programming, I couldn’t find a way to make it work (yet).

Now that I’ve let you have a sneak peek at the mere looks of it, let’s talk about the internal gears and pinions which compose the emoticons system in KMess. Feel free to skip this part :D
Internally KMess works out the emoticon themes as other clients (most notably Kopete) do, that is, with XML definition files. They contain the picture file names of the emoticons, and for each one of them, they also contain the shortcuts which translate into it.

As with the current versions of KMess, the standard emoticons set gets updated if you choose another one; you can select a Kopete theme and only the MSN icons that the new theme contains will replace the standard KMess theme. I’ve replicated this feature so it continues work notwithstanding the fact that the underlying code is almost completely changed :D

In related news, that now you can also load themes with GIF, MNG, JPG images. But be warned, it’s quite certain that Windows Live Messenger won’t be able to view your shiny MNG animated emoticons. Sorry :(

Also, a new emoticon manager takes care of exchanging, loading, modifying emoticon sets at your command, and will automatically guess the file type of your images. Getting that system to work was the most challenging task. Three classes define emoticons (Emoticon), collections of emoticons (EmoticonTheme), and emoticon management (EmoticonManager); i find them to be working well, though I’m still waiting for Diederik’s opinion ;) There are *without any doubt* still some bugs or things that will need rewriting.. but it’s a matter of time!

Gotta go now.. I’ll probably post again about this new feature, so check back here sometimes

September 01, 2007 01:53 PM - view comments

August 21, 2007

Valerio Pilo (amroth)


Hi KMess users! This is Valerio at the keyboard writing, i hope our readers will enjoy to read the crap interesting articles I’ll write about what we, yours truly KMess developers, are doing with this great program :D

I hope I’ll be able to post here usability polls, sneak peeks at new features, and whatever I’ll think of, to try enhancing our messaging client… Cya soon!

August 21, 2007 01:52 AM - view comments

August 03, 2007

Diederik van der Boor (vdboor)


The responses to by previous blog entry were more then I hoped for. Among them was an invitation to join the KDE-NL BBQ, which was helt last weekend. Whooha!

As newcomer, the experience was mindblowing. Everyone has the same passion and because KDE has so much to offer, everyone has something different to tell about too. So there is a lot to talk about: the state of development, Akademy, KDE4, marketing idea's, plans that are going, and all kinds of interesting details. There were developers from Amarok, KOffice, Mailody, the Music Notation Flake (Soc), but also translation, and marketing/promo teams.

Everyone was genuinely interested in each others stories, everyone clearly showed respect for each other, and we had some good laughs. If that wasn't cool enough, consider how conversations went full speed. Where you normally have to slow down because you're talking too fast, there was nothing to worry about among KDE enthusiasts. :-) It's said that people keep spending soo much time on KDE because of the community. I definitely believe that's true. I enjoyed every piece of that day, and love to be part of such events more often.

I went homeward with Jos Poortvliet and Niels van Mourik. We had a some difficulties finding the the highway because we spent too much time talking. :-P I had some good conversations with Jos back home, and thanks to him I didn't have to make the entire journey back by train. This would have taken more then 2 hours in total, now only 20 minutes.

At the train station I had an interesting experience as well. I sat waiting there with my notebook bag and a Baguette left from the BBQ. Which is quite odd at 23:00 to say the least. Some guys joined me to ask if I was from France, where I got that Baguette from. Oh BBQ? where? with friends? Well.. how do you say this.. er.. have you heard about Linux? yes? .. I had a BBQ with guys who work on KDE in The Netherlands.... er.. a set of graphical programs for Linux! Oh Cool! You work on Linux? It was pretty awesome to talk with those guys at a train station about Linux vs Windows vs Mac OS (due to my notebook), and how that guy didn't like Windows but still used it. Not that we could talk in detail - time was short and it mostly went about stereotypes - but every bit helps. :-)

I spent the evening talking over MSN till about 2am, and was well awake before the alarm went off too. What a day! :-)

August 03, 2007 12:59 AM - view comments

July 12, 2007

Diederik van der Boor (vdboor)

Hello, PlanetKDE!

My blog has just been added to PlanetKDE, so I'd like to say hi to everyone! ..and tell something about what I do for KDE development.

I'm one of the main developers of KMess, a MSN Messenger client for KDE. You can say KMess brings an "MSN Messenger like experience" to Linux without copying the annoying parts. I tried all clients when I started with Linux in 2003, and really loved the user interface of KMess. It felt much like MSN, but even better. :-)

With my next entries I hope to get more technical, show some screenshots, or post idea's about Linux. I'm curious how this will all work out.


I'm from the Netherlands, 23 years old, code webapplications for a living and have a passion for KDE (following the dot, blogs and akademy screencasts closely), and started contributing to KMess in 2004. This started because I liked every part of KMess; both UI design and code. It was very easy to jump in.

Currently we're finishing up KMess 1.5. It includes a lot of bugfixes and we got rid of more annoyances too. With the next release (either 1.6 or 2.0) we'll implement webcam and multimedia support. I actually hoped to have 1.5 out already to leave KDE 3 with a good 1.6 release, but it's likely we'll be porting to KDE 4 instead because of the multimedia requirements.

We all know Kopete is part of KDE, and KMess exists outside the KDE SVN. I don't actually mind this; it's good to have one standard client shipping, even posted some bugzilla comments for Kopete. The bottom line is that KMess got me started with KDE development. If you need more explanation then this, you're welcome to post a comment though!

something about msn

One of the most difficult parts of the MSN protocol is the client-to-client part (MSN P2P). It's used to exchange pictures, emoticons, files and all other kinds of invitations directly between two contacts. It's what makes most clients distinguish from each other. Not getting this part right means webcam sessions and file transfers break when someone sends an emoticon or changes their avatar. The reverse-engineered documentation help a lot, but I keep noticing they miss practical details you'll encounter as developer. In KMess, I actually had to refactor the MSN P2P code three times before I saw the whole overall design of it. I've been told Mercury's counter is at 6 now. That's something new MSN plugins can avoid, and I don't mind sharing my experience about that!

A lot of energy has been put in good support for MSN P2P in KMess, and the code works really well. It means we're ready to build stable webcam sessions in the next release. Combined with the APIDOX examples the P2P code is almost a reference guide to implement MSN P2P. Worth checking out!

Happy KMess'ing or .. Kopete'ing! :-)

July 12, 2007 09:46 PM - view comments

April 09, 2007

Diederik van der Boor (vdboor)

KMess sourcecode migrated to subversion

The KMess sourcecode has been migrated from CVS to subversion (SVN). (FYI: subversion is the software we use to store the in-development version of KMess). Subversion gives us some advantages over CVS. It's command line is easier to use, branches/tags are easier to mange, changes to many files - even moved files - are tracked properly with subversion. I actually hoped to migrate earlier, but I wanted to wait until 1.5-pre2 was released.

The CVS to SVN migration did took more time then I'd expected. The cvs2svn tool needs some help to convert things properly, and sourceforce's documentation leaves much ends open. And there was something I overlooked: the website documentation and forum howto's had to be updated as well... *oops*

An interesting side-effect of subversion are the statistics you can generate from it. If you like to see those statistics, download the repository first with: rsync -av rsync:// kmess-svnrepos. Then open it locally with kdesvn. The most simple statistic is the activity over the years. It's clearly visible that development slowed down during the 1.3 release, and basically stopped. I was also shocked to find out I'm responsable for ~1200 of the 1700 commits since 2004-07-12. :-O It should be noted I had to commit directories and ChangeLog entries separately.

While updating the website, I also improved the documentation about the coding standards. With the additional examples it easier to follow the proper styles now. :-)

April 09, 2007 11:36 PM - view comments

March 18, 2007

Diederik van der Boor (vdboor)

KMess 1.5-pre2 is out!

Finally it's out! KMess 1.5-pre2 can be downloaded as of today. The current CVS code had many fixes and improvements, so I didn't want to delay a next release much more.

The most important bugfixes are better support for direct file transfer connections, and links in the chat window. There are also some nice improvements, like file transfer previews, now playing information, and an option to disable the nudge shaking effect. More information can be found at the front page and changelog.

My favorite features are previews for any file type (see previous entries), and clickable geek-style links. It happens all the time people write "", "", or "". I wanted to make these links clickable as well, without getting too many false-positives. This worked out really well, so try it out! :-)

March 18, 2007 11:14 PM - view comments

March 17, 2007

Diederik van der Boor (vdboor)

Weirdest bug ever

Yesterday I was debugging some weird bugs. Actually spent several hours on it.

With the file transfer previews, Windows Live Messenger chops of some parts. This can be solved by sending the image as 96x96, with transparent parts added. QImage to the resque! Well.. sort of. I ran into a pretty annoying bug.

This is the code to generate a transparent image:

int size = QMAX( image.width(), image.height() );
QImage fixedImage( size, size, 32 );
fixedImage.setAlphaBuffer( true );
fixedImage.fill( qRgba( 0, 0, 0, 0 ) );  // black transparent.

Saved as PNG, it produces something like this:

Well, some parts of the image are transparent.. :-P But the remaining of it.. juck! Something produces a fuzzy pattern here. Today it even seams to have more noise.

After trying the same code in a stand alone application, I got a perfectly transparent image. When the same code runs in KMess, it doesn't work anymore. That's the weirdest part of it. It can either be in Qt 3.3.8, KDE 3.5.6 or openSUSE 10.2, I really can't tell.

After some debugging, Google codesearch showed how to reset the individual image bits in a for-loop. A bit later I noticed how the image bits are actually one memory block (the Qt API is not really clear about that). So the fill() command can be replaced with memset(), hence the following code fixes the problem:

memset( fixedImage.bits(), 0, size * size * 4 );

This takes advantage of the image data/scanlines exposed by QImage. Pffew :-)

With this fix in place, I'm looking forward to release 1.5-pre2. It should be out really soon, since CVS has some interesting improvements. I'll have to update the TODO and NEWS files, check for any blockers. Small bugs are not one of those, that's for the final 1.5. A next preview needs to be avoid really soon first! :-)

March 17, 2007 05:27 PM - view comments

February 20, 2007

Diederik van der Boor (vdboor)

File transfer previews just even got better

There are some additional improvements to the file transfer previews. The previews are now generated with a more low-level KIO API. This no longer blocks the KMess interface to generate the preview.

As extra bonus, KMess generates previews of video files as well. When you send a movie to someone who uses the official client, they'll see something like this:

Pretty neat, isn't it? :-)

February 20, 2007 11:41 PM - view comments

February 14, 2007

Diederik van der Boor (vdboor)

File transfer previews

KMess just got a new cool feature! I've received a patch for file transfer previews. The result now looks like this:

In the official client this is used to send previews of images. KMess also adds support for almost every imaginable file type, thanksverymuch KDE! Think PDF, OpenDocument, HTML, Qt designer files, really everything. Whooho! :-)

February 14, 2007 10:11 PM - view comments

January 27, 2007

Diederik van der Boor (vdboor)

You know you have a nice download page when...

...someone else copies your layout and wordings. :-P (compare: KMess version)

All I can say is: I'm flattered. :-)

On a side note, I'm still looking for ways to improve the home page. I really like sites that show off their product well at the home page. The recent examples I found are:

Why is this important? With my application conversation I litterally got the question "what is KMess actually?". I never noticed it before; the home page simply didn't tell. It only rambled the news headlines of things that were improved.

I'd like to improve the homepage it visually as well, like the sites above managed to. The screenshot tour is a good start, but a bit too hidden yet. Every once in a while I'm thinking how to incorporate new ideas in our home page. Perhaps I manage to get something done with the 1.5 release. Contributions, designs and suggestions are welcome off course. :-)

January 27, 2007 06:49 PM - view comments

December 17, 2006

Diederik van der Boor (vdboor)

Completed now listening support

I've just completed the now listening support in KMess! A month ago KMess could only show what contacts are listening to. Now it also does the reverse; notifying contacts what you're listening to.

When this feature is active, an additional status line appears in the main window:

KMess is able to retreive playing information from Amarok, Juk, Kaffeine, KsCD, and Noatun. Suport for non KDE-players like XMMS and Banchee could be added later, but I'm not starting with it yet. Each of these players has it's own way to provide the playing information.

To enable this feature, check the last option in the settings dialog:

KMess uses DCOP to retreive the playing information. DCOP is a really nice KDE feature to make IPC-calls to other applications (it runs over the standard X11 ICE protocol). Try the following commands in the console, and you'll get the idea:

dcop amarok
dcop amarok player
dcop amarok player artist

Really amazing, and extremely powerful :-)

December 17, 2006 05:10 PM - view comments

Sinterklaas presents

Long time no blog... I didn't make much room for it lately.

Previous week we've had Sinterklaas in The Netherlands. It's an annual Dutch tradition, which can be compared somewhat with Santa Claus. At 5 December, Sinterklaas brings presents to both children and adults. Some presents are also camouflaged in an imaginative way, accompanied by a fitting poem to make fun of the recipient.

This year I had to make a nice present for my father. The present contains a pocket-size book about wine. This is the end result after two weekends :-D

The body consists of a soft-drink bottle and two small wooden planks. These planks form a cross which is nailed on the soft-drink bottle. The whole part has been wrapped with paper maché. The small book didn't fit entirely, resulting in the amazing booster effect below the wings :-)

Additionally two pictures of the construction:

The present sticking out:

That was enough creativity for me this year. :-)

December 17, 2006 04:16 PM - view comments

December 03, 2006

Diederik van der Boor (vdboor)

Debugging KDE applications in Fedora Core

Image speaking to a new developer. With excitement you tell about the debugging features of KMess. We've got a network output window, and lots, really lots of console output. The console is literally flooded with messages when you run the debug-build of KMess. This allows us to trace how KMess interacted with the protocol messages, how it parsed those and sent responses back.

Now imagine this new developer doesn't see anything of it. :|

That's an annoying way to become challenged as developer. First you start guessing where the output could be. SuSE has a nice ~/.xsession-errors file that contains the output of all GUI applications. However, the messages also didn't appear either when KMess was started from a console window. Googling gave no insight either. It started to feel something is really different in Fedora Core.

My next stop was kdebugdialog. This is a tool that allows you to turn off debug output in KDE, separated by application and message type. I guessed the output was disabled there, which seamed logical from an end-user perspective. After some inspection, the settings were identical to my SuSE system.

KMess uses standard kdDebug() calls to output the messages, so I sent a little C++ file that did the most basic thing possible. Eliminating compiler flags, and #ifdef statements we use to hide output:


int main()
kdDebug() << "test output" << endl;
return 0;

Again, this simple test application gave no output on STDERR or whatsoever.

I seriously started to fear KDE was patched by the developers of Fedora Core. This could mean the developer would never see the output. Stephan Binner has a site of distributor patches, for which I can't thank him enough. Browsing the folders I found a patch on kdelibs/kdebug. Compare the original file with this patch, and notice how Fedora Core hides all output by default! arhg! This not only costs one or two hours of debugging, but it's even more annoying it isn't mentioned anywhere. A simple note would have been enough.

The code of the original file acted as a good reference to find a solution. By creating the file ~/.kde/share/config/kdebugrc with the following contents, the new developer got his debugging output:


This extends the global configuration in $KDEDIR/share/config/kdebugrc, and outputs all messages to STDERR.

Needless to say, I'll propably disfavour distributor patches even more then I already did (i.e. how a Wine developer wasted his Sunday afternoon on debugging packaging problems, scroll to "another example"). When something needs to be patched, it's likely the upsteam software lacks some option, not an other patch. In the case of KDE this wasn't needed at all, kdebugdialog is available already. :-( Guess it's time to file some bugs, and hoping this post helps a bit too.

December 03, 2006 05:39 PM - view comments

November 27, 2006

Diederik van der Boor (vdboor)

Planet KMess is up

As of today, the KMess website aggregates feeds of development weblogs. This makes the entries of this weblog visible at too.

I'm really curious about your opinion of new web site feature. What you expect from it, what you'd like to read, or don't like it at all. Please post your thoughts about this at my blog. :-)

November 27, 2006 12:40 AM - view comments

November 26, 2006

Diederik van der Boor (vdboor)

Introducing PhpPlanet: PHP feed aggregation software

One of the things I really wanted to implement was a "Planet KMess" section at the KMess website. I've been looking for existing solutions, but couldn't find what I was looking for. I don't need expanding sections, or forum/e-mail like "mark as read" capabilities. Just a simple web page with all stories, posted in order.

As for why I'm not using Planet: the Planet KDE site is flooded with old feeds now and then. I don't want to see that happening for a "Planet KMess" website. Planet is written in Python and uses a file-based cache. This is a complete black box for me as Python illiterate, and adds Python as new dependency to the web site.

The result is a new Planet-like feed reader/aggregator named PhpPlanet. It is v0.1 software and can be downloaded here. It stores feeds in a MySQL database, and uses Snoopy/MagpieRSS to parse the feeds. Flooding is avoided by observing the timestamp of RSS entries. When multiple entries have the same timestamp it's an indication the feed is regenerated, and those entries will be rejected automatically. :-)

November 26, 2006 05:35 PM - view comments

November 07, 2006

Diederik van der Boor (vdboor)

Now listening in KMess

A recent enhancement in KMess is support for "now listening" information. You get to see what your contacts are playing. this information is displayed after the personal status message, and looks like this:

Much like the official client, you get small icon, and the title afterwards.

The next step is offcourse, displaying what you're playing. Work has started, and I've decided to use Kopete's "now listening" plugin as inspiration. It has support for Amarok, Kaffeine, Juk, KsCD, Noatun and XMMS. Sounds good enough to me :-)

November 07, 2006 12:46 AM - view comments

November 06, 2006

Diederik van der Boor (vdboor)


I've been thinking for a long time about it, but finally decided to start my own weblog. I've been reading for some time now, and really like the sneak previews and thoughts about the progress in KDE.

So this blog also won't be flooded with personal things either. Instead I like to share some programming experiences, KMess improvements, and maybe some random things found at the web. Not sure how it will work out, but I'm all set now to find that out :-)

November 06, 2006 09:46 PM - view comments

Current Version
The current version of KMess is:
Latest development version: 3.0
Get KMess - MSN Messenger client for KDE at