系统软件研究是离题的
罗伯·派克
贝尔实验室
朗讯科技
rob@plan9.bell-labs.com
2000年2月21号
一场论战
这个话题是一个争论,它反映了我在现代系统软件研究方面的悲观的想法 。我不再多说乐观的方面,既然别人能替我说;每个人对计算机产业还是感到兴奋的。我可能会因此展示一幅在某种程度上比现实更黯淡的图片。
不管怎样,我认为形势真的很糟并且需要行动。
论题
系统软件研究已经成为计算机行业激动人心的边缘。
你上一次看到令人激动的非商业的demo是什么时候呢?
令人啼笑皆非的是,曾经当计算机技术几乎是革新的定义时,在大学里关于软件和硬件的研究和大部分行业一样还是孤立的,僵化的并且是离题的。
有许多理由,一些是可以避免的,一些是根深缔固的。
可能会有方法改进目前的形势,但是需要全社会的努力。
解说
系统
软件
研究
是
离题的
下降的领域
SOSP的新操作系统
“总之,有谁需要新的操作系统呢?”你问。可能没有人,那么它支持我的观点。
“但是现在有许多关于文件系统,平台,安全,Web超高速缓存等方面的论文。”你说。是的,但是不在研究领域的人谁又会关注呢?
系统研究对繁荣的贡献
一台高端工作站:
硬件已经发生了戏剧性的变化,而软件却停滞不前。
创新在何处?
微软,很可能。那你来比较一下微软1990年的软件和2000年的软件。
如果你认为那并不是创新,而是简单的拷贝,我会告诉你Java对C++来说就像Windows对于Machintosh一样:一种对于一个有趣的而不是存在技术缺陷的系统软件行业的响应。
如果系统研究是正确的,我们应该看到新的操作系统和新的语言对行业产生影响,就像我们在七十和八十年代做的那样。
与之相反,我们看到的是一个繁荣的软件产业,它大大地阻碍了研究;并且研究团体宁愿去著述论文而不是开发软件。
Linux
创新?新的?不,它只是对旧事物的另一个拷贝。
陈旧的素材。比较一下Linux的程序开发和微软的Visual Stdio或IBM的其中一个Java/Web开发工具包。
Linux的成功也许是我的论题中唯一的最有说服力的论据:人们对操作系统方面一项几十年的空白所产生的兴奋证明研究社团还不能弥补空白。
除此之外,Linux的过人之处不在于软件本身而在于开发模式,不论怎么比较,也很难说是计算机科学理论(尤其是软件工程)的一个胜利。
什么是现代的系统研究?
Web超高速缓存,Web服务器,文件系统,网络数据包延迟之类的东西。平台,外围设备,应用程序,而不是内核甚至用户级别的应用程序。
即便如此,还是有很多评价;大体上都是对科学方法的误解和误用。
只是的太多现象学:发明创造已经被观察代替。如今我们看到对比Linux和Windows中断等待的论文,它们可能很有意思,甚至也挺有用,但是它们不是研究。
那些误导想让人们觉得它是科学的,有太多的评价:乱七八糟的划线和差劲的曲线图。
通过对比可以知道,一种新的计算机语言或操作系统能让计算机感觉不一样,能给它新鲜和活力 。
但是今天,这些本该让电脑实现却并没有实现的要求被一个很cool的网站或一个更高的cpu时钟频率或某一灵活的小设备实现了 。
那种艺术消失了。
但是艺术毕竟不是科学,它不过是其中的一部分。系统研究不能只是科学;一定还有工程,设计和艺术。
发生了些什么?
许多事情:
个人电脑
微软
网络
标准
传统
数字计算制的改变
Unix
Linux
运作
祖母
个人电脑
硬件变得便宜了。便宜的硬件变得好用了。终于,如果它不能在个人电脑用,那也是没关系的,因为中等的,普通的电脑是个人电脑。
甚至在20世纪80年代,很多系统工作都是围绕着新的结构(RISC,iAPX/432,Lisp机器)进行的。现在不再是了。大部分有趣问题的来源和可能有趣的解决方案消失了。
很多系统工作围绕着使陈旧的东西跨越结构:也就是可移植性。但是当硬件依旧如此时,它就没什么进步了。
Plan9可能世界上可移植性最好的操作系统。我们将只为个人电脑做一个新的版本。(考虑到旧时代的缘故,我们将包含着其它结构的源代码,但是希望没人能用到它)
那正像个人电脑作为硬件一样;作为软件,它也是同一种问题。
微软
关于这个话题说的已经足够多了。(虽然人们将会说更多)
微软是个简单的目标,但是它是一头替罪羊,不是真正的困难根源。
下面是细节。
网络
网络产生于20世纪90年代,它让计算机科学家们感到吃惊,就像它成为一种商业的东西一样。
然后它占据了大部分议论,但是没有效果。商业控制了它。(网络出自物理学家手中,发展成一种产业。)
IBM的Bruce Lindsay说:HDLC约等于HTTP/HTML,3270软件被网络浏览器所代替(比较一下Visicalc和PC)。
尽管有许多关于超高速缓存,代理,服务器结构等方面的论文,但是对研究的贡献并不大。
标准
作为一个可行的计算机系统,必须遵循一个巨大的而且经常变化的标准列表:
TCP/IP,HTTP,HTML,XML,CORBA,Unicode,POSIX,NFS,SMB,MIME,POP,IMAP,X ……
巨大量的工作,但是如果你不遵循这些标准,你会被排斥。
估计Plan9有90%~95%的工作是直接或间接地去遵循外界强加的标准。
从另一个水平上说,指令结构,总线等等有着同样的影响力。
带着这么多外界强加的结构,就没有多少的新奇的创造了 。
另外,像微软,思科那样的“拥有”标准的商业公司故意地把标准做得很难遵循,来挫败竞争对手。学术界是个牺牲品。
传统
当今毕业的物理学博士们使用Unix,X,Emacs和Tex。那就是他们的世界,它通常是他们曾用来研究技术的唯一的计算方式。
二十年前,即使是一个学生,也会遇到多种多样的操作系统,它们都有优点和缺点。
现在我们实验室的新雇员们带来了他们一贯的作风,或者希望它能在那里当他们到时。那是合理的,但曾经一时,进入一个新的实验室就是探索新的工作方式的机会。
经验的狭隘导致了想象的狭隘。
计算机语言的形势并不那么好——许多课程,包括揭示功能语言的等等——却也有一个语言的传统——C++和Java。
在科学上,我们把最高荣誉留给那些证明我们是错的的人。但是在计算机科学上却……
数字计算制的改变
在那么多外界的约束下,而且很多东西已经做完,这种有趣的工作很大程度上需要大范围上的努力。
写一个现代化的,逼真的系统需要许多人力和时间。那属于大部分大学里各系的范围。
而且,时间跨度是很长的:从设计到最终版本能达到5年之久。那也属于大部分校友的范围。
这意味着行业趋向于大的,定义的工程——操作系统,底层结构等,小的研究组必须找小一些的事情去做。
三种可能的结果:
1.不开发,评论。(现象学,不是新东西)
2.不追求广度,追求深度。(微特殊化,而不是系统级工作。)
3.拿起一个存在的东西,扭曲它。
我相信这是对SOSP曲线主要的解释。
Unix
现在的新操作系统趋向于Unix的再实现。如果它们有一个异常的结构——有的的确是有——那就是第一步要构建Uinx模拟层。
如果因此产生的操作系统都是难以分辨的,操作系统研究怎么才是切入正题的呢?
在20世纪70年代末80年代初,有一种主张,认为Unix已经扼杀了操作系统的研究,因为没有人会再尝试其它的东西。那时候我并不相信。现在,我勉强地接受了那种认为它可能正确的观点(虽然有微软)。
它自己成功的一种坏处:可移植性好导致泛滥。那意味着结构并不重要,所以现在只有这一个。
Linux是热门的新事物……但它只不过是另一个Unix。
Linux——大学里的Microsoft Windows
神圣的三位一体:Linux,gcc和Netscape。
当然了,它仅仅是另一个传统。
这些已经成为偶像,不是因为他们是什么,而是因为他们不是什么:微软。
但是技术上他们不是热门的。微软已经在努力工作,而且我主张从很多(不是所有)角度来讲微软的绑定产品在技术上是较好的,他们还在改进。
Linux可能陷入了Macintosh的陷阱:沾沾自喜的孤立导致(接近)退化。
还有,系统研究对于改进这三位一体做的很少。
运作
运作是最主要的竞争,对于学术界,思想界,基金会,人事部门和学生来说(其他的是微软,大公司,众多的自由黑客,IETF机构)。
作为响应,政府出资的特殊合作研究被引向快速“得到可获利的东西”。
这曲解了优先级:
研究屈从于什么能在一年内赚更多的钱。(首次公开募股)
对于长期工作目光过于短浅。(这就牵扯到底层结构和衡量的问题。)
基金来源(政府,行业)感觉到同样的压力,所以产生一个恶性循环。
价值的公制化是错误的。
斯坦福大学现在鼓励学生去运作,因为成功的CEO们能给学校捐款。斯坦福大学的新董事长就是一个成功的计算机企业家。
祖母
祖母正在上网。这意味着行业正在设计面向普通人的系统和服务。
焦点放在了应用程序和设备上,而不在底层和结构上,它占据着系统研究的统治地位。
原因是巨大的市场化,结果是不兼容设备的一种增殖。你不能在软件上赚钱,只能在硬件上,所以设计一个放在适当的位置的骗局,而不是一个很有新意的主意。
可编程性——曾经计算机技术中的高见——已经开始倾向一边。
再说一遍,系统研究失败了。
要做的事情
运作过多地聚焦在短周期和尝试新事物的实际结果上了。大公司过多的聚焦在尝试新鲜事物的已存在的优先权上了。运作从研究中吸取能量。但是淘金热过后只剩下荒村;准备搬进去。
Fiona的故事:“你为什么使用Plan9?”
回去思考并且构造系统。狭隘是不对的;广度是对的:它是系统的本质。
要致力于系统怎么表现,工作,而不是怎么对比。集中精力于接口和结构,而不只是工程。
勇敢一些。尝试不同的东西;做实验。试着给出一个cool的demo。
投资主体:投资一些大胆的,特别的长期工程。大学,应该逐步探索让学生致力于长期工程的方法。
用观念来衡量成功,而不是论文和金钱。让行业“想要”你的作品。
要构建的东西
有许多有效的,有用的,有趣的东西去做。作为证据我提供一个小的例子。如果这个领域是呆滞的,它不是因为可能性的缺乏。
只有一个GUI被认真地尝试过,它的最好的创意上溯到20世纪70年代。(在某些方面,它变得越来越糟;今天,屏幕被混乱的小图片覆盖着)一定有其它的可能性。(Linux的界面和Windows一样差!)
有许多关于组成结构的对话,但只有一个真正的成功:Unix管道。它或许应该从各部分中构建交互的,分布式的应用程序。
未来将是分布式计算,但语言的一致性对定位那种可能性的影响非常小。
Web已经统管了系统如何表现和使用信息:模式被强迫为交互动作;用户必须去得到它。相反还是让我们回去,把数据给用户吧 。
系统管理员仍有一个很难的问题。乏味,一定是,但有足够的空间来做一个巨大的,甚至商业的杰作。
推断
这个世界已经决定让电脑成为什么样子。在某种程度上系统软件研究社团影响着这个决定,但是非常小,它已经终止了谈判。
是说这一点的时候了,我怀疑一个很棒的系统工程将被资助,而且如果是,将找不到做工作的主体。这种成功几率非常低,现在它们其实是零。
研究社团——大学,学生,行业,投资主体——必须改变它的特权。
社团必须去接受和发现非传统的观点。
社团必须把研究从市场资本化中分离出来。