Revealing Stroke to the world

It’s time to reveal the latest project I’ve been working on to the world and, just to prove that XMPP isn’t all of my life, it’s…an XMPP library.

Stroke is a native Java port of the Swiften XMPP library that Remko and I work on. It came about because Isode (my day job) needed an XMPP library for use in a Java project and none of the alternatives at the time seemed to be suitable, so I’ve been spending some of my work days over the last while porting Swiften. Isode have decided to open-source Stroke and I’ve uploaded the development repository to alongside the Swift and Swiften code.

Stroke’s now in a basic usable state but I’m still working on adding some of the basic necessary features. Particularly, at this stage, it’s lacking in:

  • TLS support.

  • zlib compression support.

  • Many (most?) of the protocol payload handling that its big brother Swiften has.

I intend to address these as time allows.

On the other hand, it’s already inherited some of the nice features that Swiften has, particularly:

  • Support for the SCRAM-SHA1 authentication mechanism (a mandatory feature for XMPP, these days).

  • XEP-0198 stanza acknowledgement support (for reliable messaging).

If you’d like to grab a copy to have a look at, experiment with or just follow development of, head over to

If you’d like to chat about Stroke (or Swiften, or Swift), we’ve got a chat room and a mailing list, linked from our Discussion Page and I’d love to hear from you.

The primary license is the GPL v3, although alternative licensing may be arranged for Stroke (and for Swiften). Contact Us.