自由软件及其在我国的发展

芬兰赫尔辛基理工大学研究科学家 宫敏

[返回]

什么是自由软件

  自由软件的英文称谓是“Free Software”,由于英文Free这个字的二意性,有些人把它理解为免费软件,包括国内出版的一些书籍也将其误译、曲解为免费软件。关于这一点美国自由软件基金会的版权声明中说得明白:“当提到Free Software时,我们指的是自由而不是价格,我们所设计的通用公共许可证是为了保证您有散发自由软件和拷贝的自由,您会得到源代码或当您想得到时可以得到,……”这个版权声明是由律师写给律师看的,非常绕口但意思明确,告知是“自由”而不是“免费”。这一版权声明通常被称为GPL,或被幽默地称为CopyLeft,它是与Copyright相对的。一般所说的自由软件指的是用GPL作为版权声明的软件而不一定是自由软件基金会的产品。注意区别以下几类软件:

  公共域软件(Public Domain);
  共享软件(Shareware);
  商业软件(Commercial Software)。

  公共域软件是作者明言允许他人将其包含在自己的私有版权产品中出售或允许任意处置。这类软件都提供源代码。

  共享软件是所谓“先尝后买”软件,用户可以得到软件并试用,一旦决定继续使用下去就必须向作者缴付注册费,这类软件不提供源程序,属于商业软件的一种形式。

  自由软件由MIT的M.Stallman首先倡导,全球千千万万软件专家纷纷响应,并在他们积极的开发与维护下形成了大量的高质量软件产品。当时在麻省理工学院做研究工作的Stallman不满于一些软件厂家的傲慢与狭隘,决定将自己开发的软件产品与他人共享,既能够不胫而走又保证成果不被奸商窃取,提出了自由软件的概念,成立了自由软件基金会,至今自由软件的开发方兴未艾,一发不可收拾。

  狭义的自由软件就是以GPL为版权声明的软件。我们在这里所说的自由软件指的是广义的自由软件,包括公共域软件在内,在使用和二次开发时一定要注意尊重并遵守原作者的版权说明,该致谢的致谢,该付款的付款,原作者要求不提名的不提名。

有哪些优秀的自由软件

  世界上有着大量的优秀自由软件,下面笔者提及一些,但由于篇幅有限不能一一列举。

  操作系统

    Linux符合POSIX并兼容system V和BDS克隆
    Mach微内核

  语言系统

    GCC C语言编译器
    C++ C++语言编译器
    G77 Fortran语言编译器
    Java 一种脚本语言,广泛应用于Internet

  窗口系统

    X-Windows X窗口系统

  应用系统

    Ingress 数据库管理系统
    Postgress 数据库管理系统
    Alliance VHDL

  文字处理

    Tex LaTex 印刷出版系统
    GhostScript Postscript观看和打印系统

  网络支持

    与一般的微软产品不同,作为自由软件的Linux不需任何其它软件,在内核中就包含对Internet的基本支持,例如:

    TCP/IP Socket
    固定路由
    地址捆扎和反向地址捆扎
    光纤分布式数据网(FDDI)

  编辑器和软件工程工具

    Emacs 多用途编辑器
    gdb 源程序级调试程序,可调试运行中的进程甚至内核
    xxgdb 带Xwindows支持的gdb
    RCS & CVS 源程序控制系统
    Strace 跟踪软件

  另外,所有标准的UNIX实用程序都有自由软件的版本,它们通常都在原有版本的基础上作了扩充或在兼容的基础上作了改进。还有大量的科学计算软件包。

  很多厂家都或多或少地支持自由软件。Intel、MIPS等一些处理器生产商纷纷为GCC提供专用的代码优化器等,并按规矩给出源程序。一些著名软件厂商也开始为自由操作系统提供应用程序,如Netscape、Lotus、Adobe和WordPerfect等,有些厂商还采取资助的方式支持自由软件。由此看来,自由软件异军突起,已引起了各方面的注意。

自由软件在我国的发展

  随着社会的进步和科学技术的发展,特别是Internet的流行,一个全球性的管理和社会经济网络化、信息化的热潮正在影响着我国信息产业的发展,面临这样的形势,用什么软件的问题摆在了我们面前。我们究竟需要什么,该用谁的产品?

  美国政府曾经制订了联邦采购法。该采购法规定政府机构不得采用非POSIX兼容的产品,这样一来某些公司的某些产品就被排除了,美国政府并不是和这些公司过不去,只是不愿被个别厂商牵着鼻子走,那么什么是POSIX呢?

  POSIX是可移植操作系统接口标准(Portable Operating System Interface Standard),该标准由IEEE制订,并由国际标准化组织接受为国际标准。作为公开的标准,POSIX不属于任何公司,任何想和美国政府作生意的公司都必须拿出符合标准的产品。某公司为了使自己的产品能够进入政府的采购单,不得不在某产品中号称加入了POSIX的支持软件。

  由于自由软件产生的背景,其遵循的标准只能是POSIX。因此自由操作系统Linux、自由编译器GCC从它们诞生之日就符合POSIX。

  有些大公司说他们的产品符合POSIX,但是他们不提供源代码,一旦系统有问题只能找他们解决,这一般最快也得等到下一版本的推出,作为用户则得花钱购买升级版或购买版本升级服务,举一个笔者亲身经历,有助于说明此问题。

  当笔者在赫尔辛基理工大学做研究工作时,最初是购买了Interactive UNIX作为软件平台,同时采用Data General的AViiON工作站,后来发现二者的TCP/IP代码都有些问题。笔者向相应的厂家报告了问题,其中一家在半年后答复道,该问题已经在新版本中解决了,请我们购买其升级版。当升级版买回后发现问题并没有完全解决,只得通过极其麻烦的手续退货,而另一家直至五年后的今天仍未给出解决办法。

  Linux发表之后,笔者立即采用了Linux,当时Linux还比较原始,但那时所支持的硬件设备已经不少,以后很快就超过了商品的UNIX。笔者在使用中发现的一些问题,通过USENET NEWS发出求救信息后,短则几天长则个把月就可得到解决方案。一般来说,如果超过一个月没有得到解决方案就可以考虑查看源程序自行修改,当问题解决后将解决方案通过USENET NEWS张贴,并通过电子邮件寄给相应代码的原作者,他一般会致谢。下次您在新闻中看到相同问题的求助后也就可以拔刀相助了。

  由此可以看出自由软件胜于商业软件。

  自由软件不仅适用教育和科研环境,同时也适用于社会。事实上,在世界很多机构都采用自由软件作为软件平台。据笔者所知,我国也有公司用自由软件提供Internet上服务。很多大公司如IBM、DEC和OSF都在他们的产品关键部位采用了某种形式的自由软件,如X-Windows和Mach微内核,这些都充分说明自由软件技术水平的先进性和使用的便利性。

  鉴于自由软件的水平之高、应用面之广并有源代码,当前广泛提倡使用自由软件、学习自由软件、参与开发自由软件,对于方便用户使用、保护用户投资、提高软件应用与开发的综合水平、打破商业软件的垄断和控制都具有重大意义,是非常必要的。

  笔者认为,目前在我国推广自由软件的条件已经成熟。诚然,自由软件的推广应用需要一定条件,例如必须有获取来源,有人散发,有人提供技术服务,有人进行开发等等,但这些问题是不难解决的。基于本人在国外的工作经验以及对自由软件与Internet的认识,提出两点建议,谨供参考。

  1.建立位于国内的、内容齐全的自由软件档案库。由于自由软件的开发工作发生于世界各地,自由软件的存档也散见于世界各地,加上规模之巨大,国内各个单位分头通过Internet提取是不经济、不合理的,加上查找不便甚至十分困难,建立位于国内的自由软件档案库有助于以多种媒体形式为国内提供自由软件。

  2.建立若干相应自由软件的中文USENET NEWS讨论组并转载国外相应讨论组的英文文章,组织双向转载(Cross-Posting),有人负责将讨论组文章定期归档。讨论组的建立有助于大家进行经验交流、难题解答和互助。由于目前自由软件多为国际人士开发与维护,建立国际联系、取得国际技术支持及难题解答是极其重要的。

  (本文是根据一篇讲话稿编辑的,作者于今年5月11日回国,并带回了大量自由软件档案,以帮助中国软件行业协会国际自由软件应用分会建立自由软件档案库和支持平台之用。——编者)

[返回]