Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

io.js messaging #23

Closed
wants to merge 17 commits into from
Closed
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
145 changes: 140 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ through the process.

### FORK

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

```sh
$ git clone git@github.com:username/node.git
$ cd node
$ git remote add upstream git://github.com/joyent/node.git
$ git remote add upstream git://github.com/node-forward/node.git
```

Now decide if you want your feature or bug fix to go into the master branch
Expand Down Expand Up @@ -147,8 +147,143 @@ feature branch. Post a comment in the pull request afterwards; GitHub does
not send out notifications when you add commits.


[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
[issue tracker]: https://github.com/joyent/node/issues
[stability index page]: https://github.com/node-forward/node/blob/master/doc/api/documentation.markdown
[issue tracker]: https://github.com/node-forward/node/issues
[node.js mailing list]: http://groups.google.com/group/nodejs
[IRC]: http://webchat.freenode.net/?channels=node.js
[project maintainers]: https://github.com/joyent/node/wiki/Project-Organization

### COMMITTER GUIDE

Committers who are merging their work and the work of others have a few other
rules to follow.

- Always include the `Reviewed-by: You Name <your-email>` in the commit
message.
- In commit messages also include `Fixes:` that either includes the
**full url** (e.g. `https://github.com/node-forward/node/issues/...`), and/or
the hash and commit message if the commit fixes a bug in a previous commit.
- PR's should include their full `PR-URL:` so it's easy to trace a commit
back to the conversation that lead up to that change.
- Double check PR's to make sure the persons **full name** and email
address are correct before merging.
- Except when updating dependencies, all commits should be self contained.
Meaning, every commit should pass all tests. Makes it much easier when
bisecting to find a breaking change.

# Governance

This repository (node-forward/node) is jointly governed by a technical
committee, commonly referred to as the "TC."

Initial membership invitations to the TC were given to individuals who had
been active contributors to Node. Current membership is:

```
Fedor Indutny (@indutny)
Trevor Norris (@trevnorris)
Ben Noordhuis (@bnoordhuis)
Isaac Z. Schlueter (@isaacs)
Nathan Rajlich (@TooTallNate)
Bert Belder (@piscisaureus)
```

Invitations were also given to `TJ Fontaine (@tjfontaine)` and
`Alexis Campailla (@orangemocha)` who have not accepted but are
still invited to participate without accepting a role or
officially endorsing this effort.

Additionally the TC may invite persons or representatives from certain projects
to participate in a non-voting capacity. These invitees currently are:

* A representative from [build](https://github.com/node-forward/build) chosen
by that project.

The TC has final authority over this project including:

* Project governance and process
* Contribution policy
* GitHub repository hosting

The TC can change its governance model if they deem it necessary. The current
governance rules are:

* [Consensus Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
* Motions with voting when consensus cannot be reached.
* Quorum of 2/3 (66%), simple definite majority wins.
* No more than 1/3 (34%) of the TC membership can be affiliated with the same
employer.

## TC Meetings

The TC meets weekly on a Google hangout. The meeting is run by a designated
moderator, currently `Mikeal Rogers (@mikeal)`. Each meeting should be
published to Youtube.

## Contributor Policy

Individuals making significant and valuable contributions are given
commit-access to the project. These individuals are identified by the TC and
discussed during the weekly TC meeting.

If you make a significant contribution and are not considered for commit-access
log an issue and it will be brought up in the next TC meeting.

Internal pull-requests to solicit feedback are required for any other
non-trivial contribution but left to the discretion of the contributor.

For significant changes wait a full 48 hours (72 hours if it spans a weekend)
before merging so that active contributors who are distributed throughout the
world have a chance to weigh in.

Controversial changes and **very** significant changes should not be merged
until they have been discussed by the TC which will make any final decisions.

TC members nominate contributors to be added to the TC which the TC will vote
on. They can nominate any individual during any meeting.

## Developer's Certificate of Origin 1.0

By making a contribution to this project, I certify that:

* (a) The contribution was created in whole or in part by me and I have the
right to submit it under the open source license indicated in the file; or
* (b) The contribution is based upon previous work that, to the best of my
knowledge, is covered under an appropriate open source license and I have the
right under that license to submit that work with modifications, whether
created in whole or in part by me, under the same open source license (unless
I am permitted to submit under a different license), as indicated in the
file; or
* (c) The contribution was provided directly to me by some other person who
certified (a), (b) or (c) and I have not modified it.

## Code of Conduct

This Code of Conduct is adapted from [Rust's wonderful CoC](https://github.com/rust-lang/rust/wiki/Note-development-policy#conduct).

* We are committed to providing a friendly, safe and welcoming environment for
all, regardless of gender, sexual orientation, disability, ethnicity, religion,
or similar personal characteristic.
* Please avoid using overtly sexual nicknames or other nicknames that might
detract from a friendly, safe and welcoming environment for all.
* Please be kind and courteous. There's no need to be mean or rude.
* Respect that people have differences of opinion and that every design or
implementation choice carries a trade-off and numerous costs. There is seldom
a right answer.
* Please keep unstructured critique to a minimum. If you have solid ideas you
want to experiment with, make a fork and see how it works.
* We will exclude you from interaction if you insult, demean or harass anyone.
That is not welcome behaviour. We interpret the term "harassment" as including
the definition in the [Citizen Code of Conduct](http://citizencodeofconduct.org/);
if you have any lack of clarity about what might be included in that concept,
please read their definition. In particular, we don't tolerate behavior that
excludes people in socially marginalized groups.
* Private harassment is also unacceptable. No matter who you are, if you feel
you have been or are being harassed or made uncomfortable by a community
member, please contact one of the channel ops or any of the TC members
immediately with a capture (log, photo, email) of the harassment if possible.
Whether you're a regular contributor or a newcomer, we care about making this
community a safe place for you and we've got your back.
* Likewise any spamming, trolling, flaming, baiting or other attention-stealing
behaviour is not welcome.
* Avoid the use of personal pronouns in code comments or documentation. There
is no need to address persons when explaining code (e.g. "When the developer")
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Evented I/O for V8 javascript.
===
# io.js

This repository began as a GitHub fork of joyent/node where contributions, releases, and contributorship are under an open governance model. We intend to produce, with increasing regularity, new releases which are compatible with the existing npm ecosystem that has been built for Node to date.

### To build:

Expand Down
61 changes: 61 additions & 0 deletions doc/tc-meetings/2014-10-09.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
- Contribution Policy was merged last week.

- Concerns about https://github.com/node-forward/node/issues/2 have been brought
up, it effects almost every line and will make merges with Joyent
unnecessarily painful in the short term. The consensus was to put it on the
back burner.

- It's a little difficult to work in the fork at the moment:
- It's hard to contextualize what to fix without having a release in mind
- We'll start doing source-only releases ASAP so that we can create a work
scope.
- Someone will be in charge of keeping their head around and driving each
release. This should probably rotate, Bert will take on the first one with
the goal of releasing before the end of the month.
- For now tagging will create a GitHub "release." Eventually the build infra
can attach binary installers to that GitHub release.
- It's hard to keep a list of issues that are being tackled from the backlog
in joyent's repo
- Bert will maintain a list of TODO checkbox items in a GitHub Issue for a
release the references the PRs and Issues in Joyent's repo. We'll also be on
the lookout for other tools that might make this easier.

- The build stuff is coming up a lot and the discussion about how releases work
should include someone from the build project.

- Invite whoever is leading the build effort (current @rvagg) to the TC meeting
to participate (non-voting).

- Eventually we'll need a better support structure where community members can
triage issues and respond to all the incoming requests.
- @mikeal created a "community" group and a repo for larger community issues.
Once there is some momentum there we can bring problems like this to the
community but the repo we currently control write access to doesn't have all
of the issues in it so this can wait.
- @indutny suggested a bot that auto-responds. @isaacs thought an
autoresponder was a little inhuman. It was agreed that the best thing to do
is have a bot that comments on the issue *once a tag is added* that is
specific to that tag and run in concert with humans tagging issues.
- @piscisaureus really wants to find a way for him to tell if someone already
looked at an issue so that him, trevor, ben, and fedor don't independently
look at every issue.

- @indutny wants to get a newer v8 in. this work is slated to be finished for
the first release.
- @trevnorris mentioned that there are some new features in v8 that we may
want to use to replace certain parts of node down the road.

- @trevnorris and @isaacs want a "commit script" that people can run which
automates a lot of the manual cleanliness we currently require for all commits.
v8 has as simliar one. this will be written in javascript by @isaacs and
@trevnorris .

- When pulling in joyent/node commits we should use no-fast-forward commits.

- If people want to talk to the TC in a more "chatty" way we should use the
`#node-forward` IRC channel on freenode. We need to add logging.

- The video of TC meetings doesn't include the chat so we need to be aware of
that when using it during the calls.

Video of the call is https://www.youtube.com/watch?v=fNW_tu2QnpA
33 changes: 33 additions & 0 deletions doc/tc-meetings/2014-10-29.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
* Update on Build
* @rvagg is working on getting the builds consistently green
before moving on to more complicated things.
* @issacs brought up the Joyent Advisory board
* Some confusion out there about Node Forward vs. Advisory Board
* @mikeal updated the messaging on the website to be clearer
* The website has clearer calls to action for the community
* Libuv move
* The libuv contributors want to move to the libuv org.
* @mikeal will email @indutny and other libuv contributors to ask them
to log an issue about this on their repo for transparency and so that
this is not a surprise to Joyent
* Update on "release buckets"
* doesn't make sense while we're private, we'll wait until it is public again
* `node-forward/node` going public
* when we made the repo private it was messaged as only being for "four weeks"
* "four weeks" is up on November 8th
* someone on the Advisory Board needs to remind Joyent of this in the
next advisory board meeting so they aren't suprised by it even though
it was communicated to them when it was first made public.
* @mikeal will work on the messaging in the README to make it clear this is
a "soft" fork and not a "hard" fork.
* ramifications of going public will be discussed in next week's TC meeting as
well
* @mikeal proposed a change in TC meeting process
* it's impossible to schedule all the timezones involved in every meeting
* every Monday create a "Weekly TC Agenda" Issue people can contribute to
* the TC members who care about that Agenda will state they want to be in the
meeting
* @mikeal will work to schedule the TC members who care for a hangout
* people are using and liking gitter
* we'll consider moving from IRC to gitter once the repo is public again
* yes, gitter has IRC integration (you can login to gitter from an IRC client)
6 changes: 3 additions & 3 deletions lib/_stream_readable.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,7 @@ function readableAddChunk(stream, state, chunk, encoding, addToFront) {
stream.emit('error', er);
} else if (chunk === null) {
state.reading = false;
if (!state.ended)
onEofChunk(stream, state);
onEofChunk(stream, state);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (state.ended && !addToFront) {
var e = new Error('stream.push() after EOF');
Expand Down Expand Up @@ -387,7 +386,8 @@ function chunkInvalid(state, chunk) {


function onEofChunk(stream, state) {
if (state.decoder && !state.ended) {
if (state.ended) return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
Expand Down
24 changes: 12 additions & 12 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ function isPipeName(s) {
}


exports.createServer = function() {
return new Server(arguments[0], arguments[1]);
exports.createServer = function(options, connectionListener) {
return new Server(options, connectionListener);
};


Expand Down Expand Up @@ -992,23 +992,23 @@ function afterConnect(status, handle, req, readable, writable) {
}


function Server(/* [ options, ] listener */) {
if (!(this instanceof Server)) return new Server(arguments[0], arguments[1]);
function Server(options, connectionListener) {
if (!(this instanceof Server))
return new Server(options, connectionListener);

events.EventEmitter.call(this);

var self = this;

var options;

if (util.isFunction(arguments[0])) {
if (util.isFunction(options)) {
connectionListener = options;
options = {};
self.on('connection', arguments[0]);
self.on('connection', connectionListener);
} else {
options = arguments[0] || {};
options = options || {};

if (util.isFunction(arguments[1])) {
self.on('connection', arguments[1]);
}
if (util.isFunction(connectionListener))
self.on('connection', connectionListener);
}

this._connections = 0;
Expand Down
4 changes: 2 additions & 2 deletions src/node_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#define SRC_NODE_VERSION_H_

#define NODE_MAJOR_VERSION 0
#define NODE_MINOR_VERSION 11
#define NODE_PATCH_VERSION 15
#define NODE_MINOR_VERSION 13
#define NODE_PATCH_VERSION 0

#define NODE_VERSION_IS_RELEASE 0

Expand Down
10 changes: 6 additions & 4 deletions vcbuild.bat
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,12 @@ if defined noprojgen goto msbuild

if defined NIGHTLY set TAG=nightly-%NIGHTLY%

if not defined PYTHON set PYTHON=python

@rem Generate the VS project.
SETLOCAL
if defined VS100COMNTOOLS call "%VS100COMNTOOLS%\VCVarsQueryRegistry.bat"
python configure %i18n_arg% %debug_arg% %nosnapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch% --tag=%TAG%
"%PYTHON%" configure %debug_arg% %nosnapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch% --tag=%TAG%
if errorlevel 1 goto create-msvs-files-failed
if not exist node.sln goto create-msvs-files-failed
echo Project files generated.
Expand Down Expand Up @@ -206,7 +208,7 @@ goto exit

:run-tests
echo running 'python tools/test.py %test_args%'
python tools/test.py %test_args%
"%PYTHON%" tools/test.py %test_args%
if "%test%"=="test" goto jslint
goto exit

Expand All @@ -228,7 +230,7 @@ goto exit
:jslint
echo running jslint
set PYTHONPATH=tools/closure_linter/
python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
"%PYTHON%" tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
goto exit

:help
Expand All @@ -249,6 +251,6 @@ rem ***************

:getnodeversion
set NODE_VERSION=
for /F "usebackq tokens=*" %%i in (`python "%~dp0tools\getnodeversion.py"`) do set NODE_VERSION=%%i
for /F "usebackq tokens=*" %%i in (`"%PYTHON%" "%~dp0tools\getnodeversion.py"`) do set NODE_VERSION=%%i
if not defined NODE_VERSION echo Cannot determine current version of node.js & exit /b 1
goto :EOF