I learned, through the BongoHive newsletter, about the ZOMIS technical training sessions that The Palladium Group was holding. A few months earlier, The Palladium Group (then called The Futures Group) had held a code-a-thon at BongoHive to get developers to contribute to the source code of the ZOMIS project. My curiousity was piqued and I decided to attend the two-day training at Ndozo Lodge in Chilanga. I did not quite know what to expect but am very pleased that I made the time to participate.
Attending the sessions, I learned about a lot more than just ZOMIS, so, if you don’t mind, I’ll take you on a short journey of how the project came about. Like tech, the development sector loves its acronyms. Many of them where new to me so I’ll try to be verbose to avoid confusion.
HIV/AIDS has greatly affected Zambia. Over the decades it has taken many of our best and brightest in their prime. As a result, Zambia has a significant population of children who have lost one parent or both. The development sector uses the phrase “Orphans and Vulnerable Children” or OVC to describe these children. Not all of these children are orphans because of HIV/AIDS but one can imagine a large number of them are.
The Zambia Orphans and Vulnerable Children Management Information System (ZOMIS) project came about after the US government made USD2,000,000.00 available in grant funding in 2012 through the United States Agency for International Development (USAID) Mission to Zambia. The goal of the project would be to build a system to collect OVC data and make it available to the Zambian government.
As I understand it, the grant was awarded to the Expanded Church Response (ECR) Trust Zambia. ECR would oversee the project and eventually hand the finished software application to our Ministry of Community Development Mother and Child Health (MCDMCH). They selected The Palladium Group to develop the application.
This is a broad-brush description of two years of planning, research, evaluation, building, testing, getting feedback, iterating and training. ZOMIS will be handed over to the Zambian government in September 2015. When it goes live, the application will be available at the URL: zomis.mcdmch.gov.zm.
The USAID project that conceived ZOMIS ends this September. As such the software is being handed over from ECR and The Palladium Group to government at our Ministry of Community Development Mother and Child Health. The training was partly to allow students and private software development firms to have a look at the application with the possibility of becoming support providers in the future. The details had not been ironed out but this would be getting in on an opportunity at the ground floor as they say in the investment world.
The database component of ZOMIS is very intricate (one might even say complicated). The database designer, Elaine Blake, from Palladium did an incredible job of modelling and breaking down entity relationships and building data models. Attention was placed on longevity and integrity of the database structure with a great deal of emphasis put on SQL and queries. I couldn’t help think about the NoSQL movement and whether say a document store approach could have worked just as effectively. In development and production the PostgreSQL database server was used.
ZOMIS itself is a Python application built on the Django framework by Zambian developers employed by Palladium. Among them are Mushashu Mwansa Lumpa and Paul Kaumba. Testing was done by a person we were only ever introduced to as “Mdu”, in South Africa (whom none of the development team have actually met in person). Development of the SMS functionality for ZOMIS was done with RapidSMS by BlueCode, a software development company started by André Lesa.
The front-end of the application was done with Bootstrap. It would seem that a mobile-first approach could have been taken but was not. As such there are some interface and design bugs that still need to be ironed out.
I was excited at the fact that ZOMIS was developed by a distributed team. I think Zambia would do well to embrace distributed work. While it is not for everyone, I feel it opens up lots of opportunities.
The source code for the project was managed in Git and at the time of writing lives on private BitBucket repository. There were hints at the possibility of the project being Open Sourced. I’m biased but hope this becomes a reality! The production server runs an Apache web server on Ubuntu Linux Server 14.04 LTS.
I was looking forward to learning about the DevOps side of things like managing database migrations, deployment scripts, server provisioning, dependency management and configuration management. For pragmatic reasons, though, deployment of ZOMIS is done by a simple
git pull command.
Ndozo Lodge provided an adequate venue. Their generators allowed us to be oblivious to load-shedding for a few hours. The Internet, however, was down for the entire workshop (I had a 3G USB modem handy as backup—thanks MTN). The location, however, was a curious choice. I felt it was too far away from the general populous to attract the target students and software development firms.
Doing projects at national level seems to be a lot about getting people on the same page. I admire the dedication shown by ECR to move the project this far. I did not get the sense that government moves quickly and am interested to see how the hand-over goes. Perhaps government would be more motivated to move fast if they were footing the bill.
Overall, I thoroughly enjoyed the technical training and shared my excitement using the #ZOMIS hashtag on Twitter. It was refreshing to learn just how much Open Source software was used to execute the project. I was particularly proud that local software developers built the software using industry standard tools and methods. I left with a sense that local talent, while in short supply, is stepping up to the challenge. This is something I’ve been waiting to see for a long time.