6 月 26 日星期一,Linus Torvalds 首次来到中国,在北京举办的 LinuxCon + ContainerCon + CloudOpen 研讨会上开讲。在 2 千人面前,Torvalds 与 VMware 的开放源代码主持者 Dirk Hohndel 进行了炉边谈话(fireside chats),分享他如何维持开发动能、今日的 Linux 仍带给他惊喜,以及建议新手该如何开始参与开放源码专案。以下是他们谈话中的一些精彩摘要。
Linux 开发有什么令人惊喜之处?
我觉得最有趣的,是我认为已经稳定的程式码,还有人会继续改良!其实有些东西我们已经很多年没摸了,然后新来的人改善了它们,或者针对我以为没人在用的部分提出错误回报。虽然现在我们有新的硬件,也在开发新功能,但是 25 年后,仍然有人们关心久远甚至是非常基本的源代码,而且持续改进。
如何维持自己的动力?
我真的很喜欢自己在做的事情。我喜欢每天醒来以后,工作内容在技术上是有趣和富有挑战性的,而也不要给自己太大压力,这样就可以做久一点;我觉得我真的在改变一些事情,这些事情不只对我有用,对其他人也很有意义。
我偶尔会在工作期间休息,例如说,我开始开发 Git 的 2 或 3 周后就休息了一阵子,但每次我休息一段时间后,就会感到无聊。当我开车到处逛一个星期时,我却是期待回去写程式,我从来不觉得自己需要休更久。
未来 Linux 开发的领导方式
我们的作业流程不仅持续了 25 年,而且维护团队非常强大。我们抱怨过没有足够的维护者──这是真的,我们“只有”数十名顶级维护者在做每天的合并(merge)工作。对于一个开源专案来说,这是很强壮的团队。随着这些维护者变得越来越老以及愈来越胖之际,有新的人加入进来,这些新人会需要几年时间从新开发者成长成顶级维护者,所以我不觉得我们一定要担心这个作业流程和 Linux 的下一个 20 年。
Linux 会被取代吗?
也许将会有积极的新专案出现,而且做得比我们的更好,但我一点也不担心。Linux 有很多非常成功的分支版本(fork),然而人们不会把它们真的当成分裂出去,反而大家是和谐地并存着。如果有人说“这样改写程式,可以大幅改善核心(kernel,Linux 其实是操作系统的核心 )”,我认为那就“请做看看,证明你的论点”(Do it, prove yourself)。也许我可能认为这是一个坏主意,但你可以证明我错了。
关于 Git 的想法
我对 Git 会被广泛传开来运用感到非常惊讶。我很开心,因为它验证了我做分散式开发的概念。在发表 Git 的当年,其实已经有很多不同的版本管控系统了,再推出一个新的版本管控系统,不仅困难且很难介绍给大家。所以我预计主要只会局限用于核心的开发,毕竟 Git 是针对我们需求所做的。
在一开始的 3 到 4 年,很多人抱怨 Git 跟传统版本管控系统差异太大了,很难用;但是大约 5 年前,事情发生了变化,开始有够多的专案和开发者使用了 Git ,它已经变成没什么特殊的普通东西。就是因为大家习惯使用了,他们开始享用这种新的开发模式和使用 Git 的安全感,这意味着不会发生有程式码破损或遗失的状况。
注:传统的版本管控系统都是以伺服端为核心,源代码发展树很难分支,当服务器用久硬盘坏轨时就会影响到专案开发;然而 Git 是分散式的,每一个用户端其实都是一个小小伺服端,用户还可以为了不同的需要,自己做很多分支,或者合并进别人改良。
在某些方面来说,Git 比 Linux 更为人所知。 Linux 经常隐藏起来,例如在你的 Android 手机底层就是一个 Linux ,但是你常常没有意识到它存在;而使用 Git 时,你会知道自己正在使用 Git 。
Linux 分支
当初我之所以会坐下来写 Git,一个主要的理念是你应该要能轻易地作出自己的分支版本,然后去尝试一些事情。有一个友善的分支产生机制很重要──你可以尽情对核心做一些有趣的改进,来证明我论点错了。在这种情况下,你回报说实际上改进了核心,对我来说这没有什么不好的感觉,只要源代码确实比较好,那我就会采用你改进过的部分,合并回 Linux 源代码里。这就是为什么应该要鼓励分支,而你也想要把好的分支源码拿回来用。
如何成为一名开源软件开发者
对我来说,我一直有自身动机,也知道自己想做什么。从来没有人跟我说我应该读什么书、做什么事,不过对于其他人而言,我不知道我的例子是否值得仿效。现在大概有一卡车各式各样开源专案,如果你是一个刚起步的程序员,那就找到你感兴趣而且可以追好几个星期的东西吧。了解源代码很好,你可以成为一部分程式码的专家,但不需要做到穷究整个专案的所有源代码,因为没有人是整个专案的专家,但你可以好好地专注某个区域就好。
如果你可以成为社群的一分子,并提出修补档(patch),那不仅跟编写程式相关,更是关于开放源码圈的社群交际。身为一名程序员跟他人产生连结与提升自己程序员的能耐,你基本上是在展现“我做了这些改进,我有能力在社群或工作中走得长远”。你将花费相当的时间来学习一个专案,但它会带给你巨大的成长空间──不仅仅只是在职涯,而是你在人生中参与过了不起的专案。
听完 Linus Torvalds 的“开示”,有没有什么启发呢?虽然施比受有福,但也要不贪多,一点一滴来进行,细水长流才能维持永续开发动能,而不是一瞬间就燃烧完猛发的热情。当然最重要的,就是要找到创作东西的乐趣啰(for fun)。
- Linus Torvalds Explains How Linux Still Surprises and Motivates Him
(首图来源:Linux)