使用非GPL代码分发GPL代码

时间:2012-06-05 07:45:03

标签: r open-source licensing gpl

我为R编写了一个包,其中包含程序的源代码ttf2pt1,它是在安装时编译的。该计划与之无关;我编写的代码使用一个名为system2()的函数调用此程序,这基本上就像从命令行调用它。这个程序的整个源代码都在它自己的目录中,我根本没有对它进行修改。

我想在某个版本的GPL下发布软件包,但我不清楚这是否可行。如果没有,我可以使用另一个免费软件许可证。

该程序有一个允许的LICENSE文件,但基本上需要包括:

  • 特定免责声明
  • 特定版权声明
  • 具体确认

以下是文字:

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
     This product includes software developed by the TTF2PT1 Project
     and its contributors.

此外,子组件有此通知:

Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
Permission is hereby granted to use, modify, and distribute this program
for any purpose provided this copyright notice and the one below remain
intact.

我认为此许可与,但我不确定对整个软件包的许可有何影响。

我的问题:

  1. 我可以在GPL2或GPL3下分发整个软件包吗?
  2. 如果是这样,ttf2pt1程序是否需要单独的许可证?
  3. 如果无法在GPL2 / 3下分发整个软件包,我可以使用哪些许可证?
  4. 我必须在LICENSE文件中输入哪些信息?
  5. 编辑:如果可以在一个许可下使用我的代码发布包,而在另一个许可下使用ttf2pt1,我也会对此感到满意。之前的answer似乎很相关。

3 个答案:

答案 0 :(得分:1)

我不明白为什么你不能正确包装ttf2pt1的源代码 - 包括它的源代码,编写一个包装函数并从R调用该包装函数。如果你遵守其他条款,许可证明确允许这样做(包括其LICENSE文件等)。

R本身包含来自其他项目的代码;你可以研究R(相当大)的来源,看看它是如何做到的。当然,许多CRAN包也是如此,所以我相信你能找到合适的例子。

答案 1 :(得分:1)

该广告条款可能会使ttf2pt1与GPL不兼容:https://www.gnu.org/licenses/license-list.html#OriginalBSD 所以你不能把这个文件包含在GPL的R包中。

如果您不介意使用R套餐获得许可许可,那么您最好的选择可能只是包含所有这些条款的非标准许可证。

但是,假设您的非GPL代码与GPL兼容,那么您可以在整体GPL许可下分发R包。

我有packagess(optparse,argparse),它将GPL(> = 2)代码与GPL兼容的Python许可证下的代码结合在一起,其中包含强制许可声明。

这是一个很好的资源,FSF指导我将gpl兼容代码与GPL代码的强制版权声明相结合:http://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html

在让CRAN满意的情况下,如果整体包装是GPL,他们不喜欢描述中许可证字段说LICENSE或(GPL> = 2)+ LICENSE,其中LICENSE包含所有许可您需要保留的版权声明。特别是他们强迫我删除这样的LICENSE文件。然而,他们似乎没有问题,在作者的描述中你给出了你从哪里得到所有软件的高级描述,根据许可证说GPL(> = 2)[或任何适当的GPL]然后在版权下说“查看文件” (inst /)COPYRIGHTS。在(inst /)COPYRIGHTS中,您可以包含您需要保留的所有版权声明。我使用Debian软件包版权格式http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/但您不需要。您还可以查看R源代码中的COPYRIGHT文件。

将所有原始版权声明保存在包含它们的任何源文件中也是一个好主意。如果您还使用GPL的增强功能直接修改源文件,那么softwarefreedom.org页面会提供相关建议,但如果您不更改包含的源文件,则通常可以保持不变。

答案 2 :(得分:0)

这不是我的问题的直接答案,但是hadley给我发了一些代码来查找在非标准许可下分发的CRAN包。我使用此代码查找了一些可以使用的示例。

local <- file.path(tempdir(), "packages.rds")
 download.file("http://cran.R-project.org/web/packages/packages.rds", local,
   mode = "wb", quiet = TRUE)
 on.exit(unlink(local))
 cp <- readRDS(local)
 rownames(cp) <- unname(cp[, 1])
cp <- as.data.frame(cp, stringsAsFactors = F)
table(cp$License)
library(stringr)
subset(cp[c("Package", "License")], str_detect(License, "LICENSE"))