Maintenance, not magic: 15 years of a living codebase

As told through NEMO, for The Carter Center

Wonder what it’s like to work with Sassafras?

Long ago, in the year 2011, two software developers who would go on to found Sassafras Tech Collective started contracting on a project for The Carter Center (TCC). This open source software, called NEMO, allows thousands of workers to collect survey data in their own countries under any conditions – including offline in remote areas. TCC has used it to power their international campaigns against guinea worm and river blindness disease, to support democratic election monitoring, and much more.

To date, NEMO has:

  • 48,000+ user accounts
  • 250+ projects (missions)
  • 12+ unique languages
  • 3,000,000+ form submissions
  • 113,000,000+ survey answers

We’re immensely proud of the work that we have done on this project over the past 15 years. Rather than list the app’s features, we thought we’d offer a rundown of how uniquely “Sassafras” this project is, and how it highlights what we do best.

Planning for a legacy

From the beginning, The Carter Center wanted to contribute open-source software that could benefit more than just themselves. NEMO is one tool within the greater Open Data Kit (ODK) ecosystem, and several of our worker-owners have sat on the ODK advisory board over the years.

Rather than optimizing for next quarter’s profits, we make sure to consider every design decision for it’s long-term value. Every plugin we choose needs to be maintained and updated in the years to come. Efficiency has big payoffs.

Not every choice we made was perfect — we chose to be an early adopter of CoffeeScript to write cleaner code, but that choice was quickly made obsolete by other changes to the JavaScript ecosystem such as Babel.

If you make a novel choice for a dependency, it may not be the one that “wins.” In order to move forward, we had to decide between taking over maintenance of the underlying technology, or refactoring an entire chunk of work.

Then again, if a piece of software lasts long enough to have this problem, we consider that a win in itself!

Cashing in on tech debt

All code has “tech debt” which is an industry term for all the little chores that pile up as a result of not doing things cleanly or taking shortcuts to deliver features faster. Code can easily be written on a deadline, but this comes at a cost: increased tech debt.

On NEMO, we made it clear when certain choices would lead to future debt and planned for specifically addressing it. Whenever possible, we also took the time to clean up old code when it was related to new code that we were writing.

At Sassafras, we have a small team, which means we can manage the historical memory of our labor more readily than big tech companies can, with their churn of contracted employees and staff turnaround, siloed departments, and managerial bloat and overhead.

That’s a lot of servers

Health data is private and highly regulated. To keep data safe and located in-country, we’ve maintained at least 38 independent NEMO servers over the years, including as many as 28 servers operating simultaneously.

Each server has its own separate user base (typically workers who live in that country to do the survey work), forms (to ask locally curated survey questions in local languages), and admins. This was a unique challenge, since it’s unlike most “big tech” applications which share the same user base (consider how Facebook is accessible from the US or Europe: you have the same password and chat messages, regardless of where you sign in).

We’re passionate about hosting and maintaining independent open source infrastructure for the long-haul here at Sassafras, which makes us very proud to have done this work with NEMO.

Strengths of our cooperative model

The challenges of maintaining open source software for the long-haul are well known and documented. We have observed that many projects sustain themselves by building out a business attached to the software (managed hosting, for instance; or at worst, US military contracts) that funds continued development and maintenance. Other options are to hire one or more software developers to steward the project, to rely on volunteer labor from the open source community, or some combination of all of the above.

At Sassafras, our cooperative model opens up opportunities for different ways of working together, which addresses common pitfalls.

One of the keys to this project’s 15 years of success is avoiding staff burnout. As a cooperative, we’re able to flexibly assign ourselves to different projects and different roles as needed. Sometimes the source of a change is external pressure (“Workload is increasing, we need another developer on this please!”), and sometimes it’s internal (“I am feeling fatigue and other projects are demanding my attention, can I cycle off?”). Because we make these decisions collectively in our cooperative, we can easily adjust the distribution of our labor in response to these internal and external pressures.

For the price of one big tech worker’s salary, we have trained 10+ software engineers on how to develop for NEMO, efficiently fielded client feature requests, kept on top of infrastructure and security upgrades, and maintained a fleet of 38+ independent servers.

Take advantage of our flexibility and expertise, and reach out!