关于开源软件的十个问题(上篇)

关于开源软件的十个问题(上篇)

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

一、开源软件与开源社区

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

软件开发是一个特殊的、知识密集型的生产领域。软件开发项目,特别是大型的软件开发项目,失败的案例屡见不鲜。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]。

 

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

二、开源软件的商业模式

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

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

 

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

 

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

 

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

三、开源软件成本分析

作为一种社区化的开发方式,开源软件通过整合集体智慧,累积技术成果,减少重复开发,对于降低软件开发成本的作用是显而易见的。统计表明,开源软件的开发费用是私有软件开发模式的二十分之一。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万亿)。

 

有一点必须说明的是,开源软件的低成本是与按照许可证的要求积极加入社区开发、合法使用密切结合在一起的。现在有一种错误的思路,认为从社区获得代码之后独立开发改造,销售经过改造的软件产品,而不按照许可证的要求反馈代码,是一种好的商业模式。认真分析这种行为,暂且不论可能存在的法律风险,就商业利益而言也是得不偿失的。

道理很简单,从社区获得的代码经过企业的独立开发和扩展,丧失了与社区代码的兼容性,而为了维护这些代码,企业需要付出更大的成本,而且无法继续从社区代码的发展中获得新的代码。另外,企业由于脱离社区开发,丧失了对于社区技术方向的影响力,也会被社区抛弃。所以,只有加入社区开发,合法使用代码,才能获得开源软件带来的低成本优势。

 

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

 

四、开源软件和私有软件的关系

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

 

关于开源软件是否能够代替私有软件,实际上,在某些应用领域这种替代已经完成,或者说从一开始,这些领域都是被开源软件占领的。例如支撑互联网的基础软件,包括DNS服务器、TCP/IP协议栈、邮件服务器等等;在应用架构领域,开源软件也逐渐成为主流,操作系统(Open Solaris,Linux)、数据库(MySQL)、Web服务器(Apache)、应用服务器(GlassFish)、开发工具(NetBeans)、Java开发包等等。

不难看出,在基础架构类软件中,开源软件的优势地位非常明显,但是在应用软件领域,开源软件还需要更多的努力。可喜的是,随着人们对于开放技术重要性认识的深化,OpenOffice依靠其支持国际标准文档格式的技术特征,成为应用级开源项目的先锋。

 

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

 

五、开源软件与安全

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

 

对于用户而言,安全包括两方面意义,其一,用户的安全不会受到技术提供商的威胁;其二,用户的安全不会因为技术提供商的技术漏洞受到第三方的威胁。事实证明,开放的技术可能是更安全的技术。开源软件通过开放源代码,用户可以明确了解软件如何实现安全性,确保软件没有“后门”,避免受到技术供应商的安全威胁。

“黑屏”事件不可能在开源世界里发生,因为那些用以控制用户的代码将展现出来,无处躲藏。同时,开源软件通过将所有的软件代码公开,并且保证软件无法被攻击,比仅仅通过隐藏代码来保证安全,更有安全上的保证,因为安全不是通过隐藏代码实现的,而是通过透明的安全机制保证的。

 

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

 

后面五个问题我们将在“关于开源软件的十个问题(下篇)”中讲解,敬请关注。

参考资料

[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 $60Billion”, April 16, 2008,http://news.cnet.com/8301-13846_3-9920202-62.html.

[3]Atwood, J., TheLong, Dismal History ofSoftware 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–2011Forecast: A Preliminary View. IDC Inc.

[5] Software &Information Industry Association. Packaged Software Industry Revenue andGrowth, 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/=13481.

关于作者:

丁蔚,博士,中国开源软件推进联盟副秘书长,长期从事开放源代码和开放标准推进工作,专注于开源和开放标准战略研究和实践,探索通过参与开放技术生态,创建有竞争力商业模式的策略。

关于开源软件的十个问题(上篇)

为开源爱好者和从业者点亮人生!

关于开源软件的十个问题(上篇) 微信公众号 关于开源软件的十个问题(上篇) 深耕云智能领域,收获行业前沿技术与洞见

来源:云布道师

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月25日
下一篇 2018年2月25日

相关推荐