diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4c3a86b00f30f3..089252b7b7e29f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 @@ -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 ` 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") diff --git a/README.md b/README.md index b157ddd3f2acc9..5bb51872e09e90 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/doc/tc-meetings/2014-10-09.md b/doc/tc-meetings/2014-10-09.md new file mode 100644 index 00000000000000..57c4e34c769eec --- /dev/null +++ b/doc/tc-meetings/2014-10-09.md @@ -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 diff --git a/doc/tc-meetings/2014-10-29.md b/doc/tc-meetings/2014-10-29.md new file mode 100644 index 00000000000000..ce64c62ddb0586 --- /dev/null +++ b/doc/tc-meetings/2014-10-29.md @@ -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) diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index c6911373746232..496421b3391a4d 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -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'); @@ -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); diff --git a/lib/net.js b/lib/net.js index 34de98bc3c01ff..d3b10004372867 100644 --- a/lib/net.js +++ b/lib/net.js @@ -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); }; @@ -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; diff --git a/src/node_version.h b/src/node_version.h index ca154026c7fa8e..9497e111d2b3a6 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -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 diff --git a/vcbuild.bat b/vcbuild.bat index 616b5bb114569f..e3e58f3fe33c91 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -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. @@ -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 @@ -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 @@ -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