在2008年,开源社区要想继续保持自己的前进势头,就必须做好5件事,其中更多的硬件支持和与微软更好的沟通只是其中的两项。
毫无疑问,开源软件以及开源哲学,在2007年取得了巨大的进步。回首我们取得的进展和成就时,我们完全有理由感到骄傲,但更重要的是,开源社区应当放眼长远的未来,并确定未来需要做好的工作,从而保持和快速发展的步伐。
为此,我特意整理了以下的开源社区在2008年5项“未来要做”的工作建议。这些项目中有些是老生常谈,有些则是希望开源社区能够好好自省。所有这些建议的内容在2007年都多多少少地显示出了一些迹象,其重要性将在2008年显现出来,或者在2008年引起更多的注意。这些项目并非无所不包,我只是希望利用这些建议来抛砖引玉,引发更多的思考。
1. 更好的硬件支持
我们需要更多的硬件制造商 - 桌面PC制造商和其它类似设备的制造商 - 只有利用它们,开源才可以真正深入市场。
主流硬件市场中已经出现了巨大的爆炸性增长,这些设备通过的认证既适合开源软件,也可以与标准的软件组件和谐相处。可喜的是,Dell已开始提供Ubuntu Linux作为预装产品,Linux驱动的Everex gPC销量也很稳定,而且华硕(Asus)也在销售运行Xandros的完整Subnotebook产品线(Eee PC)。
这些型号的产品不仅将Linux送到了更多用户的手中,而且也为更多的硬件产品提供了开源的驱动程序。这种发展趋势促进了制造商之间的竞争,克服了原有的诸多人为限制。例如,某些硬件产品虽然具备一些特性,但在其设备的固件中禁用了这些特性,但通过第三方固件可以手动启用这些特性。
例如,当我购买下一套室内网络路由器时,我准备购买一种像Tomato这样能支持开源固件的产品。我不希望在特性方面受到制造商的限制,而是想尽可能发挥硬件的最大性能 - 特别是制造商提供的固件更新速度像冰川一样迟迟不来,而开源项目的固件更新速度却是一日千里。
我认为,制造商之所以迟迟不发布固件更新的作法主要是因为,硬件厂商希望在市场中制造一种人为的短缺局面。这种短缺局面表明了制造商在市场中的地位,使它们能够控制住消费者。例如,我的佳能数码相机的硬件可以拍摄RAW(无压缩)模式的照片。但该功能在我那种型号中被禁用,可能是因为以RAW格式拍摄在消费级光学产品中很少用到。也就是说,这种相机完全可以使用RAW格式拍摄照片,而且我很希望利用这一特性。(事实证明,利用第三方黑客创建的定制固件,我完全可以利用这种相机拍摄RAW格式的照片。)
即使有了开源,我也不认为市场中这种人为的短缺局面会完全消失。我可以肯定的是,市场中总有一些人愿意少花点钱去购买一些固件中有残疾的设备,而且这些人永远也不会尝试对固件进行解破。正因为如此,厂商才会出售一些关闭了某些特性的产品。但我认为,开放设备的市场是一种必然,而且消费者对这种市场的需求正在与日俱增。因此,硬件制造商应用在尽可能多的战场中开辟自己的未来。
2. 对开源友好的无线技术
我们需要一家对开源和开放标准比较友好的全国性的无线运营商。在某种程度上,这种运营商正在出现。但是,最重要的是此类运营商所做的实事,这比任何承诺或纸面联盟的数量都要重要。
首先我们从最明显的迹象谈起:Google的Android和Verizon的开放网络承诺。Android可以提供为便携终端提供软件,比目前的可怜的手机软件要强大得多,而Verizon的承诺是为经过认证的设备提供高水平的开放端互用性,这对于那些非封闭型手机的用户无疑是好消息。
也就是说,这些产品和承诺还远远不够。在网络方面,最大的问题是设备没有自由度。这事实上就是数据的自由度问题。世界上最开放、最灵活和开源社区支持最多的设备在网终中仍然没有用伍之地,因为在网络中传输数据的成本仍然太高,让多数用户望而却步。这使得网络中很多非常实用的软件仍然无法在用户手中发挥作用,而且开放设备本身虽然很诱人,但用户并没有得到太多的好处。
然而,当这些网络开始允许使用开放设备时,这些设备带来的种种机遇会促使无线运营商重新思考自己的业务模式,虽然它们已经在最初的竞争中败下阵来,但亡羊补牢,为时未晚。如果移动电话成为人们上网的首选方式,现有的计划、手机和应用将远远不够。问题的关键在于,如何让这些设备在更宽松的环境中提供更多的服务,完成更多的任务。
事实上,阻碍变化的是基础设施,而不是发展政策。经常有专家提出这样的疑问,韩国和日本的电信和无线网络比美国要领先多少。关于这一问题有很多的答案,但其中有一条答案比较符合事实情况:国土的大小。由于韩国的国土较小,建设网络基础设施的成本较低,其建立下一代宽带网络的成本比美国一个州还要低。
但是,这并不能解释电信行业中完全采用专有技术的问题。现在,移动电信行业应当停止封闭的作法。一旦大门大开,就无法再关上,因为这是历史的必然。
3. 微软的事实
我们需要让微软停止宣传自己的所谓Linux专利。微软在这方面已经做了太多的宣传,也做了太多没有具体内容承诺。如果微软希望与Linux (和Unix)合作,而非对抗,那么微软就需要完全地置身于这项事业之外。该公司需要提供完整的、明确的文档,说明自己在Linux和Unix方面到底有哪些技术专利。
微软曾指出,自己希望成为一位更好的开源公民,具体方式是通过类似开源实验室之类的机构。但是微软向多个Linux厂商提供知识产权授权的作法表明,微软在开源方面的作法与一般的开源工作完全不同。
对于微软而言,主要原因是,微软一直不够坦白。微软曾经说,自己非常愿意帮助其它的厂商,而不是动辙起诉这些厂商,但在微软向Linux厂商提供的授权方面,微软的动作一直非常神秘。我们甚至不知道具体的情况。因此在某家厂商真正在法律问题上越雷池之前,我们只能猜测。如果微软在专利方面更坦白一些,至少有两件事情可能发生。
首先,任何其它开源社区不能侵犯的专利都会被明确地标明,尽管这样做会在便利性和互用性方面付出代价,但开源社区会尽量避免。例如,如果微软反对通过无授权的方式对使用NTFS进行反向工程,Ubuntu等产品厂商就很难将现有的Windows用户移植到Linux,除非获得微软的技术授权。如果微软主动提出授权但被拒绝,Ubuntu将会损失一项主要的产品特性。如果Ubuntu同意接受授权,它们可能面临开源同伴的批评。任何一种选择都没有什么吸引力。同时,微软主动接触这些厂商的可能性也是微乎其微。
第二,任何可能有用的东西都会被重写,目的是避免专利方面的麻烦。毕竟,开放源代码的基本优势之一是:代码中没有“神秘的部分”,而且任何可能涉及专利解决方案的部分都会被找出来并且通过各种方面绕开。然而,我们并不知道是不是所有侵犯专利的部分都可以重写。这其中的部分原因是,微软也有自己的 Unix历史,而在这方面,微软很可能仍然保持着自己的知识产权。
微软保持沉默的另一个可能原因是,微软自己也处在一个缓慢、痛苦的发现过程中,无论是在公司内部还是与其它公司打交道的过程中(即通过专利授权的形式),微软都要确定自己在哪些内容方面拥有知识产权。微软所宣称的部分只是一个开端,对于任何厂商来说,这些所谓的知识产权都不够明确。
但可以明确的是:如果没有足够的外部压力,微软在该问题上不可能坦白。因此,保持对微软的压力,让微软不能在封闭的大门后面继续沉默下去。
4. 切实可行的过渡途径
开放源代码社区需要找出一个切实可行的过渡途径,使专有的知识产权转变成为开放源代码。不管人们是不是喜欢,专有知识产权的世界 - 专利、限制授权等等,都是这个世界的主宰。那么,在将专有知识产权转变成开放源代码的过程中,您打算怎样做呢?
这个问题不可能自己解决。随着发布的开放源代码产品越来越多,这个问题也会被得越来越紧迫。典型的例子是,一直以来,Sun Microsystems都在根据一般公共授权的方式发布Java。但知识产权法律方面的可怕规定迫使该公司无法使用GPL。
谁也不知道在现有的知识产权方面应当怎样处理,但要想在知识产权和免费、开放源代码软件授权之间建立一座桥梁,有很多事实可以尝试一下。更多地宣传和推广FOSS拥有模型等授权方案可以更方便地对知识产权进行转化。通过这种方式,专有软件开发商(或专有软件的用户)不会受到不正当的惩罚,而且开放源代码开发商还能够获得好处。有很多方法可以在这方面提供改进,其中一种便是双重授权。许多开放源代码产品在提供时都有一种以上的授权方式,客户可以选择最适合自己的方式。MySQL就是这样一种产品:该产品既有GPL版本,也有专有版本,两者都源自同样的代码。客户可以在授权方式之间变换,但只是单向的:您不能从GPL版本转成专有版本。这种授权协议的不足之处在于,它迫使MySQL AB需要对每个案例起草免责条款,使授权与具体的产品相适应,例如PHP,但这种方法比Sun在推出Java时遇到的麻烦要小得多。
另外一种可能的授权方法是Ghostscript使用的方法:回退式授权。该产品最新的版本采用的是商业授权,但早期的程序是通过GPL(或类似GPL)的方式授权。这种方法也GPL的条款并无冲突,因为其过渡过程是从专有代码授权转为GPL:程序的每次修改首先采用的是商用方式,然后再以 GPL发布新修订的版本。如果一家公司在开发时需要与最新版本的代码保持同步,这种授权方式将提供一种内建的方法,使其能够方便地向开放源代码社区发布,同时也不会使最初的开发工作受到损害。
最后一种方法在我个人看来是最直接的一条路径,这就是将专有的知识产权转化为一个FOSS模型。虽然我认为这种方法不可能适用于每一种以专有方式授权的现有软件产品(例如Java),但它是很好的第一步。例如一些新项目还没有在FOSS方面做出完全的承诺,并且在转换授权形式方面不会受到太多的批评,那么这些项目就完全可以使用这种方式。
5. 开放的思维
开放源代码社区需要重新思考。开放源代码社区应当认真考虑自己的长期目标,而且最重要的是,思考自己在实现这些目标的过程中愿意付出多少的代价。
首先我要提出一些定义。所谓的“开放源代码社区”,指的是那些大力倡导开放源代码哲学的个人或机构。他们提出趋势后,很多人都会追随,而且他们在该领域发挥着重要的影响力。长期以来,他们做出了巨大的努力,使开放源代码软件不仅生存了下来,而且成为一种人人向往的目标和事业。
在任何哲学中,人们都会以该哲学的思维方式来看待世界上的一切,并加以尝试。如果您有一把锤子,任何事情在您眼中看起来都像是钉子,或者其它的锤子。开放源代码更是如此。有很多人在发布软件时并不希望使用开放源代码的方式,这种选择没有对错之分。这并不能表明这些发布者在道德上存在问题,与其浪费时间和精力去攻击这些人,还不如自己去建设这些非开放产品的替代方式。
有些时候,虽然我们也可以施加压力,迫使某些产品以开放源代码的方式发布,例如,通过这种方式来保持某种已过期产品的支持。但这种事情也可以通过其它方式来实现,而且需要理解的是,并非所有的事情都可以通过开放源代码的方式发布,很多东西在未来仍然可能带来一些无法解决的问题。不久以前,我曾经谈到了OS/2开放源代码方面的一些工作,但在这个问题上,仍然需要以传输的方式来研究问题。我们可以创建该操作系统的PowerPC版本来解决问题,因为这种版本与微软的代码联系较少(这也是开放源代码OS/2面临的最大障碍之一),但这一过程中的工作量确实令人望而生畏,实际效果值得质疑。
开放源代码社区最有效的工作方式是在开放源代码领域提供实实在在的、积极的,而且是确定无疑的有益思维方式。一件好的开放源代码产品就是开放源代码思想的最好证明。到目前为止,在桌面版Linux、OpenOffice.org和Firefox方面取得的成果就足以说明问题。这些都是实实在在看得见的成果,而且人们可以直接体会到它们带来的好处。这些产品在实用性上毫无疑问,它们已经证明了自己的成功,因此也就无需将竞争对手妖魔化。
不过,这并不是说专有软件的创建者所采用的方式是最好的。每个人都需要对开放源代码软件有更深入的了解,有时,最好的选择并不是惟一的选择。