阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

评论

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

强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动

基于smardaten无代码快速开发一个智慧城管系统

陈橘又青

无代码开发

表单设计领域天花板,表单引擎最全设计

codebee

千万级规模微服务稳定性技术揭秘:隔离策略

HelloGeek

微服务 高并发 稳定性 隔离性

Java又双叒叕“凉”了?

程序员小毕

Java spring 面试 springboot SpringCloud

建筑产业变革肇始,华为提笔写下新《营造法式》

脑极体

全屋智能

如何扩展及优化CI/CD流水线?

SEAL安全

CI/CD 优化 扩展

历史首次!阿里云与浙大斩获数据库顶会SIGMOD最佳论文,成果已在PolarDB中落地

阿里云瑶池数据库

阿里云 polarDB 瑶池数据库 SIGMOD

AWS 亚马逊云科技 1 亿美金入局AIGC,哪些AI云服务已经可以对标微软、谷歌?

B Impact

官宣!2023云原生编程挑战赛正式启动

阿里巴巴云原生

阿里云 云原生 云原生编程挑战赛

Go 语言中 database/sql 是如何设计的

江湖十年

数据库 后端 Go 语言 数据库操作

对线面试官-Redis(作为缓存的一致性问题)

派大星

Java 面试题

C语言中.与->的用法介绍

二哈侠

Java并行流指北

javalover123

并行 Java' 并行流

行业分析| 无人机电力巡检的应用

anyRTC开发者

人工智能 音视频 无人机 快对讲 视频监控

OpenCV开箱即用的功能

互联网工科生

OpenCV C++

CSS中常见的场景实现

EquatorCoco

CSS 开发语言 css架构

怎样确保舞台LED显示屏的安全

Dylan

安全性 环境 维护 LED显示屏 户内led显示屏

语音厅源码实用功能屏幕的转换

山东布谷科技

软件开发 源码搭建 语音源码 语音厅平台搭建

App Store——OpenAI 的MaaS模式或将上线,与Microsoft、Salesforce 争To B客户

B Impact

费报只是小 case!电子影像系统,工作效率up无限

风来兮

管理 技术管理 电子档案 财务 数字化工具

量子程序设计基础 | 量子程序与量子编程

TiAmo

量子计算 量子编程 6 月 优质更文活动

OSPFv3:第三版OSPF除了支持IPv6,还有这些强大的特性!

wljslmz

OSPF 6 月 优质更文活动

C语言实现单链表-增删改查

DS小龙哥

6 月 优质更文活动

在 BI 工具 Tableau 中使用 databend

Databend

为什么很多互联网公司很少做单元测试?

博文视点Broadview

Python Joblib库使用学习总结

EquatorCoco

Python

利用Flutter和小程序容器打造更强大的用户体验

FinFish

flutter 小程序 跨端开发 小程序容器 跨端框架

从幕后走到台前!过去十年,我们在阿里云如何建设可观测体系?

阿里巴巴云原生

阿里云 云原生 可观测

干掉Navicat?阿里Chat2DB来了!

王磊

Java 数据库

《生死狙击》研发商无端科技使用RDS倚天ARM架构数据库,实现增效降本

阿里云瑶池数据库

RDS 阿里云瑶池数据库

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