点击下载

关于开放源码软件和通用公共许可(GPL)的进一步讨论

特别鸣谢如下公司/组织的积极参与(排名不分先后):
中国计算机软件与技术服务总公司
北京共创开源软件技术有限公司
北京中科红旗软件技术有限公司
北京红旗2000中文软件技术有限公司
托普集团科技发展有限责任公司
自由软件基金会中国研究院
中国软件登记中心
中国GNU研发中心
中国Linux论坛
炎黄角马
LinuxAid
AKA

注:本报告全文已刊登在《共创软件》杂志第六期

共创软件联盟 贰零零贰年陆月
(本报告已经提交国家科技部)

1、什么是开放源码(open source)?
2、什么是自由软件(free software)?它与开放源码是什么关系?
3、除了开放源码/自由软件,软件业界还有哪些软件模式?
4、开放源码运动发展历史是怎样的?
5、引起开放源码社区强烈抗议的微软万圣节文档是怎么回事?
6、共享源码与开放源码是什么关系?
7、开放源码开发模式是怎样的?人们加入开源开发工作的动机何在?国内外情况如何?
8、现有哪些成熟的开放源码软件?
9、开放源码软件的商业模式是怎样的?
10、开放源码与专有软件模式的争议焦点是什么?
11、开放源码是否更具有安全性?
12、开放源码的软件拥有总费用(TCO)是怎样的?
13、开放源码软件的技术支持是怎样的?
14、何时选择使用开放源码软件?
15、以Linux为代表的开放源码软件市场状况和趋势如何?
16、为什么IBM要在Linux上投资十亿美元?这项投资是否会继续?
17、其他著名IT厂商对于Linux的态度如何?
18、Linux厂商下一步面临的关键问题是什么?
19、商业IT公司的不断介入对开放源码社区有什么潜在影响?
20、开放源码许可类型有哪些?
21、GPL和LGPL具有什么特点?
22、针对GPL存在哪些疑问?
23、如何理解各种开放源码许可背后的含义并加以选择运用?
24、开放源码涉及哪些潜在的法律问题或风险?
25、针对新颁布的《计算机软件保护条例》,民间存在哪些争议?
26、开放源码与专有软件有机结合的许可证分层模式是怎样的?
27、开放源码软件的"分叉"(forking)问题是怎样的?
28、利用Linux发展中国自主产权的操作系统是否存在法律问题?
29、利用开放源码启动中小专有软件企业有什么注意事项?

1、什么是开放源码(open source)?
  "开放源码"(open source)被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。开放源码软件通常是有版权(copyright)的,它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。另外,"open source"这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等。
  美国一些进步的评论家指出,在象网络这样的虚拟环境中,驱动系统的底层代码,尤其是广为人知的那些应用程序之间的通信协议,它们在某种意义上很象现实社会中的法规。换句话说,这些代码对网上的行为给出了一些规范,它鼓励某些行为,而限制其他行为,就像现实社会的法律一样。因此,开放源码带来了一个更民主的开发方式,在这种方式下,好的主意将被集体分享,而不是作为智力资本被个人秘藏着。在这种意义上,开放源码实质上成为一种政治哲学。

2、什么是自由软件(free software)?它与开放源码是什么关系?
  自由软件(free software)是指允许任何人使用、拷贝、修改、发行(免费/少许收费)的软件,尤其是这种软件的源代码必须是可得到的。从某种意义上说,"没有源代码,就称不上是自由软件。"在此,"free"一词意指"自由",而非"免费"。与自由软件密切相关的是所谓Copyleft(与Copyright相对而言)规则和通用公共许可(GPL,将在后面详细讨论),它的分发条款不允许分销商在分发或修改软件时增加任何额外的限制,无论是否修改过,该软件的每个拷贝都是自由软件,从而保护所有用户的自由。在著名的自由软件GNU计划中都实行Copyleft和GPL,由自由软件基金会(FSF)负责统一管理和维护。同时,还有所谓非Copyleft自由软件,是指作者允许对其进行分发、修改、及增加一些附加限制的软件。如果程序是自由的但非Copyleft的,那么它的拷贝或修改版本可能就不再是自由的了。软件公司可能对该程序进行了修改,也可能没有,但都可以将它进行编译,然后作为私有软件产品进行分发。当谈论自由软件时,最好避免使用诸如"赠送(give away)"或"免费(for free)"之类的词,这是因为这些词隐含了有关价格的问题,而不是自由。
  以Copyleft和GPL为代表的自由软件从根本上是与传统意义上的知识产权对立的,GPL实质上放弃了传统意义上对复制权、发行权和修改权的控制,不允许利用GPL产生具有所谓自主知识产权的专有软件,因此也就在某种程度上对于商业领域采取了歧视性政策,在其发展过程中曾经强制要求一些试图利用GPL代码的专有软件公司放弃其知识产权而遵循GPL,对这些公司造成较大的损失。相对而言,开放源码则是自由软件的市场化计划(营销手段),它是对自由软件的支持,更倾向于注重实际效果而不是意识形态方面的大肆宣扬。开放源码的定义非常全面,以至于它的内容可以覆盖自由软件,但自由软件的主要目标是使得开发的软件是自由的,而开放源码的主要目标则是开发高质量的软件,它们之间最简单的区别是各自的优先权不同。有关开放源码和自由软件孰优孰劣的争论在开源社区内一直存在,自由软件的激进人士认为开放源码是以牺牲"自由"为代价来博取资本家的好感,实质上是一种倒退,并认为自由软件要好于开放源码,这些争论涉及到深层次的哲学和意识形态问题,在此不展开讨论。

3、除了开放源码/自由软件,软件业界还有哪些软件模式?
  专有软件(Proprietary software)--是目前软件业的主要商业模式,受到传统版权(Copyright)保护,对它的使用、传播、或修改是禁止的,要么需要你申请许可,要么它限制你不能充分自由地使用它。与专有软件相关的软件模式包括:Demos--免费或低费用试用的软件,是商业软件的一部分,它没有自由可用的源码,没有支持,通常缺乏关键特征;捆绑软件(Bundled Software)--它由商业软件携带并且不用增加额外的费用,但是它一般具有很有限的使用许可,没有自由可用的源码,如微软的IE;联盟软件(Consortium-Ware)--源码由联盟内部共享,但是对公众没有自由可用的源码,如Motif;仅供非商业使用(Non-commercial use only)--可以免费从Internet下载的典型软件,甚至连同源码,但是同时它有严格的许可证限制它的使用,如1998年以前的Netscape的浏览器。
  准自由软件(Semi-free software)--准自由软件不是自由的,但允许个人出于非赢利目的使用、拷贝、分发、及修改(包括分发修改版本)。PGP是一个准自由程序的例子。
  共享源码(Shared Source)--是2001年5月微软发布的一项新战略,详细讨论见问题6。
公共域软件(Public domain software)--就是无版权(not copyrighted)的软件,它是非copyleft自由软件的一种特殊情况,意味着某些拷贝或修改版不再是自由的;
  免费软件(Freeware)--没有一个清晰的定义,但是它通常指那些允许分发不允许修改的软件包(不提供源代码),作者没有放弃传统版权。不要用"freeware"来指自由软件。
  共享软件(Shareware)--允许用户分发该软件,但是任何人想继续使用它需要支付一笔许可费,通常不提供源代码,且不允许在不支付许可费的情况下进行拷贝和分发,即使出于个人的非赢利性的目的。它不是开放源码软件。
  商业软件(Commercial Software)--由商业公司开发,通过收取使用费而获利。大多数商业软件是"专有的",但也有商业自由软件,也有非商业、非自由的软件。下表概要叙述了各种软件模式之间的差别:
  

4、开放源码运动发展历史是怎样的?
  尽管"开放源码"一词最初产生于1998年2月3号在加州的Palo Alto召开的一个战略研讨会,但开放源码运动与整个Unix、自由软件和"黑客"(Hacker)文化有着深厚的历史渊源,经历以下重大历史事件:1968年,ARPANET(Internet的前身)的建立成为对开放源码可行性的一个展示;1969年,贝尔实验室推出Unix的第一个版本,在整个二十世纪七十年代通过免费方式被广泛传播;1979年,AT&T宣布使Unix商业化的计划,导致加州大学伯克利分校建立自己的Unix版本(即BSD Unix);1983年Stallman建立GNU计划来推进自由软件运动,以反对软件所有权专有化的趋势,并创建了通用公共许可(GPL),即Copyleft规则;1989年,芬兰赫尔辛基大学的一名学生Linus Torvalds发布了一个新的Unix变种--Linux,三年后Linux正式接受GPL;1994年,Red Hat Linux成立,迅速成为领先的Linux发行商;1995年,著名的开放源码Web服务器Apache开发成功;1997年,著名"黑客"Eric Raymond发表名为"大教堂和集市"的文章,对比了商业开发模型以及开放源码开发模型,该文成为Netscape创建Mozilla.org的灵感。1998年,Netscape宣布不仅其Communicator 5.0是免费的,而且还将发布其源代码。随后,几个主要的软件厂商,包括CA、Corel、IBM、HP、Informix、Interbase、Oracle以及Sybase,宣布了支持Linux的产品计划,Intel、Netscape则向Linux主要套件发行商RedHat软件公司投资。陷入反托拉斯诉讼的Microsoft,也在一份声明中引Linux为例用以说明其在操作系统方面没有垄断地位,并发生了著名的微软万圣节文档事件。

5、引起开放源码社区强烈抗议的微软万圣节文档是怎么回事?
  1998年8月11日,微软的关于开放源码的一些机密文档开始在微软内部发行,这些文档披漏了微软总部Redmond在未来预备对付和阻止Linux及开放源码软件发展的策略,包括采用特别设计的不公开的协议、文件格式、算法和软件特色。不久以后,万圣节文档--一系列Microsoft内部讨论开放源码软件和linux威胁的备忘录被泄露给了开放源码社区,并且在Web上公布,整个世界一片哗然。开源社区还指责微软采取所谓"FUD"的恶意战术--传播恐惧(Fear)、不确定(Uncertainty)和怀疑(Doubt)--以期达到恐吓人们远离Linux并接受微软最新产品Windows XP的目的。
  从某种意义讲,微软万圣节文档所描述的是两种策略而不是两个产品的争斗,该文档竭力从开源软件的不同策略中辨别出可以直接借用的部分和那些对Redmond无用的部分,微软及其他私有软件公司已经开始在开放源码的主题上进行各种实验,模仿某些策略,而将另外一些留给开源软件世界,其结果是微软提出了所谓共享源码(Shared Source)策略。

6、共享源码与开放源码是什么关系
  共享源码(Shared Source)是2001年5月微软发布的一项新战略,承诺将与合作伙伴、客户"共享"Windows的源代码,同时不破坏知识产权保护,在与客户、合作伙伴共享源代码与支持R&D所需的IP保护之间寻找一种平衡的途径,是微软应对开放源码的战略部署。微软认为"知识产权(Intellectual Property,简称IP)"是软件业的核心资产,应始终加强IP保护,用IP换取回报,保证对R&D的再投入,使软件企业获得持续发展的能力,从而促进整个软件产业的良性发展。 在这一点上,微软主要反对自由软件所遵循的GPL许可,认为GPL威胁到使用了它的任何组织的IP保护,会使其IP对外流失,变为公有知识。但是微软声明并不反对其他的开源模式。
  不过,一些开源支持者认为这是微软在新时期用以形成技术垄断性的一种手法,认为类似于开放源码的开放科学(Open Science)的传统对建立现代经济的贡献要比微软倡导的仅靠"IP保护发财致富"的理论大得多,但微软则认为在一项创意及其相应的产品之间还有一个充满激情的创造过程,比如贝尔、爱迪生的成功仅仅是因为他们善于利用基金、管理和市场洞察力使其创新转变为唯一的、实际的和有用的产品。 有关共享源码和开放源码的论战还将持续下去,一方坚持开放研究传统的重要性;一方坚持保护IP支持技术创新的必要性,双方的侧重点不同。随着Internet和Web服务的不断发展和成熟,或许有机会在IP保护和知识共享之间找到平衡点。

7、开放源码开发模式是怎样的?人们加入开源开发工作的动机何在?国内外情况如何?
  开放源码反映了一种不同于传统软件开发方法的协同开发模式,它通过支持独立的同行评审(peer review)和源码的快速演变来提高软件的可靠性和质量,通常因项目规模大小不同而采取不同的模式。总体上讲,它以Internet为支撑平台将志愿开发者集聚到一起,每个开发者均可自由地提交软件代码,但代码是否被采用要么以一致同意的方式决定,要么由在项目群体中具有声望和地位的负责人决定,"早发布、常发布、听取用户的建议"、"把用户当做协作开发者和Beta测试人员"、"鼓励通过公共论坛和邮件列表的非正式、公开的技术交流和知识共享"等是其基本原理。由于开源项目通常是自发形成,因此其成功取决于能否吸引足够的开发者投入足够的时间从事开发和维护。同时,必须建立行之有效的项目管理、质量保证、进度控制等体系,在这一点上与传统软件开发一样需要投入管理资源。比如,最近在Linux社区针对Linux补丁发展问题产生一些争论,一些知名开源人士认为,Linux的发展超过了Linus作为管理者的能力范围,Linus需要人帮助他组织开发工作并确保代码的及时更新。
  但是在开源社区很少有人愿意只做这样的简单工作而不去做更大的事情,这涉及到人们为什么加入开源开发,影响因素很多,很难一概而论。曾经认为驱动志愿者参加开源项目的主要因素是"在软件世界中留下永恒的印记",但这已经表现出其局限性,比如Fink计划的领导者Christoph Phisterer在他辞职的时候这样抱怨道, "我厌倦了那些只会在有问题的时候大声抱怨,但要他们解决时却默默无声的人……我曾经认为和(开源)社区共享我的知识、经营和实践是件好事,但是现在我懂得更多了"。然而,开源开发模式的一个优势就是Fink计划即使没有他也能够继续下去。在本届LinuxWorld大会上首次公布的最新《"黑客"调查》(《Hacker Survey》)报告中揭示了贡献给开源软件运动成功的(参与者的)动机因素,针对"参与开源运动主要三个动机"调查项的结果是:43%兴趣,43%增进技术,34%支持开源运动,30%满足使用者需求。这些动机推动参与者向开放源码社区做出贡献。非常有趣的一个发现是:把"击败私有版权软件公司"作为主要动机的人只有11%。该《调查》同时为"黑客"(Hacker)正名,明确指出"黑客"不是"破裂者"(Cracker),"黑客"是那些致力于探索未知和创造性解决疑难问题的程序技术高手,而那些到处刺探敏感信息的恶意入侵者应被称为"破裂者"。
  目前,国际上最著名的开源开发社区是开源开发者网(OSDN, Open Source Developer Network,网站:www.osdn.com和www.sourceforge.net),它是世界上最大的、向开源开发者提供免费服务的组织,向开源社区提供最多的开源代码和应用软件,已经拥有346,328注册用户(每天增加700个),同时主持了33,288个开源开发项目(每天增加60个)。sourceforge.net网站每个月被五百万IT专家、开发者和系统工程师访问,产生一亿一千万页面访问量。
  国内对于开放源码日益关注,但其发展仍处于初期阶段,尚未形成一个开源程序员阶层和完整的开源软件社区,已有的开源软件公司也很不成熟,其原因是多方面的,如经济条件限制、不熟悉开源软件开发的通行模式、缺乏熟悉Linux的程序员、盗版问题严重等等。不过,如果国内能够抓住开放源码的机遇,积极与国际接轨,将对发展中国软件业产生深远影响。在这方面共创软件联盟进行了积极尝试并初见成效,建立了中国第一个在线协同开发环境,目前已经吸纳创新技术项目108个,在线开发人员近2000人,形成良好的智力汇聚和成果传播效应,而且社区规模正在迅速扩大,已经成为国内开源社区的领导者。

8、现有哪些成熟的开放源码软件?
  目前已有数百种成熟的open-source产品被广泛使用,涉及操作系统、数据库、中间件、开发环境、测试工具、电子商务平台、群件、办公套件以及大量的实用程序等,以下是一些最著名的:(1)Linux:最流行的非微软操作系统,有些市场调查认为使用Linux的Web服务器已经超过Windows;(2)BSD UNIX:许多UNIX商业版本是直接基于BSD源码或者大多从它的设计中借用来的;(3)Perl语言:是大多数web服务器的动态内容的基础,在UNIX上非常流行;(4)GCC:GNU C编译器是许多Unix平台上首选的C/C++编译器,被作为跨平台工具广为流行;(5)X Window:使用最广的非微软窗口系统;(6)BIND:几乎所有的Internet域名解析服务器使用它;(7)SendMail:邮件传输代理的最高标准,负责处理Internet上超过75%的邮件传输任务;(8)Apache:在Internet网上最流行的web服务器,超过半数的Web站点在使用它;(9)WU-FTPD:在Internet网上最流行的FTP服务器,几乎使用于所有的FTP站点;(10)Samba:一个跨平台网络服务器,提供在UNIX上的SMB文件服务器,被广泛应用;(11)Mozilla:源自Netscape/AOL的浏览器,几乎与IE平分秋色;(12)MySQL:一个广泛应用的数据库系统;(13)OpenOffice:功能强大的非微软Office套件;(14)KDE/GNOME:整合了浏览器、shell及Office套件提供给Linux桌面系统使用。

9、开放源码软件的商业模式是怎样的?
  开放源码概念的提出就是为了避免自由软件(即GPL)曾给公司带来的伤害,因此它鼓励利用开源软件从事商业活动。但是,开放源码的特性使得直接获取软件销售利润非常困难,大多数的开放源码许可证禁止对用户使用、分发、修改软件的权利进行限制,以此避免有人利用开放源码软件牟取直接利润。因此,开源软件只能够开拓与软件服务相关的市场,从而获得间接销售价值。为此,开放源码的发起人之一Eric Raymond提出5种开源软件商业模式:(1)失败的领导者/市场定位者--利用开放源码软件为直接产生收入的专有软件来创造或维持一种市场位置,比如Netscape公司开放Mozilla浏览器的源码以阻止微软垄断浏览器的可能性;(2)糖霜策略--该模式针对不以软件为利润中心的硬件制造商而言,开放源码没有赢利上的损失并可获得开源的优点,比如苹果公司开放MacOSX服务器的操作系统"Darwin"的代码;(3)奉送食谱,开办饭店--Red Hat和其他Linux发行商所采用的模式,卖的是通过组合和测试一个能转的操作系统产生的附加价值,包括免费安装和提供可选的持续技术支持合同;(4)附加产品--出售开放源代码的附加产品,例如在低端市场上可出售杯子、T恤衫,在高端市场上可出售文档和书籍,比如O'Reilly集团出版开源软件的参考资料;(5)未来免费,出售现在--以封闭的许可证发布软件的可执行文件和源代码,但是包含一个有关封闭条款的期限,比如Aladdin公司通过该模式创造了流行的Ghostscript程序。同时,他还提出另外两种尚未经过验证的商业模式,如所�"软件免费,销售品牌"和"软件免费,销售内容"等。当然,还可以利用在开放源码软件之上的专有软件赚钱,比如Loki娱乐软件公司致力于将流行游戏以专有方式移植到 Linux以获取销售收入,一些著名的数据库厂商也将其产品移植到Linux上。
  但是,随着全球经济的滑坡和企业预算的紧缩,开源软件商业模式也面临着严峻的考验,不少开源软件公司由于难以通过服务获得足够的利润而陆续转变专有商业模式,越来越注意保护他们的知识产权,前SuSE CEO提出的问题--"当所有的人都能随意复制的时候,我们的商业模型在哪里?"--比较具有代表性。新思路往往是一种构筑于开源基础上的专有软件,比如著名的VA Linux专注于开放源码软件SourceForge上的专有协同开发软件开发和销售。但Red Hat仍然坚持开放源码,并认为转向专有软件模式不是万能药,困境中的开源软件公司不应指望在下一个版本封闭源代码就能够带来收益,这种做法有过失败的先例。另外,转移到专有软件也会引发厌恶情绪,软件的老版本还会继续成为竞争产品,比如自由软件基金会(FSF)已经开始一个基于VA Linux原先的SourceForge产品,称为Savannah的项目。
  开源支持者认为,尽管许多开放源码业务在萎缩,但是对这一行业真正的商业讨论却似乎在日益增加,IBM继续在Linux和开放源码上投资,许多新的、改进的企业应用登上舞台,致力于企业应用的开放源码开发者比以前任何时候都要多。2001年艰难的金融环境使开源软件公司受到挤压,正如绝大多数计算机公司正面临的艰难情况一样,但是这并没有减弱商业领域对于开放源码的接受速度,开放源码本身不仅存活下来,而且开始在商业世界里蓬勃发展。

10、开放源码与专有软件模式的争议焦点是什么?
  有关开放源码和专有软件模式孰优孰劣的讨论一直在进行着,有关论据从各自的立场看都有其合理性。不过,开放源码的许多理念仍处于摸索当中,尚缺乏足够的实际案例支持,因此,欲得出最终结论为时尚早。以下是一些争论焦点:
(1)Linux本身与Linux公司的关系问题
  开源支持者认为,专有软件人士常常将Linux本身与Linux公司混为一谈,实际上二者是相互独立的,这是市场从未见到过的方式。Windows代表了微软,Netware操作系统代表了Novell公司,如果Novell公司关门,就意味着Netware也不复存在,除非另一家公司看中这个产品并决定让这个产品存活下去。相反,Linux和致力于尝试适合Linux商业模式的公司是不相关的,Linux已经独立存活了一些年,也会继续存在下去,不管这些公司存在与否。
(2)开放源码能否长远发展问题
  专有软件支持者认为,开源不是可行的商业模式,除非Linux会产生经济效益,否则不会产生任何传播,因而也难以持续发展。开源支持者认为,开放源码不能"生钱"可能是对的,不过这只会让软件供应商气馁。在需求方来说,消费者由于使用开放源码正在节省大笔的钱。因为节约了一分钱就是赚到了一分钱,开放源码正是体现了这种经济价值观。用这种方式节省钱的人们也会为了这种方式能够继续存在而不懈努力。
  专有软件支持者认为,如果程序员不能利用开源软件产生收益,他们不会继续投入到源代码的开发编写工作中。即然开放源码开发包含了努力,那么就应该对此付费,如果长期没有报酬则程序员难以为继。开源支持者认为,多数人开始编写软件是因为碰到了需要他们亲自编程才能解决的个别问题,或是出于个人爱好。一旦软件编写完毕后,把其拷贝件发散出去并没有剥夺他们对软件的继续使用,也不让他们有多余的成本支出,因此没有经济上的原因来阻止其发生。至于报酬问题,现在有几种正在尝试的商业模式,但是还未被证明是成功的,在一个新模式即将到来前的这段空白里,开放源码运动可能还会由那些自愿抽出时间的、来自商业软件开发公司(或硬件、服务公司)的程序员自发进行。即使情况更坏,只要开放源码程序员有其他的收入来源,他们就不会停止在业余时间对开放源代码项目的工作。
(3)开放源码是否符合经济规律并刺激经济发展问题
  专有软件支持者认为,世上没有免费的午餐,因此开放源代码的免费是不符合经济规律的。软件开发人、财、物和时间上的投入,软件成本不可能为零,原始的开发成本必须由拷贝版本来承担,企业必须对拷贝版收费才能收回投资成本,才会有投资收益。因此,开源软件以低于成本价销售是一种倾销,可能会毁灭商业软件行业。
  开源支持者认为,在Internet时代,软件市场不存在需求大于供给的现象,因为开源软件的应用打破了这种旧有模式。开放源码可聚集大量兴趣浓厚的开发者从事软件的协同开发,而在商业基础上的投资模式效率很低地把社会需要的不同软件传递出去,因此,为了软件行业的更好发展,要从软件资本运营的角度来看,而不是从软件开发商的角度去看问题。通过开放源代码可以创造大量财富,它打破了以往软件市场受重商主义者主导的局面,释放了经济增长潜力。如果这种方式能让市场经济这块饼变得更大,并使社会财富增多,那么这就是开放源代码是否符合经济规律的最佳答案。

11、开放源码是否更具有安全性?
  总体上讲,安全系统不应当依赖于源码封闭,通过隐藏来达到安全的目的是行不通的,因为那些破坏安全的"破裂者"在这方面更有激情、耐心,无论源码是开放的还是封闭的,他们总会发现漏洞。开放源码的操作系统和应用程序通常比他们对应的封闭对手要安全的多,修复漏洞的速度也快的多,同时不会引入一些人为的安全隐患如预留"后门"。但是,单纯的开放源码也不是解决安全问题的万灵药,还需要有许多合格人员研究和测试代码的安全性问题,并在出现安全漏洞时迅速予以"修复",并非所有的开放源码系统都具备这些条件。
  从国家安全角度出发,西方国家的政府部门认为,在政府的系统中采用一家外国私人公司的操作系统,公众会觉得信息安全没有保障,因此倾向于采用Linux。从某种意义上讲,信息安全问题不单纯是一个技术问题,也不单纯是操作系统的安全等级问题。在涉及国家安全的重要部门,任何国家都希望采用自己国家开发的技术和产品。如果拿开放源码的Linux和不开放源码的操作系统如Windows进行比较,一个很大的差别是:人们可以在Linux的基础上做工作以进一步提高其安全性,而对Windows就只能依赖微软。

12、开放源码的软件拥有总费用(TCO)是怎样的?
  软件拥有总费用包括最初购置费用,以及与安装、管理、支持和培训有关的费用。专有软件支持者认为开源软件的TCO高于专有软件,原因是最初购置费用仅占TCO的一小部分,而开源软件恰恰在安装、管理、支持和培训方面需要用户更大的投入。不过,在Red Hat的委托下,IDC公司经过几个月的研究发现(今年1月下旬刚刚正式公布研究结果):在Intel构架当中使用Linux操作系统比使用RISC/Unix方案要节约TCO的45-80%!调查表明,Linux+Intel具有突出的TCO优势。该项调查还指出,除了费用以外,采用Intel+Linux模式还可以节省人工。为了实现这些好处,企业必须事先仔细考虑在何处部署Linux,理解为什么要这样做、并管理预期和监控结果。该研究结果或许有助于人们重新认识开源软件。

13、开放源码软件的技术支持是怎样的?
  商业支持合同可能是那些正在使用开源软件的公司最关心的问题之一,但对于开源软件能否提供技术支持尚存在一些争议。开源支持者认为,开源软件同样能够获得可靠的技术支持,而且开源软件的技术支持有一些不同于传统做法的特点,比如在商业环境中使用Linux的人士会发现获得的支持远远比以前使用的商业软件印象要深。而且,成熟的开源软件产品通常远比封闭方式厂商的产品要容易上手,并且当需要时,技术支持是绝对便宜和容易得到的。除了常规的商业技术支持合同,开源软件的技术支持通常提供电子邮件和Usenet新闻支持,这些机制比电话支持更加实际有效。同时,开源支持者认为,对传统商业软件的支持经常是有限的并且是低质量的,许多市场商业销售支持人员把注意力集中在帮助初学者上手上,无法回答使用手册上没有包括的问题。许多软件公司认为传统的电话支持是很昂贵的代价,而因此消减它,这就导致了质量下降。

14、何时选择使用开放源码软件?
  开源支持者告诫说,尽管使用开源软件具有降低风险、提高质量、增加透明度、获得正确的特性、可灵活剪裁、有利的版权许可和价格等优点,但是也并非万灵药,有些时候可能不宜使用开放源码软件,比如当一个开放源码产品不能很好地满足一个组织的需求、当开源软件缺乏足够的技术支持、当平台不匹配(大部分开源软件主要支持UNIX和Linux系统,有时也支持Windows NT)、当企业缺乏相应的技术人员等,可能要考虑使用其他软件。同时,Gartner公司也建议在使用开放源码的应用软件时,应特别注意以下几点:(1)开发团体的可靠性;(2)文档;(3)开发商的财政状况;(4)对日常的维护和升级进行深入的研究并且听取专家的意见;(5)考察现有账户记录。在投资那些没有多少人关注或支持的软件时一定要谨慎,这些软件必须为你的环境量身定制。由于国内大部分应用都是基于Windows平台,因此开源软件在国内的使用和普及还有很长的路要走。

15、以Linux为代表的开放源码软件市场状况和趋势如何?
  对于这个问题的回答在问题5中已经有所涉及。由于大多数开放源码软件都是通过Internet免费下载而传播的,因此很难有确切的统计数字,而且许多处于公司环境里的用户由于政治原因隐藏了这个事实。不过,一些市场调查机构仍通过各种方法和途径进行了相关调查。Netcraft的调查结果显示,截止去年11月,在所能够发现的Web站点(共计36,458,394个)中,Apache占有56.81%的份额,Microsoft为29.74%,iPlanet为3.59%,Zeus为2.20%。如果仅计算处于活动状态的站点,Apache甚至达到61.88%。在Web服务器操作系统方面,Netcraft去年第三季度的调查结果如下:

操作系统类 比例 组成
Windows 49.6% Win2000, NT4, NT3, Win95, Win98
[GNU/]Linux 29.6% [GNU/]Linux
Solaris 7.1% Solaris 2, Solaris 7, Solaris 8
BSD 6.1% BSDI BSD/OS, FreeBSD, NetBSD, OpenBSD
其他Unix 2.2% AIX, Compaq Tru64, HP-UX, IRIX, SCO Unix, SunOS 4,其他
其他非Unix 2.4% MacOS, NetWare, 专有的IBM Oss
未知 3.0% 未被Netcraft操作系统探测器确认的

  Evans Data公司在去年11月的一份调查发现,48.1%的国际开发者和39.6% 的北美开发者计划将他们绝大多数应用瞄准GNU/Linux。2001年的一个调查发现46.6%的IT专业人士确信他们的组织将支持GNU/Linux,该数字仅次于Windows。不过,在桌面操作系统中Linux的份额还很小,仅占不到1%,但具有快速攀升的趋势。在亚洲方面,根据Gartner亚太分公司去年底的一份调查显示,在受访的850家亚太公司中(日本除外),有15%在第四季使用Linux操作系统(而在2000年第四季Linux的采用率只有5%-7%),韩国与泰国是Linux安装率最高的地区,各有25%的市场占有率。虽然中国大陆只有8%企业使用Linux服务器,但Gartner认为未来采用率应该会"快速窜升"。这是因为中国政府有计划扶植国内软件产业,例如北京政府上月便和数家国内软件公司签订合约,采购Linux与办公室软件。国内的Linux厂商主要有中科红旗、中软、拓林思、冲浪、蓝点等,以企业级和嵌入式应用为主,尚未形成市场规模。
  在刚刚结束的LinuxWorld大会上,评选出一系列优秀项目,如最佳开发工具Kylix 2(Borland公司)、最佳网络服务器应用软件Powercockpit(TurboLinux公司)、最佳嵌入式解决方案Hard Hat Linux 2.0(MontaVista软件公司)、最佳开源项目Open WBEM (Caldera公司)、最佳生产率应用软件Unicenter AutoSys Job Management 4.0(CA公司)、最佳系统集成方案及最佳参展产品Unicenter Network & System Management(CA公司),这些实用程序对于加强Linux的应用普及非常重要。
  IDC预测,Linux的市场份额将从2000年的27%增长到2004年的38%,是增长最快的操作系统。Gartner则预计2002年Linux的收入将增加50%,未来三到五年,Linux的市场空间将达到100亿美元。研究表明,Linux未来的发展主要依赖以下几个因素: (1)销售商的支持--除了传统的Linux公司以外,IBM,HP,Sun这样的大企业投身开放源码事业也是非常重要的;(2)企业对传统应用软件的依赖程度--只有消除大家的疑虑,并推出丰富的应用软件才能让开放源码应用上一个新台阶;(3)正确对待Linux平台上的专有应用软件;(4)企业应用还要加强。

16、为什么IBM要在Linux上投资十亿美元?这项投资是否会继续?
  IBM公司之所以积极的采用Linux操作系统并促进它的进一步开发是有其私利的原因的,这是因为Linux能够在多种不同的计算机系统上运行,包括IBM公司自己的四条服务器生产线,这些不同的服务器之间的区别可以通过采用相同的Linux操作系统来减小。IBM期望最后能在垂直的市场中获得有利的收获,例如技术计算,零售和无线通信,并且通过Web,数据库,电子邮件和协作式计算环境(例如WebSphere, DB2, Domino)交叉实现这些功能。IBM甚至声称开放源码运动将给IT产业带来革命性的变化,没有加入开放源码运动的厂商是"逆历史潮流而动"。今年1月30日,IBM宣布已经通过软件和系统销售完全收回2001年对Linux投资的10亿美元,与其它竞争者相比,他们从Linux和开源软件运动中得到了更多的好处。因此,有理由认为IBM将继续对Linux投资,并且比早先的举动更加理智。

17、其他著名IT厂商对于Linux的态度如何?
  惠普认为2002年对Linux而言将是突破性的一年,Linux已开始进入消费电子产品市场是一个重要的里程碑。一旦惠普和康柏合并,惠普将与康柏一道在树立Linux的商业信誉方面发挥主导作用,要在各方面都支持Linux,将开发面向电信运营商的大型服务器优化Linux系统支持语音和数据网络服务。Oracle公司表示,将把其下三款 UNIX 操作系统的应用程序服务器软件移植到基于Linux操作系统和Intel芯片的服务器集群上,认为Linux在安全性方面有得天独厚的优势,今后将全力支持Linux,并将与Red Hat合作,向用户提供预装Oracle应用服务器软件的服务器。其他的软件公司如CA也有类似打算。此外,大多数硬件平台提供商已经把Linux当做重要的操作系统之一,他们认为大众对Linux的需求将超过其他操作系统,Linux将作为独立的开放式开发环境存在于不同的平台上,这需要将大部分Unix技术融入Linux标准中,使得供应商能从相应的专利中获得利益并且为世界性开放源码运动做出贡献。但这个广阔的市场容量和可移植性还需要十年左右的时间。

18、Linux厂商下一步面临的关键问题是什么?
  Linux正在呈现出良好的发展势头,但同样也将面临一个新的、艰巨的挑战,就是发展与之相配套的服务渠道。当越来越多的企业客户使用基于Linux操作系统的机器,一个现实的问题就是服务的瓶颈。目前,Linux供应商主要还是在操心如何销售,并没有关注过相关的服务保障。关于这一点,有的开源人士指出,Linux和开源软件公司应向微软学习--认真听取用户意见,为用户着想--Linux和开源人士常常陷入追逐新技术的误区,而最终用户则从不考虑软件本身是否很棒,他们关注的是如何使他们自己的生活和工作变得更加容易。如果这一问题得不到有效解决的话,Linux前进的脚步将不得不减速。值得庆幸的是,厂商、分销商以及方案供应商对于Linux服务已经重视了起来,建立完善的Linux服务渠道已经被提上了日程。

19、商业IT公司的不断介入对开放源码社区有什么潜在影响?
  随着商业IT公司不断介入开放源码运动,在赢利性的IT公司和自愿式开放源码开发者日益融合时,产生了所谓"合作-竞争"现象--企业争相参与到互惠互利的开源项目和活动中,它可能导致在商业公司与非商业开源社区之间的联合,但同时引发了几个重要问题,比如:开源项目的资助公司怎样与个人志愿开发者合作而不给他们一种被剥削的感觉?企业怎样与已存在的开源项目合作并对其产生影响?当一个完全由志愿者组成的项目走向"职业化"时会出现什么问题?等等,对于这些问题的回答可能影响到未来开源运动的走向。
  开源项目与商业社区的"合作-竞争"新秩序中存在着各种折衷,通过采用开源许可证,企业就放弃了一些对自己开发的项目的权利,通过建立开源软件项目的独立".org"实体并且鼓励开发者加入组织并遵守相关规则,个人开发者可能发现工作在一个正式的组织结构中。可以认为,"合作-竞争"只是开源社区持续演进的又一步,努力寻找个人与团体(包括赢利和非赢利的)互利合作的方式将是真正改变软件开发和软件商业模式的关键。

20、开放源码许可类型有哪些?
  自1998年2月美国OSI成立之后,经其正式认可的开源许可类型已达30种(2002年1月止),平均3个月出现2种新的开源许可。同时,在GNU工程/自由软件基金会的"自由软件许可"页面上包含了15种与GPL兼容的自由软件许可、2种文档许可以及总共42个软件许可再加上4种非软件许可。可见,开放源码许可类型非常多,这一方面说明开放源码/自由软件模式的丰富多彩以及所取得的成绩,但另一方面也给开源爱好者带来许多不便,甚至可能因许可相互不兼容导致政治和法律问题。所谓许可兼容,是指用于同一作品不同组成部分的许可证之间不会导致互相矛盾的许可限制,从而保证了整个作品的许可权利一致性。由于这些许可区别较大,每种许可都给许可人和用户施加了独特的义务、限制,因此,如何保证许可之间的兼容性是开源社区必须解决的问题之一。
  一些著名开源许可类型如下:(1)BSD许可--它要求版权和著者身份申明;(2)GPL--通用公共许可("CopyLeft")禁止派生或发行产品的限制;(3)LGPL--库/次级GPL,它不同于GPL许可证,在这个许可证下,库(函数库)可以自由地联接到专有软件;(4)Artistic许可--使作者保持对进一步开发的控制。(5)Netscape公共许可(NPL)--基于GPL精神的新的许可证,但是保持了对源码更多的控制和所有权;(6)公共域(Public Domain)--通常用于决定性的算法以鼓励广泛使用,通常由美国政府使用。

21、GPL和LGPL具有什么特点?
  GPL是通用公共许可的缩写,GPL与Copyleft共同构成自由软件生存和发展的基石,具有以下特点:(1)GPL赋予使用者复制、传播和修改自由软件的权利,确定了向使用者免费提供自由软件源程序、开放技术秘密运作方式;(2)GPL赋予使用者的权利可以行使,未赋予或者未对自由软件的使用做出明确约定的权项,不能主观地认为是开放的权项;(3)GPL是自由软件社区和国际上公认的契约,目前尚未在法律上获得明确解释,违反GPL可能导致自由软件组织的谴责和国际社会的声讨,甚至法律诉讼;(4)GPL要求使用者原封不动地将GPL连同GPL代码一并进行拷贝、传播;(5)GPL严格限定自由软件变成"专有权"的可能性,对自由软件可能受到专有权威胁进行了约定,即:任何专有权必须保障每个人可自由使用或者无需许可使用。
  GPL被微软说成具有"病毒性":其以GPL本身的条款感染从GPL源码派生的任何软件,要求派生软件同样遵循GPL。这种说法在某种意义上有其合理性,关键在于如何界定软件是否属于GPL派生作品,在这一点上还存在不少争议,自由软件基金会对于GPL派生作品的定义相对更广泛。由于GPL反对专有权的特点导致专有软件无法利用GPL代码,因此自由软件基金会对GPL稍微放宽了一些限制,形成所谓LGPL(称为库GPL,或次级GPL),最初主要适用于软件功能库,允许专有软件自由使用LGPL软件库,而不受其影响。但自由软件基金会鼓励使用GPL,包括软件库。

22、针对GPL存在哪些疑问?
  随着Linux的日益普及,业界对于Linux所遵循的GPL也越来越重视,由于迄今为止GPL并未在任何一个国家的法庭上得到过解释或验证,因此引发了不少疑问。在Linux内核方面出现过一些违反GPL的案例,但是已经友善地加以解决。目前还有一些正在进行中的案件,比如去年9月自由软件基金会指责RTLinux(一种基于Linux的实时操作系统,加入一个相对独立的实时内核模块与常规Linux内核协同工作)专利违背了GPL,同样的问题也发生在遵循GPL的著名游戏软件DOOM和QUAKE身上,他们试图让用户在使用其源代码时签署所�"点击通过"(clickthrough)许可来放弃其GPL权利。
  在GPL中一些用词存在模糊之处比如"发布"("release")、"发表"("publish")和"发行"("distribute")。技术的发展已经允许软件构件可以利用构件技术或Web服务技术更为轻松地'连接'('linked'),因此"发行"的概念已经与GPL第二版制订时大不一样了。据说自由软件的创始人Stallman正在制订(进度非常缓慢)一个更加具有"商业友好性"的GPL第三版。在嵌入式Linux社区中也出现了一种担心,因为按照目前的GPL,如果一些专有的嵌入式OS不是通过系统接口而是直接与GPL应用连接的话,则就被认为违反了GPL。在此,人们主要担心的是无法确认一个软件究竟是不是GPL派生作品,因为没有人真正测试过这个定义。GPL隐含的认为一个派生作品就是那些与原始作品静态/动态连接的作品(这可能在GPL第三版中发生变化),但不少开源法律专家认为与GPL代码的动态连接并不构成派生作品,FSF也承认最终的解释权掌握在法官手中,至今尚未正式测试过。顺便提一下,由此还引发了一个更为重要的问题,可以想象某人会声称,在阅读了具有特定实现目标的源码后写出一个实现同样目标的代码事实上构成了一个派生作品,这也就是人们对于微软的共享源码策略的重大疑虑所在。
  由于GPL与现行的专有软件商业模式截然相反,因此专有软件公司对GPL的疑虑很多,在这方面微软有相应的研究结果,基本反映了GPL针对专有软件公司而言存在的各种问题。对于GPL各种讨论穿插在本文的不同部分,以下针对专有软件如何使用 GPL软件(如Linux)进行初步讨论。
  GPL是经过精心编写的,但从未在法庭上测试过。这对于专有软件来说是一个机会,可以使用 GPL 下的库,即使GPL禁止这样做。GPL是通过版权法实施的,美国(包括中国)的版权法都对"合理使用"有例外。两种重要的合理使用包括相兼容和逆向工程。
  设想你想要写一个Windows的程序,但是你需要使用一个未公开的API。Microsoft是不会提供给你信息的,因此你不得不自己寻找。美国法律(中国新颁布的《计算机软件保护条例》也有类似规定)通常允许你反汇编Windows的一部份和调用秘密函数,即使Microsoft说你不能。类似的,Microsoft 不能阻止著名的开源项目Samba小组对Windows的文件共享作逆向工程。
设想你在销售Linux上的专有软件。如果用户的系统中有Readline库,你将要使用它,但是Readline库是遵循GPL的。因此你决定不自带Readline库,相反,你修改了你的程序去查找Readline,并且要求用户自己安装它。(例如,在RedHat 5.2 中,Readline 是缺省就安装的。)
  你这样违反了法律吗?你并没有为任何人复制Readline的拷贝,GPL 并不阻止你拷贝自己的程序。你是自己使用Readline,而GPL并不禁止这个。(即使GPL想禁止,它在"合理使用"的例外规定下也可能无效。)你的用户可能不把你的程序与Readline连接,而美国的法律允许他们这样做(中国的法律类似),GPL 也不会阻止他们。
  那么,有什么能阻止专有软件使用Readline呢?你的程序是Readline的派生品?因而被GPL约束?这并不恰当,既然它没有包含任何Readline的代码。使用 #including Readline的头文件就使之受GPL的约束?很可能不--一个好的律师会说,这与"以内部兼容为目的的逆向工程"是一样的。也许你不得不在一个干净的环境下重新键入头文件,但这对小的库来说并不难。
那么,一个专有的应用程序可以动态连接到一个GPL库(注意:不是LGPL库)上吗?也许可以。但如果一个专有的应用程序不能动态连接到一个GPL的库,那么Microsoft也许可以对Samba找麻烦。这是一把双刃剑。
  而且,所有开源许可证关注的是软件的发行,因此,除非发行GPL软件的派生作品,否则当仅供内部使用时,GPL并不要求公开源码。这为涉及国家安全的重要部门提供了一种可能性,即在内部使用定制的安全Linux但不公开源码,从而加强保密性。

23、如何理解各种开放源码许可背后的含义并加以选择运用?
  在法律上,软件被视为一种财产形式,这是讨论软件许可证(包括开源许可证)的前提。在此将从务实角度分析以下开源许可:公共域;BSD许可;MIT许可;Artistic可证;Mozilla公共许可;GNU通用公共许可(GPL)和它的次级形式LGPL,以及一些不太为人知的许可证,如:Java社区源码许可证,和IBM XML4J(适用于Java的XML)评估和商业许可证。
(1)在公共域中
  这是一个在开放源码发行中被广泛使用、但尚未通过美国OSI认证的术语:将软件放"在公共域中"。一个在公共域中的作品与一个拥有版权但已过期(通常是版权所有者死后50年)的作品具有相似的法律地位。任何人都可行使作品的使用和获利权(执行、复制、发行软件),但是对于作品处置(授权或限制他人对本作品享有权利的权利)的最终权力却不属于任何人,因而,也不能够被行使。在公共域中的软件遵循的版权法与那些作者已经去世多年的文学、音乐作品一样,可以在自己的作品中包含公共域软件,修改它、复制它、也可以在刊物或会议上发表评论,但是不能仅仅因为他人作品中偶然使用或包含了公共域作品、就进而对他人作品随意行使复制、修改权(因为这些作品可能已经不在是公共域作品了)。另外,任何人拥有通过公共域软件获利的自由。就商业角度而言,公共域软件使用者不必担心侵权问题。
(2)限制最少的许可
  软件许可模式总是保留对产品的处置权(授权、限制、转让和许可有关权利),所有开源许可证共同之处在于都包含这些元素,但针对授权或限制却有所区别。
  限制最少的许可只保留了处置权。例如BSD、MIT许可在作品使用、派生作品创建、和再发行(只要明确保留原作者对于作品的处置权即可)方面非常宽松,同时包含的权利是被许可人可根据自认为合适的方式制定不同的许可。Artistic许可的规定有些模糊,只涉及了原始"软件包"的复制和修改,没有涉及它的发行。
(3)不同限制的许可
  最常见的情况是,开源许可证在源码使用和产生派生作品方面比较宽松,而对于作品发行则在一些重要方面加以限制。以下是四个最常见的发行限制条款:只能在公司或机构内发行软件和修改版本(Artistic许可的一个方面);只要提供了某种增值,就可以以对象(编译过的)的形式发行软件和修改版本(XML4J商业许可);只可以免费发行软件和修改版本(Artistic许可);必须为修改版本提供源码,或者保证软件的用户可以免费获得源码(GPL)。这些限制主要影响作者从知识产权中获利,有争议的GPL仅针对发行加以限制。通常,这些许可不对由软件产生的作品进行限制,以便这样的许可证得到广泛运用。这同样适用于终端用户应用--如字处理和电子表格--和大多数软件开发工具,甚至商业软件(如编译器、库、编辑器、文本操作和make工具)。为了避免所谓的"分叉"(forking)问题,有些许可证对软件的发行实行绝对限制,其结果是绝大多数改进是在主源码库中进行的。但是其他许可证限制发行只是为了保持对软件的控制。
(4)限制最严格的许可
  限制最严格的许可证之一GPL在软件发行权利上是十分宽松的。在GPL下,当事人可以向任何人发布原作品或派生作品,只要当事人保证来自初始作品、当事人获得的修改、当事人自己进行的修改的源码全部可自由获得,当事人因此颁发的任何许可都必须遵循GPL的限制条款。许多源码许可证对软件源码的使用方式加以限制,这一点在Java社区源码许可证中有所体现,该许可证要求对源码的免费使用仅限于研究工作,而其他使用则要求进行兼容性测试和支付版权费。其他许可证如XML4J评估许可证,限制对源码的使用应是"合法且非商业性的"。更严格一些的许可证仅在有限时间期限内授权这些权利。一些人争论说那些对使用或派生作品作限制的许可证不是真正的开源许可证。然而,这种做法在学术界最普遍采用的许可使用形式,它推动了所谓开源运动的发展,并为这一运动提供了大量有用的源代码。而且,那些完全禁止执行软件的许可证仍然有用。这是一个新的趋势,在一些介绍算法和编码技巧的书中可以看到这种源代码的使用。这些书提供源代码,但是规定只能为学习的目的而使用。任何人未经授权不能通过光识别或键盘敲入对软件进行直接复制,这样就消除了任何将其传送给编译器的可能性,更不用说执行了。
(5)许可证是否合适
  如果想对开源程序包做的只是利用其作为工具来生产与其分离的作品,那么绝大多数开源许可证都是可以的。诸如编译器、文本编辑器等工具属于此类,但是,库和解释器可能不属此类,对此应慎重对待。如果出于别的目的,最好选择公共域软件。或者,如果想将软件用于商业性发行且不愿意发行自己所修改的源码,那么可以选择诸如MIT、BSD等许可证,它能使修改保持专有。如果不介意公开源码,GPL和LPGL是不错的选择,这样可以充分利用开源社区知识并享受不受限制发布产品的乐趣,但无法从软件本身上赚钱,而只能通过方便且经测试的形式在专利增强(不能用GPL代码编译或链接)和定制方面来赚钱。与上述许可不同的是,如果想在与其它人共享代码时提供相应的保护,可以选择Mozilla 公共许可,该许可将软件(和任何对它的改进)分为两个部分:受保护的("隐蔽着的")部分和贡献部分。如果有人要修改和分发受保护部分,则只要他们还分发修改部分的源代码,就允许这样做。如果他们要更改软件但使它们的修改保持专用,则他们可以不带源代码分发它们,并且必须只通过它的API(应用编程接口)访问受保护的代码。如果他们需要更改受保护代码的API,则只要他们将源代码分发到这些更改,他们就可以这样做。这种许可证在完全开放的GPL世界和封闭的BSD/X许可世界之间架起一座巧妙的桥梁。类似Java社区源码许可这样的许可证非常复杂,未弄清楚前最好不要碰其源代码。
  在任何情况下,都要仔细阅读和搜索下列关键字和短语:使用、复制、发行、修改、派生作品、子许可证、收费。这些词和短语描述了涉及版权作品的权利,他们也在规定授予和限制这些权利的文档中被特别提到。如果你计划将你的软件以开放源码的形式发行,那么建议你采用在美国OSI网站上列出的许可证中的一种,这些许可证已经过律师评审,而且同样重要的是,它们可以自由使用。因为许可证也可以是有版权的,不是所有的许可证都是开放源码的。最后通过下表给出不同许可实践的对比:

许可 可以与非自由软件混合 修改版本可以被当作私有,不再反馈给你 可以被任何人重新许可 针对你的修改,为原始版权持有者保留特殊的权利
GPL        
LGPL
X
BSD
X
X
NPL
X
X
X
MPL
X
X
公共域
X
X
X

(X 表示具备; 空格表示不具备)

24、开放源码涉及哪些潜在的法律问题或风险?
  如前所述,开放源码软件也和专有软件一样,是受版权保护和许可证限制的。软件业用版权法来保护软件拥有者和开发者的权利,用许可证来约束这些权利的行使和转移。根据中国最新公布的《计算机软件保护条例》规定,当软件被首次创建且固定在某种有形物体上,不论是否发表,依照本条例享有著作权。条例保障和保护软件供应商有关复制、分销、准备派生作品的权利。这些权利是分离的,可以通过许可证转让给其他方。专有软件供应商通过禁止产品修改、限定客户可复制的数量和限制其发行,以获得最大投资回报这样的商业利益。开源软件供应商不仅允许企业运行和复制软件,也允许其在一定条件下修改软件和发布修改后的版本,具体条件将随着许可证的不同而变化。许可证将用户社区划分成那些鼓励在企业中进行开放源码开发的群体和反对这样做的群体。
(1)许可还是盗窃?
  开放源码软件给予企业用户的自由程度与软件提供者发行该软件的目标相关。那些希望软件被广泛发布的提供者会放宽许可证限制,允许用户复制、修改、甚至可以在很小限制的情况下发布修改版本。例如,当AT&T停止向学术机构免费提供Unix源码时,加州大学伯克利分校开发了BSD(伯克利软件发行版)。他们的目的是创建一个Unix的克隆版本并尽可能广泛地发行它。其结果是,BSD通过一个许可证发布其源代码,该许可证允许用户修改源码、附带或不附带源码的发行修改版本。BSD许可证实现了广泛发行的目标,开源社区修改了BSD代码,反馈给社区的是FreeBSD、OpenBSD和NetBSD。还有出于商业目的而开发的BSD OS,BSD已经为企业带来了效益,SUN最初将BSD和硬件一起免费发布,后来将它开发成一个专有操作系统。BSD代码也存在于微软Windows NT和Apple MacOS X中。
  现行的BSD许可证仅简单地要求在源码或二进制码或二者共同发布时,应保持原版权声明和一个拒绝明示/暗示担保的声明,同时还要求,在未经许可的情况下,"不得利用作者来签署或促销该软件的派生产品。"X Window系统适用的X11许可证更简单。与BSD一样,X11要求发布时保留原版权声明。X11的版权持有者包括:康柏、惠普、IBM、Hummingbird Communications、Silicon Graphics、Sun和开放集团。包括企业开发者在内的所有人都从更为宽松的开源许可证中受益。
  当开源许可证强制开发者将源码贡献给开源社区时,例如一个始于GPL源码的系统,就不再是上述情况了。与BSD、X11许可证一样,受GPL保护的软件可以被任何人不作任何修改的运行、复制、发布。但是,假如企业开发者对软件作了修改,则修改后的版本必须与其源码一起发布。因此,将开源代码与专有代码一起编译将强制开发者将全部成果贡献给开源社区。编译受GPL保护的源代码并将其作为专有代码的行为等同于盗窃。而且,GPL坚持封闭式的开源社团,对企业开发者存有敌意。其结果是,一些开源人士对开源许可证进行了灵活处理,以促进开源软件进入企业。美国的OSI以推动开放源码软件在企业中的运用为宗旨,对符合开放源码定义(8.1版)的许可证予以认证,并留存通过认证的许可证的副本以供重用。尽管OSI是促进那些可同时访问源码和编译代码的软件的自由再发布,但它并不歧视专有软件企业。经OSI认证的许可证包括:BSD、GPL、X11、IPL(IBM公共许可证)、MPL(Mozilla公共许可证),SPL(Sun公共许可证)、APSL(Apple公共源码许可证)等等。
  被IPL、MPL保护的开放源代码通过将被保护的开放源代码从修改版本中分离出来,从而形成企业开发模式(IPL、MPL下受保护的源代码可以与修改后的版本分离,从而允许了企业参与开发)。企业开发者可以修改专有软件中的被保护代码,而不必再将其发布。开发者往往愿意将修改后的版本转为己有,而不愿将其公布于众。SUN公司的SCSL许可也对受保护的代码和修改的代码作了划分,但是它要求那些依赖Sun的技术来维护与受保护代码兼容性的开发者付给Sun版权税。
(2)许可证问题
  以前开发人员必须考虑的只是软件的依赖性和不兼容性,现在他们还得考虑开源软件项目之间许可证的冲突。如:Mozilla包含四个不同的许可证。参与该项目的开发需要注意许可证间的冲突。事实上,在开源项目间互借代码很快就会进入法律上的迷宫。Galeon是一个基于Mozilla的浏览器,利用GPL下发布的GTK+图形工具包开发。对其的分发将在分别受MPL和GPL保护的模块间产生冲突。同样,Transarc(IBM子公司)以IPL许可开发了一个Linux分布式网络文件系统的变体。不幸的是IPL与GPL不兼容,因而禁止其在Linux内核上运行。有人建议,OSI应该关注一下许可证间的冲突问题,而不是简单的盖印发证的过程。当开发者获得源代码并且去自由地修改它时,理论上的修改次数与开发者人数是一致的。因此,对源代码的每个错误修正和改动,都具有"分叉"出一个新版本的潜在可能。开源项目要求编程人员自愿结合,假如某一项目没有按编程人员的预期发展,这些编程人员可以撤出,去开发他们自己的项目。在任何市场�"分叉"未必是一件坏事,它增加了选项、促进了个性选择。然而在某种意义上,选择的增多,稀释了市场以及为突变版本提供支持的资源。BSD就是一个典型的例子。
  BSD是一个强大的、成熟的企业级操作系统,然而分叉使其归入细分市场。Wind River系统公司的BSD OS定位于服务器市场,并想在嵌入式系统市场大显身手。而免费的NetBSD瞄准了便携式市场。BSD变体减少了可用的在线支持,敞开了通过不同BSD版本进行分叉的各种可能性,同时没有为企业提供采用新技术的机制,除非企业有自己的Unix开发人员。分叉不只是类似BSD这样宽松的许可证的产物,在GPL这样限制严格的许可证下也可发生。如果开发人员对于Linux内核发展方向不满,可以设计补丁与内核一起编译,然后按照GPL发布该派生版本。或者开发者可以借助LGPL来创建独立的模块并保持其专有性。
  LGPL的目标是允许专有代码调用GPL代码,专有代码不能与GPL代码一起编译或静态相连,但可以动态连接并通过API(应用编程接口)调用GPL代码。然而,静态与动态连接之间的区别是模糊的,新技术更引入了模糊性。例如,CORBA就允许将各种软件未加编译的组合在一起。开放源码许可证必须考虑在将专有软件与开放源码结合进行开发和运行时遇到的模糊性问题。否则,企业开发者不敢冒然将二者结合运用,那样的话,开源社区就难以实现开放源码进入主流开发的目标。
  随着更多的开放软件被不断增长的社区用户所使用和修改,某些软件专利受到侵犯的风险也随之增大。许多开源支持者赞成所谓"毒药避止"(poison pill)规则,即如果你造成了侵犯他人专利的事实,那么你随之失去你的开源许可权利。尽管这一规则抵制了开源社区内的侵权行为,但在开源社区之外仍面临挑战。在这个世界中,企业开发者经常在谈判桌上交易专利权,而开源社区的活动则处于黑暗中。尽管为开源软件申请专利以支持社区使用会增加成本,但是它减少了软件被社区外申请为专利的机会。所有的开源许可证关注软件的发行和发表,而不是软件的执行。在代码和数据很难区别的场合下很难定义什么是执行,比如对一个Apache配置文件或者PERL脚本的修改构成了一个执行吗?尽管对软件的执行是否应加以考虑在社区内尚存在分歧,技术的发展对其有所促进。例如,客户/服务器技术使你在不必扰乱代码的情况下对代码加以利用,软件可以利用CGI(公共网关接口)从Web服务器上加以调用,尽管接口不是分布式的,但使用它不需受任何法律约束。
  详细描述执行权是困难的,可能会得不偿失。对于软件而言,执行意味着"非发行的使用"。其结果是,执行许可证成为最终用户与软件发布者之间的协议,通常被实践为要求最终用户点击"点击确认"按钮。至于这些机制是否能提供构成合同的充分要约和承诺还有待观察。同样,开源许可证能否在法庭上被通过也不清楚。
(3)合法性问题
  经过当事人协商签订的单个许可证通常包含合同必需的要约和承诺,而开放源码许可证的规定则显得不够完善。例如GPL在软件的每次转让中,都授权每个开发者或使用者可从版权持有者处得到一个直接的许可。随着软件的不断转让,要约和承诺被稀释,法庭可能发现执行已不能强制实施。开放源码许可证受益于强大的热衷于编写好代码,而不是搞诉讼的开发者团体。冒犯开放源码社区者必受社区的谴责而退缩回去,但这也阻碍了法庭对开源许可证的解释。这种状况可能会随着越来越多企业参与开源运动而逐渐得到改变。开放源码许可证引发了许多重要的法律问题。有些问题是copyleft与copyright间的相互关系,及条款的合理使用。有些问题涉及到社区开发项目中源代码的个人拥有权。有些问题是关于开放源码许可证和其有关条款的法律效力和强制性的,以及对潜在的侵权问题的法律解决。还有些是有关软件专利权的许可证及其不足条款的解释问题。最后还应该讨论的一个问题是一个开源项目由谁来负责,当这一开源项目的主要参与者离开时会有什么情况发生。值得注意的是直接解释开源许可证或某些特定许可证下的特定条款的法律裁定案例还没有。自由软件基金建立之后就没有经历过GPL的法律诉讼。而由BSD Unix许可证引发的纠纷已在庭外解决。简而言之,与开放源码许可证有关的法律问题的解决还没有定论。以下是一些有关开放源码在法律方面的重要议题:
  A、拥有权--在限定的范围内,使用GPL的作者已将他们的版权拥有权交给了自由软件基金会FSF,这样,FSF就集中拥有了一个项目的所有版权。尽管也有一些项目试图将版权拥有权集中到项目管理者身上,但是,绝大多数开源项目还涉及到众多版权拥有者。在这种情况下,就不单涉及项目拥有权问题,还会涉及到在侵权行为发生时谁将有版权执行权。
  B、版权和许可证的强制执行--因为开源项目涉及到众多版权拥有者的作品,而每个作者都在他/她的作品中应用了一个开源许可证,因此当对某个许可证的侵权或违约发生时,很难断定该由哪个作者来保护版权和许可证条款。是必须将所有版权拥有者都找到然后联合行动呢,还是由某个个人代表其他人来采取行动呢?对这个问题的答案还不清楚。虽然开放源码许可证要求在任何发行版本上都须包含所有作者和版本日期,但是问题的关键是由谁来执行。FSF在这方面的作法或许值得借鉴,通过与版权所有者签定合同,FSF可以独立维护许可证,当侵权行为发生时也可以独立采取行动,而不必召集所有版权拥有人。然而,FSF的作法在开源运动中并不常见。
  C、商业开发--随着商业开发者对开放源码模式越来越感兴趣,出现了大量有关发布作为开放源码软件的商业软件的问题。例如,当一个商业软件宣布为开源软件时,其原商业许可获得者有什么权利?当一个商业开发者在一个基于公司原来的专有软件之上的开源项目中不得不采用部分开源社区贡献的软件时,他有什么权利?商业开发必然会带来开源许可证数量的激增吗?每个新增的许可证又会产生众多变体吗?商业开发者及其律师会满足于限定在已有的开源许可证中进行选择吗?商业开发者会不会为了从开放源码产品中获得收益而滥用开源许可证?由于缺乏法律裁定,这些问题尚无确定答案。对开放源码的思考必然会产生很多问题,需要开源运动的参与者对可能的结果和风险作出评估。
  D、法律解释--开放源码许可证不是由软件许可证律师制定的,所以它们大都很简单、直白,却可能漏掉了某些条款,在接受律师或法庭评审时可能会产生歧义。即使那些试图严格遵循许可证条款每一细节的开发者,也会在特定许可下究竟什么能做、什么不能做等方面遇到法律解释问题。开源许可证的一个独特之处是,长期以来它们在开源社区内已经得到一致的解释,常常是社区领导者(如Stallman)的口头解释。历史上,曾经就许可证的解释有过激烈的交流和争论,也曾试图对标准开源许可证条款作出修改和"改进"。显然,Stallman对GPL的解释起了关键作用,但是随着时间的推移,他以及其他元老将退出历史舞台,而留下了一些不确定成份。随着开源模式的推广,对开源许可证作出法律解释,已变得越来越重要。而且,对版权法的解释和修改可能对开源许可证的解释产生重大的影响。尽管为了便于法律解释应限制许可证的数量,但是随着商业软件不断转移到开源模式,将对增加许可证及其变体有越来越大的需求。开源许可证及其变体数量的任何增加,都会继续导致许可证条款解释问题和许可证不兼容问题。
  E、特定许可证漏洞--开源许可证的简单模式可能会引发大量特殊解释问题的产生。例如,GPL和其它许可证没有规定许可证的永久性。这个遗漏可能会使法庭在以后判定一个开源项目案例时,裁定为开源许可证已过时,因为它的"合理"期限已过。其它的条款缺漏和省略也可能导致类似的问题。再看看BSD许可的例子。BSD许可证限定了对于包括直接损害在内的所有损害的责任(即"不担保")。有人争论说,直接损害责任的限定是合同的关键要素,若不允许某人获得直接损害赔付会影响到合同成立与否。因此,法庭可能会判定(BSD)合同不成立,或有关直接损害限定的条款使得合同不合理或不可强制执行。
  F、专利--专利是威胁开放源码/自由软件可预见的未来发展的关键性因素,比如微软为ASF(Active Streaming Format)申请专利保护,从而将开源软件完全排除在外,一些专有软件厂商发现这威胁到与开源软件的互操作能力。一些著名开源人士建议通过以下方式缓解专利造成的威胁:鼓励企业通过许可他们的专利可自由用于开源软件来增进其公关形象,一些企业似乎愿意某种限定方式对专利进行许可,比如允许GPL软件自由使用,但他们不会允许LGPL库使用,因为LGPL允许任何人将其用于专有软件;鼓励'开放专利'(Open Patent)的发展,申请那些可供开源软件自由使用的专利,但这涉及到费用问题;鼓励交叉许可(cross-licensing),建立所谓专利池(Patent Pool),允许企业将其用于专有软件,同时要求企业交叉许可自己的专利以供开源软件自由使用,但这也存在许多问题,比如假设某企业仅有几个专利而另一个企业则有数千专利,如何平衡二者的付出与获得?等等。

25、针对新颁布的《计算机软件保护条例》,民间存在哪些争议?
  我国新颁布的《计算机软件保护条例》在业内引起了激烈争论:中国知识产权是否应该有保护的尺度?中国数以千万计的计算机用户会不会成为违法者?中国应不应该超世界水平地保护软件著作权?若干位评论家和业界人士起草了一份《呼吁书》联名呼吁注意在我国软件著作权保护立法问题上的一种倾向,即无视中国还是一个发展中国家的现实,超越我国经济社会科技文化发展现实水平、超越WTO标准、盲目提高软件著作权保护水平。新条例与国际最高等级的版权保护法接轨,规定不论单位、家庭还是个人,无论目的如何、对象是谁,"使用未经授权软件就是违法和侵权","使用盗版软件就违法"。从某种意义讲,新条例与自由软件、开放源码的基本思想正相反,国际上有关开源软件与专有软件之争或许对中国软件业有所启示。

26、开放源码与专有软件有机结合的许可证分层模式是怎样的?
  基础软件开放源码是软件产业发展的一种趋势,同时开放源码许可也不可能在短期内替代现有保护专有软件版权的法律,实际上,国际上知名的软件公司只是将其专有商业软件移植或扩展到Linux操作系统上运行、使用,并没有将专有商业软件演变成开放源码/自由软件。因此,一种将开放源码与专有软件有机结合的许可证分层模式如下图所示(注--下图中的'专有'一词在这里可以包含微软提出的共享源码策略):

  操作系统可通过GPL许可获取最大的收益,因为他们是最广泛的基础软件,操作系统的用户总是比任何构筑于其上的特定应用的用户要多,针对应用的选择机会要多于操作系统。GPL可以在这个层次发挥最佳效力,强制保持所有资料的开放和自由并形成标准。开放对于操作系统而言是极其重要的,应用则可以采用BSD类型的许可,因为他们的使用相对有限。处于该基础层的操作系统供应商可以通过源码发行、二进制发行(只要同时提供源码)来获取收入,遵循GPL的Linux发行或多或少是一种成功的商业模式。
(2)第二层--工具包(上半部分) + 工具包库和扩展(下半部分)
  在接下来的一层,包含两部分,靠近基础层的是工具包,其下是工具包库和扩展。针对上半部分--工具包,软件可以是开源的或专有的,但是在此设置一个防火墙(图中垂直的加粗线)是基本条件,因为开放源码定义禁止歧视不同团体(例如,规定仅用于学生或反对商业人士),因此同一工具包不能转换许可状态。防火墙并不是代表开源/专有软件产品的区分,而是代表这些产品的明确的许可类型。针对下半部分--工具包库和扩展,它们必须与其服务的工具包采用同样的许可类型(要么开源、要么专有),必须高度关注许可证之间的依赖性。
(3)第三层--工具和应用
  在那些非工具类的应用中,可以想见其中绝大部分都是二进制或专有的,专有的应用可以构筑于专有的或开源的基础平台之上。不过,工具需要与跟随工具包的选择,要么属于开源,要么属于专有,以保证他们的产品同样具有明确的许可。在第三层中,供应商非常希望利用专有代码来保护他们的开发投入,因此通过二进制发行产品是很普遍的情况。LGPL在支持专有代码方面常常显得不足,因此BSD类型的许可比较适合这里,Artistic许可则能够同时工作于开源和专有领域。

27、开放源码软件的"分叉"(forking)问题是怎样的?
  软件产生分叉(forking)的原因有几种,最简单的原因是许可证本身。也就是说,分叉是'因为你有能力这样做',典型案例如前所述的BSD许可面临的分叉问题。政治是分叉的另一个基本原因,但这同样可以说成是'因为你有能力这样做',一些人说分叉源自人性的弱点(比如所谓"宁为鸡头,不为凤尾"的心态),但情况很可能是开发者放弃了一个反应太慢的开源项目领导者而另开炉灶。一个没有被满足的需求也能导致软件分叉。比如当glibc忽视了Intel的图形需求时就分叉出LibC,但是最终又都归并到glibc2。但BSD仍在分叉,有可能它已经偏离轨道太远无法走到一起。分叉与许可证有比较紧密的关系,专有软件不太可能分叉,因为其源码封闭不能够被外人修改。BSD许可的特点导致它最容易引起分叉。在自由软件中,Artistic许可引起分叉的潜在可能性最大,MPL则是最不容易引起分叉的许可,只有当项目领导者反应太慢时才可能分叉,但其可能性并不比GPL更大,Linux可以作为GPL反对分叉的样板案例。这里学到的一个教训是应要求修改版本也开放源代码。

28、利用Linux发展中国自主产权的操作系统是否存在法律问题?
  国内不少人士提出基于Linux开发中国自主版权的操作系统,这是一种很好的思路,但必须妥善解决各种潜在的法律风险。由于Linux内核遵循GPL,如果以其为基础进行适当修改和完善后(包括汉化)作为自主操作系统的核心,则必须公开全部源码,不能够申请传统意义上的专利或版权保护。在此有专家认为,应合理区分"自主"和"自主知识产权",所谓自主就是不受制于人,而自主知识产权则是通过知识获利,在共性基础软件研制方面,国内应更强调自主而非自主知识产权。
  建立在Linux内核之上的Linux发行版本若想成为独立版权的合成软件,需要协调与其上集成的各种商业软件的许可协议和Linux内核所遵循的GPL的关系,否则将引起法律上或者道义上的纠纷。同时,鉴于自由软件和自主版权软件所采取的规则不同,不能将Linux发行版本简单地理解成为"自主版权软件"。总之,开放源码/自由软件的发展不能排除在现有开放技术和应用需求的基础上,开发具有自有知识产权(自有版权)的技术成果或软件商品的可能性。开发自有知识产权(自有版权)的操作系统应当严格按照现有知识产权(版权)的法律、法规进行,并依据法律、法规界定自有知识产权(自有版权)相关问题。

29、利用开放源码启动中小专有软件企业有什么注意事项?
  利用已有的开放源码资源启动专有软件企业是个吸引人的想法,尤其对于中小创业型软件企业而言。不过,在正式运作之前,首先理解要使用的开放源码许可是非常重要的。如果不能完全理解将要使用的许可证,可遵循以下所谓"安全开放源码实践":(1)不要把任何开放源码直接混合到自己的代码中;(2)不要为了自己的需要,而修改这些开放源码;(3)如果可能的话,甚至不要下载和编译开放源码。许多开放源码项目提供二进制代码,很多项目遵循灵活的BSD许可证,而另一些则遵守严格的GPL规定,所以,保持自己的专有代码与开放源码的区别是很重要的。当然,根据企业收入模式适当地让自己的代码过渡为开放源码,可能对企业更有利;(4)所有的开源项目都是不一样的,有的特别小,有的因缺少持续的支持而终止,还有一些存在质量问题。唯有寻找商业合作者这一点是相同的。关键是要挑选那些符合自己要求的、有积极用户群的合作者。至少有一点可以确定,即使你的项目终结了,你还拥有源代码。假如你坚持API标准,那么转换到另一个项目上,或寻找一个商业卖主,事情就会相对容易些;(5)最后,如果想让大企业来特许经营你的软件,你必须使用他们的硬件和软件支持,尽管价格对于你来说也许十分昂贵。