# 商业 Unix

关于厂商如何接受（以及未能接受）Unix，可能有大篇幅可写。例如，Doug McIlroy 曾对我说：

> IBM 和贝尔电话实验室很早就实现了 TSS/Unix 的结合，但这对 IBM 没有影响，而 Amdahl 则迅速加入进来。DEC 试图忽视 Unix，直到现在仍是如此，尽管 Armando Stettner 有所例外。HP 和 DEC、IBM 一样拥有专有操作系统，但却热情拥抱了 Unix，日本厂商也是如此。还有 Sun，Unix 和硬件协同成长，并推广了 BSD。

虽然我觉得这些事情很有趣，但鉴于这些公司中除了 Sun 之外几乎没有（如果有的话）对操作系统的发展做出贡献，我不会在这里花太多篇幅讲它们。

第一个商业支持 Unix 的公司是 1977 年成立的 Interactive Systems。1978 年，Heinz Lycklama 加入了 Interactive 的创始人 Peter Weiner，在圣莫尼卡工作。Lycklama 刚刚写出了 LSX，这是一个针对 LSI-11 微处理器的 Unix 版本。（LSI-11 本质上是一个用于卡内基梅隆 Cm\* 实验性松耦合多处理器的 PDP-11 处理器。）

Interactive 的产品叫 IS/1，能运行于大多数 PDP-11 机器上。直到几年前，Interactive 还是顶尖的移植公司之一，后来成为了交易芯片公司。有趣的是，早些时候，Weiner 在 RAND 公司时是第一位获得商业 Unix 许可证的人。

第一款商业 Unix“克隆”是 Whitesmiths, Ltd 出品的 Idris。Whitesmiths 是 P.J. Plauger 创办的，他也是另一位前贝尔实验室研究员。（Plauger 说 Idris 是巴比伦艺术之神；Whitesmiths 是软件公司，因此是“铁匠”的反义词。）Plauger 毕业于普林斯顿（比 Stu Feldman 大一届），1969 年获得密歇根州立大学物理学博士学位。他曾告诉我：

> 当时研究工作看起来并不怎么吸引人。所以当他们让我选组时，我选了一个在 Holmdel 的小组。它的任务是数字化电话系统。这是一场永无休止的斗争，因为每一种解决方案都意味着电线里要通过更多电流，而这超出了电话公司愿意支付的范围……我在贝尔实验室被调来调去待了好几年。其中一段时间他们把我借给了 Murray Hill。因为空间紧张，我最终被安排在一个办公室，紧挨着 Brian Kernighan。走廊另一头是 Doug Mcllroy、Dennis Ritchie 和 Al Aho 等人。Brian 和我非常擅长每天一起多次喝咖啡闲聊。
>
> 我们当时在抱怨编程风格的糟糕现状。然后我们就坐下来，花了大约三个月写出了《程序设计风格要素》（The Elements of Programming Style，1974 年）。写完后，我们在贝尔实验室内得到了支持。这激励我们写出了《软件工具》（Software Tools，1976 年）。不过在那个项目进行几个月后，我离开了贝尔实验室。我觉得自己在那里没有未来，最好赶紧离开，别等他们让我离开。后来我找到了一份在 Yourdon 公司工作的机会……
>
> 《软件工具》是我一生中做过的最困难的事情，比我的博士论文还难，而且不那么令人满意。所以我很高兴它最终能以那样的形式出版……我和 Brian 的合作就像 Gilbert 和 Sullivan：我们一起做的东西比各自单独做的要好……
>
> 几年环游世界讲学后，我觉得自己想回归编程。Ed（Yourdon）有机会拿到一个写商业 C 语言编译器的合同，我说服他去做。我连续工作了一周，不眠不休。那不是世界上最好的编译器，但足够用了。过程中我也了解了市场，因为有人找我说：“我们不想要那些 Unix 的东西，我们只要 C 语言。”
>
> Ed 懂得讲座业务，但不懂软件业务。于是我决定辞职，自己开公司……当我准备离开时，我妻子建议我不应该只做四处讲座这件事。那时，有两个在我手下工作的人开始和我混在一起。所以我成立了一家公司——在特拉华州注册，这两个人是合伙人，我持有大部分股份。一个三人公司。我记得是从 1978 年 8 月 1 日开始的。我们打算坐下来，从零开始写一个 C 语言编译器——我猜这是我写的第三个 C 语言编译器。我特别注意不要带任何实验室或者 Yourdon 时代的笔记。

我注意到，Whitesmiths 的 C 编译器对我来说最有趣的地方是它被“精心地做得不兼容”。Plauger 笑了。

> “不，不不。回头看，这看起来比实际情况还糟。实际上，那时候对 C 库的内容还没有清晰的概念，C 语言的定义也仅限于 PDP-11。我尽了最大努力，老实说。如果我犯了什么错误，那就是当各种 C 方言出现时，我本应该跟随大众，免费提供我的 C 库……
>
> 不管怎样，我拼命写代码，到 11 月底我们就有了编译器。但我们真的很幸运，公司刚成立不久就发出了一个类似诞生公告的消息——我们要做定制的 C 编译器——然后大约一周后，费城一家公司的电话打来了。他们说：“我们看到你们在做 C 编译器，我们正好需要一个。你能来费城吗？”我说：“不，我太忙了，你们要谈就来这里。”结果他们真的来了！他们派了三个人到纽约，我们坐在西七十九街的一间小公寓里……我们告诉他们我们的计划，他们说：“我们要你们所有的东西，后续三年你们说的所有内容都要。”我说：“那你们能不能给我们定期付款，这样生活会轻松很多。”他们同意了！于是公司成立后三、四周内，我们就拿到了来自 Fisher and Porter 的大合同……
>
> 年底前，我们给他们交付了 PDP-11 编译器；1979 年年中，交付了 8080 编译器；年底前，交付了 VAX 编译器；1980 年年中，交付了 68000 编译器。
>
> 同时我们还在做 Idris。写了相当大一部分代码。Whitesmiths 像野草一样快速成长。我们用我储蓄的两万五千美元起步，半年内实现了现金流正向。那是一段令人兴奋的时光，一切都很有趣，直到 1981 年年底。”

1982 年，Whitesmiths 经历了一场权力斗争，并在逐渐涌现的 PC C 编译器面前失去了市场份额。Plauger 坚持留在 Whitesmiths 直到 1988 年，然后将其出售给了 Intermetrics。他说道：

> 我花了十年时间学习如何经营一家公司；当我变得擅长之后，我才意识到自己并不想继续做这件事。过去四年里，我一直是独立行动的。
>
> 但我真的很想推销 Unix。我花了一些时间与贝尔实验室的律师谈判，后来才意识到，由于同意令的限制，他们根本不可能去做这件事。市场营销对他们来说是个肮脏的词，是个危险的肮脏词。而我必须决定是要为推销 Unix 而战，还是干脆咬紧牙关放弃。这并不是一个轻松的决定。我的目标是占据低端市场，但我没有做市场营销，也没有拉拢买家……

奇怪的是，Greg Rose 在 1979 年离开 UNSW 后，他的第一份工作是在一家获得 Whitesmiths C 编译器授权的公司，但当那家公司倒闭时，Rose 和他的一些朋友继续追随 Whitesmiths 的理念。

在某种程度上，Wollongong Group 是澳大利亚的第一家 Unix 公司。它的创立（以及失败）故事非常奇特，值得一读。回想一下，当 Rich Miller 和他的团队将 Unix 移植到伍伦贡大学的 Interdata 计算机时，学校竟然没有磁带驱动器。Rose 对我说：

> 他们非常需要一个磁带驱动器。于是，Juris Reinfelds 乘飞机去了新泽西。我想他是去参加一个会议。他当时真的觉得他们手里有东西——Unix 在 Interdata-Perkin-Elmer 上运行——并试图推销它。他实际上还和公司里一个人谈了话。那人问：“你们要多少钱？”Juris 说他们想要一个磁带驱动器，哪怕是二手的。那人把 Juris 转给了一个下属，这位下属听了之后说“不行”。
>
> Juris 当时正准备返回澳大利亚，心情极差。他在洛杉矶机场的酒吧里向一位医生倾诉烦恼。那位医生，名字叫 Dan 什么的，说：“二手磁带驱动器多少钱？”Juris 说大约一万四千美元。Dan 说：“我买下你的权利。”于是他们达成协议，Dan 开出支票，创立了 Wollongong Group。后来他买下了 Rich Miller 和 Juris 的股份。Dan 随后将软件权利和持续维护权以十万美元卖给了 Perkin-Elmer。公司就是这样开始的。

这故事很可能并不比其他传说更离奇。但人们不禁好奇，那些在 Interdata/Perkin-Elmer 拒绝了最初的 Ritchie 和 Johnson，以及后来 Reinfelds 的人到底是谁。Greg 继续说道：

> 差不多就在那个时候，墨尔本大学获得了 Perkin-Elmer 的 Unix。这也就是 Robert Elz 如何介入的原因。多年来，每次 AUUG 会议上都会有 Elz 关于 tty 驱动程序或类似内容的论文，其中一些内容非常重要，后来也被纳入了 Berkeley Unix。Elz 曾在 Berkeley 工作过，大约是 1979 年到 1980 年。

除了其他贡献外，Elz 编写了 BSD 磁盘配额功能（允许管理员控制分配给任意用户的磁盘块数量）以及自动配置文件（用于查找和配置连接到处理器的外设）。Elz 的论文于 1984 年 6 月在盐湖城举行的 USENIX 会议上发表。

我想介绍的最后一位早期商业 Unix 计划是加拿大的代表：Human Computing Resources Corporation（HCR）。HCR 由多伦多大学的人创立，其故事也从那里开始。David Tilbrook，作为多伦多大学的学生、HCR 创始人以及多次 EUUG 和 USENIX 会议的程序主席，回忆起那个学生团体时说：

> 这是个奇特的团队，属于 Ron Baecker 的动态图形项目（Dynamic Graphics Project），唯一一开始专注做图形学的是 Bill Reeves。Duff 原本打算和 Steve Cook 研究可计算性（computability）。我计划和 John Lipson 研究代数。Lipson 说为什么不利用我所有的实际经验，在硕士阶段玩得开心些，同时努力攻读博士学位。于是我决定转向计算机图形学。我当时选了一门图形课程，因为多伦多大学要求课程广度。于是我们就组成了这个计算小组，大家都为 Baecker 工作：我、Bill Reeves、Tom Duff、Martin Tuori、Mike Tilson、Tom Horsley。Rob Pike 过了一年左右也加入了我们。可以说是一个相当杰出的团队。
>
> 那是 1975 年，《通信 ACM》（CACM）文章刚发表。我们在 IBM 370 上用一个叫 Zap 的包做图形，写的是 FORTRAN 代码。我们有一个类似库的东西，用 PL/I 写程序，调用这些 FORTRAN 子程序，在 Calcom 绘图仪上生成纸质图形。我们还生成可以拿到 GT-40 上的纸质图形。在我跟 Baecker 上的研究生课程中，我们必须制作一个动画短片。\[Tilbrook 做了一个排序算法动画。]
>
> 同时，我在为多伦多公共图书馆做合同项目，接触到了 UTLAS（多伦多大学图书馆自动化系统）。我因此能使用 XGP 打印机（序列号 3），这是我第一次接触支持可变字体及大小写的打印机。我还在研究制作书脊、书目目录和卡片文件的问题……
>
> 于是我们在动态图形项目中，Tuori 和我打算做一个排版软件包——当时根本没有质量产品。Martin 和我在大学和中央图书馆的支持下，组织了一次关于用计算机排版的研讨会。我们发了传单，收到了大约 20 个回复……
>
> 这也让我加入了 Baecker 的团队。再加上动画电影项目。我们三个人都是国家研究委员会（National Research Council）奖学金获得者，Baecker 因此有充足经费，于是买了 PDP-11/45。Reeves 负责通用软件包，我则不断因为要求动态图形而搞砸了事情，那时我引入了动态光标。风格差异很大，Reeves、Duff 和我都有阅读障碍（dyslexia）。无论如何，我喜欢 Xerox Sigma 7，并用它写了 NEWSWHOLE，一个月登录了 300 小时。
>
> 《环球邮报》（The Globe & Mail）的 David Slocum 来参加了研讨会，谈到了分页和排版的难题。于是计算机分页看起来是个不错的论文课题。我就在《环球邮报》工作，开发了 NEWSWHOLE。正是这段经历促成了《环球邮报》的合作关系，我也带着这个关系创建了 HCR。
>
> 1975 年 12 月，我带着“我能带来《环球邮报》的合同”去找 Baecker。关键问题是“这套 Unix 系统跑在 Three Rivers Graphic Wonder 上，我们该怎么分发它？”\
> （Three Rivers Graphic Wonder 现在还放在多伦多大学 Ramsay Wright 动物学楼的 Henry Spencer 计算机实验室里。）

HCR 最初由一个小团队组成（引用原始招股说明书中的话）：

> 由在广泛的基于计算机的服务和产品领域拥有丰富研发经验的专家组成……包括计算机图形和交互式计算、界面设计……
>
> 其中一个例子是在计算机文本处理系统和页面布局系统的设计方面……

这个团队包括 Tilbrook、Baecker、Les Mezei 和 Tom Horsley。大约两年后，Mike Tilson 加入了他们。HCR 还销售软件产品，包括微软的第 7 版衍生版 XENIX。但为了实现他们的目标，HCR 需要一个商业 Unix 许可证。Tilbrook 告诉我：

> Bill 说他曾给负责这个事务的 AT\&T 的 Al Arms 打过电话，这个事务和电话业务无关，告诉他他们想买 Unix，那是 1976 年。Arms 报了 2 万美元的价格，因为他觉得这个价格高到没人会来烦他。

当然，正如 RAND Corporation 的 Peter Weiner 曾支付的那样，Tilbrook 有些夸大了。不过，HCR 最终成为了一家盈利的公司。Tilbrook 后来投身于另一个事业，而 Tilson 成为 HCR 的总裁，HCR 最终被 Santa Cruz Operation 收购。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/unix-si-fen-zhi-yi-shi-ji/unix-de-chuan-bo-yu-fa-zhan/19-commercial_unix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
