翻译:Linus眼中的世界

Posted: 二月 3rd, 2008 | Author: | Filed under: 文章 | Tags: , , , , | 2 Comments »

原文:The world according to Linus,同时发表于译言的译文

他不用手机,并为此感到骄傲。而且,他认为虚拟化言过其实了。来看看我们从Linux大师Linus Torvalds那里还“八”到了什么别的东西。

目前内核发布中遇到的最困难的事情是什么?

人们总是为写新代码、加入新特性等诸如此类的事情而兴奋。我们的做法是,有两个星期时间作为合并窗口期,所有的新代码都在这个时期内加入。在这样的 两星期中,每个人都很开心,因为你在做的事情很有意思,你把新鲜出炉的代码加进去并为此而自豪。当这两个星期过去之后,你本应确信所有的编程错误 (bug)都被清除掉了,而我们会收到来自于真正使用这些新特性的用户的报告,这时激励程度就会降低,因为和写代码比起来,调试错误(debug)一点也 不好玩。

因此,最大的困难在于让大家在下一个合并窗口期之前不再写新代码(通常合并窗口期之间的间隔是两个月)。大家确实需要集中精力跟进解决上个窗口期之 后来自用户的每一个错误报告而不是为下一个窗口期写新代码,而这是最困难的部分。每个人都知道这确实很重要,但同时这件事确实不如写新代码那样激动人心。 我认为这就是我们在内核开发方面最大的社会问题。

你在开发什么新特性,或者目前什么让你感兴趣?

过去这几年里我真正做的事情是沟通。我最终合并其他人写的代码。实际上我自己很少写代码,除了有关内核的一些工具。我为我们的源码控制管理工具写代 码,用来追踪每个人都做了什么。每个递交进来的补丁都被按正确次序单独跟踪,代码来自不同的人,合并在一起。我会把代码写到内核自身里,尽管所有的代码都 是别人提供的。相比于开发者,我更多地是一个技术领袖,在大约最近的5年里都是如此。

你对于各种Linux发行版有什么看法?

人们总是说它们有多不一样,但归根结底它们用的都是几乎一样的内核,所以在我看来它们之间的区别实在很小。过去我们的开发计划是用两年时间开发内 核,然后做一个大的发布,就如微软的做法,不过他们用5年时间,而不是(像现在这样)每两个月发布一次。那么做确实很痛苦,因为当时所有的发行版都加入了 自己的东西,不可能等两年到两年半的时间后再赶上来,在当时这是一个大问题。现在我们与发行版之间根本没有任何问题,因为我们改变了发行政策,所以发行版 都更容易跟上新的特性,而不需要开发自己的补丁。所以,和大多数其他的开源项目比起来,我觉得不同发行版并没有太多问题。

你对KDE 4 怎么看?

我自己还没用过。我是KDE的用户,但我觉得不需要赶时髦。我过去也会发送错误报告之类,但我确实没有时间去升级。我想我可能会等到 KDE 4.1左右,等一些初步的问题都被解决掉。

你在手机上用Linux吗?

我根本没有手机!我讨厌电话,因为我是一个想全神贯注工作的人,如果有人给我打电话会完全破坏掉我的注意力。我讨厌电话,因为它们只会干扰你,而手 机更讨厌因为它一直跟着你,所以我根本不要手机。我的工作室里有一台早期的Linux手机,因为我是免费得到的,但它是关着的。我所有的电脑上都有 Linux,但电话上没有。

你认为什么时候会有第一批来自OLPC项目的内核补丁?

如果我们还没有见到我才奇怪呢。他们做的一件大事是电源管理,因为他们做到在没有程序运行的时候关闭了CPU却让屏幕还亮着。这是不久前已经提交进 来的。我们对时间的看法更为动态了,我们能在更长的时间里避免时钟中断的发生。我想OLPC已经参与了,不管那些开发者是不是把代码直接发给了我。

你对虚拟化不感兴趣,为什么?

我想它有点言过其实了,虚拟化不过是那些时髦词汇中的一个。这么说的部分理由是,对虚拟化感兴趣的人会有三种原因。一是桌面应用,你想用虚拟器运行 另一种操作系统,例如你运行VMWare来在Linux机器上运行Windows。我个人对此一点兴趣都没有,为啥我非得在Linux机器上运行 Windows?

第二个原因是很多商务人士想要虚拟化环境来更好地利用他们的电脑。他们有台很强劲的机器,但他们想运行很多不同的东西,而且想让它们保持隔离,所以 他们用虚拟器来模拟独立的机器。这对IT人士有好处,能够更好地管理,因为你能把一台大机器当成一些小部件来管理,而这也不是我要做的。

第三个原因是运行过时的操作系统,或者同一个操作系统的旧版本,因为有些程序非得这么运行。但是这些原因都不是我想做的事情,所以我个人对虚拟化不是很感兴趣,它跟我做的事情无关。

我对虚拟化完全不感兴趣并不表示我们不支持它,我们已经有很多Linux支持的虚拟化模式,并不需要我感兴趣才会让事情发生。

桌面Linux系统正在欠富裕国家的教育用途上起飞,你为什么这么想?

Linux的一个好处,它用在商业环境中的原因,我想是因为它非常灵活。不光是便宜,你还能把它调整到适合特定的用途,这是它被用上的原因。在开发 者的世界里有两个原因,首先,很明显,价格总是一个大问题,特别当你想逐步建立起你的IT系统的时候。当你不知道它如何运作而且也没法修改的时候,买一个 预先做好的系统是毫无用处的。当你对一个完全设置好的系统只有很基本的了解而且你根本无法看出它是如何运行时,你完全无法从零开始获得提升,你无法从中学 到东西。你可以学着去用它,但你没法学着去再创造一个类似的东西。

所以我觉得OLPC做得很好的一件事是他们提供的很多应用程序都是用非常易用的(编程)语言写出来的。那可能不是最高效的语言,也不一定是我会用到 的语言,但Python确实很容易学会,它非常地直截了当。我想他们有一个特别的按钮,当你在用这些程序时,你只要按一下你就能看到源代码,所以你能彻底 了解程序是怎么工作的。当你把事情搞乱时,你可以说:“我想回到原始的内容,因为我的改编行不通”。但我想假如你真的不光想仅仅提供电脑给人们使用,而是 还希望把电脑技术传授给他们,不只是会用文字处理器而且了解到它如何工作,那么Linux和其他开源项目就是当仁不让的了。因为如果没有源代码的话,用户 只能面对一个黑盒。

不要误解我,价钱是很重要,但我认为以学习目的获得源代码是非常重要的。坦白地说,即使大多数人不会去看源码,大多数人仅仅把电脑当成工具来用,但 只要有一小部分人去看源码并试着去理解它,你就会获得一种计算机科学上哪怕很小的核心能力,而无论你在哪里,哪怕是在撒哈拉以南非洲。

这次澳洲Linux大会(LCA)没有dunk-tank你会不会很失望?

不,不。Dunk-tank是那种试过一次就够了的事情。(译注:dunk-tank是一个人坐在水池上方的一张挑空座椅上,旁边立一个靶子,只要有人击中靶子,联动装置就会弄翻座椅,让人掉入水中。详见dunk-tank,附送Linus亲身经历。)

你会不会接受在LCA上做主题发言的邀请?

大概有十年我没发言了。过去我发了很多言,当时Linux还很新,没有很多人知道,我觉得应该为它做宣传。但我从来就不擅长言辞,我总是讨厌发言, 也不喜欢站在一大片听众面前。事先我承受了压力,后来Linux足够强大,有愿意发言和更擅长发言的人来做,我就再不发言了。我来LCA是出席会议的,最 多只是和人们交谈一下。

你为什么会一直来参加LCA呢?

LCA是一个很好的会议,非常轻松,非常注重技术。你看不到西装革履,没有营销的废话,它就是关于技术的,非常有意思。它的氛围很好,而且坦白说这里是夏天!我家Portland那边又是雨又是雪,冷得很,所以来澳洲过一个星期夏天是很好的休息。

你预计Linux世界下一个让大家吵成一团并且都想得到你支持的大争执会是什么?

如果我能早知道就不会有大问题!看起来每隔几年就会有事爆发。其实一直有事不时冒出来,不过通常是些小事。总会有一些更大的事情,常常是酝酿了很 久,一旦发生的机会到了,就像开了闸一样,吵得不可开交。人们受到挫折而吵翻天的事大概每个公司都会发生,只不过开源项目发生的事情人人都看得到。

我也不是彬彬有礼的,我其实喜欢和人争论,内核开发社区里面也有很多嘴闲不住的人。有些人什么也不做就是喜欢争执,这种事我们是不鼓励的,所以你会看到有些事爆发了一会儿就平息了。有时候,事情的结果会让我们改变做法。

当社区成长时,几年前有效的做法可能就行不通了。这种事持续发生,拖了我们的后腿,让大家感到挫折,要人们改变已经习惯了的做法会很痛苦。终于有一 刻争吵爆发了,每个人都讨厌正在发生的事情,但没人知道怎么才能把事做对。这种“再也不能这么做下去了”的大讨论发生过三、四次。这种讨论一点也不讲礼 貌,往往像是“这家伙是个浑蛋,我们应该把他踢到一边去,根本就不灵”。

有时候也不会真的发生什么事,我们也有过“既然这么做不行就换个做法嘛”的事例,所以争论经常是有成果的,也是释放怨气,暴露一些暗地酝酿的问题的机会。有时候只要把问题摊开来就行了,什么都不用改变,让大家有地方撒气就是了。

你觉得Linux的下一件大事会是什么?

我觉得不会是单一的事情。有件事很有意思,这么多不同的人和公司,他们都有自己的计划。例如在移动应用世界(它也不是单一的领域了),有手机公司、 嵌入式系统、把Linux用于嵌入式音乐(embedded music)的人、音乐和其他媒体的无线发布点,他们都有自以为最重要的事情,对他们来说这是千真万确的,他们会有一间或小或大的公司在向一个方向进军。

什么事情激励你为Linux工作?

过去15年里,Linux做到了我想它做的每件事。很早以前我的激励来自于外部,来自于其他人发现的问题。我发现不了问题,我的使用模式实际上相当 简单,而且如今我也尽量集中于同样的开发模式。所以,我真的是被其他人遇到的问题所激励,他们有时也会让我觉得“这些人真是疯了”,但有时这些疯狂的人也 会遇到最有趣的难题。

我个人总是对桌面应用感兴趣,因为我总是把系统当作工作站。而它的桌面功能是很有限的,因为对于很多用户关心的事情我并不关心,所以个人来说,我会 对与我的使用体验更相近的其他桌面用户发现的问题更感兴趣。但同时,一些技术上更有意思的特殊问题来自于嵌入式环境。他们来自于面对很严格要求的客户,因 为他们专注于一件事,而且通常是在一个很小的机器上做,他们需要便宜的机器这样可以卖出许许多多。所以桌面用户要好过得多,因为他们的机器其实很好很强 大,但真正有趣的技术挑战有时是来自于移动用户。尽管他们经常抱怨的是用户界面而不是内核。


文泉驿正黑体

Posted: 九月 18th, 2007 | Author: | Filed under: 文章 | Tags: , , , , | 2 Comments »

文泉驿的一款矢量字体正黑体正式推出测试,是一件值得庆贺的事。

一年多前,我抱怨过中文开源字库的缺乏。如今看来,总体变化不大,但是确实有扎扎实实的进步,尤其是文泉驿项目的进展更为喜人。文泉驿点阵宋体发展到0.8版已经较为成熟,在屏幕显示上完全可以达到simsun点阵的水平。刚推出的正黑矢量字体尽管还是0.2版,但从屏幕截图看,字体效果已经可以应付屏幕显示。我在家里的Slackware上安装了文泉驿正黑体,并且设置好用它来代替粗体,配合文泉驿点阵宋体和免费的香港华康宋体一起使用。这样,我的Linux中已经可以剔除那些版权有问题的字体了。

然而,作为一款矢量字,屏幕显示只是一方面,打印输出的效果也同等重要。我在Windows XP SP2中也装上正黑体,用Word 2000创建了一份文档。当字体选用正黑体时,发现其内嵌的西文字体显示不出来,需要单独指定另一款西文字体,我选了Arial。我把字体大小设为四号,打印了出来。接着,我把中文字体设成黑体(simhei),同样打印了一份。两份打印稿一比较,就可以看出文泉驿的差距了。总体上看,同样是四号,但文泉驿字体偏大,这可能是由于计量单位不同引起的。文泉驿字体的大小也不一致,看起来显得比较散,很多字的比划、间架结构都还有优化的必要。下面这张图是我用手机拍的两种字体打印效果的对比,上面是文泉驿,下面是simhei。


对于文泉驿矢量字体的缺点,项目的负责人也很清楚,测试说明里面是这么说的:

由于字体制作流程复杂,工作量巨大,我们提供的测试字体的矢量部分尽管已经可用,但距离完美还很远。希望大家以发展的眼光来对待这个字体当中的不足,积极反馈并参与改进,相信这个字体会象我们的点阵字体一样,逐渐成为大家都能够接受的优秀字体。

这一点,应该是我们这些自由开源软件使用者的共同愿望吧。


换上文泉驿字体

Posted: 十二月 26th, 2006 | Author: | Filed under: 文章 | Tags: , , , , | No Comments »

之前,我提到文泉驿项目在制作和发行自由的中文字体方面的努力,但其实我自己一直没有用过文泉驿的点阵字,主要是不想在配置好了的系统上再动什么干戈。前几天,文泉驿点阵宋体0.8版宣布公开测试,一时兴起,下载并按照安装说明的指示装在了我的Slackware系统中。

看惯了微软SimSun(其实是中易公司提供的)中的12点阵宋体,乍一看文泉驿,会有一种不太习惯的感觉,原因是有些字笔划的位置会有一些轻微的差别,某些细节的处理上大家也有所不同,但总的来说0.8版比起以前的版本确实有改观,向着被更多人接受又迈进了一步。说到不满意之处,我觉得文泉驿12点阵的粗体还需要改进,看起来不如SimSun的美观。实际上,在12点阵中实现笔划多的汉字已经勉为其难,再想加粗笔划更加容易搞成一团黑,所以也不应该苛责。在Windows中试了试SimSun粗体,发现Windows在处理粗体时似乎加大了点阵,这样就能有更多的空间腾挪。也许文泉驿可以考虑一下这种取巧的做法。

文泉驿0.8版的发行,在水木社区引发了一场口水战。反对这个项目的一方主要论点一是字体不够美观,二是质疑文泉驿字体是否符合国家标准,三是担心字体做不好会误人子弟。在我看来,前两条都是可以在发展中克服的缺点,而文泉驿一直以来的进步也印证了我的看法。至于第三点,在目前来看,会用这个字体的应该都是过了识字阶段的人士吧,再说就算小孩子认字也应该以《新华字典》为准,担心文泉驿对小孩子识字造成不利影响似乎太过杞人忧天。

下面两张贴图,前一张是文泉驿字体(12点阵的小字)在Linux下firefox 2.0中的显示效果,另一张是微软SimSun在Windows的firefox 2.0中的显示效果。


由星际译王收费风波所想到的

Posted: 十二月 5th, 2006 | Author: | Filed under: 文章 | Tags: , , , | 5 Comments »

这几天,Linux社区发生了一场不大不小的风波:星际译王stardict的作者胡正为了筹措出国留学的经费,决定建立用户等级制度,只有交纳了5美元成为“level 1”以上级别的用户才能下载字典文件。发生这件事的时候,我正在旅行,这个消息是用手机从cathayan的blog上看到的,solidot也有报道。回来之后,我再到stardict的网站看,已经没有如何缴费的链接,估计是被Linux社区的口水给冲走了。

关于这件事的是非其实很清楚。stardict软件是GPL授权的,GPL不禁止作者或者软件的发行者收取费用。但是,stardict所用的字典文件,多是来路不明的,甚至有些明目张胆地写着“破解版”的字样。本来提供这些文件的下载已经是对字典权利人的侵权行为,如果再通过侵权而牟利,侵害程度则是更进了一步。

在这件事情的背后,我看到的是一种矛盾:一方面很多人呼吁别人尊重自己的劳动,而同时他们又漠视别人同样的权利。像胡正这样的程序员,辛辛苦苦地编写出一个软件,想从自己的劳动中获得收益,这种想法合情合理,无可非议。但我不知道他有没有想过,被他破解的那些字典文件的原作者的劳动有没有受到尊重,他们是不是也有不被盗版侵犯的权利。再举一个例子,很多国内的程序员抱怨盗版让他们赚不到钱,抱怨的同时,他们几乎忘记了自己在使用盗版Windows和盗版软件开发工具,并且对此没有一丝一毫的歉疚。对这样的程序员,我想说的是,既然你们连同行的劳动都不尊重,怎么指望别人尊重你们的劳动呢?

回到stardict的风波,一些支持胡正的人说自由软件并不意味着不能收钱。这一点我没有异议。但要注意的是,stardict 是自由软件并不意味着破解版的字典也变成了自由软件。把这些侵犯了知识产权的东西与自由软件混为一谈,就是给自由软件摸黑。


对GPL的10大误解

Posted: 九月 1st, 2006 | Author: | Filed under: 文章 | Tags: , , | 4 Comments »

IT Manager’s Journal网站前两天登出一篇文章 10 common misunderstandings about the GPL 。文章作者 Bruce Byfield是一个讲师兼记者,为了澄清一些对于GPL的错误观念,他特地采访了Richard Fontana (Software Freedom Law Center的律师,GPL第三版的主要起草者之一)、David Turner (Free Software Foundation的认证工程师并参与GPL的修改)以及Harald Welte(主持GPL-Violations项目,追查各种违反GPL的行为)。Bruce结合这几个专家的意见,驳斥了对于GPL的10个常见误解。

  1. GPL是传染性的(viral)这个误解根源于微软的一个高级副总裁Craig Mundie于2001年在纽约大学Stern商学院的一个演讲,他宣称所有和GPL软件有所接触的其他软件都会受制于GPL。很多人据此认为一旦在机器中安装了GPL软件,其他的软件也要符合GPL的要求,以致于有些公司明文规定不许安装GPL软件。
    这是对GPL section 2关于修改后的GPL软件必须仍然以GPL发布的曲解,实际上条款还提到完全独立开发的软件并不受GPL约束,而且与GPL软件存在于同一个媒介上其他软件并不因此就变成GPL的。
  2. GPL不具备约束力产生这种误解的根源很大程度上是由于对违反GPL的现象,自由软件基金会更喜欢采取帮助违反者改正错误的做法而不是动不动就对簿公堂。从另一方面理解,违犯者之所以愿意改正错误,正是因为他们考虑到GPL的法律约束力。实际上,在德国和美国的一些诉讼案例中,GPL得到了法庭直接或间接的支持。
  3. GPL软件不能收费Red Hat、Novell这些公司的经营已经驳斥了这个误解。GPL的section 1中说到可以对实物分发软件或者提供额外保证来收费,section 3b要求对于源代码的收费不能高于进行实物分发所需的费用。
  4. 绝对化的“自由还是死亡”(liberty or death)条款GPL的section 7规定:法庭的指令或者对于违反专利权的裁定并不能成为不遵守GPL的豁免理由,如果不能兼顾裁定和GPL两者的规定,就不能再发行软件。这个条款被称为“自由还是死亡”条款。
    其实这个条款只是针对那些不允许用户以GPL进行再发布的专利许可证,但是一些人把它理解得过于苛刻,有人以为不允许在禁止转授的专利许可证下分发GPL授权的代码,还有人以为(这一句看不太明白)some have worried about the existence of a possibly-applicable patent, or of some law or regulation that might potentially be applied to everyone in a particular jurisdiction is enough to trigger this jurisdiction. 而GPL的文本中并没有这样的规定。
  5. 发行者只需要发布他们修改过的源代码许多从事派生软件开发的开发者认为,只要原始的开发者还在发布源代码,他们就只需发布修改的部分就可以了。然而,尽管要求所有发行者发布全部源代码有时候显得多余,但GPL并不允许有例外,而且今后也是如此。
  6. 发行者提供源代码就行了,不需要发布使用方法按照GPL section 3 的规定,发布源代码只是发行者的部分义务,发行者不仅要发布所有模块的源代码、相关定义文件,还要发布用于控制编译过程和安装可执行文件的脚本等,也就是说让源代码对每个人都有用的工具。尽管很多人已经有了相应的工具,但发行者不可以假定每个人都有。
  7. 发行者不需要提供获得源代码的方式(offer)section 3 允许发行者选择随二进制文件一起发布源代码或者给出一个提供源代码的方式(offer)。如果发行者两样都不做而是坐等别人的要求,尽管会比较省事,但是却是对GPL的直接违反。
  8. 发行者只需要给自己的顾客提供源代码如果发行者承诺提供源代码,根据section 3b的规定,这个承诺要维持3年,并且对所有第三者都有效,无论是商业客户还是其它对源代码有兴趣的人,都没有区别。
  9. 发行者只需要给出指向GPL文本的链接这样做对发行者来说很容易,但违反了section 1,它要求“在每一份拷贝中都明显地、适当地发布版权声明”。原因是并非所有人都能上网读到GPL的内容,他们也许因此不知道自己也可以继续发布这些软件。
  10. 我所理解的字面意思和你的不一致有些对GPL的混淆并不是出于误解,而是由于观点不一或者在法律上有不同的解释。在新的GPL修订中,将通过事先对概念的定义来减少这些混淆的现象。

原文中牵涉到不少法律概念,本人水平有限囫囵吞枣,摘译了大概,还望方家指点。