-
-
Notifications
You must be signed in to change notification settings - Fork 142
meta: proposal for revised governance #263
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,332 @@ | ||
| # A Proposal for the Governance Structure of the Node.js Project | ||
|
|
||
| ***This is a work in progress. Comments are definitely quite welcome.*** | ||
|
|
||
| The effort of the Node.js project since the establishment of the Node.js | ||
| Foundation has been to empower a larger collective of contributors bound through | ||
| the common goal of making Node.js a strong and stable platform for all uses and | ||
| users. | ||
|
|
||
| When launching the Foundation, working to bring Node.js and io.js back together, | ||
| and working to heal many of the rifts that had emerged among the contributors, | ||
| a governance structure was put in place that was modeled almost directly off | ||
| that adopted by the io.js project. | ||
|
|
||
| Now, two years later, the project has grown significantly in size and scope. | ||
| The number of contributors has increased significantly, a number of new vital | ||
| and active Working Groups have been chartered, and the Core Technical Committee | ||
| has grown to over 20 individual members. It is no stretch of the imagination to | ||
| say that our collective efforts over the past two years have been a resounding | ||
| success. | ||
|
|
||
| That said, it is vital to continually self-evaluate the effectiveness of our | ||
| governing structure and evolving when necessary so that it better reflects the | ||
| project that we are creating and the community we are supporting. To this end, | ||
| I have a proposal. | ||
|
|
||
| ## Review of Current Structure and Limitations | ||
|
|
||
| The vast majority of day-to-day activity and decision making within the Node.js | ||
| project occurs through interactions among individual contributors in GitHub | ||
| threads. Some of these occur within the context of chartered working groups, | ||
| some within informal teams, most just within issues and pull requests in the | ||
| various repositories. | ||
|
|
||
| When disagreements arise, or when consensus cannot be reached on any particular | ||
| issue, the issue is generally escalated to the Core Technical Committee for | ||
| resolution. The CTC reviews the issue and attempts to come to consensus on its | ||
| own. If it can reach consensus through discussion, a decision will be made. | ||
| Otherwise, a vote can be called for to resolve the issue. The key point is that | ||
| the CTC is intended to serve only as a backstop for times when consensus cannot | ||
| be easily established. | ||
|
|
||
| The Technical Steering Committee, on the other hand, is expected to deal with | ||
| administrative and business focused details of the project. This includes | ||
| interfacing with the Node.js Foundation Board of Directors, using allocated | ||
| funds, defining and enforcing governance and participation policies, and overall | ||
| management of necessary project resources (e.g. oversight of the GitHub | ||
| repositories, etc). | ||
|
|
||
| Chartered working groups are formal collections of individual contributors who | ||
| share a common interest in a particular area of the Node.js project. These have | ||
| an official charter that is approved by either the CTC or TSC and are supposed | ||
| to be given full autonomy over specific aspects of the project. Through their | ||
| charter, they are empowered to make decisions relevant to the areas of the | ||
| project they have been granted authority over, and to refer to the CTC or TSC | ||
| only when consensus cannot be reached, or when decisions have impact on areas | ||
| beyond their chartered scope. | ||
|
|
||
| Teams are informal collections of individual contributors. They are very similar | ||
| to Working Groups but are not chartered and are not given full control to make | ||
| decisions over any particular area. Teams may be formed at any time but must | ||
| defer to either a Working Group, CTC or TSC for authority. | ||
|
|
||
| All Working Groups and teams are free to determine whatever process they wish | ||
| to have for membership and decision making so long as those do not run counter | ||
| to the basic, fundamental policies established by the TSC or CTC. | ||
|
|
||
| The membership of the TSC and CTC are individual based. Members are selected by | ||
| the existing members based on fairly arbitrary criteria. Generally, nominated | ||
| members are selected based on how the existing members view the newcomers | ||
| contributions and commitment to the project, as well as consideration of their | ||
| ability to lead and conduct themselves in a manner that helps build consensus. | ||
|
|
||
| What is interesting, and most limiting, about the TSC and CTC membership | ||
| policies, however, is that (a) there is no time limit associated with individual | ||
| membership, (b) there are no guidelines around participation beyond the recently | ||
| passed rules for TSC members, and (c) there is no direct link between the | ||
| individual contributors selected for participation in the CTC/TSC and the | ||
| various Working Groups that are granted authority over key areas of the project. | ||
| This is limiting in a number of ways: | ||
|
|
||
| * Membership growth is theoretically unbounded in that new individual members | ||
| can be added indefinitely as the project grows. | ||
| * There is no incentive for existing members to “rotate out” of their existing | ||
| seats when their personal level of activity in the project declines or when | ||
| there are no issues being discussed that they are interested in. | ||
| * Most of the work within the project is being done within the working groups | ||
| but there is no direct representation of the working groups in the CTC or TSC. | ||
| While many of the individual members of the CTC and TSC happen to be members | ||
| of chartered working groups, decision making is still done on an individual | ||
| member basis. This means that it is possible (and likely) for a working group | ||
| member sitting on the TSC or CTC to cast votes that may run counter to the | ||
| consensus of a working group in which the individual is a member. | ||
| * The current structures of both the CTC and TSC make it difficult to understand | ||
| what is happening within the chartered working groups. | ||
|
|
||
| The proposal that follows is specifically geared towards dealing with these | ||
| limitations through what is ultimately a fairly radical restructuring. The goals | ||
| of this restructuring are straightforward: | ||
|
|
||
| * Empower chartered working groups to take full ownership over their areas of | ||
| responsibility. | ||
| * Empower individual working group members to play a more active role in the | ||
| evolution of the Node.js project. | ||
| * Lessen the reliance on individual “core” decision makers. | ||
| * Ensure that the overall governance model of the project more accurately | ||
| reflects the actual decision making processes followed. | ||
|
|
||
| ## Proposal | ||
|
|
||
| What I am proposing is a revised TSC/CTC structure such that: | ||
|
|
||
| 1. The TSC/CTC are generally folded back into a single administrative body | ||
| called the TSC. | ||
| * A Core Working Group with responsibility for overseeing the core Node.js | ||
| project (nodejs/node) is chartered (this is essentially what the CTC is | ||
| today) | ||
| * A special Admin team with responsibility over budget allocations and other | ||
| administrative actions would be established. | ||
| 2. The individual voting member seats in the TSC would be eliminated. Each | ||
| chartered working group would be granted a single voting seat within the TSC. | ||
| When a vote is required, each working group decides for itself the process it | ||
| will follow for exercising its one vote. The only requirement is that when a | ||
| vote is to be registered, there must be public documentation that details how | ||
| the vote was determined (could be meeting minutes, for instance). | ||
| 3. The TSC meeting schedule would be moved to one TSC meeting per month, on a | ||
| rotating time schedule. | ||
| * The meeting may be in person or fully remote. | ||
| * The meeting would consist of a public portion only. | ||
| * Any documented member of any chartered working group may attend. | ||
| * Anyone who is not a current member of a chartered working group may attend | ||
| on invitation from a chartered Working Group member. | ||
| * The meeting would include a review of working group activities as opposed | ||
| to an individual stand-up. | ||
| 4. Most decisions are made within the working groups. Any working group member | ||
| may escalate any decision by any working group by tagging it as `tsc-review` | ||
| and at-mentioning the other working groups that should review that decision. | ||
| As much as possible, an attempt should be made to resolve the issue through | ||
| discussion on GitHub. If the tagged issue is not determined to be resolved | ||
| in time for the monthly TSC meeting, the TSC Chair (and only the TSC Chair) | ||
| may escalate it to `tsc-agenda` for discussion at the meeting. | ||
| * If it appears clear that consensus cannot be reached on an issue tagged | ||
| `tsc-agenda` through regular discussion on GitHub or at the TSC meeting, | ||
| any working group member may tag the issue as `tsc-vote`, which must be | ||
| seconded by at least one other working group member. | ||
| * Issues marked `tsc-vote` would go to a vote of chartered working groups. | ||
| Working group votes would be collected via GitHub comments on the issue, | ||
| with links to the documentation describing how the vote was reached. The | ||
| vote will be completed when either enough votes are received to consider | ||
| the matter decided, or by the next TSC meeting (whichever comes first). | ||
| Any votes not registered by the next TSC meeting would be considered to | ||
| be abstentions. | ||
| 5. New working groups would be chartered only through consensus or vote of all | ||
| other chartered working groups. (The Core Working Group would not charter its | ||
| own working groups) | ||
| 6. The TSC Chair and TSC Director positions remain with an annual election. Any | ||
| member of a chartered working group is eligible to run for either seat. All | ||
| documented members of the working groups would vote for the candidates. | ||
| * It will be the job of the TSC Chair to organize the agenda for, and | ||
| conduct, the monthly TSC meetings. | ||
| * It will be the job of the TSC Director to sit on the Node.js Board of | ||
| Directors and serve as the interface between the TSC and the Board. The | ||
| TSC Director would serve also as the Chair of the Admin team. | ||
| 7. As part of the chartered responsibilities, every working group would | ||
| nominate one member for participation in the Admin team. If a working group | ||
| chooses, it may request to opt out of this requirement during the charter | ||
| process. Additional people may be added to the Admin team through consensus | ||
| of the existing members. As with any issue, adding members is subject to | ||
| `tsc-review` and `tsc-vote`. | ||
| 8. Note that, from time to time, the Node.js Foundation must share confidential | ||
| details about various topics with the TSC. In such cases, this information | ||
| would be shared with the Admin team, which would pass those on to the larger | ||
| TSC only on approval of the Node.js Foundation Board. | ||
| 9. The Core Working Group would consist of the current members of the CTC and | ||
| would retain oversight over the Node.js core project. While the working | ||
| group would continue to be free to determine it’s own process for | ||
| establishing consensus (including voting if it chooses), decisions that | ||
| affect the areas of responsibility granted to other chartered working groups | ||
| must be made in coordination with those working groups. This means, for | ||
| instance, when the Core Working Group has an issue that affects Streams, the | ||
| Core Working Group must involve the Streams Working Group in the decision, | ||
| and that if consensus cannot be achieved, the issue would go to a discussion | ||
| among the full TSC (e.g. tagged as `tsc-review`). | ||
|
|
||
| ## Questions | ||
|
|
||
| ### What additional process does this require for Working Groups? | ||
|
|
||
| Very little, in fact. Working groups could continue to operate as they do today. | ||
| If the working group wished to do so, it could choose to opt out of | ||
| participating in the Admin team. The working group could also choose not to | ||
| appoint a chair, and could adopt any process it wanted to determining how to | ||
| exercise its votes on the (hopefully) rare occasions when a vote is needed. The | ||
| only additional requirement would be that the working group would be required to | ||
| publish how it came to consensus on the vote. | ||
|
|
||
| ### What additional benefit does this provide to Working Groups? | ||
|
|
||
| Working groups would actually have more direct control over their areas of | ||
| responsibility. The Core Working Group would no longer be in the critical path | ||
| for decisions. Only if consensus cannot be reached within the working group | ||
| would matters be escalated up to a discussion among all chartered working | ||
| groups, among which the Core Working Group would have an equal voice (as | ||
| opposed to the sole deciding voice). | ||
|
|
||
| ### Would Working Groups be required to name a Chair? | ||
|
|
||
| No. How a working group conducts its business is entirely up to the working | ||
| group. The only requirement is clear, public documentation of any decisions | ||
| that are made. | ||
|
|
||
| ### What happens to the ctc-agenda and ctc-review labels? | ||
|
|
||
| Matters that require escalation go to their respective working groups for | ||
| consideration. For instance, anything involving Streams would fall under the | ||
| Streams Working Group area of responsibility. It would be the responsibility of | ||
| the Streams Working Group to resolve the issue and would only be escalated to | ||
| consideration by all Working Groups if consensus cannot be reached at that | ||
| level. | ||
|
|
||
| Any area of core not currently assigned to a chartered working group falls, by | ||
| default, to the Core Working Group. | ||
|
|
||
| ### What about the weekly CTC meetings? | ||
|
|
||
| The CTC evolves into the Core Working Group. It would still define it’s own | ||
| processes and its own meeting schedule. | ||
|
|
||
| ### Why are working groups required to have someone on the Admin team? | ||
|
|
||
| This is to ensure proper representation among the working groups when key | ||
| decisions are made with regards to budget allocation and administrative actions | ||
| such as moderation enforcement. Each working group is free to determine how it | ||
| chooses the individual to sit on the Admin team, and may choose to opt out of the | ||
| responsibility when the working group is chartered. A working group that has | ||
| opted out may ask to join the Admin team at any time, and it would be up to the | ||
| existing members of that WG to decide the membership policy. | ||
|
|
||
| ### Why is the TSC Director the chair of the Admin team? | ||
|
|
||
| This is primarily for logistical reasons. The Admin team will be responsible for | ||
| dealing with budget allocations and administrative tasks that involve | ||
| interfacing with the Node.js Foundation. The TSC Director will be the primary | ||
| touch point for such activities. This also echoes the situation in the | ||
| Community Committee where the individual member representatives on the board | ||
| share the Community Committee chair responsibilities. | ||
|
|
||
| ### This takes some power away from the CTC! | ||
|
|
||
| Yes and no. The Core Working Group (or what we call the CTC today) would still | ||
| have overall responsibility for nodejs/node for any aspect that is not | ||
| specifically delegated to another working group (like Streams, for instance). | ||
|
|
||
| For items that are under Core's responsibility, the Working Group would still | ||
| retain the ability to make decisions following whatever process it chooses | ||
| (likely no different than the process we have today in the CTC). However, for | ||
| areas that have been delegated to other working groups, those working groups | ||
| make the decisions, with any working group member having the ability to | ||
| escalate any discussion/decision to `tsc-review`. | ||
|
|
||
| ### It will take longer to get things done! | ||
|
|
||
| I disagree. I shouldn't take any longer than it does today. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we move this "agree/disagree" stuff out of the doc? |
||
|
|
||
| The goal is for working groups to be more empowered to make decisions on their | ||
| own as much as possible. There will be less need to push decisions to the CTC | ||
| and TSC and therefore less process around making decisions. | ||
|
|
||
| ### This just means we’ll have more Working Groups! | ||
|
|
||
| I disagree. Working groups will carry with them a certain amount of required | ||
| process. Chartering a new working group would also require consensus of all the | ||
| other working groups, which means that there would be a fairly high bar to | ||
| adding a new working group. This would mean that the growth of the number of | ||
| voting seats would be much slower and manageable than the current potentially | ||
| unbounded growth. | ||
|
|
||
| ### One monthly TSC meeting in which anyone can participate sounds like chaos! | ||
|
|
||
| It will require better logistical planning, yes, but other groups (such as | ||
| TC-39 for instance) pull off such meetings with very little difficulty. It | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. TC-39's process also ends up with a significantly larger amount of backchanneling, which I'd really like to avoid.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In our case, the "backchannel" occurs in public GitHub threads, which is where we want to drive the discussion anyway.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think the important part about this is that working groups will be encouraged to reach consensus before bringing an issue to the TSC. The TSC is a check point rather than a gauntlet.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is not guaranteed to however. An increased amount of politics from WGs could end up in increased off-github backchanneling. We just need to be aware of that this could happen.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed. |
||
| will be the responsibility of the TSC Chair to pull together the agenda, and | ||
| to ensure that there is adequate time for each working group to provide an | ||
| update on its recent activity and priorities, as well as time to discuss any | ||
| open `tsc-agenda` items. | ||
|
|
||
| ### What would happen to the existing working groups? | ||
|
|
||
| Existing working groups would essentially be rechartered under this new process | ||
| with a few notable changes. Specifically: | ||
|
|
||
| * The working groups would not be chartered by the CTC (or Core Working Group). | ||
| Only the TSC would charter working groups. | ||
| * Working groups would be expected to nominate one of their members to the | ||
| Admin team. | ||
| * Working groups would be expected to have a bit more process around documenting | ||
| who their members are. | ||
| * Several of the existing working groups would be restructured: | ||
| * Core Working Group (current CTC) | ||
| * Infrastructure and Tools Working Group | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This "Infrastructure and Tools" WG is very broad, at the moment there's very little overlap between each of these (there is some), so how would they conduct business as a WG? How would an overseeing body manage a disparate group like this and choose a representative for TSC/Admin from amongst itself that would be able to represent all of these interests? The argument for combining them is good I think, the activity that happens in these groups is very bursty and technical and hard to justify any of them as their own WG under this model (I think), but the mechanics of combining them is also tricky. Thoughts?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep in mind that WGs maintain their own process. The minimal requirement would be figuring out how to use their one vote and putting someone on the Admin team if they want. In all other regards, a "Infrastructure and Tools WG" that is made up of these disparate teams doesn't have to be that organized at all and the teams can continue to operate as they currently do. When it comes to joint decisions like who to nominate for the Admin WG or how to use their vote, each of the teams could have it's own vote within the WG. Or... it might simply not make sense combine them like this at all :-)
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We may want to consider flattening these structures. The problem with this approach is that there is rarely a person involved enough in all these teams (Build + Website + Localizations, LTS + Release + Docker) to accurately represent them. If you flatten these structures you end up with a more natural representation scheme. Once a WG is large enough to need a chair there's a natural path to representing them in the CTC/TSC. Prior to that, they are just unlikely to seek representation. Take the "Release and Support Working Group" example. There's certainly enough work happening in LTS and Release to justify two votes and enough coordination for two chairs to emerge. Docker, probably not, and that's fine. These WGs and teams grow pretty organically and if we can give them more natural paths to representation, rather than attempting to impose a topic hierarchy on that representation, we may have an easier path. |
||
| * Build Team | ||
| * Website Team | ||
| * Localization Teams (i18n / translation teams) | ||
| * Release and Support Working Group | ||
| * LTS Team | ||
| * Release Team | ||
| * Docker Team | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The docker team (WG?) is not very related to the rest of the release process...
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, it may make sense to keep that out...
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Docker might make more sense under build |
||
| * Streams API Working Group | ||
| * Intl API Working Group | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can this (Intl API) still be justified as a WG? is there enough activity or people involved in this work to make it something separate from core?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. INTL could be under build, or potentially rolled into Core
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Probably not. There's not much activity. |
||
| * Node.js API Working Group | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Native API WG" |
||
| * N-API Team | ||
| * NaN Team | ||
| * Diagnostics and Performance Working Group | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The Diag group already has enough to discuss, I think generally the perf group as it stands today should probably be informal.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note that the work groups here are organized this way only for purposes of the vote, not in terms of what they actually do day to day. In other words, putting these together under the same chartered work group would not require them to work any differently than they currently do, it just means that on the rare occasion that a vote comes up, they would vote together as a single block. It still might not make any sense for them to vote as a block, of course.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmmm, perhaps. I will need longer to think about that. |
||
| * Diagnostics Team | ||
| * Post-Mortem Team | ||
| * Benchmarking Team | ||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. security?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wasn't sure where to put that. |
||
| Note that the Admin team is not a working group and would not have a voting | ||
| seat. | ||
|
|
||
| The Evangelism Working Group would be moved to the Community Committee. | ||
|
|
||
| ### What about the current TSC Director and Chair positions? | ||
|
|
||
| Following adoption of the new model, the proposal is that a new election would | ||
| be held. Any documented member of a chartered working group would be eligible | ||
| to run for either position. Self-nominations only, with all nominations being | ||
| secret until a week before the ballot opens. Then each candidate would be asked | ||
| to post a short summary about what they envision for the role and what they are | ||
| looking to accomplish. Vote would be cast by all documented working group | ||
| members following a single transferable vote model with the winner announced | ||
| at the next TSC meeting. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suppose it is already fairly difficult to charter a WG but this might make it even worse?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know if it would make it any worse. The steps are all pretty much the same as they are today. The only change is on who votes for the final charter.