2009 年 5 月,我 22 岁,正在约旦大学读 CIS 学位的尾声,我和人联合创办了一个开源社团。我站在其他学生面前,解释他们为什么应该关心那些不花钱买来的、由他们永远不会见面的人构建的、跑在 2.5MB 堆内存手机上的软件。

我们教的技术栈:Java——具体来说是 J2ME——Web 用 PHP,数据库用 MySQL,因为还能用什么呢。这不是一篇关于现代工具链的文章。这是一篇关于 2009 年在安曼给开源软件布道是什么感觉的文章——当时房间里大多数学生从小用着盗版 Windows XP 长大,认为 Linux 是专门给喜欢受苦的人用的。

为什么是 J2ME 而不是 Objective-C

现在有人问我这个问题,都是没经历过那个年代的人。“为什么是 J2ME?2009 年 iPhone 都出来了。”

iPhone 是出来了。iPhone 开发者计划需要一台 Mac 加每年 99 美元。我们同学实际拥有的手机——以及我们可能构建的任何软件的实际用户会拿着的手机——是 Nokia Series 40、Sony Ericsson,偶尔是 Symbian 设备。J2ME 就是那些手机跑的东西。MIDP 2.0、CLDC 1.1,运气好的话还有一台 JTWI 兼容设备,带个勉强能用的摄像头 API。

如果你 2009 年在约旦给真实用户开发软件,你的目标平台就是 J2ME。这不是哲学选择,这是算术。

我当时的毕业设计是一个带移动客户端的 GIS 营销平台,客户端支持 Windows Mobile 和 Symbian。我在用 Java 写移动前端,PHP 写 Web 后端,MySQL 做数据库。所以我们给社团设计的课程不是假设性的——字面上就是我在教课的那个学期同时在做的东西。

开源在那个房间里意味着什么

让它感觉有点出格的地方在于:约旦当时大多数人——学生、从业者、所有人——生活在一个软件有价签和序列号的世界里。Microsoft Office 有密钥。Photoshop 有密钥。“有用的东西就这么放在那里,合法的,免费的,源代码你还能真正去读”——这需要解释。

我不是在讲 Richard Stallman 的哲学。我在向一屋子 20 岁的人解释:他们今天就可以用 Apache、PHP 和 MySQL 搭一个 Web app,不用花一个第纳尔买许可证,而且这是合法的、有意为之的,互联网大部分就是这么跑的。

那些灵光乍现的瞬间是真实的。“所以代码就……就在那里?” 对。代码就在那里。去读它。去把它搞坏。去修好再把 fix 发回去。

哪些东西经住了时间,哪些没有

理念经住了。具体的技术没有。

J2ME 现在是博物馆展品。Symbian 是博物馆展品。Nokia Series 40 是博物馆展品。在智能机完成统治的整整十年前,我们在教移动开发,用的是现在在收藏者抽屉外面真的很难找到的硬件。

但原则——你应该理解完整的技术栈,你应该能读懂你使用的工具的源代码,发布真实的东西才是最好的教育——这个经住了。我接触过的直觉最好的工程师,几乎都是那些花时间读别人写的源代码的人。这不是巧合。

“开源作为一个不寻常的话题”这个设定也随时间消解了,原因显而易见。2009 年,说服别人开源是合法的需要努力。2024 年,试图不用开源构建任何严肃项目反而需要更多解释。集体的布道工作奏效了。我们赢了。

紧接着发生了什么

社团成立十三个月后,我去了 EHS/HAKEEM,开始为约旦国家医疗系统写 MUMPS 例程。如果你不熟悉 MUMPS:这是一门 1966 年的语言,跑在 VistA 上,至今还在世界各地支撑着医院系统,和 PHP 的距离大概是在同一个星球上能走到的最远。

这个跳跃听起来突兀。感觉并不突兀。我一直在讲”读源代码、理解你底下的系统”——然后我进入了一个源代码有 40 年历史、由 MIT 和 VA 的人写的系统,我必须理解它才能做任何有用的事情。实践迁移了,即使语法来自另一个时代。

我以某种形式教了很多年,早于我有任何职称。在 AFAQ 我做架构评审,本质上就是结构化教学。在 Bytro,是现代化研讨会。在 Talentera,和团队一起做系统设计。形式变了。本能——解释系统、展示源代码、把东西做出来——一直没变。

从 2009 到现在

那时我 22 岁,站在白板前,解释为什么一个能装进 Nokia 手机的 Java 运行时值得你花时间。我现在 37 岁,用 Kotlin 和 Go 写分布式系统,在家里的 homelab 上跑一个 local-first 的 agent 控制面(Fulcrum)。

J2ME 的堆内存限制没了。MIDP 2.0 的 API 没了。我毕业设计的 Symbian 客户端没了。但我还在解释为什么你应该读源代码,还在相信学习一个系统最好的方法是用它构建真实的东西,还有一点点是那个 22 岁站起来说”这值得你的时间”的人——说的是不花钱的软件。

有些本能会复利。