Friday, 6 January 2012

0.11.0 - part four - visual improvements

During 0.11.0 cycle we have spent some time improving UI of Kadu. Here I'll present a short list of most visible changes.

Toolbar buttons with menus

In 0.10.0 menus for toolbar buttons were implemented in Kadu and it was not very pretty - there was no distinction between normal buttons and menu button.In 0.11.0 we use Qt functionality and there is a small arrow to indicate that menu is available.

Button with menu can have default action (that is executed when button is clicked) or not. First ones have a small arrow next to button, second ones have an arrow directly on button.

Menu button without default action

Menu button with default action
More tabs

Tabs now will shrink when you have a lot of open chats. This allows to show more of them without need to scroll.
Really lot tabs shown at once
Unfortunately, tabs icons will no longer blink. There is Qt bug that caused all tabs to scroll to left when icon was changed - reaching tabs that were far on the right was impossible.

Message notifications

You will no more miss a message - every unread one is now indicated on dock icon, roster, window icon and tab icon. In 0.10.0 only messages for non-open chats were shown. Also placement of icon on roster was improved - it is now shown instead of status icon, non next to it.
New message icons on roster
Add conference window

Creating a conference required a lot of work - one had to Ctrl+select all needed buddies and then right-click and select "Chat..." command. New window will make this easier - you can easily select buddies, name a conference (or not, if it is one-time only) and start it. Lets have a look:
Add conference window
In this window you will no longer lose any selection by accidental click. Filtering by name, group, id  makes it very easy to find required buddies. Visible name can be set for a conference - then it will be displayed on top of roster widget.

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:

Releases

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.

Ports

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.

Changes

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: kadu.im (it is much shorter and easier to type than old kadu.net).

Future

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.

Implementation

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.

Screenshots

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

Beta1

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.

Import

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

Introduction
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: http://www.kadu.im/redmine/issues/3 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: kadu.im instead of kadu.net.

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.