Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

meta: proposal for revised governance #263

Closed
wants to merge 4 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 227 additions & 0 deletions proposals/revised-governance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
# A Proposal for the Governance Structure of the Node.js Project

## What problems are being addressed?

* The TSC as it exists today is largely disfunctional.

## tl;dr version

This proposal eliminates the TSC as a standing body of individual voting
members and instead distributes the decision making authority previously
held by that standing body to the chartered working groups.

This proposal does not change the CTC in any way other than in terms of how
new working groups are chartered.

## Proposal

What I am proposing is a revised TSC structure such that:

1. Eliminate the TSC standing membership body. Rather than individual voting
TSC members, each chartered working group has a single voting seat. It is
up to each working group to decide on its own process for exercising that
vote.
2. An Admin team would be created that would be charged with handling the
more mundane administrative tasks currently handled by the TSC (budget
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you omit more mundane, it diminishes the work.

allocations, github org management, handling confidential information).
Tasks like administering the travel fund could be handed off to the
Community Committee. This admin team would not be a voting body.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be the team that maintains ownership rights on github?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally, yes. The members of the Admin team would have github org ownership rights.

3. There would be only one TSC meeting per month.
* The meeting may be in person or fully remote.
* The meeting would consist of a public portion only that includes a
stand up of *working group* activities and issues, and discussion of
escalated issues.
* Any working group member may attend.
* Anyone who is not a working group member may attend on invitation from a
working group member.
4. The TSC Chair and TSC Director positions remain with an annual election.
* Any working group member is eligible to run for either seat and all working
group members would vote.
* The TSC Chair organizes the agenda for, and conducts, the monthly meeting.
* The TSC Director sits on the Node.js Board of Directors and chairs the
Admin team.
5. Any working group member may request to participate in the Admin team, and
the Admin team may have a process for adding non-working group members.
All Admin team members are subject to consensus or vote by the working
groups.
6. The CTC does not change with the exception that it does not charter its own
working groups.
7. Working groups would be chartered through consensus of all the working
groups, including the CTC. The CTC would not have sole ability to override
a working group decision. If the CTC objected to a decision made by
chartered working group, the final decision would be made through consensus
or vote of all the working groups.

## Questions

### Why not simply fold the TSC and CTC back together?

For the simple reason that doing so does not address the cause of the
disfunction.

Also, the reason the TSC and CTC were split in the first place was because the
overwhelming majority of CTC members do not want to deal with the administrative
tasks delegated to the TSC, and I imagine that is still the case. We would still
need an Admin team to handle those tasks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving the admin team to the ComCom team would seem to address this concern.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very in favor of this!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't believe that would work entirely because the Admin team would, in fact, also be handling matters that are specific to the Node.js project. For instance, adding or removing people from teams, repository management, team management, etc... generally any of the GitHub owner role tasks. Also, the Admin team would essentially serve as the go between for the Foundation and this new TSC. On the rare occasion confidential details needed to be shared with the project, for instance --- which has happened from time to time.

This is not to say that some responsibilities could not be shifted. For instance, administration of the travel fund could easily move over to CommComm, as could issues around Code of Conduct and moderation. (I would like to see the CommComm come up with a moderation policy before we switched that over entirely tho). The point, however, is that there will always be a certain amount of administrative overhead in Core itself that cannot be delegated.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One distinct possibility is that the Admin team is actually shared across TSC and CommComm, and co-chaired by the TSC Director and CommComm Chair.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could always be two admin working groups, one for each committee.

### Why working group votes?

Currently, the TSC is the final arbiter on contentious decisions. If the CTC
made a decision that a collaborator disagreed with, the issue can be flagged
for TSC review and decision. While this *hardly ever happens*, it is an
important step. The working group votes would only exist to preserve the
ability to escalate issues in the exremely rare case it becommes necessary.
But, rather than having a standing body of individuals decide the matter, it
goes to a consensus of the working groups instead. It should be exceedingly
rare for this to actually happen tho.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has it ever happened were the TSC was asked to review and /or overrule the CTC ? I cant' remember this happening but may have overlooked something.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope. And I wouldn't expect it to happen very frequently or at all. In this sense, the voting under this proposal is a backstop. Most likely, the only time the WG's would be likely to actually use their TSC vote would be for governance updates (e.g. a charter changes). I would expect the vast majority of issues to be resolved through discussion and consensus.


### What additional process does this require for Working Groups?

Exceedingly little. Working groups would generally continue to operate as they
do today.

The two additional requirements are that:

* On the rare occasion that a TSC vote is required, the working group would
need to determine whether and how to exercise its vote.
* Working groups would need to more formally document their membership

### What additional benefit does this provide to Working Groups?

Working groups would have more direct control over their areas of
responsibility.

For instance, if a working group wanted to bring in a new project that fell
within it's area of responsibility, the only requirement would be to ask if
there are any objections from the other working groups. It would not require
a vote of the individual TSC members as is currently required. Rather, as
long as there are no objections, the working group would just do what it feels
it needs to do.

### Would Working Groups be required to name a chair?

No. Again, working groups would continue to work however the working groups
choose to work.

### Would individuals be forced into participating in particular ways?

For instance, would technical people be forced to do administrative stuff?

No. This proposal does not change, in any way, how individuals paticipate in
the project. Those who care only about the technical side of things can
continue to keep focusing on the technical side.

What this proposal does do, however, is open the opportunity for anyone who
*wants* to participate in the administrative side of things to do so.

### How does this effect the CTC?

It doesn't really. The CTC processes are generally not impacted by this with
exception only to how new working groups are chartered and how issues escalated
to the TSC level are resolved. The proposal does not change how the CTC works
at all.

### Why would working groups nominate someone to the Admin team?

This would be 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. It's entirely up to the working group to
decide if this is something they need or want.

### 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.

### It will take longer to get things done!

It shouldn't take any longer than it does today.

### This just means we’ll have more Working Groups!

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
Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Member Author

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Member Author

Choose a reason for hiding this comment

The 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:

* New working groups would not be chartered solely by the CTC.
* Working groups would be encouraged to nominate one of their members to the
Admin team. (preferably someone actually willing to do administrative stuff)
* Working groups would be expected to have a bit more process around documenting
who their members are.
* Several of the existing working groups *could* be restructured *solely for
the purpose of voting*. This restructuring *does not change* how the teams
actually get things done or how people participate in them:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the members of the existing WG's continued to operate as they do today, with teams for each of the groups that are being merged, then additional meetings that span all of the sub-teams would likely be required for anything related to a vote. I don't see everybody from the build team wanting to be involved in all of the Website team discussions and vice versa.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think website might be under the prevue of comm comm

tbqh I think it might make sense to start from scratch when thinking about what the high level wgs might look like and then start pairing them up with current initiatives

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we really need to stop trying to organize these WGs into topic categories.

all of these WGs are made of people. in some cases these people have years of contributions and accomplishments in these working groups. in the case of the website there is also years of coordination with other WGs (Core, Build, i18n, foundation staff, evangelism).

i'm concerned that we're looking at this like some sort of executive decision that a top level group is going to make without the input of the people actually doing the work and invested in the working group.

if CommComm wants a WG to join they need to make that case to that WG and not to the TSC/CTC.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be quite honest, a strong case could be made that the Website should be it's own standalone top level project altogether in partnership with the Foundation marketing committee. It serves as a resource for the Foundation, for Core, and for CommComm.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with Mikeal. CommComm or the TSC can certainly ask a WG if they would like to move, but it is ultimately the WG's decision (and should be).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, I've proposed an addition to the README calling out a distinction that is not currently obvious. nodejs/nodejs.org#1231

The Website WG is primarily concerned with the code and structure of the website, not with the content of the website. Whenever possible, editorial control over the content is deferred to the relevant working groups.

I don't know if you could make a TLP out of this relationship because Evangelism and i18n are doing more than just website content. Also, Core and Release have final authority over content related to downloading versions and noting release lines, and I don't see them coming under a Website TLP ;)

* CTC
* Infrastructure and Tools Working Group
* Build Team
* Website Team
* Localization Teams (i18n / translation teams)
* Release and Support Working Group
* LTS Team
* Release Team
* Docker Team
Copy link
Contributor

Choose a reason for hiding this comment

The 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...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, it may make sense to keep that out...

Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Member

Choose a reason for hiding this comment

The 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?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

INTL could be under build, or potentially rolled into Core

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably not. There's not much activity.

* Node.js API Working Group
Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Member Author

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't sure where to put that.

Each chartered working group would have 1 TSC level vote. 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.

### Build, Website and Localization in one working group?!

This is solely for the purpose of voting. These would still be separate teams
that would operate however they choose to operate. This proposal would not
suddenly force working groups to have meetings, or force them to interact in
any particular way. Having Build and Website under the same working group,
for instance, would not mean that people only interested in build stuff would
have to get involved with website stuff, and vice versa. What it means is that,
when the rare occasion for a TSC level vote happens to come up, these teams
vote as a single block. That's it. That's the extent of the requirement.

Likewise with the Release and Support Working Group. Having the Release and
LTS teams under this one working group does not mean that everyone on the
release team has to participate in LTS team meetings and backporting sprints,
etc. In fact, there would really be no reason at all for these teams and the
individuals who participate in them to change anything at all about how they
currently operate. The *only* difference is that when the rare TSC vote comes
up, they vote as a single block.

### 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.