今年,Linux 20岁了。在Linux开始发布时,Linus Torvalds为何选择非GPL版权而不是GPL许可?让我们一起来看看Linus Torvalds的回答。本文是LinuxFr对Linux创始人Linus Torvalds的采访。以下是原文。
LinuxFR:截至目前,你已经从事了大约20年的Linux开发,我们知道这是一个辛苦的工作,不知道你现在是否还和当初一样感觉很有趣,很兴奋?
Linus Torvalds:哦,当然!我仍然觉得这是一件有趣的事情,部分原因恰恰是因为我为它做了20年的工作。我不想将其称为一个“辛苦”的工作,它仍然充满挑战和趣味,但我认为我已经轻车熟路了。
LinuxFR:你为什么选择将Linux内核最初的非GPL版权转为GPL许可?是出于道德还是现实需要?
Linus Torvalds:是为了现实需要。我最初选择的许可考虑到了道德方面的原因,但它显得过分严格,知名度也不高。转向GPL解决了原许可模式存在的问题,越来越多的人拥护,并主动为我宣传。
LinuxFR:我知道你认为你自己是一个非常务实的人,而不是一个预言家,但不知你是否赞同GPL许可协议中关于道德部分的内容?
Linus Torvalds:我用两个不同的方法来回答你这个问题,并说说我为什么要用两种方法。
首先,我个人非常鄙视那些将道德和GPL相提并论的人。我认为这完全是胡说,为什么?因为道德是人们的隐私,无论何时,你在一份协议中使用道德来约束其他人应该做什么事情,你首先就是不道德的,你只是一个道貌岸然的伪君子。
但第二个答案是,我个人觉得GPL(v2)和我的想法最吻合。我的确很喜欢编程,我希望将我的经验和别人分享,我认为只要你能想到就一定能做到,但要提高的确需要前人的经验,这对开发人员来说是一条捷径。
因此,我个人认为GPL v2最符合我的口味,就好像生活找对了方法一样美好,但我认为正确的方法不应该只有一个,我也从事一些商业编程,我也喜欢分享,我觉得这是平等的(嘘,他们是付了钱的)。
我认为GPL v2是一个伟大的许可协议,我出于个人原因而使用它,我想很多人也和我有同样的看法吧。但我真的想指出的是,许可协议和道德本身是没有干系的,好比很多人认为BSD许可协议具有更多的自由,所以它是一个更好的许可协议;但也有一部分人更喜欢使用保留所有权利的许可。当然每个人都有自己的选择权,我没有丝毫贬低他们的意思。
但是,企图将任何特殊的许可当做道德选择真的让我愤怒。
LinuxFR:为什么桌面如此特殊,为什么比其它市场艰难?
Linus Torvalds:因为它更加有趣。在这个市场中,人们可以做许多不同的事情。的确,服务器几乎没有做不了的事情,它可能有充足的CPU计算资源,快速的网络和大量的IO,但它一直做着相同的事情,而且是有限制的:它运行一个数据库,一个邮件或Web服务器,各种分析等。对企业来说,它可能是重要的,但它的工作负载不会经常发生变化,也没有哪个个体会喜欢它。
相反,你的桌面是你每天都要看到的,即使有些东西你不需要,你也不会对它们产生反感,使用时间长了,你可能还会产生一种依赖。
桌面做的事情更多,你在它上面玩游戏,编写文档,开发软件,对某些人来说,只有一个浏览器就足够了,正是要应付这么多的任务,桌面比服务器更复杂。有趣的是,智能手机也慢慢开始出现桌面的复杂性。
LinuxFR:为什么Linux桌面未被主流用户采用?内核社区能改善这个情况吗?还是这本身属于用户空间的问题?
Linus Torvalds:我认为在内核方面没有太多的解决办法,但我们会继续想办法改进。我们不是没有主流用户 – Android用户就是Linux主流用户,问题是桌面是一个困难的市场,有巨大的网络效应,大多数人都不希望改变他们的环境,如果必须转移到新环境,他们也希望获得帮助和支持,这里的“支持”不一定非得是商业支持,只要有一个经验丰富的人在你身边给你提供一些建议即可。但这不全是技术问题,更多的是社会问题。
LinuxFR:下面这个问题可能有点唐突,你现在仍然完全了解Linux内核的所有部分吗?或者说你真正信任维护者吗?例如,就复杂的路径名查找补丁,你是如何在Nick Piggin和Dave Chinner贡献的补丁做出选择的?你是否接受了A1 Viro的一些建议,还是你一个人做的决定?
Linus Torvalds:没什么,我肯定不能了解内核的所有部分,但我比大多数内核开发人员了解要多一些,不过有些地方我几乎完全依赖于维护者,因为我对某些子系统几乎一无所知,当然每个人都有自己感兴趣的领域。
例如我非常熟悉VFS和VM层,因此在这些方面我可以自己做出决定,但这并不意味着我不希望获得别人的帮助。
对于我不熟悉的领域,我一般不会做独裁决定,但我会敦促维护者认真思考问题,并给予一定的指导性意见,协助他们做出正确的决定。
顺便说一下,“正确的决定”不一定需要正确的表达,有时你仅仅需要做一个决定,并不一定要明确“正确”答案是什么,有时说“我们不知道”可能更好,毕竟不能靠拍脑袋做决定,但有时我们必须做出技术选择,这是一个痛苦的过程,完全可能做出错误的技术选择,但有什么办法呢,在没有任何可供借鉴的经验之前,我们只有通过试错的方法来找出正确的技术。
幸好这种情况并不多见,开发期间大多数时候不需要做出艰难的选择,前进的方向都非常明了。