Contributions to this project are always welcome. To keep things consistent, please follow these guidelines when contributing to the project.
We generally only accept contributions with well-documented code. This includes comments in the code, external files explaining certain aspects if necessary and so on.
If you aren't good in English, that isn't a problem. We'll be more than happy to provide any assistance necessary in a PR, as long as we understand what it's about. We will, however, not document your code for you, so please understand that we won't accept PRs where no effort was put into documenting the code.
This project uses automated tests to ensure stability, as it is meant to be deployed on production servers. Therefore, all changed/added features have to include unit tests covering
- standard cases (what should happen)
- edge cases (documenting responses when something unexpected happens)
Please also understand that small updates (increasing the patch version number) may not to changed results in unit tests, as this could create compatibility issues (see the Compatibility section below)
Don't add dependencies unless absolutely necessary (and even than, be prepared for it to get declined). As mentioned above, this is meant to be deployed on production servers. As every new third-party-dependency adds potential vulnerabilities to the project, this should be avoided if somehow possible.
If an issue exists for the task, please assign yourself in it and clearly state when you begin and stop working on it to let everyone know what's being worked on/ what's not assigned yet.
Contributions may exist as PRs to the develop
branch (and for hotfixes only to the master
branch) only. They have to get reviewed and merged by members of the GitHub organization.
If you are a member of the core team (i.e., a member of the organization here on GitHub), contributions may be done directly in this repository via a branch from the develop
branch. While this is not enforced, please see the GitFlow workflow as a recommendation for contirbutions.
If you are an external contributor, please fork the project and work locally in your account, and then create a PR following the guidelines above.
Releases may get created by the mainainers of the project (and team members empowered by said maintainers only). They have to follow the guidelines and workflows mentioned below.
Versioning numbers should follow the semantic versioning 2.0.0 pattern (or, for tags, a sematnic versioning number including a prefix v
).
Hotfixes, as proposed by the GitFlow workflow, get merged directly into the master branch. As soon as they are merged, the process for releasing a new version below has to get implemented.
Hotfix releases may never create compatibility issues (i.e., break or change tests) and should only get used when necessary.
This should get used for high-priority fixes only.
Feature releases are merges from develop
into master
. As soon as this gets merged, the process decribed below has to get implemented.
All compatibility changes must be clearly documented in the release notes.
- Merging the releavant branch (
hotfix-*
ordevelop
) - Commit and push to
master
a commit bumping the version number (package.json
) with PATCH for hotfixes and MINOR for feature releases. The commit message should beIncreased package version to vX.X.X
- Run CI tests for the commit
- If all tests and requirements pass, continue with step (8)
- Revert the commit
- Inform about failed release in the PR for the release, e.g.,
develop->master
- Go to step (10)
- Create a tag with the format
vX.X.X
for the commit and create a GitHub release including release notes - Publish new package version to npm (if applicable)
- Merge
master
intodevelop