不管开源闭源,需要达成共识的一点是,好的软件不仅需要开发,还需要管理。对于开源软件来说,就是社区管理。
一个项目的成败不仅仅看技术还要看管理,早年Gates带着一帮天才创立微软,还不得不请Ballmer出山帮他收拾烂摊子。
所以千万不要小看Linus Torvalds,二十年来Linus干过的事不仅仅是创建了内核,现在Linux代码中他个人贡献已经稀释到不足2%了,但他仍然是全球最大开源项目的社区领袖,并且持之以恒地做了二十年之久,事实上完全可以和Bill Gates、Steve Ballmer之流平起平坐了。他获得IEEE计算机先驱奖理由上写的是“For pioneering development of the Linux kernel using the open-source approach. ”看见没有?是using the open-source approach。你可以说Linus算不上一个计算机科学家,但绝对算一个全球顶级的项目经理。
想想看有谁有这么大的魄力能够把这么多牛人汇聚到开放性的社区?甚至来自微软阵营。除了微软谷歌这种商业公司,除了用钱?当然我指的不仅仅是Linus本人。不仅仅是代码,Linux社区的管理机制,决策流程的设计都属于人类集体智慧结晶。当然还有广大码农的热情和发自内心的追求。
Linus曾在文档里用诙谐的语言简要概括了他的管理风格:
LinuxKernelManaStyleLinus还说过“不要错误地认为你可以做出比大量的平行试错反馈环更好的设计,那样就太抬举你的智力水平了。”:(见
财富到来,巨星碰撞)
很多人不是不懂技术,但很少有人理解 Linus,因为他们缺乏一个具有全球化规模应用的,代码不断膨胀和变更的项目管理经验。在开源社区中有不少顶尖水平的源代码设计,但要么是个人项目,背后维护者只有一、二人之少,不定期更新,基本长期维持不变;要么提交者众多,管理不善,代码最后良莠不齐,臃肿不堪。
大多数人眼中 Linus Torvalds 是一个 C 程序员,操作系统黑客、社区领袖、技术偶像、喷子……但很少有人注意到他还是一个优秀的 program manager,他需要每天对项目发生的变动以及随后的可维护性做出及时而正确的反应。我觉得一个 program manager 要比一个全栈工程师来得实用,因为他即管项目又管人,工程师就不需要操心别的琐事。甚至在人事管理上也是出了名的严格,Linus曾经把一个拒绝修复补丁的黑客踢出LKML,可见内核小组内部有着严格的纪律和原则,一点也不比商业公司差(你可以看看“技术人攻略”里面采访的一位来自中国内核开发者,看看社区如何做运作的:
技术人攻略访谈二十九:平行世界守护者)。所以同比FreeBSD以及交不起电费的OpenBSD开源项目,Linux是世界上最活跃并可持续发展的开源项目,所以一个社区管理者功不可没,责任重大。
======================================================================
谢谢耗叔的补充,我举的例子的确有些单薄。我只是觉得Linux是开源社区的一个典范,而且它的特点比较容纳商业和市场,其它社区像unix/python/BSD学术氛围更浓。
从您的回复中可以认为您是赞同项目管理对软件质量的影响的。我承认商业公司做得比开源社区好。一来商业公司的历史比社区悠久,经验丰富;二来商业公司可以聘请专业管理人士,比如商学院的学生。这些都是经过一百多年的历史积累,也是人类的智慧结晶。
还有就是项目性质,开源社区天然的分布式,而商业公司是集中式,后者管理上相对更方便一点。
但我仍然认为开源是人类社会未来的工作方式也是生活方式。从哲学上,我认为未来世界是更紧密连接的,而闭源某种程度阻碍了连接,所以从时间上闭源肯定会被开源取代的。当然也像您说的闭源存在理由可能是因为技术上前无古人,但差距肯定会随着时间缩小,那时闭源就没有意义了,所以它是有生命周期的。开源社区有很多缺陷是因为工程运作上的问题,但这些问题将会以人类的智慧以及更好的技术或工具得以解决,具有商业公司血统的管理科学也将更多融合到开源项目中去,那时候开源、商业、学术将结合得更加完美。