本想借力Linux实现民族软件产业的自强,但在现实面前,具有自由、开放、平等意义的Linux长在中国却变得索然无味了
中国的Linux产业形成了泾渭分明的两派。
《IT时代周刊》记者获悉,在近期召开的“Linux产业与应用峰会”上,产业界着眼于强调Linux的商业布局,而学术界专家却强烈要求Linux厂商开放“源代码”,为中国Linux“正本清源”。
“Linux产业与应用峰会”是中国政府第3次对开源软件进行大规模的政府推进行动。然而,峰会上产业界过于强调的商业意识强烈地表现出中国的开源软件已经染上了与其本质格格不入的“商业病毒”——商业软件的知识产权。
国内厂商的封闭现状
从2000年到现在,国家对中科红旗的直接和间接投资就已经超过2亿元人民币。作为中国Linux操作系统的龙头企业,中科红旗在“开源问题”上,就已经让业界大跌眼镜。同样的问题,上海中标软件和南京新华科技也存在。
“ 目前国内的Linux操作系统在源代码开放方面存在很大问题,这极大地影响中国自由软件的发展,并有损中国Linux的国际形象。”“中国Linux之父 ”袁萌教授不无忧虑地告诉本刊记者,“北京的中科红旗不提供源代码,上海的中标软件也不提供源代码。这与开源技术的本质背道而驰。”
袁萌曾担任中科红旗总工程师。据他介绍,美国红帽子在华销售的Linux操作系统提供3张光盘,第3张就是源代码光盘,而中科红旗出售的操作系统只有2张光盘,其中不含源码资源。
中 科红旗负责Linux研发的副总裁郑忠源博士向本刊证实了国内Linux操作系统的开发过程中的“源码”封闭现象。同时,郑为中科红旗辩称:“只要不涉及 法律和第3方版权问题,中科红旗基本上采取开放态度。但如果涉及第3方利益,为避免由此引起的法律纠纷,我们则采取‘不开放’政策。”
郑忠源认为妨碍国内企业开放源码的问题在于,涉及相关联的厂商知识产权,以及市场竞争问题,再者就是成本问题。据了解,现在国内的Linux企业大都不赢利。
但 让本刊记者不解的是,国内软件企业掌握的Linux源码大部分免费取自于Linux社区,所谓的Linux操作系统也只是在此基础上的修改和创新。而按照 自由软件的GNU原则,自由软件允许任何用户自由拷贝、修改、和销售,对源码的任何修改必须向任何用户公开。而GNU原则也决定了所有人对自由软件的权利 和义务——所有人可以自由地占有自由软件,所有开发人员为自由软件做出的成果必须与他人共享。
“我们的开源运动是典型的‘拿来主义,只进不出’, 它又重新陷入封闭的商业软件体系之中。”袁萌如是告诉《IT时代周刊》。曾先后两次参加OSS统一东北亚标准会议的赛迪集团高级工程师胡万进博士对此颇有 同感,他认为国内的Linux操作系统在开源方面确实对国际开源社区贡献不足。
然而,国产操作系统只是在Linux内核基础上进行的外层应用的开 发,真正能够称得上自己知识产权的东西少之又少。或许正是基于此,中国的Linux技术在封闭中与外界没有交流,而在世界Linux技术格局显得无足轻 重。中国Linux的现状是,在整个国际开源社区中仅有3个中国人对Linux有贡献,而他们全都在美国。
中国Linux的死穴
随着中国信息化进程的加快,Linux操作系统和相关的软硬件开发和应用范围也在不断加大。据IDG统计,2003年中国Linux市场容量已达到3.6亿元,市场份额也从2002年的2.8%上升到3.2%。
市场在进一步扩大,但中国的Linux产业依然摆脱不了开源运动涉及的法律问题,尤其是知识产权问题。其实,不管在中国还是在世界,当前Linux面临最大的问题是法律风险。业界有专家的看法是:开放源码不是没有版权,而是其版权属于Linux国际开源社区。
早在2003年9月,欧盟部长级会议已经通过了承认软件专利的议案。专利问题不仅限于商业软件,还存在于开放源码。所以,袁萌认为,“我们经常提到‘自有知识产权’的操作系统,其实这些提法本身就值得研究。”
中国政府投资的Linux操作系统最终形成了几个相互各不兼容的产品。而且,政府还要用政府采购的办法进行财政补贴,“重复开发”和产品的兼容性影响了中国“开源运动”的发展。
但在谈及正在拟议中的Linux东亚标准时,袁萌认为,Linux是一个开放的操作系统,作为软件产业的基石,国际开源社区不属于任何一个国家、企业、或者个人,国家不能用立法的形式对此加以干涉。
在采访中,袁萌还告诉本刊记者,信产部建立了国家公共开发平台实验室,主要为解决软件和集成电路产业的技术创新、产品创新、信息共享和新传播问题。这个实验室的建立,说白了就是为了开放Linux源代码做准备。
信 产部建立国家公共开发平台实验室,一个主要目的就是运用政府力量,整合国内Linux厂商的开发资源,促进国内厂商和“开源社区”共同研究、开发、吸引更 多的人使用这一实验室的资源。政府也希望通过这一平台,促进国内厂商真正地开放源代码。国家公共开发平台,对外采取会员制为企业提供可定制的个性化服务, 使Linux产业的发展获得技术支持。
胡万进博士也告诉本刊记者,中国整个Linux产业去年收入只有6600万元,整个产业“盘子”非常小,目前阶段不会有多少利益可图,开放源码的意义在于把盘子做大做强。
另 据记者掌握的国家公共开发平台实验室的有关文件显示,成立的目的主要解决以下几方面问题:解决国内不同厂商的兼容性问题;解决外设和Linux操作系统的 接口问题;解决Linux的中文环境问题;解决桌面系统的商业化问题;解决Linux开发环境,降低Linux的开发难度;组织力量进入国际Linux核 心社区;全面考虑Linux的安全问题。
打破封闭怪圈
开源技术是网络时代的产物,它对传统的软件价值观念、行销、传播、方式产生了震动和冲击。Linux是自由的,但是Linux的应用和服务是有价值的,不是靠产品赚钱,而是靠增值开发、继承和支持服务来赚钱。
自由软件游戏规则变了,同样自由软件的开发规则也应该转变,更多的是一种观念上的转变。正如袁萌所说,以“科学研究”的精神开放源代码。在知识传播上,让整个产业“共享”,而不是个别的企业“垄断”。
“开放源代码”将让整个Linux产业的厂商资源共享,把更好的资源应用于解决开发方面的问题上。让那些富有创造性的程序员们,在开放的环境中开发软件,不同技术可以同时存在、相互间促进发展。多种技术产品的存在为用户提供了更多的选择机会。
近 年来,学术界一再强调中国要引进Linux,一定要“原汁原味儿”地引进Linux技术,要坚定不移地开放源代码,让中国人的创造坚决地回馈给国际开源社 区。而作为中国Linux学术带头人的袁萌当初去职中科红旗总工程师的原因则是“不满某些公司为了自己的眼前利益,用制作商业软件的思路去做Linux。 ”
技术、GPL、社区和厂商结合在一起,组成Linux 生命力之源。中国所有的开放源码产品,完全仰赖于世界开放源码社区的核心贡献。中国Linux社区的规模与素质,还远远跟不上中国市场的巨大潜力,更未能 对世界作出贡献。只有一个壮大的世界性的开放源码社区才能够带来人才、产品创意与繁荣。
没有厂商的积极参与和支持,Linux社区不可能健康茁壮成长,他们是唇齿相依的关系。厂商必须纠正采用“版权软件”思维来从事开放源码软件产品的错误。
据说,袁萌教授最近的研究表明,全球范围内极有可能出现GPL缩小为只限北美地区使用的情况。若果真如此,这或许跟国内Linux厂商在利用了国外开放源码运动的成果以及外国Linux厂商开放的源代码以后,封闭了自己所做的改动与改进、拒不开放源代码有一定的关系。
“ 当前中国Linux运动的一个首要任务就是‘B2C’——‘回归社区’(Back to Community),社区就是一切,基于开放源码的特点,厂商单打独斗根本没有办法形成竞争力。社区,就是包括爱好者、教育、科研、团体、厂商和代表民 众利益的政府在内的一个整体。”袁萌教授为陷入困境中的Linux开出如此药方。他说:“中国的Linux厂商绝不能够再继续这种违法的、缺乏行业道德 的、自私自利的、短视的、‘只取不予’的行为。否则,必然被世界Linux社区所唾弃。”
满大街都在谈论Android,它是当红炸子鸡。许多人觉得,iPhone将受到它的强力挑战。
而日前,有一位名为“阮一峰”的网友就根据国外的一些业内状况对Android的发展提出了自己的看法,Android真的像Linux那样开源,而Google也真有那么伟大吗?此文非常值得大家一读:
我也曾经对Android充满了期待,但是后来的事态发展,令我改变了看法。前几天,我就在网志上写了自己的担忧:“首先,Android应用程序只能用java语言开发。其次,Google对Android采用了一种全面霸权式的管理,完全不是其他开源软件的开发方式,一切都由Google说了算,很多地方是黑箱,外界不得而知。”
没有想到,仅仅过了两天,担忧就变成了现实。Linux Kernel的维护者Greg Kroah-Hartman宣布,将Android 代码从 Linux kernel 代码库中删除。这意味着,Linux Kernel的开发小组不认可Android的贡献,两者产生了冲突。
消息公布以后,外界普遍觉得惊讶和可惜。好不容易,才有了一个这么受欢迎的开源手机系统,应该齐心协力、共同开发才对,为什么要“窝里斗”呢?到底是什么矛盾,使得Linux Kernel小组剔除Android代码呢?
Greg Kroah-Hartman写了一篇详细的文章,解释这个决定。下面就来看看,他是怎么说的,以及Android到底是一个什么样的系统。
在这之前,你最好知道Greg Kroah-Hartman是谁。他是目前Linux Kernel的核心开发人员,负责stable软件包的发布。就是说,每一个新版本的Linux Kernel,都是经过他的手流出来的。此外,他还负责硬件驱动的部署。而他的手机就是HTC G1,每天都在使用。所以,他是绝对有资格谈论这个问题的,他的看法代表了Linux社区对Android的看法。
首先,他指出Android和其他的Linux发行版不一样:
“Google has taken the Linux kernel, and nothing else from a “traditional” Linux system.
Google只用了kernel,别的东西都没用。”
这就是说,与Ubuntu、Debian、Redhat这样的传统Linux发行版相比,只有系统的底层结构是一样的,其他东西在Android里都不一样,尤其是程序员的编程接口是完全不同的。因此,Android应用程序都必须重新写过,现存的Linux程序无法移植上去。所以,从严格意义上说,Android是一种全新的系统,它与Linux的距离,比Mac OS与Linux的距离还要远。
然后,Greg Kroah-Hartman肯定了Android这样做的积极意义:
“Android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unified application layer that programmers can write to that will work on all phone platforms that integrate it.
它解决了长期令手机制造商头痛不已的问题:业界缺乏一个开源的Java虚拟机,以及统一的应用程序接口。现在,程序员只要写一次程序,就能在各种手机硬件平台之上使用。”
这段话解释了,为什么Android的应用程序,都必须用Java语言开发。因为不这样做的话,没法让程序做到硬件无关。
且慢,这真的是理由吗?传统的Linux系统,也并不依赖特定的硬件啊!只要把源代码根据不同的平台,分别编译一下,同一个程序不也照样可以在不同的硬件架构、不同的Linux发行版中使用吗?
那么,Android只采用kernel、只允许用java编程的真正原因,到底是什么?
台湾的科技网志MMDays一语道破真相:
“Linux kernel的版权是GPL。
这下问题来了:如果你是硬件厂商,希望你的硬件能在 Linux kernel 下运作,那么就必须要有驱动程序。如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了。许多厂商不愿意这么做,所以就提供编好的驱动程序,但不提供原始码。
Android 的重点就是商业应用,Google采用了一些手法来绕过这问题。他们把驱动程序移到 “userspace”,也就是说,把驱动程序变成在 Linux kernel 上头跑,而不是一起跑的东西,这样就可以避过GPL。然后,在 kernel 这边开个小门,让本来不能直接控制到硬件的 “userspace” 程序也可以碰得到,这样只要把”开个小门”的程序代码公布就行啦。”
看明白了吗?
这段话的意思是说,Google玩了一个花招,在kernel和应用程序之间,自己做了一个中间层,这样就既不违反GPL许可,又能不让外界看到厂商的硬件驱动和应用程序的源码。
这样做或许有利于推广Android,吸引厂商和软件开发商的加入,但是也给Linux Kernel带来了麻烦。Greg Kroah-Hartman直截了当说出了自己的不满。
“…any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google’s kernel tree, causing it to fail to build in the kernel.org tree.
所有为Android写的硬件驱动,都不能合并入kernel。因为它们只在Google的代码里有效,在kernel里根本没法用。
Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.
由于这个原因,Google也从不把大量的硬件驱动程序和平台源码向kernel提交。实际上,它创造出了一个kernel的分支,大量的开发者都依赖那个分支。”
这就是Android干的事情:它修改了Kernel,但是又不提供修改的细节,自己搞了一个封闭的系统。说得难听一点,它利用了开源社区,要求开源社区为它做贡献,却又不愿提供回报。
所以,Linux Kernel就把Android踢出去了,真是再正常不过了。
人们有权利质疑,Android这样的哲学是否正确?是否符合Google“不作恶”的口号?如果Android继续这样封闭下去,那么开源社区为什么要为它免费制作软件呢?因为我又不是在为开源社区服务,而是在为Google服务。既然这样的话,那还不如去支持iPhone呢,至少能在软件商店里多卖一点钱,而且乔布斯看上去也更酷一点。
slashdot上有很多关于此事的讨论。有人指出:“Google自己的网站,与微软的网站一样封闭。它开源出来的东西,都是根据GPL许可证不得不开源的。”
好吧,姑且不谈Google本身,因为它至少不要求外界提供支持。但是Android不一样,你不能假装成开源系统,骗取社区的支持,然后又干着封闭系统的勾当。
Google必须做出选择。正如Greg Kroah-Hartman最后的呼吁:
“I really don’t know. Google shows no sign of working to get their code upstream anymore.
我真的不知道未来。Google看上去没有任何改变代码的迹象。
I do hold out hope that Google does come around and works to fix their codebase to get it merged upstream to stop the huge blockage that they have now caused in a large number of embedded Linux hardware companies.
我确实希望Google做出改变,把它的代码合并进我们的代码,弥补已经出现的代码分裂。
I’ve privately offered in the past to help this work get done, and am doing again here publicly. But I need the help of the Google developers to make it happen, without them, nothing can change.
我私底下已经说过,我愿意帮助完成这项工作,在这里我再次公开这样说。但是如果没有Google程序员的加入,什么也不会发生。”
Android必须变成一个真正的开源系统。如果像现在这样封闭下去,就会被开源社区抛弃,就一定不会成功,即使有Google的支持。