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