如果我开发一个只执行GPL cli 应用程序的 GUI 包装器(为了论证,比如说tar),我必须将 GUI 包装器作为 GPL 发布吗?是衍生作品吗?
如果是衍生作品,我必须发布什么?
GPL 应用程序和包装器将一起分发
伊纳尔。引用 GPL FAQ 的单纯聚合部分(强调我的):
“聚合”由多个单独的程序组成,它们一起分布在同一张 CD-ROM 或其他介质上。GPL 允许您创建和分发聚合,即使其他软件的许可证是非自由或 GPL 不兼容的。唯一的条件是,您不能在禁止用户行使每个程序的单独许可授予他们的权利的许可下发布聚合。
两个独立的程序和一个包含两个部分的程序之间的界限在哪里?这是一个法律问题,最终由法官决定。我们认为,一个合适的标准取决于通信机制(exec、管道、rpc、共享地址空间内的函数调用等)和通信的语义(交换什么类型的信息)。
如果模块包含在同一个可执行文件中,它们肯定会组合在一个程序中。如果模块被设计为在共享地址空间中链接在一起运行,那几乎肯定意味着将它们组合到一个程序中。
相比之下,管道、套接字和命令行参数是通常在两个独立程序之间使用的通信机制。因此,当它们用于通信时,模块通常是单独的程序。但是,如果通信的语义足够亲密,交换复杂的内部数据结构,那也可以作为将这两个部分组合成一个更大程序的基础。
FAQ 中与此相关的另一个问题是“如果在 GPL 下发布的程序使用插件,插件的许可证有什么要求”:
这取决于程序如何调用其插件。如果程序使用fork和exec调用插件,那么插件是独立的程序,所以主程序的license对它们没有要求。
..
恕我直言,在精神上,仅公开 GPL 程序功能的纯包装器应该是 GPL。
IANAL,但我很确定,如果您不将 GPL 代码与您的代码链接而只使用 CLI,那么您的代码不会受到 GPL 的影响。您唯一的义务是分发 GPL 代码的源代码。
如果您决定分发 GPL 应用程序,我建议您只在媒体上包含压缩源 tar,而不仅仅是通过下载“提供”,因为您必须无限期维护所有 GPL 版本的下载站点您分发的应用程序。