Open source work for the Shuttleworth Flash Grant

In May, 2016 I received a Shuttleworth Flash Grant thanks to Shuttleworth fellow Adam Hyde. This was a surprising, exciting grant that gave me an opportunity to work on open source for at least a month without needing to split time with contract work.

My plan was to improve EditData with the flash grant, but as I worked on EditData I realized there were two related projects that I needed to work on as well: township and staticland.


I started work on rewriting editdata modules using bel, a great library for creating DOM elements in a manner similar to react, except it uses standard JavaScript syntax & features rather than JSX, and is a much smaller, simpler module.

I found that I needed more time to figure out how best to migrate these modules to use bel, and decided that township and staticland would be better uses of my time.


Township in particular is something that I've needed on multiple projects. Township is a collection of modules for building authentication and authorization systems using Node.js and leveldb. As part of this grant I produced:

Recently contributors have joined the project and helped to create:

I created township because I found existing projects like passport challenging to use, and were mostly focused on the express framework, which I don't use. I also considered using auth0, but preferred self-hosted solutions for managing auth credentials, and didn't have a great time using their API clients.

Township emulates the approach of auth0, while keeping the JSON API and associated API clients as simple as possible.


While developing editdata, I discovered that I needed better static site hosting for publishing all the small dataset projects I work on.

I was using both GitHub Pages and at the time, but GitHub Pages doesn't allow SSL for custom domains, and charges a per-site fee to allow SSL for custom domains.

Let's Encrypt had just recently started offering public registration and certificates, so I decided it would be a good time to create an open source alternative for hosting static sites that automatically have free SSL certificates via Let's Encrypt.

I created staticland as a simple way to publish static sites that automatically get SSL via Let's Encrypt. You can see the code on GitHub, and are free to host the staticland API server yourself.

Staticland uses township modules for authentication.

Next phase

Over 2017 my next phase of work will include using editdata, township, and staticland modules together to create new services.

First I'll be migrating the editdata modules to bel, breaking staticland code into smaller modules, and creating higher-level township modules.

Next I'll experiment with creating web apps that combine the data management of editdata, the static sites of staticland, and the user management of township.

See also