Swift Blog

Swift Hackathon Roundup

Last sunday, we finished our week-long Swift Hackathon, and it was a great success, leading to Swift 2.0-beta1! Here’s a list of the things we achieved during that week.

First of all, the goal of the week was to find and fix as many bugs as possible. This is what our ‘hackathon bug count dials’ were displaying at the end of the week:

Hackathon Week Bug Counter

In only one week, we found 19 bugs, and fixed 64! Not a bad result for our first hackathon, don’t you think? As you can see from the trend, we put a big dent in the list of open bugs:

Hackathon Week Bug Trend

And if fixing all these bugs wasn’t enough, we found the time to do some other things on the side as well during the week:

  • Together with Olly Betts, we finished our Debian packages, and submitted them to Debian. So, expect both Swift and Swiften to be available from the official Debian repositories soon!
  • We set up a build for the brand new Ubuntu 12.04 (Precise Pangolin)
  • We started fixing and cleaning up translation strings

Thanks again to all the people who have helped us during this excellent week!

Swift 2.0-beta1 Released

After another year of development, we’re happy to announce that we released our first Swift 2.0 beta! We encourage everyone who is interested in helping us with testing to try out this new release, as it has many bugfixes and enhancements (see the release notes for more details).

Thanks to the hackathon week (of which details will be posted shortly), we believe this first beta to be pretty stable. Nevertheless, should you find some bugs, please come and tell us about it!

Swift Hackathon Update

We’re just halfway through our Swift Hackathon, so we thought we'ld update you about the progress we’ve made so far. In fact, a screenshot of our live hackathon week bug counter sums this up quite well:

Hackathon Week Bug Counter

That’s right: in merely a couple of days, we managed to fix 50 (more than half!) of the open bugs, and found 17 new bugs. And what’s more: we still have the whole weekend ahead of us, so you still have a chance to join us in fixing, testing, and improving Swift!

A big thank you to all the people who have been helping us out so far!

Google Summer of Code 2012

It’s that time of year again: Google announced which students they are going to sponsor for contributing to open source projects. This year, we have the pleasure of welcoming 3 students at Swift, who will be working on some very exciting projects.

This summer, you’ll see the following new faces hanging around the Swift room:

  • Cătălin Badea will finally bring us the long awaited “Conversation History” support, using the newly minted Message Archive Management XEP
  • Mateusz Piękos will be adding shared whiteboarding functionality
  • Yoann Blein is going to implement screen sharing using Jingle

Since Kevin and I could only mentor Cătălin and Mateusz, and we really wanted to have Yoann join us as well, we decided to bring in some extra help this year. Tobias, who not only has participated in GSoC 4 times as a student, but also is a top Swift contributor, and authored practically all of the Swift Jingle code during GSoC last year, will be mentoring Yoann in the screen sharing project.

As you can see: great times ahead!

Swift Hackathon

All the cool kids are doing it, and so are we: starting Monday April 23rd, we’re holding a week long Swift hackathon! We will be focusing for a whole week on bugfixes, and at the end of that week release the first beta of Swift 2.0, the next major Swift release. Everyone is invited to join us online in our chatroom at swift@rooms.swift.im, and start hacking with us. And if you can’t or don’t want to fix bugs, we also need plenty of people to help us with testing Swift extensively that week.

(Thanks to Tobias for suggesting this).

Experimental File Transfer support hits Swift

It’s been a busy summer for Tobias Markmann, one of the XMPP Standards Foundation’s 2011 Google Summer of Code students. He has been working on implementing File Transfer support for Swift, using the fresh Jingle XMPP protocols. I’m happy to announce that we integrated Tobias’s work as an experimental feature into the main Swift branch, where it will be further developed and brushed off before being enabled in our nightly builds and releases.

For those interested in the nitty gritty protocol details: file transfers are negotiated through the Jingle File Transfer protocol (XEP-0234), using SOCKS5 (XEP-0260) as the main transport, and In-Band Bytestreams (XEP-0261) as fallback. To improve connectivity, we use both the NAT Port Mapping Protocol and the UPnP Internet Gateway Device protocols to allow connections through most firewalls, and SOCKS5 relaying proxies in case all else fails.

The new feature has been tested for interoperability against (slightly modified) development versions of both Pidgin and Gajim, which, together with the Pidgin-based Adium, cover a large XMPP user base. After both clients update their protocols to track the newly published Draft specification versions, all 3 should be able to exchange files seamlessly.

What still remains to be done is lots of testing (both internal testing, user testing, reliability testing, and interop testing), bugfixing, and some refactoring here and there to clean up some of the code (which already is in very good shape). Our end goal is to reach a rock solid implementation, with a near guarantee that file exchange will always work (which experience teaches us is far from trivial).

To conclude, we’ld like to thank Tobias for contributing this great new feature to Swift, for providing valuable protocol feedback to the XSF, and for laying the foundation to other exciting Jingle-based features (including voice/video conferencing).

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 http://swift.im/git/stroke 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 http://swift.im/git/stroke.

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.

Summer of Swift Code 2011

Yesterday, Google announced the 1116 students that were accepted for this year’s edition of the Google Summer of Code, 5 of which will be working with the XMPP Standards Foundation. We’re very happy to welcome both Tobias Markmann and Vlad Voicu, who will be working full-time on Swift this summer, implementing file transfer support and conversation history respectively.

We have to mention that these weren’t the only proposals we received. Most of the proposals we received this year were of good quality: we suspect that the teaser tasks we put up for potential students made it possible for both the students and us to get an idea up front of what should be expected. However, based on experience from previous years, we decided we should only accept 2 students, to ensure that we could give our full attention to making all projects successful (including fast integration into a Swift release). We’re convinced that both Vlad and Tobias will live up to their expectations, and implement some of the most requested Swift features today!

Swift 1.0 Released

Finally! After 2 years of development, we’re happy to finally announce the first full release of the Swift IM client! In this first release, we have focused on building a user-friendly messaging client, with all the basic features you would typically need for having real-time conversations. In future versions (which are already in the works as we speak), we will be extending Swift with more features.

We would like to thank Isode for sponsoring time for Kevin to work on Swift, Flosoft for providing our download infrastructure, Dave Cridland for the logo, all the translators who helped us make Swift available in different languages, all the code contributors, all of whom should be listed on our About page, and all our beta testers for giving us feedback and bugreports throughout the whole development period!

Swift 1.0 Release Candidate

A bit under a month since the last beta was released, Swift has reached Release Candidate stage for 1.0. This version is being released to check that each i is dotted and each t crossed, so please report any bugs/issues that you find, and in the absence of problems we’ll aim to release the final builds soon.

The release notes are available at http://swift.im/releases/swift-1.0rc1/ and the changelog since beta9 is:

  • Added Spanish and Catalan translation (Thanks to Jan Kusanagi)
  • Added Russian translation (Thanks to Ivan Tyumentsev)
  • Added German translation (Thanks to Thilo Cestonaro)
  • Fixed a bug where the avatar was not updating in the chat window.
  • Fixed typo in room join message.
  • Fixed a potential hang on shutdown on Mac OS X.
  • Fixed compilation on systems with a recent version of Boost installed.
  • Fixed the last couple of remaining known crashes

Please test http://swift.im/releases/swift-1.0rc1/, and encourage friends, families and colleagues to do the same, and we’ll look forward to Swift 1.0.