Skip to content

Commit 449ee09

Browse files
authored
More updates to CONTRIBUTING.md
1 parent 04f26b2 commit 449ee09

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

CONTRIBUTING.md

+28-26
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# Apollo Contributor Guide
22

3-
Excited about Apollo and want to make it better? We’re excited too. Read below to learn about different ways to contribute to the project:
3+
Excited about Apollo and want to make it better? We’re excited too!
4+
5+
Apollo is a community of developers just like you, striving to create the best tools and libraries around GraphQL. We welcome anyone who wants to contribute or provide constructive feedback, no matter the age or level of experience. If you want to help but don't know where to start, let us know, and we'll find something for you.
6+
7+
Oh, and if you haven't already, sign up for the [Apollo Slack](http://www.apollodata.com/#slack).
8+
9+
Here are some ways to contribute to the project, from easiest to most difficult:
410

511
* [Reporting bugs](#reporting-bugs)
6-
* [Suggesting features](#suggesting-features)
12+
* [Improving the documentation](#improving-the-documentation)
713
* [Responding to issues](#responding-to-issues)
8-
* [Documentation fixes](#documentation-fixes)
914
* [Small bug fixes](#small-bug-fixes)
15+
* [Suggesting features](#suggesting-features)
1016
* [Big pull requests](#big-prs)
1117

1218
## Issues
@@ -15,41 +21,37 @@ Excited about Apollo and want to make it better? We’re excited too. Read below
1521

1622
If you encounter a bug, please file an issue on GitHub via the repository of the sub-project you think contains the bug. If an issue you have is already reported, please add additional information or add a 👍 reaction to indicate your agreement.
1723

18-
While we will try to be as helpful as we can regardless, please include the following to maximize the chances of a quick fix:
24+
While we will try to be as helpful as we can on any issue reported, please include the following to maximize the chances of a quick fix:
1925

2026
1. **Intended outcome:** What you were trying to accomplish when the bug occurred, and as much code as possible related to the source of the problem.
2127
2. **Actual outcome:** A description of what actually happened, including a screenshot or copy-paste of any related error messages, logs, or other output that might be related. Places to look for information include your browser console, server console, and network logs. Please avoid non-specific phrases like “didn’t work” or “broke”.
22-
3. **Reproduction:** A minimal reproduction of the issue that we can run. This is ideally in the form of a small application we can clone from GitHub, or a failing test sent in the form of a PR. The reproduction should contain as little code as possible to demonstrate the bug.
28+
3. **How to reproduce the issue:** Instructions for how the issue can be reproduced by a maintainer or contributor. Be as specific as possible, and only mention what is necessary to reproduce the bug. If possible, try to isolate the exact circumstances in which the bug occurs and avoid speculation over what the cause might be.
2329

2430
Creating a good reproduction really helps contributors investigate and resolve your issue quickly. In many cases, the act of creating a minimal reproduction illuminates that the source of the bug was somewhere outside the library in question, saving time and effort for everyone.
2531

26-
### Suggesting features
27-
28-
Most of the features in Apollo were suggested by the community at some point in time. We welcome any ideas about how to make our project better for your use case. Unless there is overwhelming demand for a feature, it might not get implemented immediately, but please include as much information as possible that will help people have a discussion about your proposal:
32+
### Improving the documentation
2933

30-
1. **Use case:** What are you trying to accomplish, in specific terms? Often, there might already be a good way to do what you need and a new feature is unnecessary, but it’s hard to know without information about the specific use case.
31-
2. **Could this be a plugin?** In many cases, a feature might be too niche to be included in the core of a library, and is better implemented as a companion package. If there isn’t a way to extend the library to do what you want, could we add additional plugin APIs? It’s important to make the case for why a feature should be part of the core functionality of the library.
32-
3. **Is there a workaround?** Is this a more convenient way to do something that is already possible, or is there some blocker that makes a workaround unfeasible?
33-
34-
Feature requests will be labeled as such, and we encourage using GitHub issues as a place to discuss new features and possible implementation designs. Please refrain from submitting a pull request to implement a proposed feature until there is consensus that it should be included. This way, you can avoid putting in work that can’t be merged in.
35-
36-
Once there is a consensus on the need for a new feature, proceed as listed below under “Big PRs”.
34+
Improving the documentation, examples, and other open source content can be the easiest way to contribute to the library. If you see a piece of content that can be better, open a PR with an improvement, no matter how small! If you would like to suggest a big change or major rewrite, we’d love to hear your ideas but please open an issue for discussion before writing the PR.
3735

3836
### Responding to issues
3937

40-
In addition to reporting issues, a great way to contribute to Apollo is to respond to other peoples' issues and try to identify the problem or help them work around it. If you’re interested in taking a more active role in this process, please let us know on the Apollo Slack!
38+
In addition to reporting issues, a great way to contribute to Apollo is to respond to other peoples' issues and try to identify the problem or help them work around it. If you’re interested in taking a more active role in this process, please go ahead and respond to issues. And don't forget to say "Hi" on Apollo Slack!
4139

42-
## Small PRs
40+
### Small bug fixes
4341

44-
If there is a small change to be made, please feel free to open a PR right away with the fix or improvement. For this category of pull requests, there is no need to write a design first.
42+
For a small bug fix change (less than 20 lines of code changed), feel free to open a pull request. We’ll try to merge it as fast as possible and ideally publish a new release on the same day. The only requirement is, make sure you also add a test that verifies the bug you are trying to fix.
4543

46-
### Documentation fixes
44+
### Suggesting features
4745

48-
Improving the documentation, examples, and other open source content can be the easiest way to contribute to the library. If you see a piece of content that can be better, open a PR with an improvement, no matter how small! If you would like to suggest a big change or major rewrite, we’d love to hear your ideas but please open an issue for discussion before writing the PR.
46+
Most of the features in Apollo came from suggestions by you, the community! We welcome any ideas about how to make Apollo better for your use case. Unless there is overwhelming demand for a feature, it might not get implemented immediately, but please include as much information as possible that will help people have a discussion about your proposal:
4947

50-
### Small bug fixes
48+
1. **Use case:** What are you trying to accomplish, in specific terms? Often, there might already be a good way to do what you need and a new feature is unnecessary, but it’s hard to know without information about the specific use case.
49+
2. **Could this be a plugin?** In many cases, a feature might be too niche to be included in the core of a library, and is better implemented as a companion package. If there isn’t a way to extend the library to do what you want, could we add additional plugin APIs? It’s important to make the case for why a feature should be part of the core functionality of the library.
50+
3. **Is there a workaround?** Is this a more convenient way to do something that is already possible, or is there some blocker that makes a workaround unfeasible?
5151

52-
For a small bug fix change (less than 20 lines of code changed), feel free to open a pull request. We’ll try to merge it as fast as possible and ideally publish a new release on the same day. The only requirement is, make sure you also add a test that verifies the bug you are trying to fix.
52+
Feature requests will be labeled as such, and we encourage using GitHub issues as a place to discuss new features and possible implementation designs. Please refrain from submitting a pull request to implement a proposed feature until there is consensus that it should be included. This way, you can avoid putting in work that can’t be merged in.
53+
54+
Once there is a consensus on the need for a new feature, proceed as listed below under “Big PRs”.
5355

5456
## Big PRs
5557

@@ -70,11 +72,11 @@ For significant changes to a repository, it’s important to settle on a design
7072

7173
### Code review guidelines
7274

73-
It’s important that every piece of code in Apollo packages is reviewed by at least one core contributor familiar with that codebase. Here are some things to look for:
75+
It’s important that every piece of code in Apollo packages is reviewed by at least one core contributor familiar with that codebase. Here are some things we look for:
7476

75-
1. **Required CI checks pass.** If the tests don’t pass, there is no need to review the PR until they do.
77+
1. **Required CI checks pass.** This is a prerequisite for the review, and it is the PR author's responsibility. As long as the tests don’t pass, the PR won't get reviewed.
7678
2. **Simplicity.** Is this the simplest way to achieve the intended goal? If there are too many files, redundant functions, or complex lines of code, suggest a simpler way to do the same thing. In particular, avoid implementing an overly general solution when a simple, small, and pragmatic fix will do.
7779
3. **Testing.** Do the tests ensure this code won’t break when other stuff changes around it? When it does break, will the tests added help us identify which part of the library has the problem? Did we cover an appropriate set of edge cases? Look at the test coverage report if there is one. Are all significant code paths in the new code exercised at least once?
78-
4. **No unnecessary changes.** PRs shouldn’t come with random formatting changes, especially in unrelated parts of the code. If there is some refactoring that needs to be done, it should be in a separate PR from a bug fix or feature, if possible.
79-
5. **Code has appropriate comments.** Complicated logic should be commented, or written in a clear “self-documenting” way.
80+
4. **No unnecessary or unrelated changes.** PRs shouldn’t come with random formatting changes, especially in unrelated parts of the code. If there is some refactoring that needs to be done, it should be in a separate PR from a bug fix or feature, if possible.
81+
5. **Code has appropriate comments.** Code should be commented, or written in a clear “self-documenting” way.
8082
6. **Idiomatic use of the language.** In TypeScript, make sure the typings are specific and correct. In ES2015, make sure to use imports rather than require and const instead of var, etc. Ideally a linter enforces a lot of this, but use your common sense and follow the style of the surrounding code.

0 commit comments

Comments
 (0)