贡献代码的许可证#

Matplotlib 仅使用 BSD 兼容的代码. 如果你从另一个项目引入代码,请确保它具有 PSF,BSD,MIT 或兼容的许可证(有关各个许可证的详细信息,请参阅开放源代码倡议 licenses page ). 如果没有,你可以考虑联系作者并要求他们重新授权. 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 兼容的许可证分发.