我使用开源软件的时间似乎可以追溯到史前时代。那时,没有所谓的社交媒体。没有 Firefox,没有 Google Chrome(甚至没有 Google),没有 Amazon,几乎没有互联网。事实上,当时的热门话题是新的 Linux 2.0 内核。当时的重大技术挑战是什么?嗯,ELF 格式正在取代旧的 a.out 格式,用于 Linux 发行版中的二进制文件,并且在某些 Linux 安装中,升级可能很棘手。
我如何将对这个新兴的年轻操作系统的个人兴趣转变为开源领域的职业,这是一个有趣的故事。
Linux 为了乐趣,而非利润
我于 1994 年从大学毕业,那时计算机实验室是由小型 UNIX 系统网络组成;如果你幸运的话,它们会连接到这个名为互联网的新事物。难以置信,我知道!“网络”(我们当时所知的)主要是手写的 HTML,而 cgi-bin
目录是启用动态 Web 交互的新乐园。我们中的许多人对这些新技术感到兴奋,我们自学了 shell 脚本、Perl、HTML 以及我们在父母的 Windows 3.1 PC 上从未见过的所有简洁的 UNIX 命令。
毕业后,我加入了 IBM,从事 PC 操作系统的工作,无法访问 UNIX 系统,不久我的大学就切断了我对工程实验室的远程访问。我该如何继续使用 vi
和 ls
并通过 Pine 阅读我的电子邮件?我一直听说开源 Linux,但我一直没有时间去研究它。
1996 年,我即将开始在德克萨斯大学奥斯汀分校攻读硕士学位课程。我知道这将涉及编程和撰写论文,以及谁知道还有什么,而且我不想使用专有编辑器或编译器或文字处理器。我想要我的 UNIX 体验!
所以我拿了一台旧 PC,找到一个 Linux 发行版——Slackware 3.0——并在我的 IBM 办公室里,一张软盘接着一张软盘地下载了它。可以这么说,自从第一次安装 Linux 后,我就再也没有回头看过。在早期,我学到了很多关于 makefile 和 make
系统、关于构建软件以及关于补丁和源代码控制的知识。即使我最初是为了乐趣和个人知识而开始使用 Linux,但最终它改变了我的职业生涯。
当我还是一名快乐的 Linux 用户时,我认为开源开发仍然是其他人的工作;我设想了一个由神秘的 UNIX 极客组成的在线邮件列表。我感谢像 Linux HOWTO 项目这样的东西,它们帮助我解决了在尝试添加软件包、升级我的 Linux 发行版或为新硬件或新 PC 安装设备驱动程序时遇到的磕磕绊绊。但是使用源代码并进行修改或向上游提交它们……那是其他人的事,而不是我的事。
Linux 如何成为我的工作
1999 年,我终于有理由将我对 Linux 的个人兴趣与我在 IBM 的日常工作结合起来。我承担了一个秘密项目,将 IBM Java 虚拟机 (JVM) 移植到 Linux。为了确保我们在法律上是安全的,IBM 购买了一份收缩包装的盒装 Red Hat Linux 6.1 来完成这项工作。通过与编写我们的 JVM 即时 (JIT) 编译器的 IBM 东京研究实验室,以及 AIX JVM 源代码和 Windows & OS/2 JVM 源代码参考合作,我们在几周内就在 Linux 上拥有了一个可工作的 JVM,比 Sun 官方 Java 在 Linux 上的端口发布提前了几个月。现在我已经完成了在 Linux 平台上的开发,我被它征服了。
到 2000 年,IBM 对 Linux 的使用正在迅速增长。由于 Dan Frye 的远见和坚持,IBM 对 Linux 进行了“十亿美元的赌注”,于 1999 年创建了 Linux 技术中心 (LTC)。在 LTC 内部,有内核开发人员、开源贡献者、IBM 硬件的设备驱动程序作者以及各种以 Linux 为中心的开源工作。我不想再与 LTC 保持外围联系,我想成为 IBM 这个令人兴奋的新领域的一部分。
从 2003 年到 2013 年,我深入参与了 IBM 的 Linux 战略和 Linux 发行版的使用,最终我的团队成为了 IBM 每个部门约 60 种不同产品使用 Linux 的信息交换中心。我参与了收购,在收购中,人们期望每个设备、管理系统以及基于虚拟或物理设备的中间件都运行 Linux。我精通 Linux 发行版的构建,包括打包、选择上游来源、开发发行版维护的补丁集、进行自定义以及通过我们的发行版合作伙伴提供支持。
由于我们的下游提供商,我很少有机会向上游提交补丁,但我通过与 Ulrich Drepper 互动(包括将一个小补丁放入 glibc)以及处理 时区数据库 的更改做出了贡献,亚瑟·戴维·奥尔森在他在 NIH FTP 站点上维护它时接受了这些更改。但我仍然没有作为开源项目的常规贡献者参与工作。是时候改变这一切了。
在 2013 年底,我加入了 IBM 云组织的开源团队,并正在寻找一个可以参与的上游社区。会是我们对 Cloud Foundry 的工作,还是我会加入 IBM 庞大的 OpenStack 贡献者团队?都不是,因为在 2014 年,Docker 以风暴般的速度席卷全球,IBM 要求我们中的一些人参与这项热门的新技术。在接下来的几个月里,我经历了很多第一次:使用 GitHub,学习了很多关于 Git 的知识,而不仅仅是 git clone
,让 pull request 得到审查,用 Go 编写代码等等。在接下来的一年里,我成为 Docker 引擎项目的维护者,与 Docker 合作创建下一代镜像规范(以支持多种架构),并参加关于容器技术的会议并发表演讲。
我现在的状况
快进几年,我已经成为包括云原生计算基金会 (CNCF) containerd 项目在内的开源项目的维护者。我还创建了项目(例如 manifest-tool 和 bucketbench)。我通过开放容器倡议 (OCI) 参与了开源治理,我现在是该倡议的技术监督委员会成员,并且在 Moby 项目中,我是技术指导委员会成员。并且我很荣幸能在世界各地的会议、聚会小组以及 IBM 内部就开源发表演讲。
开源现在已成为我在 IBM 职业生涯的一部分。我与整个行业的工程师、开发人员和领导者建立的联系可能与我在 IBM 内部认识和共事的人数不相上下。虽然开源与专有开发团队和供应商合作伙伴关系有许多相同的挑战,但在我的经验中,与全球开源社区的人们建立的关系和联系远远超过了困难。不同意见、观点和经验的碰撞可以为软件和参与人员创造学习和改进的文化。
这段旅程——从我第一次使用 Linux 到成为当今云原生开源世界的领导者、贡献者和维护者——是非常有益的。我期待着未来更多年的开源协作以及与世界各地的人们互动。
6 条评论