geodjango + PostGIS = GPL?

时间:2009-07-13 04:57:07

标签: python django licensing

我总是对许可证感到困惑,我正在再次阅读,但我确信那里的某人已经理解了这一点,并且可以更清楚地解释它。

我正在努力让我的公司使用geodjango,并且作为一家典型的大型企业公司,他们不想开源所产生的项目。因此反对触及标有“GPL”的任何东西。

使用推荐的postgresql查看geodjango堆栈,许可证为:

Django - BSD许可证

Postgresql - BSD许可证

PostGIS - GPL

GEOS - LGPL

PROJ.4 - 麻省理工学院执照

GDAL - MIT / X许可证

psycopg2 - GPL

gpl上的维基百科条目说明如下:

  

许多最常见的免费软件许可证,例如原始的MIT / X许可证,      BSD许可证(目前的3条款形式)和LGPL是“GPL兼容的”。那      是的,他们的代码可以与GPL下的程序结合而不会发生冲突(新的      组合将GPL应用于整体)。

来自维基百科的GPL条目,“兼容性和多重许可”:http://en.wikipedia.org/wiki/Gpl

使用带有geodjango的psycopg2 / PostGIS组件,生成项目的许可证GPL吗? 如果是这样,有哪些替代方案?

更新

psycopg2 有一个专门解决GPL应用方式的条款,感谢piquadrat。

5 个答案:

答案 0 :(得分:8)

免责声明:以下是我的意见,并非旨在提供法律建议 - 请咨询持牌律师。

通常,将psycopg2 / PostGIS与GeoDjango项目一起使用并不会使其受GPLv2的约束。我将谈论PostGIS,因为其他人已经解决了与psycopg2相关的问题。

与其使用的其他地理空间库不同,GeoDjango不会“链接”到PostGIS。 PostgreSQL是与PostGIS库(liblwgeom.so)链接的,并且公开了多种SQL函数。 GeoDjango调用SQL函数并使用它们的输出来完成它的工作。让我们来看一下GPLv2的第0项:

  

本许可适用于任何计划   或包含通知的其他工作   由版权所有者说   它可以根据条款分发   本通用公共许可证。该   以下“程序”是指任何此类程序   程序或工作,以及“基于的工作   该计划“指该计划   或任何版权的衍生作品   法律:也就是说,一部载有的作品   该计划或其中的一部分   逐字或有修改和/或   翻译成另一种语言。

     

...

     

复制以外的活动,   分发和修改不是   本许可证涵盖的内容;他们是   超出其范围。奔跑的行为   该计划不受限制,并且   涵盖了本计划的输出   只有当它的内容构成一件作品   基于该计划(独立于   通过运行来制作   程序)。这是否真实取决于   关于该计划的作用。

因为GeoDjango刚刚运行PostGIS(通过调用其公共SQL API函数),并且PostGIS的输出是地理空间数据和/或数值(不是基于PostGIS的源代码),我很清楚GeoDjango(或应用程序)用它构建的)不包含在GPL中,因为它不是复制,修改,分发,也不是GPL代码的衍生作品。

注意我一开始就说“一般”。如果您分发您的GeoDjango应用程序包括 psycopg2和PostGIS,那么您的代码可能受GPL约束。对于Web应用程序,这通常不是问题,因为代码几乎从未像传统的收缩包装软件那样分发给其他人。代码在您的服务器上运行,并且您的分发是您向用户输出您的程序(例如,HTML)的唯一方式(侧栏:这就是为什么我避免使用GPL许可的JavaScript库,如瘟疫)。这就是谷歌如何将经过大量修改的Linux内核保留给自己,因为他们的修改永远不会让服务器留在谷歌。

底线:如果您实际向最终用户销售/分发GeoDjango应用程序(他们获得了应用程序的副本),那么包含GPL许可的先决条件以避免触发您的专有代码的许可要求。换句话说,在现场安装这些库,这样就不会被视为在您的闭源应用程序中“分发”GPL源/目标代码。

答案 1 :(得分:3)

你可能会直接询问GeoDjango的创造者Justin Bronn。他还是一名专门从事知识产权的律师。

http://djangopeople.net/jbronn/

答案 2 :(得分:2)

前瞻:您需要询问贵公司的律师。我们中很少有人有资格回答。另一个选择是询问每个项目的所有者什么是可接受的用途。

除此之外,您项目的许可仅受其衍生作品许可的影响。对此的一个很好的测试是,假设的原点工作可以轻易地替代替代方案。

PostGIS是gpl,但事实证明,geodjango支持MySQL和Oracle。如果这些其他数据库可以适用于您的项目,即使这会导致一些轻微的功能损失,(“查询很慢!?”),您可能还可以。由于psycopg2是PostgreSQL的接口,所以如果你替换另一个db,你也可以用psycopg2代替其他东西。

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

答案 3 :(得分:1)

关于psycopg2,情况似乎很清楚。来自LICENSE文件:

  

请注意,选择GPL是为了避免基于的专有适配器   psycopg代码。在专有产品中使用psycopg(甚至捆绑   psycopg与专有产品一样好,只要:

     
      
  1. 仅使用提供的API从Python调用psycopg   (即,没有与C代码的链接,也没有基于它的C模块);以及

  2.   
  3. 尊重GPL的所有其他要点(您提供副本   psycopg2的源代码,等等。)

  4.   

答案 4 :(得分:1)

您或您的客户是否重新分发代码?如果没有再分发,那么您的客户(假设他们将拥有IP)将不需要向任何人提供源代码,因此无需担心您列出的许可证。