企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Chapter 4. 社会和政治的基础架构 有关自由软件,人们经常问到的第一个问题是:“它能行吗?如何保持项目一直运行?谁来做决定?”我一直对关于知识界精化、合作精神、代码会说话此类的平淡回复无法感到满意。事实是这个问题很难回答。知识界精化、合作精神和运行代码只是其中的一部分,但它们对于解释日复一日的项目运转贡献不多,对于如何解决冲突什么也没说。 本章尝试展示支持成功项目的共同结构。 “成功”不仅仅指的技术质量方面,而且也包含了运行健康状况和生存性。运行健康状况是指项目将新代码和新开发者吸收进来,并对到来的bug负责的持续能力。生存性是项目独立于任何单独参与者或赞助商而存在的能力—考虑一下如果项目所有的创始成员离开后项目继续运作的可能性。技术成功不难实现,但是如果没有健壮的开发者基础和社会基础,一个项目就不能处理由初始的成功带来的成长,或者有魅力个体的离开。 获取此类成功有很多方法。有些涉及正式的管理结构,通过哪些争论被解决、新开发者被邀请加入(有时是离开)和计划的新特行等等。还有一些涉及不太正式的结构,但需要更有意识的自我克制,来产生一种人们可以依赖的正直氛围,作为*事实上的*管理形式。两种方式都产生相同的结果:一种由来已久的永恒感觉,由所有参与者都充分理解的习惯和程序作为支撑。这些特性在自我组织的系统中甚至比集中控制的系统更重要,每个人都知道一个坏苹果可以毁掉一桶,即使只是一会儿。 # 分叉能力(forkability) 能将开发者绑定在一个自由软件项目中的必需组成部分,能让他们在必要时愿意作出妥协,是代码的*分叉能力*:也就是任何人可以使用一个拷贝并使之成为一个竞争项目的能力,被称为*分叉*。怪异的是自由软件项目的中分叉*可能性*具备比实际的分叉更大的动力,很少会发生。因为分叉对于每个人都不好([Chapter 8, *管理志愿者*](# "Chapter 8. 管理志愿者")的[the section called “分叉”](# "分叉")会解释详细原因),分叉的威胁越大,越期望的人就越会妥协去避免它。 分叉,更确切说是分叉的可能性,是自由软件项目中没有真正独裁者的原因。考虑到在一个特定开源项目中听到某人被称为“独裁者”或者“暴君”是多么常见,这看起来是一个令人惊讶的断言。但是此类暴政是特别的,与一般意义上的字面理解非常不同。想象一下一个国王的臣民可以在任何时候复制整个王国,并搬过去按自己满意的规则统治。这与国王无论如何做,臣民都无法离开的情况是多么的不同? 这也是为什么即使项目不是完全按照民主方式组织时,在实践中,重要决定还是通过民主方式产生。可复制性暗指了分叉能力;分叉能力暗指了意见一致。也可能是每个人都希望与一个领袖不同(最有名的例子是在Linux内核开发中的Linus Torvalds),但那是因为他们*选择*如此,以一种非愤世嫉俗和非邪恶的方式。暴君没有项目的定身法。所有开源许可证都有一个关键特性,也就是在代码如何变更或使用上没有给任何组织更多的权力。如果一个独裁者突然开始做了一个坏的决定,就从此不得安宁,紧接着就是造反和分叉。除非,当然,很多时候不会到这一步,因为独裁者会首先妥协。 但仅仅因为分叉能力放置了一个上一个人在一个项目中发挥多少力量的上限,并不意味着项目的管理方式没有太大的区别。你不会希望每个决定都是某人要考虑分叉后的结果。那样会让人迅速疲倦,丧失真正工作的能量。下面两个小节会仔细检查组织项目平稳做出大多数决定的不同方法。这两个都是极端理想的例子;许多项目会处于中间状态。