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