开放协作:赋予开发者的自由


当我们谈论开源时,很少谈论自由,尽管开源与自由同行。从 1998 年开源兴起时,我们就无法把开源和自由分割开来。因为它孕育于自由软件运动,自由使用、复制、修改、分发源码,其精神内核一直延续至今。“自由”,为何对开源如此重要?我们将依次用《开源,是背叛自由还是以退为进?》、《开放协作:赋予开发者的自由》、《商业自由:从边缘到核心贡献》三篇文章来回答这个问题,本文为第二篇。

自由共享的精神与开放协作的开发模式,像两条绳子拧成了一股,成为开源项目生存和发展的核心支柱,一直延续至今。开放协作,赋予了开发者参与开源项目最大程度上的自由。这种自由,在Linux 内核的开发上首次攀上了高峰。

一群极客的狂欢

Linux 内核第一次大规模吸引用户,是在 1992 年 1 月 0.12 版发布之后。尽管当时功能有限,但作为一款类 Unix 的操作系统内核,本身就已经具有相当大的优势,尤其是在 Unix 作为一款专有软件对外售价不菲时。

特别之处在于,设计者 Linus 开放了一个专门提交代码的站点。这意味着,除了核心小组的六个成员之外,开发者可以直接参与 Linux 内核的开发,自由地提交代码,以解决一些问题,或者实现一些功能。

Linus 经常把 Linux 内核的更新情况发布在 Minix 新闻组,这里聚集了一批 Minix 操作系统的铁杆粉丝。对一群热衷于技术的开发者来说 ,一个新的操作系统,确实存在致命的吸引力。 Linux 的用户数量迅速增加。

1992 年,使用 Linux 操作系统的用户已经近千人,其中大部分是热衷于技术的黑客高手。到了 1993 年,通过互联网参与内核修改和编写的开发者已经有近百个。1994年,伴随着 Linux 1.0 的正式发布,内核的开发也进入了良性循环。1995 年 3 月 1.2 版发布时,Linux 内核已经有了25万行代码。新杂志 《 Linux Journal 》的发行量达到了一万本。Linux 系统也能同时适用于英特尔处理器、DEC 的处理器以及 Sun 公司的SPARC处理器了。Linux 跨出了一大步。

几年以后, Linux 社区的开发者已经成千上万,他们依靠邮件列表以及彼此之间制定的规范进行联系和开发,自由提出功能需求,自由维护和升级。“一切工作都按部就班地进行,不用投票表决,不用组织拉票,更不用重新计票,反正大家都知道谁是活跃分子,谁是他们信得过的人。 ”在 Just for Fun:the Story of an Accidental Revolutionary 一书中,Linus 描述了这种协作方式。

在此之前,没有多少项目会把开发过程完全对外开放,让用户参与进来。比如在 GNU 工程的各项目开发中,贡献代码的往往只有少部分人,只有当新版本完善后才会对外公布源码,版本发布间隔的时间可能要几个月。对于社区的众多开发者来说,他们能做的仅仅是测试软件,提出问题或者功能需求,尽管这也很重要,不过参与程度极其有限。

在软件项目管理方面,当时流行的理论是布鲁克斯定律,即向项目添加开发人员只会导致进一步的项目延迟。该定律由 IBM System/360 系统之父 Fred Brooks 在 The Mythical Man-Month: Essays on Software Engineering 中首次阐明。布鲁克斯定律预测,一个拥有数千名贡献者的项目应该是一片片状、不稳定的烂摊子。

Linux 社区无疑是打破了这一理论。随着越多的开发者加入,Linux 逐渐成为一款高质量的操作系统内核。1996年,Linux 内核的全球用户量已经迅速增长到350万。在 Linus 看来,这一切都要归功于他的两个缺点:一是懒,二是因为喜欢占别人劳动成果的便宜。因为懒和喜欢占便宜,所以他把一些功能交给其他人开发,坐享其成。除了最终决定权属于 Linus 之外,其他开发者都是平等的,都可以增加系统功能。这也是“Linux 开发模式”的特别之处,没有局限于六个核心成员之间,而是邀请所有用户参与,集思广益。 《大教堂与集市》的作者 ESR 如此评价:Linux 是第一个有意识地成功利用整个世界作为其人才库的项目。

早期,软件用户多为具备编程能力的开发人员,因此,当 “自由软件之父”RMS 提出保护软件用户运行、复制、分发、学习、修改及再分发源码的自由时,实际上就是指开发者的自由。毕竟,普通用户可不关心软件供应商有没有提供源码。而 Linus 则用开放、协作的方式,进一步把开发者的自由扩大化、具体化了。对开发者这一角色而言,最好的自由不就是开发的自由吗?

这种自由,让每个贡献代码的开发者都成为项目的创造者,而不再是旁观者、局外人。本来是Linus 一个人的狂欢,最后变成了一群极客的狂欢。自由带来的热忱,推动了Linux 内核的成功。在众多开发者的协同开发下,截至 2021 年,Linux 内核 5.11 版本的代码量达到了 3034 万行。

ESR 正是从 Linux 内核的成功中受到启发,最后写下了著名的《大教堂与集市》一文,引起了众多软件企业的关注,从而掀起了轰轰烈烈的开源软件运动。Linux 成功的关键——开放协作的开发模式,就这样成为了开源协作模式的典型代表。

不自由的代价

Linux 内核不是第一个利用该模式进行开发的项目,但从项目热度、开放程度、协作深度,以及波及广度来看,产生的影响却是最大的。在20世纪90年代后期,越来越多的开源项目转而采用这一模式,星星之火已成燎原之势。

1997年,一群开发者因不满 GCC (GNU 编译器系统)缓慢且封闭的创作环境,组织了一个名为EGCS(Experimental/Enhanced GNU Compiler System)的项目。GCC 和 EGCS 是两个并行产品——两者都来自相同的互联网开发人员群体,都来自相同的 GCC 源代码库,都使用几乎相同的 Unix 工具集和开发环境。这些项目的不同之处仅在于 ,EGCS 有意识地尝试采用开放协作的开发策略,而 GCC 保留了一个原先的组织模式,开发组较为封闭,发布次数不频繁。

几个月之后,EGCS 版本在功能上大大领先,不仅能更好地支持 FORTRAN 和 C++,而且比 GCC 最新的稳定版本更可靠,主要的 Linux 发行版也都开始转向 EGCS。1999 年 4 月,自由软件基金会( FSF )解散了原来的 GCC 开发小组,正式将项目控制权交给了 EGCS 指导小组。

如果说 GCC 的教训还不够深刻,那 Mozilla 开源的历程或许能更好地归因开源的成与败。

网景公司是第一个将商业产品开源的企业。1998 年 1 月,网景公司宣布将浏览器套件开源,代号叫 Mozilla,并建立了专门负责该项目的组织,希望借助全球开发者的力量挽狂澜于既倒。彼时,它正与微软在浏览器市场激战正酣。微软攻势猛烈,将 IE 浏览器与 Windows 捆绑销售,并且免费提供,这使得曾经风靡全球的网景浏览器(Netscape Navigator)节节败退,尽管其市场占有率一度高达 90%。最后仍由 IE 浏览器占据了半壁江山。

然而事实再一次证明,不够开放、自由的开源项目,无法调动开发者的兴趣,无法吸引开发者广泛参与。一个开源项目没有了用户,就如同没有了生命,即便能够风靡一时,也终究会被时代抛弃。

网景公司公开的源代码是老旧的开发版本,存在诸多问题;Mozilla 使用了NPL许可证,这允许网景公司将后续版本作为专有软件发布,而其他人却不可以;源码还混入了很多非自由软件的代码;Mozilla 不接受公司外部开发者的代码,仅靠公司内部人员维护。其中种种,让网景公司负面缠身。这种遮遮掩掩、重内排外的开源方式,完全背离了自由共享、开放协作的开源精神。在 Linus 看来,网景公司不过是提供了一大堆源代码而已。

彼时,ESR 等开源倡导者都看到了这些问题,但没人敢提出批评的声音,怕给刚诞生的开源“抹黑”,只能焦灼地看着网景浏览器的市场份额不断输给 IE。

网景公司也意识到,这样的“开源”无济于事,在10 月重做了 Mozilla 项目,实现了真正意义上的开源。这取得了一些令人激动的效果。11 月,网景浏览器就扭转了市场份额下滑的局面,并开始在与 IE 的竞争中获利。然而已经太迟了。这对于当时的网景公司来说,无异于杯水车薪,终究未能挽救颓势。1999年,网景公司被美国在线公司收购。

庆幸的是,开源使 Mozilla 得以保留了火种。经过几年的发展,诞生了基于 Mozilla 源码的火狐浏览器(Firefox)。在 Mozilla 基金会官网上,是这样介绍 Mozilla 项目的:“它旨在利用互联网上成千上万程序员的创造力,推动浏览器市场实现前所未有的创新水平。”今天, Mozilla 确实做到了。它已经是一个成功且瞩目的开源项目,旗下的开源软件 Firefox 每月都会按计划发布一个新版本,在浏览器市场,它已经占据了稳定的市场份额。

Mozilla 曾经走过弯路,但及时调转了船头。不可否认的是,网景公司开源 Mozilla 是有划时代意义的。继网景之后,Sun、IBM 、Informix、Oracle 等大型企业都相继加入到开源运动中来,从开放接口,一步一步到软件开源。

如今只道是寻常

二十多年来,开放协作的模式在不断演化,更加自由,更加开放,协作人数日益增加,参与范围扩至全球,成为了开源项目最为普遍的开发模式,甚至成为了开源协作模式的代名词。伴随而来的是,更多能够实践这一模式的工具和平台被创造出来,开发者的自由再一次攀上新的高峰。

当前流行的开源分布式版本管理工具 Git, 就是 Linus 为了让更多的人同步开发而设计的。

在 1991 至 2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上,这是参与者迅速蹿升带来的不可避免的问题。 到了 2002 年,整个项目组开始启用 BitKeeper 来管理和维护代码,这是一个专有的分布式版本控制系统。

三年之后,开发 BitKeeper 的商业公司与 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权利。 这就迫使 Linux 开源社区,特别是 Linus,基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。经众多开发者十几年的努力,Git 已经成为开放协作模式的主流配置。

Github、Gitlab都是基于 git 的开源协作平台,它们的出现为开发者参与开源提供了更加高效、便利的方式,不仅能够为他人的项目贡献代码,甚至可以快速建立自己的项目——就算社区不接受提交的代码,也可以一键 fork 自己的分支。

每年,都会有大量开发者通过 Github、Gitlab 等协作平台投身开源之中。《GitHub 2020 数字洞察报告》显示,2020 年,Github 的活跃代码仓为 5421 万个,同比增长 36%;活跃开发者数为 1454 万人,同比增长 22%。正是因为开发者的积极参与,Linux、MySQL、Hadoop、Kubernetes、TensorFlow、React、VS Code 等基础软件迸发出蓬勃生命力。

身处 Github 织造的协作网络之中,自由唾手可得,开放协作的自由理念已经深入人心,不会时常提及,但无一不涉及,一旦遇到威胁,就会引起警觉。2018 年,当微软宣布以 75 亿美元收购 GitHub 时,很多开发者及对 GitHub 未来的独立性表示怀疑,因此把托管在 Github 上的开源项目迁移到Gitlab上。

仅仅在一周之内,Gitlab 的项目迁入量就达到了一万以上。尽管这个数量对 Github 上几千万个活跃代码仓而言,不过是沧海一粟。

但它的意义很是鼓舞人心。是的,即便是一个全球范围内最大的开源协作平台,即便是一直以来给予其极大程度上自由的平台,对部分开发者而言,一旦成了微软——一个靠专有软件发家致富的巨头企业——的一部分,就变得不再可靠。一方面,Github 虽然可以免费托管开源项目,并且为开源事业做出了许多贡献,但 Github 的网站和软件并没有开源,以后若有什么不利于开源的动作也合乎情理;另一方面,微软过去反对开源,影响过于深刻,以致于让人忽略了今天的微软已经是 GitHub 上最大的企业贡献者。

“叛逃”Github,让人意识到,开放协作的自由,是开发者一直以来追寻的旗帜,是开发者从未放弃的权利。

从思想启蒙,到方法实践,再到工具创新,哪一样不是为了开发者的自由而来?自由不是与生俱来的,而是一批又一批开源先驱前赴后继开辟出来的。当专有软件切断了开发者的自由,RMS 站了出来;当布鲁克斯定律框住了开发者的自由,Linus 站了出来。不管是有意还是无意,是主动还是被动,只要有人在追逐自由的光,那就会趟出一条自由的路。


相關推薦

2022-10-01

理念,持续不断地吸引了一大批来自全球各个国家的优秀开发者参与其中。开源的方式也促进了教育和科研事业的发展,为高校师生提供了更多自主学习的资源,学生能够直接、迅速地加入开源项目中,技术水平不断提高,经验

2022-08-30

持从容器中下载文件 其他 托管项目支持协作模式 开发者中心开放效能洞察 API 多集群管理支持 kubeconfig 方式 Zadig 架构优化,合并组件 缺陷与优化 修复托管项目中有同名服务时,工作流 Webhook 不生效问题 修复

2022-04-14

 Forrester Consulting 进行的一项研究指出,一些使用开放核心 (Open Core) 技术的企业明确表示希望转向纯粹的开源 (Open Source) 的替代品,但有 70% 的企业在公司间战略和支持方面存在障碍。该报告比较了使用 FOSS 与开放核

2023-08-29

nbsp;https://tailchat.msgbyte.com/ v1.8.10 更新内容 特性更新​ 开放平台应用管理强化​ 增加了应用名称、描述、头像的查看与修改 增加了返回应用列表功能 增加了删除应用功能 其他更新​ admin 添加文件删除操作,

2022-09-25

是一家以操作系统为基础,核心技术自主创新,产业生态开放联合,致力于为产业赋能的软件企业。大连红旗以“创新、优质、高效”为理念,产品涵盖了FireGnu火牛羚服务器操作系统,FireGnu火牛羚桌面操作系统、FireGnu火牛羚嵌

2023-08-22

复消息发送越权风险问题 #143 为插件机器人(并非开放平台机器人)增加所有会话权限 桌面端修复接收消息任务栏无法闪烁的问题 修复了群组列表悬停时出现滚动条导致徽标闪烁的问题 修复浅色模式下危险按钮颜色

2022-11-18

成果。截至目前已集结110+家企业单位会员、拥有600+社区开发者、建立了52个SIG组,并自主搭建了包括官网、数字看板和微信小程序等在内的一系列社区平台,目前都处于稳定运行中。 随后,openKylin社区Release SIG Maintainer李剑

2021-11-25

Bruce Perens 在1997年6月初向 debian-private 邮件列表中的Debian 开发者提出了 Debian 社会契约草案。 “Debian 开发出来之后,Debian 除了遵循 copyleft 之外,也遵循着一些其他的自由许可证。所以当时的 Debian 在自由软件方面还存在一些

2023-01-11

用户提供全场景设备托管与一体化软件开发的透明框架。开发者通过使用Shifu,可以更简单地连接、监视和控制任何物联网设备。目前,Shifu已为多行业细分头部企业提供框架托管服务,并荣膺中国信通院工业互联网产业联盟工

2023-08-09

。Hugging Face 的模型中心和开源库促进了 AI 开源社区内的协作和知识共享,使 Hugging Face 与 PyTorch 基金会非常匹配。 对此,Hugging Face 开源负责人 Lysandre Debut 表示: “我们的使命一直是民主化 AI,使之可供所有人使用。我们

2022-07-02

的长文宣布,已停止使用微软的 GitHub,并呼吁所有 FOSS 开发者都离开该平台。SFC 主要是使用自托管的 Git 存储库,但使用了 GitHub 来镜像其存储库。 “我们将结束自己对 GitHub 的所有使用,并宣布一项长期计划,协助 FOSS 项

2021-12-13

门,他表示 Linux 操作系统的基本规则中,没有任何阻止开发者使用 DRM 的内容。 2006 年 1 月,GPLv3 刚公布第一个草案没多久,Linus 就明确表示 Linux 不会将许可证转换至 GPLv3,因为他反对该草案中的 DRM 相关条款。 “我认为

2023-10-18

lchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。 前端微内核架构 + 后端微服务架构 使得 Tailchat 能够驾驭任何定制化 / 私有化的场景 面向企业与私域用户打造,高度自由的群组

2023-03-06

版本要求:ERD Online版本 >= 4.0.10 其余API后续陆续开放 ❞ API一览 新增模块 POST /project/{id}/module 说明 新增模块 参数 类型 名称 说明 类型 「Path」 「id」 必填 id string 「Body