| 作者:刘博
| 转载自:华为开发者社区
| 编辑:王玥敏
| 设计:刘颖洁
以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响。信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长;另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加,信息成本越来越低,从而降低了整个经济体系中的交易成本。信息技术的发展通过上述两方面的作用正在逐步改变传统的经济体系,导致经济体系发生制度变化,产生了许多新的经济现象,如新的企业经营模式、新的产业形态、新的生产方式等等。其中,开放源代码软件(Open Source Software,在后文中简称为 OSS)现象就是一个典型的例子。
从二十世纪末开始,OSS 不论是在技术上还是在商业上都取得了令人瞩目的成功。回顾 2018 年,我们见证了开源软件在商业层面取得的历史性突破:
IBM 以 340 亿美元收购了已上市开源软件企业 Red Hat,这同时也是商业软件史上创记录的一笔收购。
Microsoft 以 75 亿美元收购了开源协作平台 GitHub。
Salesforce 以 65 亿美元收购了已上市的开源软件企业 Mulesoft。
Adobe 以 16.8 亿美元收购了开源软件企业 Magento。
要知道全球总共也就只有 6 家市值在千亿美金级的软件企业,Microsoft、Oracle、SAP、Adobe、IBM 与 Salesforce.
OSS 的成功是一个耐人寻味的现象。从经济学的角度对这一现象稍加分析立刻就可以感觉到这一现象中的不寻常之处。
首先,作为纯公共产品的 OSS 既不是由公共部门提供的,也不是由私人部门通过商业行为生产的,而是由私人在没有任何报酬的情况下自愿提供的。传统的公共产品供给理论认为由于搭便车问题的存在,由私人部门自愿提供的公共产品总是不足的。但在 OSS 的生产中,这一经典的论断受到了挑战。分散于世界各地的上百万人自愿贡献出他们的时间、技能参与到 OSS 的开发工作中,开发出了数十万个各种类别的 OSS。因此,我们不仅要问,OSS 是如何吸引如此众多个人的无偿贡献生产出如此数量巨大、价值惊人的公共产品的?
其次,在软件这个技术含量和复杂程度都相当高的产品领域中,OSS 开发群体如此一个松散的非正式组织是如何开发出了大量的高质量产品的呢?按照传统的生产组织理论,软件作为高度复杂的产品,尤其需要强有力的管理以保证开发者之间能够精密地进行组织与合作,这一点只有具有相当管理水平的企业才能够做到。然而 OSS 开发组织却也做到了这一点。OSS 开发组织是相当松散的非正式组织,组织中的任何成员都可以按照自己的意愿自由地加入和退出组织,他们的组成跨越了国家、民族、文化、语言的边界,他们绝大部分互相从未谋面,仅仅通过互联网进行联系沟通,组织中既没有权威的命令,也没有严格的层级结构。那么,这样一种松散的非正式组织是如何有效地汇聚了全世界上百万人的力量组织产品开发的,是如何有效地管理产品的持续升级创新的,又是如何在具有强大垄断力量的大型商业软件公司的威胁下生存并成长的?
再次,OSS 和商业软件虽然有着完全不同的生产组织方式,有着完全不同的生产目的,但它们的产品功能却是基本一致的,在同一个市场中竞争。OSS 的产权制度和生产组织方式作为一种新的制度出现在产业中,不可避免地将和传统的制度展开竞争。那么这种新出现的制度将会对整个产业产生什么样的影响呢?
随着数以万计的 OSS 被源源不断地被开发出来进入软件市场,整个软件产业的经营理念、组织模式和产业结构受到强烈的冲击。
笔者对此产生了浓厚的兴趣, 对 OSS 背后的经济及社会原理进行了初步研究,但由于涉及了较多的研究领域,研究并不充分,仍然有许多值得深入的方面。
我们试图去分析:
开源软件出现、发展的原因及动力问题 ?
开源软件对于 IT 产业带来的那些影响,产业结构会发生什么变化 ?
开源软件社区具有什么样的组织特征?其生产的组织方式是什么样的?生产是如何进行的?
给我们带来了一些什么样的启示 ?
整篇文章将分成宏观、中观、微观三个部分:
分别在三层面上分析开源软件出现的原因及动力问题
在中观层面分析开源软件对产业带来的影响
在微观层面分析开源软件社区的组织特征及生产方式
本篇优先对开源软件定义及发展阶段进行介绍
1
开源软件是什么 ?
在开始分析之前, 先简单介绍开源软件的背景和一些容易造成混淆的概念上的问题。
开源软件有狭义和广义之分. 广义的开源软件是指源代码公开,并且允许任何人学习、复制、修改、重新发布的计算机软件。狭义的开源软件指符合 OSI(Open Source Initiative) 定义的开源软件.
容易造成混淆并与开源软件相关概念的澄清
自由及开放源代码软件(Free and open source software,缩写为 FOSS,或 Free/Libre and open source software,FLOSS)是一种可以归类为既是自由软件又是开源软件的计算机软件。也就是,任何人被授权可以自由的使用,复制,研究和以任何方式来改动软件,并且其源代码是开放和共享的,因此人们被鼓励志愿的改善软件的设计。这种软件是相对于专有软件, 其是在著作权的严格限制之下,并且通常其源代码对于用户是不开放的
1.源代码公开的软件不一定是“开源软件”
商业软件厂商如微软的部分产品在全球推出了政府安全计划源代码协议, 但用户只能看到源代码, 不能修改、使用, 因此不是开源软件。
判断一个软件是否为开源软件, 关键是看软件许可协议如何规定软件的使用、发布、复制和演绎等整个过程。
2.开源软件不是公有软件
公有软件明确放弃版权或者版权中的经济权利有效期届满。但是,开源软件受版权保护, 必须在版权限定的规则范围内使用.
3.开源软件不等同于免费软件
开源软件通常是免费使用的, 但不是所有的免费软件都是开源软件.
4.自由软件 (Free Software) vs 开源软件
自由软件特指以 GPL 类许可协议发布的软件, 定义比开源软件更为严格。自由软件要求确保使用者能获得使用软件的真正自由, 不允许修改源代码后闭源出售软件。很多 OSI 认可的开源软件并不符合自由软件的定义。
开源协议
License 是软件的授权许可,里面详尽表述了获得软件后拥有的权利,可以对软件进行何种操作,何种操作又是被禁止的。
开源软件协议大体上分为三类:
1.Copyleft (Free proliferated licenses)
Copyleft 软件是一类自由软件,其发布条款可以保证它所有版本的所有副本都或多或少带有相同的发布条款.
Copyleft 是一个通用的概念,有多种可能的方式编写 copyleft 发布条款,因此原则上可以有很多种 copyleft 自由软件许可证。然而实际上几乎所有 copyleft 软件都使用 GNU GPL。两种不同的 copyleft 许可证通常不兼容,这意味着直接将使用一种许可证的代码与使用另一种许可证的代码合并将会是非法的;因此,人们使用同一种 copyleft 许可证将会有利于社区。
2.宽松自由软件许可协议 (Copylefted Free Permissive Licenses)
是一种对软件的转散发方式有最低需求的自由软件许可协议条款类型。因此,这种许可协议将不保证被使用软件的派生版会继续保持自由软件的形式。
当软件被转发(不论有无被修改)时,宽松的许可协议允许转散发者限制他人对源代码的访问权,一些较广为人知的宽松自由软件许可协议条款包括了 MIT 许可证与 BSD 许可证.
3.非 copyleft 的自由软件协议(Noncopylefted Free Licenses)
非 copyleft 的自由软件带有来自作者的再分发和修改的许可,也带有添加额外限制条款的许可。
如果一个程序是自由的但并未采用 copyleft 许可证,那么某些副本或者修改版本可能完全不是自由的。软件公司可以编译该程序,不论是否对其进行修改,都可以将可执行文件作为专有软件产品发布。
开源软件的共有产权性质
软件产品的知识产权应该是一种混合产权。一方面,软件的算法、步骤和构思可以被认为是思想性的,应当获得专利权;另一方面,软件的其它一些元素如界面、语言、代码行以及软件产品的复制品等可以被视为表达性的,应当获得版权。目前,大部分国家都将计算机软件的产权归于版权的范围内。
在现在的商业软件中,由于专利权申请程序的繁琐以及软件的高速创新,使用专利权保护知识产权的较为少见,而应用最多、被认为最有效的产权保护手段主要是商业秘密,其次是版权,而两种手段的联合运用则更为常见。
通常的软件厂商对其在市场中进行销售的商业软件采用版权的方式保护软件的目标代码不被未获得授权者使用,即通过版权来保护其“文字(目标代码)表达”的独占权,并在许可证中的相关条款中加以说明和强调。但仅靠版权的保护是远远不足的。由于软件本质是执行特定功能的指令,具有思想性,所以如果软件厂商的其它竞争者对软件的源代码进行部分的修改,即可以实现尽管执行相同功能但表达形式不同于原软件,从而避开版权法的限制。
为了保护软件中思想性的创新成果,虽然可以应用专利权,但由于专利权申请的时间成本和财务成本使这一方式可行性较低。大部分软件厂商最终采用了商业秘密的方式,封闭软件的源代码使其成为企业的商业秘密,从而使用商业秘密的法律手段保证自己对软件的知识产权不受侵犯。这就是大部分私有产权软件的产权保护状况。
OSS 软件所遵循的是一套被称为逆版权 (copyleft) 的机制,这套机制利用版权 (copyright) 的机制,达到和版权相反的目的,即利用版权制度的相关法律手段来保护 OSS 的公开、免费的权利。逆版权的核心就是前面提到的开源软件协议.
开源软件促进会 OSI(open source initiative)对于开源软件有十个条款:
自由再发布
源代码公开
允许派生作品
作者源代码完整性
不能歧视任何个人或团体
不能歧视任何领域
许可证的发布
许可证不能只针对某个产品
许可证不能约束其他软件
许可证必须独立于技术
通过对 OSS 各项基本条款以及它们所确定的产权中各项权利的安排分析,我们可以清楚地看到,软件的开发者和使用者在利用权、撤销权、排他权、度让权的安排中有着完全重合的权利。
正是在 OSS 逆版权机制所产生的上述产权安排作用下,全世界各地的程序开发者和使用者通过互联网等通讯工具,共同协作使大量的 OSS 被开发出来并被不断地完善。对于 OSS 这一由群体共同协作开发出来的知识产品,群体中所有成员能够按照自己的意愿和能力决定对它的投入水平,同时不受限制地使用它,这是真正的共有产权制度。
2
开源软件的发展历程
1970 年代 ~ 1998 年 - 1.0 自由软件时期
在计算机发展的早期即二十世纪六、七十年代,计算机的使用者通常和其他人共享程序。那时候程序数量非常少,大部分软件都是作为计算机系统的附带部分,捆绑卖给用户的。由于相对于计算机设备昂贵的价格,软件程序的价值非常低,所以当时许多设备厂商提供的软件,甚至包括由政府基金开发的软件,都被允许共享,程序源代码是公开的,一般都会根据用户的需要提供。由于设备附带的软件比较简单,无法充分满足工作时的需要,计算机使用者经常会利用源代码对程序进行改进,以充分发挥计算机的作用。所以,出于互惠的动机,使用者也会将经过改进的软件免费提供给其它的需要者。因此,可以认为,软件在诞生之初都是开放源代码的。随着计算机硬件价格的下降,计算机的快速普及以及计算机网络的出现,软件变得越来越重要,软件的价值也得到快速提升。于是,在上世纪八十年代,产生了专业软件公司,将软件作为单独的商品加以开发和销售。为了能够保证自己的商业利益,这些软件公司封闭了软件的源代码,使得计算机的使用者为使用软件必须支付一定费用,同时,他们也丧失了对软件按照自己需求进行修改的权利。
Richard Stallman 为对抗这一趋势,决心开发自由软件——开源软件的前身。
Stallman 于 1985 年成立了自由软件基金组织 FSF,着手领导开发源代码开放的自由软件。同时,为了保障任何人都能够自由获得和使用自由软件,Stallman 别出心裁地利用法律机制建立和发展了一套独特的版权体系。他在传统的软件版权中附加了一个标准许可证,这使得想使自己开发的软件保持自由状态的创作者可以利用这一许可证来保障未来使用者自由使用的权利,避免软件因为商业目的而丧失自由使用的权利,防止厂商利用自由软件,使其私有化。
这个时期, 主要是学者和业余爱好者开发软件,整个风气是“免费提供软件”。在自由软件基金会工作的时候,大家不知道工资是从哪里来的。当时还没有商业模式的概念,“免费软件”开发背后的资金(如果有的话)是以大学或企业研究资助的形式提供的。
1998 年 ~ 2018 年 – 2.0 商业化时期
上世纪 90 年代中期互联网的普及极大地促进了自由软件的发展。自由软件数量快速增长。于此同时,一些自由软件的开发者,发展出了一套软件开发作业方法,这套方法允许成百上千遍及世界各地的自愿者能够通过互联网同时参与到开源软件的开发中来。这套方法的出现,使得自由软件的开发能力被极大的放大,也使得大规模复杂自由软件的开发成为可能。
然而自由软件的思想没有立刻成为主流,业内也对其一直保有怀疑的态度。
Bruce Perens and Eric Steven Raymond(1998) 认为 Stallman 的“自由 " 一词 free 很容易会被人理解为免费的意思,从而导致商业机构的敌意。因此,他们和其他人共同成立了开放源代码促进组织 OSI,以推动源代码开放运动。虽然开放源代码运动承袭了自由软件运动的技术性规则,但它和自由软件运动背后的哲学理念却不同。相对自由软件重视黑客传统的理想主意的政治和哲学思想而言,开放源代码运动更为重视程序本身质量的提高和改进。不过总的来说,两者的差别并不是很大。
Perens 等人所倡导的“开放源代码 " 的概念由于淡化了政治信仰等社会因素、强调了软件本身的特性而得到了更大范围的认同,成为具备源代码开放这一条件的所有软件的统称,当然也包含了自由软件。
从这个时期开始,真正的开源软件商业模式出现了,红帽和 MySQL,以及许多其他在开源软件之上提供付费支持和服务的商业组织一起出现了。这是我们第一次看到一种可行的经济模式来支持这些组织的持续发展。
开源的历史表明,它的兴起是由于技术和商业创新的良性循环。在技术方面,开源是创建软件的最佳方式,因为它加速了产品反馈和创新,提高了软件的可靠性,扩大了支持范围,推动了采用,并汇集了技术人才。开源是一种技术驱动的模型,这些特性从“免费软件”时代就已经存在了。然而,只有在技术创新与商业创新相结合的情况下,才能充分发挥开源的潜力。如果没有商业模式,比如付费支持、开放核心和软件即服务模式,就不会有开源的复兴。
经济利益创造了一个良性循环,商业创新越多,开发人员的社区就越大,从而可以刺激更多的技术创新,继而也增加了开源的经济激励。
2018 年 ~ 202x 开源软件 - 3.0 开源是每个软件公司的一部分
如今,几乎所有的大型科技公司都是在开源软件的基础上开发的。越来越多的公司也在建立自己的开源项目!
今后,这种良性循环将继续下去。在技术上,人工智能、开源数据和区块链是一些新兴创新的例子。商业上,开源不再是红帽、Elastic、Databricks 和 Cloudera;它将至少成为每一家软件公司的一部分,以及其他任何将开源作为其堆栈的那种企业。当我们以这种方式看待开源时,开源软件的市场和可能性比我们所意识到的要大得多。