加载中…
正文 字体大小:

[转] 关于开源软件的几个相关问题

(2009-03-03 14:20:15)
标签:

开源软件

开放教育

社会化学习

education

教育

分类: 开放教育

有朋友在看几年前热销过的一本书《狼图腾》,拉着我讲“狼文化”,讲狼怎么聪明、怎么一块攻击羊群,说她怎么被这种狼的灵性和“文化”所倾倒……我没看过这本书,一直听她讲,一下子也没有找到好的语言和她探讨。恰好浏览我的google reader时,看到Keven老师推荐的下面这篇文章,让我找到了分析“狼文化”的一个切入点,解了我的“燃眉之急”,顺便也转贴在这儿。

 

From:http://blogs.sun.com/dennisding/

开源软件已经成为快速普及的软件开发和应用模式。在经济危机的压力下,开源软件带来的低成本和创新潜力,更加得到业界的关注,认为开源软件将成为信息技术产业应对经济危机的利器。

开源软件是采用开源许可证规制软件开发和使用的新模式,保证了开发者和用户可以获取、修改和贡献软件源代码,并利用这些代码满足业务需求。开源软件的特点是在软件开发和使用的过程中,采用社区化和开放共享的方式,弥补了传统私有软件的公司化和封闭性的缺陷,更加适应大规模、网络化、创新型软件技术发展需求。基于开源软件建立起新的信息技术生态系统,与以私有软件为主体的现有生态系统进行竞争,在竞争中显示出低成本、高安全、易维护、促创新的优势,逐渐显示出生机勃勃的活力。

本文围绕开源软件阐述以下几个问题,以期帮助全面认识开源软件的价值。

 

1. 开源软件与开源社区

 

开源软件是在开源社区里开发和维护的,这是与私有软件最重要的区别。软件技术的发展趋势表明,传统的、以公司为主体的软件开发模式已经无法满足大规模软件开发的需求。开源社区作为开放性的组织,是大规模软件开发的必要组织保障,是应对大规模软件开发技术挑战的必然选择。

软件开发是一个特殊的、知识密集型的生产领域,软件开发项目,特别是大型的软件开发项目,失败的案例屡见不鲜。软件开发历史上规模最宏大的项目应当是IBM于1961年发起的 OS360操作系统项目,希望通过工业化的方式组织实施这个规模巨大的软件开发计划。当时,IBM选择了经验丰富的项目经理Fred Brooks,雇佣了最好的系统分析员、编程员和工程管理人员。但是,在项目将要结束的时候发现,研发费用已经远远超过了预期,甚至比美国政府研制第一个原子弹的“曼哈顿计划”还要高昂,而且项目起初制定的目标并没有最后完全实现。1965年,OS360项目完成,虽然产品获得了商业成功,但是当时的IBM CEO Thomas Watson Jr一直困惑为什么软件项目要比硬件项目花费大得如此多,而且目标如此难以管理。对此,当时主持该项目的Brooks也无法给出答案。10年后,Brooks在他的The Mythical Man Month一书中回答了这个问题。Brooks认为传统工业化管理的核心在于合理分工,将工作划分为简单的步骤,并且优化这些步骤,然后通过管理这些步骤完成产品的过程,而这种方法在软件产业中有很大的局限性,无法很好操作和控制。

实际上,Brooks的回答也可以解释微软Windows Vista发布不断的延期、超过预算、无法实现项目计划时承诺目标的疑问。基于这些经验,Gartner Group曾得出结论: Vista将是Windows当前形式下的最后一个主要发布版。对于所有的企业,包括微软,都无法维护Windows目前集成架构。因为,每个新版本不断集成的更多功能和特性,增加了操作系统的复杂性,导致没有企业有能力持续维护[1]。

开源软件采用的社区开发模式可以突破了传统工业化的限制,可以成功地应对这个挑战。作为纯知识性的劳动,软件开发需要不断接受新的思想和规则软件;开发者渴望持续创新,而不是被统治;开发者应该包括那些所有对某个问题感兴趣的人,而不是仅仅被雇佣去完成某项任务的人。相反,在私有软件开发模式中,企业太多关注控制,而不是创新、对质量的关注、透明和用户参与。总之,知识性的工作需要更加开放的组织形式,才可以保持效率、生命力和持续性。

 

2.开源软件的商业模式

开源软件的商业模式一直是为怀疑者质疑的话题。免费获得源代码,如何获得商业利益?实际上,换个角度来看,开源软件本身与商业模式并没有直接的关系,而是相关的两个问题。

软件的目的是为了满足用户的实际需求,这正如用户其他的所有需求一样,例如人们对于娱乐的追求,人们可能会喜欢某个歌手,因为这个歌手的歌声能够给生活带来快乐,而这种需求是和商业无关的一种社会行为。当然,这种需求也可能通过商业模式,成为获得商业利益的手段。例如,一家娱乐公司看到这种社会需求,通过为歌手出唱片,开演唱会来获得商业利益。不可否认,这种商业行为使得歌手获得收入,专心唱歌,更好地保证人们娱乐需求的满足。

反观开源软件开发,实际上也是一种共同解决某个问题的社会行为,人们为了解决某个问题共同工作,共同分享成果。开放和分享对于解决问题的价值是无疑是巨大的,不仅可以节约社会成本,而且有利于知识积累和创新,而这在很多科学研究领域已经是一种共识。2006年7月20日,比尔&梅琳达盖茨基金会宣布所有接受资助的艾滋病研究必须共享科学发现,这也说明盖茨基金会也发现多年来关于艾滋病进行秘密和竞争性的研究,已经严重影响到人类与艾滋病魔的斗争。

当然,基于社会行为建立商业模式,对于开源软件的发展有积极促进作用,可以保证有更多的资源投入社区,促进社区发展。基于开源软件建立商业模式不乏成功的模式,包括基于开源软件提供应用服务(Google,Search Engine)、提供源代码同时销售相应的商业版本(Sun,MySQL)、销售技术文档和培训(Apache, Web Server)、销售开源软件的最新版本(Francisco Burzi,PHP-Nuke)、绑定其他可以获得收入的服务(FireFox,广告)等等。

基于开源模式的商业模式创新层出不穷,值得一提的是,开源软件的应用模式与逐渐兴起云计算以及软件应用的服务化趋势天然结合,应当成为未来开源软件应用的最具潜力的商业模式。选择开源的商业模式,最好的思路是从满足用户需求的角度出发,充分利用现有的开源软件,因为软件的目的是向用户提供价值,而不是代码本身。

 

3.开源软件成本分析

作为一种社区化的开发方式,通过整合集体智慧,累积技术成果,减少重复开发,对于降低软件开发成本作用是显而易见的。统计表明,开源软件的开发费用是私有软件开发模式的二十分之一。2008年,开源软件不仅直接为软件用户节省了约600亿美元[2],还间接地有效避免采用私有开发模式而导致的项目失败成本。2008年,全球信息技术投资为3.4万亿美元,其中18-30%是基于私有软件开发模式而失败的项目[3],数额超过1万亿美元。同时,开源软件还保证了用户在多家技术服务提供商之中做出选择,通过增加竞争降低实施成本。众所周知,软件成本的大部分是在长期的软件维护方面,而开源软件在维护方面也有很大的优势,因为代码的开放不仅可以保证持续选择最便宜的技术提供商,甚至考虑在可能的条件下,依赖于社区的支持,用户可能以更低的成本自己维护。总之,采用开源软件可以从多方面降低了用户的总体拥有成本。

通过统计数据,也可以发现开源软件的成本优势和产业价值。2006年,开源软件和服务获得18亿美金的收入[4],而整个软件销售总额为2350亿美元[5],姑且按照2008年开源软件为用户减少600亿美元的成本来计算,开源软件虽然仅占有1%(18亿/2350亿)的全球软件销售,却为用户节省了25%的软件成本(600亿/2350亿)。另外,按照2007年全球信息技术投资3万亿的统计数据[6],开源软件以仅占有约0.1%的全球信息技术投资(18亿/3万亿),带来了2%的价值(600亿/3万亿)。

有一点必须说明的是,开源软件的低成本是与按照许可证的要求积极加入社区开发、合法使用密切结合在一起的。现在有一种错误的思路,认为从社区获得代码之后独立开发,销售经过改造之后的软件产品,而不按照许可证的要求反馈代码,是一种好的商业模式。认真分析这种行为,暂且不论可能存在的法律风险,但就商业利益而言也是得不偿失的。道理很简单,从社区获得的代码经过企业的独立开发和扩展,丧失了与社区代码的兼容性,而为了维护这些代码,企业需要付出更大的成本,而且无法继续从社区代码的发展中获得新的代码。而且,企业由于脱离社区开发,丧失了对于社区技术方向的影响力,也会被社区抛弃。所以说,只有加入社区开发,合法使用代码,才能获得开源软件带来的低成本优势。

很多国家政府已经认识到开源软件的低成本带来的经济优势,正在通过制定和实施鼓励开源软件的政策,开展基于开源软件的教育,并通过政府采购政策鼓励开源软件的应用。

 

4.开源软件和私有软件的关系

如前所述,开源软件的核心是一种新型的软件开发和应用模式,开源软件和私有软件的差别是两者在开发和应用模式上的差别。

关于开源软件是否能够代替私有软件,实际上,在某些应用领域这种替代已经完成,或者说从一开始,这些领域都是被开源软件占领的。例如支撑互联网的基础软件,包括DNS服务器、TCP/IP协议栈、邮件服务器等等;在应用架构领域,开源软件也逐渐成为主流,操作系统(Open Solaris,Linux)、数据库(MySQL)、Web服务器(Apache)、应用服务器(GlassFish)、开发工具(NetBeans)、Java开发包等等。不难看出,在基础架构类软件中,开源软件的优势地位非常明显,但是在应用软件领域,开源软件还需要更多的努力。可喜的是,随着人们对于开放技术重要性的认识的深化,OpenOffice依靠其支持国际标准文档格式的技术特征,成为应用级的开源项目的先锋。

当然,虽然从成本上而言,采用私有软件没有任何优势,因为只要投入10%的成本,就可以采用两套开源技术方案代替私有软件,但是私有软件也可能会持续存在下去。在如此庞大的市场上,有的用户可能会倾向于购买软件所提供的功能,而不在意是否可以获得源代码,很多公司也会继续向这些用户提供私有软件。但是,必须承认,在未来的信息技术市场中,厂商必须考虑以更好地方式向用户提供更好的解决方案,同时要保证用户选择的自由和接受服务过程中充分的主动性。

 

5.开源软件与安全

信息安全已经成为各个国家在考虑信息技术政策时关注的重点,而且由于WTO规则允许各国在国家安全方面制定相关技术政策,安全将会成为各国规制信息技术市场的一个重要因素,对信息技术生态产生深入影响。

对于用户而言,安全包括两方面意义,其一是用户的安全不会受到技术提供商的威胁;其二,用户的安全不会因为技术提供商的技术漏洞受到第三方的威胁。事实证明,开放的技术是安全的技术,私有软件才有安全的风险。开源软件通过开放源代码,用户可以明确了解软件如何实现安全性,保证软件没有“后门”,避免受到技术供应商的安全威胁;而私有软件却能够以植入侵犯安全的代码来获取用户隐私,偷窥用户行为。“黑屏”事件不可能在开源世界里发生,因为那些用以控制用户的代码将展现出来,无处躲藏。同时,开源软件通过将所有的软件代码公开,并且保证无法被攻击,比仅仅通过隐藏代码来保证安全,更有安全上的保证,因为安全不是通过隐藏代码实现的,而是通过透明的安全机制保证的。

所以,在保护国家安全的信息技术政策制定中,应当积极考虑鼓励采用开源软件,开源软件才是安全的技术保障。

 

6.开源软件与代码质量

反对开源软件的声音往往企图将开源代码与低质量联系起来,其实正如私有软件有质量差异之分一样,开源软件也有质量高低的差异。良好组织的开源社区能够集合众多技术专家的智慧,以严谨的代码审查过程保证代码的高质量;同时代码的开放和众多的开发者也可以保证迅速发现代码错误,并作出及时修正。

根据Coverity的发现,私有软件厂商大概是1000行代码有20-30个错误(KLOC),从1960年开始没有改变。2006年,通过调查包括LAMP在内的36个开源项目之后发现,代码量和错误率之间没有直接相关性,开源软件的社区模式开发使得软件错误量与代码量无关[7]。这也说明在大型软件开发项目中,开源模式具有更高效地错误排除的能力。而且,开源软件的错误修复无需依赖私有软件惯常的版本发布周期,可以保证更加敏捷高效。

因此,对于开源软件与代码质量的质疑,用户最好的选择是从高质量的社区获得高质量的代码,而不是怀疑开源模式本身对于代码质量的影响。

 

7. 开源软件与知识产权

开源软件的合作开发模式需要处理好不同开发者的知识产权问题。开源软件领域知识产权纠纷的频频发生,使得“开源软件会导致知识产权侵权”的说法也成为用户的顾虑之一。软件作为知识型的产品,知识产权的处置必然是一个无法绕过的话题,这对于开源软件和私有软件没有任何区别。也就是说,私有软件也同样有类似的知识产权问题,而开源软件在知识产权上的特殊性在于更加公开和明显。如果将一些流行的私有软件代码公开,追溯知识产权的归属,也一定难逃诉讼。

所以,开源软件的知识产权问题并不是其特有的,如果要解决这个问题需要作出更多的努力,一方面应当积极开展知识产权问题的讨论,应对知识产权泛滥的趋势对于开源软件的负面影响,特别是要反对“软件专利化”的言论;另一方面,对于用户而言,应当优先选择那些可以提供知识产权保护的开源社区中的代码。

 

8. 开源软件与开放标准

理解开源软件,也需要理解开源软件和开放标准的关系。互操作是市场竞争必要的技术特性,而开放标准又是实现互操作的重要保证。正是由于对于互操作的关注,开放标准的价值已经得到的广泛认知,并得到了很多国家政府在政策上的明确支持。

比较开源软件和开放标准可见,开放标准关注的是与互操作相关的接口和协议的开放,而对源代码没有要求;开源软件则是源代码的开放,不仅开放接口,而且开放所有接口的实现。开放标准在标准化组织中通过一定的程序由标准化人员和技术工程师完成,强调公平的程序和免费的使用;开源软件则是在社区中由技术工程师协商完成,在许可证的规制下工作。

垄断的私有软件厂商为了回避竞争,抵制开放标准的普及和使用。为了应对这种力量,开源软件通过开放源代码的方式,从代码的层次上,与开放标准,在接口的层次上,共同推动技术开放、技术互操作,争取技术竞争的机会。因此,开放源代码和开放标准是紧密相关、相互补充两个概念,共同成为开放技术必不可少的两个组成部分。

 

9. 开源软件与生态系统竞争

对于私有软件厂商通过技术锁定和标准控制赚取高额利润的行为,不仅用户深有体会,而且也引起了国家相关政策制定部门的重视。以往的做法是通过国家科研经费的支持,鼓励企业模仿垄断技术厂商的技术途径和标准,期望生产自主的替代软件产品;或者是鼓励企业开展原始创新,闭门造车,期望改变游戏规则,推动本土企业走向价值链的高端。但是,结果都不如人意。

分析原因可见,软件产业是一个网络效应极强的产业部门,技术和市场之争,实际上是生态系统之争。这就意味着,一旦垄断企业建立起生态系统,奠定“路径依赖”的途径,这个系统就很难打破,应对的方法要么是加入其生态系统,屈就于价值链低端;要么是重新建立生态系统,开展积极的竞争。由此可见,如果不再满足于价值链低端的地位,就只能重新建立新的生态系统。在信息技术领域建立新的生态系统的过程是艰难的,甚至依靠国家的实力都无法完成,闭门造车不足取,因为信息技术已经证明是无国界的,是全球性的竞争。但是,开源软件为我们提供了一个绝好的机遇,那就是与国际社区的参与者开放合作,建立起新的生态系统,与现有的生态系统开展竞争,并在新的生态系统中争取处于价值链的高端。

开源社区之所以能够担负起建立新的生态系统的任务,是由于其众多的参与者和开放的理念,而这是建立新的生态系统所必需的。例如,Sourceforge.net是一个开源开发资源,主持了超过180000个项目,2008年12月份有190万注册用户。根据2002年FLOSS的统计,2006年有超过490,000个Sourceforge.net开发者每周超过10个小时或更多的时间加入项目开发,这意味着每周500万人小时的工作量。Sourceforge.net只是众多开源社区之一,如果能够整合这些力量,将为建立新的生态系统提供足够的技术资源。另一个就是开放的思想。Web的创始人、著名的开放技术的倡导者Tim Berners-Lee 在解释开源浏览器计划时曾说:“如果技术是私有的,在我的控制之下,它就可能不会得到广泛的应用。推动Web成为开放系统,是Web得以广泛应用所必需的方式。因为不能希望一项技术得到广泛的接受,同时还想继续控制它。”[8]开源社区正是秉承着开放的思想,为建立新的生态系统提供无限动力。

 

10. 开源软件与创新

开源软件对于信息技术产业发展最重要价值是带来自由和创新的机会。研究表明,85%的原始创新来源于用户驱动[9],也就是说,私有软件开发模式只能保证1/6的原始性创新机会。

开源软件解决了采用私有软件在创新方面的不足,如果采用私有软件,创新只能在私有公司提供的平台之上进行,不仅受到软件产品版本规划的制约,而且这种创新很可能由于产品版本的变化而无法工作。采用开源软件,不仅可以直接参加到最底层技术的开发过程中,从核心层参与创新,而且可以基于知识积累和共享,在稳定的技术平台之上进一步创新。同时,开源软件也改变了用户对于软件本身的态度,代码可以通过社区来开发,而自己应该更加关注如何利用这些代码,提供创新的服务。某个角度而言,这是一种价值的回归。

作为一个发展中国家,我们正确地选择了以“创新”作为国家长期发展的战略,开源软件在创新方面的积极作用就需要得到足够的重视和利用。国家通过鼓励开源软件,有利于迅速积累核心技术能力,吸收现有技术成果,同时将更多的资源投入到进一步的创新过程之中,在更高的层次上参与竞争。

综上所述,开源软件带来的是软件产业价值的回归和对传统软件产业的反思。用户的信息技术投资不应当是购买软件代码的授权费,而应当是购买满足业务需求的技术服务。只有在开源软件模式下,用户才有权力选择高质量的代码,摆脱技术锁定,提高信息安全,满足业务需求;国家信息技术政策的制定者,也应当抓住开源软件的机会,鼓励企业通过社区掌握核心技术能力,保证软件的自主和安全,实施软件创新战略,实现信息产业的跨越试发展。

 

参考资料

[1] Moulds, J., Microsoft's Vista release may be last 'big bang', February 1, 2007,
http://www.telegraph.co.uk/finance/2803555/Microsofts-Vista-release-may-be-last-big-bang.html
[2] Rosenberg, D., Study Finds "Free Open Source Software Is Costing Vendors $60 Billion", April 16, 2008, http://news.cnet.com/8301-13846_3-9920202-62.html
[3] Atwood, J., The Long, Dismal History of Software Project Failure, May 16, 2006,
http://www.codinghorror.com/blog/archives/000588.html
[4] Lawton, M., Notarfonzo, R. Worldwide Open Source Software Business Models 2007–2011 Forecast: A Preliminary View. IDC Inc.
[5] Software & Information Industry Association. Packaged Software Industry Revenue and Growth, 2006. Available from http://siia.net/software/
[6] Mah, P., Gartner: Worldwide IT spending will top $3 trillion, October 10, 2007,
http://blogs.techrepublic.com.com/tech-news/?p=1348
[7] Kerner, S., Coverity Study Ranks LAMP Code Quality, March 6, 2006,
http://www.internetnews.com/stats/article.php/3589361
[8] Tim Berners-Lee Home Page, http://www.w3.org/People/Berners-Lee/FAQ.html#What2
[9] Von Hippel, E., Democratizing Innovation, 2005, http://web.mit.edu/evhippel/www/democ1.htm

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有