logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Effective-project-governance.md (5811B)


  1. ---
  2. date: 2020-01-17
  3. title: A philosophy of project governance
  4. layout: post
  5. tags: [philosophy]
  6. ---
  7. I've been in the maintainer role for dozens of projects for a while now, and
  8. have moderated my fair share of conflicts. I've also been on the other side,
  9. many times, as a minor contributor watching or participating in conflict within
  10. other projects. Over the years, I've developed an approach to project governance
  11. which I believe is lightweight, effective, and inclusive.
  12. I hold the following axioms to be true:
  13. 1. Computer projects are organized by humans, creating a social system.
  14. 1. Social systems are fundamentally different from computer systems.
  15. 1. Objective rules cannot be programmed into a social system.
  16. And the following is true of individuals within those systems:
  17. 1. Project leadership is in a position to do anything they want.
  18. 1. Project leadership will ultimately do whatever they want, even if they have
  19. to come up with an interpretation of the rules which justifies it.
  20. 1. Individual contributors who have a dissonant world-view from project
  21. leadership will never be welcome under those leaders.
  22. Any effective project governance model has to acknowledge these truths. To this
  23. end, the simplest effective project governance model is a BDFL, which scales a
  24. lot further than people might expect.
  25. The BDFL (Benevolent Dictator for Life) is a term which was first used to
  26. describe Python's governance model with Guido van Rossum at the helm. The "for
  27. life" in BDFL is, in practice, until the "dictator" resigns from their role.
  28. Transfers of power either involve stepping away and letting lesser powers decide
  29. between themselves how to best fill the vacuum, or simply directly appointing a
  30. successor (or successors). In this model, a single entity is in charge —
  31. often the person who started the project, at first — and while they may
  32. delegate their responsibilities, they ultimately have the final say in all
  33. matters.
  34. This decision-making authority derives from the BDFL. Consequently, the
  35. project's values are a reflection of that BDFL's values. Conflict resolution and
  36. matters of exclusion or inclusion of specific people from the project is the
  37. direct responsibility of the BDFL. If the BDFL delegates this authority to other
  38. groups or project members, that authority derives from the BDFL and is exercised
  39. at their leisure, on their terms. In practice, for projects of a certain size,
  40. most if not all of the BDFL's authority is delegated across many people, to the
  41. point where the line between BDFL and core contributor is pretty blurred. The
  42. relationships in the project are built on trust between individuals, not trust
  43. in the system.
  44. As a contributor, you should evaluate the value system of the leadership and
  45. make a personal determination as to whether or not it aligns with your own. If
  46. it does, participate. If it does not, find an alternative or fork the
  47. project.[^1]
  48. [^1]: Note that being able to fork is the escape hatch which makes this model fair and applicable to free & open source projects. The lack of a similarly accessible escape hatch in, for example, the governments of soverign countries, prevents this model from generalizing well.
  49. Consider the main competing model: a Code of Conduct as the rule of law.
  50. These attempt to boil subjective matters down into objectively enforcible rules.
  51. Not even in sovereign law do we attempt this. Programmers can easily fall into
  52. the trap of thinking that objective rules can be applied to social systems, and
  53. that they can deal with conflict by executing a script. This is quite untrue,
  54. and attempting to will leave loopholes big enough for bad actors to drive a
  55. truck through.
  56. Additionally, governance models which provide a scripted path onto the decision
  57. making committee can often have this path exploited by bad actors, or by people
  58. for whom the politics are more important than the software. By implementing this
  59. system, the values of the project can easily shift in ways the leaders and
  60. contributors don't expect or agree with.
  61. The worst case can be that a contributor is ostracized due to the letter of the
  62. CoC, but not the spirit of it. Managing drama is a sensitive, subjective issue,
  63. but objective rules break hearts. Enough of this can burn out the leaders,
  64. creating a bigger power vacuum, without a plan to fill it.
  65. In summary:
  66. **For leaders**: Assume good faith until proven otherwise.
  67. Do what you think is right. If someone is being a
  68. dickhead<small><sup>†</sup></small>,
  69. tell them to stop. If they don't stop, kick them out. Work with contributors
  70. you trust to elevate their role in the project so you can delegate
  71. responsibilities to them and have them act as good role models for the
  72. community. If you're not good at moderating discussions or conflict resolution,
  73. find someone who is among your trusted advisors and ask them to exercise their
  74. skills.
  75. If you need to, sketch up informal guidelines to give an approximation of your
  76. values, so that contributors know how to act and what to expect, but make it
  77. clear that they're guidelines rather than rules. Avoid creating complex systems
  78. of governance. Especially avoid setting up systems which create paths that
  79. untrusted people can use to quickly weasel their way into positions of power.
  80. Don't give power to people who don't have a stake in the project.
  81. **For contributors**: Assume good faith until proven otherwise.
  82. Do what you think is right. If someone is being a
  83. dickhead<small><sup>†</sup></small>,
  84. talk to the leadership about it. If you don't trust the project leadership, the
  85. project isn't for you, and future conflicts aren't going to go your way. Be
  86. patient with your maintainers &mdash; remember that you have the easier job.
  87. <small><sup>†</sup> According to your subjective definition of dickhead.</small>