Introducing Tinder, an XMPP object implementation library

Document created by Guus der Kinderen Champion on Jun 7, 2009Last modified by Guus der Kinderen Champion on Jun 22, 2009
Version 2Show Document
  • View in full screen mode

Welcome to Tinder!


Tinder is a Java based XMPP library, providing an implementation for XMPP stanzas and components.


Tinders origins lie in code that's shared between Jive Software's Openfire and Whack implementations. The implementation that's provided in Tinder hasn't been written again "from scratch". Instead, code has moved from the Openfire and Whack projects into Tinder, preserving al of the existing features and functionality. So, what code will combine into Tinder? Notably the org.xmpp package implementation of Openfire, which defines classes such as Packet, JID, IQ, Component and their extensions.


Why a new project?


Parts of the code of Openfire are useful in other contexts than that of an XMPP server implementation. Developers might, for instance, want to use the XMPP stanza implementation within other projects. Having to include Openfire as a dependency of such a project is quite a bit of overkill. In such an example, it would be useful to have a small project that you can include, that offers you a lightweight XMPP object implementation, without the rest of the features that Openfire offers. Enter Tinder. Tinder will allow developers to re-use parts of Openfire, without having to include Openfire itself.


There's other benefits to Tinder though:


Tinder will replace some most of the duplicate code that's currently shared in Openfire, Whack and ConnectionManager projects. Removing duplicate code will make it easier to maintain and develop these projects. By delegating the implementation and maintenance of the low-level XMPP implementation, Openfire, Whack and other developers will be able to focus on the development that adds value to their project.


On the flip-side of that medal, you can argue that the 'core' code that will make up Tinder deserves a bit of dedicated development attention (unit tests, bug-tracking, stuff like that). This would benefit any attempt to really fine-tune the code, for example for high-performance tuning. Currently, the code is a bit put in the shadows of the other projects (of which they are part of).


So, will this replace Smack (the library that provides the base of Spark)?


No, definitely not. Smack offers a full-fledged XMPP client implementation, while Tinder only defines some XMPP building blocks. Tinder provides some basic objects on which a client library such as Smack could be build. However, Smack does not share the same code base as Openfire, Whack and the ConnectionManager do. It's therefor unlikely that Tinder and Smack will be merged in the foreseeable future - there's simply to much difference.


What's next?


We've wrapped up a Initial roadmap, project Tinder, in which we capture the first steps of the development of Tinder.


As always, you're invited to contribute.