我的生活与自由软件
我经常被问到我是如何开始接触 Linux 的,为什么我喜欢 Linux,或者为什么我在 Linux 上花费这么多时间。在本文中,我希望表明自由软件的概念以及将知识产权赠予完全陌生人的做法并非必然是新想法。
那是 1968 年。我是一名在宾夕法尼亚州费城德雷塞尔理工学院(现为德雷塞尔大学)学习电气工程的大学生。作为一名合作教育学生,我需要在工业界进行为期六个月的工作实习。非常幸运的是,我设法在马里兰州巴尔的摩的西屋电气工厂找到了一份工作。
这家工厂雇用了数千人,主要为贝尔系统生产电线。作为工程部门的一部分,他们拥有一台 IBM 1130 计算机,由一小群程序员/操作员运行。1130 是一台单任务机器,你通常用 FORTRAN 编写程序,将其打在卡片上,然后一次性编译、链接和运行你的程序。由于 1130 还带有控制台指示灯和一个非常吵闹的磁盘线圈,你可以“看到”和“听到”你的程序运行。稍加练习,你甚至可以通过观察控制台指示灯和聆听磁盘驱动器“咕噜”声来判断你的程序是否遇到问题。
在那个年代,人们家中没有电脑,即使是最有远见的高中通常也没有电脑,所以我不可能在学校学会如何编程 IBM 1130。因此,我抓住机会参加了西屋电气赞助的名为“FORTRAN 语言 IBM 1130 编程”的函授课程。那个夏天,我学会了编程这台机器,为我的主管 John Kammer 完成了一些小任务。实验室里运行计算机的人们非常乐于助人,耐心地回答我的许多问题,这给我留下了深刻的印象。
德雷塞尔有两台大型机器:一台是 Burroughs B5500,另一台是 IBM。IBM 机器与宾夕法尼亚大学和天普大学共享使用。IBM 和 Burroughs 机器都使用穿孔卡片进行编程,而且我无法“观看指示灯和听到咕噜声”。换句话说,它们是“玻璃房”机器。对此感到沮丧,我在学校四处寻找,在一个电气工程实验室里找到几台 PDP-8“小型计算机”、一台 Linc-8 小型计算机(全部由数字设备公司制造)和一台 Data General Nova。这些都是“动手”机器,使用 ASR-33 电传打字机(每秒五个字符输出)作为打印机/控制台终端,并使用纸带作为加载介质。加载编辑器需要五分钟;加载汇编器需要 15 分钟。即使不考虑编辑时间,完成一轮“编辑、汇编、加载程序和运行”也需要大约半小时。人们习惯于非常仔细地检查他们的代码,以便在每次运行时尽可能多地发现错误。
德雷塞尔没有提供计算机语言课程。如果你想学习 FORTRAN,你需要自学。如果你想学习汇编语言,你也需要自学。幸运的是,我不知何故结识了数字设备公司的销售员,他给了我几本平装书,其中一本是关于汇编语言编程基础知识的,另一本名为PDP-8 编程。从这两本书开始,我开始了学习用汇编语言编程这些机器的任务。虽然从书本上学习汇编语言编程对某些人来说可能听起来令人畏惧,但这些书(数字设备公司出版的手册系列的一部分)写得非常好,再加上实验室的其他学生(“实验室老鼠”),我们设法互相指导完成了这个过程。
后来,几位“实验室老鼠”成立了一个计算机俱乐部。我们的目标是尝试教其他人如何使用小型计算机。我们得到了两个方面的帮助:DEC 销售员(他给了我们更多的书和鼓励)以及名为 DECUS 的组织。即使在早期,DEC 的用户协会也有学生分会,他们还有一个免费分发软件的目录——免费提供纸带传输或(对于“真正富裕的人”)磁带传输的复制成本。有数百个标题,从文本编辑器到用于进行各种数学分析的程序。这些程序中的每一个都是由 DECUS 成员编写并提交给 DECUS 图书馆以供免费传播的。
我永远不会忘记那位数字设备公司销售员的友善,也不会忘记 DECUS 组织的理念。这将对我的后半生产生深远的影响,无论是在我选择新工作时,还是在与他人交往时。
毕业后,我开始找工作。我收到了包括贝尔系统在内的几家公司的聘书,但他们都希望人们用高级语言编程,而我希望继续用汇编语言编程。我的机会来自位于康涅狄格州哈特福德市的安泰人寿保险公司。
当时,安泰是“自由世界中最大的综合性保险公司”,这表明如果你使用足够的限定词,你可以成为任何方面的最佳公司。尽管如此,安泰在哈特福德总部的员工超过 4,000 人,包括程序员、操作员和计算机操作人员,他们开发了业内首批真正的实时交易系统。他们拥有一整层楼的 IBM 设备,并且是“自由世界中 IBM 最大的商业客户”。我被聘请用 IBM 汇编语言编写程序。我告诉面试官我从未用 IBM 汇编语言编写过代码,但他们说他们觉得我“可以学会”。因此,在前往哈特福德之前,我去了一家书店购买了一本关于 IBM 汇编语言的书并阅读了它。通过那本书和 IBM IBM 360 操作原理手册,我学会了这门语言和架构。
在安泰工作期间,发生了两件主要的事情。首先,我开始晚上去研究生院攻读 MSCS 学位;其次是与机器的一些操作员成为了朋友。第二件事让我走出了我所处的壳,变得更加外向。它还让我可以实际进入计算机机房,这对于安泰的程序员来说有时非常有用。我还注意到,我的磁带安装得更快了,我的清单排序得更好了,并且各种好事发生在我身上,因为我喜欢这些人并尊重他们。其他不尊重他们的人员通常很难获得良好的服务。这是生活中学到的另一个重要教训。
在获得 MSCS 学位并在安泰的两个主要部门工作了四年后,我决定尝试教书。我回应了哈特福德州立技术学院(哈特福德一所小型两年制技术学院)助理教授的招聘广告。在接受这份工作甚至申请之前,我花了一个上午在学校查看实验室,浏览学院目录并与学生交谈。
我喜欢哈特福德的实验室,因为(与当时的许多学校不同)它不是以穿孔卡片为导向的。相反,他们有十二个终端连接到一台 PDP-11/70 分时共享机器,以及一台独立的 PDP-11/34,配有图形显示器和一个大型 Gerber 绘图仪用于绘制图纸。课程教授操作系统设计和编译器理论等课程,我认为如果程序员真的想知道自己在做什么,这两者都是必要的。最后,学生们很友好,似乎致力于学习计算机科学。请记住,那是 1977 年,对于大多数这些学生来说,HSTC 是他们第一次接触计算机键盘。
我给了安泰两周的通知,并减薪 3,000 美元去 HSTC 教书(为了让大家了解情况,1975 年我花 5,000 美元买了一辆全新的丰田皮卡)。但在接下来的四年里,我喜欢在这所学校教书。
你们大多数人都听说过我的昵称“maddog”来自学校以及我与教务主任的“讨论”。即使有这些“讨论”(有时甚至是因为这些讨论),我仍然怀念 HSTC。将完全不懂计算机的学生培养成优秀的程序员和设计师,使他们能够进入劳动力市场并找到好工作,这一定是世界上最令人欣慰的感觉之一,无论薪酬水平如何。不幸的是,我有一种相当折衷的生活方式,四年后,它开始赶上我。可悲的是,我离开了 HSTC(在提前一年通知后),继续我的下一个职业阶段——贝尔实验室,这让学生们感到沮丧,但让我的债权人们欢呼雀跃。
当我开始在贝尔实验室面试时,管理层希望我担任 CDC Cyber 机器的系统管理员。CDC 是一台令人着迷的机器,这本该是一份好工作,但我听说贝尔有他们自己的操作系统,名为 Eunuchs,我想学习它。最终,实验室管理层同意了,我被聘为我从未见过的操作系统的系统管理员。
成为 UNIX 系统管理员的最初几个月是“困难的”。学习这个没有真正好的文档的新操作系统,似乎程序分散在整个文件系统中,甚至有一个深层分层文件系统(而不是扁平的“目录”文件系统)对我来说很困难。幸运的是,我在那里遇到了两位高级工程师,他们(虽然没有接受过计算机科学方面的培训)正在管理两台数字设备公司的机器,一台 PDP-11/70 和一台 VAX 11/780。他们给了我指导,直到我准备好承担责任。然而,在短时间后,我“掌握了窍门”,并且我还开始在马萨诸塞州北安多弗的梅里马克学院晚上教书。我做了这两份工作又四年。
在贝尔实验室工作期间,我遇到了一位数字设备公司的销售员,他告诉我数字设备公司正在进行一个项目,为 PDP-11 和 VAX 系列创建商业版本的 UNIX。由于我在贝尔实验室与管理层存在一些理念上的分歧,我决定离开他们去数字设备公司。在那里,我遇到了一群年轻而热情的工程师,他们决心打造世界上最好的 UNIX 系统。遗憾的是,他们的管理层并没有分享这种愿景。在接下来的十六年里,我们努力在一个(在很大程度上)只想说“VMS”(后来是“OpenVMS”)和“Windows NT”的公司内部创建和销售 UNIX 产品。在几乎所有其他供应商都在捆绑 GNU 软件之后,我们努力(并最终赢得)将 GNU 软件添加到我们的发行版中的战斗。正是在这十五年的开始,我(再次)被推回 DECUS,并开始参加 USENIX 会议。
1983 年的 USENIX 是一个激动人心的时刻。人们来到这个技术会议上讨论他们如何改进 UNIX 操作系统。虽然许多演讲来自学术界,但也有一些来自 Mitre、BBN 等公司,这些公司出于自身业务原因需要推动 UNIX 前进。在演讲结束后,会列出获取代码的 UUCP 地址,否则完整的源代码清单会包含在会议记录中。然而,随着越来越多的公司进入销售二进制形式 UNIX 发行版的市场,越来越多的公司开始以这种方式购买 UNIX,源代码的可用性几乎完全枯竭。尽管 USENIX 一直为概念和知识交流提供场所,但经过多年以及开源社区的介入,同样的兴奋感才又回来了。
在数字设备公司工作期间,我曾担任软件工程师、产品经理,最后担任技术营销经理。作为一名技术营销经理,我有三项主要工作。第一项是将复杂的技术概念用简单的术语呈现给客户;第二项是收集客户的需求并将其反馈给工程部门;最后,帮助数字设备公司创造营销机会。这包括与 DECUS 合作,使技术演示与客户的需求相关。
作为 DECUS 的一部分,有一个名为 UNISIG 的特殊兴趣小组 (SIG),负责研究“所有关于 UNIX 的事物”。该小组的主席 Kurt Reisler 听说过一个在芬兰启动并在世界各地开发的的小型操作系统。他想邀请这个操作系统的架构师参加 1994 年 5 月在新奥尔良举行的 DECUS 会议。在观看 Kurt 向潜在的机票资助者发送了许多许多信件后,我决定这对我们的客户来说是值得的,并说服我的管理层资助机票和酒店费用。正是在新奥尔良,我第一次看到了 Linux 并认识了 Linus Torvalds。
DECUS 会议结束后,我带 Linus 乘坐了 Natchez 号,这是密西西比河上上下行驶的游轮之一。我们共进了晚餐并讨论了 Linux。我问 Linus 他是否曾考虑过将 Linux 移植到 64 位处理器和 RISC 芯片,以确保其可移植性。Linus 告诉我他考虑过这一点,但在从赫尔辛基的数字设备公司人员那里获得 Alpha 系统时遇到了麻烦。了解数字设备公司的程序后,我可以想象赫尔辛基的人员正在努力,但遇到了困难。我回到我的办公室,给几个朋友打了电话,拉拢了一些关系,一台 Alpha 系统就送往了 Linus 的公寓。
当我在为 Linus 获取系统时,我意识到数字设备公司内部已经有多少工程师在使用 Linux,以及数字半导体公司的一个小组正在尝试将 Linux 移植到 Alpha,但作为 32 位移植,而不是 Linus 正在做的 64 位移植。经过一番说服,我让他们与 Linus 联手。
1995 年 1 月,该项目实际上开始了,随着项目的展开,我发现 Linux 社区中有许多人想要提供帮助。一些已经拥有 Alpha 访问权限的人员立即开始研究代码。其他人实际上购买了自己的 Alpha 来帮助该项目。1995 年 11 月,第一个 Alpha Linux 发行版问世。我为 Linux 社区如此看重 Alpha、数字设备公司及其自身的 Linux 系统而感到自豪,以至于他们都在这个项目上进行了合作。
大约在同一时间,我的出差行程增加,我开始到世界各地去演讲关于 Digital UNIX(数字设备公司提供的商业系统)。当我从一个客户到另一个客户时,我会问同样的问题:“你们在这里使用 Linux 吗?” 几乎每个人都有相同的模式——管理层说“不”,而技术人员会说“是的,但不要告诉我们的经理。” 随着我的旅行继续,我的演讲越来越多地转向 Linux,我开始为内部使用和 Linux Journal 撰写文章。
1996 年,Linux International 的首任执行董事辞职,我当选为该职位。三年来,我自愿担任 Linux International 的执行董事,同时履行我在数字设备公司的工作职责。起初,为两者工作相对容易,但随着 Linux 市场升温,我在两方面都投入了更多的时间。最后,我收到了 VA Linux Systems 的 Larry Augustin 的聘请,让 VA Linux 支付我的薪水,但全职为 Linux International 工作,因此我离开了数字设备公司,并从 1999 年春季开始全职为 Linux International 工作。
我已经在行业中工作了三十多年。一路走来,一直有人帮助我,给我指导和建议。虽然其中一些是坏建议,但大部分是好的,而且大多数建议都是以尽可能好的意图给出的。我参与了行业中的营利性和非营利性项目。我一直努力(并非总是完全成功)信守诺言,并对“客户”(无论我将谁视为“客户”)“做正确的事”。
我在 Linux 社区中找到了我认为是我所有经历中最好的一切。优秀的专业技术人员一起工作,开放的思想交流,以及对正在发生的事情的兴奋和热情。年轻人(无论实际年龄多大)努力做到最好,但也知道如何享受乐趣。结识新朋友的温暖,在某些情况下甚至被欢迎加入他们的家庭。Linux 在教育、嵌入式系统、超级计算以及“正常”桌面和服务器情况下的潜力既可以省钱,又可以扩展计算机科学。
我知道在 Linux 社区的某些部分,有一种感觉是“西装革履的人正在接管”。根据我的经验,将商业界的所有人都贴上“西装革履”的标签,与任何其他类型的偏执一样,也是一种偏执行为(并且具有所有相同的缺点)。我在行业中遇到的许多正在进入 Linux 市场的人确实想了解 Linux 社区的内涵,并且他们确实欣赏这种文化,因为他们试图理解它。我相信 Linux 社区可以扩展以拥抱这些商业利益,而不会淡化我们的信息,但我们必须认识到,伸出友谊之手比挥舞战斧更容易(除非真的需要战斧)。
本月封面上的照片非常说明问题。虽然我多年来的一些工作要求我在某些场合穿西装,但我更喜欢做个短裤和 T 恤男。虽然我一生中的大部分时间都在商业领域工作,但当可以自由交流思想(包括源代码)时,我过去和现在都更快乐。虽然我绝对是美国人,但我很幸运能够结识和欣赏许多不同的文化和人民。我希望 Linux 将成为他们走向计算机自主的主要途径之一,并为一些新兴国家发展他们自己的计算机产业。
最后,在三十多年的时间里,我很幸运能够结识和了解一些真正了不起的计算机行业先驱,其中一些是著名的,一些是不太著名的。在 Linux 社区中,我已经遇到了数百位。随着下一个千年的到来,我期待在互联网上和面对面地结识数千位。
Jon “maddog” Hall (maddog@valinux.com) 是 Linux International 的执行董事兼 VA Linux Systems 的 Linux 布道总监。