贡献代码的许可证#
Matplotlib 仅使用 BSD 兼容的代码。如果你从其他项目引入代码,请确保它具有 PSF、BSD、MIT 或兼容的许可证(有关各个许可证的详细信息,请参阅开源倡议的 许可证页面)。如果没有,你可以考虑联系作者并请求他们重新授权。GPL 和 LGPL 代码在主代码库中是不可接受的,尽管我们正在考虑通过单独的渠道分发 L/GPL 代码的替代方法,可能是通过一个工具包。如果你包含代码,请确保在许可证目录中包含该代码许可证的副本,如果代码的许可证要求你随代码分发许可证。非 BSD 兼容的许可证在 Matplotlib 工具包(例如,basemap)中是可接受的,但请确保你清楚地声明你正在使用的许可证。
为什么兼容BSD?#
在开源世界中,两种主要的许可证变体是 GPL 风格和 BSD 风格。还有无数其他许可证对代码重用施加了特定的限制,但在 GPL 和 BSD 变体之间有一个重要的区别需要考虑。最知名且可能使用最广泛的许可证是 GPL,它在授予你完全的源代码权利(包括重新分发)的同时,还附带了一个额外的义务。如果你在自己的代码中使用 GPL 代码,或者与之链接,你的产品必须以 GPL 兼容的许可证发布。也就是说,你必须向其他人提供源代码,并赋予他们重新分发的权利。许多最著名和广泛使用的开源项目都是以 GPL 发布的,包括 Linux、GCC、Emacs 和 Sage。
第二大类是BSD风格的许可证(包括MIT和Python PSF许可证)。这些许可证基本上允许你对代码做任何你想做的事情:忽略它,将其包含在你自己的开源项目中,将其包含在你的专有产品中,出售它,等等。Python本身是根据BSD兼容的许可证发布的,从PSF许可证页面引用如下:
There is no GPL-like "copyleft" restriction. Distributing
binary-only versions of Python, modified or not, is allowed. There
is no requirement to release any of your source code. You can also
write extension modules for Python and provide them only in binary
form.
在最后一段的宽容意义上,以BSD风格许可证发布的著名项目包括BSD操作系统、Python和TeX。
Matplotlib 的早期开发者选择 BSD 兼容许可证有几个原因。Matplotlib 是一个 Python 扩展,我们选择了一个基于 Python 许可证(BSD 兼容)的许可证。此外,我们希望尽可能吸引更多的用户和开发者,许多软件公司不会在他们计划分发的软件中使用 GPL 代码,即使是那些高度致力于开源开发的公司,如 enthought,出于对 GPL 因其病毒性而可能“感染”其代码库的合理担忧。实际上,他们希望保留发布某些专有代码的权利。使用 Matplotlib 的公司和机构通常会做出重大贡献,因为他们有资源完成工作,即使是枯燥的工作。Matplotlib 的两个后端(FLTK 和 WX)是由私营公司贡献的。许可证选择的最终原因是与其他科学计算 Python 扩展的兼容性:ipython、numpy、scipy、enthought 工具套件和 Python 本身都使用 BSD 兼容的许可证进行分发。