Skip navigation
All Places > Ignite Realtime Blog > 2014 > February

Hi there, I'm Smack's new maintainer. Some of you may know me already as the maintainer of aSmack, the Android port of Smack. I first like to thank Robin for his work on Smack in the past.


Smack has a long development history. The first recorded commit dates back to Jan 13 2003. Now, over 11 years later, we are going make fundamental changes to Smack in order to ensure that it will last another decade.


Most importantly: Ignite Realtime is applying as Google Summer of Code organization. We propose a project to modernize and modularize Smacks build system. One reason why this is necessary, is that we want Smack to be able to target Java SE and Android. Read more about it here.


Smacks SVN repository has been migrated to git, and the code is now hosted on GitHub. We are currently evaluating hosting the code in our own Atlassian Stash, but that isn't decided yet and is not a high priority right now.


Let's have a look at Smack's contributors of the last 11 years:


   513  Gaston Dombiak

   474  Matt Tucker

   123  rcollier

   105  Thiago Camargo

   104  Florian Schmaus

    69  Alex Wenckus

    46  Bill Lynch

    43  Derek DeMoro

    24  Günther Niess

    15  Daniel Henninger

    12  Henning Staib

    11  loki

     7  Michael Will

     7  Wolf Posdorfer

     7  guus

     6  Holger Bergunde

     6  Jeff Williams

     5  Jay Kline

     4  Marilyn Daum

     3  Francisco Vives

     2  bruce

     1  (no author)

     1  Andrew Wright

     1  Pete Matern

     1  Tim Jentz

     1  root


Hopefully this list will grow over the time. If you'd like to contribute bigger patches to Smack, please consult the developers. Either via IRC #smack (freenode) or via the developers forum. All patches will be reviewed, since there are usually a few things that should be improved before the commit is ready for Smack's master branch. Make also sure to read the Guidelines for Smack Developers and Contributors.


Besides the GSOC project, there are more goodies in the queue, like XEP-0198 Stream Mangament and Roster Versioning.


We also work on migrating the build system to gradle, including deployments to sonatype/maven central. I expect the next release to be available as jar and via maven central.


Finally, shortly after the 3.4.0 release, a memory leak was reported in the forum. The cause was identified 6 hours later, and a fixed nighlty release was made availabe shortly after. I am going to use this importand fix as reason to release Smack 3.4.1 today, in order to get familar with the release process of Smack.

Yesterday's release of Openfire 3.9.0 had some problems with packaging of the release.  Bouncycastle signed jar files were getting packed, which then caused problems when Openfire attempted to load them.  We have hopefully fixed this issue and cleaned up a few other details and are proud to announce a 3.9.1 release!


Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache license. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.


The download page offers these files and here are their md5sums for your comparison.






Please report any issues to us in the forums.  We are always looking for developers to help improve Openfire, so please let us know if interested!

The Ignite Realtime community is happy to announce the release of version 3.9.0 of Openfire! Downloads for various platforms are available here.


Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache license. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.


There are a few important fixes with this release, be sure to checkout the changelog for more details.


As always, we welcome your feedback, suggestions, tips, hints, questions and other contributions in the Ignite Realtime Community pages.


We are also looking for people interested in helping to develop Openfire!  If you enjoy hacking at Java code and would like to pitch in, please let us know on the forums.


Update 6 Feb 2014 20 UTC: There was a problem with the initial build of 3.9.0 and the packaging of the bouncycastle libraries.  This has been fixed.  The following MD5 checksums should be used to check the files you download.





Stepping Down as Lead

Posted by rcollier Champion Feb 2, 2014

It is with a heavy heart that I am stepping down as the project lead for Smack. 


I am happy to have managed to push out 6 releases in the last 3 years, but even from the start I always had issues finding the time to dedicate to this project.  Things have never really improved on that front.  Three young children and some unexpected illnesses in my family haven't exactly made for a lot of free time over the last couple of years. 


I have been thinking about this for awhile actually, but it has only been this year that some other eager contributors have come along with a lot of ideas and motivation for the project. So that makes for a good time to step aside and let those with time and dedication move the project forward.


I still plan on contributing when and if I can, but it will probably be less code and more helping others in the forums.  It takes much shorter blocks of time.


So, I wish the best of luck to Flow, who will be taking over my role as project lead.

Smack 3.4.0 is released

Posted by rcollier Champion Feb 2, 2014

The Ignite Realtime community is happy to announce the latest release of Smack (version 3.4.0).  It is now available for download.  This release has a number of noteworthy changes.

  • Deployment structure - Changes reflect the idea of only keeping code that matches specifications that have gone at least as far as the Draft state in the smack or smackx jars.
    • Workgroups - This has been pulled out of the main jars and placed on it's own due to the fact that the spec it is based on hasn't reached the Draft status of the XEP process.  It was in fact moved to the Deferred state in 2005, and is not likely to ever move forward.
    • Experimental - New artifact to hold code that has not reached the Draft status of the XEP process.  It currently contains the new contribution for XEP-0280 - Message Carbons.  Due to the expectation that the specifications that this code is base on will be in a state of flux until being moved forward to a Draft state, this jar will have it's own versioning scheme.  Users should be aware that this code is apt to have API changes and such outside what can be expected of changes to the major version of Smack.  It may be more volatile to major changes and should be used with caution. Code deemed experimental will be 'promoted' once the specification has reached the Draft state.
  • Logging - Smack now uses Java util logging.  Prior to this release, what little logging was done consisted of dumping to the system console via System.out/err calls and the infamous printStackTrace calls.  Although it is not the most popular of logging libraries, it does not create any external dependencies and can be used in conjunction with either Log4j or Slf4j.
  • Configuration
    • Provider Management - Fixed the long standing issue (SMACK-286) of not being able to change how and where providers are loaded from.  The loading of providers from a specific file location has been pulled out of the ProviderManager.  The manager is now only responsible for managing the providers, not loading them as well.  The API has been augmented to allow for users to provide any means they wish to load providers.  A file based one which loads the current file format is provided, so any existing files can be easily added.  This can be utilized via the API or a VM argument.  The documentation has been updated to reflect these changes, please read for more details.
    • Initialization - System initialization can now be accomplished programmatically via additions to the SmackConfiguration API or by using the new a VM argument.  The default behaviour remains the same though, so you don't have to actually do anything unless you want to change the initialization process or the default system properties.  This easily enables developers to only initialize the functionality they want to use. Please read the documentation for more details, and a sample configuration file is now provided in the samples directory of the deployment archive.


Here is a partial list of some of the fixes beyond the ones related to the aforementioned items.

  • SMACK-387 - Allow configuration of ChatManager for handling incoming messages.
  • SMACK-403 - Add support for XEP-0297 Stanza Forwarding.
  • SMACK-343 - Fixed OSGi manifests.  All jars are fragments of smack.jar.
  • SMACK-339 - Allow ConnectionListeners to be added before Connection is connected.


In addition to these changes, there have been many bugs fixed and a variety of other tasks done, the complete listing can be viewed here.

Filter Blog

By date: By tag: