Rules / Guidelines⚓︎
Issues⚓︎
Follow these rules for project issues:
- An Issue should be created for every task that needs to be done.
- Issue titles should be concise.
- Issues should have labels if needed.
- Issues without body/description are acceptable if the task is small and can be described with a concise title. However, it's recommended to create a detailed issue.
- Big issues should be identified and broken into smaller plausible pieces allowing merges of related pull requests into the codebase piece by piece without breaking anything.
- Follow the issue template of the repository for creating detailed issues. Refer to this repo for examples of issue templates.
- Issues should contain single or multiple screenshots if applicable. Example: A frontend issue with a screenshot of the UI.
- Issues should contain code snippets or logs if applicable. Example: A backend issue with a log of the error or a code snippet that might be causing the error.
- Issues should be placed in the correct pipeline at all times (e.g.
Icebox
,In Progress
,Needs Review
, etc). Example: If you are working on an issue, move it to theIn Progress
pipeline. - You shouldn't assign yourself to an issue if you won't be working on it for some time. Doing so allows other team members to pick up the issue and work on it if they want.
Pull Requests⚓︎
Follow these rules for project's pull requests:
- Pull requests titles should be concise and self-explanatory.
- Pull requests should have labels if needed.
- Pull requests should have a detailed description of the code changes with screenshots and/or code snippets if applicable. Try to answer the following questions:
- What was changed?
- Why was it changed?
- How was it changed?
- Pull requests containing
HACKS
,WORKAROUNDS
orHOTFIXES
are not encouraged, however, if you HAVE to do it for a good reason, provide a detailed explanation of the change and potential bugs it might cause. - Conversations related to pull requests should be in the done in pull request comments or GitHub Discussions rather than slack or any other platform to keep it organized and avoid losing the conversation.
- Pull requests should be kept small and focused on the issue/ticket that is being addressed.
- Pull requests shouldn't have more than 300 line changes.
- Think of Single Responsibility Principle when creating pull requests. The pull request should focus on only one thing.
- Like issues, pull requests should be broken into smaller ones when possible.
- Big Diffs = Probably Problematic Pull request. Big pull request makes it hard to review code and find bugs.
- Every successful merge of a pull request to
main
/master
branch should bump version number following semver guidelines. Example: Before merge:1.1.3
→ After minor change merge:1.2.0
Code Reviews⚓︎
- First hour in the morning should be spent doing code reviews.
- Code reviews should provide constructive feedback with pull request comments.
Branches⚓︎
-
We recommend the following convention for naming branches:
<feat | fix>/<issue_number>-some-info Example: - feat/234-delete-order - fix/111-broken-button
Commits⚓︎
Commit Rules:
-
ALL COMMIT MESSAGES SHOULD FOLLOW CONVENTIONAL COMMIT GUIDELINES.
Why conventional commit guidelines?
- Automatically generate changelogs for your project.
- Automatically identify a semantic version bump which can be used for tagging and auto releases.
- Much more
Types
Type Description feat
A new feature fix
A bug fix docs
Documentation only changes style
Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) refactor
A code change that neither fixes a bug nor adds a feature perf
Improvements A code change that improves performance test
Adding missing tests or correcting existing tests ci
Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) chore
Other changes that don't modify src or test files revert
Reverts a previous commit Quick Examples
feat: new feature
fix(scope): bug in scope
feat!: breaking change
/feat(scope)!: rework API
chore(deps): update dependencies
-
Commit messages should be clear and meaningful.
Why is this important?
A well-written commit message is the best way to communicate context about a change to other developers working on that project, and indeed, to your future self. Furthermore, understanding the change made by a commit message makes development and collaboration more efficient.
-
It is preferred to write commit messages in present tense. Example:
feat: add Button.vue
instead offeat: added Button.vue
. Read more... -
Do not end commit messages with a period.
Testing⚓︎
- Write and maintain tests for any code changes.
- Each push to
main
/master
branch should improve coverage. - Pull requests decreasing test coverage shouldn't be merged!
- Follow Test-driven Development if possible.
Versioning⚓︎
-
Use semantic versioning.
Tldr
MAJOR.MINOR.PATCH
-
Releases should be named in the format
vX.Y.Z
.
References⚓︎
- https://www.conventionalcommits.org/en/v1.0.0/#why-use-conventional-commits
- https://opensource.com/article/18/6/anatomy-perfect-pull-request
- https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/
- https://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages/3580764#3580764
- https://cheatography.com/albelop/cheat-sheets/conventional-commits/