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

charter: add TSC membership terms, mandatory mediation, and removal requirements #318

Closed
wants to merge 14 commits into from
102 changes: 94 additions & 8 deletions TSC-Charter.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,27 @@ approved by the Board.

## Section 4. Establishment of the TSC.

TSC memberships are not time-limited. There is no maximum size of the TSC.
The size is expected to vary in order to ensure adequate coverage of important
areas of expertise, balanced with the ability to make decisions efficiently.
The TSC must have at least three members.
TSC memberships are for one year terms that must be recertified. Motions for
Copy link
Contributor

Choose a reason for hiding this comment

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

One year from... date of original addition / last recertification?

Copy link
Member Author

Choose a reason for hiding this comment

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

The intention is all at once, once per year.

Copy link
Member

Choose a reason for hiding this comment

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

The intention is all at once, once per year.

I'm not going to expend a lot of effort trying to change this, but I'll say that I'd prefer it be rolling so that there is a rhythm. "What two or three people need to be recertified this month? And who is up for recertification next month?" instead of "Oops, did we go two-and-a-half years without recertifying anyone again?" (Sort of what happened with the TSC Director/Chair position at last once, no?)

Copy link
Member

Choose a reason for hiding this comment

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

I would prefer 2 year terms.

recertification are automatic and require a vote. Members are recertified if a
simple majority of TSC members vote in favor of recertifying the individual as
a TSC member. Such members will continue through the next year's term.
Individuals failing recertification may return to the TSC after no less than
six months following normal TSC motion.
Copy link

Choose a reason for hiding this comment

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

Does the TSC member's own vote count in recertification?

How is a tie in a recertification vote resolved?

Copy link
Member Author

Choose a reason for hiding this comment

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

A tie would be less than simple majority so the individual would not be recertified.

No, their vote for themselves wouldn't count. I can clarify that.

Copy link
Contributor

Choose a reason for hiding this comment

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

Please do.

Copy link
Contributor

Choose a reason for hiding this comment

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

Is there precedent for one's own vote for oneself not counting in other processes? With most board voting the vote for oneself, if you have the right to vote, counts.


There is no maximum size of the TSC. The size is expected to vary in order to
ensure adequate coverage of important areas of expertise, balanced with the
ability to make decisions efficiently. The TSC must have at least three members.
Copy link

Choose a reason for hiding this comment

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

I would suggest a higher number, at least 5, given the TSC’s responsibility 3 people is to few. I would also suggest to document what happens if the number falls below the minimum.

Another topic that might fit better into a follow up pull request is to require "active" members, and define what "active" means, to avoid a situation where people are voted into the board without fulfilling their responsibilities.

Copy link
Member Author

Choose a reason for hiding this comment

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

-1 on making the minimum five. What happens if the number falls below this is the responsibility of the Node.js Foundation Board to determine.

Copy link
Member Author

Choose a reason for hiding this comment

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

Regarding "active" members, the TSC recently passed modification to the TSC Charter that includes specific guidelines around TSC member activity. Specifically, there is a minimum participation requirement already covered by the charter.

Copy link
Member

Choose a reason for hiding this comment

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

Another topic that might fit better into a follow up pull request is to require "active" members, and define what "active" means, to avoid a situation where people are voted into the board without fulfilling their responsibilities.

@gr2m FYI, this section of the charter includes these minimum requirements to stay active:

In the case where an individual TSC member -- within any three month period -- attends fewer than 25% of the regularly scheduled meetings, does not participate in TSC discussions, and does not participate in TSC votes, the member shall be automatically removed from the TSC. The member may be invited to continue attending TSC meetings as an observer.

(Not saying there isn't room for improvement. Just pointing out what's already there.)


Individuals nominated to the TSC must be members of at least one Node.js
Working Group at the time of their nomination and must maintain active
participation in at least one Working Group throughout their term.
Copy link
Member

Choose a reason for hiding this comment

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

This one concerns me a bit. For some areas we have teams as opposed to WGs (ex crypto) and I hate to lose those voices from the TSC. We should look at how many of the current TSC members would be affected by this requirement as I think it would b quite a high number.

Copy link
Member Author

Choose a reason for hiding this comment

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

The goal here is to strongly encourage TSC members to be more active across the project. Those individuals could easily jump into contributing to Working Groups also

Copy link
Member

Choose a reason for hiding this comment

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

I guess this also means that people who only contribute to core are excluded.

Maybe it could say that they must participate in the Node.js org throughout their term.

Copy link
Member

Choose a reason for hiding this comment

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

How about Working Group or Team?

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'd be good with that.

Copy link
Member

Choose a reason for hiding this comment

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

I'd be ok if it was Working Group or Team.


There is no specific set of requirements or qualifications for TSC
membership beyond these rules. The TSC may add additional members to the
TSC by a standard TSC motion and vote. A TSC member may be removed from the
TSC by voluntary resignation, by a standard TSC motion, or in accordance to the
participation rules described below.
membership beyond these rules.

The TSC may add additional members to the TSC by a standard TSC motion and vote.
A TSC member may be removed from the TSC by voluntary resignation, by a standard
TSC motion, or in accordance to the participation rules described below.

Changes to TSC membership should be posted in the agenda, and may be suggested
as any other agenda item.
Expand Down Expand Up @@ -176,10 +187,71 @@ discussion will continue.
For all votes, a simple majority of all TSC members for, or against, the issue
wins. A TSC member may choose to participate in any vote through abstention.

While the results of all votes must be made public, the actual individual
ballots cast for most votes may be made public or confidential at the discretion
of the TSC Chair. However, individual ballots for recertification or removal of
Copy link
Member

Choose a reason for hiding this comment

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

I feel like one member wanting it to be confidential should be enough, not depending on the chair.

TSC members must remain confidential. The names of members voting or abstaining
in all votes must be made public.
Copy link
Member

Choose a reason for hiding this comment

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

I assume it would not be identified if they voted or abstained, correct ?

Copy link
Member Author

Choose a reason for hiding this comment

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

No, my assumption is that there would be clear indication who voted and who abstained.

Copy link
Member

Choose a reason for hiding this comment

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

I think that makes it harder on those that want to abstain. If you vote then you are less identifiable. I see that in a vote you can vote yes, no or abstain and we don't identify who voted yes or no but we are going to identify to abstained.


Following the completion of all votes, a public statement must be made via
GitHub specifying the results of the vote. Contextual detail about why the
vote was held, including a listing of the specific questions voted on must be
included in the statement.

Note that, in addition to requiring a simple majority vote of the TSC, all
changes to this charter are also subject to approval from the Node.js
Foundation board.

### Votes to Remove Members
Copy link
Member

@Trott Trott Aug 22, 2017

Choose a reason for hiding this comment

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

EDIT: Much of the content of this section has been removed so I'm not sure these comments apply anymore. Striking out.

I know you worked hard on this section and it's a lot of text and I'm sure it represents a lot of thought. But I disagree with it and think it should simply be removed. Go back to the original text on the matter which was something like:

TSC members may be removed by a standard TSC motion.

I get that this is trying to address recent events, but IMO the issue there isn't that the TSC didn't know how to remove someone. The how-to-remove-someone process is actually straightforward. It's that the TSC didn't know how to deal with CoC stuff.

Removal is straightforward, at least from a mechanical perspective. If someone wants another member removed, make a motion. A discussion ensues. If consensus cannot be reached, it goes to a vote. There does not need to be misconduct for someone to be removed. Someone can be removed for any number of reasons. Maybe they are inactive. Maybe they are difficult to work with, without being malicious. Maybe they consistently cause problems unintentionally. Maybe they just have bad judgment. Maybe it's a combination of things like that, any one of which wouldn't be a big deal, but taken together make them unsuitable for the TSC.

If we want to include additional process to try to prevent a repeat of this experience, maybe focus on referring disputes to third-party mediation (by someone trained in mediation/conflict resolution, not some other member of this or another committee or even the board). And ask the Board to agree in advance that they're willing to pay for such things.

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 know you worked hard on this ...

That's not even a consideration for me.

I will rework this.


Requests to remove a member from the TSC may be raised only by other members of
the TSC or by members of the Node.js Foundation Board. When an issue to remove
someone from the TSC is raised, the issue must include a list of the specific
issues the TSC is being asked to consider as grounds for removal. The discussion
and vote will be limited strictly to considering of the specific issues listed
in the issue. The issue must also include a description of what outcome those
reporting the issue expect.

The vote must be structured in terms of whether or not the specific issues
listed constitute grounds for removal.

When votes to remove individuals from the TSC are scheduled, the member in
question is to be notified about the vote in advance along with adequate
contextual details of why the vote is taking place, what, if any, specific
complaints are being leveled, and the specific questions that the members are
being asked to consider. The member in question shall be given no less than one
week before the vote to provide an answer or rebuttal to those issues.

Neither the member in question, nor the member or members raising the issue
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure I agree with this...it seems like that increases the likelihood of the member in question not being removed. Especially if more than one member raises the issue.

Example:

Say there are 10 members on the TSC. 4 members step forward and raise an issue to remove another member. This would mean that there are only 5 votes that can be cast. If 3 members vote against, and 2 members vote for, the vote would not pass, which to me seems....quite problematic?

Copy link
Member Author

Choose a reason for hiding this comment

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

Potentially, but it also justifies referring the issue to arbitration, which can be requested either by those submitting the request, the person being considered for removal, or the TSC Chair. The decision can also be vacated by the Collaborator base or the Node.js Foundation Board, so there are contingencies and mitigations included.

The purpose of this clause is to avoid the possibility of railroading an individual off the committee and I believe it's necessary.

Copy link
Member

Choose a reason for hiding this comment

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

Would an option be to allow both the raisers and the member in question. If its one raiser then they will balance out, otherwise more raisers end up with more weight ?

Copy link
Member Author

Choose a reason for hiding this comment

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

No, I think that ends up creating an imbalance and does not avoid the possibility of railroading the decision.

Copy link
Contributor

Choose a reason for hiding this comment

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

I believe that the way this is currently worded creates an imbalance. I'm not seeing this is a railroading of the decision either. If 4 people come forward with issues with another member, then those four people don't get to vote on whether or not to remove the individual. For any other matter, one can simply call a vote and their votes be counted. Why does it have to be different here? This would make it even more difficult to remove a toxic member from the project. To me, this enables one of the problems it is trying to solve even more.

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, noted. I'll pull this back out.

shall participate in the vote and the remaining members of the TSC may meet or
discuss the issue privately without the member in question present.

Should a vote to remove a member result in a tie (50%/50% split of non
abstaining participants) the matter shall be referred to a Node.js Foundation
Copy link
Member

Choose a reason for hiding this comment

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

Is this going to the board? Then it needs to be said explicitly. Who appoints it from the Node.js Foundation?

Copy link
Member Author

Choose a reason for hiding this comment

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

The Node.js Board or the Executive Director on behalf of the Board.

Copy link
Member

Choose a reason for hiding this comment

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

Can you write down a paragraph on how the mediator is nominated, so that if follows the same pattern everywhere?

Copy link
Member Author

Choose a reason for hiding this comment

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

Will do

appointed independent third party mediator for arbitration.

At any point during this process, the individual member in question, the
individuals opening the request, or the TSC Chair may request that the issue
Copy link
Contributor

Choose a reason for hiding this comment

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

Does this mean that even after a vote, the TSC Chair or the individual member can still request 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.

As currently written, yes. But that's not likely what we want so I'm open to suggestions on how to rework this.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yea, I don't agree with this part. With this left in, the actual TSC vote can be undermined. I almost think this entire paragraph should be removed.

Copy link
Member Author

Choose a reason for hiding this comment

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

Well, I'd like to have a process by which the matter can at least be referred to mediation before the vote.

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'll work on reworking this

Copy link

Choose a reason for hiding this comment

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

It says that anyone can request that the issue be handled by a third party mediator instead of by a vote of the TSC, but it's not clear how or if that request is handled.

For example, if I'm on the TSC, but acting like a jackass, I might know that the members of the TSC are going to vote me out. In order to undermine this process, I request that it be referred to a third-party mediator, specifically because that gives me more leverage.

Does the foundation board get to say "No, that request is in bad faith, the TSC is going to vote on this"? And by what criteria would the foundation board make that decision?

I'd suggest removing this loophole. The conditions that lead to mediation should be objective and clear, and not dependent on anyone's request. Either it should always go to mediation, or only in the case of a tie, or never.

Copy link
Member Author

Choose a reason for hiding this comment

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

@evanlucas ... ok, please take a look now.

be referred to a Node.js Foundation appointed third party mediator for
arbitration.
Copy link

Choose a reason for hiding this comment

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

(comment copied so as to not get lost in the outdated fold)

It says that anyone can request that the issue be handled by a third party mediator instead of by a vote of the TSC, but it's not clear how or if that request is handled.

For example, if I'm on the TSC, but acting like a jackass, I might know that the members of the TSC are going to vote me out. In order to undermine this process, I request that it be referred to a third-party mediator, specifically because that gives me more leverage.

Does the foundation board get to say "No, that request is in bad faith, the TSC is going to vote on this"? And by what criteria would the foundation board make that decision?

I'd suggest removing this loophole. The conditions that lead to mediation should be objective and clear, and not dependent on anyone's request. Either it should always go to mediation, or only in the case of a tie, or never.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah, I've been stewing on that. The ideal is that it wouldn't have to go to mediation at all. It should also be a goal to avoid having to vote. So perhaps it should be simply if consensus cannot be reached, the matter goes to mediation. The challenge with that is that it encourages members to not take a position, e.g. I don't want to deal with this so abstaining from a clear position forces mediation. I don't know how to solve this yet.

Copy link
Contributor

Choose a reason for hiding this comment

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

I will try to drudge up some language/process for this and coordinate with legal on how this needs to work.

Copy link
Member

Choose a reason for hiding this comment

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

@hackygolucky thanks that will be very helpful.


All decisions regarding removal of TSC members is subject to review by the
Copy link

Choose a reason for hiding this comment

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

s/is/are/

Node.js Foundation Board. Should the Board decide to vacate the TSC vote, the
matter shall be referred to a Node.js Foundation appointed third party mediator
for arbitration.

All decisions regarding removal of TSC members is subject to review by the body
of Node.js collaborators. Should no fewer than one-quarter of the current
Node.js project Collaborators (as defined by the TSC's governance and
Copy link
Member

Choose a reason for hiding this comment

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

Is this referring to Collaborators as we currently use the term or the redefined Collaborators to mean everyone in the GitHub org? The latter could be really problematic because I'd guess that between 40% and 60% of those folks aren't actually active on the project in any significant way.

contribution policies) disagree with the TSC vote, the matter shall be referred
Copy link
Member

Choose a reason for hiding this comment

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

Is it your expectation that that means "collaborators" will be the 100+ members of the collaborators team? Or any Node.js GitHub repo, which could amount to more like 500 people?

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've got no expectation currently. What do you think would be best?

Copy link
Member

Choose a reason for hiding this comment

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

As written I think Node.js project Collaboratorsthe 500+ Org Collaborators (rather than just Core Collaborators). +1 to it meaning Org Collaborators.

Copy link
Member Author

Choose a reason for hiding this comment

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

If we say all org collaborators we would need to have a mechanism that allows 1/4 of those to register objections which can be difficult. That's not too say we shouldn't do this, we just need a workable 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.

Actually, I've removed this entire bit. The Working Group based review process defined in #319 would provide adequate coverage of this requirement.

to a Node.js Foundation appointed third party mediator for arbitration.

Once referred to arbitration, the decision of the mediator will be considered
final and binding on all parties.

The third party mediator selected must not be a member of either the TSC,
Node.js Community Committee, or Node.js Foundation Board of Directors.
Copy link
Member

Choose a reason for hiding this comment

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

So it can be one of the collaborators that disagree with the TSC vote? IMHO at this point they should be external to the collaborators as well.

Copy link
Member Author

Choose a reason for hiding this comment

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

The Board (or Executive Director on the Boards behalf) would select the individual. This is just an additional constraint.


## Section 9. Project Roles

The Node.js Foundation git repository is maintained by the TSC and
Expand Down Expand Up @@ -216,6 +288,20 @@ TSC.
* **Maintainer**: a Collaborator within a Core Project elected to
represent the Core Project on the TSC.

## Section 11. Escalation of Disputes and Code of Conduct Violations

Participation in the Node.js project is governed by a Code of Conduct policy
that is established by the TSC. The TSC is required to establish a policy
Copy link
Member

Choose a reason for hiding this comment

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

Why is this not established by CommComm?

for the enforcement of Code of Conduct issues. Any reports of Code of Conduct
or policy violations on the part of TSC members that are not resolvable through
that established policy will be referred to binding, independent third party
mediation under the oversight of the Node.js Foundation Board. All TSC members,
upon acceptance of their nomination to the TSC body, voluntarily agree to abide
by the decisions of the independent third party mediator.

The third party mediator selected must not be a member of either the TSC,
Node.js Community Committee, or Node.js Foundation Board of Directors.

[Consensus Seeking]: http://en.wikipedia.org/wiki/Consensus-seeking_decision-making
[Condorcet]: http://en.wikipedia.org/wiki/Condorcet_method
[Single Transferable Vote]: http://en.wikipedia.org/wiki/Single_transferable_vote