NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 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:38823

评论

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

二、程序如何执行

喵叔

毕业设计-电商秒杀系统

doublechun

「架构实战营」

10 Prometheus 之监控应用程序

穿过生命散发芬芳

Prometheus 1月月更

hive metastore配置kerberos认证

从大数据到人工智能

hive kerberos hive metastore

如果你是加勒比海盗首领,会选择哪种算法来使价值最大化?

博文视点Broadview

如何使用 Amazon S3 多区域访问点提高多区域应用程序的性能速度和可用性

亚马逊云科技 (Amazon Web Services)

Kafka的副本管理器读写副本消息

JavaEdge

1月月更

1 月月更|推荐学Java——数据表高级操作

逆锋起笔

MySQL 事务 范式 Java后端 MySQL 数据库

详解数据中台的底层架构逻辑

五分钟学大数据

数据中台 数据仓库 1月月更

一个cpp协程库的前世今生(十五)递归互斥量

SkyFire

c++ cocpp

Java中方法重写和方法重载的6个区别?

王磊

2021年vivo互联网技术最受欢迎文章TOP25

vivo互联网技术

数据库 前端 服务器 年度总结 Vivo

2022年中科柏诚服务再提升,为银行数字化转型提供精准化助力

联营汇聚

Java 常用类大讲解!2️⃣(手写 API、源码必备)

XiaoLin_Java

Java 集合 基础 1月月更

Tableau Day5:空间分析

贾献华

1月月更

Go 中实现用户的每日限额(比如一天只能领三次福利)

万俊峰Kevin

Go 限流 Go 语言 rate-limit RateLimit

Vue3 企业级网站建设

詹Sir

Vue 建站

国内外研究多模态的知名团队有哪些?

你?

推荐 研究

ReactNative进阶(十一):realm 数据库

No Silver Bullet

React Native 1月月更 realm

Amazon SageMaker Data Wrangler 简化数据准备过程,助力机器学习

亚马逊云科技 (Amazon Web Services)

存储

Amazon Elastic File System新增低成本单区存储类

亚马逊云科技 (Amazon Web Services)

存储

Kafka核心组件之Controller概念介绍(1)

Kafka中文社区

2021大厂面试题之redis篇

小麦

面试题 redis' 大厂面经

C语言-基本数据类型与位运算

DS小龙哥

C语言

使用 KubeSphere 管理 Amazon EKS Anywhere 集群

亚马逊云科技 (Amazon Web Services)

存储

新型数据中心的必选项:“超融合”的三重价值

脑极体

无聊的周末用Java写个扫雷小游戏

秦怀杂货店

Java 数据结构 游戏

基于多源数据画像的失败用例智能分析

华为云开发者联盟

云原生 测试 日志 失败用例 智能分析

ONES 收购为知笔记,全面升级企业知识库产品

万事ONES

ONES 知识库

全球最大规模中文跨模态生成模型文心ERNIE-ViLG来了!

百度大脑

人工智能

新增功能 – Amazon FSx for NetApp ONTAP

亚马逊云科技 (Amazon Web Services)

存储

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