写点什么

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

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

评论

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

JVM锁优化:Java原生锁的背后!

java易二三

Java 程序员 接口 计算机

Mac电脑强大的图像编辑 Pixelmator Pro 中文直装

胖墩儿不胖y

图像编辑 Mac软件 图像处理工具

R语言之 ggplot 2 和其他图形

timerring

R语言

macos虚拟定位软件推荐 AnyGo激活中文版

mac大玩家j

Mac软件 虚拟定位软件 好用的gps

英特尔数据中心突破创新,以全新架构点燃发展新引擎

E科讯

小灯塔系列-中小企业数字化转型系列研究——SCRM测评报告

向量智库

火山引擎 DataLeap 助你拥有 Notebook 交互式的开发体验

字节跳动数据平台

大数据 数据中台 数据治理 数据安全 企业号 8 月 PK 榜

软件测试案例 | “某气候中心数据加工处理系统”软件项目验收测试

TiAmo

软件测试 测试

OpenHarmony Meetup 2023广州站圆满举办,城市巡回全面启航

科技热闻

深度解析 PostgreSQL Protocol v3.0(一)

KaiwuDB

postgresql protocol KaiwuDB

DORA指标:公司业务成果的“占卜师”

SEAL安全

DevOps 运维‘ DORA 企业号 8 月 PK 榜

OpenHarmony Meetup 2023 广州站圆满举办,城市巡回全面启航

OpenHarmony开发者

OpenHarmony

纯CSS杂志封面折叠效果

南城FE

CSS 前端 动画 交互

Vue3使用小技巧

青柚1943

理解 Databend Cluster key 原理及使用

Databend

【深入MaxCompute】人力家:用MaxCompute 事务表2.0主键模型去重数据持续降本增效

阿里云大数据AI技术

MaxCompute

新版Media Encoder 2023 mac下载 (me2023媒体编码器) v23.6激活版

mac

苹果mac Windows软件下载 Media Encoder 2023 视频编码软件 ME2023

如何有效的给出反馈

ShineScrum

反馈 管理者 敏捷教练 如何反馈 coach

zone.js由入门到放弃之二——zone.js API大练兵

OpenTiny社区

前端 zone.js

OpenSSL 3.0.0 设计(四)|代码维护、FIPS 测试

铜锁开源密码库

算法 测试 代码 密码学 openssl

Java NIO 图解 Netty 服务端启动的过程 | 京东云技术团队

京东科技开发者

Java Netty 组件 企业号 8 月 PK 榜

直播程序源码OAuth协议:开放授权的重要性

山东布谷科技

软件开发 Oauth 源码搭建 直播程序源码 开放授权

阿里云PolarDB分布式版,降价40%!

阿里云瑶池数据库

数据库 阿里云 polarDB

直播预告 | 博睿学院第四季-博睿数据资深运维团队现身说法!

博睿数据

直播 博睿数据 博睿学院

从数据孤岛到企业 xP&A 的演化

智达方通

数据孤岛 全面预算管理 扩展规划和分析

企业诊断屋:在线小说企业如何用A/B测试赋能业务

字节跳动数据平台

大数据 ab测试 对比实验 企业号 8 月 PK 榜 数字化增长

Presto 设计与实现(十一):抽象语法树 AST

冰心的小屋

AST 抽象语法树 presto 设计与实现

MySQL redo log恢复原理 | StoneDB技术分享会 #5

StoneDB

MySQL 数据库 HTAP StoneDB

全球前十的LED大屏幕租赁公司

Dylan

娱乐 科技 LED显示屏 led显示屏厂家 虚拟演唱会

MySQL Shell 8.0.32 for GreatSQL编译安装

GreatSQL

greatsql

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