Notice F2: Shelf readiness with a focus on building local capacity and new teams.

Improving the CommCare Installation Process using Containers

Two-sentence Overview: 

The goal of this project is to decrease the complexity of installing CommCare on a single server (“monolithic deployment”) so that independent teams are able to quickly and easily get started with a deployment of CommCare and begin collecting point-of-care data, which will be achieved by containerizing a full deployment of CommCare. Dimagi’s experience deploying and maintaining CommCare on varying infrastructure platforms, including both cloud-hosted and bare metal machines, uniquely position the organization to make this deployment process more accessible for teams using a wide array of infrastructure modalities.

Executive Summary: 

At the end of this project, we aim to have a fully deployable application of CommCare which may be installed on a small (32GB memory, 2TB drive) server. In addition, this process will be documented on an externally-available technical documentation site so that independent teams may download, install and upgrade this container as new versions are released. Finally, we will institutionalize a process for maintaining this container alongside rolling CommCare releases so that teams will consistently have access to the most current version of application code.

The investment from Digital Square will go towards: (1) software development time to select an appropriate open-source containerization tool, implement the monolithic container, test the application deployment process and document using the container for independent teams, and (2) project management time to oversee this work plan.

Dimagi will build on its expertise in DevOps and the implementation of sustainable tools in order to execute this work. CommCare deployments normally use the US-based CommCare Cloud hosted instance of CommCareHQ; however, Dimagi supports organizations and governments to transfer the CommCareHQ instance to an in-country hosted server. Dimagi has helped to set up and maintain servers in Nigeria, Uganda, Kenya, India, Bangladesh, Burkina Faso, Senegal, Ethiopia, and Zambia. The process of deploying CommCare and migrating between instances involves multiple touchpoints including local hardware procurement, software installation, data migration between instances and ongoing maintenance of hardware and software. These server deployments have been both locally and remotely supported and involve close collaboration with locally-based engineers and technical experts to ensure that capacity is adequately built to support ongoing, local sustainability. Further investment in the process of deploying and maintaining a containerized version of CommCare ensures that these instances are designed to be sustained within an evolving data ecosystem. 

Consortium team: 

Founded in 2002, Dimagi has been operating as a leader in digital solutions for 20 years. Dimagi is a B-corp certified, award-winning, socially-conscious technology company that supports partners to use technology to strengthen their programs, services and outcomes for vulnerable populations. Dimagi operates an inhouse non-programmer configurable platform CommCare on which we design mobile technologies to perform case management, decision support, data collection and monitoring and evaluation. We take a product platform approach to our ICT projects ensuring longevity and support models that are sustainable over the long-term.

As a small but growing business with a blend of expertise in ICT, Dimagi is able to rapidly iterate and adapt mobile technologies and reporting to the local environment, enabling appropriate, scalable solutions for organizations working to improve the lives of underserved communities through better data collection and dissemination. The majority of our partners opt to use Dimagi’s cloud servers; however organizations and governments increasingly express interest in or are required to locally host their digital solutions. When the need for locally hosted applications is identified, the Delivery and Technology Teams work in concert to design a program plan for local capacity building and the implementation of locally hosted servers and applications environments. We have found this three-phased approach to be the most successful:

● Phase 1: Infrastructure Procurement & Resourcing 

● Phase 2: Installation and Set-up 

● Phase 3: Hosting Support and Capacity Building

This work will be conducted in collaboration with Terre des Hommes (TdH). TdH was founded in 1966 and since its inception 56 years ago, it has supported and run hundreds of development and humanitarian aid projects to improve the living conditions of the most underprivileged children, their families and communities in 69 countries in Africa, Asia, Europe, Latin America and the Middle East. TdH and Dimagi have a long history of collaborating on programs together, with Dimagi’s expertise in technology complementing TdH’s expertise in sustainable service delivery for child health. As part of their Integrated eDiagnostic Approach (IeDA) in Burkina Faso, TdH partnered with Dimagi to create a tablet-based application known as the Electronic Register of Consultations (REC). Built on Dimagi’s CommCare platform, the REC aims to increase nurses’ adherence to IMCI protocols and improve their quality of care by providing enhanced decision support and case management capacity. TdH has already worked with Dimagi to transition to local hosting of CommCare in Burkina Faso, which is key experience we will build on together as we refine local hosting as a shelf-ready offering for all of our partners. 

The vast majority of the work will be led by the Dimagi team with the full TdH team based in Burkina Faso providing feedback on the local installment. Dimagi’s team will be comprised of a project manager, a senior engineer, and a senior advisor. 

Senior Engineer: Norman Hooper brings more than 20 years of software engineering experience to the team. He has been an engineer at Dimagi since 2014, where his focus is on interoperability, including FHIR and OpenHIE standards. 

Project Manager: Michael O’Donnell is the director of Solutions Delivery at Dimagi. He provides technical program management expertise on our most strategic projects and 

Technical Advisor: Mary Rocheleau is the Associate Director of Technology Solutions at Dimagi. She is an experienced product and engineering manager who specializes in working with users to translate user requirements into organizational vision and actionable product specifications ready for development

Senior Technical Advisor: Ismaila Diene is based in Senegal and has been key to our continued relationship with our proposed partner, Terres des Hommes. Ismaila will provide overall guidance in the execution of the project, and will also be key to how it is further leveraged as a more broadly available offering.

There are, of course, circumstances in which project teams may change. Reasons may include shifts in timeline that do not align with a team member’s availability or even a change in required skills based on what we find during requirements gathering. In the case where Dimagi needs to replace a team member, Digital Square will be informed immediately. We will share the CV and qualifications of the new team member for your review. 

Project Description: 

As data ownership and local sustainability becomes increasingly important in our ever connected world, many of the partners and governments with which Dimagi works need locally hosted solutions; however, local hosting requires significant on-the-ground technical capacity and is presently a very cumbersome technical solution. With funding from Digital Square, Dimagi will leverage the work done in Burkina Faso with TdH to make local hosting of CommCare instances globally applicable and more accessible, regardless of the size or complexity of the deployment. 

An application container is a package of software, the operating system libraries, and all necessary dependencies required to run the software, entirely agnostic of the hardware on which it is deployed. This separation of hardware and software ensures that a given container may run in an identical way on either bare metal, cloud or virtual machines. This dramatically improves the process of installing and maintaining CommCare by ensuring that each deployment is consistent, regardless of installation hardware. Application administrators may monitor, upgrade and test containers independently from application software releases, further distinguishing the devops activities associated with maintaining a large software platform from any potential bugs in the application code itself. Furthermore, the process of troubleshooting and updating releases is less complex, thus ensuring that hardware management is entirely independent of software considerations. 

Dimagi seeks to implement a container of CommCare suitable for a monolithic (single-server) deployment so that teams installing CommCare locally experience less friction during initial setup, are more easily able to maintain their instances, and are able to quickly and easily deploy updates to the software package. In addition, this container may be installed either as part of an Instant OpenHIE deployment, or independently as part of a complex data collection ecosystem on the same, or different, hardware infrastructure as is running other data components. 

To design a fully containerized instance of CommCare Dimagi will divide this work into several phases with checkpoints and deliverables during each phase. The team relies on agile methodologies to accomplish activities over the course of a project; in order to achieve the goals the team will create a project roadmap and backlog of items to prioritize during sprint planning meetings. 

First, Dimagi will evaluate possible open-source containerization tools along several axes including maintainability, ease of use and availability of support and open-source documentation. After this assessment, Dimagi will fully implement a monolithic container of CommCare, including documentation, installation instructions, and maintenance planning. Key considerations during this phase of development include managing software versioning and releases within the container, the process for optimizing build time by leveraging the containerized cache, and baseline hardware specifications for running the container. In addition, Dimagi will implement and test the process for releasing a new software version, tagging a new container, deploying this upgraded container and installing the new release on an existing containerized deployment. 

Finally, Dimagi will collaborate with the TdH technical implementation team to install CommCare using the developed monolithic container. This process will include logging all feedback, prioritizing suggested product enhancements and identified bugs, incorporating high priority changes, and re-releasing an updated version of the containerized deployment. This ensures that the application is usable and well-documented for access by an independent team. 

Deliverable timeline

Phase

Deliverable

Timeline

Identification of containerization tool

Go / no-go assessment on possible containerization tools. Documentation of known technical risks associated with the selected tool and mitigation strategies for each risk.

Weeks 1-3

Implementation of monolithic containerization

Container with a single version of CommCare is available for download. Full documentation for installing the container is included with the installation. 

Weeks 4-7

Implement and test upgrade process with new software version

Release a second version of CommCare, upgrade the existing containerized version and install the release. Full documentation for upgrading to a new point version of a containerized deployment is available.

Weeks 8-9

Independent test of containerized CommCare

Independent team performs full installation of monolithic CommCare containerized instance. Feedback, bugs and enhancement requests are documented and prioritized for continued development.

Weeks 10-12

 

Application Status: 
Approved - partially funded

Comments

- The full proposal needs to clearly show how CommCare is going to be aligned with Instant OpenHIE