Thursday, 29 December 2011

Summary of 2011

End of the year is the best time for making summaries of any type, so here is one about Kadu:


This was really great year for Kadu - 0.9.0, the biggest rewrite/release ever, was finished in March (just look how many bugs and regressions we had to fix on redmine). After that we had a quick 0.9.1 and 0.9.2 bugfix releases, not-so-big 0.10.0 feature release and another one with bugfixes - 0.10.1. This means 5 total releases in one year, after more than 2 years of waiting for 0.9.0. We want to keep this pace and create at least 3 big releases in 2012.


Kadu on Windows had became official port, so we cannot ignore Windows' bugs anymore. MacOS X support is not bad, someone created port on Haiku, but nobody cares anymore about N900. Linux is still our primary taget.


In this year 2764 (2161 since 0.9.0) changes were pushed to Kadu source control system by 16 developers. This is pretty amazing for a small IM application.

A lot of these changes are about improving our codebase, so we can add features and fix bugs faster. Rest is about features - like GG10 roster support, new chat notifier, better proxy support, network awareness and so on...

A lot of new translations were added in this year, unfortunately only four are complete enough to be included in official release - Polski, English, Deutsch and Cesky. Uncomplete translations are available for French, Spanish, Italian and Slovak.

New server

We have also moved from our old server (from Chilan and Silvercoders) to new one (from Uni-Lux) and we gained a new domain: (it is much shorter and easier to type than old


Future is very bright for us, 1.0 is so close that you can almost touch it, bugs are fixed quicker than new ones are created and no regressions are allowed! 2012 will be the year of Linux on desktops and Kadu everywhere!

Happy New Year everyone!

Friday, 23 December 2011

0.11.0 - part three - conferences

Conferences on roster

Conference is a way in Gadu-Gadu to talk with many people at once. It is very different from XMPP MUC or IRC chatrooms, as you cannot add new people or remove them. Until 0.11.0 ithe only way to start  start a conference was to select all buddies (using Ctrl+mouse click), then right-click of one of buddies and select "Chat" action. It is not convientant all at, escpecially if you chat with the same people all the time.

So we've added possibility to add conference to roster widget. To do that just select all buddies, right click, select "View Chat Properties" menu item and fill in "Visible Name" for given chat. This conference will be then available at top of roster widget. You can also add conference to groups and search for them in roster widget by typing its name.


It was implemented by creating MergedProxyModel for Qt that allows to merge two or more models into one. Model for roster widget merges model of all used chats and conferences (unnamed are filtered out) with model of all available buddies. Then other model (named TalkableProxyModel) sorts all items and pass them to widget.


Some screenshots of this new amazing feature:

Conference on roster widget

Expanded conference on roster widget - you can see who takes part in it

Conference data edit window - you can set name and select groups


Beta 1 was released a few days ago. Give it a try! It is available at Kadu's Google Code page.

Tuesday, 13 December 2011

0.11.0 - part two - history

Better, faster, smaller

In 0.11.0 development cycle Juzef did a great job identifying and resolving performance problems with our history SQL backend. He basically normalized database scheme and voila - history file is now 2 to 3 times smaller than before (with the same information!). That means that loading history into memory is 2 to 3 times faster and processing indexes is also a lot faster. So opening history window is also a lot faster than before!

Asynchronous loading

Messages from history are loaded into chat windows so you can remebmer last conversation with given person. In 0.11.0 this loading is asynchronous - that means you get your window open instantly and you can send and receive messages right away. Old messages are inserted into chat window when they are ready - which can take a second or two for really big histories. In Kadu 0.10.0 you had to wait for that to happen before you could even chat.


History is imported automatically - you don't have to do anything (only wait 30 second at first run of 0.11.0). After import new history is available under ~/.kadu/history1.db file instead of old ~/.kadu/history/history.db.

Friday, 9 December 2011

0.11.0 - part one

This is first post from a series describing new features and improvements of incoming Kadu 0.11.0. As we are aiming for shorter release cycles this list will not be as long as 0.9.0 one.

Proxy configuration
Lets start with the oldest bug in: Its took whole 8 years to close this one. After last year's rewrite of SMS code to use JavaScript code instead of C++ one this was easy to fix - just use QNetworkAccessManager to set proxy and you are done.

But our proxy configuration was lacking - every account had separate proxy setting and there was no way to easily change proxy for all accounts at once (that would be nice to have for people who often changes networks).

New mechanism was created - there is centralized place for configuring as many proxy setting as one may want. Each account can now choose proxy from the list as well as SMS plugin (or select special Default one). Default proxy can be changed at any time from configuration window or from toolbar button (note: it is not added by default to any toolbar, you need to do it yourself).

Mandatory screenshots
Window for creating proxy configurations

Selecting proxy for an account - you can select Default configuration

Selecting default proxy for whole application from toolbar button

Saturday, 24 September 2011

Half a year later...

Lots of news

Since last blog post a lot of things happened... 0.10.0 was released, we got a new server and moved from mantis to redmine...

0.10.0 release and 0.11.0

0.10.0 is our first release using new release cycle - that means only 5 month after 0.9.0. That is great, because we don't have so many new features to test - we can focus more on stability. That does not mean that nothing changes - Kadu got new plugin code, new build method, better system integration and one new notify plugin. Kadu Team plans to release 0.11.0 sometime about February 2012. 0.11.0 release will be about faster startup times, faster plugin loading and general performance problems fixing. We may be able to fix some of our ugly APIs (status and details APIs).

New server

After releasing 0.9.0 we decided that we need a new server. Old one just wasn't enough to handle all the traffic that comes with releases. We had move from our old server sponsored by 'Chilan' and Silvercoders (both are companies run by former developers of Kadu: Tomasz Chiliński and Adrian Smarzewski) - we are very thankful for all of these years when we could use this hardware. Kadu now uses server provided by Uni-Lux sp. z o.o. where Tomarz Jarzynka is working (he is the father of Kadu). We also got new, shorter domain: instead of

Wednesday, 18 May 2011

0.10.0 progress, part two

Second month since 0.9.0 release has passed. In our new release cycle that means that we are close to feature freeze (we are just waiting for GaduGadu 10 roster support). This is short list of new features since last blog post:

Plugins cleanup

Unsupported and old plugins were removed:
  • server_monitor (removed in 0.9.2 release)
  • parser_extender (merged into core)
  • all blacklisted plugins (dbus, tlen_protocol, echo)
  • all sound plugins but phonon_sound, qt_sound and ext_sound
  • many mediaplayer plugins were merged into mprisplayer_mediaplayer (dont worry, configuration will be imported automatically)
SDK and build changes, autodownload removed

Kadu has now SDK - FindKadu CMake modules for external plugins and own set of C++ headers for installation in /include prefix. Plugins can install its own C++ headers as well.

It means that every plugin can now be build outside of Kadu source tree and without modification of any Kadu source files.

Old .config file was removed. Installing non-standard icons, emoticons and sound themes is not supported anymore from Kadu build system - you have to do it on your own or just copy somewhere and configure Kadu at runtime to use your themes. Plugins are now configured inside new Plugins.cmake file and thanks to SDK additional plugins can be compiled and installed at any moment.

Autodownload is completely removed (I think distribution packagers will be very happy for that) as it is not really needed - everything needed for Kadu compilation is available in source packages and addons should be installed separately.

In-chat notification

New chat-notify plugins provides status-change notifications in chat window:

Myself on buddy list

It is again possible to have Myself buddy on buddy list. Just enable it from Buddies menu and you are done.

Message confirmations for GaduGadu protocol

Ultr has implemented GUI for message confirmations for GaduGadu protocol. Each message in standard Satin style has now icon attached to it: (...) for messages on the way, (v) for delivered messages and (x) for undelivered messages. This allows you to see if your network or GaduGadu servers are working properly.

Saturday, 16 April 2011

0.10.0 progress

It is almost full month since 0.9.0 has been released (and one week since 0.9.1). KaduTeam is now busy working on the upcoming 0.10.0 release, which will bring a lot of new shinny features. Here is brief list of what has been already done.

Blinking status icons

Maybe this is not the biggest feature ever, but is is really nice. When Kadu is logging to IM network all status icons (in dock, on buttons and in toolbars) connected with this network are blinking offline <-> your logging status. This is nice indication of what is happening

Better hibernation support

Kadu now knows about your network state (using NTrack library or Qt's QNetworkConfigurationManager on systems where NTrack is not available). When network goes offline Kadu automatically disconnects all accounts and connects them after network is back online. Kadu now properly reconnects after wake up!

Better Gnome3 and Ubuntu support

WhiteEagle has rewritten our kde4_notify plugin into freedesktop_notify (as it never required anything from KDE4) that works better with notification deamon from Gnome3 and Ubuntu (ie. does not put buttons on every notification as Ubuntu deamon does not support buttons).

Suggestions for spellchecker

Our new contributor, Dienet, sent us a set of patches adding suggestions for misspelled words to context menu of chat window. It looks like this:

Sugestie wyrazów
Better XMPP and Gadu-Gadu support

We are working hard with libgadu team to make file transfers in Gadu Gadu possible again. Also work on file transfers and MUC for Jabber/XMPP is on the way (hopefully it will be ready for 0.10.0 release).
Gadu Gadu will also receive contacts list synchronization that is available in Gadu Gadu 10 original client.

History importers

Plugin for importing GG from original Gadu Gadu 6/7 clients is already available: check it on wiki. KaduTeam will cooperate with author of this plugin to add it to default Kadu 0.10.0 package and to extend it to support Gadu Gadu 8 and 10 histories.


Future for Kadu is very bright ;)

Monday, 21 March 2011

Kadu 0.9.0 has been released

0.9.0 version of Kadu Instant Messenger is available!

Source code:

Packages for many Linux distributions are available (or will be soon available) at: Download


Mac OS X:

After over two and a half years of hard work, we are really proud to announce availability of the new and revolutionary version of Kadu IM 0.9.0.

This version brings many long awaited features, such as support for XMPP network (Jabber, GTalk, Facebook Chat, etc.), possibility of using many accounts from different networks in one instance of the program, completely new history module, and Adium chat styles support. New version is supported on Linux, BSD, Windows and Mac OS X platforms.

Despite significant growth, Kadu does not intend to join the club of overgrown multi-IM's. If you like Kadu for its simplicity and usability, you will find these features in even better shape in the new release. With simple but powerful configuration, Kadu can be either a simple one account client, or a full-featured multi-IM.

Kadu consistently provides free and easy communication across multiple platforms, without any intrusive advertisements and unnecessary additions.

List of most important changes since the 0.6.5 release:
  • multiple communication protocols, support for Jabber/XMPP (including Facebook, GTalk)
  • support for multiple accounts in one instance of the program
  • ease of use with made from scratch menus and dialog boxes
  • ease of talk with many improvements in the chat window - including copying text representation of emoticons, support for Adium styles and much better toolbars
  • new emoticon selector displaying items in correct proportions
  • editable groups of buddies
  • simplified notifications configuration
  • added Czech translation
  • Support for TLS connections and multilogon in Gadu-Gadu
  • history plugin based on the SQLite database, with brand new interface
  • new, improved Setup Wizard
  • new experimental ImageLink plugin for displaying images and youtube videos directly in the chat window
  • SMS plugin now uses JavaScript to send messages, so changes in the SMS gateways will not require full release of the program, only scripts update
  • refactorized source code with a much more friendly and readable API allows for quick changes and improvements

Since the release of Kadu 0.9.0 we introduce a new cycle of release:
  • once a month a small release with amendments (0.9.1, 0.9.2) repairing the most troublesome bugs found after the major release
  • every 3-4 months a large release (0.10.0, 0.11.0), adding new features and changing API a little bit

No more waiting several years for new Kadu ;)

More information in Release Notes

Wednesday, 16 February 2011

0.6.6 beta16 is out

Another great beta is out ;)

Big changes:
  • encryption is now enabled on Windows
  • toolbar editing is possible on Windows
  • libgadu 1.10 is supported, with TLS and multilogon
  • items in history can be deleted now
  • search buddy window is now stable and does not crash
  • added support for typing notifications in XMPP and GaduGadu (requires libgadu 1.10)
Full changelog is here. Downloads are available on our Google Code ans SourceForge pages (links in sidebar).

Friday, 11 February 2011

Multilogon, TLS and libgadu 1.10

Libgadu 1.10 (not-yet-released) brings us a few extra features that were implemented in Gadu-Gadu protocol for GG10. We have decided to include these in Kadu, but only for people with 1.10.0-pre version of libgadu installed.


TLS in an encryption protocol used in HTTPS connections. GaduGadu 10 can use it to secure connection between client and server. Each message is decrypted at GG server and then encrypted for the second client (if it also supports TLS connection). This is not ideal solution, but at least it allows for real secure login.

Second level of protection is Kadu's encryption plugin that allows for sending and receiving encrypted messages - this is client-to-client encryption - messages can be decrypted only by receiver (this is supported only by Kadu and EKG messengers).

I hope these two levels of protection are enough for everyone ;)


GaduGadu 10 also supports multilogon. Multiple clients can be logged on one account (before GG10 each login would disconnect other clients). Received messages are sent to each of the client and sent messages are broadcasted between them. Latest git versions of Kadu support this new broadcast message.

Kadu can also notify you about every other connection, both by our notification system and by new special multilogon window. Each session can be disconnected by Kadu both in window and in notifications.

multilogon window shows 2 additional conenctions

multilogon notification shows new connection

Monday, 24 January 2011


More actions

Kadu has a lot of available actions, added by core, our modules and external modules. Some of these are only available as toolbuttons that can be added to chat window or other windows. So each module added its actions to toolbars by default and the toolbar became cluttered... (mediaplayer module added 5 actions itself!).

To fix that I've disabled the possibility to easily add toolbuttons by API, so no module can do this now ;) I've also added new action, called "More..." that can be added to toolbar. This action just shows a menu with all chat and users actions that are not in toolbar. It is not very pretty, menu is not sorted/categorized in any way, but it works for now. In future versions this will looks better, I promise.

Toolbars synchronization

This was a pain for anyone that wanted to change toolbar layout in chat window. Changes were reverted all the time. The proper solution was to open only one chat window, setup toolbars and close this window. Now toolbar layout is synchronized between all opened chat window and it is stored after every change - so it now works as it should ;)

These changes will be available in beta15, as soon as server will be up again.