News: Stay up to date

The Étoilé community is an active group of developers, designers, testers and users. New work is being done every day. Visit often to find out what we've been up to.


The way to the new XMPPKit and StepChat

Posted on 30 April 2012 by Alessandro Sangiuliano

Today i will talk about the way to XMPPKit and StepChat release, both are going to the version 0.2. We can separate the work in some steps and talk of the news step by step

The first step was when I came here, into Ètoilè project. I started to work on XMPPKit to make it build again, after this the goal of this step was to make StepChat and XMPPKit to work again. Lot of debugging and good training has been done and after some weeks, both worked again.

The second step, was to make XMPPKit classes and API to be compliant to Objective-C coding conventions; all classes are now preceded by the XMPP prefix and parameters and variable names are more readable. After these changes, debug work continued to make XMPPKit/StepChat more stable on both our main developing platforms: Linux and FreeBSD. Initially the work was hard for a begginner like me, but with the time and the David's help I learned and got some skills “level up” and a lot of bugs were squashed. There was a period where StepChat, that strictly depends by XMPPKit, worked both on Linux and FreeBSD, but there were some “known memory leaks”.

The third step: At this point arrived the time to fix the “known memory leaks”, David put new APIs to EtoileXML that fixed and improved the memory handling of XMPPKit but, when i made XMPPKit use the new APIs i broken it and a second squad of bugs was ready to counterattack. This time the bugs squashing was more heavy but finally, we won! With the new APIs XMPPKit/StepChat got, both, a significant improvement both in memory usage and performance, also the stability was good. All good on my Linux and FreeBSD i386 (i686 that i use), so i decided to focus the work on x86_64, because i got a new computer and i reinstalled my systems both x86_64. With the transiction to the x86_64 other bugs came out, this time easy to solve and they didn't came out from XMPPKit/StepChat. I implemented a new class in StepChat called SCAccountInfoManager to solve that bug. This class is able to read and write your jid in a very simple way using -base gnustep classes, but a new great framework is coming to make contacts handle, more advanced and confortable. At this point we had XMPPKit and StepChat working both on Linux and FreeBSD, i386 and x86_64 with good performances and stability!

The last step, the most important: this step was very fun; I learned new things because I ported XMPPKit and StepChat on ARC. ARC, Automatic Reference Counting, helps you avoid lot of problems with objective-c memory management because, it does that for you!! ARC is not a garbage collector, you can read the rest of the blog to understand what it is. The port on ARC took some hours but finally, when finished we have realized the better performance and, again, the better memory usage by StepChat. I tested StepChat ARCified talking with friends running on valgrind! Memory usage was very stable and lower than before, performance was very very good, considering that it was running on valgrind.

At this point we have a very cleaned XMPPKit and StepChat.

The next step: The next step is to implement MUC to XMPPKit, so you can talk with all your friends in a conference!

You can find them in the Ètoilè repository at:

svn co svn://

you need EtoileFoundation to build them.

(I have to ask sorry for my actual Bonobo English)