作者
余军
整理
王晔倞
责编
郭芮
在许多程序员心里,提起开源,第一印象会想起如免费、基金会、社区、自由等富有正义感的一些名词,而一提起License,不仅会联想到Oracle、微软等企业,而且还会跟巨额收款联系起来。
简单说,在刻板印象中,我们深信开源代表着正义与自由,而闭源却是剥削与邪恶的化身。但现实情况真是如此吗?
为了加深大家的理解,结合维基百科,我对时间轴进行了梳理。
开源是正义的?闭源是邪恶的?
先看60年代-70年代,整个开源软件并不像现在具有很高的流通性,大部分使用领域集中在军工单位,并多半采用项目制的方式进行。
直到年2月3日,比尔·盖茨给电脑爱好者们写了一封公开信,抱怨未经授权使用AltairBASIC的情况太普遍,导致新成立的微软公司回报甚微。这封信相当有名,被看作是软件通过商业授权获取收入的真正开端。
也就是说,解决了软件流通性的问题。而License模式的核心是解决所有权问题,就是不管个人也好,企业也好,我通过自己的智慧或资源投入后制造了一个软件,然后该如何将这个软件在市场上合理、合法的进行流通呢?获得许可证的人或单位,你只有使用权,不拥有所有权,而在这个之前,无论你给谁做项目,项目所产出的软件所有权,都将归属这个项目,因为这是个合同。
说到这里,也许有人会问,那么许可证模式与开源模式所倡导的宗旨是不是背道而驰?
这类似《黑客帝国》中的场景,有黑就有白,有正就有反,在RichardStallman(GUNEmacs之父)这帮人看来并不是这样,他们想的更加长远。他觉得人类的成果,不应该被任何一家机构或个人垄断,他是基于这个出发点进行工作的,最终他建立了GNU和自由软件基金会。
到年,RichardStallman在net.unix-wizards新闻组上公开发起GNU计划,宣布它的目标是创建一套完全自由的操作系统,并附带一份《GNU宣言》。在该宣言中,Stallman声称发起该计划的一个重要理由是要“重现当年软件界合作互助的团结精神”。
次年年1月,RichardStallman启动GNU计划,由于GNU是公开源代码的,为了防止不肖厂商利用自由软件,使其专有化,他创造了Copyleft的授权办法,让所有的GNU程序遵循一种“Copyleft”原则,即可以拷贝,可以修改,可以出售,但必须遵守“源代码所有的改进和修改必须向每个用户公开,所有用户都可以获得改动后的源码”的原则。
在随后的四十年间,开源与闭源两条线都按照自己的规则发展着,尤其是闭源软件,由于有License这样好的模式,对许多中小型软件公司的知识产权起到了保护作用,催化了其蓬勃发展的速度,其中最有代表性的就是微软。
因此,对于开源界而言,在很长一个阶段中,主要的对手就是微软。这个对抗,不是凭空想象出来的,微软在其领域投入的人力物力是我们想象不到的,他们对开源界是感到害怕的,并且制定出了一套完整的对抗战略,最有名的是“F.U.D战术(fear,uncertainty,anddoubt)”。
到今天为止,微软却悄悄地成为了全球对开源支持力度排名第一的公司,比如.net底层框架也已全面开源,最近又听说给某开源基金会捐献了+的专利。
三国演义开头的那句话怎么说来着?天下大事,分久必合,合久必分,这不仅是软件工业的发展,也是当今开源与闭源之间交互的方式。
当今那么多开源软件,选择时应注意些什么?
一般在进行闭源软件选型时,如果被问到哪个好用?哪个适合?国内许多技术负责人几乎都会从软件功能、厂商支持,或当下应用开发与运维团队的承接能力来考虑。虽说这些都属于纯技术维度,但像Oracle、微软这样的企业的确值得信赖,他们有董事会、产品团队、销售与售后,它的闭环体系保障了质量。
然而,开源软件并不是这样的。它是一个开放性的结构,从生产一直到进入流通市场,依赖的并不是某一家公司,而是社区。
如果在开源技术选型时,我们依旧效仿传统做法,问一些价格怎么样?功能和测试如何?培训和后期服务如何?最多再问一句,你这个技术是符合前沿科技吗?无论商业公司给出什么样的答复,只要你最终选择,那也许你已经给未来埋下了坑。
为什么这么说呢?先来了解一下整个开源软件生态体系吧。
如果你把整个开源软件生态体系看成一家公司的话,基本可以这样概括:
类似RedHat这样的企业,是商业化的交付团队;类似Apache开发社区,是产品开发团队;类似Apache基金会,是董事会和决策层。许多国内公司在进行架构选型时,不仅不了解其背后的开发社区与基金会是谁,更不知道其创始人是谁,当业务进入大规模使用之后,一旦生态上层出现问题,那就容易栽更头。
大家还记得当年MySQL与Oracle,及MariaDB之间的恩恩怨怨吗?
年2月26日,当时的SUN公司宣布以约10亿美元价格对开源数据库开发商MySQL并购。年4月20日,Oracle以74亿美元收购Sun。年1月,MySQL创始人迈克尔·维德纽斯(MichaelWidenius)联合部分相关人士向欧洲、中国与俄罗斯的监管机构提交了反对意见。年后期,MichaelWidenius离开甲骨文,创办MariaDB,完成了对MySQL的“反戈一击”。…………由于Oracle与欧盟之间的反垄断协议至年结束,MySQL会变更为许可证模式吗?年9月,开源数据库初创公司MariaDB获阿里万欧元融资。…………
以上这些信息,也许由于时间跨度有一些失真,但这一桩桩事件对下游厂商与最终客户造成的影响却是真实存在的。比如红帽从Redhat7版本之后,已将预装MySQL改为预装MariaDB,而此时,你的应用正大规模的使用MySQL作为核心数据库,你该何去何从呢?
开源软件基金会是如何盈利的?
经过上面的介绍,我们可以把开发社区的职责简单概括为项目开发,工作内容是将一个开源软件稳定的做出来,那么谁对整个社区的方向决策负责呢?委员会,准确的说是采用自由管理的委员会行使管理,而其中多半来自于上层顶级基金会。
在许多人的脑海中,一听到某某基金会,第一印象一定是中国红十字基金会,或证券投资基金业协会这样的非营利性组织,他们像天使那样,不在乎收益,为这个世界做着无私的奉献。
如果你真这么想,那就大错特错了。简单说,从某种意义上来讲,基金会,等同于商业品牌。
随着开源软件使用范围的扩大,开源软件基金会的涉及范围也从开源领域逐渐蔓延至整个软件工业领域,这也促使了这些基金会不仅越来越有钱,而且涉及众多软件工业领域的核心内容。与中国不同,在美国,基金会也是公司的一种形式,也是可以盈利的,只不过不能通过服务与产品销售的方式盈利。
那它靠什么盈利?
首先,一些顶级基金会实际控制着许多技术的核心环节,如操作系统、通讯协议等。以Linux基金会为例,比如证券交易中HFT(高频交易)部分的算法定义和规范定义,是归属Linux基金会的,再比如金融信息交换协议(FIX)在报文当中转换到AMQP消息协议,也是由Linux基金会参与确定的。又比如5G通讯中,与开源相关的报文协议相关的内容部分的,也是有由Linux基金会参与确定的。
举个例子,某年某月,IBM想推出某新款LinuxX86服务器,为了增加销售力,打算在Linux内核中新增对当今某项热门插件的支持,那该怎么办呢?IBM先要找到Linux基金会,并委托其管辖的Linux内核开发社区进行开发,而IBM则要为整个过程所产生的一切费用买单。还有,如果此时HP也发布相同款产品,就会与IBM产生竞争关系,也就是说哪家厂商的需求优先被合并到Linux内核主干,谁就取得了商业先机。因此,两家厂商将会向Linux基金会进贡,并向林纳斯·托瓦兹(Linux之父)这样的核心人物提供孝敬,以希望得到更多的支持力度。
总而言之,大家可以把开源软件基金会设想成公司,开发社区则扮演了项目开发团队的角色,只不过团队中的成员分别来自于不同的地区和公司而已,而从事开源方案与服务的商业公司充当了需求方的角色。
写在最后
说真的,上面的内容几乎粉碎了我对开源世界的幻想,让我重新建立了认知。但作为一名程序员,尤其是当下的程序员,紧跟开源领域的热点动向,认清开源世界的服务与支持,无论对自己的知识结构,还是对将来的职业发展,都会起到不小的作用。
每月TGO小组的聚会我都十分期待,这篇文章即来源于本月PingCAP首席架构师余军的分享。他介绍了其在开源软件治理方面的心路历程,让组内其他小伙伴瞬间变成“追星族”,拿起纸,抄起笔,认真学习了一把。为了让这样精彩的话题得到更有效的传播,我将本次的内容进行整理。最后,感谢余军的分享,也欢迎大家在评论区就开源治理进行讨论。