详细介绍CDDL开源协议
2009-12-03 16:59:36 阿炯

CDDL全称Common Development and Distribution License,它是一个开源许可证书,由前Sun公司基于著名的Mozilla公共许可证(MPL)而创建,使其在未做任何改动的情况下可重用。CDDL满足Open Source Definition的要求并且已经获得开放源码促进会的认可作为开放源代码的许可证,它具有以下的一些特点:
(1)MPL作为CDDL的基础。除了保留所有所希望的MPL特性以外,CDDL许可证被设计成可重用的,并做了一些改进使其更加通用。

(2)对于任何遵守CDDL许可的源文件,以及使用者所做的任何修改都需要共享。但是不必将私有源文件共享。

(3)CDDL为在此许可下发布的代码提供了清楚的专利许可。这意味着使用者可以使用、修改并且重新发布CDDL授权的代码而不需要担心代码开发者(包括Sun)的任何技术专利。许可证同时包括了一项条款如果有任何人因为他们所提供的代码而对一个开发者进行专利起诉的话,该条款通过废除代码所有权来阻止任何对于开发者的专利指控。

(4)可以修改,然后遵守CDDL许可将代码重新发布,并可以进行收费。但需要遵循CDDL的条款,包括遵守CDDL许可将修改的代码共享。

CDDL主要用在OpenSolaris和前Sun的许多Java项目中。以下是一系列问答式的解说,也许能加深对其的理解。

什么是CDDL?
CDDL全称Common Development and Distribution License.它是一个开源许可证书,采用著名的Mozilla公共许可证,使其在未做任何改动的情况下可重用。我们希望得到一个能为开源提供保护和自主的非盈利版权许可证,这个许可证也可以用于创建更大的作为商业用途的工程。

CDDL是否已获得OSI认可?
是的。CDDL满足 Open Source Definition 的要求并且已经获得 开放源码促进会的认可作为开放源代码的许可证。

为什么要再写一份开放源代码许可证?
我们参阅了很多现有的开源许可证书但是没有找到适合OpenSolaris源代码的,所以我们修改了最符合我们需求的许可证(MPL)并且发现这些改动使得开源贡献者的权力更加清晰。我们将CDDL设计成可重用的,使得它对其他类似的开源项目同样具有吸引力。

所有的Solaris操作系统是否都必须按照CDDL来发布?
我们打算发布尽可能多的符合CDDL许可的源代码。Solaris操作系统使用的第三方开源软件代码将保留其已有的许可证书。例如,Opensolaris源代码库中的 Perl 版本就遵守Perl Artistic License许可。那些无法开源获得的代码将以二进制的形式提供。

什么你们要将MPL作为CDDL的基础?
MPL是一个公认的许可证书并且有着Sun所要的一些特性,包括:
 * 要求能在开源许可证书下获得被修改的代码;
 * 可以在不同的许可证书下发布可执行文件的权力;
 * 是一个“基于文件”的修改和覆盖软件的定义;
 * 是一个清楚的专利许可证。

你们对MPL做了哪些改进?
除了保留所有所希望的MPL特性以外(参考前面),CDDL许可证被设计成可重用的,并做了一些改进使其更加通用:
 * 要求注意点简单明了;
 * 阐明了修改代码的定义使得人们更加容易理解许可中包括的以及未包括的内容;
 * 涉及了一些关于法律、地点、权限选择的问题;
 * 添加了一个按照特定许可版本的发布软件的方法。我们提供了一个 改动综述,以及redline diffs (PDF)说明MPL1.1和CDDL之间的区别。

为什么不直接使用GPL 或 LGPL作为非盈利版权许可?
我们需要这样一个开源许可,在这个许可证书下发行的文件可以和在其他证书下发行的文件关联起来。尽管像GPL这样的许可允许动态代码链接。在上述情况,我们还需要能够发行可以静态链接在其他许可下获得的文件的这样一个软件。并且,我们想让他人能够通过不同许可证书扩展OpenSolaris。这些只能在一个类似于MPL的许可下实现;但是我们不能直接使用MPL因为它不是一个可以被其他人重复使用的“许可模版”。所以我们起草了MPL的另一种形式,将其变成一个模版许可,并利用这个机会作为朝着减少许可扩散所迈出的一步。

CDDL如何看待专利?
CDDL为在此许可下发布的代码提供了清楚的专利许可。这意味着您可以使用、修改并且重新发布CDDL授权的代码而不需要担心代码开发者(包括Sun)的任何技术专利。许可证同时包括了一项条款如果有任何人因为他们所提供的代码而对一个开发者进行专利起诉的话,该条款通过废除代码所有权来阻止任何对于开发者的专利指控。

CDDL下的代码许可与其他开源许可可以结合使用吗?
CDDL是基于文件的,也就是说CDDL下的文件许可可以与其他文件许可(开源或所有权)并用。但是其他许可可能有不同的限制,有可能阻止并用的可能;那么你需要阅读并遵守这些限制。

双许可怎么办呢?我可以既遵守CDDL,也遵守其他许可吗?
可以,如果你是拥有代码版权,你可以选择遵守多个许可,包括CDDL。

如果在我的私有产品中使用CDDL许可的代码,我也需要共享我的源代码吗?
需要。对于任何遵守CDDL许可的源文件,以及你所做的任何修改都需要共享。但是,你不必将你的私有源文件共享。

如果我为OpenSolaris贡献代码,除了相关许可外,我还需要做些什么?
贡献给OpenSolaris的代码必须遵守CDDL许可,另外你必须提交一个签名的 贡献者合同. 。每个项目有不同的贡献提交流程。你可以联系项目列表中的项目负责人来获得具体信息。

我可以用OpenSolaris的一部分代码来构建其他项目吗?
可以,你可以在其他项目中使用OpenSolaris的代码,但是你需要遵守CDDL许可的条款。

我可以重新发布或出售我修改后的OpenSolaris代码吗?
可以,你可以修改,然后遵守CDDL许可将代码重新发布,如果你愿意也可以进行收费。但是,你需要遵循CDDL的条款,包括遵守CDDL许可将你修改的代码共享。

我可以商用OpenSolaris源代码或二进制文件吗?
可以。你可以在商用产品中使用OpenSolaris源代码。需要注意的是,如果你使用遵循CDDL许可的源代码来构建二进制文件并进行发布,你需要遵循CDDL条款,并遵循CDDL许可将相应的源代码发布出去。详情参见许可。

我可以在我的项目(与OpenSolaris项目无关)中使用CDDL许可吗?
可以,此许可可以被任何人重用。

Sun会将OpenSolaris源代码拿走,不继续开源吗?
不会,代码对开源社区永远可得。
该文章最后由 阿炯 于 2022-05-15 15:07:25 更新,目前是第 2 版。