2004年4月2日星期五

愚人节乱谈

去年愚人节,因为心情原因,我在网上疯了好一阵子。一年过去,也不知道好多事情是变了还是没变。反正是想要做点什么事情留下来就对了。下面这些东西花了我好几个小时,可惜因为脑子不清楚,也只好切题乱谈了。


小小追忆一下革命历史。我刚开始接触Linux似乎是很久以前的事了,具体有多久我自己也不记不清楚了,依稀记得那个时候红帽和蔓德拉草都只要1张光盘。对了,那个时候Xterm Linux还没正式推出。根据这个线索Google了一下,大概是恐怖大王就要降临的时候。

那时我给机器升了一级,余下一块1.2G的硬盘。用又嫌太小,卖又卖不了几个钱,于是就打算让他来发挥余热。

刚开始接触Linux的回忆可不怎么美好。安装时间远比我想像的长,至少比Windows95要长。体积也颇为惊人,1.2G也只是勉强够装下系统而已。而且好几次装完后,遇到Li问题。再来就是没完没了的硬件支持和中文支持问题。

也忘了是为什么,总之后来也就把Linux给搁下了。现在回头想想,那个时候装上这东西,除了看看玩玩外,也没用来干过什么事情。

再之后我还接触过RedHat 7.3、Trubo Linux和红旗的几个版本,不过跟过去的经历类似,至少并没有大张旗鼓地让其在我的硬盘上安家。

接下来的就是Gentoo。

第一次看到Gentoo这个词应该是在国外的网站上,不过并没有弄清楚他跟其他的发行版有什么不同,而留下印象却是因为微软的XBox。XBox-Linux的第一个版本是基于蔓德拉草的,在他们的讨论版上开发组成员说了一句:“红帽是资源黑洞。”过了一段时间我再去逛,发现XBox-Linux已经是基于Gentoo和Debian的了。

而我自己开始用Gentoo,却是有别的原因。在我的Windows里有很多Script-Language解释器,Perl、Python、Ruby、Tcl/TK等。还经常用用GNU的一些工具,所以装了Cygwin和Msys。于是恶梦渐渐袭来……当我发现自己的硬盘上居然有数十个zlib.dll的时候,我有种要疯掉的感觉。

也就这样,我找上了Gentoo,1.4,两张盘。

其实要我现在说,与Linux的重逢只是我头脑发热的结果。过去对Linux的印象现在并没有改变太多,只不过我现在“更会用”罢了。几番折腾之后,我只是在自己的机器上装了个VisualPC,平常大多时候ssh到虚拟机上去。

好像有些墙头草……


Linux很棒,比如perl之类的东西只有在posix上给人的感觉才最地道,比如平坦的文件系统让人觉得管理起来很容易等等。可惜他的坏处也很多,还可能并不比好处少。硬件支持度还是不够,特别是多媒体性能的表现差了一截。多语言支持还是一如既往地烂,Unicode目前只是个遥远的理想而已。很多很多的问题,到最后似乎都碰触到一个问题,那就是Linux最引以为豪的地方:开源。

集市就像自由经济,而大教堂就像计划经济。我觉得这个比喻蛮有趣,因为咱们国家的人大多都在这方面具有相当的政治敏感度。自由经济都有些什么不好呢,过度竞争和资源浪费。这两点在开源软件上也有对应的体现,过度竞争:软件贼多;资源浪费:开发者的,也有我的。

也许乍一听,软件产品的数量多应该不是坏处,事实也的确是这样,不过似乎会有一些问题。开源对代码重用非常友好,子又生孙,孙又生子,子又有子,子又有孙,子子孙孙,无穷匮也。但我们在实际使用中可以发现,开源的这些子子孙孙们先天后天都容易营养不良,甚至缺胳臂少腿。

用户的软件需求模糊地分可以有三步:没有对应软件,存在对应软件,存在好用易用的对应软件。目前的事实来看,开源可以很容易地解决第一步和第二步,但第三步却走得非常艰难。

至于资源浪费,我倒不是指诸如重复开发之类,虽然也逃不掉。自由经济的重复开发是必然的,甚至是必须的,经过市场选择总会优胜劣汰,不过这样的模式也并不是没有副产品的。Windows有个常为人所诟病的DLL黑洞,其实Linux也好不到哪里去,库黑洞。对于开发者来说,不管是STL还是GUI,总是有不同的选择。于是用户也就得跟着开发者的选择,在自己的机器上装上这样那样的库。

举个例子吧,用Gentoo,如果你熟悉或想熟悉python,想要使用kahakai当wm。emerge会告诉你,kahakai本身681KB,同时需要两个库,分别是1737KB的swig和5311KB的boost。有时候我甚至有种错觉,自己机器上的应用软件数量比库的数量还要少。

其实我觉得这些问题并不仅是开源造成的,或者说更深层次的原因,是由人性本身造成的。开源社区的活力并不在于用户,而是在于开发者——那些大拿、黑客们。他们想怎么做或做到什么地步,开源软件就是什么样子。

“每个好的(开源)软件工作都开始于搔到了开发者本人的痒处。”可是开发者本人的需求与用户的需求并不是终极一致的,或者可以说是不可能一致的。我们不可能要求软件用户都成为大拿和黑客,于是便只能是大拿和黑客们来将就用户的需求——更简单的、更直观的、更方便的。可很多工作是很琐碎又不能带来成就感的,例如文档,例如GUI。也许又一个可以用,但普通用户觉得不怎么好用的程序就这样产生了。而大拿和黑客们,又去追求新的能带来成就感或感兴趣的东西去了。

如GTK,现在已经是2.4了,可连1.2的Tutorial里还有Undocumented的部分。而且1.x和2.x不兼容却仍然被广泛使用,恐怕也只有在开源社区里才会是正常现象。文档不完善、API不稳定,这样是不可能产生RAD的。基于GTK1的RAD刚写出来,甚至还没写出来,GTK2就出来了,谁接受得了呢?大拿和黑客是不需要IDE和RAD的,也没有哪一家公司会对不稳定的库投入太多。

Mozilla应该是开源社区最重要的浏览器了,Opera是商业软件,而不打算用KDE的人则无法使用Konqueror。Mozilla的宣传语都有什么呢?自由、开源、资源占用小,是的,还有标准。这些似乎都是Mozilla的矜持,基本上也是Linux的矜持。可惜站在用户的层面,做得并不如说得那么漂亮。

撇开自由和开源不谈,因为这与应用没什么关系。至于资源占用的问题,凭良心说IE又做得很差么,Mozilla也未必做得很好吧。至于所谓标准,如果我以一个用户的身份来说,那只是一个光鲜的骗局罢了。这个网页IE可以看,Mozilla不能看,我们可以解释说这是IE不够标准的缘故。可是对于用户来说,是放弃这个网页不看了呢,还是拿起板砖去拍微软的大门?

所谓标准的产生,几乎都要经过一些利益集团的博弈和妥协。而且若是你的东西够好、市场占有率够高,你可以完全不理会所谓的标准,因为你才是标准,事实标准。过去C语言标准推出后,若干编译器都声称支持标准,但也无一例外地提供扩展库。因为标准是死的,应用需求是活的,是无尽的。JavaScript现在也有标准了,叫ECMAScript,可以说Mozilla里的脚本引擎是ECMAScript的完整实现,没增也没减么,恐怕不能吧。在EMail的相关标准里,MIME违反了RFC2047,可是Mozilla是不是就因为这个不支持了呢,恐怕也不能吧。

个人觉得,Mozilla的标准只是一个无用的矜持,与那些说着:“我乃天朝,彼乃化外蛮夷”的士大夫无异。这一点,应该会成为钳制Mozilla扩大市场占有率的最大问题。


愚人节好几个小时以前就过去了,就这样吧。