Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

doc: contribution guidelines for node-chakracore #27

Open
wants to merge 1 commit into
base: chakracore-master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 10 additions & 95 deletions COLLABORATOR_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Node.js Collaborator Guide
# Node.js on ChakraCore Collaborator Guide

**Contents**

Expand All @@ -11,7 +11,8 @@
- [Long Term Support](#long-term-support)

This document contains information for Collaborators of the Node.js
project regarding maintaining the code, documentation and issues.
on ChakraCore project regarding maintaining the code, documentation
and issues.

Collaborators should be familiar with the guidelines for new
contributors in [CONTRIBUTING.md](./CONTRIBUTING.md) and also
Expand All @@ -38,9 +39,9 @@ necessary.

## Accepting Modifications

All modifications to the Node.js code and documentation should be
performed via GitHub pull requests, including modifications by
Collaborators and TC members.
All modifications to the Node.js on ChakraCore code and documentation
should be performed via GitHub pull requests, including modifications
by Collaborators and TC members.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TSC

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bug in the upstream. Rather than fix it here, I'll open a PR upstream.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


All pull requests must be reviewed and accepted by a Collaborator with
sufficient expertise who is able to take full responsibility for the
Expand Down Expand Up @@ -73,6 +74,9 @@ All pull requests that modify executable code should be subjected to
continuous integration tests on the
[project CI server](https://ci.nodejs.org/).

As a general rule, pull requests should be tested in CI both on the
ChakraCore build and the v8 build.

### Involving the TC

Collaborators may opt to elevate pull requests or issues to the TC for
Expand Down Expand Up @@ -138,7 +142,7 @@ $ git merge --ff-only origin/master
Apply external patches

```text
$ curl -L https://github.com/nodejs/node/pull/xxx.patch | git am --whitespace=fix
$ curl -L https://github.com/nodejs/node-chakracore/pull/xxx.patch | git am --whitespace=fix
```

Check and re-review the changes
Expand Down Expand Up @@ -229,92 +233,3 @@ branch within 10 minutes from your original push. If someone else
pushes to the branch or the 10 minute period passes, consider the
commit final.

### Long Term Support

#### What is LTS?

Long Term Support (often referred to as *LTS*) guarantees application developers
a 30 month support cycle with specific versions of Node.js.

You can find more information [in the full LTS plan](https://github.com/nodejs/lts#lts-plan).

#### How does LTS work?

Once a stable branch enters LTS, changes in that branch are limited to bug
fixes, security updates, possible npm updates, documentation updates, and
certain performance improvements that can be demonstrated to not break existing
applications. Semver-minor changes are only permitted if required for bug fixes
and then only on a case-by-case basis with LTS WG and possibly Core Technical
Committee (CTC) review. Semver-major changes are permitted only if required for
security related fixes.

Once a stable branch moves into Maintenance mode, only **critical** bugs,
**critical** security fixes, and documentation updates will be permitted.

#### Landing semver-minor commits in LTS

The default policy is to not land semver-minor or higher commits in any LTS
branch. However, the LTS WG or CTC can evaluate any individual semver-minor
commit and decide whether a special exception ought to be made. It is
expected that such exceptions would be evaluated, in part, on the scope
and impact of the changes on the code, the risk to ecosystem stability
incurred by accepting the change, and the expected benefit that landing the
commit will have for the ecosystem.

Any collaborator who feels a semver-minor commit should be landed in an LTS
branch should attach the `lts-agenda` label to the pull request. The LTS WG
will discuss the issue and, if necessary, will escalate the issue up to the
CTC for further discussion.

#### How are LTS Branches Managed?

There are currently three LTS branches: `v4.x`, `v0.10`, and `v0.12`. Each
of these is paired with a "staging" branch: `v4.x-staging`, `v0.10-staging`,
and `v0.12-staging`.

As commits land in `master`, they are cherry-picked back to each staging
branch as appropriate. If the commit applies only to the LTS branch, the
PR must be opened against the *staging* branch. Commits are selectively
pulled from the staging branch into the LTS branch only when a release is
being prepared and may be pulled into the LTS branch in a different order
than they were landed in staging.

Any collaborator may land commits into a staging branch, but only the release
team should land commits into the LTS branch while preparing a new
LTS release.

#### How can I help?

When you send your pull request, consider including information about
whether your change is breaking. If you think your patch can be backported,
please feel free to include that information in the PR thread.

Several LTS related issue and PR labels have been provided:

* `lts-watch-v4.x` - tells the LTS WG that the issue/PR needs to be considered
for landing in the `v4.x-staging` branch.
* `lts-watch-v0.10` - tells the LTS WG that the issue/PR needs to be considered
for landing in the `v0.10-staging` branch.
* `lts-watch-v0.12` - tells the LTS WG that the issue/PR needs to be considered
for landing in the `v0.12-staging` branch.
* `land-on-v4.x` - tells the release team that the commit should be landed
in a future v4.x release
* `land-on-v0.10` - tells the release team that the commit should be landed
in a future v0.10 release
* `land-on-v0.12` - tells the release team that the commit should be landed
in a future v0.12 release

Any collaborator can attach these labels to any PR/issue. As commits are
landed into the staging branches, the `lts-watch-` label will be removed.
Likewise, as commits are landed in a LTS release, the `land-on-` label will
be removed.

Collaborators are encouraged to help the LTS WG by attaching the appropriate
`lts-watch-` label to any PR that may impact an LTS release.

#### How is an LTS release cut?

When the LTS working group determines that a new LTS release is required,
selected commits will be picked from the staging branch to be included in the
release. This process of making a release will be a collaboration between the
LTS working group and the Release team.
54 changes: 21 additions & 33 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Contributing to Node.js
# Contributing to Node.js on ChakraCore

Contributions to this repository should be limited to the integration of Node.js
with the ChakraCore engine. For all contributions not related to the ChakraCore
build, please go to https://github.com/nodejs/.


## Code of Conduct

Expand All @@ -10,19 +15,12 @@ expectations the Node Foundation requires of its contributors.

When opening new issues or commenting on existing issues on this repository
please make sure discussions are related to concrete technical issues with the
Node.js software.

For general help using Node.js, please file an issue at the
[Node.js help repository](https://github.com/nodejs/help/issues).

Discussion of non-technical topics including subjects like intellectual
property, trademark and high level project questions should move to the
[node-forward discussions repository](https://github.com/node-forward/discussions)
instead.
Node.js on ChakraCore software.

## Code Contributions

The Node.js project has an open governance model and welcomes new contributors.
The Node.js on ChakraCore project has an open governance model and welcomes new
contributors.
Individuals making significant and valuable contributions are made
_Collaborators_ and given commit-access to the project. See the
[GOVERNANCE.md](./GOVERNANCE.md) document for more information about how this
Expand All @@ -32,28 +30,20 @@ This document will guide you through the contribution process.

### Step 1: Fork

Fork the project [on GitHub](https://github.com/nodejs/node) and check out your
copy locally.
Fork the project [on GitHub](https://github.com/nodejs/node-chakracore) and
check out your copy locally.

```text
$ git clone [email protected]:username/node.git
$ git clone [email protected]:username/node-chakracore.git
$ cd node
$ git remote add upstream git://github.com/nodejs/node.git
$ git remote add upstream git://github.com/nodejs/node-chakracore.git
```

#### Which branch?

For developing new features and bug fixes, the `master` branch should be pulled
and built upon.
For developing new features and bug fixes, the `chakracore-master` branch
should be pulled and built upon.

#### Respect the stability index

The rules for the master branch are less strict; consult the
[stability index](./doc/api/documentation.markdown#stability-index) for details.

In a nutshell, modules are at varying levels of API stability. Bug fixes are
always welcome but API or behavioral changes to modules at stability level 3
(Locked) are off-limits.

#### Dependencies

Expand All @@ -63,21 +53,19 @@ in those directories or its subdirectories should be sent to their respective
projects. Do not send your patch to us, we cannot accept it.

In case of doubt, open an issue in the
[issue tracker](https://github.com/nodejs/node/issues/) or contact one of the
[project Collaborators](https://github.com/nodejs/node/#current-project-team-members).
[issue tracker](https://github.com/nodejs/node-chakracore/issues/) or
contact one of the [project Collaborators]
(https://github.com/nodejs/node-chakracore/#current-project-team-members).
Especially do so if you plan to work on something big. Nothing is more
frustrating than seeing your hard work go to waste because your vision
does not align with the project team. Node.js has two IRC channels,
[#Node.js](http://webchat.freenode.net/?channels=node.js) for general help and questions, and
[#Node-dev](http://webchat.freenode.net/?channels=node-dev) for development of node core specifically.

does not align with the project team.

### Step 2: Branch

Create a feature branch and start hacking:

```text
$ git checkout -b my-feature-branch -t origin/master
$ git checkout -b my-feature-branch -t origin/chakracore-master
```

### Step 3: Commit
Expand Down Expand Up @@ -126,7 +114,7 @@ Use `git rebase` (not `git merge`) to sync your work from time to time.

```text
$ git fetch upstream
$ git rebase upstream/master
$ git rebase upstream/chakracore-master
```


Expand Down
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,20 @@ To test if Node.js was built correctly with ChakraCore:
```batch
C:\>node -e "console.log('Hello from Node.js ' + process.jsEngine)"
Hello from Node.js chakracore
```
```

## Resources for Newcomers

* [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
* [CONTRIBUTING.md](./CONTRIBUTING.md)
* [GOVERNANCE.md](./GOVERNANCE.md)

## Current Project Team Members

This project is maintained by the members of the [nodejs/node-chakracore]
(https://github.com/orgs/nodejs/teams/node-chakracore) team.
[Team members from the Node.js project]
(https://github.com/nodejs/node#current-project-team-members) are also
considered Collaborators with respect to [COLLABORATOR_GUIDE.md]
(./COLLABORATOR_GUIDE.md) and [GOVERNANCE.md](./GOVERNANCE.md), however
they are not required nor expected to actively maintain this project.
Loading