写点什么

开源不就是免费吗?还治理他干什么呢?

  • 2020-04-14
  • 本文字数:3515 字

    阅读完需:约 12 分钟

开源不就是免费吗?还治理他干什么呢?

有每月的 TGO 小组聚会,似乎已逐渐成为我生活中必不可少的一部分,尤其在专题分享这个环节,能迫使我鼓足勇气迈进全新的未知领域,逃离恐惧,重新燃起对技术的那份狂热。


本月,由来自 PingCAP 的首席架构师 - 余军向大家介绍了其在开源软件治理方面的心路历程,让组内其他小伙伴瞬间变成 ‘追星族’,拿起纸,抄起笔,认真学习了一把。


为了让这样精彩的话题得到更有效的传播,我将本次的内容进行整理,但也许存在失真、失误的地方,还请大家谅解。

开源是正义的?闭源是邪恶的?

在许多程序员心里,提起开源,第一印象会想起如免费、基金会、社区、自由等富有正义感的一些名词,而一提起 License,不仅会联想到 Oracle、微软等企业,而且还会跟巨额收款联系起来。


简单说,在刻板印象中,我们深信开源代表着正义与自由,而闭源却是剥削与邪恶的化身。但现实情况真是如此吗?



为了加深大家的理解,结合维基百科,我对时间轴进行了梳理。


先看 60 年代 - 70 年代,整个开源软件并不像现在具有很高的流通性,大部分使用领域集中在军工单位,并多半采用项目制的方式进行。


直到 1976 年 2 月 3 日,比尔·盖茨给电脑爱好者们写了一封公开信,抱怨未经授权使用 Altair BASIC 的情况太普遍,导致新成立的微软公司回报甚微。这封信相当有名,被看作是软件通过商业授权获取收入的真正开端。



也就是说,解决了软件流通性的问题,而 License 模式的核心是解决所有权问题,就是不管个人也好,企业也好,我通过自己的智慧或资源投入后制造了一个软件,然后该如何将这个软件在市场上合理、合法的进行流通呢?获得许可证的人或单位,你只有使用权,不拥有所有权,而在这个之前,无论你给谁做项目,项目所产出的软件所有权,都将归属这个项目,因为这是个合同。


说到这里,也许有人会问,那么许可证模式与开源模式所倡导的宗旨是不是背道而驰?


这类似《黑客帝国》中的场景,有黑就有白,有正就有反,在 Richard Stallman(GUN Emacs 之父)这帮人看来并不是这样,他们想的更加长远,他觉得人类的成果,不应该被任何一家机构或个人垄断,他是基于这个出发点进行工作的,最终他建立了 GNU 和自由软件基金会。


到 1983 年,Richard Stallman 在 net.unix-wizards 新闻组上公开发起 GNU 计划,宣布它的目标是创建一套完全自由的操作系统,并附带一份《GNU 宣言》。在该宣言中,Stallman 声称发起该计划的一个重要理由是要“重现当年软件界合作互助的团结精神”。


次年 1984 年 1 月,Richard Stallman 启动 GNU 计划,由于 GNU 是公开源代码的,为了防止不肖厂商利用自由软件,使其专有化,他创造了 Copyleft 的授权办法,让所有的 GNU 程序遵循一种“Copyleft”原则,即可以拷贝,可以修改,可以出售,但必须遵守“源代码所有的改进和修改必须向每个用户公开,所有用户都可以获得改动后的源码”的原则。


在随后的四十年间,开源与闭源两条线都按照自己的规则发展着,尤其是闭源软件,由于有 License 这样好的模式,对许多中小型软件公司的知识产权起到了保护作用,催化了其蓬勃发展的速度,其中最有代表性的就是微软。


因此,对于开源界而言,在很长一个阶段中,主要的对手就是微软。这个对抗,不是凭空想象出来的,微软在其领域投入的人力物力是我们想象不到的,他们对开源界是感到害怕的,并且制定出了一套完整的对抗战略,最有名的是 “F.U.D 战术(fear, uncertainty, and doubt)”。


到今天为止,微软却悄悄地成为了全球对开源支持力度排名第一的公司,比如.net 底层框架也已全面开源,最近又听说给某开源基金会捐献了 2000+的专利。


三国演义开头的那句话怎么说来着?天下大事,分久必合,合久必分,这不仅是软件工业的发展,也是当今开源与闭源之间交互的方式。

当今那么多开源软件,选择时应注意些什么?

一般在进行闭源软件选型时,如果被问到哪个好用?哪个适合?国内许多技术负责人几乎都会从软件功能、厂商支持,或当下应用开发与运维团队的承接能力来考虑,虽说这些都属于纯技术维度,但像 Oracle、微软这样的企业的确值得信赖,他们有董事会、产品团队、销售与售后,它的闭环体系保障了质量。


然而,开源软件并不是这样的,它是一个开放性的结构,从生产一直到进入流通市场,依赖的并不是某一家公司,而是社区。


如果在开源技术选型时,我们依旧效仿传统做法,问一些价格怎么样?功能和测试如何?培训和后期服务如何?最多在问一句,你这个技术是符合前沿科技吗?无论商业公司给出什么样的答复,只要你最终选择,那也许你已经给未来埋下了坑。


为什么这么说呢?先来了解一下整个开源软件生态体系吧。



如果你把整个开源软件生态体系看成一家公司的话,基本可以这样概括:


  • 类似 RedHat 这样的企业,是商业化的交付团队。

  • 类似 Apache 开发社区,是产品开发团队。

  • 类似 Apache 基金会,是董事会和决策层。


许多国内公司在进行架构选型时,不仅不了解其背后的开发社区与基金会是谁,更不知道其创始人是谁,当业务进入大规模使用之后,一旦生态上层出现问题,那就容易栽更头。


大家还记得当年 MySQL 与 Oracle,及 MariaDB 之间的恩恩怨怨吗?


  • 2008 年 2 月 26 日,当时的 SUN 公司宣布以约 10 亿美元价格对开源数据库开发商 MySQL 并购。

  • 2009 年 4 月 20 日,Oracle 以 74 亿美元收购 Sun。

  • 2010 年 1 月,MySQL 创始人迈克尔·维德纽斯(Michael Widenius)联合部分相关人士向欧洲、中国与俄罗斯的监管机构提交了反对意见。

  • 2010 年后期,Michael Widenius 离开甲骨文,创办 MariaDB,完成了对 MySQL 的 “反戈一击”。

  • …………

  • 由于 Oracle 与欧盟之间的反垄断协议至 2020 年结束,MySQL 会变更为许可证模式吗?

  • 2017 年 9 月,开源数据库初创公司 MariaDB 获阿里 2000 万欧元融资。

  • …………



以上这些信息,也许由于时间跨度有一些失真,但这一桩桩事件对下游厂商与最终客户造成的影响却是真实存在的,比如红帽从 Redhat7 版本之后,已将预装 MySQL 改为预装 MariaDB,而此时,你的应用正大规模的使用 MySQL 作为核心数据库,你该何去何从呢?

开源软件基金会是如何盈利的?

经过上面的介绍,我们可以把开发社区的职责简单概括为项目开发,工作内容是将一个开源软件稳定的做出来,那么谁对整个社区的方向决策负责呢?委员会,准确的说是采用自由管理的委员会行使管理,而其中多半来自于上层顶级基金会。


在许多人的脑海中,一听到某某基金会,第一印象一定是中国红十字基金会,或证券投资基金业协会这样的非营利性组织,他们像天使那样,不在乎收益,为这个世界做着无私的奉献。


如果你真这么想,那就大错特错了。简单说,从某种意义上来讲,基金会,等同于商业品牌。



随着开源软件使用范围的扩大,开源软件基金会的涉及范围也从开源领域逐渐蔓延至整个软件工业领域,这也促使了这些基金会不仅越来越有钱,而且涉及众多软件工业领域的核心内容。与中国不同,在美国,基金会也是公司的一种形式,也是可以盈利的,只不过不能通过服务与产品销售的方式盈利。


那他靠什么盈利?


首先,一些顶级基金会实际控制着许多技术的核心环节,如操作系统、通讯协议等。以 Linux 基金会为例,比如证券交易中 HFT(高频交易)部分的算法定义和规范定义,是归属 Linux 基金会的,再比如金融信息交换协议(FIX) 在报文当中转换到 AMQP 消息协议,也是由 Linux 基金会参与确定的。又比如 5G 通讯中,与开源相关的报文协议相关的内容部分的,也是有由 Linux 基金会参与确定的。


举个例子,某年某月,IBM 想推出某新款 Linux X86 服务器,为了增加销售力,打算在 Linux 内核中新增对当今某项热门插件的支持,那该怎么办呢?IBM 先要找到 Linux 基金会,并委托其管辖的 Linux 内核开发社区进行开发,而 IBM 则要为整个过程所产生的一切费用买单。还有,如果此时 HP 也发布相同款产品,就会与 IBM 产生竞争关系,也就是说哪家厂商的需求优先被合并到 Linux 内核主干,谁就取得了商业先机。因此,两家厂商将会向 Linux 基金会进贡,并向林纳斯·托瓦兹(Linux 之父)这样的核心人物提供孝敬,以希望得到更多的支持力度。


总而言之,大家可以把开源软件基金会设想成公司,开发社区则扮演了项目开发团队的角色,只不过团队中的成员分别来自于不同的地区和公司而已,而从事开源方案与服务的商业公司充当了需求方的角色。

再次感谢

说真的,这次学习经历几乎粉碎了我对开源世界的幻想,让我重新建立了认知。但作为一名程序员,尤其是当下的程序员,紧跟开源领域的热点动向,认清开源世界的服务与支持,无论对自己的知识结构,还是对将来的职业发展,都会起到不小的作用。


在这里,再次感谢余军哥的本次分享,欢迎大家在评论区就开源治理进行讨论。


本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/YRdbbNzb-htetdMxEDL1ig


2020-04-14 17:381728

评论

发布
暂无评论
发现更多内容

C#-使用Consul

kdyonly

C#

华为云大数据BI,如何助力智慧医院数字化升级

秃头也爱科技

华为云微服务引擎0停机迁移Nacos?它是这样做的

科技之光

助力网络碳中和 | 华为发布站点能源十大趋势

极客天地

让下载速度更快更稳,华为云CDN多重技术助力网络加速

爱科技的水月

浅谈华为云大数据BI对企业数字化转型的助力

秃头也爱科技

小米封杨:工业设备预测性维护及时序数据库选型

YMatrix 超融合数据库

工业4.0 超融合数据库 预测性维护 设备预测性维护 YMatrix

MatrixDB v4.6.0 发布,查询性能和图形化操作界面全面升级!

YMatrix 超融合数据库

Prometheus 存储引擎 超融合数据库 YMatrix MatrixGate

华为云OBS:让大数据的容器再无容量限制

爱尚科技

智能且高效,华为云CDN三大特点助企业云上创新

爱科技的水月

华为云大数据BI平台,助力电商企业破除数据孤岛,轻松备战双十一

秃头也爱科技

亚信科技通信、交通行业数据库项目入选“星河”标杆、优秀案例

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

超融合一体流式引擎,打造分布式数据库新纪元

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

界面原型设计

芯动大师

android GUI设计 mockplus droiddraw

【架构设计】保持简单轻量设计的三个原则——DRY,KISS, YAGNI

JAVA旭阳

Java 架构

华为云OBS对象存储服务:这个管家很贴心

爱尚科技

缓解等待焦虑,华为云CDN为您提供畅快下载体验

爱科技的水月

共创精彩游戏未来,华为云大数据解决方案助力游戏企业成功转型!

秃头也爱科技

华为云对象存储OBS超高性能数据存储能力,推进企业快速上云

爱尚科技

2022-12-29:nsq是go语言写的消息队列。请问k3s部署nsq,yaml如何写?

福大大架构师每日一题

云原生 k8s k3s nsq 福大大

【web 开发基础】PHP中获取数组的元素个数 (51)

迷彩

数组 数组操作 PHP基础 数组查询 统计数组

华为云大数据BI,助力电商企业打赢“年货节”攻坚战

秃头也爱科技

什么样的魔法棒,能让AI魔法师一夜成名?

脑极体

企业数据存储,还得看华为云对象存储服务OBS

爱尚科技

HTTPS基础知识

穿过生命散发芬芳

https 12月月更

华为云CDN引领网站性能全面优化

爱科技的水月

【web 开发基础】PHP查询数组中的指定元素 (50)

迷彩

数组 数组操作 二维数组 PHP基础 数组查询

人生的喜悦、不快与成长,都在那一篇篇的文字中得到记录 | 2022 年终总结

宇宙之一粟

年终总结 人生故事 代码之外 12月月更

开源不就是免费吗?还治理他干什么呢?_开源_头哥侃码_InfoQ精选文章