安排第三方图书馆许可“文书工作”的最佳实践是什么?


60

我正在开发一个小型开源项目。该应用程序使用发行了许多许可证的许多第三方库:Apache,MIT,BSD,LGPL和CDDL。

这些许可证中的每一个都有其自己的“文书工作”要求。例如,Apache许可证v2.0指出:

如果作品包括“注意”文本文件作为其分发的一部分,则您分发的任何衍生作品都必须包括该通知文件中包含的署名声明的可读副本。

MIT许可证包含版权声明,并指出:

以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

BSD许可证还包含版权声明,并指出:

二进制形式的重新分发必须在分发随附的文档和/或其他材料中复制以上版权声明,此条件列表以及以下免责声明。

LGPL v.3说:

(您应该)在合并作品的每份副本中都特别注明使用了该库,并且该许可证涵盖了该库及其使用。

LGPL和CDDL许可证还要求提供源代码以及库的二进制形式,因此应在某处提供有关获取源代码的方式的信息。

整理所有这些数据的最佳实践是什么?我是否应该创建一个文本文件并将所有NOTICE文件,MIT和BSD许可证等的内容复制到该文件中?...还是应该为每个库创建一个单独的目录,然后将与该库相关的所有数据放入该目录?… 或者是其他东西?

在已发布的项目中看到此“文书”的任何示例也将很有趣。

更新:

我已阅读您是否必须在每个源文件中都包含许可证声明?,但不能解决我的问题。我的问题与项目中使用的第三方库有关,而该问题与项目自己的源代码中的标头有关。

Answers:


62

首先,标准免责声明:IANAL但是一个随机的陌生人。

我最近一直在打包AGPL 应用程序(*)。它使用在jQuery,MIT,BSD(和其他一些)许可下分发的第三方库。这是我的工作方式。

设计此书时,我的主要意图是:合规公平。虽然第一个应该足够,但是第二个可以确保任何试图以未100%正确地起诉我的人都必须承认我的行为是真诚的。

1)源文件:我所有的文件都有AGPL标头。所有第3方文件(大部分)都保持不变,因此包含其自己的许可证标头。

2)软件包根目录中的LICENSE.txt包含AGPL许可证文本(如“如何将这些条款应用于新程序”部分所述)。

3)辅助许可证文件(我也名为LICENSE-3RD-PARTY.txt)也位于软件包的根目录中,其中包含所有许可证的逐字记录副本。对于每个许可证,标头都说明该许可证是哪个许可证以及适用于哪个部分。我还在此处输入版权所有者的姓名-之后我会在其他地方重用它们,因此值得付出努力。

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4)同样位于根目录下的README.txt解释说该软件是AGPL(请参阅LICENSE.txt),并使用按照自己的条款分发的第三方库(请参阅LICENSE-3RD-PARTY.txt)

5)在在线文档中,我有一个“ 许可证”页面,该页面重复自述文件中的信息:我的软件为AGPL,它使用的第三方组件为BSD / MIT / [...]。我已决定保持此页面的整洁和可读性,因此仅提供许可证名称,并提供全文链接,以及版权所有者的名称,并提供其自己网站的链接。

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6)同样在在线文档中,我有一个Credits页面,其中列出了直接和间接主要贡献者。例如,我引用了PostgreSQL组,尽管下载中不包括PostgreSQL,但是运行该软件需要它。这将是放置第三方工具/库/等作者所必需或希望的所有确认的好地方。

7)在软件本身内部,在“ 关于”对话框中重复列出库以及许可证和版权持有者的列表。

要解决有关包含源代码和文件布局的特定问题:

  • 通常只链接到第三方软件包的完整源代码。请务必查阅每个特定的许可证,但是恕我直言,提供链接应该足够了。例如,如果您使用库的缩小版本,则可以提供指向标准下载的链接,这样就可以了。

  • 除非第三方组件明确要求发行版保持文件布局相同,否则您可以根据需要重新安排内容。假设您使用网络库,每个库都有一个css /和js /目录,则可以将它们合并到一个单独的lib /目录中,其中包含合并的css /和js /,甚至可以将它们分散在源代码树中-您可以选择。

而作为最后一点,我会超过谁挥手说:“你在做欢迎提意见这种错误的”和/或“你也应该做的是 ”。

(*)这并不是要链接到垃圾邮件,而只是为了回答问题的“请提供示例”部分。如果违反规定,请随意清除亲爱的mods。


2
谢谢您的好评!这正是我正在寻找的信息。我还不会接受,看看其他人是否有话要说。
Alexey 2014年

8
对于以后将要来到这里的人,FireFox具有类似于LICENSE-3RD-PARTY.txt此答案中描述的文件的文档。(点击Licensing InformationAbout箱子。)有一个类似的文件,谷歌浏览器了。
Alexey 2014年

1
下面是一个类似的文件,该文件列出了IntelliJ IDEA的使用第三方软件:confluence.jetbrains.com/display/IDEADEV/...
阿列克谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.