开源软件大家都不陌生,Linux、Apache、MYSQL等软件的成功,让我们知道了世界上还有一些“思想高尚”的黑客,他们发布的软件同时提供全部的源代码,允许任何人免费使用软件,还可以根据自己的需要修改软件,只要按照GPL(通用公共授权)要求再重新发布给其他的人就可以了。
是不是有些“世界大同”的意思?有人把开源社区描述为“黑客写给黑客的软件”,所以一开始就有人担心使用这样的软件,会有黑客留下的后门,影响自己的安全。但发布者是以公开全部源代码的方式发布,有什么后门你可以自己去查找,再自己编译运行,都在阳光之下,你会有不安全的感觉吗?而我们“从不担心”的大牌公司的私有软件,几乎都有着大家共知的厂家后门,你能堵上它们了吗?那么谁能帮助你来堵它们呢?
开源软件来自于开源社区,开源社区的确是黑客们发起的,因为大家都爱好编程,喜欢使用自己编译的软件,Unix的诞生就是软件开源文化的早期历史,随着互联网的普及,开源社区成为一种成熟的大型软件开发模式。
开源社区的组织者通过互联网发布“招募”消息,组织自愿者利用“业余”时间进行软件开发。一般是组织者提供软件框架,或者是能运转的基本小系统,自愿者根据自己的爱好领取模块开发任务;若模块比较大,你也可以建立新“项目”,组织其他爱好者一起开发。每个人开发的代码与程序发布在社区内,其他人也可以取得,测试或使用,并把发现的问题(bug)发布给社区,也可以自己动手修改发现的Bug,然后重新发布;当然你对某个模块有新的想法或新功能建议,尽可能地展示你才华…
开源社区内是免费地工作与免费地获取新的代码(早期用磁盘拷贝,允许收取发布成本费用),由于是免费,参与人的成本很低(自己的计算机环境),能参与的人可以很多,软件可以得到更多人的试用,软件成熟的周期很快;参与的人来自世界各地,行业各异,角度多变,因此新创意层出不穷,套一个流行的词汇,这是分布式创新模式。
开源社区是一个松散的组织结构,可以开发大型软件吗?有这样怀疑的人很多,但开源社区有两点是大家没有想到的:
1、
参与的人热情很高:编写代码是一种“艺术”工作,对开发者来说有很强的吸引力,尤其是那些初入此行的“学者”,开源社区内有各种代码可以学习,无异于最好的“自修学堂”。在这种心情的推动下,边获取,边“奉献”,同时也是自己实践的检验、自己“艺术品”的展示,让更多的人愿意贡献自己的创意代码。
2、
“民主”的组织方式:开源社区一般以邮件列表,或新闻组(聊天组)等方式组织,意见与建议都是公开地发表,可以随意进入,也可以随意离开,只要你遵守社区“公约”(一般是GPL,也有一些自己社区的要求),你就是社区公民,即使只有简单的测试贡献,也一样可以获得全部的代码使用权。
这种组织看起来很松散,但如同自然“进化”的组织,社区中的“权威”是靠对社区的贡献建立起来的,任何“项目”的组织,没有强制,只有吸引,你有兴趣就可以加入,即使是社区组织者也无法让任何人做他们不喜欢的工作。然而,这样做的结果是下面的表现:
1、
参与者更愿意“奉献”:因为他认为有价值才选择的,即使没有报酬,只要有成果的认可(社区的认可、社会的认可)。能创造价值与把价值变成金钱不是一件事,技术工作者善于前者,商人善于后者。而开源社区恰恰因为这一点可以良好地发展,没有因为金钱而夭折。由于是免费,前期的开发成本最小,由于使用成本低廉,所以,产品普及很快,商业价值急剧攀升;为产品的用户服务、定制模块的公司出现了,如红帽Linux、IBM成为Apache的小组成员…反过来,获得了商业价值的这些企业也大量投入社区的建设。也许技术的贡献者并非最终利益的最大受益者,但这个世界从古到今,陷入商业利益的技术发现者最终都没有了“光环”,而社区起码保证了技术贡献者的名单,让后来的人们不会忘记他们。
2、
社区中协调自然:社区内没有因为公司的上下级关系,工作的安排完全出于自愿,所以大家都喜欢自己承担的工作,有兴趣才快乐,有快乐,工作的效率提高几倍、几十倍。因此,开源社区内的开发组织工作稳健而有序,大型软件能开发能胜过私人公司的开发就不足为奇了。Linux、Apache的成功就是很好的证明。由于社区的进入门槛低,可以吸引大量新入行的人员,他们虽然经验少,但有朝气、充满活力、干劲十足,并且初生牛犊不怕虎,敢于挑战权威,新的思路就这样被发现了。而私人公司内,组织森严,权威人士的所有决策的制定者,思路老套,顾虑重重,稳定与尝新的矛盾,软件创新比不上开源社区就是必然的了。
然而,我们注意到一个现象,目前的开源社区大多是美国、欧洲等发起的,中国人参与不多,贡献有限,而随着中国经济的发展,人口的优势,中国软件开发大军的基数应该是最有优势的,同时,中国也将成为软件需求最多的国家之一。如何利用这样的开发大军,我认为:开源社区是最好的方式。
软件开发是高智商的艺术工作,开发的成本是高昂的,培训人才的投入费用更是高昂的,这也是我们国家这么多年来,软件一直落后的原因。开源社区不仅可以聚集大量的开发精英(我们不管他们叫黑客,我对黑客的定义是爱好编程艺术的人,是一个中性词,如同科学家,核技术可以用来发电,也可以用来发动战争,使用他的人往往是政治家与商人,而不是科学家),而且可以“有组织”地开发软件产品,Linux可以与Windows对抗,也许中国就不用发愁使用不可控的操作系统了。
我认为:安全软件更应该采用开源,因为安全的程度取决于你对它的控制程度,采用私有公司的安全软件,等于把你的安全投保于这家公司,把自己的命运交到别人的手里。采用开源的软件,你可以定制自己的软件,安全大门的钥匙掌握在自己的手里,安全才是可控的。
有人会说:开源代码大家都可看到,从代码找漏洞比软件接口要容易得多。这个观点好象是有道理,其实不然,它只是条件对,但结论不对。正因为开源代码是大家都可看的,所有的人都可以在上面找漏洞,找到的漏洞也好修补,因为你自己就有源码;也因为可找漏洞的人多了,剩下的漏洞就少多了,软件的强壮性就加强了。而私有软件公司的安全软件,看到代码的人很少,只有开发者自己,编程人员对于自己的软件不容易发现错误,这是不争的事实,所以发现的漏洞就少,而剩余的漏洞就可能多,虽然私人公司也大量地测试,但比起开源社区能发动的测试大军显然是不可比的;同时,通过软件接口发现漏洞是比较困难、比较枯燥的事,除了别有用心的人认真去找,一般的人都会退而远之,所以往往被攻击者利用了,漏洞才被发现,当然,用户就成为“实验品”。并且,私有公司软件的漏洞修补是专用的,若公司修补得慢或不愿意修补,那么,用户的利益谁来保障呢?
安全不是来自不知道,而是来自知道得多(知己知彼),只有知道了、了解了、控制了,人才会觉得安全。
我们倡议:建立开源社区,开发我们自己的软件!
本文转自 zhaisj 51CTO博客,原文链接:http://blog.51cto.com/zhaisj/289389,如需转载请自行联系原作者