Description
I believe that the current governance model, defined in TSC charter https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-7-voting, is some-what flawed and in favor of blocking people by burying them with bureaucracy, and time.
When a pull-request is blocked, current governance model is extremely time-consuming if the contributor decides to pursue to land their pull-request. In most cases, in order to avoid or spend a lot of time on this matter, people tend to stop pursuing it.
Good scenario
In a good scenario, the flow of landing a pull-request is as follows:
- Contributor A opens a PR
- Contributor B and C approves the PR
- After 48 hours, the PR lands
or
- Contributor A opens a PR
- Contributor B leaves a
request changes
review and blocks a PR - Collaborator A and Collaborator B try to reach consensus without involving the TSC
- After 48 hours and removal of the block, the PR lands
Bad scenario
But in a bad scenario where a consensus is needed, here is the flow:
- Contributor A opens a PR
- Contributor B leaves a
request changes
review and blocks a PR - Contributor A adds
tsc-agenda
label - TSC meeting discusses the changes
- Time
- In worst case, the next TSC meeting is in 7 days, best case it is in 3 days - Meeting
- In best case, it takes 1 meeting to resolve the issue, in worst case X meetings. The best case also involves making a decision of having a TSC vote, whereas an issue can be in X amount of meetings without any hint of ending the discussion. - In the case of: TSC meeting ending with a voting required decision:
- It takes 1-2 weeks on average to get a result out of a voting session.
- A TSC member removes the block
- Most probably a rebase is needed and a new CI run in order to land.
In this bad scenario, unless Contributor B responds in a timely manner, their block will always be effective unless a discussion is done within TSC. This ensures that the TSC meetings are 100 percent efficient. But in reality, a holiday season can stall a pull-request from landing as large as 2 months.
Think of this:
On a random pull-request, you need to find 2 people to "like"/approve your pull-request for it to land. But if the pull-request is blocked, you need to convince half of the people in TSC (give or take 10 people) to land a pull-request that just got blocked. I think this can be used to drive a people out of the project, or force people to silently quit.
If you look into a "bad scenario" where a pull-request is blocked, it takes 1 minute to reject a pull-request with any sort of clear reason (the validity and the discussion about it is outside of the scope of this issue), whereas it takes almost a month of publicity, meetings and discussions to land a particular pull-request.
I think this is flawed and the process is in favor of people blocking pull-requests rather than contributing/landing a particular change.
I don't have a concrete recommendation other than stating the problem, but
- We might increase the blocked reviewer limit to 2, rather than 1. Ex: It takes 2 "request-changes" to block a pull-request in 48 hours.
- We can set a limit to the meeting count of a topic being discussed, and later force ourselves to take a vote. (This is still in favor of people blocking PRs but it will make the pain less and less...)
- Please fill this...
cc @nodejs/tsc