Skip to content

Commit edb39af

Browse files
authored
docs: improve contributing guidelines (#4312)
* enh(contributing): add issue title conv., expand on contributing context, general additions * tweaks
1 parent 564f07e commit edb39af

File tree

1 file changed

+99
-65
lines changed

1 file changed

+99
-65
lines changed

contributing.md

Lines changed: 99 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,138 @@
1-
# Contributing guidelines
1+
# Contributing Guidelines
22

3-
- [Contributing guidelines](#contributing-guidelines)
4-
- [Providing Feedback](#providing-feedback)
5-
- [Opening pull requests (PRs)](#opening-pull-requests-prs)
6-
- [Choose a good PR title](#choose-a-good-pr-title)
7-
- [Review your own code](#review-your-own-code)
8-
- [Do not rebase commits in your branch](#do-not-rebase-commits-in-your-branch)
9-
- [Contributing to documentation](#contributing-to-documentation)
10-
- [Ask for help](#ask-for-help)
11-
- [Prioritizing issues with milestones](#prioritizing-issues-with-milestones)
12-
13-
Before you create a new PR on Ignite CLI, make sure that you read and comply with this document.
3+
Before submitting a PR to the Ignite CLI repository, please review and follow these guidelines to ensure consistency and smooth collaboration across the project.
144

15-
Start a new [Discussion](https://github.com/ignite/cli/discussions/new) if you want to propose changes to this document.
5+
If you have suggestions or want to propose changes to these guidelines, start a new [Discussion topic](https://github.com/ignite/cli/discussions/new) to gather feedback.
166

17-
To prepare for success, see [Set Up Your Ignite CLI Development Environment](dev-env-setup.md).
7+
For setup instructions, see [Set Up Your Ignite CLI Development Environment](dev-env-setup.md).
188

199
To contribute to docs and tutorials, see [Contributing to Ignite CLI Docs](https://docs.ignite.com/contributing).
2010

21-
Thank you for your contribution!
11+
We appreciate your contribution!
12+
13+
- [Contributing Guidelines](#contributing-guidelines)
14+
- [Providing Feedback](#providing-feedback)
15+
- [Opening Pull Requests (PRs)](#opening-pull-requests-prs)
16+
- [Choosing a Good PR Title](#choosing-a-good-pr-title)
17+
- [Reviewing Your Own Code](#reviewing-your-own-code)
18+
- [Commit Guidelines \& Title Conventions](#commit-guidelines--title-conventions)
19+
- [Do Not Rebase After Opening a PR](#do-not-rebase-after-opening-a-pr)
20+
- [Contributing to Documentation](#contributing-to-documentation)
21+
- [Ask for Help](#ask-for-help)
22+
- [Prioritizing Issues with Milestones](#prioritizing-issues-with-milestones)
23+
- [Issue Title Conventions and Labeling](#issue-title-conventions-and-labeling)
2224

2325
## Providing Feedback
2426

25-
* Before you open an issue, do a web search, and check
26-
for [existing open and closed GitHub Issues](https://github.com/ignite/cli/issues) to see if your question has already
27-
been asked and answered. If you find a relevant topic, you can comment on that issue.
27+
- Before opening an issue, search for [existing open and closed issues](https://github.com/ignite/cli/issues) to check if your question has already been addressed. If a relevant issue exists, consider commenting on it instead of opening a duplicate issue.
28+
- For feedback, questions, or suggestions, open a [Discussion topic](https://github.com/ignite/cli/discussions/new) to share your thoughts. Providing detailed information, such as use cases and links, will make the discussion more productive and actionable.
2829

29-
* To provide feedback or ask a question, create a [GitHub issue](https://github.com/ignite/cli/issues/new/choose). Be
30-
sure to provide the relevant information, case study, or informative links as suggested by the Pull Request template.
30+
- For quick questions or informal feedback, join the **#🛠️ build-chains** channel in the official [Ignite Discord](https://discord.gg/ignite).
3131

32-
* We recommend using GitHub issues for issues and feedback. However, you can ask quick questions on the **#🛠️
33-
build-chains** channel in the official [Ignite Discord](https://discord.gg/ignite).
32+
## Opening Pull Requests (PRs)
3433

35-
## Opening pull requests (PRs)
34+
Please review relevant issues and discussions before opening a PR to ensure alignment with ongoing work.
3635

37-
Review the issues and discussions before you open a PR.
36+
### Choosing a Good PR Title
3837

39-
### Choose a good PR title
38+
- Keep PR titles concise (fewer than 60 characters).
39+
- Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) guidelines for structuring your titles. For example: `feat(services/chain)`, `fix(scaffolding)`, `docs(migration)`.
40+
- Your PR title should reflect the purpose of the changes and follow a consistent format.
4041

41-
Avoid long names in your PR titles. Make sure your title has fewer than 60 characters.
42+
### Reviewing Your Own Code
4243

43-
Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0) guidelines and keywords to find the best
44-
title.
44+
- Manually test your changes before submitting a PR or adding new commits.
45+
- Ensure all CI checks pass before requesting a review. Your PR should show **All checks have passed** with a green checkmark.
4546

46-
Use parentheses to identify the package or feature that you worked on. For example: `feat(services/chain)`
47-
, `fix(scaffolding)`, `docs(migration)`.
47+
### Commit Guidelines & Title Conventions
4848

49-
### Review your own code
49+
- **Standardized Issue Prefixes:**
50+
Issue titles should begin with one of the following standardized prefixes, depending on the type of action being taken:
5051

51-
Make sure that you manually tested the changes you're introducing before creating a PR or pushing another commit.
52+
- **`FIX:`** for resolving bugs or problems within existing features.
53+
- **`INIT:`** for creating new components, features, or initiatives.
54+
- **`UPDATE:`** for making improvements or modifications to existing functionality.
55+
- **`META:`** for larger, multi-step initiatives that consist of multiple tasks (e.g., epics).
5256

53-
Monitor your PR to make sure that all CI checks pass and the PR shows **All checks have passed** (the checkmark is
54-
green).
57+
**Examples:**
5558

56-
### Do not rebase commits in your branch
59+
- `FIX: Resolve crash during chain initialization`
60+
- `INIT: Add staking module to example chain`
61+
- `UPDATE: Improve performance of block synchronization`
62+
- `META: Overhaul user permissions system`
5763

58-
Avoid rebasing after you open your PRs to reviews. Instead, add more commits to your PR. It's OK to do force pushes if
59-
the PR is still in draft mode and was never opened to reviews before.
64+
- **Why Standardized Prefixes?**
65+
The use of standardized prefixes ensures that the focus is on what needs to be done, making the task clear and actionable. This approach avoids redundancy with Conventional Commits, which are used for PR titles and commit messages to capture the purpose of the change. By separating the action (described by the prefix) from the nature of the issue (captured by labels), we reduce duplication and improve clarity. For example, if the issue is labeled `type:bug`, there’s no need to state "bug" in the title—the `FIX:` prefix already implies that the task involves resolving a bug.
6066

61-
A reviewer likes to see a linear commit history while reviewing. If you tend to force push from an older commit, a
62-
reviewer might lose track in your recent changes and will have to start reviewing from scratch.
67+
- **Labels for Characteristics:**
68+
Labels are used to classify the characteristics, elements, and descriptors of the issue or initiative. Labels help clarify the type of issue, the component involved, and its priority or status, without cluttering the title. Here are some examples:
6369

64-
Don't worry about adding too many commits. The commits are squashed into a single commit while merging. Your PR title is
65-
used as the commit message.
70+
- **Type:** Describes the nature of the issue.
6671

67-
## Contributing to documentation
72+
- `type:bug` – Something isn't working.
73+
- `type:feat` – A new feature to be implemented.
74+
- `type:refactor` – Refactoring code without adding features.
6875

69-
When you open a PR for the Ignite CLI codebase, you must also update the relevant documentation. For changes to:
76+
- **Component:** Specifies the part of the system the issue is related to.
7077

71-
* [Developer Guide](https://docs.ignite.com/guide) tutorials, update content in the `/docs/docs/02-guide` folder.
72-
* [Ignite CLI reference](https://docs.ignite.com/references/cli), navigate to the `./ignite/cmd` package and update the
73-
documentation of the related command from its `cobra.Command` struct. The CLI docs are automatically generated, so do
74-
not make changes to `docs/docs/08-references/01-cli.md`.
78+
- `component:scaffold` – Related to scaffolding configuration or logic.
79+
- `component:frontend` – Related to frontend components.
80+
- `component:network` – Related to networking features or configurations.
7581

76-
### Ask for help
82+
- **Status:** Indicates the current status of the issue or PR.
83+
- `status:needs-triage` – Needs to be reviewed and prioritized.
84+
- `status:blocked` – Cannot proceed until the blocking matter is resolved.
85+
- `status:help wanted` – Additional input or attention is needed.
7786

78-
If you started a PR but couldn't finish it for whatever reason, don't give up. Instead, just ask for help. Someone else
79-
can take over and assume the ownership.
87+
### Do Not Rebase After Opening a PR
8088

81-
## Prioritizing issues with milestones
89+
- Avoid rebasing commits once a PR is open for review. Instead, add additional commits as needed.
90+
- Force pushes are acceptable only when the PR is in draft mode and hasn't been reviewed yet.
8291

83-
Ignite CLI follows Git Flow for branch
84-
strategy <https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow>.
92+
PRs will be squashed into a single commit when merged, so don't worry about having too many commits during the review process. The final PR title will be used as the commit message.
8593

86-
* Each Ignite CLI release has a milestone, see <https://github.com/ignite/cli/milestones>.
94+
## Contributing to Documentation
8795

88-
* Issues in each milestone have a **priority/high**, **priority/medium**, or **priority/low** label.
96+
Changes to the Ignite CLI codebase often require updates to the corresponding documentation. Please ensure that you update relevant documentation when making code changes.
8997

90-
* Select issues to work on for the earliest milestone. For example, select to work on an issue labeled as \*\*
91-
priority/low\*\* in milestone v0.1.0 before you work on an issue labeled as **priority/high** in milestone v0.2.0.
98+
- For changes to the [Developer Guide](https://docs.ignite.com/guide) and tutorials, update content in the `/docs/docs/02-guide` folder.
99+
- For changes to the [Ignite CLI Reference](https://docs.ignite.com/references/cli), update the `./ignite/cmd` package where the command is defined. Do not edit auto-generated docs under `docs/docs/08-references/01-cli.md`.
92100

93-
* Milestone **Next** is applied to issues that suggest adding features, docs, and so on.
101+
### Ask for Help
94102

95-
* Issues with the **Next** milestone have a higher priority than other **Issues with no milestone** (no milestone is
96-
assigned).
103+
If you start a PR but cannot complete it for any reason, don’t hesitate to ask for help. Another contributor can take over and finish the work.
97104

98-
* Issues in the **Next** milestone usually have a lower priority than milestones that are associated with a release
99-
version, like **Milestone v0.1.0**.
105+
## Prioritizing Issues with Milestones
100106

101-
* A single project board <https://github.com/ignite/cli/projects/4> shows the issues we are currently working on and
102-
what issues we plan to work on.
107+
We use Git Flow as our branch strategy, with each MAJOR release linked to a milestone. Core maintainers manage the prioritization of issues on the project board to ensure that the most critical work is addressed first.
103108

104-
We appreciate your contribution!
109+
- **Priority Labels (P0-P3):**
110+
Issues are classified based on their urgency and impact, which helps guide the team’s focus during each release cycle:
111+
112+
- **P0:** Urgent ("drop everything"); requires immediate attention and resolution. These issues take precedence over all other work.
113+
- **P1:** High priority ("important matter"); important and should be addressed promptly, though not as immediately critical as P0 issues.
114+
- **P2:** Medium priority ("sometime soon"); should be addressed but can be scheduled after P0 and P1 issues are resolved.
115+
- **P3:** Low priority ("nice to have"); nice to have but can be deferred or addressed as time permits.
116+
117+
- **Milestones and Workflow:**
118+
Each milestone represents a MAJOR release. Issues are assigned to milestones based on their priority and relevance to the release goals. The project board is used to track and manage the progress of these issues. This structured workflow ensures that urgent tasks (P0) are addressed immediately, while lower-priority tasks (P3) are handled as resources allow.
119+
120+
- **Next Milestone:**
121+
The **Next** milestone is used for issues or features that are not tied to a specific release but are still relevant to the project’s roadmap. These issues will be addressed when higher-priority work has been completed, or as part of future planning.
122+
123+
Check the [project board](https://github.com/ignite/cli/projects/7) to see what we're working on and what’s planned.
124+
125+
## Issue Title Conventions and Labeling
126+
127+
To maintain consistency across issues and PRs, follow these guidelines for issue titles:
128+
129+
- **Standardized Prefixes:** Begin with one of the standardized prefixes:
130+
131+
- `FIX:` for resolving bugs.
132+
- `INIT:` for new components or projects.
133+
- `UPDATE:` for improving or modifying existing features.
134+
- `META:` for meta tasks involving multiple sub-tasks or actions.
135+
136+
- **Labels for Characteristics:** Use labels to classify the nature of the issue, such as its type, component, or status. Labels help describe the various elements of the issue or task, making it easier to manage and prioritize.
137+
138+
By combining standardized prefixes with well-organized labels, we maintain clarity, avoid redundancy, and ensure that issues and PRs are properly categorized and actionable.

0 commit comments

Comments
 (0)