2.10 集市模式的必要条件
这篇文章的早期读者和评论者一直不断提出这样的问题,即集市模式成功的前提是什么,包括项目领导人应该具备什么资格,项目首次发布并建立合作开发社区的时候,代码应该达到什么状态等。
显然,你不可能从零开始实施集市模式 8。可以用集市模式测试、排错和完善项目,但以集市模式从零开始一个项目是非常困难的。Linus 没有这么试过,我也没有。开发者社区从成立伊始,就需要一个可以运行和测试的东西。
当开始建设社区的时候,你需要拿出一个像样的承诺。程序此时并不需要特别好,它可以简陋、有错、不完整,文档可以少得可怜。但它至少要做到:(a) 能运行,(b) 让潜在的合作开发者相信,这个软件在可预见的未来,能演变成一个非常棒的东西。
Linux 和 fetchmail 在首次露面时,都有着很强和很吸引人的设计。很多人都已正确意识到这点非常重要,并进而得出结论:项目领导人必须要有高度的设计直觉和聪明才智。
但 Linus 的设计来自于 UNIX,我的最初设计则来自于 popclient(虽然后来做了很多改动,而且改动比例要远大于 Linux)。所以,一个尝试集市模式的项目领导人或协调人,是否真的需要他本人是一个超群的设计天才,抑或他能借力于其他人的天才设计?
我想,一个协调者是否拥有卓越的原创设计能力,并不是项目成败的决定性因素,但他是否能识别出别人的优秀创意,则一定是最关键的。
Linux 和 fetchmail 都证实了这一点。Linus 虽不是一个让人惊叹的原创设计者(前面说过),但他表现出了能识别优秀设计并将其集成进 Linux 内核的出色才能。而我也介绍过,fetchmail 中最强大的设计(SMTP 转发)来自他人。
这篇文章的早期读者曾经很抬举地指出,我之所以低估集市模式的设计原创性,是因为我自身有很多原创,所以视之为理所当然。这可能有点道理,相对于编码或调试而言,设计的确是我的最强项。
但问题是,在软件设计上表现得聪明而有原创性,容易养成一个习惯——在应该保持软件健壮性和简单性的时候,你往往下意识把它弄得既华丽又复杂。我曾经就因为这样的错误把项目搞砸,所以在 fetchmail 中,我尽量避免再犯同样的错误。
fetchmail 项目之所以能成功,相信部分原因是我限制了表现自己聪明的倾向。这(至少)反驳了设计原创性是集市模式项目成功关键的论点。再来看看 Linux,如果 Linus Torvalds 在开发过程中努力尝试在操作系统设计上表现出基础性创新,那做出来的内核还能像现在这样稳定和成功吗?
当然,一定水准的设计和编码能力还是需要的。但我认为,如果一个人真的想要启动一个集市项目,那么他的能力应该已在最低水准以上。开源社区内在的声誉评价机制会给人们施加微妙的压力,使那些不能胜任项目发展的人,不会去发起一个开发项目。至少到目前为止,这个机制非常有效。
还有一种才能,人们通常不会把它和软件开发联系在一起,但我认为,在集市项目中它和设计才能一样重要——甚至更重要:集市项目的协调人或领导人必须要有很好的人际交往和沟通能力。
这应该是显而易见的,为了建立一个开发社区,你需要吸引人们,让他们对你做的事感兴趣,让他们乐于看到自己的贡献。一些技巧可能有助于实现这些,但远远不是全部,你的人格特征也很重要。
Linus 是个好人,人们都喜欢他并愿意帮助他,这(和他的项目成功)不是巧合。我精力充沛、性格外向、乐于社交、有一些脱口秀演员般的说话风格和临场反应,这也不是巧合。为了让集市模式运转,哪怕有一点点的人格魅力,都会对你大有裨益。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论