Adhere to the functional programming style, namely no mutations. The linter will mostly enforce this.
let
; use const
for
loops; use map
, filter
, reduce
See existing code if you are unfamiliar with this approach. Support will be offered to those new to this style, but a willingness and effort is required. Do not claim an issue or submit a Pull Request if you are unable or unwilling to adhere to this requirement.
Here are some code quality requirements:
All of these requirements entail judgment calls. There is no clear cut rule of what is right and wrong. Good judgment is contextual and based on experience. Preserving code quality is just as much a part of the task as completing requested changes. Please count on critical discussion during code reviews. The stances of "it works" or "it's good enough" or "that's beyond what I was asked to do" will generally not be considered valid objections to these requirements.
The project uses 2 spaces for tabs. Please make sure your editor settings match. If you have the editorconfig extension in your editor, it will automatically use these settings.
All contributions must be submitted through public pull requests on the repo at https://github.com/cybersemics/em. This is typically done by forking the repo, creating a new branch, making your changes, pushing your branch to your fork, and then opening a Pull Request against dev
from the GitHub interface. All pull requests will be reviewed and feedback will be provided.
Pull Requests that solve the given issue but introduce a regression (that is, break or remove functionality) are not considered solutions and will not be accepted. Preserving existing functionality is an implicit requirement. If a regression is discovered after a Pull Request has been merged, you may be asked to go back and fix the regression.
Here is an example of a Pull Request where the contributor believed they had completed the task, despite having introduced a bug that was not there before: https://github.com/cybersemics/em/pull/154.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Generated using TypeDoc