SparkWeb is an Open Source, web-based IM client optimized for businesses and organizations. It features built-in support for group chat and strong security. It also offers a great end-user experience with features like group chat room bookmarks, and tabbed conversations.
After Gato made this suggestion in my last blog, I decided to move this request to the top of my to-do list as I also need it for another project I am currently working on.

How does it work?
I am using the Flex Dashboard developed by ESRIA which was donated to the Adobe Developer Connection. Plugins are presented in a pod layout called a View. Each View occupies a Tab in the SparkWeb ChatWindow. You can modify Views by dragging and dropping pods to a different location and minimizing, maximizing, and restoring pod windows. View changes are saved using a LocalSharedObject. View configuration data is loaded from sparkweb/plugins/plugins.xml with values in plugins.xml indicating which swf file to load for a particular pod within each View.

<views>
<view id="view0" label="Plugin Demo">
<pod id="app01" title="User Moods" dataSource="plugins/moods.swf" />
<pod id="app02" title="User Tunes" dataSource="plugins/usertunes.swf" />
<pod id="app03" title="Demo" dataSource="plugins/demo.swf" />
</view>
</views>
SparkWeb will load each pod SWF file and call the method setParentApplication passing it the SparkWeb root Application object. From this object, you can navigate your way to access all other SparkWeb public objects and even add eventhandlers on events like NewMessage for example.
To get a feel of what can be done, I decided to implement the User Tunes and Moods PEP (personal eventing protocol) applications. See Armando Jagucki's blog for more details about PEP in Openfire. The source code to the demo plugins is in the src/plugins folder.
For those interested, the latest version of Red5 Plugin for Openfire can be found at _http://red5.4ng.net/red5-0.1.06.zip. Remove comments in plugins.xml to activate the demo.
I use Openfire and SparkWeb everyday and recently starting evaluating Clearspace to power the community I am building for my wife's education consultancy (www.inspiredfutures.co.uk). As I had limited computing power and memory to work with on my hosted server, it became expedient that I needed to integrate all three products under the same web server and Java JVM.
The first thing I did was to make an openfire plugin out of Clearspace
The next thing I did was to enable SparkWeb display an HTML page from its chat container

The result is what you see above and I am very pleased with it (chuffed as we say in the UK). The benefits of integrating Openfire and Clearspace has already been mentioned here . Adding SparkWeb to that combination in order to have realtime messaging, desktop sharing, Red5 audio/video calling and a SIP phone makes a compelling case for me to use Clearspace
I have reservations about real-time integration with web applications that use the MVC model based on Stuts like Clearspace or even PHP applications like SugarCRM. Even Salesforce.com also falls into the same group because they all build their UI on the server and everytime the user does anything that requires a server fetch, the screen goes all blank while you wait for the whole page to be rebuilt from server-side Java code.
Putting a softphone or an IM client as a widget in these applications requires constant connect/disconnect cycles as the user moves from page to page. It reminds me of my attempt to build a real-time application on an Apple iPhone and a softphone in Salesforce.com. What we need is to be able to keep our widgets UI resident on the client as well as the user session in the plugin on the server. I am curious to see how Jive Software implements the realtime widgets in Clearspace.
In the meantime, I am happy to make SparkWeb my container for real-time web applications as I am getting biased towards Adobe's open-source Flex as my de-facto web client application development platform. I learnt a lot from studying the SparkWeb code and I am planing on developing some Clearspace widgets that use SparkWeb's features through the Javascript External Interface to make the integration complete.
If you want to use SparkWeb as a container for your web applications as I have done, pick up the latest version of the Red5 plugin from here. Copy and edit index.html. Change the httpLabel and httpURL parameters to your preference.
I am proud to announce that I have successfully completed my Google Summer of Code Project. As we hit the official pencils down date, I thought it might be good to publish results and final toughts.
I started the project in time and completed it 3 working days later than planned, though it could require more effort if we didn't change our goals. I cooperated with Tomas and Tobias to fix the flaws I couldn't notice during development. Changes I made to Openfire and XIFF are listed here and here. All changes have been imported into trunk and hopefully be included in next releases.
It was a wonderful experience to work on Openfire and SparkWeb, especially with my mentor Gaston. Even if my GSoC project is complete, I feel there'll always be something to do for me with Jabber. I am having fun with Jabber, and planning to continue working on Jabber development as a community contributor.
I would like to thank Google for giving me such a great opportunity. I also thank David Smith and Peter Saint-Andre for their excellent support.
See you around!
This weekend I jumped back into development of SparkWeb to reacquaint myself with the list of outstanding issues/bugs in order to set a course for fixes and improvements. As a result, I have updated SparkWeb's roadmap in its issue tracker, adding a handful of bugs to be smashed in the weeks ahead for the 1.0 release (and also closed a lot of outdated ones). Clearly the next release will be focused on bugfixes and stabilizations. However, let's look into the void a bit further and see what new features and enhancements are on the horizon.
Dynamic Theming and Skinning
After developing on and using SparkWeb for nearly a year now, I have grown tired of its current skin and icon theme. In the code we are actually hardcoding a lot of color values and of course hardcoding the skin images themselves. This is not ideal in the least. Let's work towards a skinnable SparkWeb with updated icons. What I have in mind is something less "heavy" on the eyes, something like Yahoo's Flex skin they released under the BSD license:

As for the icons, they should also be themable. Imagine SparkWeb with a beatifully clean flex skin matched with the IM-related icons from KDE's Oxygen icon theme. I would like to see that, myself.
TLS Support
Secure communications over XMPP. Enough said, right? I am sure a lot of you would like this feature.
Plugin Framework
Easy extendabilitiy with the option to disable/enable certain functions would be great. I am sure a lot of you saw Dele's manipulations of SparkWeb adding Audio/Video communications. That is an obvious use case of such a framework, and I image his code would serve as a good guide for determining "plug points" in the code to implement it.
Stay tuned, and don't be shy to report bugs and submit patches of course.
--Armando
Hey all.
I have been selected as the new project lead for both the SparkWeb and XIFF projects here at the Ignite Realtime community. For about half a year David and I were the only developers contributing code to those projects on a full-time basis -- before SparkWeb's source was even opened up. I added initial support for shared groups, group chat invitations, kick/ban/nick-change announcements in group chat, various bug fixes, and a bunch of other little features here and there. With my previous work on SparkWeb I have seen first hand how its code has matured over the year. I think it is in a 'good' state right now, but clearly there is always room for improvements.
David has made a lot of necessary refactorings in the past that have improved its performance and Safa is currently ensuring SparkWeb is fully compatable with BOSH 1.6. Also, we have various other patches containing excellent improvements from other people in the community that will be included in an upcoming release. These two projects now have a decent amount of activity from outside of Jive, which is great.
From some recent conversations in the weekly chats it is clear to us that people feel comfortable with Openfire, the server -- and that what they are expecting to see is a client evolve to the same degree. I would like to hear more about this perspective so I can focus to make it happen in SparkWeb's use-case.
Interested in getting involved yourself? Well, what are you waiting for? This is an open source community after all... grab the source and join the fun. Send any of your code contributions, ideas, or feedback to me and let's make the most excellent XMPP web app/lib out there!
--Armando