geodjango + PostGIS = GPL?

2 投票
5 回答
1671 浏览
提问于 2025-04-15 12:51

我总是对许可证感到困惑,最近又在研究这个问题,但我相信一定有人能更清楚地解释一下。

我想让我的公司使用geodjango,但作为一家典型的大企业,他们不想把最终的项目开源。因此,他们对任何带有“GPL”标签的东西都很反感。

看一下geodjango推荐的技术栈和postgresql,它们的许可证如下:

Django - BSD许可证

Postgresql - BSD许可证

PostGIS - GPL

GEOS - LGPL

PROJ.4 - MIT许可证

GDAL - MIT/X许可证

psycopg2 - GPL

维基百科上关于GPL的条目提到:

许多常见的自由软件许可证,比如最初的MIT/X许可证、当前的BSD许可证(3条款形式)和LGPL,都是“与GPL兼容”的。也就是说,它们的代码可以与GPL下的程序结合使用,而不会产生冲突(新的组合将适用GPL)。

关于GPL的维基百科条目中提到“兼容性和多重许可证”:http://en.wikipedia.org/wiki/Gpl

使用psycopg2/PostGIS组件与geodjango结合,会使最终项目的许可证变成GPL吗?如果是的话,还有什么替代方案?

更新

psycopg2有一条特别说明GPL如何适用的条款,感谢piquadrat。

5 个回答

2

前言:你需要咨询一下公司的律师。我们中很少有人有资格回答这个问题。另一种选择是问问这些项目的拥有者,什么是可以接受的使用方式,什么是不可以的。

说完这些,你的项目的许可证只会受到它所基于的作品许可证的影响。一个简单的测试方法是,看看原始作品能否轻松被其他替代品替换。

PostGIS是GPL许可证,但实际上,GeoDjango支持MySQL和Oracle。如果这些其他数据库也能适用于你的项目,即使这可能导致一些小的功能损失(比如“查询变慢了!?”),你也可能没问题。因为psycopg2是你与PostgreSQL的接口,所以如果你换了其他数据库,你也需要把psycopg2换成其他的东西。

另一方面,你的项目可能会和Django紧密集成。幸运的是,BSD许可证允许你创建衍生作品,只要你遵循一些相对友好的要求。

3

你可以直接问问Justin Bronn,他是GeoDjango的创始人。他还是一位专门研究知识产权的律师。

http://djangopeople.net/jbronn/

8

免责声明:以下内容只是我的个人观点,并不构成法律建议——请咨询专业律师。

一般来说,使用 psycopg2/PostGIS 和你的 GeoDjango 项目并不会让它受到 GPLv2 的限制。我会主要讲 PostGIS,因为其他人已经讨论过 psycopg2 相关的问题。

与它使用的其他地理空间库不同,GeoDjango 并没有直接“链接”到 PostGIS。实际上,是 PostgreSQL 链接到了 PostGIS 库(liblwgeom.so),这样就可以使用很多 SQL 函数。GeoDjango 调用这些 SQL 函数,并利用它们的输出进行操作。我们来看看 GPLv2 的第0条:

本许可证适用于任何包含版权持有者声明的程序或其他作品,说明可以根据本通用公共许可证的条款进行分发。下面所称的“程序”指的就是这样的程序或作品,而“基于程序的作品”则是指根据版权法的程序或任何衍生作品:也就是说,包含程序或其部分内容的作品,无论是逐字复制还是经过修改和/或翻译成其他语言。

...

除了复制、分发和修改之外的活动不受本许可证的约束;这些活动超出了其范围。运行程序的行为不受限制,只有当程序的输出内容构成基于程序的作品时,才会受到本许可证的约束(无论是通过运行程序生成的)。这是否成立取决于程序的功能。

因为 GeoDjango 只是通过调用 PostGIS 的公共 SQL API 函数来运行 PostGIS,而 PostGIS 的输出是地理空间数据和/或数字值(而不是基于 PostGIS 的源代码),所以我认为 GeoDjango(或用它构建的应用)不受 GPL 的约束,因为它并没有复制、修改、分发,也不是 GPL 代码的衍生作品。

注意我在开头说的是“一般来说”。如果你是在分发你的 GeoDjango 应用包括 psycopg2 和 PostGIS,那么你的代码可能会受到 GPL 的约束。对于网络应用来说,这通常不是问题,因为代码几乎从来不会像传统的软件那样分发给其他人。代码是在你的服务器上运行的,你分发的只是程序的输出(例如,HTML)给用户(顺便说一句,这就是我为什么像瘟疫一样避开 GPL 许可的 JavaScript 库)。这也是谷歌能够将他们大幅修改的 Linux 内核保留给自己的原因,因为他们的修改从未离开谷歌的服务器。

总之:如果你真的在向最终用户销售/分发 GeoDjango 应用(他们会得到应用的副本),那么不要包含 GPL 许可的前置库,以避免触发你专有代码的许可要求。换句话说,应该在现场安装这些库,这样你就不会被认为是在“分发” GPL 源代码/目标代码与闭源应用一起。

撰写回答