Caktus has been involved in quite a few projects (Libyan voter registration, UNICEF Project Mwana, and several others) that include text messaging (a.k.a. Short Message Service, or SMS), and we always use RapidSMS as one of our tools. We've also invested our own resources in supporting and extending RapidSMS.
There are other options; why do we consistently choose RapidSMS?
What is RapidSMS
First, what is RapidSMS? It's an open source package of useful tools that extend the Django web development framework to support processing text messages. It includes:
- A framework for writing code to be invoked when a text message is received and respond to it
- A set of backends - pluggable code modules that can interface to various ways of connecting your Django program to the phone network to pass text messages back and forth
- Sample applications
- Documentation
The backends are required because unlike email, there's no universal standard for sending and receiving text messages over the Internet. Often we get access to the messages via a third party vendor, like Twilio or Tropo, that provides a proprietary interface. RapidSMS isolates us from the differences among vendors.
RapidSMS is open source, under the BSD license, with UNICEF acting as holder of the contributors' agreements (granting a license for RapidSMS to use and distribute their contributions). See the RapidSMS license for more about this.
Alternatives
Here are some of the alternatives we might have chosen:
- Writing from scratch: starting each project new and building the infrastructure to handle text messages again
- Writing to a particular vendor's API: writing code that sends and receives text messages using the programming interface provided by one of the online vendors that provide that service, then building applications around that
- Other frameworks
Why RapidSMS
Why did we choose RapidSMS?
- RapidSMS builds on Django, our favorite web development framework.
- RapidSMS is at the right level for us. It provides components that we can use to build our own applications the way we need to, and the flexibility to customize its behavior.
- RapidSMS is open source, under the BSD license. There are no issues with our use of it, and we are free to extend it when we need to for a particular project. We then have the opportunity to contribute our changes back to the RapidSMS community.
- RapidSMS is vendor-neutral. We can build our applications without being tied to any particular vendor of text messaging services. That's good for multiple reasons:
- We don't have to pick a vendor before we can start.
- We could change vendors in the future without having to rewrite the applications.
- We can deploy applications to different countries that might not have any common vendor for messaging services.
It's worth noting that using RapidSMS doesn't even require using an Internet text messaging vendor. We can use other open source applications like Vumi or Kannel as a gateway to provide us with even more options:
- use hardware called a "cellular/GSM modem" (basically a cell phone with a connection to a computer instead of a screen)
- interface directly to a phone company's own servers over the Internet, using several widely used protocols
Summary
RapidSMS is a good fit for us at Caktus, it adds a lot to our projects, and we've been pleased to be able to contribute back to it.
Caktus will be leading a workshop on building RapidSMS applications during PyCon 2015 on Tuesday, April 7th 3:00-5:30.