Dedicated Engineering Team in South Africa Deploys Open Source Tools, Save Lives

Simon de HaanIn 2006, a groundbreaking TED talk used statistics to reveal surprising insights about the developing world, including how many people in South Africa have HIV despite free and available anti-retroviral drugs.

Gustav Praekelt, founder of Praekelt.org, heard this TED talk and began tenaciously calling a local hospital to convince them to start an SMS program that would promote anti-retrovirals. The program that resulted from those calls became txtAlert—a successful and widely recognized mobile health program that dramatically improves medical appointment adherence and creates a free channel for patients to communicate with the hospital.

Today, nearly a decade later, the organization that Gustav founded in 2007, Praekelt.org, continues to harness the power of mobile technology.

The global nonprofit organization uses open source technologies to deliver essential information and vital services to millions of people around the world, particularly in Africa. We are deeply committed to the idea that our software innovations should be shared with the development community that made delivering our products possible. By participating and giving back to this community we support and sustain the rich ecosystem of tools and products that they have developed to improve the lives of people around the world.

Praekelt.org is a supporter of the Principles for Digital Development and in particular Cause 6, which states:

  • Adopt and expand existing open standards.
  • Open data and functionalities and expose them in documented Application Programming Interfaces (APIs) where use by a larger community is possible.
  • Invest in software as a public good.
  • Develop software to be open source by default with the code made available in public repositories and supported through developer communities.

A great example of this can be found in our original work to make population-scale messaging possible in the majority world. We had and continue to have success with txtAlert in South Africa, but despite considerable interest, replicating this success in other places has been very challenging. The necessary integration work required for each new messaging service provider requires too much customization.

To solve this, we created Vumi, a software library that provides a single point of integration for messaging communication channel integrations. It abstracts away all of the differences that require the customized integrations and provided a single consistent API to speak to all of them. The result is a dramatic increase in the re-use of both integrations and applications because they were only needing to be written once and could be used widely.

Vumi provides the means of integrations, and this past year in collaboration with UNICEF we have launched Junebug, an application server that provides APIs to launch Vumi integrations, enabling direct messaging system integrations in both cloud- and on-premise-based scenarios. Junebug now powers national-scale, maternal health programs in South Africa, Nigeria, and Uganda, delivering essential information for expecting women and mothers. It also provides SMS and Unstructured Supplementary Service Data (USSD) access to vital services, such as national helpdesks and FAQ services.

These systems have processed over 375 million real-time messages in the last year.

We are a relatively small engineering team based out of South Africa. We could not fathom developing these services were we not standing on the shoulders of giants. All of the services we provide or build on are available as open source software.

Our language of choice is Python, which enables us to express our ideas in code succinctly and in a way that is both readable and maintainable. Our messaging systems are built using Twisted, an excellent event-driven network programming framework built using Python. Molo, our web publishing platform, is built using Django, and the wonderful open source Wagtail CMS is built by our friends at Torchbox.

Our three-person site reliability engineering team is able to run over a thousand applications in production by relying on Mesosphere's Marathon for Apache Mesos. We have recently released Marathon Acme, which enables automatic SSL/TLS certificate provisioning via LetsEncrypt for Marathon's load balancer, ensuring our services are secure.

Our engineering team is distributed, and the workflow enabled by Git allows us to develop software in a reliable fashion. For example, by using test-driven development we are able to automate our deploys. Using these open source tools and systems we've averaged 21 automated deploys a day over the course of 2016. Developing software in an open environment is easier and more effective. Our work would have been significantly more difficult had there not been such an active and vibrant community on which to build.

We are excited to be part of these developments in open source technology integration. As a mission-driven organization we are deeply committed to continue sharing what we learn and develop. If you are interested in joining our team, apply here. Our open source repositories have documented OS licenses and contributions guidelines. We welcome any community contributions. Please email us at [email protected].

Dedicated engineering team in South Africa deploys open source tools, save lives was authored by Simon de Haan and published in Opensource.com. It is being republished by Open Health News under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0). The original copy of the article can be found here.