KalSMS Growing

It’s been a good first year for KalSMS, which I’m particularly happy about since I didn’t really have much time to work on it myself (nor, evidently, on this blog). It truly took on a life of its own.

In India, Sheldon D’Souza was using it to power a food ordering startup and contributed some polling code to the codebase (it’s still in a separate branch, I really didn’t have much time for non-work stuff).

In Liberia, local activists were using John Etherton’s Ushahidi KalSMS plugin to track conflict indicators and humanitarian needs.

I had the opportunity to give a talk on KalSMS at the inaugural Dar es Salaam GTUG meeting. Allen Machary, one of the engineers I met in Tanzania (an impressively sharp and passionate group, btw), later joined Bienmoyo and ended up using KalSMS for part of a mobile pregnancy care program he was working on. Here’s a photo I got from Lushen Wu, Allen’s colleague, of a training session in Tanzania.

KalSMS is not pictured, but is somewhere around here

I’ve been hearing from people interested in putting it to various other uses: cross-network SMS service in Poland, salsa club promotion in LA, activists communications in Northern Africa, marketing for a fashion boutique in Finland and so on. Who knows how many of these got built, and how many others I never heard of.

All that has been a pleasant surprise, since about a month after I released KalSMS Ushahidi project launched SMSsync, which has similar goals and obviously much more resources behind it. With my rapidly shrinking spare time and negligible Java skills, I assumed KalSMS was done for. But people still seemed to find a use for it, and improve it.

I was particularly happy to get an email recently from Jesse Young of Envaya, who have taken the codebase and added a LOT of functionality. Envaya’s version is now out as EnvayaSMS, the history page lists the major features they added.

If you’re looking for new features, EnvayaSMS is your best bet. I’m still going to keep KalSMS up, with minimal maintenance, in the same place, and it’s also out on the Amazon Appstore now for easier download. There may be a place for having a minimal feature and the super-simple UI it enables.

When I get some free time, I might integrate some of EnvayaSMS new features down to KalSMS, keeping the UI minimal. If Python/Ruby/etc on Android ever become viable I’d be happy to rewrite the whole thing in a language that doesn’t feel like it was designed by a committee of lawyers.

It’s been a fun ride so far. It’s a great feeling to see my code gets picked up and used all around the world, and have much better programmers than myself take it places I never thought it’ll get. Thanks everyone. Keep KalSMSing.

KalSMS

KalSMS is a small Android based SMS gateway I’ve released as open source. “Kal” is a Hebrew word meaning “lightweight” and “easy”, so it fits KalSMS’ primary goal of being very easy to install, maintain and work with.

KalSMS is a very thin layer between SMS to HTTP and back to SMS. For example, a simple SMS weather service works like this:

  1. A user sends an SMS “weather 10026” to a phone running KalSMS
  2. KalSMS intercepts the SMS message, and sends it to pre defined URL. In this case http://qkhack.appspot.com/weather?msg=weather+10026
  3. In this URL, a script uses Yahoo!Weather API to get the weather forecast for zip code 10025, and formats an XML response like:
    <reply>
      <sms-to-sender>
        Fair 37F today, Mostly Clear 34F tomorrow, Partly Cloudy 37F Friday
      </sms-to-sender>
    </reply>
    
  4. KalSMS parses the response, and sends an SMS back to the user with the weather forecast.

In effect the phone running KalSMS has now become an SMS server, running a weather application.

I’ve been working recently on applications that are meant to be used in places like India and Africa. This taught me that (a) SMS is accessible by a LOT more people worldwide than the web, and (b) it is MUCH harder to build an SMS app than a web app.

KalSMS tries to help this by leaving the heavy lifting to a web app, and just providing a simple, as thin as possible layer between SMS to the Web and back again. This means developers can work with the tools they already know, use state of art technologies like Heroku or App Engine that make launching a web app extremely simple and cheap, and just use an Android phone to enable the SMS part.

Current solutions require either collaboration from a local cellular provider, often a challenge for low budget projects, or setting up your own server – that is, an actual computer running the SMS gateway software connected to a cellular modem. This is non-trivial to install and maintain, and since the solutions out there are tightly coupled you have to write your actual application in a specific language or framework dictated by the SMS solution.

By being Android-based, KalSMS installation is a matter of scanning a barcode, maintenance means keeping the phone working – something almost all people in the world now know how to do. Basically an Android phone with KalSMS replaces a computer, network connection, cell modem, a UPS system and whole bunch of software.

I’ve got plenty of opinions on aid efforts and their effects over the years, but in keeping with the unwritten “produce or shut up” motto of this blog I’ll just say I think things will start to improve when more people pay attention to Bill Easterly than Bono. In my corner, I hope hackers will use KalSMS for various projects simply for its simplicity and reliability – and perhaps in time will seep into the developing world projects I had in mind when building it.