写点什么

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

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

评论

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

jQuery 请求

Jason199

jquery js post GET 7月月更

汽车电子行业开发者的内功心法:汽车软件开发V模型(瀑布模型)

不脱发的程序猿

嵌入式开发 瀑布模型 汽车软件开发 V模型

系统刷JavaScripit 构建前端体系(语法篇)

程序员海军

JavaScript 7月月更

RISC-V Linux 内核剖析 会议记录

贾献华

7月月更

qt 实现日历美化

小肉球

qt 7月月更

Prometheus 发布 LTS 长期支持版本啦

耳东@Erdong

release Prometheus 7月月更

使用Flutter开发小程序+App)的一种组合思路

Geek_99967b

小程序

VLAN再见,我选择用QinQ!1000字带你详细了解QinQ技术

wljslmz

VLAN 网络技术 7月月更 QinQ

读书笔记之数据密集型应用的可维护性

宇宙之一粟

设计数据密集型应用 7月月更

C#入门系列(二十五) -- 接口

陈言必行

7月月更

手把手带你体验Python实现人脸识别

迷彩

人脸识别 7月月更

【MySql 实战】高度聚合的数据项拆分为多行多列

安逸的咸鱼

MySQL 实战 7月月更

【愚公系列】2022年7月 Go教学课程 013-常量、指针

愚公搬代码

7月月更

数据平台的发展历程

奔向架构师

大数据 7月月更

python小知识-什么是上下文管理

AIWeker

Python python小知识 7月月更

Kubernetes网络插件详解- Flannel篇

巨子嘉

云计算 容器 云原生

zookeeper-集群和zab协议

zarmnosaj

7月月更

一篇文章带你快速学会Flex布局

bo

CSS 前端 Flex 7月月更

王者荣耀商城异地多活架构

Pengfei

Java中的设计模式

Java学术趴

7月日更

Flink实战:消费Wikipedia实时消息

程序员欣宸

Java flink 7月月更

QT|QLabel显示多行文本过多后显示省略号

中国好公民st

qt 7月月更

Qt | QWidget的一些总结

YOLO.

qt 7月月更

Envoy监听管理

阿泽🧸

envoy 7月月更

试着换个角度理解低代码平台设计的本质

Geek_z9ygea

Vue 前端 React 低代码平台

分享 15 个 Vue3 全家桶开发的避坑经验

Geek_z9ygea

Vue Vue3

STM32+DHT11读取温湿度数据显示

DS小龙哥

7月月更

KUDU1.11 环境安装

怀瑾握瑜的嘉与嘉

7月月更 kudu

没有了可用Task slot,Flink新增任务会怎样?

程序员欣宸

Java flink 7月月更

LeetCode-数组中数字出现的次数(单身狗问题)

芒果酱

c++ C语言 数据结构算法 Leet Code 7月月更

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