GitHub for Cities

A city is the ultimate systems engineering challenge, which is what makes it so attractive to designers and engineers. As problem solvers, we are drawn to the complexity of city life and its many challenges.

Just a note: if you’ve never used GitHub, you might want to stop here and go read this introduction to what Git is. While I did write it for as non-technical of a reader as possible, this essay will make a lot more sense if you know what forks and pull requests are.

I think the challenge of building a better city is a perfect use for GitHub. The platform really excels in opening information, showing who contributed what and allowing anyone to jump in. GitHub for cities could open up everything from GIS data and official contact information to unofficial lists of volunteers and individuals with an interest in community projects. The crowdsourced nature of a GitHub repository seems like a great platform for launching community projects.

It just feels natural to me. In the tech community, we’re on GitHub every day, building little pieces of software that solve problems. We’re forking solutions to common issues and merging in fresh perspectives. We’re giving power to individuals while harnessing the collective power of collaboration. Why shouldn’t be doing the same with our cities?

We’re engineers, problem solvers who like to make things that work. Well. GitHub was designed for groups of people working together to make things that work well. With all it’s geek-factor, it’s also an incredibly powerful way to transparently store and collaboratively edit any type of information. Information that enables community projects shouldn’t be a stretch.

We can start with hard data. Statistics and fact like population and tax revenue pulled from open sources like the census and city offices could be stored as JSON for ease of use. On top of this data, the community at large can build visualizations and reports, a GitHub pages site built with Middleman or Jekyll that presents the data in an accessible way. Then we add a directory of markdown files that contain articles and abstracts—even research—based on of these reports. It becomes a open, transparent, collaborative store for community information.

Another directory contains proposals for projects and improvements, written as Markdown, of course. The best part, though, is the core of the GitHub community: issues, forks, and pull requests. Through a well planned issue-tagging system, any member of the community can suggest that an revision be made, request that a specific piece of information be added, or toss out an idea that might form the basis for a future proposal. But this is the power of GitHub: Anyone can suggest a change; anyone can make the change themselves.

The power to take matters into your own hands is only a fork away. By creating a copy of the entire community repository, any member of the community can go beyond a simple suggestion and make the edit themselves. That edit lives in a copy of the main project, but the two versions are linked to each other. If the edit adds value, a pull request lets the administrators that there are changes to merge with the main repository.

And that is where the GitHub advantage lies. If an administrator rejects the pull request, the edits still exist as a fork. This is grassroots collaboration at its most fundamental level. It’s theoretically accessible to anyone and puts ownership into the hands of everyone involved.

This GitHub for cities idea really seems to make a lot of sense, but if you—like me—are equal parts intrigued and skeptical, you can follow my efforts to get my city on GitHub. It promises to, at the very least, be an interesting experiment.