三、开源软件的认定与发布
“开放源代码首创行动组织”(Open Source Initiative Association,简称OSIA)是一个非营利民间组织,由美国的Bruce Perens和Eric S.Raymond等人于1998年在美国加州发起设立的,倡导了“开放源代码首创行动”(Open Source Initiative,简称OSI),其目的就是想尽可能统一开源软件的认证标准,捍卫开放源代码的定义,为此,该组织从软件的许可入手,结合证明商标的使用,成为开源软件认定、发布的权威组织。
在开源软件领域实现统一认证标准确实难度很大,但是OSIA组织的定位和战略很好,将自己定位为一个行业自律协会性质,并且巧妙地应用了商标战略。OSIA将Open Source Initiative、OSI申请了证明商标[1],称为“OSI Certified”标志,自己作为证明商标的管理者(OSIA原想将Open Source、OS等申请为产品商标,但是由于具有描述性的特征,所以未被授权,因而才转申请了证明商标)。[2]判断一份软件是否为开源软件,不光要看权利人是否提供源代码,另一个很重要的标志就是许可证的问题,因为要求所有的开源软件在发布时都会附带一个许可协议,在许可协议中要规定许可人和被许可人的权利与义务,这就决定了许可人是否会将源代码真正的向社会公众开放,而被许可人究竟有多大的使用权,从而可以判断是否为开源软件。OSIA正是从软件的许可证上入手,将证明商标许可给那些经其审核认定为开源软件的软件提供者。这样,凡被认定为开源软件许可证的,都可以使用OS、OSI等商标标识,从而得到开源软件界的认可。
(一)开源软件及许可证的认定标准
OSIA建立的意义之一在于:并非所有的公开了源代码的程序都可被称为“开放源代码”的程序,只有符合OSD(Open Source Definition)标准的程序才能使用“开放源代码软件”这一称谓。
在开放源代码首创行动组织的开放源代码的定义(The Open Source Definition)中,指明了该组织对开源软件及许可证的认定标准有如下几个方面[3]:
1.发布的自由[4]
当某个软件是由来自不同渠道的若干程序组合而成时,许可协议不得限制任何当事人将该组合软件一部分进行销售或赠与。
本条规定的原理在于:通过许可证强制要求允许自由地再发布,这样可以抵制任何为了获得少量短期销售金额而放弃长期效益的诱惑,因为如果不这样做,就会有很多压力迫使合作者被迫违反“发布自由”的宗旨。
2.关于对源代码的要求
发布程序时必须附有源代码,且该发布行为可以源代码形式进行,也可以编译形式进行。如果有的软件在初始发布时不便在程序中附有源代码,则必须提供获得该源代码的常用方式,并不得就此项服务收取超过一份复制品成本的费用;如果是通过网络下载的方式提供源代码,则应免费。
上述源代码应以适当方式出现,以便其他程序员对其进行修改。禁止故意混淆源代码,禁止以预处理器或编译器等即时方式提供源代码。
本条规定的原理在于:如果不能对源代码进行修改,就无法对软件进行改良。因此,需要强制要求公开的源代码是未经混淆的。“开放源代码”的目的是确保其他人容易对程序进行改良,只有这样才能实现“开放源代码”的目的。
3.关于演绎作品
许可协议必须允许他人对软件进行修改并开发演绎作品,同时,还必须允许他人根据原创软件所依据的许可协议发布上述修改及其演绎作品。
本条规定的原理在于:为了实现其他程序员评析、改良软件的目的,仅能读取源代码是不够的,为了提高改良的速度,应当给他人以验证其修改程序的效果、并重新发布该修改程序的机会。
4.关于保持源代码的完整性
只有在许可证允许与源代码一同发布“补丁文件”(该“补丁文件”以在开发程序时对程序进行修改为目的)时,许可证才能对发布修改程序进行限制。许可证必须明确地允许发布由修改后的源代码生成的程序。许可证可以要求演绎作品采用不同的名称或不同的版本号以区别于原来的软件。
本条规定的原理在于:鼓励对软件进行各种改进是一件好事,但使用者有权知道谁应该对他们所使用的软件负责。软件的作者和维护者都有权知道需要他们在为什么样的软件提供支持服务,以维护他们的名誉。这就是本条规定的目的。因此,开放软件许可证必须保证可以容易地得到源代码,但可以要求源代码以原始源代码和一组补丁文件的形式发布。按照这种方式,就可以获得“非正式的”的修改而同时又可以轻易地把它们从原始源代码中区分出来。
5.不得歧视任何个人或团体
许可证不得歧视任何个人或者由多人组成的团体。
为了从开放源代码过程中获得最大的收益,应该赋予尽可能多的个人和团体以同等资格,让他们对开源软件做出贡献。为此禁止开放源代码许可证把任何人排除在这个开放源代码过程之外。
6.不得歧视任何应用领域(fields of endeavor)
许可证不得限制任何人把程序应用于任何领域。例如,不得规定程序不能应用于商业领域或基因研究领域。
本条规定的原理在于:禁止许可证中含有使开源软件无法在商业上使用的规定,开放源代码需要商业用户参与,而不让他们感到被排除在外。
7.关于许可证的发布
与程序有关的权利必须适用于该程序的任何再发布者,并且程序的再发布者也不需要就使用该程序而另外获得许可。
本条规定的原理在于:预防许可协议中出现通过间接手段阻碍软件公开的“陷阱”,例如要求签订禁止公开的协议以阻碍软件的公开。
8.不得限制许可协议专属于某一个软件
不得在随程序一同授予的权利上附加条件,要求其只适用于某一特定软件。只要是从某程序中节选出的部分程序,或是根据许可协议使用或发布该部分程序,该程序的再发布者均有权享有与原始软件发布者相同的权利。
本条规定的原理在于:为了预防另外一种许可协议“陷阱”。
9.许可证不能影响其他软件
许可证不得向与它的软件一同发布的其他软件提出任何限制。例如,许可证不能坚持要求在同一媒体上发布的其他程序都是开源软件。本条规定的原理在于:开放源代码软件的发布者有权决定自己使用何种软件许可协议。以GPL为例,如果某个软件与受GPL许可协议约束的函数库相连接,而该软件又可被视为一个独立的软件作品的话,则只有该独立软件受GPL的约束,而与其一同发布的软件不因此而必然受到GPL约束。
10.许可证应保持技术中立性
许可证的条款不得对任何技术及接口类型进行预制规定。
本条规定的原理在于:专门针对需要以某种行为明确表示同意才能成立合同的那类许可协议。如果许可协议要求必须经过“点击”行为,合同方能成立,就会与很多重要的软件发布途径产生冲突,如FTP下载、CD合集和网络镜像等。这种条款还可能阻碍源代码的重复利用。因此协议中的格式条款必须:(a)可以通过不支持点击下载的非网络途径再发布软件;(b)可以通过不支持弹出框的非GUI环境中运行覆盖代码(或该覆盖代码的任何可重用部分)。
OSIA对开源软件许可证的认定程序是由许可证提供人启动的,凡许可证提供人自己认为自己的许可证符合开源软件的要求的,可以向OSIA提出加入OSIA开源软件许可证体系的申请,OSIA将通过委员会审查和公众审查来决定是否承认该软件许可证为OSI系列的开源软件许可证。
(二)开源软件的认定程序
OSIA给出开放源代码的定义的目的是:把所确信的、由软件开发团体所公认的“开放源代码”的含义作为一组具体的准则写下来。该准则确保按照开放源代码许可证发布的软件可以得到与其他软件同样认真的评审、使软件可以不断地得到改良和遴选,从而提供非开放软件所难以提供的可靠性与能力。
OSI Certified标志是某个软件发布许可证是否服从开放源代码定义的认证方式。为了使此项工作持续发展,就必须抵制人们为了短期利益而中止为软件开发做出贡献。这意味着,许可证的条款必须防止人们藏匿源代码从而导致只有很少的人才能够阅读和修改它。当软件的开发者按照由OSIA认证的许可证发布他们的软件时,他们可以在软件中使用“OSI Certified”标志。这种认证标志告知用户,该软件所采用的许可证符合开放源代码定义。
OSI Certified标志被用于软件而不是许可证,使人们知道组成软件的包和它们的许可证是开放的源代码。如果你在一份软件上看到了该标志,那么该软件就是必定是按照遵从开放源代码定义的许可证发布的,否则,该发行人就是在滥用该标志而且违反了法律。
OSIA提供一个满足开放软件源代码定义的开放源代码许可证表。如果你希望在你的软件上设置OSI Certified标志,你可以从列表中选择一个获得批准的许可证并根据它发布软件,并且适当地为软件做标志。你也可以自己按照OSIA关于开源软件的定义制订一个开源软件许可证,通过电子邮件等方式交由OSIA认证一下,如果合格,那么该开源软件许可证就将被增加到OSIA满足开放软件源代码定义的开放源代码许可证列表中。具体程序如下:
1.通过电子邮件把许可证发送给OSIA。在邮件中说明你是否愿意以你的签名或者匿名地把许可证发送到许可证讨论列表中。
2.如果OSIA发现你的许可证不符合开放源代码的定义,会反馈意见让你解决这个问题。
3.作为该过程的一部分,OSIA还将就许可证问题向外界寻求法律上的建议。
4.一旦许可证符合了开放源代码定义,并且在OSIA许可证BBS论坛上经过了充分的讨论或者其他的评审者没有提出认为重要的问题,OSIA将通知你,许可证已经被批准了,同时它被复制到OSIA的网站上,并且被加入满足开放软件源代码定义的开放源代码许可证列表中。
任何人可以在这两种软件的发行上使用OSI Certified标志。只要该软件的发布包括并且达到了被批准的许可证列表中某个许可证的要求,或者该软件的源代码已经被明确地放到公众可以得到的位置。为了表明你的软件是按照OSI Certified发布的,必须不加任何修改地把下面两者之一,按照下述方式加入软件中。完整的声明是:(1)This software is OSI Certified Open Source Software或者(2)OSI Certified is a certification mark of the Open Source Initiative。较简短的声明是:OSI Certified Open Source Software。
另外,对软件的每种发布形式都有不同的要求:
1.如果软件以电子的形式发布,就必须把完整的声明放在README文件或者类似的用户将首先阅读的文件中。
2.如果软件以实物形式发布,就必须完成以下所有可行的任务:
(1)如果软件的发布包括印刷品,你必须把完整的声明加入该印刷品;
(2)如果软件发布在可擦写的媒体(例如软磁盘)、CD-ROM、磁带等媒体上,它们在物理上可以添加能够被人的视线所阅读的简短声明,而不影响它们的功能,就必须把完整的声明或简短的声明标注在该媒体上;
(3)如果软件的发布是一个包,从而使其中的声明不能被阅读,就必须在包的外面放置完整的声明。
(三)OSIA发布的开源许可证
经过四年多的发展,“开放源代码首创行动”取得了很大的成功,像自由软件联盟GNU、IBM、NOKIA、NETSCAPE等的开源软件许可证都先后得到了OSIA的认证,截至2002年12月1日,经OSIA认证的开源软件的软件许可证有38种,截止到2005年6月22日,经OSIA论证的许可证种类已经达到58种[5]:
& Academic Free License
& Adaptive Public License
& Apache Software License
& Apache License,2.0
& Apple Public Source License
& Artistic License
& Attribution Assurance Licenses
& New BSD License
& Computer Associates Trusted Open Source License 1.1
& Common Development and Distribution License
& Common Public License 1.0
& CUA Office Public License Version 1.0
& EU DataGrid Software License
& Eclipse Public License
& Educational Community License
& Eiffel Forum License
& Eiffel Forum License V2.0
& Entessa Public License
& Fair License
& Frameworx License
& GNU General Public License(GPL)
& GNU Library or “Lesser”General Public License(LGPL)
& Historical Permission Notice and Disclaimer
& IBM Public License
& Intel Open Source License
& Jabber Open Source License
& Lucent Public License(Plan9)
& Lucent Public License Version 1.02
& MIT License
& MITRE Collaborative Virtual Workspace License(CVW License)
& Motosoto License
& Mozilla Public License 1.0(MPL)
& Mozilla Public License 1.1(MPL)
& NASA Open Source Agreement 1.3
& Naumen Public License
& Nethack General Public License
& Nokia Open Source License
& OCLC Research Public License 2.0
& Open Group Test Suite License
& Open Software License
& PHP License
& Python License(CNRI Python License)
& Python Software Foundation License
& Qt Public License(QPL)
& RealNetworks Public Source License V1.0
& Reciprocal Public License
& Ricoh Source Code Public License
& Sleepycat License
& Sun Industry Standards Source License(SISSL)
& Sun Public License
& Sybase Open Watcom Public License 1.0
& University of Illinois/NCSA Open Source License
& Vovida Software License v.1.0
& W3C License
& wxWindows Library License
& X.Net License
& Zope Public License
& Zlib/Libpng License
在这其中,开源软件业最著名的GPL、LGPL、MPL、MPL1.1等软件许可证,都经过OSIA的认证。
[1] See R.E.Wyllys Overview of the Open-Source Movement,http://www.gslis.utexas.edu/~l38613dw/readings/OpenSourceOverview.html.
[2] See OSI Certification Mark and Program,http://www.opensource.org/docs/certification-mark.php,最后访问时间:2005-6-24。
[3] See the Open Source Definition Version 1.9,http://www.opensource.org/docs/definition.html,最后访问时间2005-6-22。
[4] 具体内容见The Open Source Definition Version 1.8的第1条Free Redistribution中的规定。
[5] http://www.opensource.org/licenses/index.php,最后访问时间:2005-6-22。