## pre-setup Ensure everyone is added to https://github.com/orgs/nodejs/teams/collaborators ## onboarding to nodejs ### intros ### **thank you** for doing this * going to cover four things: * local setup * some project goals & values * issues, labels, and reviewing code * merging code ### setup: * notifications setup * use https://github.com/notifications or set up email * watching the main repo will flood your inbox, so be prepared * git: * make sure you have whitespace=fix: `git config --global --add core.whitespace fix` * usually PR from your own github fork * [**See "Updating Node.js from Upstream"**](./onboarding-extras.md#updating-nodejs-from-upstream) * make new branches for all commits you make! * `#node-dev` on `chat.freenode.net` is the best place to interact with the CTC / other collaborators ### a little deeper about the project * collaborators are effectively part owners * the project has the goals of its contributors * but, there are some higher-level goals and values * not everything belongs in core (if it can be done reasonably in userland, let it stay in userland) * empathy towards users matters (this is in part why we onboard people) * generally: try to be nice to people ### managing the issue tracker * you have (mostly) free rein – don't hesitate to close an issue if you are confident that it should be closed * this will come more naturally over time * IMPORTANT: be nice about closing issues, let people know why, and that issues and PRs can be reopened if necessary * Still need to follow the Code of Conduct. * labels: * generally sort issues by a concept of "subsystem" so that we know what part(s) of the codebase it touches, though there are also other useful labels. * [**See "Labels"**](./onboarding-extras.md#labels) * `ctc-agenda` if a topic is controversial or isn't coming to a conclusion after an extended time. * `semver-{minor,major}`: * be conservative – that is, if a change has the remote *chance* of breaking something, go for `semver-major` * when adding a semver label, add a comment explaining why you're adding it * it's cached locally in your brain at that moment! * Notifying humans * [**See "Who to CC in issues"**](./onboarding-extras.md#who-to-cc-in-issues) * will also come more naturally over time * reviewing: * primary goal is for the codebase to improve * secondary (but not far off) is for the person submitting code to succeed * helps grow the community * and draws new people into the project * Review a bit at a time. It is **very important** to not overwhelm newer people. * it is tempting to micro-optimize / make everything about relative perf, don't succumb to that temptation. we change v8 a lot more often now, contortions that are zippy today may be unnecessary in the future * be aware: your opinion carries a lot of weight! * nits are fine, but try to avoid stalling the PR * note that they are nits when you comment * if they really are stalling nits, fix them yourself on merge (but try to let PR authors know they can fix these) * improvement doesn't have to come all at once * minimum wait for comments time * There is a minimum waiting time which we try to respect for non-trivial changes, so that people who may have important input in such a distributed project are able to respond. * It may help to set time limits and expectations: * the collaborators are very distributed so it is unlikely that they will be looking at stuff the same time as you are. * before merging code: give folks at least one working day to respond: "If no one objects, tomorrow at