Given enough eyeballs, all bugs are shadow.
自由软件的斗士Eric Raymond把这句“足够多的眼睛可以让所有的bug无处遁形”称 为“Linus定律”,也是证明开源软件比“闭源”软件更有优势的一个论据。最近微软一位安全方面的资深工程师Shawn Hernan在博客中批驳了这一论断,作为“闭源”软件的代表,微软工程师这么说不奇怪,但是Shawn的写作水平很高,这篇博客可以作为“议论文”的范文。
要驳倒对方观点,秘诀不是去正面和对方交锋,而是绕开其锋芒,去挑战其前提假设,Challenge the assumption。看样子Shawn也是深谙此道,直接找到了“Linus定律”的Assumption:
- 开源软件比“闭源”软件有更多的Code Review。
- Code Review可以让软件更加安全;
逻辑学上的三段论,结论就是“开源软件比闭源软件更加安全”,Shawn指出这两个前提假设(assumption)都是不成立的,所以这个结论也是不正确的。
干得好,Shawn!真希望每一个程序员都能有你一样的Critical Thinking和论证能力,所以,从我做起,我们也来Challenge一下Shawn的Assumption:)
首先,人家“Linus定律”不是专门针对安全性bug的,你为什么假设人家说的是安全性问题呢?这世界上除了安全性bug还有很多其他的bug呢,你是不是评理找错了对象呢:)
Shawn的潜台词是安全性问题高于一切,其实开源的目的并不是要造出最安全的软件,而是通过共享源代码鼓励创新和快速的软件开发(你也可以Challenge我这个Assumption,但至少我现在是这么理解开源的)。
回到安全性问题本身,我个人觉得在安全性上开源软件比“闭源”软件没什么必然的优劣之分,安全性和其他任何软件的特性一样,决定于项目的重点和倾向。源代码是程序员写的,程序员会根据工作重点倾向于加强某些特性。如果某个软件项目强调代码可读性,那么可读性就会强一些;如果某个软件项目强调运行效率,那么运行效率就好一些;如果某个软件项目强调安全性,那么安全性自然也会好一些。
从这点上开,我相信微软的软件安全性会好一些,因为毕竟微软很强调安全,而且也不是光说不练,花了不少力气整治安全性。我知道我知道,微软产品不断爆出安全漏洞,也不断地在打补丁,我只能说:一切创造过这么庞大软件项目而没有造出一个安全漏洞的同志,都有资格嘲笑微软。
相关文章:
分享到: 开心网 豆瓣网 人人网 Google书签 Del.icio.us
2010年2月19日, 星期五 16:38:50
哈哈,最后一句话很好,更像个否定句……很大程度上是个假言命题么……
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年2月19日, 星期五 at 19:17:10
本着软件工程师天真的理想,我相信是有办法创造庞大而安全的软件的,即使今天做不到,终有一天可以实现。
[回复]
2010年2月21日, 星期日 12:28:17
[...] 尽管这一问题在二月初就被公布,但是这个问题到Firefox 3.6发布之日也未被解决,Mozilla Firefox似乎没有对此问题引起足够的重视。这不的不让人怀疑,开源软件是否真的更安全。” [...]
2010年2月22日, 星期一 14:05:59
我真的不认为在这个问题上有玩逻辑的必要。不知道ESR有没有在其它场合提出过many-eye,不过我是从《The Art of UNIX Programming》里看到的。那里ESR可没有把这个东西作为一个逻辑游戏,而是从历史总结出来的。假设的前提是归纳。读了微软那篇blog,我不认为这个作者在一篇blog里的归纳比《TAOUP》花费整整几章总结的要好。
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年2月22日, 星期一 at 15:36:03
What is ESR?
[回复]
middleware 回复:
2010年2月22日, 星期一 at 15:45:59
Eric Steven Raymond
[回复]
2010年2月28日, 星期日 16:30:01
我认为原作者的意思更多地是反驳linus‘s law,而不是比较谁比谁更安全,希望博主不要断章取义。
开源社区有很多美好的愿望,但事情也未必总象其标榜的那样好。
另外,试问,楼上的各位谁真的编写过微软所面临的那么庞大的软件,如果还没有尝试过,就别光顾着嘲笑别人。
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年2月28日, 星期日 at 17:26:15
谢谢你的提醒。
原作者Shawn一开始反驳了Linus’ Law,然后在后半部分,重点说明系统的Process才能(比如微软的SDL)才是正道。这很容易让人联想,作者想说明的是,开源社区如果没有这样的Process,就不会比实行这些Process的软件安全。
当然,也许原作者并没有这个意思。
[回复]
blueband 回复:
2010年3月1日, 星期一 at 18:06:50
个人感觉对于软件,通常更适合提质量,而不是安全这个词。
关于开源和不开源软件的质量比较,我觉得是个伪问题。现在所看到的一些文字(包括Shawn的文章)大都是“振振有词”的分析逻辑加上多多少少一些(似是而非的)案例,说实话,个人觉得不过是两个阵营之间的口水战。
最后,目前看来,从用户的角度来说,对于软件的选择,似乎更多地取决于存在的选择本身,而不是软件真实的质量。
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年3月1日, 星期一 at 18:09:29
//对于软件的选择,似乎更多地取决于存在的选择本身,而不是软件真实的质量。
请问“存在的选择本身”指的是什么?
[回复]