桌面环境下的 UNIX
当史蒂夫·乔布斯在 2002 年 1 月推出苹果新款 iMac 时,聚光灯完全集中在这款首个完全颠覆“盒子”概念的主流计算机的物理架构上。新款 iMac 是一个白色圆顶,配有一个漂浮在铬合金臂末端的纯平屏幕。它看起来像是 Luxo 台灯和化妆镜的结合体。乔布斯称之为“我们做过的最棒的东西”。
包括时代杂志封面故事在内的报道,全部都围绕着硬件。没有人注意到史蒂夫·乔布斯最精明的举动,那就是在关键之处利用 UNIX。从 2002 年 1 月开始,每台新 Mac 都将搭载 OS X 作为其默认操作系统。OS X 构建于 Darwin 之上,Darwin 是 BSD 在 Mach 内核上的开源实现。因此,现在每台新 Mac 都是一匹特洛伊木马,随之而来的是一支看不见的 UNIX 专家军队。
无论技术和宗教上的差异如何将各种 UNIX 分开,对一种 UNIX 的专业知识都能很好地移植到另一种 UNIX:从 Solaris 到 HP-UX,再到 AIX、Linux、BSD、Darwin 和 OS X。如果你想进行黑客行为,环境就在那里——工具和社区也都在那里。
换句话说,OS X 为我们提供了第一个流行的桌面操作系统,它既融入了主流 Linux 环境,也融入了主流市场。底层是 UNIX。顶层,它可以运行 Microsoft Office 和整个 Adobe 套件。这很有吸引力。
在 iDevGames.com 网站上,Aaron Hillegass 写道
明天我将登上飞机。我会带着我的 PowerBook。在航班上,我可以编写 Cocoa 应用程序、基于 PHP 的网站、Tomcat Web 应用程序、AppleScript 脚本或 Perl 脚本。我可以使用 Project Builder、Emacs 或 vi。我可以选择 MySQL 或 PostgreSQL 作为后端数据库。我将使用 Apache 作为我的 Web 服务器。这一切都是免费的!如果我愿意花一点钱,我还可以运行 Word 或 Photoshop。我甚至可以在飞行中观看 DVD。
OS X 对开源社区的社会影响在 2001 年 7 月的 O'Reilly 开源大会上已经显而易见,当时,平板式的 Macintosh G4 Titanium 笔记本电脑似乎随处可见。在一次 Jabber 会议上,七名与会者中有四名在使用 TiBook 敲击键盘,包括 Jabber 的创建者 Jeremie Miller。终端窗口散布在他的屏幕上。当我们问他在做什么时,他回答说:“一边编译代码,一边处理一些电子邮件”。
UNIX 树上不断增长的 OS X 果实为 Linux 以及其他 UNIX 分支创造了新的和有趣的市场条件。仅 iMac 的销量预计就达 600 万台。这些机器中的许多将渗透到 Linux 具有强大现有服务器地位的市场,例如科学和教育领域。劳伦斯利弗莫尔国家实验室曾经是苹果最大的客户,并且很可能重新获得这一头衔。2002 年 1 月,缅因州宣布计划向七年级和八年级的每位教师和学生赠送一台新的 iBook。所有这些孩子都将拥有自己的 UNIX 机器。考虑一下其中的含义。
OS X 是否有服务器市场?值得注意的是,OS X Server 作为一款产品已经存在两年多了,但从未引起太多关注。此外,虽然每台新的 OS X Mac 都准备好执行各种服务器功能,但这并不是它畅销的原因。IT 经理和 Mac 专栏作家 John C. Welch 称 OS X 为“还不错的服务器,主要是由于硬件限制和不成熟”。与此同时,他说,“Linux 是一款出色的服务器。得益于 IBM 和 Sun,它可以运行在比 Windows 梦想的更多更好的硬件上。” 因此,OS X 在服务器领域对 Linux 构不成威胁。并且它完全缺席 Linux 的另一个主场——嵌入式计算。
OS X 将会成功的地方是在 Linux 从一开始就努力争取普及(即使功能强大)的一个类别:桌面。
这是一个问题吗?这是我们在 2002 年 1 月参观 Macworld 时首先想到的问题。令我们惊讶的是,答案恰恰相反。不仅有许多熟悉的 Linux 人物在四处闲逛(看起来很赞同),而且还有 UNIX 极客穿着 Sun 和 SGI 的赠品。一位 Linux 黑客告诉我们,OS X 是“颠覆性的”,因为它向世界“播种”了数百万台开源 UNIX 机器。另一位说,“我可以去我妈妈家,启动她的 iMac,打开一个 shell,ssh 到我自己的服务器,然后完成一些真正的工作。” 因此,Linux 和 OS X 的市场逻辑似乎是“与”,而不是“或”。
苹果还从开源阵营中吸引了一些顶尖人才。负责苹果 OS X 工程的 Brian Croll 是从 Eazel 招募来的。世界首屈一指的 BSD 黑客(以及 FreeBSD 的创始人之一)Jordan Hubbard 实际上毛遂自荐,在苹果从事 Darwin 的工作。在预览了 OS X 后,他说“哈利路亚”和“这就是我过去 20 年来一直等待的东西……我以前从未想过为苹果工作,但现在我说,我怎样才能加入?”
与开源社区合作对苹果来说仍然是新鲜事物,这种关系一直是对该公司高度专有的知识产权方式的挑战。但苹果在一些问题上做出了妥协。在黑客们对苹果最初的公共源代码许可感到不满后,该公司发布了一个新的许可,该许可很快获得了开源促进会的批准。在新许可证于 2001 年 1 月发布后不久,OS X 产品经理 Chris Bourdon 将其总结为:“你可以拿走 Darwin 并做任何你想做的事情。它对所有人开放。”
我们首次尝试 OS X 是在 2000 年 11 月它进入公开测试版时。那时,最后一段中的任何内容都还看不到,新的公共源代码许可证离发布还有一个多月。它与“经典”Mac OS(它在模拟下运行)以及 Linux 和 Windows 上的其他桌面都截然不同。它很漂亮,但也很慢,并且明显缺乏 CD-ROM 刻录机、DVD 播放器以及现代桌面计算体验必不可少的其他外围设备的驱动程序。如果我们当时像计划的那样对其进行评测,我们的拇指会指向地面。而且我们不会孤单。“坦率地说,我认为它是一堆垃圾”,Linus Torvalds 在他的书Just for Fun中写道,这本书也是在那段时间创作的。
第二年春天,当苹果发布 OS 的 1.0 版本时,情况有所好转。但它仍然很慢,并且仍然缺少一些关键驱动程序。2001 年 9 月,版本 10.1 发布,内核版本为 1.4.1,据各方说法,这有了巨大的改进。很快,大量驱动程序出现,内核崩溃的报告降至噪音水平以下,并且该操作系统已准备好迎接黄金时期。
从那时起,一件好事变得越来越好,这在很大程度上归功于开源极客们带来的东西。XFree86 和 XonX 将 X Window 系统带到了 Darwin。Fink 使用 Debian 工具(如 dpkg 和 apt-get)构建了一个软件包管理器。他们的网站列出了数百个可用软件包。事实上,你甚至不需要在苹果硬件上运行 Darwin,因为 x86 版本也可用(甚至来自苹果)。GNU-Darwin 已经是领先的非苹果 Darwin 发行版。看到这一切发生,我们的拇指开始向天花板旋转。
然后上周我们将 OS X 安装到一台 Titanium 笔记本电脑上。它让我们大吃一惊。
当我们插入第二个显示器(或投影仪)时,操作系统会自动检测到它,然后让我们决定是将其设置为镜像笔记本电脑屏幕,还是在所有四个侧面的任何位置作为连续扩展进行操作。当我们插入 FireWire 驱动器或 USB 存储设备(例如摄像机、MP3 播放器或数码相机)时,该设备会显示在桌面上、相应的应用程序中以及目录中。当我们软弹出 FireWire 驱动器时,它就会消失,除非有需要它的东西正在使用——在这种情况下,操作系统会给我一个警告或责备,永远不会崩溃。
安装 OS X(现在是 10.1.2)非常简单。它立即运行了机器上已有的几十个经典 Mac 应用程序中的每一个,包括 Adobe GoLive 和 Photoshop,这两个都是大型、资源密集型程序。同时运行 Classic 和 OS X 原生应用程序不是问题。一切看起来和运行起来都很好。
但当需要移动机器时,OS X 的性能真正得以体现。过去,这是一项预防措施,需要运行一个可能会出错的事情清单。现在不再需要了。
在桌面上,Titanium 通过以太网和 DHCP 连接到网络。建筑物的其余部分被 802.11b 无线网络覆盖。我们可以合上 TiBook 的盖子,同时通过以太网连接,看着它立即进入睡眠状态,拔掉所有东西(七根电缆,包括 USB、FireWire、以太网、扬声器、电源和显示器),然后在厨房的桌子上打开它时,看着它立即唤醒,在那里它现在以无线方式连接到网络。稍后我们可以合上盖子,将其放回桌子上,重新插入所有东西,打开它,看着它立即唤醒并像以前一样继续运行。我们每天多次这样做,没有任何不良影响。
并非生活是完美的。笔记本电脑有时会开始变慢。然后我们通常会寻找负责的进程。(令人难以置信的是,内存感觉不是问题,即使我们“只有”384MB。)苹果提供了一个有用的 GUI 实用程序,名为“进程查看器”,但我们宁愿以正确的方式来做:通过终端会话。我们只需运行 top 或 top -u,隔离 CPU 占用大户并将它们杀死。以 UNIX 的方式,生活继续。
通常的罪魁祸首是 TruBluEnv,它是 Classic 模拟环境的一部分。苹果显然还有一些工作要做。但同样,故障永远不是灾难性的,并且远不如 Classic Mac OS 常见,后者通常每天崩溃几次。
想知道 OS X 的杀手级应用是什么吗?它是 uptime 命令。现在它对 Titanium 这样说:“上午 11:21 运行 6 天 16 小时 54 分钟,3 个用户,负载平均值:1.81、1.55、1.36”。在另一张桌子上是一台 G4/500 双处理器台式机,也在运行 OS X。那里的 uptime 显示:“上午 11:22 运行 22 天 1 小时 50 分钟,2 个用户,负载平均值:0.16、0.04、0.00”。在那台机器上,我还运行了一个名为 CPU Monitor 的小程序,它显示两个 CPU 上的活动。非常酷。
在他的书In the Beginning Was the Command Line中,Neal P. Stephenson 将 Linux、微软和苹果比作汽车经销商。Linux 由志愿者制造坦克,可以免费取用。微软制造了讽刺性地受欢迎但容易出故障的旅行车和 SUV。苹果制造了“昂贵但造型精美的汽车,它们的内部是密封的,因此它们是如何工作的有点神秘”。
OS X 内部仍然有很多密封的东西,但你可以打开引擎盖并对其进行操作。最后,它有了命令行。
终端位于 /Applications/Utilities 中。打开它,执行 ls /,你会发现熟悉的目录(bin、etc、sbin、tmp、Users、usr、var)以及其他目录,例如 Applications、Library、Trash 等。
查看 /usr/bin,你会发现许多你期望找到的工具都在那里:autoconf、bison、cvs、fetchmail、nslookup、perl、ssh、whoami 等等。意想不到的工具来自 OS X 遗产的 Mac 方面。一个例子是 osascript,它允许你从命令行运行 AppleScript 脚本——这是一项人们想象原始 AppleScript 设计师从未设想过的壮举。
一些常见的嫌疑对象不见了:例如,没有 Python 或 Pine。但这些都是开源开发人员可以自由解决的问题,而许多人也确实在这样做。OSXGNU 档案已经包括 Python、bash(OS X 默认的是 tcsh)、Pine 和 Lynx。因此,它们的缺失很容易得到纠正。
Fink 项目分发 ant、MySQL、Nmap、Ruby 等的端口,其明确的目标是使 OS X 成为“与 Linux 用户习惯的相匹配的连贯、舒适的发行版”。
有趣的是,发现 OS X 附带的许多软件都是 BSD 或 MIT 许可的,而人们下载的许多软件都是 GPL 许可的。虽然这只是一条经验法则,但这是 OS X 和 Linux 之间的明显对比。例如,OS X 附带了 Curl,它在 MIT 许可下可用,而不是更常见的 GPL 许可的 GNU Wget。这可能归因于苹果法律部门对 GPL 许可软件的过敏。
虽然有一个单独的 OS X Server,但 OS X 本身也包含服务器软件,例如 Apache、sendmail、named 和 sshd。AppleTalk 和 Samba 支持是内置的。
由于 OS X 非常新,因此仍在发现缺陷。例如,Apache 中发现了一个安全问题,因为 Mac 的原生文件系统 HFS+ 不区分大小写。这意味着本来会被拒绝的 URL 只需更改请求的大小写就可以变得可读。苹果公司用一个新的 Apache 模块做出了回应,该模块强制执行伪区分大小写,并且任何在 OS X 上构建 Apache 的指令都必须考虑到这一点。
当然,有 GUI 方法可以完成命令行工作。其中一些还不错。在 GUI 中打开 Apache 很简单。你只需在“系统偏好设置”中的“Web 共享”实用程序中按下“启动”按钮。你可以用同样的方式打开 FTP 和 SSH 访问。命令行仍然在那里,当然。只需使用你最喜欢的编辑器编辑 /etc/httpd/httpd.conf 即可。
GUI 被称为 Aqua,因其水样、口香糖状的外观而得名,其中包括可变半透明窗口和微软稍后可以复制的其他东西。它包括一个文件浏览器(仍然称为 Finder),它既类似于经典的 Mac OS,也类似于 NeXT 多列文件浏览器,具体取决于你如何使用它。大多数 GUI 应用程序都存储在 /Applications 中。值得注意的是,OS X 带给桌面环境的一个基本的 UNIX 理念是相对严格的分层目录结构。过去,用户可以将应用程序和文档散布在他们喜欢的任何地方。使用 OS X,应用程序进入 Applications 目录,文档进入用户自己的 Documents 子目录。虽然你仍然可以自由地将它们放置在其他地方(这是 UNIX),但这显然是不合规范的(也是 UNIX 的)。
在 OS X Applications 目录中,有一小堆免费的闭源应用程序,主要来自苹果公司。其中一些,例如 iTunes、iPhoto 和 iMovie,做了苹果一直以来最擅长的事情,那就是在 GUI 艺术和易用性方面都提高了标准。另一些,例如苹果的邮件应用程序、计算器和时钟,是方便的占位符。也有免费的第三方应用程序,包括许多 Linux 极客宁愿避免使用的应用程序:微软的 Internet Explorer。幸运的是,Mozilla、Netscape 和 Opera 的原生 OS X 版本只需下载即可获得,并且都似乎运行良好。OmniWeb 4 是另一个仅适用于 OS X 的不错的浏览器。
OS X 的可用应用程序组合仍然很小,相对于 Windows 甚至 Mac OS Classic(OS X 在模拟中运行)而言。但它正在快速增长。截至 2002 年 1 月,数量约为 5,000 个,其中包括 1,000 多个移植过来的 UNIX 应用程序。BBEdit(Mac 极客认为是有史以来最伟大的文本编辑器)已经发布。Adobe 套件的更多成员每月都在出现。现在又有了全新的 Microsoft Office,有些人认为它超越了该套件的最新 Windows 版本。史蒂夫·乔布斯发誓要使 OS X 成为 Java 应用程序的最佳环境,而且我们看不到任何可以反驳这种说法的东西(而 Java 在旧的 Mac OS 上一直很痛苦)。所有这些发展肯定会使 OS X 更加流行(并且,我们讽刺地怀疑,它的命令行界面甚至更加必要)。
在 OS X 的 UNIX 基础之上,很少有东西是开源的,尽管苹果公司不遗余力地邀请和采纳任何感兴趣的人提出的更改和改进建议——这是苹果公司在史蒂夫·乔布斯(带着他精通 UNIX 的 NeXT 团队)回归之前永远不会做的事情。一份报告称,仅在公开测试期间就向苹果公司发送了 70,000 多条建议,其中许多建议已被纳入整个 OS X 中。
Darwin 主要吸引了系统级供应商。GNU/Darwin 似乎有浓厚的兴趣和开发人员的参与。XFree86 和 XDarwin 是在 XonX 项目中开发的。你可以以无根方式运行 XDarwin,这意味着与 Aqua 并排运行,或者在其自己的窗口中运行。Fink 人员甚至在 OS X 上运行了 GNOME。
OroborOSX 是 Oroboros 窗口管理器的端口,“试图使 X11 以更‘Mac 风格’的方式运行(无论你是否喜欢!)”。由于 Photoshop 仍然没有为 OS X 发布,因此 GIMP 是另一个流行的下载。
另一方面,将 OpenOffice 移植到 OS X 的进展一直缓慢;Sun 公司的 Bill Roth 告诉 CNET,“我在这里做一个厚颜无耻的宣传。我们需要这个项目的人。”
表 1 显示了在撰写本文时 OS X 与 Debian GNU/Linux 的对比情况。
在每份零售版 OS X 中,苹果都会附赠一张开发者工具 CD。其中包括熟悉的 cc 和 gdb,以及 Project Builder 和 Interface Builder:一个 IDE 和用户界面布局工具。这与早期的开发环境相比是一个巨大的变化。要在 OS X 之前的 Mac 上进行开发,必须从苹果公司购买 MPW(Macintosh Programmers Workshop)工具,或者从 Metrowerks 购买 CodeWarrior。
在撰写本文时,Metrowerks 正在研究 OS X 案例。Borland 也是如此,推出了 JBuilder。从 Linux 的角度来看,更重要的是 Trolltech 推出了 Qt/Mac。
Project Builder 和 Interface Builder 引起了极大的热情。Graeme Hiebert 说,“Project Builder 是一个非常好的 IDE,而 Interface Builder 是一项令人惊叹的作品。在 Mac OS X 之前,我基本上是一个 makefile 爱好者,但我现在很少使用它们了。”
Gabriel Ricard 说:
我最喜欢 PB 和 IB 的地方在于,我不需要编写一行代码来创建界面。我只是使用 IB 创建界面,编写类及其 IB 中附加到界面的选择器,然后构建应用程序。
对于编写 GUI 应用程序,可以选择编写 Carbon API(它是经典 Mac API 的修订版)或使用 Cocoa(它是 NeXT 框架的更新版本)。Carbon 是 Mac 开发人员将经典应用程序移植到 OS X 的最佳选择,因为它需要的代码更改最少。建议新应用程序使用 Cocoa。Cocoa 应用程序可以用 Objective-C 或 Java 编写。Objective-C 就像 C++ 一样,是 C 的超集。
除了 Carbon 和 Cocoa 应用程序外,还可以使用 Project Builder 创建命令行工具、内核扩展、插件、纯 Java 应用程序和框架。
内核方面也有外部参与。Darwin Committers 列表很短,但似乎这些人正在进行认真的工作。Darwin Developers 列表(我们订阅了该列表)非常活跃且乐于助人。它清楚地表明了正在进行多少工作——以及还有多少工作要做。
现在还为时过早。我们在这里谈论的几乎所有内容都非常新,从 Darwin 和 OS X 到自由软件和开源社区开发的平台传播工具和应用程序。
我们将继续密切关注 OS X 的发展,并邀请我们的读者也这样做,并分享他们所学到的知识。互操作性不是你独自一人可以完成的事情。
Doc Searls 是 Linux Journal 的高级编辑。此专题文章是本月的“Linux for Suits”专栏,该专栏将于下个月回归。
