Turning Openfire Enterprise into an open source product

We’re in the process of making the Openfire Enterprise module Open Source (see Matt’s blog). The Enterprise module provided several areas of functionality that were available as a single plugin. A quick list:

Reporting - a dashboard with statistics about server load, user sessions, chats, groupchats, etc. and support for executing reports.

Chat archiving - support for tracking conversations taking place on the server. Both one-to-one and groupchat conversations can be archived.

SparkWeb client - the web-based version of the successful Spark client.

Clustering - support for running several machines hosting the same domain. Thus adding fail-over and better scalability of the server.

Client control - controls whether certain features are available or not in the Spark client (e.g. file transfer, broadcast, groupchat, etc.). Moreover, it is also possible to specify which clients can connect to the server, push new versions of the Spark client and populate rosters with groupchat bookmarks.

Fastpath - provides rich web-based click-to-chat functionality with support for requests to the best available operator in queues. It’s ideal for web-based realtime helpdesks.

Turning a commercial product into an open source product implies more effort that one would initially estimate. Therefore, we are going to break this process in two stages. During the first stage we will offer several plugins that will include the features listed above (with the exception of clustering). Our clustering solution relies on a commercial product and will not be made Open Source. The output of the first phase will be:

  • Reporting and Chat transcripts plugin - this plugin will include the reporting and chat transcript functionalities

  • SparkWeb - SparkWeb will be available as a separate project and not as an Openfire plugin

  • Client Control plugin - the ability to manage clients will be available as an Openfire plugin

  • Fastpath plugin - the Fastpath application will be composed of an Openfire plugin and the WebChat plugin. The webchat.war plugin can be deployed to Openfire as a plugin or can be deployed to your application server (e.g. Tomcat) of choice.

The second stage of this process will include:

  • Reporting and chat archiving - This functionality was available as a plugin in stage one. For stage two we will evaluate making it part of the server itself.

Stage one is planned for April 27th, 2008. That means that two weeks from now we will have most of the functionality included in the enterprise edition available as open source plugins. No clear date has been assigned to stage two but it should take place a few months after stage one.

So, if clustering is not to be made open source, and the commercial product is discontinued, is clustering also discontinued? Is there a way we can purchase something to enable clustering? This was the most exciting feature of the enterprise plugin for us (frankly, it is the only enterprise feature we care about)

If the main reason not to open source the clustering support is the license of coherence it should be quite easy to replace it by terracotta. The modular design of the caches in openfire won’t make this too hard.

Depending on the Jive guy’s thoughts on this topic I could imagine this to be done by the community if there is enough interest/sponsering.

Hey BenV,

We are still discussing what we can do with the clustering feature. If you had an Enterprise license then you can continue using it and get support from Jive. Stay tuned for more news.


– Gato

What about additional licenses, how will that work?

Hey srt,

I’m not sure about the quite easy part but for sure we would love to help the community in this initiative. When we implemented clustering we put special focus on decoupling it from Coherence so in theory it should be possible to use other clustering solutions. Having said that, it is possible that subtle architecture dependencies are hidden in the current design so I wouldn’t underestimate surprises that you may find while doing your own clustering solution.


– Gato

Hey Dallas,

Contact your sales rep. I think that you can use your Coherence license with more nodes.


– Gato

“Client control - Moreover, it is also possible to specify which clients can connect to the server,”

Nice, then I can test one of Coccinella’s features and blog about how to exploit this feature to bypass this useless security through obscurity misfeature. The feature is that you can add a line to Coccinella’s configuration file to define the client name. So, you can call it “Dombiak Gaston Mesenger”, “Psi”, “Spark”, “AOL Instant Messenger”, or whatever you prefer or need to bypass the server restrictions. All you need to do is to restart Coccinella, no recompilation or whatever is required.

There’s always -something- you can do to get around such things. None-the-less, if your company is not a pack of wild animals and behaves themselves, a simple ability to stop the company members from “trying out something unapproved” is a good thing. In other words, if you are going to circumvent the rules, you can find a number of ways to do that. If it’s primarily there as a way of catching the case of joe blow downloading a random client like Coccinella that you did not approve on your network, where joe blow may simply have not thought about not being able to use it, it prevents that case.

Of course Coccinella should probably be online the list available in the actual plugin if it’s not already.

Howdy Peter! =) I will be discussing that in a post I’ll be making shortly. Please stay tuned!

Could you elaborate “SparkWeb will be available as a separate project and not as an Openfire plugin” ?

“Not an Openfire plugin” means it will be marketed as an XMPP-Jabber client usable with any XMPP-Jabber server ?

Will it become Open Source ?


Yes, yes.

About clustering, I did try to implement a clustering solution with OpenFire. I worked two libraries, Shoal and Terracotta.

My requirements where quite stringent, as I did not want to touch the OpenFire codebase.

I did get the best results with Shoal (https://shoal.dev.java.net/). I could get MUC and stats running over a cluster of two node using Shoal. (Only MUC, because that’s the only component with all cluster features right into the code). It did work quite nicely.

Though the distributed cache is way too simple in its current incarnation in Shoal. No TTL on values and such things. But that could be added

I also tried terracotta, but to no avail. Too many objects used within OpenFire are not “instrumentable” over Terracota because of Dom4J objects (presence for sessions etc). And I did not want to touch the codebase.

Regarding Shoal, I am pretty confident that if I could get the code for the current clustering based on Coherence, getting it running on Shoal could be a week’s work for a proof of concept

If you are interested I could get the code cleaned up and available.

cstar :

I am also interested in implementing a clustering solution with Openfire.

It’d be great if you make your code available.


i like the plan, so far

I will in the course of the week.

I need to make sure it is still in a working state first !


There you are.

It is far from anything remotely usable, but I hope it can give inspiration to someone.

You can however check that the cluster events work. The stats work, and MUC should be usable (though the message is duplicated on the sender’s client).

Hi, I’ve got some problem here, i’ve got an evaluation license that it’s due to end by tomorrow. Now as openfire is going OSS i cannot find how can i extend the evaluation time in order to update to the OSS version when it gets out on 27th… what should i do?


Gato posted an eval license for everyone to use for the time being here:


I posted a note at the URL referenced in your post but I also am noting here that the posted license does not allow evaluation of clustering. Could you provide a license that will allow at least 2 cluster members? Thanks.