Skip to content

Commit a53f1b2

Browse files
committed
docs: add guidelines about PR size
1 parent dae1903 commit a53f1b2

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

docs/about/contributing/CONTRIBUTING.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,32 @@ channel.
148148

149149
- [Frontend styling guide](./frontend.md#styling)
150150

151+
## Pull Requests
152+
153+
We welcome pull requests (PRs) from community members including (but not limited to) open source users, enthusiasts, and enterprise customers.
154+
155+
We will ask that you sign a Contributor License Agreement before we accept any contributions into our repo.
156+
157+
Please keep PRs small and self contained. This allows code reviewers (see below) to focus and fully understand the PR. A good rule of thumb is less than 1000 lines changed. (One exception is a mechanistic refactor, like renaming, that is conceptually trivial but might have a large line count.)
158+
159+
If your intended feature or refactor will be larger than this:
160+
161+
1. Open an issue explaining what you intend to build, how it will work, and that you are volunteering to do the development.
162+
2. Give the maintainers a chance to respond. Changes to the visual, interaction, or software design are easier to adjust before you start laying down code.
163+
3. Break your work up into a series of smaller PRs.
164+
165+
Stacking tools like [Graphite](https://www.graphite.dev) are useful for keeping a series of PRs that build on each other up to date as they are reviewed and merged.
166+
167+
Each PR:
168+
169+
- Must individually build and pass all tests, including formatting and linting.
170+
- Must not introduce regressions or back compatibility issues, even if a later PR would resolve the issue.
171+
- Should be a conceptually coherent change set.
172+
173+
In practice, many of these smaller PRs will be invisible to end users, and that is ok. For example, you might introduce
174+
a new Go package that implements the core business logic of a feature in one PR, but only later actually "wire it up"
175+
to a new API route in a later PR. Or, you might implement a new React component in one PR, and only in a later PR place it on a page.
176+
151177
## Reviews
152178

153179
The following information has been borrowed from [Go's review philosophy](https://go.dev/doc/contribute#reviews).

0 commit comments

Comments
 (0)