Skip navigation
All Places > Ignite Realtime Blog > 2008 > July

When SparkWeb became open-source, I took a look at the source code and found it had more features than the Flex-based XMPP client I was co-developing for the Red5 Plugin. It therefore made sense to migrate the Flash audio and video features we had developed for our client to SparkWeb and make it compatible with the Spark and Openfire Red5 Plugins and package it as part of the Red5 plugin. The downside to this that the modifications to the Red5 version of SparkWeb makes it out of sync with the official SVN and it could possibly become a fork requiring a name change later on.


So what does the Red5 SparkWeb offer?


  1. A plugin container for SparkWeb. I noticed  that quite a number of users are asking for a plugin to deploy SparkWeb. My advice would be to try the Red5 Plugin.

    Configure  Index.html and point your users at


    Where nnnn is your HTTP-BIND port number (default 7070) and red5_webapp_name is your default red5 web application name (default red5)

  2. Enables use of the Red5 plugin audio and video features with both Spark and SparkWeb. You can't do video messaging and the video roster is replaced with visual presence (see below). You can make audio/video calls and share your desktop with your contacts. Each call record is logged in openfire and can be queried by the administrator with the Openfire SIP plugin.

  3. Makes SIP phone calls between Spark and SparkWeb users. All SparkWeb SIP calls are logged with the Openfire SIP plugin as well.

  4. Provides webcam support. If you have a webcam installed on your PC, it will be automatically detected and will be used instead of your vcard photo. You can disable this in index.html. You can add or replace your vcard photo with a snapshot of your webcam when you edit your profile. You can also publish snapshots from your webcam as visual presence to all your contacts. What this means is that all your contacts will have  a snapshot of your webcam in their rosters. The interval between snapshots is 60 secs by default and can be modified in index.html. See a draft copy of my proposal to extend XMPP with visual presence. Please feel free to post comments at the bottom of the document.

I also made a few cosmetic changes to my taste and added sound effects for incoming calls and instant messaging. I added some code to improve the loss of focus detection by tracking Flash application activation/deactivation messages and mouse movement. If you use Internet explorer and enable pop-ups, you will get a pop-up in the bottom right corner of the screen with a photo, name and first line of the incoming messaging if you are outside of SparkWeb when a new message arrives.


I am hoping to add fastpath support and a calendar to SparkWeb next.

I am working on BOSH support of Openfire and SparkWeb as part of the Google Summer of Code 2008. As we got past the midterm evaluations, my mentor Gaston and I thought it would be good to inform the community about what I have done so far.


My proposal involved updating and improving Openfire's BOSH support by updating the implementation to BOSH 1.6, and migrating Apache MINA as its connection provider.


I started with creating a load test environment to see Openfire's current performance, and created a document explaining how to use it. Then I ran some load tests using that environment. Unfortunately, the test machines I used were not enough to produce desired results.


As the next part of the project, I updated Openfire's BOSH to support both 1.5 and 1.6. Here is a summary of the update:


  • Added 'hold' and 'ver' attributes to the session creation response.

  • Fixed version checking. Before it was done using a double variable, which  may show that 1.5 is newer than 1.10.

  • Script syntax support has already been added before. Finetuned it to prevent  caching of responses.

  • Implemented in-order message forwarding (JM-1412), because further work seemed to be depend on this implementation. This is the part that took most of my time, also which made me to get more familiar with the code  after long debugging sessions.

  • Implemented acknowledgements, which was intoduced in version 1.6.

  • Added support for session pauses, which was also new for 1.6.

  • Implemented overactivity checking. In 1.5, there was only 'polling  too-frequently error', and a little description about it. Version 1.6 introduced a new section for overactivity, and has a detailed description of which  circumstances should be considered overactivity.


With this update, I have seen that some BOSH issues I was not aware of (JM-1245, JM-1246) have also been resolved. The update has been merged into Openfire trunk, so you can grab and test it.


After the update, I started to investigate how to migrate to Apache MINA, and found out that it would be harder than we expected, because the version used by Openfire, 1.x, did not have any http support. We had also other alternatives, like Grizzly, so we deferred the decision about connection providers until we do some tests on them.


I am currently working on SparkWeb to make it fully compatible with BOSH 1.6. In the meantime, I am cooperating with Tomas Karasek, who is developing BOSH for Gajim, to resolve any BOSH related issues in Openfire.


I am open to any ideas/suggestions.

Whack 1.0 has been released. Whack is our Open Source XMPP (Jabber) component library for XMPP components. External components are processes that run outside of the Openfire's process but can connect to the server to register new XMPP service. Whack is an implementation of XEP-0114: Jabber Component Protocol.


Unlike the other igniterealtime products, Whack followed a different evolution path. We started coding Whack around November 2004 and after a few months it was operational. Openfire and Whack share the same component's API so around 2005 we were able to run Fastpath as an internal component (i.e. running in the Openfire's process) or just move it as an external component using Whack. It was impressive seeing the same code running as internal and external. Since then Whack continued to evolve but always at a very slow pace. Whack was always stable in each step but it was just not ready for prime time. We wanted to keep adding more things to it to reach a 1.0 release. Since our collaboration software Clearspace uses Whack to integrate with Openfire we needed to push the boundaries of Whack once again and I'm happy to say that we now reached the 1.0 release. And that is why we decided to make a public release in 2008 after 4 years of continuous but slow growth.


A few months ago we also released a new product called SparkWeb. SparkWeb is our Open Source web-based IM client. SparkWeb is based on XIFF just like Spark is based on Smack. Today we updated the products page to list SparkWeb as an official product. Welcome SparkWeb! The family has grown a little bit now.


You can get Whack from here. Questions could be posted to the Whack forum.


SparkWeb can be downloaded from here. If you want to build from the source code you can read the Getting and Building SparkWeb document.

Filter Blog

By date: By tag: