Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A JSON schema for open-source project contribution data.

This is currently a proposal and is not yet stable. Suggestions and pull-requests welcome.

This is the current draft. I'm presenting the schema as an example instance using mozilla/bedrock as the subject. Previous discussion can be found in the comments of the original gist.

    // required
    "name": "Bedrock",
    "description": "The app powering (most of)",
    "repository": {
        "url": "",
        "license": "MPL2",
        // optional
        "type": "git",
        "tests": "",
        "clone": ""

    // optional
    "participate": {
        "home": "",
        "docs": "",
        // optional
        "mailing-list": "",
        "irc": "irc://",
        "irc-contacts": [
        "chat": {
            "url": "irc://",
            "contacts": [
    "bugs": {
        "list": "",
        "report": "",
        "mentored": ""
    "urls": {
        "prod": "",
        "stage": "",
        "dev": "",
        "demo1": ""
    "keywords": [


We're currently using the JSON Schema standard and we publish our schema at schema.json.

You can, for example, use the json-schema-validator to validate your own contribute.json against this schema.

Flask app

There's a server-side app that is currently available on

Running the Flask app locally

# clone from the main repo
git clone

# go into the directory
cd contribute.json

# using virtualenv wrapper, create a new virtual environment for the project.
mkvirtualenv contribute.json

# intall the requirements
pip install -r requirements.txt

# install the npm dependencies
npm install

# generate the CSS files (use `grunt watch` to work on the LESS files)
grunt less

# You can run the app with
DEBUG=true python app

open http://localhost:5000/

NB! Most of the functionality is built as an AngularJS app.


To use Sentry you just need to create an environment variable called SENTRY_DSN and it will be used.