1 of 29

A New Era in Python Governance

Shauna Gordon-McKeon

2 of 29

3 of 29

4 of 29

  • member-elected 501c3 non-profit
  • four types of voting members (contributing, managing, supporting and fellows) and one non-voting type (basic)
  • must declare intent to vote and vote regularly to remain eligible
  • current board chair: Naomi Ceder
  • current president: Guido van Rossum
  • next election: June 2019 (director nominations open May 6 2019)

5 of 29

6 of 29

7 of 29

8 of 29

Who’s in charge now?

How do we decide what our governance model is going to be?

What’s our governance model going to be?

9 of 29

How do we decide

what our governance

model is going to be?

What’s our governance

model going to be?

Who’s in charge now?

10 of 29

How do we decide what our governance model is going to be?

Lots of intense online and in person discussions, leading to PEP-8001.

�PEP-8001 says:

How to propose models? Submitting PEPs.

Who can propose and vote? Core developers, self-selected as “active”.

How will the vote work? Ranked choice, administered by PSF.

11 of 29

How do we decide

what our governance

model is going to be?

What’s our governance

model going to be?

Who’s in charge now?

PEP-8001

12 of 29

What’s our governance model going to be?

PEP-8002: Open Source Governance Survey

PEPs 8010-8016: The Actual Proposals

13 of 29

PEP 8010 - Technical Leader Model

elected BDFL* who serves for 4.5 years/3 releases, helped by a council of 3 people, all core devs elected by core devs

PEP 8011 - Trio of Pythonistas Model

three leaders who run as a slate, must be core devs & PSF voting members

PEP 8012 - Community Governance Model

builds off Experts Index, experts accept/reject PEPs in their domain but can be overruled by vote of core devs as a whole

PEP 8013 - External Council Governance Model

a council of auditors who cannot be core devs

PEP 8014 - Commons Anarchist Governance Model

“council of elders” decides if and how votes are held on contentious issues

PEP 8015 - “Steering Committee” Model

3 member committee, makes high level design decisions but cannot vote on PEPs, can only delegate or hold vote

PEP 8016 - Steering Council Model

5 members elected for length of release, empowered to decide on PEPs but urged not to

14 of 29

Points of debate

  • distributed vs hierarchical power
  • number of people in leadership roles
  • importance of being a core dev
  • formalization of process/power vs leaving things implicit
  • who decides on PEPs?
  • what happens if leadership is bad?
  • how much burden is being placed on core devs?

15 of 29

What’s our governance model going to be?

PEP-8002: Open Source Governance Survey

PEPs 8010-8016: The Actual Proposals

Debate!

The vote: PEP 8016, the Steering Council Model, wins.

(View the vote yourself on the CIVS website.)

16 of 29

How do we decide

what our governance

model is going to be?

What’s our governance

model going to be?

Who’s in charge now?

PEP-8001

The “Steering Council” Model

17 of 29

Who’s in charge now?

Elections were held in January.

Steering Council: Barry Warsaw, Brett Cannon, Carol Willing,

Guido van Rossum, Nick Coghlan

18 of 29

How do we decide

what our governance

model is going to be?

What’s our governance

model going to be?

Who’s in charge now?

PEP-8001

The “Steering Council” Model

Barry Warsaw, Brett Cannon, Carol Willing, Guido van Rossum, Nick Coghlan

19 of 29

20 of 29

Core Team

Steering Council

Similar to previous “core team”/“core developers”.

Membership granted by 2/3rds vote of core team and no veto by steering council.

No terms, but people who haven’t contributed in 2 years may be moved to “inactive”.

5 people.

Decides things via majority vote.

Nominated and elected by the core team.

No more than 2 employed by the same company.

21 of 29

Core Team

Steering Council

Responsible for Python project infrastructure (Github org and repositories, issue trackers, mailing lists, IRC channel, etc).

Responsible for reliability and stability of Python language, making contributing accessible & sustainable, liaising with PSF, establishing decision-making processes and resolving controversial decisions.

22 of 29

Core Team

Steering Council

Has power to accept/reject PEPs & enforce CoC but:

“The council should look for ways to use these powers as little as possible. Instead of voting, it's better to seek consensus. Instead of ruling on individual PEPs, it's better to define a standard process for PEP decision making (for example, by accepting one of the other 801x series of PEPs). It's better to establish a Code of Conduct committee than to rule on individual cases. And so on.”

23 of 29

Core Team

Steering Council

With 2/3rds vote can declare “no confidence” in individual steering council members or council as a whole.

If whole steering council voted out, a new election is held immediately.

Can eject member of the core team with majority vote of non-abstaining members of the steering council.

24 of 29

25 of 29

Going forward

What’s changing? How can you get involved?

26 of 29

Lessons Learned

  • make your governance structure explicit
    • most projects are BDFL-style by default, implicitly
    • no way to handle resignation, death, abuse

27 of 29

Lessons Learned

  • make your governance structure explicit
    • most projects are BDFL-style by default, implicitly
    • no way to handle resignation, death, abuse
  • worried about bureaucracy? just specify that “first level” of governance
    • how the decision will happen
    • who gets to make the decision

28 of 29

Lessons Learned

  • make your governance structure explicit
    • most projects are BDFL-style by default, implicitly
    • no way to handle resignation, death, abuse
  • worried about bureaucracy? just specify that “first level” of governance
    • how the decision will happen
    • who gets to make the decision
  • when changing governance, make use of existing systems of trust

29 of 29

Thank you!

Thanks to Carol Willing and Brett Cannon for answering so many of my questions!