The contribution guidelines are based on the guidelines provided by Software and Data Carpentry.
Stencila is an open-source community-driven project. We encourage and welcome contributions from all community members.
If you are comfortable with Git and GitHub, you can submit a pull request (PR). In Stencila we follow a commonly used workflow for contributing to open source projects (see also GitHub instructions).
If you have specific suggestions or have found a bug, please create an issue. If you have any issue related to security, please send us an email at [email protected], rather than create a Github issue.
If you don't want to use GitHub, please tell us what you think on our chat on Gitter or have your say on our our Community Forum.
By contributing, you agree that we may redistribute your work under our license. Everyone involved with Stencila agrees to abide by our code of conduct.
To run the director
locally:
make director-run
This will setup virtual environment installing all required packages. Note You need to have python3
and pip3
installed on your machine.
When you are running the director
for the first time, you will need to set up the database for Django. For the development we use sqlite3
. In oder to get that done:
make director-create-devdb
You should now be set up for development and access the development server at http://127.0.0.1:8000/
To run the director
in Docker:
make director-build director-rundocker
Note This will first build the Docker file (hub-director
) and then run director in that Docker container. If you make changes to the source code after you build the,
Docker file they will not be reflected in the container. You will have to rebuild it. Hence, it is recommended that you develop the Hub in your local environment.
To run the editor
locally:
make editor-run
Or, to run the editor
in Docker:
make editor-build editor-rundocker
The router
is configured to listen on port 3000 (to avoid clashing with other web servers which may already be listening to port 80)
make router-build router-rundocker
Now, you should be able to access the the Hub at http://localhost:3000.
Docker containers (stencila/hub-director
, stencila/hub-editor
, stencila/hub-router
) are used for deployment.
The general issues workflow is:
- Issue is raised and has
Bug
label set - A developer is (self) assigned to the Issue
- Issue is fixed, and when committed/merged to master, a
Awaiting Staging Release
label is added to the Issue - A release is done to staging (
hub-test
) - The Issue's
Awaiting Staging Release
is changed toStaging Test Required
- The Issue raiser tests the Issue in staging and removes the
Staging Test Required
Label- If the test is successful an
Awaiting Production Release
Label is applied - If the test fails, the Issue is assigned back to the developer, and the process starts again
- If the test is successful an
- After a release to production takes place, the
Awaiting Production Release
Label is removed and theProduction Test Required
Label is applied - The tester tests in production and then closes the Issue
You can chat with the team at our [community forum][community-forum], on Twitter @Stencila, Gitter, or email to [email protected]