z****g 发帖数: 339 | 1 Mac OS X 背后的故事(二)——Linus Torvalds的短视
http://www.programmer.com.cn/6617/
文/王越
《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关
人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《
Just for Fun: The Story of an Accidental Revolutionary》。
Steve Jobs对Mac OS X的考虑
1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是
像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的
企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
绍Mac OS X底层的Darwin时还不忘在幻灯片上写道:Darwin是类似Linux的系统。而当
时精明的Steve Job在考虑下面几个问题。
第一,NeXTSTEP的内核和外围工具中,BSD代码维护起来需要大量人力,而且各分支的
BSD发展显然不如Linux快。很多功能都没有,需要Apple自己做。
第二,像Apple这样的小公司,需要借力打力。Apple的主要竞争对手是Microsoft,而
开源软件的矛头也是Microsoft,如果联合起来干革命,不但能让自己得到一个好名声
(Apple事后一直自称是最大的开源软件公司),也可以获得可观利益,从而对
Microsoft造成压力。
第三,也是最重要的,联合各开源组织能够推动Mac OS的发展。毕竟开源软件中像GCC
之类都是很成熟的项目,Apple用起来省时省力,投点钱就有大效益,多好。
所以,把Linux内核作为Mac OS X的重要组成部分的想法被这位伟大的智者想了出来。
Apple之前也有开发Linux的经验,比如在Steve Jobs回归之前,Apple就和OSF合作开始
把Mach内核移植到PowerPC上(Apple是最大的PowerPC玩家,而OSF是最大的Mach玩家)
,并把Linux作为服务跑在Mach上。这个系统就是MkLinux,我们在后续的连载中还会提
到这个系统,因为它不但对Linux的移植性作出了重要的贡献,也对后来的Mac OS X的
XNU内核技术起到了相当重要的作用。
如果可以采用Linux作为系统重要组成部分,并且这个构想能够取得在开源软件界呼风
唤雨的Linus Torvalds的认同,就能靠他在社区鼓动一大群开发者皈依Apple麾下,这
是Apple很想看到的给力结局。有了这个指导思想,他便让秘书给Linux的开发者Linus
Torvalds发了一个邮件,问他是不是有一到两小时的时间和Steve Jobs会面。不明真相
的Linus Torvalds收到邮件后相当高兴,因为这是他第一次有机会去硅谷观摩。
无果而终的会面
Apple总部Infinity Loop终于迎来了这位稀客,Steve Jobs亲自接见,而先前任NeXT技
术总监的Avie Tevanian(这人的故事我们今后会提到)也参加了这次会谈。不用多说
,这次讨论的内容自然是还处于未知状态的Mac OS X。讨论算不上正式,但Linus
Torvalds的愤青个性,却让谈判陷入僵局。
Steve Jobs自然搬出他1997年回归之际在MacWorld讲话时的那套理论,Apple虽然很颓
,但骨子里是个牛逼的公司。全世界桌面领域的真正玩家就两个,一个是Apple,另一
个是Microsoft,两者加起来,构成百分之百的桌面用户群。所以,Linus同学,你就从
了我们吧,如果你从了我们,让我们把Mac架在Linux上,一大批桌面用户就是Linux用
户啦,前景可是一片大好!
而Linus Torvalds那时候牛啊,诸多大公司如IBM、Red Hat都围着他转。他可是企业家
中的大红人,像Apple这样的企业根本就不在他眼里。作为一个开源软件的革命家,在
他的想象中Linux的潜在用户应该比Apple还多。他始终相信,按照目前开源软件的发展
态势,自己很快就能在桌面领域分到一杯羹。而且这个命题在他这种古怪性格下的直接
推论是,即使我能占领桌面领域,我也要摆出一副不在乎这个领域的态度来。所以实际
上Steve Jobs的开场白就失败了。
接着,Avie Tevanian向Linus Torvalds介绍了整个计划。他们想把Mach和Linux内核合
并起来作为Mac OS X的基础,我估计Linus Torvalds是听错了(因为Avie Tevanian很
早就意识到相比于微内核,混合内核有明显优势),他以为Apple想把Linux作为Mach的
一个服务来跑(当然我个人认为,即使是合并Mach和Linux成为混合内核,依Linus
Torvalds的愤青性格,依然是不可能接受的),这正让他回想到先前和Tanenbaum教授
的笔战。并且,他也知道Apple和IBM合搞的失败项目Taligent正是用Mach的。
Linus Torvalds对于微内核有他自己的看法,之前也曾在不同的地方表述过。若把关于
微内核的笔战去掉限制级敏感词的话可概括成两方面。一方面,设计一个微内核和相关
的服务,可能造成各种设计上的灾难。GNU/Hurd早在八十年代末就考虑尝试在Mach上写
一系列Unix的服务层,结果他们始终无法搞明白到底是让这些服务先发消息到另几个服
务呢,还是考虑其他方案。所以直到2011年我写这篇文章时,Hurd项目依然处于半死不
活的状态。而另一方面,微内核的效率无法和传统内核相比,最简单的系统调用会涉及
一系列底层服务的互相通信。所以很多研究者着手研究如何把微内核的效率提上去,结
果就导致微内核变得更加复杂。能提高微内核效率的很多研究成果都已在Mach项目中实
现了。而在Linus Torvalds看来这恰使Mach成为了一个非常复杂的项目,并且效率也不
怎么高。
会谈时坐一旁的Avie Tevanian事实上是Mach最早的开发者之一,他热情地给Linus讲述
Mac OS X系统蓝图。而Linus实际上早就不耐烦了。比如,Mac OS X中,有一个模拟层
,可让用户使用经典的Mac OS程序。这个技术极类似于现在跑在Unix系统上执行
Windows程序的Wine。Apple当时的考虑是这样,因为老的Mac OS在设计API时,就没有
考虑到类似内存保护之类的问题,所以这层API必须废掉,Mac OS X中所有的新程序必
须采用NeXT的那套更先进的API(根据我的考证,当时还没有Carbon这样的想法,而且
事实上Carbon不管在API还是ABI上都和经典Mac OS不兼容)。而短期内已有的软件又不
可能快速重写迁移至Mac OS X。所以,如果用户需要使用老版Mac OS的第三方应用程序
,就可以使用Apple提供的这个兼容层。但是由于刚才提到的原因,老版程序并不享受
新版程序的待遇,因为模拟器本身运行多个老Mac OS任务时,和原先老版Mac OS一样,
实际上只有一个进程,没有内存保护。这样做的好处是明显的,因为一方面老的程序在
Mac OS X发布之初还能用,另一方面Apple又和老技术划清了界限,逼着开发者使用新
技术,技术方面的原因是最重要的。但这个看似很正确的技术在Linus Torvalds看来是
古怪的,他想当然地认为,完全可以运行多个不同的模拟器进程,来执行不同的任务,
使得每个任务都可以享受内存保护。这种浪漫主义情调让他无比鄙视Apple员工的智商
。而事后当笔者使用早期版本的Mac OS X时,发现Linus Torvalds的想法完全是不切实
际的。因为这个模拟层本来就要占用不少的内存和CPU,在处理器速度不及今日手机、
内存无比精贵的90年代末,跑一堆模拟器进程无异于是和自己过不去。
Steve Jobs考虑到Linus Torvalds是开源软件的领军人物,便继续以开源为话题,动之
以情,晓之以理。他告诉Linus Torvalds,我们这个系统做出来后呢,所有的Unix层(
非图形界面层),都会开源,所以事实上你加入我们,也是在给开源做贡献啊!而由于
在开源圈子混久了,Linus Torvalds对此丝亳不领情,他认为,有谁会想用一个底层是
开源而图形界面是不开源的系统呢?所以,像笔者这样的用户被“代表”了。
Mac OS X与Linux分道扬镳
总之,这次会面完全谈崩,两人站在不同的角度去看问题,加上Steve Jobs和Linus
Torvalds都是个性鲜明、唯我独尊的人,技术和商业上的考虑都不同,所以会谈中双方
简直就是鸡同鸭讲。这次讨论也使得Apple放弃Linux,转而采用FreeBSD技术,并在
2001年任命FreeBSD的发起者、领军人物Jordan Hubbard为BSD技术小组的经理,并在后
来升为Unix技术总监。至于Apple的内核技术后来走向何方,我们下期再讲。
笔者认为,Apple和Linus Torvarlds的商谈破裂,以今天的眼光来看,是因Linus
Torvarlds的自命清高和短视造成的。他不懂得尊重其他开发者的意见,并且不断抬扛
。包括后来关于C++的论战。Mac OS X发布后,Linus Torvalds又数次嘲笑Mac的技术落
后,并说这些他在当年和Steve Jobs开会时就预料到了。直到最近,他终于有些成熟,
对Mac OS X的观点开始缓合,但还是不忘批评Mac的文件系统就是垃圾(事实上,Linux
的也没好到哪去,至少Apple还搞过一阵ZFS)。这种性格最终导致在Mac OS X和iOS大
行其道的时候,Linus Torvalds连兔子汤都不曾分到。
而事实上这对Apple也是件好事。Apple重要的是利益而不是折腾,即使是开源也是利益
驱动。像类似Linux开发组那样自以为是但代码又写得差的开源项目,Apple事后也遇到
不少,比如GCC编译器项目组[1]。虽然大把钞票扔进去,在先期能够解决一些问题,但
时间长了这群人总和Apple过不去,并以自己在开源世界的地位恫吓之,最终Apple由于
受不了这些项目组人员的态度、协议、代码质量,觉得还不如自己造轮子来得方便,因
此Apple推动了类似LLVM这样宏伟的项目,并且在短短几年内,使其成为最领先的开源
软件技术。这无异于扇了Linux小组、GCC小组一记响亮的耳光。
参考资料:
[1]来自于openbsd创始人的访谈,Theo de Raadt,Otto Moerbeek,Jem Matzan,MORE
ON OPENBSD’S NEW COMPILER,Oct 15,2007。
作者介绍:王越,清华大学建筑学院毕业,现居美国。中国著名TeX开发者,非著名
OpenFOAM开发者。 |
N****w 发帖数: 21578 | 2 靠,幸亏没有跟 OS X 搞到一起
不然现在死都不知道怎么死的
各种 API wrapper 套了一层又一层
哪个 OS X 的机器速度能跟 Linux 比?
Linux 就是 X 古董了一些
不过等 wayland 进入发行版之后,什么 OS X 连提鞋的工夫都没有
Linux 最大的优点就是不会为了迁就过时落后的东西而
牺牲结构上的效率和可维护性
【在 z****g 的大作中提到】 : Mac OS X 背后的故事(二)——Linus Torvalds的短视 : http://www.programmer.com.cn/6617/ : 文/王越 : 《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关 : 人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《 : Just for Fun: The Story of an Accidental Revolutionary》。 : Steve Jobs对Mac OS X的考虑 : 1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是 : 像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的 : 企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
|
A******g 发帖数: 612 | 3 没觉得linux比os x快啊,不过我基本用得都是unix层
【在 N****w 的大作中提到】 : 靠,幸亏没有跟 OS X 搞到一起 : 不然现在死都不知道怎么死的 : 各种 API wrapper 套了一层又一层 : 哪个 OS X 的机器速度能跟 Linux 比? : Linux 就是 X 古董了一些 : 不过等 wayland 进入发行版之后,什么 OS X 连提鞋的工夫都没有 : Linux 最大的优点就是不会为了迁就过时落后的东西而 : 牺牲结构上的效率和可维护性
|
S*A 发帖数: 7142 | 4 Linux kernel file system 比 osx 快太多了。
【在 A******g 的大作中提到】 : 没觉得linux比os x快啊,不过我基本用得都是unix层
|
A******g 发帖数: 612 | 5 可以介绍一下这个怎么测试吗? 好奇。
【在 S*A 的大作中提到】 : Linux kernel file system 比 osx 快太多了。
|
g*******1 发帖数: 8758 | 6 我怎么觉得os x的图形界面太吃资源了。
【在 A******g 的大作中提到】 : 没觉得linux比os x快啊,不过我基本用得都是unix层
|
N*2 发帖数: 95 | 7 wayland 是什么
【在 N****w 的大作中提到】 : 靠,幸亏没有跟 OS X 搞到一起 : 不然现在死都不知道怎么死的 : 各种 API wrapper 套了一层又一层 : 哪个 OS X 的机器速度能跟 Linux 比? : Linux 就是 X 古董了一些 : 不过等 wayland 进入发行版之后,什么 OS X 连提鞋的工夫都没有 : Linux 最大的优点就是不会为了迁就过时落后的东西而 : 牺牲结构上的效率和可维护性
|
t***s 发帖数: 4666 | 8 我觉得归根到底是个license的问题。linus估计不愿意改GPL。
【在 z****g 的大作中提到】 : Mac OS X 背后的故事(二)——Linus Torvalds的短视 : http://www.programmer.com.cn/6617/ : 文/王越 : 《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关 : 人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《 : Just for Fun: The Story of an Accidental Revolutionary》。 : Steve Jobs对Mac OS X的考虑 : 1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是 : 像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的 : 企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
|
N*****m 发帖数: 42603 | 9 靠,不就是不像bsd那么傻,白白给Jobs当义工么
【在 z****g 的大作中提到】 : Mac OS X 背后的故事(二)——Linus Torvalds的短视 : http://www.programmer.com.cn/6617/ : 文/王越 : 《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关 : 人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《 : Just for Fun: The Story of an Accidental Revolutionary》。 : Steve Jobs对Mac OS X的考虑 : 1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是 : 像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的 : 企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
|
f*******5 发帖数: 10321 | 10 这个references里提的是openbsd,怎么文中就变freebsd呢。
【在 z****g 的大作中提到】 : Mac OS X 背后的故事(二)——Linus Torvalds的短视 : http://www.programmer.com.cn/6617/ : 文/王越 : 《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关 : 人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《 : Just for Fun: The Story of an Accidental Revolutionary》。 : Steve Jobs对Mac OS X的考虑 : 1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是 : 像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的 : 企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
|
|
|
N****w 发帖数: 21578 | |
N*****m 发帖数: 42603 | 12 ft,screenshots都这么土
看来不指望了
【在 N****w 的大作中提到】 : http://wayland.freedesktop.org/screenshots.html
|
c****i 发帖数: 7933 | 13 作者王姓傻叉。给清华丢脸,幸好这种人渣移民到美国来了。满嘴喷粪的一篇文章,他
估计一秒中都没有想过GPL到底是什么,脑子里面以为GPL也好,Linux也好,都是忽悠
钱的。这种文章就别转载了。 |
c****f 发帖数: 1102 | 14 这文章看得我怎么那么恶心
那个发帖人 一看就知道是个apple fanboy...
文章带着明显的偏向性.
linux除了没一个很好的界面以外 一切都优于osx.
所以很多人会说apple是个卖windows management tool的公司
而且明显就目前服务器行业来说..OSX连零头都拿不到
发帖人估计脑内屏蔽的android来写这文章的吧.. |
s**********o 发帖数: 197 | 15 关于那个给老OS程序运行的模拟层,感觉作者说的原因没什么道理,即使模拟层占内存
比较多,本身的执行码在内存里面也就一个copy,多开几个线程也不会多copy几个模拟
层。
不过老的OS如果不提供内存保护和强制线程切换的话,那么程序本身可能就要follow一
些contract来实现多任务。Linus的想法就是给每个老程序单独开个线程,这样就可以
利用内核里面多任务的服务了。不过如果程序本身就考虑了多任务协调的因素的话,单
独运行一个程序和多个程序运行的behaviour应该是不同的。完全实现Linus的想法工作
量比较大,所以苹果应该是觉得没必要。 |
S*A 发帖数: 7142 | 16 那个作者明显是果 fan。你看看 FreeBSD 在 Jordan Hubbard
被收编之后就一厥不震了。想收编 Linus 那是没有那么容易的,
Linus 很讲究均衡性,所以不去什么 Distro 的公司。
Linux Kernel 现在是世界上以知的规模最大发展速度最快的软件
工程,从贡献的人数和commit 的次数和频率来衡量的。
这个和 Linus 英明领导密切相关的。大家应该庆幸 Linus 没有
因为个人私利投奔 Apple 而导致 Linux 现在像 FreeBSD 那么
萎靡。
而且苹果根本不想 Open source. 终归还是借 open source
为己用而已。
其他技术问题,历史说明了, Linus is always right (TM). |
n******7 发帖数: 12463 | 17 靠,不加入邪教就是短视,这要多么轮才能写出来。。。 |
u*********r 发帖数: 2735 | 18 well said
【在 S*A 的大作中提到】 : 那个作者明显是果 fan。你看看 FreeBSD 在 Jordan Hubbard : 被收编之后就一厥不震了。想收编 Linus 那是没有那么容易的, : Linus 很讲究均衡性,所以不去什么 Distro 的公司。 : Linux Kernel 现在是世界上以知的规模最大发展速度最快的软件 : 工程,从贡献的人数和commit 的次数和频率来衡量的。 : 这个和 Linus 英明领导密切相关的。大家应该庆幸 Linus 没有 : 因为个人私利投奔 Apple 而导致 Linux 现在像 FreeBSD 那么 : 萎靡。 : 而且苹果根本不想 Open source. 终归还是借 open source : 为己用而已。
|