Nothing too draconian here but just on outline of how we can go about working together effectively.
Using the standard Scala3 dialect in Scalafmt as specified in scalafmt.conf should keep our code style uniform. If you'd like to add some rules to this document feel free to raise it on the discord chat to invite any feedback on any proposed style changes.
This is the general workflow for contributing to Sounds of Scala.
- Please perform your work in its own Git branch with a descriptive name that explains its intent.
- When the feature or fix is completed please open a Pull Request on GitHub.
- The Pull Request can then be reviewed by at least one core developer. Any contributor can participate in the review process, and we'd encourage this.
- After the review, please look to resolve issues brought up by the reviewers as needed (amending or adding commits to address reviewers' comments), iterating until the Pull Request is approved.
- Once the code has passed review the Pull Request can be merged into the distribution.
In order for a Pull Request to be reviewed it will need to meet these requirements:
- Adhere to current Scalafmt code standard.
- Follow the Boy Scout Rule.
- Be accompanied by appropriate tests.
- Be issued from a branch other than main or master
For the current scale of the project feel free to add Markdown documentation only in the event someone would need it to proceed.
Follow these guidelines when creating public commits and writing commit messages.
- If your change/feature has multiple commits please squash them.
- Aim for one commit per useful unit of change, each accompanied by a detailed commit message. For more info, see the article: Git Workflow. Additionally, every commit should be able to be used in isolation--that is, each commit must build and pass all tests.
The first line should start with 'SOS-' followed by a descriptive sentence about what the commit is doing, written using the imperative style, e.g., "Change this.", and should not exceed 70 characters. It should be possible to fully understand what the commit does by just reading this single line. Example: SOS-16: Add triplets to DSL.
If the commit is a small fix, the first line can be enough. Otherwise, following the single line description should be a blank line followed by details of the commit, in the form of free text, or bulleted list.