【导读】:1991年,Linus Torvalds作为芬兰赫尔辛基大学的一名计算机学专业的学生,创造了Linux操作系统的原始核心。Linux迅速成长为一个全功能的操作系统,它能够运行在智能手机,服务器以及其它各种各样的小玩意儿上。在本次邮件采访中,Torvalds谈及了在过去25年间Linux的发展以及接下来25年它可能带给我们的影响。
  Stephen Cass:相比于25年之前你现在是个有相当多经验的程序员,你希望你年轻那会能够明白的一件事情是什么?
  Linus Torvalds:事实上,当年我并不知道我把自己陷入了什么鬼境地,而结果居然是大获成功的 Linux。倘若我早点明白这些,我将不会有勇气去这样自己编写操作系统。你需要笃定自己可以做到。我真的认为那是项目能够开始和成功的必要条件。没有对项目终规模加以界定的确帮了忙,但是对于它终的发展方向没有过多先入为主的概念而直接上手也同样很有帮助。
  实际上,相比于一开始很清楚我想怎么去完成它,缺乏对它发展方向的一个清晰的构想使得我可以更开放包容的去接纳外界的建议。我认为这种对外界声音的开放性使得对于其他人加入其中更加容易并且有趣的多。人们不必在意别人的观点,相反他们可以融入自己的看法。我想这激励了很多人。
  S.C.:在Linux的发展历程中,有没有让你现在感到后悔的早期技术决策呢?
  Linus:对于糟糕的技术决定这件事你总可以撤销它。是的,它也许会非常令人沮丧,明显在浪费时间和精力,但同时它也并非一无是处。因为一些原因你走错了方向,但意识到这些错误却会让你明白一些东西。我不是在说这是一件好事––显然好是每次都能做出正确的决定––但同时我并不特别担心做选择。与其长时间纠结于各种可选方案,我更倾向于先做出一个哪怕事后证明是错误的决定。
  在2001年前后,我们曾有过一段非常有名的艰难困境,是关于 Linux 虚拟内存子系统。那真是巨大的痛苦,关于何去何从我们有着激烈的分歧,另外在某些内存配置方面还有严重的问题。在本该是“稳定版”的阶段,大片的代码从系统里被整个删除了,而且人们还怨声载道。
  但是回头望去,它终挺过来了。那段时间如地狱般痛苦,如果没有在中途做这种大的改动那将好得多,但好在这不是灾难性的。
  S.C.:随着Linux的快速发展,在个人层面上是如何实现从单打独斗到合力而为之的转变的?
  Linus:对我而言的确有两个显著的转变:一个是在久远的1992年,那会我开始去采纳别的开发者提供的补丁,但我一般不会自己去重写它们。另一个是在那很久之后【自己搞定所有全部补丁】开始成为一大痛点,我不得不学着去真正信任众多的维护者。
  第一步相对来讲容易得多––由于大概六个月的Linux内核编程基本完全是自己的独行之旅,当人们开始发给我一些补丁,我真的很不习惯直接拿来用。于是我研究这些补丁来搞清开发者的意图,然后我试着自己去实现他们––有时很相似,有时则完全不同。
  但那很快无法维持了。在很短的时间里我开始足够信任一些人,相较于之前根据他们的想法自己重写,我开始直接应用他们的补丁。我还是会经常改动,经过这些年我变得非常善长阅读和编辑补丁,以至于我可以在睡觉的时候来做这些事。这种模式奏效了很长一段时间。
  但正由于“应用别人的补丁”这种模式奏效了很多年,而且我已经习惯了,所以改变起来痛苦得多。大概在2000年左右,内核经历了一个巨大的发展(某种意义上,Linux开始成为一个耀眼的商业球员),人们开始抱怨我的工作模式成为其发展的绊脚石,并且抱怨Linux没有伸缩性。但我们没有好的工具来处理这些版本管理。
  这些终促成了我们采用 BitKeepe r作为源代码维护工具。人们因为几年后的许可骚乱而记住 BitKeeper,但它很显然是胜任那份工作的,并且它让我明白(至少是在内核社区那部分)版本控制如何进行以及我们怎样才能用一个更加分布的开发模型来一起工作,而不是单纯的让我成为孤独的同步点。
  当然,让我真正的了解如何做到分布式的版本控制管理是源于2005年Git的出现。Git很显然在版本控制领域取得了巨大成功,同时它也让人们认识到了分布式版本管理的众多优点。内核在2000年左右经历的痛苦终成为了一个大的教训,毫无疑问这很痛苦。详情请阅读《Git 10 周年访谈:Linus 讲述背后故事》
  S.C.:还有其他项目,如同分布式版本管理这样让你百爪挠心吗?
  Linus:不,我真不希望还有这种事情。所有我的大项目都是从“可恶,没人来帮我做”这时开始的。事实上,我非常高兴有人替我解决问题而不需要我花费大量的精力来自己去做。我更愿意坐在沙滩上,啜几口带着小花伞的饮料,而不用非得自己去解决问题。
  好吧,我在撒谎。这样几天后我会感到倦怠。我真的非常高兴我拥有Linux,因为它依旧有趣并且能刺激我们的大脑。但同时开启新的项目着实是个让人很沮丧的尝试。
  S.C.:你为什么认为Linux从没在主流台式机上占据重要地位?
  Linus:我们仍在朝这个目标努力。我认为Chromebooks目前做得相当不错,尽管它是个相当有限的桌面环境,而非完整的传统Linux工作站模式。
  至于为什么台式机这块骨头这么难啃,有多方面的原因。其中一个很重要的原因是用户的惯性。台式机在计算机世界中非常独特,因为它不仅是私密的––如果你使用电脑工作,每天你都会和它亲密的接触––同时也很复杂,这也是其他运算环境所没有的。
  看看你的智能手机。这也是块相当亲密的计算技术,人们对其相当依赖(感谢Android,让Linux在这块做得很出色)。台式机在很多方面更加复杂,有很多历史遗留问题。这个市场很难打入。甚至于一个手机,人们也有一套自己习惯的应用和工作流程,大多数人不愿意更换操作系统––与使用机器自带系统的人相比,愿意安装别的操作系统的人少之又少。
  同时,我认为那是一个很重要的市场,即使从某种层面上讲一般意义上的台式机正在衰退,相较于更加专业而简单的多任务平台––智能手机,平板电脑以及Chromebooks都是这种例子,他们并不打算成为成熟的通用环境。
  S.C.:Linux什么地方让你惊讶?
  Linus:现在吗?不太多,因为我认为Linux已经成为新的硬件或服务原型设计的默认环境。如果你有些古怪专业的设备或者说你正在创建新的网络基础设施或其他任何东西,倘若你不用Linux,我将感到非常惊讶。
  但这些古怪的应用曾经让我感到吃惊,在当时我认为Linux还只不过是个工作站和服务器操作系统。在一些早期的Linux商业会议上,人们开始炫耀一些诸如气泵或者冰箱的东西,它们竟然跑Linux,这让我很惊讶。当第一台TiVo出现的时候,它跑Linux和你能回看现场直播这件事情同样有趣。
  S.C.:Linux当前面临的大挑战是什么?
  Linus:内核实际上做的很棒。人们开始担心事情变得过于复杂以至于我们难以去理解和修复漏洞。这种担心可以理解。但同时,我们中间有很多聪明人。事实上系统变得如此庞大和复杂,以及那么多人依赖这个系统已经督促我们做好了很多准备。让它变得更强大以及让人们接受一些倾略性的改变是很有挑战性,因此我不会称它为一个大乐园。但我认为内核开发进展得不错。许多其他的开源想,许多其他的开源项目都迫切想获得我们所掌握的资源。
  说来,我们在内核方面遇到的一个持续的挑战是应对各种各样的硬件。我们支持许多不同的硬件––几乎比其他任何操作系统都要多,但是每天都有新的硬件出现。特别是嵌入式领域的硬件平台开发时间通常都很短(在中国用一两个月时间能开发一个新的手机平台)并且支持那种环境非常困难。好消息是许多硬件生产商都在帮忙。这在以往是没有的。
  S.C.:当前哪些技术潮流让你感兴趣?有让你感到沮丧的吗?
  Linus:我一直都对新的核心硬件感兴趣,特别是CPU。这也是为什么一开始我开始做自己的操作系统并且看到新的平台依旧让我兴奋的原因。当然,大多数时间都是在现有硬件上一些很微小的调整(我很确信这是技术发展该有的样子),但它依旧是让我乐于去追踪的事情。
  从更大的层面上讲,我自己并没有涉足每个领域,但看到人工智能如何终变为现实是件很有趣的事。人工智能曾经是那种”离我们还有20年”,而且始终是“20年后才能实现”的事情。我对人们过去那种基于规则的模式很不以为然。
  现在,终,神经网络开始真正登上属于他们自己的舞台。我发现这很有意思。它并不是我涉足的领域,也不是我预见到的东西,但它依旧令人感到兴奋。不像疯狂的LISP和Prolog语言,我们知道递归神经网络工作机理源于自然。我对于人工智能终开始出现并不感到沮丧,如同一些人一样,一点也不。
  S.C.:你认为Linux在它50周年的时候是否还能积极发展,对于操作系统将来的样子你有什么设想?
  Linus:我不是一个特别有远见的人。我是一个非常乏味的工程师,我试着放眼于脚下。我会让别人来预测我们5年,10年,25年之后的境况。我觉得,只要我们专注于所有小的日常细节并尽我们所能很好了。
  如果世界有大的变革,并且25年后一切变得完全不同,那更加有趣了。但如今操作系统的很多基本的东西和60年代没什么区别,那会人们开始有真正的操作系统,那远早于Linux。我怀疑,相比于未来,过去的50年我们见证了计算机发展的更多的改变。硬件开发人员同软件开发人员一样已经清楚了什么奏效什么不奏效。
  当然,神经网络等等将会改变世界。但他们的特点在于不需要你编程,他们自学习,他们是模糊的。我很确信出于这个原因他们不会取代传统的计算机模型。人们将会想要更智能的机器,但人们也想要能够准确按照他们要求做事的机器。所以我们当前的所谓过时的计算模式不会消失,只会增强。