Beautiful (XMPP) Testing

O’Reilly recently released the book Beautiful Testing, a collection of essays about testing and QA in general. As I mentioned earlier, I wrote an article in that book on (unit) testing XMPP protocols, using Swift as a motivating example. Since the book’s scope may (oddly enough) not always be as interesting for developers in general, I released my article under a Creative Commons Attribution license (thanks to the good folks from O’Reilly for encouraging us to do this), which you can find here (or directly from my Git repository). The original excerpt from the book (including the index, list of biographies, and all the fancy artwork) is also available for download under the same license.

I of course encourage you to buy either the PDF or dead tree version of the book, as all the proceeds of the book go to charity.

More Swift teasings

It’s been quite a while since I posted a teaser of the login window and people have been asking for updates since then, so here’s a quick post to appease everyone.

We’ve been making progress steadily over the last 6 months. One of the first things we got going was the chat interface:
Chat window screenshot
It’s minimal, but that’s quite comfortable for us, at the moment. We’ll review that over time, so you may see buttons and icons appearing there in the future.

More recently, we’ve spent quite a while working on the contact list:
Contact list screenshot.
I was initially reticent to use custom rendering code for Qt’s views but in the end it seems to have turned out alright for us.

So where does that leave us – will it be another 6 months before we blog again?
I hope not – Remko and I are working towards an internal 1.0 Release Candidate quite hard now, and it hopefully won’t be a vast amount of time before we post about that. After 1.0RC, we’ll start making the builds gradually less private (to manage the amount of feedback we get) until we work to the big 1.0 release day.

“Beautiful Testing” XMPP Chapter

Adam Goucher and Tim Riley (Director of QA at Mozilla) announced a few months ago that they are putting together a Beautiful Testing book for O’Reilly. I took the opportunity to write a chapter about testing in the context of XMPP (more specifically, about testing protocol implementations in Swift), and just submitted the final draft for technical review. The book is expected to be released this August.

Although there are many types of testing being done in the XMPP world, the chapter focuses on the beauty of testing the functionality of XMPP protocol implementations. After a brief introduction on XMPP, it starts out with a description of unit testing simple IQ request/response protocols, and then gradually moves on to higher-level testing of more complex, multi-stage protocols such as session initialization. As you might expect from a developer like me, the chapter is quite heavy on the (C++) code, but I’m told it compensates for the rest of the book ;-)

As with all other books in the O’Reilly “Beautiful” series (which started with Beautiful Code, but has since been followed up by Beautiful Architecture, Beautiful Teams, Beautiful Security, and Beautiful Data), all proceeds of the book go to charity, in this case “Nothing But Nets” (which provides mosquito netting to malaria infested areas of Africa). This means that I can plug this book as much as I want, and still have the feeling I’m actually doing a noble, unselfish thing. (contrary to when I casually mention that you can buy our book XMPP: The Definitive Guide at very sharp prices these days). Some time after the book’s release this summer, I will even make a free version of the chapter available here, so check back soon!

Swift teasing

A first look at Swift’s UI…
Swift's login window.

Swift Questions

Over the last week since Remko announced Swift, people have shown far more interest than we’d been expecting, and have mostly been asking the same questions. While Remko and I haven’t got answers to all the questions ourselves yet, here’s a preliminary effort to share our thoughts as they currently are.

What’s your release schedule?

We’re working to a monthly internal release schedule, but we don’t have a date set for a public release. There are plenty of good XMPP clients already, and we don’t see any value in adding to this until Swift can distinguish itself.

What toolkit are you using?

We’re writing all logic and protocol code in a toolkit-agnostic way. We’re currently working on a Qt-based GUI layer, and others are on the cards.

What license will it be released under?

We honestly don’t have an answer to this yet. We want Swift to be free, and we want the source to be free. We also want to investigate options for supplying Swift and its library commercially. Until we know the best way to do this, there’s an open question here.

Does this mean Psi is dead?

Not at all. While we’ve both been a core part of Psi for more years than we can count, Psi’s future is looking bright, and I’m sure that’ll continue.

Will it be multi-protocol?

We have no plans for Swift to speak any protocols other than XMPP.

Why start another client?

A bunch of reasons. We could have forked Psi, but Psi was always designed with different goals in mind than Swift’s. Psi’s had to make lots of decisions over the last 8 years, and some of them we’ll make differently for Swift’s different aims. Plus we’ve both been working on Psi for a long time; it’s good to try something new.

Will it have the same features as all the other clients?

No. At least, not initially. Our focus is on adding only the core functions to Swift, and getting those “just so” before we move on to adding a new feature.

Will it be cross-platform?

Yes, we’re targeting Windows, Mac OS X and Linux with our first GUI layer. We may add to this later.

Swift Messaging

I’m excited to announce a new player in the Jabber/XMPP game: Swift. Shortly after finishing the XMPP book, I started working on Swift, a pragmatic, cross-platform, user-friendly IM client. Together with Kevin Smith, we are building this project from the ground up, driving its development using agile methodologies. Underneath the IM client, we are working on an extensible and robust XMPP library, written in C++.

Until we launch the project and its website, you can subscribe to the Swift blog and identi.ca group to stay up to date with the latest news and developments around the project. Thanks to Dave Cridland for lending us his graphical capabilities and drawing us a pretty logo.