From b5adeb9994e41aeda47e9ab5ba347c3841d5d228 Mon Sep 17 00:00:00 2001 From: Takashi Nakagawa Date: Mon, 16 Mar 2015 01:44:26 +0900 Subject: [PATCH 1/8] merge changes and translate contribute message --- content/ja/template.json | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/content/ja/template.json b/content/ja/template.json index f5d3584..fd25de7 100644 --- a/content/ja/template.json +++ b/content/ja/template.json @@ -1,12 +1,21 @@ { - "browser-title":"io.js - JavaScript I/O", - "logo-text":"io.js", - "faq-link":"FAQ", - "es6-link":"ES6", - "api-link":"API Docs", - "issues-link":"GitHub Issues", - "org-link":"GitHub Org", - "irc-link":"IRC Chat", - "irc-logs-link":"Logs", - "gov-link":"Governance" + "browser-title": "io.js - JavaScript I/O", + "contribute-message": "知りたい情報がなかったり、書き足したいことがあれば、気軽に https://github.com/iojs/website にコントリビュートしてください。", + "heading-languages": "Languages", + "logo-text": "io.js", + "faq-link": "FAQ", + "es6-link": "ES6", + "api-link": "API Docs", + "issues-link": "GitHub Issues", + "org-link": "GitHub Org", + "irc-link": "IRC Chat", + "irc-logs-link": "Logs", + "gov-link": "Governance", + "downloads": { + "linux": "Linux", + "win32": "Win32", + "win64": "Win64", + "mac": "Mac", + "all": "Others" + } } From 00daf1eda960c3d451d3d6e06a1a126793b096d4 Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Tue, 17 Mar 2015 14:19:57 +0100 Subject: [PATCH 2/8] bumps to latest public build --- public/en/index.html | 46 +++++++++++++++++++++++++++++--------------- public/home.css | 1 + public/ja/es6.html | 2 +- public/ja/faq.html | 2 +- public/ja/index.html | 2 +- 5 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 public/home.css diff --git a/public/en/index.html b/public/en/index.html index c142512..0d72513 100644 --- a/public/en/index.html +++ b/public/en/index.html @@ -11,7 +11,7 @@ - + @@ -34,20 +34,36 @@

JavaScript I/O

-

Bringing ES6 to the Node Community!

-

io.js is an npm compatible platform originally based on node.js™.

-

io.js

-

Version 1.5.1

-

Download for -Linux, -Win32, -Win64, -Mac or -others.

-

Changelog

-

Weekly Update - March 13th featuring core and community updates (Medium) -

Nightly releases are available for testing.

-

Frequently Asked Questions

+ +

+ Bringing ES6 to the Node Community! +

+ +

+ io.js is an npm compatible platform originally based on Node.js™. +

+ +
+ +
+

+ Version 1.5.1 +

+

+ Download for LinuxWin32Win64MacOthers +

+

Changelog

+
+
+ + + +
diff --git a/public/home.css b/public/home.css new file mode 100644 index 0000000..081e89e --- /dev/null +++ b/public/home.css @@ -0,0 +1 @@ +.home-slogan{text-align:center}.home-description{text-align:center;margin-bottom:40px}.home-download{background:#eee;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.home-download a{text-decoration:none}.home-logo{padding:20px 40px 20px 20px}.home-logo img{height:120px}.home-download-details{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.home-download-details p{margin:0;padding:0}.home-download-details .home-download-version{display:block;font-size:1.4rem;font-weight:700;color:#000;border-radius:0 4px 0 0;margin-bottom:20px}.home-download-details .home-download-list{color:rgba(0,0,0,.5);font-size:.9rem;padding-top:0;padding-bottom:0;height:28px;max-height:28px}.home-download-details .home-download-list a:after{content:', '}.home-download-details .home-download-list a:nth-last-child(2):after{content:' & ';color:rgba(0,0,0,.5)}.home-download-details .home-download-list a:last-child:after{content:''}.home-secondary-links{margin-top:40px}.home-secondary-links p{text-align:center} \ No newline at end of file diff --git a/public/ja/es6.html b/public/ja/es6.html index 4c6baad..1d9786c 100644 --- a/public/ja/es6.html +++ b/public/ja/es6.html @@ -216,7 +216,7 @@

io.jsがどのバージョンのV8を使っているか調べるには? - + diff --git a/public/ja/faq.html b/public/ja/faq.html index d1ea6d7..c26e4a2 100644 --- a/public/ja/faq.html +++ b/public/ja/faq.html @@ -120,7 +120,7 @@

オープンソースガバナンスとは?

- + diff --git a/public/ja/index.html b/public/ja/index.html index ac11c58..2c5605c 100644 --- a/public/ja/index.html +++ b/public/ja/index.html @@ -79,7 +79,7 @@

JavaScript I/O

- + From e023daaaffbe84df07ee1767debc6dcd22acf141 Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 11:40:03 +0100 Subject: [PATCH 3/8] #264 #284 pulls version from https://iojs.org/dist/index.json format --- gulp/tasks/download.js | 11 +++++++++++ package.json | 1 + source/project.js | 7 ++++++- source/project.json | 4 ---- source/versions.json | 15 +++++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 gulp/tasks/download.js delete mode 100644 source/project.json create mode 100644 source/versions.json diff --git a/gulp/tasks/download.js b/gulp/tasks/download.js new file mode 100644 index 0000000..1faebe0 --- /dev/null +++ b/gulp/tasks/download.js @@ -0,0 +1,11 @@ +var gulp = require('gulp'); +var fs = require('fs'); +var path = require('path'); +var request = require('request'); + +gulp.task('download', function () { + var dir = path.resolve(__dirname, '..', '..', 'source'); + var outputFile = path.resolve(dir, 'versions.json'); + console.log('updating source/versions.json'); + return request('https://iojs.org/dist/index.json').pipe(fs.createWriteStream(outputFile)); +}); diff --git a/package.json b/package.json index 21b417d..9bb4a11 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "markdown-it": "^3.0.4", "merge-stream": "^0.1.7", "moment-timezone": "^0.3.0", + "request": "^2.53.0", "require-dir": "^0.1.0", "run-sequence": "^1.0.2", "through2": "^0.6.3", diff --git a/source/project.js b/source/project.js index 01d33ce..a10dbd5 100644 --- a/source/project.js +++ b/source/project.js @@ -1,5 +1,10 @@ // temporary merge to help avoid some merge confusion when landed: -var project = require('./project.json'); +var versions = require('./versions.json'); + +var project = {}; + +project.current_version = versions[0].version.replace(/^v/, ''); +project.current_v8 = versions[0].v8; project.languages = require('./languages.js'); diff --git a/source/project.json b/source/project.json deleted file mode 100644 index 1d1d9ab..0000000 --- a/source/project.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "current_version": "1.5.1", - "current_v8": "4.1.0.21" -} diff --git a/source/versions.json b/source/versions.json new file mode 100644 index 0000000..72de8d3 --- /dev/null +++ b/source/versions.json @@ -0,0 +1,15 @@ +[ +{"version":"v1.5.1","date":"2015-03-09","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.5.0","date":"2015-03-06","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.4.3","date":"2015-03-03","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.4.2","date":"2015-02-28","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.4.1","date":"2015-02-27","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.3.0","date":"2015-02-20","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"4.1.0.14","uv":"1.4.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.2.0","date":"2015-02-11","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"4.1.0.14","uv":"1.4.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.1.0","date":"2015-02-03","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.4.1","v8":"4.1.0.14","uv":"1.3.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.0.4","date":"2015-01-24","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.3.0","v8":"4.1.0.12","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.0.3","date":"2015-01-20","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.2.0","v8":"4.1.0.7","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.0.2","date":"2015-01-16","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.0.1","date":"2015-01-14","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}, +{"version":"v1.0.0","date":"2015-01-14","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"} +] From 3f5a5888f7b0f62d0a5cb100ec01d36d108bbe99 Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 13:07:48 +0100 Subject: [PATCH 4/8] =?UTF-8?q?Adds=20=E2=80=9Creleases.html=E2=80=9D=20pa?= =?UTF-8?q?ge=20(proof-of-concept)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/en/template.json | 4 ++++ source/content.js | 4 ++++ source/project.js | 1 + source/styles/releases.styl | 8 ++++++++ source/templates/releases.html | 31 +++++++++++++++++++++++++++++++ 5 files changed, 48 insertions(+) create mode 100644 source/styles/releases.styl create mode 100644 source/templates/releases.html diff --git a/content/en/template.json b/content/en/template.json index 2070d1c..b31ccbf 100644 --- a/content/en/template.json +++ b/content/en/template.json @@ -27,6 +27,10 @@ "slogan": "Bringing {{link 'pages.es6'}} to the Node Community!", "news_link": "{{link 'Weekly Update - March 13th' 'https://medium.com/node-js-javascript/io-js-week-of-march-13th-e3024cc66802'}} featuring core and community updates ({{link 'Medium' 'https://medium.com/node-js-javascript/io-js-week-of-march-13th-e3024cc66802'}})" }, + "releases": { + "title": "io.js Release History", + "downloads": "Downloads" + }, "links": { "nodejs": "Node.js™", "npm": "npm", diff --git a/source/content.js b/source/content.js index 44bd5e8..60d3b96 100644 --- a/source/content.js +++ b/source/content.js @@ -9,5 +9,9 @@ module.exports = { }, "faq": { "url": "faq.html" + }, + "releases": { + "url": "releases.html", + "content": "releases.html" } } diff --git a/source/project.js b/source/project.js index a10dbd5..e6a6a4a 100644 --- a/source/project.js +++ b/source/project.js @@ -5,6 +5,7 @@ var project = {}; project.current_version = versions[0].version.replace(/^v/, ''); project.current_v8 = versions[0].v8; +project.versions = versions; project.languages = require('./languages.js'); diff --git a/source/styles/releases.styl b/source/styles/releases.styl new file mode 100644 index 0000000..f4f9bb3 --- /dev/null +++ b/source/styles/releases.styl @@ -0,0 +1,8 @@ +.releaseTable + width 100% + +.releaseTable-version + font-weight bold + +.releaseTable td + padding 0.5em diff --git a/source/templates/releases.html b/source/templates/releases.html new file mode 100644 index 0000000..af339e1 --- /dev/null +++ b/source/templates/releases.html @@ -0,0 +1,31 @@ +

{{i18n 'releases.title'}}

+ + + + + + + + + + +{{#project.versions}} + + + + + + + + + +{{/project.versions}} +
VersionDatev8npm
{{version}}{{date}}{{v8}}{{npm}} + + {{i18n 'releases.downloads'}} + + + + {{i18n 'links.pages.changelog'}} + +
From ef05dd17becc5ca3a08ed994d5d042a546b0483d Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 13:18:51 +0100 Subject: [PATCH 5/8] =?UTF-8?q?Adds=20=E2=80=9Cdownload=E2=80=9D=20to=20bu?= =?UTF-8?q?ild,=20develop=20tasks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gulp/tasks/build.js | 1 + gulp/tasks/develop.js | 1 + 2 files changed, 2 insertions(+) diff --git a/gulp/tasks/build.js b/gulp/tasks/build.js index 408aa02..6fdf589 100644 --- a/gulp/tasks/build.js +++ b/gulp/tasks/build.js @@ -4,6 +4,7 @@ var runSequence = require('run-sequence'); gulp.task('build', function(cb){ runSequence( 'clean', + 'download', 'content', ['stylus', 'templates'], 'minifyCss', diff --git a/gulp/tasks/develop.js b/gulp/tasks/develop.js index 2c4d407..81837ff 100644 --- a/gulp/tasks/develop.js +++ b/gulp/tasks/develop.js @@ -4,6 +4,7 @@ var runSequence = require('run-sequence'); gulp.task('develop', function(cb){ runSequence( 'clean', + 'download', 'content', ['stylus', 'templates'], ['watch', 'server'], From e2c4882b1f2b7d581255e98905ce7910d308e540 Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 13:42:51 +0100 Subject: [PATCH 6/8] minor: tabbing --- source/templates/releases.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/templates/releases.html b/source/templates/releases.html index af339e1..f6d44c3 100644 --- a/source/templates/releases.html +++ b/source/templates/releases.html @@ -9,7 +9,8 @@

{{i18n 'releases.title'}}

-{{#project.versions}} + + {{#project.versions}} {{version}} {{date}} @@ -25,7 +26,6 @@

{{i18n 'releases.title'}}

{{i18n 'links.pages.changelog'}} - -{{/project.versions}} + {{/project.versions}} From 4b541967af113f4a81fc98414c88c53caf2672fc Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 14:11:00 +0100 Subject: [PATCH 7/8] download: proof-of-concept, bring in external .md content --- gulp/tasks/download.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/gulp/tasks/download.js b/gulp/tasks/download.js index 1faebe0..85c7c09 100644 --- a/gulp/tasks/download.js +++ b/gulp/tasks/download.js @@ -3,9 +3,32 @@ var fs = require('fs'); var path = require('path'); var request = require('request'); +var manifest = { + "content/en/governance.md": "https://raw.githubusercontent.com/iojs/io.js/v1.x/GOVERNANCE.md", + "content/en/working-groups.md": "https://raw.githubusercontent.com/iojs/io.js/v1.x/WORKING_GROUPS.md", + "source/versions.json": "https://iojs.org/dist/index.json" +} + gulp.task('download', function () { - var dir = path.resolve(__dirname, '..', '..', 'source'); - var outputFile = path.resolve(dir, 'versions.json'); - console.log('updating source/versions.json'); - return request('https://iojs.org/dist/index.json').pipe(fs.createWriteStream(outputFile)); + var dir = path.resolve(__dirname, '..', '..'); + var streams = []; + var targets = Object.keys(manifest); + + targets.forEach(function(target) { + console.log('updating', target); + + var source = manifest[target]; + var outputFile = path.resolve(dir, target); + + var promise = new Promise(function(resolve, reject) { + var outStream = fs.createWriteStream(outputFile); + outStream.on('error', reject); + outStream.on('finish', resolve); + var stream = request(source).pipe(outStream); + }); + + streams.push(promise); + }) + + return Promise.all(streams); }); From 2657f32997d48693376cdb44daaa1d6ec0b670f4 Mon Sep 17 00:00:00 2001 From: Sean Ouimet Date: Sun, 15 Mar 2015 14:21:54 +0100 Subject: [PATCH 8/8] Caches local copies of the files from the downloads task --- content/en/governance.md | 135 ++++++++++++ content/en/working-groups.md | 398 +++++++++++++++++++++++++++++++++++ 2 files changed, 533 insertions(+) create mode 100644 content/en/governance.md create mode 100644 content/en/working-groups.md diff --git a/content/en/governance.md b/content/en/governance.md new file mode 100644 index 0000000..13fa6bc --- /dev/null +++ b/content/en/governance.md @@ -0,0 +1,135 @@ +# io.js Project Governance + +## Technical Committee + +The io.js project is jointly governed by a Technical Committee (TC) +which is responsible for high-level guidance of the project. + +The TC has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +Initial membership invitations to the TC were given to individuals who +had been active contributors to io.js, and who have significant +experience with the management of the io.js project. Membership is +expected to evolve over time according to the needs of the project. + +For the current list of TC members, see the project +[README.md](./README.md#current-project-team-members). + +## Collaborators + +The [iojs/io.js](https://github.com/iojs/io.js) GitHub repository is +maintained by the TC and additional Collaborators who are added by the +TC on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the TC and their addition as +Collaborators is discussed during the weekly TC meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a TC member directly and it +will be brought up in the next TC meeting. + +Modifications of the contents of the iojs/io.js repository are made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +TC for discussion by assigning the ***tc-agenda*** tag to a pull +request or issue. The TC should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#current-project-team-members). + +A guide for Collaborators is maintained in +[COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md). + +## TC Membership + +TC seats are not time-limited. There is no fixed size of the TC. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for TC +membership beyond these rules. + +The TC may add additional members to the TC by a standard TC motion. + +A TC member may be removed from the TC by voluntary resignation, or by +a standard TC motion. + +Changes to TC membership should be posted in the agenda, and may be +suggested as any other agenda item (see "TC Meetings" below). + +No more than 1/3 of the TC members may be affiliated with the same +employer. If removal or resignation of a TC member, or a change of +employment by a TC member, creates a situation where more than 1/3 of +the TC membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more TC +members affiliated with the over-represented employer(s). + +## TC Meetings + +The TC meets weekly on a Google Hangout On Air. The meeting is run by +a designated moderator approved by the TC. Each meeting should be +published to YouTube. + +Items are added to the TC agenda which are considered contentious or +are modifications of governance, contribution policy, TC membership, +or release process. + +The intention of the agenda is not to approve or review all patches, +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +TC member or the moderator can add the item to the agenda by adding +the ***tc-agenda*** tag to the issue. + +Prior to each TC meeting the moderator will share the Agenda with +members of the TC. TC members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the TC +cannot veto or remove items. + +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 moderator is responsible for summarizing the discussion of each +agenda item and send it as a pull request after the meeting. + +## Consensus Seeking Process + +The TC follows a +[Consensus Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a TC member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the TC +or else the discussion will continue. Simple majority wins. diff --git a/content/en/working-groups.md b/content/en/working-groups.md new file mode 100644 index 0000000..0e69d7e --- /dev/null +++ b/content/en/working-groups.md @@ -0,0 +1,398 @@ +# io.js Working Groups + +io.js Working Groups are autonomous projects created by the +[Technical Committee (TC)](https://github.com/iojs/io.js/blob/v1.x/GOVERNANCE.md#technical-committee). + +Working Groups can be formed at any time but must be ratified by the TC. +Once formed the work defined in the Working Group charter is the +responsibility of the WG rather than the TC. + +It is important that Working Groups are not formed pre-maturely. Working +Groups are not formed to *begin* a set of tasks but instead are formed +once that work is already underway and the contributors +think it would benefit from being done as an autonomous project. + +If the work defined in a Working Group charter is completed the Working +Group should be dissolved and the responsibility for governance absorbed +back in to the TC. + +## Current Working Groups + +### Website + +The website working group's purpose is to build and maintain a public +website for the `io.js` project. + +Its responsibilities are: +* Develop and maintain a build and automation system for `iojs.org`. +* Ensure the site is regularly updated with changes made to `io.js` like +releases and features. +* Foster and enable a community of translators. + +The current members can be found in their +[README](https://github.com/iojs/website#current-project-team-members). + +### Streams + +The Streams WG is dedicated to the support and improvement of the Streams API +as used in io.js and the npm ecosystem. We seek to create a composable API that +solves the problem of representing multiple occurrences of an event over time +in a humane, low-overhead fashion. Improvements to the API will be driven by +the needs of the ecosystem; interoperability and backwards compatibility with +other solutions and prior versions are paramount in importance. Our +responsibilities include: + +* Addressing stream issues on the io.js issue tracker. +* Authoring and editing stream documentation within the io.js project. +* Reviewing changes to stream subclasses within the io.js project. +* Redirecting changes to streams from the io.js project to this project. +* Assisting in the implementation of stream providers within io.js. +* Recommending versions of readable-stream to be included in io.js. +* Messaging about the future of streams to give the community advance notice of changes. + +Initial members are: +* @chrisdickinson +* @isaacs +* @rvagg +* @Raynos +* @calvinmetcalf +* @sonewman +* @mafintosh +* @timgestson +* @domenic + +### Build + +The build working group's purpose is to create and maintain a +distributed automation infrastructure. + +Its responsibilities are: +* Produce Packages for all target platforms. +* Run tests. +* Run performance testing and comparisons. +* Creates and manages official docker images. +* Creates and manages build-containers. + +The current members can be found in their +[README](https://github.com/iojs/build#people). + +### Tracing + +The tracing working group's purpose is to increase the +transparency of software written in io.js. + +Its responsibilities are: +* Collaboration with V8 to integrate with `trace_event`. +* Maintinence and iteration on AsyncWrap. +* Maintinence and improvements to system tracing support (DTrace, LTTng, etc). +* Documention of tracing and debugging techniques. +* Fostering a tracing and debugging ecosystem. + +The current members can be found in their +[README](https://github.com/iojs/tracing-wg#people). + +### i18n + +The i18n working groups handle more than just translations. They +are endpoints for community members to collaborate with each +other in their language of choice. + +Each team is organized around a common spoken language. Each +language community might then produce multiple localizations for +various project resources. + +Their responsibilities are: +* Translation of any io.js materials they believe are relevant to their +community. +* Review processes for keeping translations up +to date and of high quality. +* Social media channels in their language. +* Promotion of io.js speakers for meetups and conferences in their +language. + +Membership is maintained by each language community. + +* [iojs-bg](http://github.com/iojs/iojs-bg) +* [iojs-bn](http://github.com/iojs/iojs-bn) +* [iojs-cn](http://github.com/iojs/iojs-cn) +* [iojs-cs](http://github.com/iojs/iojs-cs) +* [iojs-da](http://github.com/iojs/iojs-da) +* [iojs-de](http://github.com/iojs/iojs-de) +* [iojs-el](http://github.com/iojs/iojs-el) +* [iojs-es](http://github.com/iojs/iojs-es) +* [iojs-fa](http://github.com/iojs/iojs-fa) +* [iojs-fi](http://github.com/iojs/iojs-fi) +* [iojs-fr](http://github.com/iojs/iojs-fr) +* [iojs-he](http://github.com/iojs/iojs-he) +* [iojs-hi](http://github.com/iojs/iojs-hi) +* [iojs-hu](http://github.com/iojs/iojs-hu) +* [iojs-id](http://github.com/iojs/iojs-id) +* [iojs-it](http://github.com/iojs/iojs-it) +* [iojs-ja](http://github.com/iojs/iojs-ja) +* [iojs-ka](http://github.com/iojs/iojs-ka) +* [iojs-ko](http://github.com/iojs/iojs-ko) +* [iojs-mk](http://github.com/iojs/iojs-mk) +* [iojs-nl](http://github.com/iojs/iojs-nl) +* [iojs-no](http://github.com/iojs/iojs-no) +* [iojs-pl](http://github.com/iojs/iojs-pl) +* [iojs-pt](http://github.com/iojs/iojs-pt) +* [iojs-ro](http://github.com/iojs/iojs-ro) +* [iojs-ru](http://github.com/iojs/iojs-ru) +* [iojs-sv](http://github.com/iojs/iojs-sv) +* [iojs-ta](http://github.com/iojs/iojs-ta) +* [iojs-tr](http://github.com/iojs/iojs-tr) +* [iojs-tw](http://github.com/iojs/iojs-tw) +* [iojs-uk](http://github.com/iojs/iojs-uk) +* [iojs-vi](http://github.com/iojs/iojs-vi) + +### Evangelism + +The evangelism working group promotes the accomplishments +of io.js and lets the community know how they can get involved. + +Their responsibilities are: +* Project messaging. +* Official project social media. +* Promotion of speakers for meetups and conferences. +* Promotion of community events. +* Publishing regular update summaries and other promotional +content. + +The current members can be found in their +[README](https://github.com/iojs/evangelism#people). + +### Roadmap + +The roadmap working group is responsible for user community outreach +and the translation of their concerns into a plan of action for io.js. + +The final [ROADMAP](./ROADMAP.md) document is still owned by the TC and requires +the same approval for changes as any other project asset. + +Their responsibilities are: +* Attract and summarize user community needs and feedback. +* Find or potentially create tools that allow for broader participation. +* Create Pull Requests for relevant changes to [Roadmap.md](./ROADMAP.md) + +The current members can be found in their +[README](https://github.com/iojs/roadmap#people). + +## Starting a WG + +A Working Group is established by first defining a charter that can be +ratified by the TC. A charter is a *statement of purpose*, a +*list of responsibilities* and a *list of initial membership*. + +A working group needs 3 initial members. These should be individuals +already undertaking the work described in the charter. + +The list of responsibilities should be specific. Once established these +responsibilities are no longer governed by the TC and therefore should +not be broad or subjective. The only recourse the TC has over the working +group is to revoke the entire charter and take on the work previously +done by the working group themselves. + +If the responsibilities described in the charter are currently +undertaken by another WG then the charter will additionally have to be +ratified by that WG. + +You can submit the WG charter for ratification by sending +a Pull Request to this document which adds it to the +list of current Working Groups. Once ratified the list of +members should be maintained in the Working Group's +README. + +## Bootstrap Governance + +Once the TC ratifies a charter the WG inherits the following +documentation for governance, contribution, conduct and an MIT +LICENSE. The WG is free to change these documents through their own +governance process, hence the term "bootstrap." + +### *[insert WG name]* Working Group + +The io.js *[insert WG name]* is jointly governed by a Working Group (WG) +which is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The *[insert WG name]* GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the weekly WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the *[insert WG repo]* repository are made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#current-project-team-members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets weekly on a Google Hangout On Air. The meeting is run by +a designated moderator approved by the WG. Each meeting should be +published to YouTube. + +Items are added to the WG agenda which are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches, +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and send it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require unanimous consensus. See +"WG Membership" above. + +### 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")