5

我为 R 编写了一个包,其中包含程序 ttf2pt1 的源代码,该程序在安装时编译。该程序未链接到;我编写的代码使用名为 的函数调用该程序system2(),这基本上就像从命令行调用它一样。这个程序的整个源代码都在它自己的目录中,我根本没有修改它。

我想在某些 GPL 版本下分发包,但我不清楚这是否可能。如果没有,我会接受另一个免费软件许可证。

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

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

正文如下:

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.

我相信这个许可与 GPL兼容,但我不确定对整个软件包的许可有何影响。

我的问题:

  1. 我可以在 GPL2 或 GPL3 下分发整个包吗?
  2. 如果是这样,ttf2pt1 程序是否需要单独的许可证?
  3. 如果无法在 GPL2/3 下分发整个软件包,我可以使用哪些许可证?
  4. 我必须在 LICENSE 文件中输入哪些信息?

编辑:如果可以使用我的代码在一个许可证下发布软件包,而 ttf2pt1 在另一个许可证下发布,我也会很高兴。以前有一个似乎相关的答案。

4

3 回答 3

1

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

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

于 2012-06-05T13:21:14.607 回答
1

该广告条款可能使 ttf2pt1 与 GPL 不兼容:https ://www.gnu.org/licenses/license-list.html#OriginalBSD 因此您不能将该文件包含在 GPL 的 R 包中。

如果您不介意在您的 R 包中获得许可许可,您最好的选择可能是在所有这些条款中包含一个非标准许可。

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

我有将 GPL (>=2) 代码与 GPL 兼容 Python 许可下的代码组合在一起的包(optparse、argparse),其中包含强制性许可通知。

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

就让 CRAN 高兴而言,事实证明,如果整个软件包是 GPL 的,他们不喜欢在许可字段中显示 LICENSE 或 (GPL >= 2) + 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 页面对此提供了建议,但如果您不更改包含的源文件,您通常可以保持不变。

于 2013-12-19T19:45:55.413 回答
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"))
于 2012-06-08T17:49:57.143 回答