关于开放源代码和Linux,被说得最多的三句谎言是:

1)因为Linux是开放源代码的,所以所有人都可以去看代码,检查代码里面的漏洞,所以Linux的安全性很高;
2)因为Linux是开放源代码的,所以所有人都可以修改代码,按照自己的喜好和需要编译出最适合自己的系统平台来;
3)因为Linux是开放源代码的,所以所有人都可以参与Linux的开发,所以Linux的发展一定会很快,新功能会不断地被添加进来。

不过事实并不如理论所描述的那么美,就好像我并不认为有朝一日所有人都可以按需分配,而工作只是为了满足一种快乐。这只是一个乌托邦式的假想。以上三句关于开放源代码和Linux的谎言也是这种乌托邦式的设想而已,我并不认为他们会是真的。

起码开放源代码并不等于安全。

“开源=安全”这一说法的理论依据是人们都会去查看源代码,并会主动地从代码中发现问题所在。你相信么?你相信code review能够发现很多bug么?你相信code review能够取代软件测试么?如果真的像一些支持开源的人说的那样能够通过Code Review来发现产品里面存在的漏洞和缺陷,那么Rational公司可以倒闭了,他那些关于内存泄漏、代码覆盖、自动化测试等的工具恐怕就卖不出去了。

按照XP的说法(我自己也倾向于这个观点),Code Review的主要益处是能让开发者之间相互学习对方编程中的优点,看看别人编程的手法,开阔自己的眼界和思路。Code Review的另一个益处是能够在开发过程中确保代码的可读性,还能够防止一些架构上的、代码可重用方面的问题——仅限于这一层面的问题而已。至于细致到buffer overrun引起的代码执行漏洞,我不相信仅仅靠Code Review就可以发现到。

最近的一个例证是今天我在CSDN看到的一篇新闻:Linux内核发现三处缺陷 开放源码安全受疑。我特别同意的是最后这段话:

阿尔弗雷德表示,新发现的缺陷表明了这样一个事实,即Linux中还存在缺陷。这对“许多眼睛”理论提出了质疑,这种理论认为,由于开放源代码软件的代码能够被自由查看,其中的安全缺陷更容易被发现、修正,因而也更安全。阿尔弗雷德指出,事实上,大多数开发人员都不愿意对老代码进行检查。尽管这一理论非常好,但它与人们的行为有偏差