何正方 梁宇
摘 要: 本文首先从开源的定义,开源协议的介绍,开源开发者的动机三个方面介绍了开源软件的背景。然后通过对Linux的诞生、发展和市场占有率,谷歌和甲骨文关于Java的版权之争,Android和iOS在移动终端市场中的市场占有率分析,TensorFlow的巨大成功四个案例分析,得出开源对软件行业发展有积极的推动作用。但是,并不是要将所有软件都开源。在软件行业的发展过程中,开源和闭源各有优势,它们将长期共存,共同促进软件行业持续、健康、稳健的发展。
关键词: 开源;Linux;Java;Android;iOS;TensorFlow
中图分类号: TP30 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.07.023
【Abstract】: This article introduces the definition of open source, open source software license, the motivation of open source developers firstly. Then analysis Linux, Google and Oracle dispute over Java, market share of Android and iOS in the mobile terminal market, TensorFlow huge success. Through data, comparative analysis, come to the open source to the software industry development has positive role in promoting. However, not all software needs open. In the development of the software industry, open source and closed source each have their own advantages. They will coexist for a long time to promote the development of the software industry sustainedly, healthily and stably.
【Key words】: Open source; Linux; Java; Android; iOS; TensorFlow
0 引言
源代码是大多数计算机用户从未见过的软件的一部分,软件开发人员可以通过修改源代码来改变一个应用程序的工作方式。开源软件(英语:Open-Source Software,英文縮写:OSS,中文也称:开放源代码软件)是一种在开源协议下源代码可以被任意获取和修改的计算机软件,这种软件的作者在软件开源协议的规定下保留一部分权利并允许任何使用者修改和重新发布软件(重新发布的软件也要遵守开源协议),同时任何组织和个人都可以免费使用开源软件[1-2]。与开源相对应的闭源软件仅可获取编译后的二进制可执行文件,只有拥有软件著作权的自然人拥有程序的源代码。部分开源软件代码被发布到公共互联网上,被世界各地的开源拥护者合作开发[3],诞生了很多伟大的软件产品,比如
Linux、Android、TensorFlow等。不是只有软件开发人员才能从开源中受益,普通用户也可以将开源软件用于任何他们想要的目的。在本文中,重点将放在开源软件给软件行业带来的变化的讨论。
1 开源协议与开发者的动机
1.1 开源协议
开源软件的源代码是开放的,任何自然人都可以自由使用和重新发布。同时,为了维护开源的作者和贡献者的合法权利,保证这些软件不被商业机构或个人窃取,影响开源软件的持续健康发展,开源社区提出了各种开源许可协议。开源协议是对软件的授权类型、权限和义务而定义的规范,开源协议确保了使用者可以免费的修改和发布软件[4]。人们不容易区分一个软件是否真正开源,原因在于开源社区认可的协议有六十多种。常见的开源协议有:BSD、Apache Licence、GPL、LGPL、MIT等。但在这六十多种许可中,GPL(General Public License,通用公开许可协议)是开源协议的主流。GPL是目前开源世界中最重要的许可,根据谷歌的研究,基于GPL的开源软件在开源世界中占45%-50%。
1.2 开源开发者的动机
现在开源软件的开发已经受到了如此多的关注,但是为什么软件开发者应该免费向社区提供他们的服务。显然,利他主义并不是唯一的答案。重要的是要理解为什么软件开发者应该免费向社区交付他们开发的代码,要理解这一决定背后的动机。
事实上,只有当一个软件开发者能够从软件项目中获得一些净收益时,才会参加到这个软件项目中,这个收益可以是直接的回报(当前的利益减去当前的成本)或者是延迟的回报(延迟的收益减去延迟的成本)[5]。当参与一个软件项目时,软件开发者会陷入各种各样的成本和收益中。当然,主要的成本还是软件开发者开发软件所需的机会成本。如果软件开发者正在为一家公司、大学或研究实验室工作,那么独立开发软件将不可避免地让他耗费更多的精力,就机会成本而言,这是非常昂贵的。
以上提到的机会成本可以有两项直接利益补 偿[5]。首先要考虑的是,在开发开源软件的同时,如果他的工作是开发相同的领域的软件,那么软件开发者可能会提高他当前的工作效率(如果他目前在一家公司、大学或研究院工作);第二个好处是开发一个有趣的、吸引人的软件可能比普通任务更有挑战性。
还有一些延迟的回报可能会让那些为开源软件工作的软件开发者受益。一是与未来的职业发展有关,因为如果软件开发者工作得很好,并且将自己
与其他软件开发人员区别开来,他们可能会被那些正在寻找软件开发专家的公司注意到(并最终被雇佣)。另一个延迟的回报来自于自我满足,软件开发者所完成的有价值的工作,可以从社区得到别人的肯定。这些激励与开发开源软件的动机有着密切的联系[6]。
同时开源软件的另一个很吸引人的地方是别人不用花时间来解决同样的问题。当你查到你的一个项目已经有人做了开源项目后,你就不需要花时间做重复的工作。同样,有人用了你的开源项目帮他解决了一个实际问题后,你将会很有成就感[7]。
2 开源案例分析
2.1 Linux的诞生、发展和市场占有率
Linux是一个自由和开放源代码的操作系统。是目前运用领域最广泛、使用人数最多的操作系统。该操作系统的内核由Linus Torvalds在1991年10月5日首次发布[8-9],Linux是开源软件发展中最著名的例子。只要遵循GNU协议,任何个人和机构都可以使用Linux的所有源代码,也可以修改和再发布。大多数Linux系统还提供图形化操作界面,多数人都是直接使用Linux的发行版,而不是自己整合各种组件。
Linux严格来说是指操作系统的内核,操作系统还包含了用户图形化操作界面和一些实用工具。如今的Linux通常指基于Linux的完整操作系统,内核则称为Linux内核。
Linux最初只是作为支持英特尔x86架构电脑的一个操作系统,后来Linux被移植到很多计算平台,其中服务器操作系统远远超出其他服务器操作系统,数据参考表1。
目前世界上前500个超级计算机,99%以上都是运行Linux操作系统[10],最快的前十名超级计算机都运行着Linux操作系統[11]。历史数据参考表2,从数据中也可以看到越来越多的超级计算机使用Linux作为操作系统,这同Linux是开源的有着密切的联系。
Linux也被广泛应用到嵌入式操作系统上,如智能手机、平板电脑、智能电视和电子游戏机等。移动设备上使用广泛的Android操作系统就是基于在Linux内核开发的。
通常情况下,Linux被打包成供个人电脑和服务器使用的Linux发行版,一些主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的系统库,通常还带有很多可以满足各种需求的应用程序。个人电脑使用的Linux发行版通常还包含一个相应的桌面界面,如KDE或GNOME。桌面Linux常用的应用程序有Firefox浏览器、网易云音乐、GIMP图像编辑工具、Atom文本编辑器等。
今天众多场合使用的都是各种Linux发行版,小到嵌入式设备,大到超级电脑[16][17],并且在服务器操作系统领域中有很高的市场占有率[18],同时在家庭与企业中使用Linux发行版的也越来越多[19]。在政府中也越来越受欢迎,巴西政府因支持Linux而闻名[20]。报道称俄罗斯军队自己开发的Linux发行版,做为G.H.ost项目已经应用到实践中[21]。印度的Kerala计划在向全联邦的高中推广使用Linux[22]。中国为获取在操作系统技术的独立,在开发龙芯过程中使用Linux[23]。西班牙也开发了自己的Linux发行版,并且广泛使用到政府与教育领域中,如Andalusia地区的Guadalinex。北朝鲜的Red Star操作系统开发于2002年,它是基于Fedora Linux的一个版本[24]。
2.2 谷歌和甲骨文关于Java的版权之争
整个案件过程大致如下[25]:
2016年5月,经过两个星期多的审理,再经过三天的审议后,联邦法院最终判定谷歌旗下的Android操作系统并没有侵犯甲骨文的Java版权,谷歌对Java APIs的使用是“正当”的,并且驳回了甲骨文对谷歌高达90亿美元的巨额诉讼请求,结束了长达六年的诉讼大战[26]。
回顾2010年,甲骨文通过收购Sun公司而获得了Java的版权。甲骨文在收购Sun公司之后不久,就试图让谷歌向其支付高额的Java版权使用费,但遭到了谷歌的拒绝。双方就此事进行了谈判,但最终没有达成共识。紧接着,甲骨文就将谷歌告上了法庭[27]。
谷歌在辩护中的认为,Java应免费提供给任何用户使用。谷歌称,Sun公司前首席执行官Jonathan Schwartz可以就此出庭作证。Schwartz作证称,谷歌的确可以免费使用Java的APIs[27]。
陪审团的问题只有一个,即谷歌在使用Java APIs的时候是否在法律允许下正当使用。全体陪审团一致认为“是的”,全票通过,谷歌胜诉 [26]。
谷歌公司发言人也通过声明称,“今天的裁决表明,谷歌是在合理使用Java APIs,这代表着Android生态系统的胜利、Java社区的胜利、以及依赖用开源来打造创新消费产品的个人或公司伟大胜利。”[28]
2.3 Android和iOS在移动终端市场中的市场占有率分析
Android的中文名称为安卓,是一个基于Linux内核的开源移动终端操作系统,谷歌以Apache
时间事件2005年谷歌收购Android,其使用的编程语言是Java语言,谷歌试图与拥有Java语言的Sun公司谈判,但最终没有拿到授权。2006年谷歌拒绝了Sun的协议:花费2000万美元使用三年Java,与Android 相关的收益的10%归Sun公司所有,最高为2500万美元。2007年谷歌开源了安卓操作系统和基于Java的Dalvik虚拟机。2010年甲骨文收购了Sun公司的Java专利和版权,同时指控谷歌侵害了Sun公司的7项专利。2012年甲骨文和谷歌在旧金山州地方法院就Java版权案开庭,谷歌胜诉,甲骨文随即上诉。2014年联邦法院否决了地方法院的判决,判定Java的APIs是甲骨文的版权。2016年联邦法院对谷歌使用Java的APIs 进行二次判决,判定谷歌使用Java的APIs是合法的。