As part of our work on OpenGovernment.org, we have researched, re-used and contributed to a number of open source, open government projects, including mySociety’s PopIt, a service for building a database of people, organizations and positions, and the Sunlight Foundation’s Billy, a framework for scraping, storing and sharing government data. A major barrier to increased re-use of these great open-source civic tools is the lack of agreement on how to name things. To give a very simple example: if one project calls a person’s name
name and another calls it
full_name, then if you want to write a project that builds on what mySociety and Sunlight have done, you need to write an adapter for each, which increases the overhead, complexity and maintenance costs of your project. Wouldn’t it be better if we all committed to a standard way of naming things, to maximize interoperability and make re-use that much easier?
To address this problem, we’ve published a working draft of Popolo, an open government data specification. In its first draft, Popolo is deliberately unambitious. It proposes a standard naming scheme for the basic pieces of any government monitoring website: people, organizations and the relationships between the two. The idea is that if the groups working on open source, open government tools can agree on a data specification for these basic pieces, then we can expand the project to cover things like bills, agendas and minutes, which have much less in common across jurisdictions and on which it is much harder to find agreement.
The ultimate goal of the project is to make it easier and quicker for civic developers to create government transparency and civic engagement websites, by offering them re-usable, well-documented open-source code. We want developers to be able to focus on what’s special about the governments they want to monitor, not on re-implementing features commonly found in open government websites. For example, we plan on reusing the Popolo specification ourselves to build MyCityHall.ca and MaMairie.ca sites in several Canadian cities.
This project is in line with (and inspired by) Tom Steinberg of mySociety’s proposals for a component strategy last July, in which he wrote, “The Components will talk to each other, and to the rest of the web using simple open schemas which will evolve as they are built. Where possible we’ll pick up popular data standards and re-use those, rather than building anything ourselves.” Indeed, Popolo re-uses at least nine existing standards.
We have begun reaching out to other groups to make Popolo a truly community-driven specification, and we hope to move out of draft into version 1.0 in time for Transparency Camp. We’ve already got early feedback on our News Challenge idea about better data specifications. Popolo’s documentation is licensed under Creative Commons and is managed on GitHub. For the Ruby on Rails enthusiasts out there, there is an implementation of the Popolo specification as a Ruby on Rails engine on GitHub as well, for you to re-use in your projects.
Check out PPF’s corresponding announcement on their blog.