SMS is the largest data service in the world, surpassing email, instant messaging, and, yes, Twitter too. It is “the fastest way to communicate invented by man”, according to industry expert Tomi T. Ahonen. But while sending a text message is quick and easy, developing a text message application is nothing of the sort.
The most popular developer solution involves a Bulk SMS Gateway from Clickatell, mBlox, or CellTrust. A gateway allows you to send and receive text messages using proprietary hardware and networks. Most gateways provide a web interface to manage mobile subscribers and send bulk messages as well as an SMS API, which you can use to integrate text message features into your website or mobile application.
Perhaps due to the high barrier to entry gateways are rarely used for interactive prototyping. Most providers charge setup, monthly, and per-message fees that can be prohibitively expensive, especially during the development phase of a project when you may be sending out thousands of test messages. There are, however, several alternatives which I have found in my research.
Both text messages (160 characters) and Twitter messages (149 characters) must be extremely short, making the two cousins in casual and concise style. Unlike SMS, Twitter is completely free to use for you and your user testers. It has a popular Twitter API with libraries in Flash, Python, Ruby, etc., and since it can be used from a mobile phone or computer you can bypass annoying hardware restrictions entirely. All of this makes Twitter a compelling alternative for testing short, text-based interactions. If you do plan to eventually migrate from Twitter to the real thing be sure to remember the idiosyncrasies of text messaging:
- Each mobile phone has a unique interface for composing messages. Some phones have dedicated keyboards, some have auto-completion of words, some have spellcheck. Often, switching between letters and numbers is cumbersome.
- New messages are displayed in any which way. They may pop-up in a dialog window or appear in a chat bubble. They may make noise. They may be abbreviated. They may show the sender’s phone number or name, or not.
- Sending a text message is like sending an email. It takes anywhere from a few seconds to a few hours to deliver depending on network conditions.
- To get started, users must learn a new phone number or shortcode. Don’t underestimate the tedium and potential errors involved with sending the first text message to a new number, and account for this where possible in the design of the user experience.
Kannel is an open-source WAP and SMS gateway. This is by far the most technical solution I’ve found but the reward is there: this is a free, open platform that can be used in production environments as well as testing. If you choose this route you will also want to purchase a GSM modem (the benefits of which, compared to a mobile phone, are described here). If you are interested in trying out Kannel you may want to start with Marc Wandschneider’s “Setting up, Configuring, and Using Kannel to send/receive SMS messages“.
If you have a Mac and a compatible Bluetooth-enabled mobile phone be sure to check this one out. Although I’ve never used BluePhoneElite I have been told that it’s easy to send and process text messages via Applescript. This software has the added benefit of storing and organizing all your incoming text messages in a nicely designed Message Center interface. The downside of course is that you have to maintain two systems: a mobile phone and a computer. BluePhone Elite costs $24.95 and is the primary product of Mira Software, Inc.
This brings me to my personal favorite for prototyping SMS applications. While studying Design & Technology at Parsons I was lucky enough to stumble upon this gem from Mike Edwards, who recently taught an entire class on interactive prototyping.
Sydewynder is an open-source SMS receiver and sender application written in Python for the Nokia S60 phones. With great example applications and commented code I was able to build something useful and have it running on my phone in under an hour. It is easy to use, extensible, and it behaves much like an actual SMS gateway. To use Sydewynder you should have a spare Nokia S60 mobile phone (I use the Nokia E71 and N80) and SIM card, or be prepared to send your friends some very strange text messages while your application is running. You may also opt for an unlimited text message plan so you don’t have to worry over every test message you send.
Sydewynder can send messages to multiple recipients and, with a data plan or wi-fi access, connect with web services. It can also do pretty much anything Python can do on a server. For my own work I installed CouchDB and JSON modules and upgraded to Python 2.5. After months pushing on the limits of Sydewynder I am thrilled by how well it holds up. My absolute favorite feature is the emulator, which you can use to test your application’s logic before installing a new version on your phone. This alone saved me hours and hours of development time. The biggest limitation is support for simultaneous incoming or outgoing text messages. Although every text message will eventually be processed it can take several seconds for each. At busy times your users may receive responses many seconds or even several minutes later. Despite this, Sydewynder is by far the best solution I have found for prototyping SMS applications.