@lijiansheng
2016-05-18T20:32:38.000000Z
字数 4857
阅读 1392
-- Linux 开源操作系统的创始人谈论 Linux 的过去、现在和未来
InfoQ采访
开源
1991年, Linux 在一个大学生的手中诞生了,经过了2个多世纪的发展,今天的 Linux 已经“吞噬”这个世界,从智能手机、到服务器、再到嵌入式等等无处不在。在 Linux 诞生25周年之际,Linux创始人 Linus Torvalds 接受了来自 IEEE 的 Stephen Cass 采访,谈谈 Linux 的过去、现在和未来。
Linus Torvalds 在1991年创建了最初的 Linux 操作系统的核心,当时他还是一名芬兰赫尔辛基大学的在读计算机科学的学生。现在的 Linux 已经成长为一个全功能的操作系统,运行在从智能手机、到服务器、再到嵌入式等等无处不在。此次的邮件采访,Torvalds 总结了 Linux 在过去的25年的发展,并对接下来对25年进行了展望。
在采访的开始,Cass 希望从 Linus 处问得,一个创始人对于过去25年的一个回顾!第一个问题,类似于一个成功者回顾当年的决策:
Linus Torvalds 仍然是一如既往的坦诚和幽默:
实际的情况是,我并不知道我为 Linux 设置了什么以至于其是如此的成功,如果我当初知道它今天会发展成这样,我就可能不会去下定决心去写一个操作系统:有时候人就需要那么天真的去想一些事情的。我真的认为这是一个项目启动和成功的必要条件。缺乏对有助于项目的最终范围的理解,所以也就没有过多的先入为主的概念去做过度的设计。
事实上,我是真的不知道它最终是什么样子,这也就意味着,我对外界更加的开放,希望吸收建议和影响要多过于我自己有一些想法去独自完成它。对外界的开放性,我认为这让 Linux 更加有趣、也容易让他人加入进来,人们毋需去确认他人的意愿,而是根据自己的意愿去做该做的事情。我认为这样激励了很多参与项目的人。
接下来,Cass 向Linus 提出了开发过程中的一些关于错误决策的处理过程。
Linus Torvalds:
糟糕的技术决策所做出来的东西总是会被撤销的。是的,那样是令人感到沮丧,而且明显是浪费人的时间与精力。但是同时往后看的话,这也不算是一种浪费:总有一些原因让我们走错了路,但是意识到它是错的话,就会从中学到东西。我的意思并不是说这是好的一面--显而易见的是每次都能做出正确的决定当然更好--所以我并不担心作出选择。我宁愿去在短时间内可证明是错误的决定,也不要去长时间的去纠缠在一个可能的替代方案上。
回到2001年或更早,我们曾经在 Linux 虚拟内存子系统遭遇过著名的糟糕情形。那时相当的纠结,关于未来的方向充满了紧张的分歧,而且我们在内存配置方面存在巨大的问题。系统的 Big swatches 在期望的“稳定”期间被完全的抛弃,而且人们都很低沉。
但是现在回看起来,到最后都得到了应有的解决。在当时确实是炼狱般的历经苦痛,这在开发当中要经历重大变化时,只要不是灾难性的,一切都好。
Cass 接着问到,在 Linux 的快速发展过程,Linus 是如何从自己一个人开发,继而转变为组织者,或者说是以“大教堂”的方式开发的。
Linus Torvalds 讲述了 Linux 重要的几个决定,以及版本控制在其中所起的作用:
对我来说有两个明显的变化:其中之一是在早期(1992年),那时我慢慢的学会将其他开发者的补丁打上去而不是自己去重写;另外一个就是后来开始变得越来越枯燥和乏味(我自己去打所有的补丁),从那时起我才开始真正的去学习信任其他的维护者们。
第一种转变还是相对容易一些的,是因为大致上讲 Linux 内核开发的前六个月基本上都是我一个人在搞,当人们慢慢的开始发给我一些补丁的时候,我一开始不是直接就接受它们的,我会查看补丁是怎么回事,作者的目的是什么,然后我会自己开始动手去写--有时候比较相似,有时候是完全不同的做法。
但是这种做法很快就被证明是行不通的,所以也没有多长时间我就开始学会了去给这些开发者们足够的信任而不是自己再去实现一遍他们的想法,我需要做的就是接受他们的补丁,我仍然会在最终更改一些东西,过了一年多后,我已经对读和编辑补丁的工作非常的熟练了,而且个人以为做的蛮好,就以这样的方式工作了很多年。
但是正是因为“接受其他人的补丁”的模式多年以来起了很好的作用,我已经非常的习惯这样的模式了,所以很难作出改变。在2000年左右,Linux
内核的开发经历了大爆发(正是那个时间点 Linux 开始进入商业用途)。人们开始抱怨我的工作流成为了整个开发的障碍,并总结了“Linus 短板”。但是那时我们没有很好的工具来做源代码管理。这一切最终导致了采用的 BitKeeper 作为源代码维护工具。人们记忆中的 BitKeeper 的许可证问题是后来的事情了,但是它的确是当时颇为合适的工具,而且它教会了我(至少是内核社区的一份子)关于如何让源代码管理有效工作,以及如何让分布式的开发模式一起协同工作,而不是让我自己成为了唯一的同步点。
当然,我所学习到的在关于分布式源代码控制管理如何做的东西,成就了2005年Git的诞生。而 Git 在今天已经被证明是一个在源代码控制中非常成功的产品,但是它结合了很多其它的分布式源代码控制的优点。内核在2000年左右所经历的无疑是不堪回首的一幕,但是它最终还是学习到了很重要的一课,但是确实是历经磨难。
Cass 这时问了一个相对轻松的问题,(他是怎么判断出 Linus 在上一个问题,回答的是如此之长?)更加像调侃,他竟然问 Linus 除了 Linux 和 Git 之外是否还有兴趣开发?
Linus Torvalds 仍然保持他独特的幽默感,但骨子里仍然是个工程师:
没有,而且我也不希望真的有。我的所有的大项目都来自于“他大爷的,没有人为了我而开发”的时刻,当人们为我解决了一些问题的时候,我是发自内心的高兴!所以我是不会自己去花精力去做的,相比于我自己去解决问题,我宁愿坐在沙滩上,打着遮阳伞,喝着喜爱的、无限供应的饮料。
好吧,我在撒谎!那样过不了几天我就会觉得无聊。我真的为我开发了 Linux 而庆幸,因为它依然是很有趣而且充满智力的挑战。但是同时也承认启动一个新项目是困难重重的需要付出努力!
众所周知,Linux 在桌面领域显然相比移动、服务器等要逊色太多,Cass 此问题较为犀利。直接问 Linus 为什么会这样?
Linus Torvalds 并未放弃希望:
我们仍然在努力,好不好!而且我认为Chromebook做的非常的棒,尽管它是一个完全限制的环境,而不是一个完整的 Linux 工作站。
至于为什么桌面系统是如此的一个难啃的骨头--是有很多原因的,其中一个较大的就是很简单的用户惯性问题。桌面系统在计算机世界算是独特的了,它得具有个性化的特定--用户每天都得和它做较密切的交互--在其它许多方面都不能太过于复杂。
请看下你的智能手机,这也是一种和用户密切互动的计算机技术,而且人们会依赖于它(作为 Linux 的 Android做的非常的成功)。桌面系统在许多方面显得过于复杂,而且遗留了很多没用的包袱,所以很难切入市场,甚至比手机更甚的是,人们是真的不会去随意更换自己用得顺手的应用程序以及工作流的,所以多数人是不会切换自己的操作系统的,安装了不同的操作系统的人数要比为机器预装了操作系统的人少太多了。
同时,我也认为这是一个非常重要的市场,即使是在某种程度上讲,整个“通用桌面”的市场正在消退,正在往更加专业的方向发展,因此也变得更加的简单,智能手机、平板电脑、以及 Chrome 笔记本等均是并不需要完整的通用桌面环境的具体的实例。
Linux 是如此的成功,Linus 都会被一些匪夷所思的用处给惊住!
Linus Torvalds:
是最近一段日子吗?也不是的了。因为我认为 Linux 已经几乎成为一些新的硬件原型机和服务的默认环境了。如果你拥有一些奇怪的、特殊的、硬件或者是你创建了一些新的互联网基础设施或者其它什么东东,如果你不是使用的 Linux 我才会感到惊讶的好不好!
但是,一些“古怪的”用途还是惊到我了。回想起来,当年我还是认为 Linux 在工作站和服务器操作系统的时候,参加早期的商业 Linux 技术研讨会的时候,看到人们展示了一些诸如加油站、电冰箱运行的是 Linux-当时整个人都不好了。当第一台TiVo发行后,事实上其所运行的 Linux 能够让“在线播放的电视回放”,那真是太酷了!
任何技术都有一个周期,更何况是具体的操作系统产品,目前面临最大的问题是什么?
Linus Torvalds:
目前内核的工作做的非常的好!当然,人们还是在担心理解和修复漏洞方面变的越来越复杂。对于这样的担忧我表示非常的理解。但是同时,我们还有很多聪明的人以及他们所做的创新。事实上系统已经是非常的巨大并且异常的复杂,所以很多依赖它的人迫使我们去制定了很多的流程。内核变得越大我们的工作就越具有挑战性,也得接受一些变化,所以我现在不能称之为这是一个令人快乐的好地方,我只能说内核的开发正在进行中。很多的其他的开源项目都会将我们现在所拥有的资源消耗掉。
还有一个老生常谈的问题,那就是内核对于硬件支持的挑战,我们支持大量不同的硬件-比任何的其它操作系统所支持的都多。但是,新的硬件每天都在生产,尤其是嵌入式领域的硬件平台开发的时间周期非常的短(你可以看下你自己的周边,在中国一到两个月就会创建一个全新的手机平台),在如此的一种环境中让他们协同工作确实是非常的具有挑战性。不过好的消息是大量的硬件厂商开始做这方面的工作了,所以也不必过分担心。
Cass 在最后表现的显然不是很了解 Linus,在问 Linus 未来的趋势之类的话题。
Linus Torvalds:
一直以来我都对于新的核心硬件保持着浓厚的兴趣,尤其是 CPU,而这也是我当年立志要写一个操作系统的“初心”。而且我见到新的平台时依然会兴奋不已。当然,在大多数的时候它们都是在现有的硬件上作的一些小的调整(而且我深信这也是技术之所以会发展的必然途径),但是我仍然会对它们保持跟进。
在大的未来设想中,虽然这个并非时我的专长,但是我看到人工智能有所进展时还是蛮有意思的。人工智能是二十几年前非常流行的,但是我仍然对人们所做的基于规则的模式并不看好。
现在,神经网络终于开始发挥出自己应该有的实力了,我发现这个比较有意思,它尽管不是我擅长的领域,而且我对它的未来毫无概念,但是这依然无法阻挡我对它的兴奋之情,而且不像疯狂的 LISP 和 Prolog 语言的方法,近期的神经网络我们知道是比较贴近自然的。而且,即使是有一天人工智能真的成功了,我也一点也不会感到沮丧的,就像某些人。
让 Linus 预测下未来?
Linus Torvalds 仍然是一名工程师的架势:
我并非是一个空想家,我是一名颇为单调的工程师,并且是脚踏实地的一步一个脚印的走的那种。我会让其他人去做预测,即我们在5年、10年、25年能做什么-我认为我们能够做好,尽可能的做好日常的每个细节,并尝试做到我们可以做到的最好的效果。
若是这个世界发生了非常大的变化的话,一定是蛮有意思的一件事,不过可以确定接下来的25年和现在必定有所不同。但是对于操作系统来说有一些基本的东西仍然和今天是一样的,我们可以回顾一下上世纪60年代的操作系统技术,对于 Linux 也是蛮久远的事情了,那时候人们就开始做真正意义上的操作系统了。我们已经在过去的50多年见证了计算机是如何发展的,我们也深信未来也会有很多的变化。比如:硬件人员,会像软件开发人员一样,会学会什么是可行的,而什么又是不可行的。
当然,诸如神经网络会改变这个世界,但是此处的部分观点是我们毋需为其“编程”,它们会学习,它们也会困惑。我敢打赌它们并不能取代传统的计算模型,因为人们需要聪明的机器人,但是人们是不会想要不听他们指令的机器人的。所以我们目前的,将来称之为“过时”的计算模式不会消失的,一定会得到增强。
Linus 还是哪位 Linus,务实、乐观、幽默、工程师思维、没有骄傲、依然淡定!