- Thank you for doing this!
- Going to cover three things:
- Setup.
- Issues, labels, and reviewing code.
- Merging code.
- Communication
- CI lives here: https://jenkins.nodejs.org.
- Make sure to log in with the account I sent you by email.
- Most important job: node-accept-pull-request. More info on how to use it here: https://nodejs.org/contribute/code_contributions/workflow.html#workflow_md_using_jenkins_to_build_test_and_merge_every_pr.
- Testing changes for v0.10: use node-review job.
- Releases are made with nodejs-release job.
- Most jobs do not take a repository as a parameter, making things difficult to be used by different users. Working towards being able to do this soon. In the meantime, either use default job when it makes sense (node-review), or clone the default job and change the repository value (e.g nodejs-release, see what I did in nodejs-release-julien).
- Other repos:
- Make sure you're properly notified when someone mentions you or @joyent/node-collaborators on GitHub.
- Local clones (clone the repo twice)
- Fork https://github.com/joyent/node to your user account on github.
- git clone git://github.com/joyent/node.git
- cd node && git remote rename origin upstream && git remote add origin your_fork.
Make sure to read https://nodejs.org/contribute/code_contributions/workflow.html. Most importantly, make sure you familiarize yourself with our usage of milestones and priority labels.
If you have any question, please let me know!
You have free reign so don't hesitate to close an issue if you are confident that it should be closed. This will come more naturally over time.
Always add a comment to the issue detailing why you add, remove or change a specific label in a GitHub issue.
Add label confirmed-bug
if you investigated an issue and you were able to confirm (by reproducing it) that it's actually a bug. This helps a lot when going back to the same issue days, weeks or months later and wondering whether it's an actual issue or not.
As much as possible, try to evaluate the priority of this issue and assign a priority label.
If you think an issue should be tackled in a specific milestone, please add that issue to the corresponding milestone and mention @joyent/node-tsc with information about why this issue should be added to that milestone.
Add label tsc-agenda
if a topic seems controversial, or if it requires to be brought up to the TSC (like nominating new collaborators).
Labels are documented here: https://nodejs.org/contribute/code_contributions/workflow.html#workflow_md_usage_of_labels.
joyent/node is the repository from which v0.10.x and v0.12.x releases come out. These releases is what most users of Node.js use, so we need to make sure that changes don't break existing users.
Validating PRs is done by writing "LGTM" in a comment. Do not write LGTM unless you mean that the current state of the PR is ready to be merged into the target branch of the PR.
Make sure you understand 100% of the changes before giving a LGTM. Most of the time, and at least in the beginning it will be rare to understand 100% of the changes.
If you need help to do that, ping other contributors, see the "Communication" section below.
We want the person submitting code to succeed. It helps grow the community and draws new people into the project. Be aware: your opinion carries a lot of weight!
Make sure to read https://nodejs.org/contribute/code_contributions/workflow.html#workflow_md_using_jenkins_to_build_test_and_merge_every_pr. Once the nodejs-accept-pull-request Jenkins job has merged the change, close the original PR with the following message:
Landed in <commit hash>.
Also close the issues fixed by this pull request with the following message:
Fixed by <commit hash>.
- Use GitHub issues at github.com/joyent/node as much as possible.
- Mention @joyent/node-collaborators every time you need feedback/review. Dot not be afraid to abuse this.
- For realtime conversations, most collaborators hangout in #libuv on FreeNode.
- Mentioning other contributors in GitHub issues (by subsystem):
- lib/child_process: bnoordhuis, piscisaereus, cjihrig
- lib/cluster: bnoordhuis, sam-github
- lib/net: indutny, bnoordhuis, piscisaereus, chrisdickinson.
- lib/http: isaacs, bnoordhuis
- lib/vm: domenic, isaac
- lib/buffer: trevnorris
- src/async-wrap.*: trevnorris
- lib/crypto,tls,https: indutny
- src/node_crypto.*: indutny
- IN GENERAL: joyent/node-tsc, joyent/node-collaborators or
git shortlog -n -s <file>
.
- Don't worry about making mistakes: everybody makes them, there's a lot to internalize and that takes time (& we recognize that!).
- Very few (no?) mistakes are unrecoverable.
- All Node.js contributors are grateful for your help.