-
Notifications
You must be signed in to change notification settings - Fork 0
docs: add CONTRIBUTING guidelines #38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,173 @@ | ||
| # How to contribute to the Process Analytics project | ||
|
|
||
| [//]: # (These are general guidelines that applies to all repositories.) | ||
|
|
||
| [//]: # (Specific tasks may be required by the repository. It this case, create a dedicated `CONTRIBUTING.md` file in the repository.) | ||
|
|
||
| ## Branching | ||
|
|
||
| ### Branch Naming | ||
|
|
||
| Branch naming is essential for understanding the purpose of the branch and eventually, for automatically adding labels to the PR. | ||
|
|
||
| ### Branch Naming Convention | ||
|
|
||
| ``` | ||
| <type>/<ISSUE_ID>_<short_description> | ||
| ``` | ||
|
|
||
| **Note**: `ISSUE_ID` is optional, but it is recommended to link the branch to an existing issue to ensure. | ||
|
|
||
| #### Types | ||
|
|
||
| Types are based on [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/#summary): | ||
| - `feat` | ||
| - `fix` | ||
| - `chore` | ||
| - `docs` | ||
| - `test` | ||
| - `ci` | ||
| - `refactor` | ||
| - `style` | ||
| - `perf` | ||
| - `build` | ||
| - `revert` | ||
|
|
||
| Additional types: | ||
| - `poc` | ||
| - `defect` | ||
|
|
||
| #### Example | ||
|
|
||
| If `194` is the GitHub issue ID and `feat` is the type: | ||
| ``` | ||
| feat/194_support_data_objects | ||
| ``` | ||
|
|
||
|
|
||
| ## PR Conventions | ||
|
|
||
| ### PR Size | ||
|
|
||
| Make PRs small to facilitate the review process. | ||
|
|
||
| - There are no strict metrics, but aim for one PR per feature or bug fix. | ||
| - Consider splitting a feature to iterate better and speed up review and integration. | ||
|
|
||
| ### PR Title | ||
|
|
||
| We use the PR title as the commit message upon merging. Therefore, the PR title must conform to https://www.conventionalcommits.org/en/v1.0.0/[conventional commit]. | ||
|
|
||
| In most repositories, if the PR title does not conform, the GitHub Actions workflow to check the PR title will fail and post a comment in the Pull Request. The PR creator must update the PR title. | ||
|
|
||
| This ensures consistent commits and allows the use of tools to generate changelogs and adhere to https://semver.org/[semantic versioning]. | ||
|
|
||
| ### PR Description | ||
|
|
||
| **IMPORTANT**: always follow the Pull Request template when creating a PR. Otherwise, we may not be able to review your PR which will then be rejected. | ||
|
|
||
| Facilitate the review by: | ||
| - Providing minimal context (used for the PR merge commit). | ||
| - Linking to the GitHub issue, if available. | ||
| - Including screenshots for all visual changes (before and after). | ||
|
|
||
| Provide screenshots for all visual changes: | ||
| - This helps greatly in understanding the context and facilitates review. | ||
| - Providing screenshots for before and after the changes also make things more concrete. They can then be used to fill the Release Notes. | ||
|
|
||
| ### PR labels | ||
|
|
||
| **NOTE**: for maintainers only, external contributors without write access to the repository cannot add labels to PRs. | ||
|
|
||
| Labels are used to auto-generate a release notes. So, do not forget to add the relevant labels to the PR. | ||
|
|
||
|
|
||
| ## Commit Message | ||
|
|
||
| ### Commit Message Format | ||
|
|
||
| We always use `squash and merge`, so commit history cleanliness within the PR is not crucial. | ||
|
|
||
| ### Skip CI in a Commit Message | ||
|
|
||
| ⚠️ CI runs are expensive. | ||
|
|
||
| Use `[skip ci]` or `[no ci]` in commit messages to skip unnecessary CI runs. | ||
|
|
||
| ℹ️ For more details, see [Skipping workflow runs](https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs). | ||
|
|
||
|
|
||
| ## PR Management | ||
|
|
||
| ### Pull Request in Progress | ||
|
|
||
| Learn how to mark the PR as `Draft` using [Converting a pull request to a draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). | ||
|
|
||
| This communicates that the PR is a _work in progress_ and avoids premature reviews. | ||
|
|
||
| ### Force Push Policy | ||
|
|
||
| #### On Draft PRs | ||
|
|
||
| *Allowed.* | ||
|
|
||
| ⚠️ When force pushing, use `force-with-lease` to avoid overwriting commits pushed by others. See [git-push](https://git-scm.com/docs/git-push). | ||
|
|
||
| #### On Active PRs | ||
|
|
||
| *Not allowed, unless agreed upon by reviewers.* | ||
|
|
||
| Force pushing on active PRs makes reviews hard to follow and prevents differences from previous commits after feedback has been integrated. | ||
|
|
||
| ### PR Depending on Another PR | ||
|
|
||
| When it's possible, limit creating multiple dependent PRs, because: | ||
|
|
||
| - It increases PR backlog. | ||
| - It puts pressure on reviewers. | ||
| - It requires rebasing when the parent PR is merged. | ||
|
|
||
| Always apply the `depends on another PR` label and mark the PR as `Draft` to make dependencies explicit. | ||
|
|
||
|
|
||
| ## PR Review | ||
|
|
||
| ### Stay Aware for Review Needed | ||
|
|
||
| Set up GitHub notifications to stay updated on PR changes and review requests. | ||
|
|
||
| ℹ️ For more details, see [Configuring notifications](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications). | ||
|
|
||
| ### Choose Reviewers | ||
|
|
||
| **NOTE**: for maintainers only, external contributors without write access to the repository cannot add reviewers PRs. | ||
|
|
||
| Number of reviewers: | ||
| - **MUST** have at least 1 reviewer who is knowledgeable about the topic. This is generally enforced by a [ruleset](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets) | ||
| - **_OPTIONAL_**: on a chosen topic, have 2 or more reviewers. | ||
|
|
||
| ### Comment Convention | ||
|
|
||
| For effective reviews, adhere to "conventional comments" https://conventionalcomments.org/[guidelines]. | ||
|
|
||
| Browser extensions to help apply these guidelines: | ||
| - ✔️ [Conventional Comments Web Extension](https://github.com/davidfou/conventionalcomments-web-extension). For Gitlab and GitHub, extension for Chrome and Firefox. | ||
|
|
||
| ### Batch Suggestions | ||
|
|
||
| Merge suggestions in a batch to limit the number of commits and workflow executions. | ||
|
|
||
| ℹ️ See the documentation about [adding a suggestion to batch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request). | ||
|
|
||
| ### Handle Discussions Efficiently | ||
|
|
||
| - Avoid long discussions in PR comments. Opt for direct conversations if needed. | ||
| - Seek help from others if no agreement is reached. | ||
|
|
||
|
|
||
| ## Sources of inspiration | ||
|
|
||
| - https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/best-practices-for-pull-requests | ||
| - https://opensource.guide/how-to-contribute/#opening-a-pull-request | ||
| - https://github.com/grafana/grafana/blob/main/contribute/create-pull-request.md | ||
| - https://github.com/prometheus/prometheus/blob/main/CONTRIBUTING.md#pull-request-checklist | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thought: We have specific convention for bpmn-visualization.
I suggest we apply the same conventions in all repositories and use the one describe here as it is commonly used in a large amount of projects.
Do you agree @csouchet?
Current bpmn-visualization convention: https://github.com/process-analytics/bpmn-visualization-js/blob/24963c8693d5dec600c7d4288f523c4ef068ea62/CONTRIBUTING.md#fork--create-a-branch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's fine for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I am working on a new PR