powered by Jive Software

Spark Dev Request: Support for Message Carbons

Now that it seems we have active development for Spark and Openfire simultaneously, would it be possible to get Message Carbons working for both client and server? (or has it already been implemented?)

For those who aren’t aware, Message Carbons means that all messages to a particular user are delivered to all instances of that user (all resources) reliably without regard to state (online, away, DND, etc). In other words, the same way GTalk (Hangouts) works: if you are logged in to your gmail on a PC, and hangouts on your phone, you will reliably get all messages on both devices no matter what.

Well, Spark is still not a very active project. Recent releases were mostly a few simpler fixes or improvements. And currently it is in a bit of a stall for a few months. Openfire is in a bit better position, but it still takes months to do even a minor release with a few fixes.

Speaking of that, Openfire has support for Carbons since 3.9.2. One can use Carbons with a supporting client with Openfire (e.g. Yaxim on Android). Smack has support for Carbons since 3.4.0. Current stable Spark version is still on 3.3.1 of Smack. Recently there was a push to update Spark to the latest Smack version. That’s a reason for a stall, as it has broken some things and we are waiting for someone to step up and fix it. That’s the current changelog for 2.8.0 https://issues.igniterealtime.org/projects/SPARK/versions/13632

Updating to the latest Smack won’t make Carbons work automatically. So someone has to provide a patch for this also https://issues.igniterealtime.org/browse/SPARK-1585

Btw, you probably didn’t mean that, but as you were comparing Carbons to Hangouts, i have to clarify. Carbons only sync messages for connected clients. As for Hangouts, you will get all history synced no matter if you were offline on one client at the moment of message exchange.

All information is from Explanation: message synchronization between clients

1 Like

Server-side message archiving is also something I am very interested in.

1 Like

@wroot quick question, what is involved in getting this going? resources in terms of $$? or people ? or…

As I feel that this would be greatly beneficial as well and would be willing to assist in organizing or whatever the project needs



People mostly. But finding and bringing a good java developer on board translates into money. One of team members here tried to find someone on the online job markets, but they either asked too much or couldn’t guarantee they will do everything we were asking for.

Btw, as since 2.8.0 Spark is using the latest Smack library, which has support for Carbons, it should be a bit easier to achieve now.

much appreciated for the the reply.

quick question, is it possible to achieve what Hangouts does with their messaging, regarding if the client is on or offline with Openfire/Spark?


Not with the Carbons (it won’t sync messages when the client was offline during the conversations). You will need Message Archiving and Message Archive Management for that, which are mentioned here Explanation: message synchronization between clients and it is not yet fully supported in Openfire\Smack\Spark.

I’m sure that there are enough people interested in these features that we could pool all our monies together to establish a sufficient bounty for these capabilities. What do we need to do to get this done

The demand amongst the users exists, the money needed to get it done exists, the developers with the skills exist; we just need to bring all those disparate elements together with the power of community.

This sounds easy on the paper @speedy have tried to find a developer on various sites where you can hire a developer online, but it was hard to find one experienced in the ancient and obsolete Swing technology that Spark uses and not asking for unrealistic pay as i remember. If you can find one, we are open to receive patches. But i don’t really want to deal with the money aspect (other than donating some sum, but not managing finances).

I’m not sure what skills will this feature require. Maybe it would be minimal on the GUI (Swing) side and more with the core java part. But Spark has a lot of old code, lots of badly structured code and one has to know xmpp a bit i think.

The problem I found with upwork and some other sites are that the devs talk a good game, but can’t deliver. perhaps I’ve just had bad luck.

As wroot stated, if you know of any java devs that are willing to jump in and help, please invite them over!