Skip to content
A JSON schema for open-source project contribution data.
CSS HTML JavaScript Python
Branch: master
Clone or download

Latest commit

jaywink Add 'chat' to the 'participate' object (#107)
* Add 'chat' to the 'participate' object

The 'chat' object if given must supply an URL form
reference to a chat for the project. Optionally
it can also supply contacts in that chat.

* Add contribute.json to the list

Note currently it contains the IRC keys, since
Mozilla Observatory will otherwise give -5 points
until a Matrix chat room reference can be given to
point to the right Riot Web related room.
Latest commit a288196 Feb 12, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
app UnboundLocalError 'content' Oct 15, 2018
legacyredirect redirect stackato app to heroku host Jul 24, 2015
.buildpacks Change runtime to 3.6.6 and upgrade buildpack Sep 5, 2018
.gitignore Move SSLify to wsgi app. Add ProxyFix for https detection. Jul 24, 2015
.travis.yml Disable Travis Deployment Jan 9, 2019 Add Mozilla Code of Conduct file Mar 29, 2019
Gruntfile.js Deploy via Heroku. May 13, 2015
LICENSE Initial commit Aug 1, 2014
Procfile Deploy via Heroku. May 13, 2015 Add 'chat' to the 'participate' object (#107) Feb 12, 2020
contribute.json Fix #73, 72: Update contribute.json data Oct 14, 2016
knownurls.txt Add 'chat' to the 'participate' object (#107) Feb 12, 2020
package.json Deploy via Heroku. May 13, 2015
requirements.txt upgrade jinja2 Apr 16, 2019
runtime.txt Move to Python 3.6 on Heroku Sep 5, 2018
schema.json Add 'chat' to the 'participate' object (#107) Feb 12, 2020
setup.cfg travis test with py 3.6 instead Sep 4, 2018
stackato.yml redirect stackato app to heroku host Jul 24, 2015


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.

You can’t perform that action at this time.