Two weeks ago (Friday) we had the first monthly Integration Day. Integration Day is when the entire Jive Software engineering team gathers to work on projects to integrate Wildfire and Spark with our other products (in this case, the upcoming product Clearspace). Bagels, pizza, and beer were enjoyed as well -- it was all very much in the spirit of some of our other dev team jamming days, Bug Day, and Sparkplug Day.
We considered two different architectures for the base integration:
Wildfire connects to Clearspace using SOAP web services.
Clearspace connects to Wildfire as an external component.
After much discussion, we settled on making Clearspace connect as a component. That means that Clearspace connects over XMPP to Wildfire and then exists as "clearspace.example.com" (if the XMPP server was "example.com"). Just being connected as an external component doesn't buy a whole lot, so the next step was to build out some real integration code. The first step was to share presence data. We did so using two new Wildfire ad-hoc commands. The first returns a list of all current online presence information for users in the server. The second registers the external component to get a copy of all further presence changes. We're working on documenting these commands for the next release of Wildfire. With both in place -- voila! -- Clearspace knows the real-time presence status for every user in the system. I have a feeling this type of presence integration will be very useful to a lot of applications and not just ours. It's much more elegant than using the presence plugin, for example. The second integration component was to expose all Clearspace SOAP web services through XMPP ad-hoc commands. One of the Clearspace engineers (AJ) was able to do this with only a small amount of code using some clever XFire hacking.
These base integrations unlocked a lot of other feature developments, which we made good progress on. However, the next Integration Day is later this month so I'll wait until then to provide some more details, perhaps with some screenshots.