layout | title |
---|---|
default |
The Popolo Project |
This project's goal is to author, through community consensus, international open government data specifications relating to the legislative branch of government, so that civil society can spend less time transforming data and more time applying it to the problems they face. A related goal is to make it easier for civic developers to create government transparency, monitoring and engagement websites, by developing reusable open source components that implement the specifications. Although the data specification is designed primarily for open government use cases, many other use cases are supported.
-
This project rigorously researches and studies existing specifications and reuses suitable existing work wherever possible. It looks for existing specifications that balance breadth of adoption with quality of modeling. It prioritizes reuse over novelty.
-
This specification satisfies a broad range of use cases, without requiring an exhaustive vocabulary of terms. It focuses on flexibility to do more with fewer terms.
-
A fact that many specifications overlook is that our knowledge of the world is imprecise and uncertain. This specification attempts, as much as possible, to make it easy to represent real world data while preserving clarity and meaning.
- Examples of imprecision and uncertainty:
- Imprecise date
- Missing contact details
- Ambiguous bill sponsor
The high-level specification development process is as follows:
- Identify use cases and requirements for a specific activity system.
- Research existing specifications that fulfill the use cases and requirements.
- Author a specification and related documentation that respect the principles.
- Iteratively improve the specification.
Specification development works by an open process and by rough consensus. Participation is open and free to all.
Jump to a section below or start at the beginning.
- Scope
- Conformance
- Use cases & requirements
- Standard reuse
- Classes and properties
- People and organizations
- Geography
- Motions and voting
- Serialization
- Change history
Appendices
- Example Popolo JSON documents
- Multilingualization
- Adding metadata
- Handling duplicates
- Survey of existing specifications
- Inventory of terms from the survey
- Data model patterns (semantics, succinctness, edge cases)
- JSON serialization patterns (embedding, simplicity)
- Best practices for software components (document identifiers, database isolation)
Participation is free and open to anyone. These documents are Working Drafts. Their governance roughly follows the W3C process.
- Join the W3C Open Government Community Group and subscribe to its mailing list to discuss the project's development
- Visit the GitHub repository, discuss open issues, and create pull requests
- Read Open North's blog post announcing the project for more context
Questions? Contact [email protected].
- Pupa by Open Civic Data: A Python package to create and validate civic data objects, underpinning the Sunlight Foundation's work on government transparency at the local level.
- PopIt by mySociety: A Node.js package to make it simple "to start and maintain a public database of people, organisations and positions," part of mySociety's work on reusable software components.
- django-popolo by Openpolis: A Django app that provides basic models and views for all classes in Popolo for use within a Django project or Openpolis' REST API.
- Pupa.rb by Open North: A Ruby fork of Pupa that implements an Extract, Transform and Load (ETL) process to scrape data from online sources, transform it, and write it to a database.
- Popolo Engine by Open North: A Ruby on Rails engine that provides basic models, controllers and views for all classes in Popolo.