Given that OpenDaylight is 2.5 years old, there was a common belief among Board members that there are capable, seasoned technical leaders within the OpenDaylight developer community from which a valid and robust TSC could be formed without the need for Platinum Member designates.
+1, I think we have a mature enough community now to build a TSC based on metrics more ideal than sponsorship, like popular votes (committer-at-large style), elected technical positions (like PTLs) and possibly specific key positions (like release manager or Int/Test PTL).
@Board - Thanks for forcing us to take the harder, but likely better for the project overall, route. :)
I think the first question we need to ask is “Is there any way to remove the need for the waiver while still allowing Platinum members to designate TSC representatives?”.
I don't see a good way, and as noted above I'd prefer to move away from Platinum Member designates anyway.
What are some of the other ways we might want to populate the TSC?
My perspective is that we should structure the TSC such that:
- It represents the technical stakeholders we need at the table to make the types of decisions required of the TSC.
- It balances groups with systematically competing interests, like corporations or (as we saw recently with the branch cutting debate) projects with different offsets.
- People with TSC votes are invested in the TSC. They should follow relevant threads closely, debate issues in advance whenever possible and vote reliably (both on threads and meetings).
/me goes off and does a ton of reading and thinking about voting systems, hoping someone has already solved this problem.
Restating (1) and (2) in terms of requirements for voting systems:
- The voting system should guarantee that certain groups are represented by at least some percentage of representatives.
- The voting system should guarantee that certain groups are represented by no more than some percentage of representatives.
As far as I can tell, these features aren't provided by a well-known voting system. Taking some known-good components (STV0) and doing a bit of home brewing, I think this voting system has pretty good properties.
Let's say 15 for the sake of the example.
There seem to be some groups we want to be able to ensure have a voice at the TSC, and some groups we want to be sure don't have too much voice. There are also some specific sets of roles that amount to "groups", like Core PTLs and the Release Manager.
Throwing out some specifics for the sake of the example:
-
=1 PTL from an Incubation Project
-
=1 PTL from a Mature Project
- 1 PTL from each Core Project
- 1 Release Manager
- 1 Int/Test PTL
-
=1 PTL from an offset 0 project
-
=1 PTL from an offset 1 project
-
=1 PTL from an offset 2 project
- <=(.25 * TSC_size) people from the same company
As Phil pointed out, there are currently ways to get on the TSC.
As a reminder, the current TSC is populated from three separate “pools”:
- Platinum Member Designates (currently 8)
- Elected Committers-At-Large (currently 2… soon to go to 4)
- Core Project Technical Leaders (currently 0)
Working under the assumption we get rid of Platinum Designates, and noting that there will still be 0 Core Projects when we need to do this election, the only pool of eligible TSC members remaining are committers. We may want to consider expanding the eligible population.
Potential sets of eligible TSC members:
- Committers
- PTLs (can there be a PTL who's not a committer?)
- Release Managers/Engineers
- People who have "contributed" for some (painful?) definition of "contributed"
- Everyone
I think I favor "Everyone" and letting the voters do the selecting.
Ask the eligible TSC members to self-nominate.
Hold a modified version of a Single Transferable Vote (STV) election0 between all candidates. Our modified version would look like (this is the hard part):
This is the minimum number of votes a candidate needs to be elected.
droop_quota = int((votes_cast / (TSC_seats + 1)) + 1)
Let's imagine there were 100 votes cast.
droop_quota = int((100 / (15 + 1)) + 1) = 7
TODO: Figure out how to hack STV to get the properties above