健康的开源社区通常包含各种各样的人,他们有着不同的意识形态、目标、价值观和观点——从无政府主义者到大型公司的 CEO。对于影响整个社区的决策,正常的做法应该是尝试通过讨论达成共识;然而,如果您试图做出一个至关重要的决策,但社区中存在不可调和的分歧,该怎么办?
Xen 项目社区在 XSA-7 安全问题之后就项目的安全策略做出了这样一个决定。我们事先知道不太可能达成共识,因此我们仔细考虑了如何进行讨论。
我们的主要目标是找到社区偏好的“重心”,并确保那些没有得到他们想要的东西的人感到他们的声音被听到并被考虑在内。在本文中,我将简要总结我从那次经历中得出的结论。
1. 制定在无法达成共识时的明确后备方案
当社区形成时,决策通常通过简单的讨论和协议来制定。在没有共识的情况下,没有正式的决策程序,因为它被认为是繁琐且不必要的。实际上,在您遇到无法达成共识的决策之前,它们是不必要的。然后,拥有明确的前进方向至关重要。
这种前进方向可以是委托“仁慈的终身独裁者”做出此类决策,或者例如由提交者或其他社区成员进行多数投票。无论您的社区选择什么,请确保在您开始讨论之前,每个人都知道如果讨论未能达成共识会发生什么,并确保该决策过程是您可以信任的。了解后备计划是什么会改变人们的争论方式。
在 Xen 项目中,在 XSA-7 时,我们的创始人最近淡出了舞台,我们正处于编写治理文档的过程中。因此,我们添加了一个条款,规定如果社区无法做出决定,提交者将对该问题进行投票。
2. 从您常用的论坛开始讨论(但不要止步于此)
开源依赖于在线讨论,无论是在邮件列表、论坛还是错误跟踪器上。对于大多数目的而言,这些都运作良好。但是,对于影响整个社区的重大决策,它们有几个缺点。
列表讨论不太可能清晰地描绘出整个社区的全貌,原因有几个。它们偏爱喜欢争论的人、更善于表达或在英语(或讨论所用的任何语言)方面更有经验的人,以及那些感觉自己身处“内部”圈子并拥有流行观点的人。最后,它们隐藏了有多少人同意发言者的观点。
考虑到这一点,使用讨论来探索问题的不同方面。通过博客文章(如果合适)提高对讨论的认识,以确保整个社区都能够权衡。如果您仍然没有达成共识,那么在主要派别出现后,请继续下一步。
3. 进行调查
调查的目的是了解整个社区对不同选项的感受。首先总结人们在讨论中主张的重要选项。然后,对于每个选项,请人们选择以下四个答案之一
- 这是一个糟糕的主意,我会反对它。
- 我对这个主意不满意,但我不会反对它。
- 我对这个主意感到满意,但我不会支持它。
- 这是一个很棒的主意,我会支持它。
我们允许调查匿名进行,但表示如果社区成员包含他们的姓名,他们的选择将被赋予更多权重。
4. 确定社区意见的“重心”
如果您有一个选项获得了所有“这是一个很棒的主意”的投票,而没有“这是一个糟糕的主意”的投票,那么您就完成了。如果没有,请寻找似乎是对所有相关人员的最佳折衷方案的选项。
这可能需要一些挖掘。不要只看汇总数字;如果有人反对某个想法,请查看他们支持什么。在我们的案例中,有一个选项获得了许多“这很好”和“这很棒”的投票;而投票“这是一个糟糕的主意”的人出于相反的原因投票——大约一半人想要最严格的选项,另一半人想要最宽松的选项。人们因相反的原因反对它向我们表明,这可能处于社区意见的中心。
5. 起草一份具体的提案,人们可以对此提出反馈,然后使用后备决策来决定它
根据我们的调查结果,我起草了一份关于如何更改安全策略的具体提案,并将其发布到我们的邮件列表中。我们对提交者进行了正式投票,它获得一致通过,我们的社区恢复了管理程序开发。结果没有发生重大中断。
有关该问题的更完整描述,以及 Xen 项目如何进行讨论和分析,请参加 George 在多伦多 LinuxCon 上 8 月 22 日举行的无需共识做出社区决策 演讲。
2 条评论