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/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