Thank you for your interest in contributing to ISREN! Included are some general rules to follow that will help ease the contribution process.
Before reporting bugs, please ensure the bug was not already reported by searching the open issues. If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
Note: Due to the nature of this program and the data usually contained within git repositories, caution should be exercised when sharing program output. It is advised that you scrub any identifying/confidential information before sharing any output generated from ISREN.
When fixing an outstanding issue:
- Open a new pull request with the fix.
- Ensure the pull request description clearly describes the problem and
solution. Include the relevant issue number if applicable (e.g
closes #14
) - Please familiarize yourself with the Code Changes section of this guide.
ISREN should utilize LTS dependencies where possible to ensure minimal turbulence in-between releases. Dependencies should only be added to the project in rare occurrences, when their functionality would take a considerable amount of time to replicate, e.g. adding support for a new service.
ISREN is an Acronym, so for consistency it should only appear in two different variations:
- When appearing as a name, it should be displayed as
ISREN
- When appearing in a code example, it should be displayed as its literal
executable name
isren
ISREN is heavily tested, and it should remain that way to maximize system reliability, and minimize the amount of manual intervention required for testing new features. If you are contributing a new feature or functionality, please include applicable tests to ensure any future developer can't accidentally break core functionality. ISREN currently has <95% test coverage, all contributions should aim to keep or improve that coverage.
The tests can be run with the npm script test
: npm run test
Test coverage can be calculated using the npm script coverage
:
npm run coverage
This project uses Prettier for code formatting and can
run with the npm script format
: npm run format
All formatting errors should be resolved before a merge is accepted.
Note: The formatting script is configured to overwrite files, so it's recommended that you save all your files before and after running it to ensure git picks up the changes.
This project uses eslint for code linting and can be run
with the npm script lint
: npm run lint
All lint errors should be resolved before a merge is accepted. Lint issues should not be fixed with lint ignores. Very obscure lint edge-cases will be judged on a per case basis for lint ignore consideration.
All pull requests should be created off of the master branch, so they represent the latest version of code. It is common to fall behind during periods of active development. Please ensure your branch is up-to-date with master when you seek review and acceptance.
If you have issues pulling in the latest code, please reach out for assistance.
Upon successful merge, commits will be squashed. It is important to capture contextual information in each pull request, so it is requested that you make meaningful commit messages so that we have context when reviewing changes, for the initial merge or when debugging in the future.
Each change to ISREN should contain an entry in the CHANGELOG.md file. Each new release should start a new unreleased section:
## [UNRELEASED]
This project adheres to
Semantic Versioning. Please keep this in
mind when making changes to the CHANGELOG.md file or
package.json
.
All changes to data flow or the internal structure of ISREN should be reflected in the README.md Data Flow Graphic and the link below.
The current graphic can be found on mermaidjs.github.io
Note: SVG rendering does not seem to accurately replicate the display from the website, so a cropped screenshot should be used.
By contributing to this project, you agree that your contributions will be licensed under the same terms defined in the LICENSE