Another year of Kaidan development is over. Kaidan is still not usable for daily use, but we also got many things done and our vision of a simple and powerful Jabber/XMPP client for everyone came a good step closer. This is a summary of what we have done in this year.
In January not much happened in Kaidan itself, but Linus Jahn started to work on the MIX implementation in QXmpp, the XMPP library we are using. MIX stands for Mediated Information eXchange and is the upcoming modern groupchat extension for XMPP, replacing the old, IRC-like MUC (Multi-User Chat).
For details, have a look at the issue for MIX.
Plasma Mobile Sprint in Berlin
The sprint week was in the end one of the, or even the most productive week for Kaidan in this year. Thanks to Endocode for hosting us!
View from the Plasma Mobile sprint at day and night (CC BY 4.0, Linus Jahn)
Qt Quick Compiler
Jonah Brüchert added support for building Kaidan using the Qt Quick Compiler which leads to no visual changes but an improved performance. This is worth mentioning, because this is also required for being accepted in the Apple App Store since they do not allow the usage of JIT compilers. The Qt Quick Compiler converts Kaidan’s QML code into binary code in advance.
Last Message Correction
Jonah Brüchert and Linus Jahn worked together on implementing the Last Message Correction extension, which allows you to (as the name suggests) send corrected versions of your last message. Previously, if someone corrected their message, the corrected message just appeared as a new message.
At the one-week Plasma Mobile sprint Linus Jahn also worked on Kaidan’s back-end and added the functionality to download received files. Uploading was already implemented using HTTP File Upload. This was one essential missing point for the Kaidan 0.4 release.
Linus Jahn also did some experiments with MAM, the extension used for receiving messages from the server’s archive. MAM is also needed when you want to receive your offline messages and you have multiple devices in use. Fortunately MAM is already supported by QXmpp. While trying to use this, we noticed that Kaidan’s database back-end is blocking the user interface when inserting new messages. In practise this made Kaidan unusable when the message history is loaded. Upon that Linus Jahn started to rewrite the database back-end using different threads. (In the end we found out that the problem was not that the database is running in the same thread, but that the database was safely saved to disk after each message. However, having the database separated in a different thread is still a good thing.)
Consistent Color Generation
Jonah Brüchert could use that to replace our old fallback avatar image with proper text avatars. They contain the first two letters of the contact’s name and use the consistent user color as background.
Berlin XMPP Sprint
The Berlin XMPP sprint was (not like the Plasma Mobile Sprint) only a weekend long. It was very nice for us to finally meet many people known from the mailing lists and MUCs. At the sprint itself didn’t do much of coding and rather got to talking with the attendees.
One major feature was realized though, spoiler messages were implemented at the sprint by on of the co-authors of the XEP, Xavier Ferrer. That we were in direct contact at the sprint was very helpful here, so Linus Jahn could assist in the whole process.
Many other things that happened can be found in the blog post by our host, Tim Schrock from the DBJR.
In April we launched our website based on the design of the Falkon web browser. Posts for the old releases were added belated, so the website was not completely empty.
We also published a release candidate for Kaidan 0.4.
In May we introduced the new adapting settings page by Jonah Brüchert which is used on a new layer on mobile devices and inside of a sheet on desktop.
The first thing we used the settings for was the new change password dialog by Jonah Brüchert (user interface) and Linus Jahn (back end). It allows you to change the password of your account on the server now.
Melvin Keskin improved the presence indicator by replacing the dot on the avatars by a vertical bar at the side of the contacts on the contacts page.
The emoji picker was improved by Filipe Azevedo. He added an emoji search and a favourite emoji tab to it.
The notifications were previously only added as a proof-of-concept using the libnotify-bin command in a shell. Linus Jahn replaced this by KNotifications. This allows us to have notifications on most of the platforms, currently missing iOS.
In July we finally released Kaidan 0.4, details about that can be found in the blog post.
Linus Jahn implemented XMPP URI parsing in Kaidan. This is important for us to read QR codes in the future, e.g. for OMEMO or to log in with an account.
Basically nothing happened in August. :’(
On requests Linus Jahn added a secondary roster (contact list) sorting by contact name, so the contacts are at least not randomly sorted when logging in for the first time.
In November a new contributor, Yury Gubich (Blue), implemented a nice message search with animations.
Also, Filipe Azevedo’s huge multimedia recording branch could finally be merged after several months. You can now record images from your camera, voice and video, all in Kaidan. What’s also new are the previews in the chat for audio and video.
In December we did some refactoring and Melvin Keskin did some design improvements to the chat and other parts of Kaidan.
2019 was a great year, we got many new contributors and have implemented many features. Let’s see what we can do in the next year.