Skip to content

[License Conflict] 关于本项目开源协议与 README 中附加条款的冲突 #161

@lingo34

Description

@lingo34

你好!感谢开源这个项目,我看到了 README 中关于防止滥用和商业行为的声明,非常理解作者希望保护自己劳动成果、防止被不良商家利用的初衷。

但我注意到项目目前声明使用的是 GPL 3.0 协议,而 README 中的 “禁止用于商业行为”“禁止新建项目...用做商业行为” 条款,与仓库内自带的 LICENSE 文件(GPLv3)存在法律冲突。

根据 GPL v3 的规定,用户可能可以合法移除 README 中额外添加的限制,并进行与项目作者/维护者们预期不符的行为。

可以看看 GPL v3 官网对这个问题的解释:

我愿意按照GPL发布我的代码,但是我还想清楚地说明我的程序不能用于军事和/或商业。我能这样做吗?

不行,因为你的两个目标互相矛盾。GNU GPL 专门设计成禁止添加额外的限制。GPLv3 在第 7 节允许非常小的例外,但是用户可以去除任何其他后添加的限制。

更普遍地说,一个限制用户范围,或者限制用户使用目的的许可证,不是自由软件许可证

-- (https://www.gnu.org/licenses/gpl-faq.html#NoMilitary)

我没打算批判项目的任何决定,只是担心当前的许可证选择可能没办法达到维护者的预期,使得项目被合法地用于维护者不期望的用途。

为了避免项目日后陷入法律逻辑陷阱,对未来可能的法律行动造成阻碍,特此引用 LICENSE 文件中的具体条文进行说明:

1. GPLv3 明确允许商业发布和收费

GPL 的核心精神是“自由(Freedom)”而非“免费(Gratis)”。根据仓库中 LICENSE 文件:

Preamble(前言):
"When we speak of free software, we are referring to freedom, not price."
(当我们谈论自由软件时,我们指的是自由,而不是价格。)

Section 4. Conveying Verbatim Copies(第4条 转发完整副本):
"You may charge any price or no price for each copy that you convey..."
(你可以为你转发的每一个副本收取任何价格,或不收费……)

这意味着,GPLv3 明确授权用户可以进行商业分发甚至售卖,只要他们遵守 GPL 的 Copyleft(开源传染)义务即可。README 中的“禁止商业行为”直接否定了 GPLv3 授予用户的基本权利。

2. README 的限制条款在 GPLv3 下被视为无效

这是最严重的风险点。GPLv3 为了防止有人通过附加条款来限制自由,专门制定了 第 7 条 (Section 7) 和 第 10 条 (Section 10)

Section 10. Automatic Licensing of Downstream Recipients(第10条 下游接收者的自动许可):
"You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License."
(你不得对本许可证授予或确认的权利的行使施加任何进一步的限制。)

README 中的“禁止商用”可能属于 "Further Restrictions"(进一步限制)

更关键的是,根据 第 7 条用户有权合法删除这些限制

Section 7. Additional Terms(第7条 附加条款):
"All other non-permissive additional terms are considered 'further restrictions' within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term."
(所有其他非许可性的附加条款都被视为第10条所述的“进一步限制”。如果你收到的程序……包含声明受本许可证管辖的通告,同时也包含作为进一步限制的条款,你可以移除该条款。)

结论:
由于项目使用了 GPLv3,根据 GPLv3 第 7 条的规定,任何下游用户在法律上都可以直接移除 README 中“禁止商业使用”的声明,并依据 GPLv3 合法地进行商业使用。这完全违背了作者想要禁止商用的初衷。

3. 关于 "OSI-Approved" 和开源定义

在开源领域(Open Source Initiative, OSI)的定义中,"Open Source" 必须满足 The Open Source Definition (OSD)。其中第 6 条明确规定:

6. No Discrimination Against Fields of Endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

因此,包含“禁止商用”条款的软件,严格意义上不再属于 OSI 定义下的 “开源软件 (Open Source Software)”,而是属于 “源代码可用 (Source Available)” 软件。

建议

为了确保协议的法律效力并符合作者的意图,下面有一些思路:

  1. 如果首要目标是“禁止商用”:
    移除 GPLv3 协议。GPL 无法实现禁止商用。你应该使用非开源的专有协议,可以自己写一份,基于其他协议进行修改 (但要注意冲突) (另外 GPLv3 似乎不允许你在 GPLv3 条款上做未经授权的衍生创作,似乎可以基于 GPL 改一份新协议,但不能叫 GPL。我的转述可能不准确,请参考 FSF 的文章 和相关资料),或者使用 CC BY-NC-4.0 (知识共享-署名-非商业性使用)PolyForm Noncommercial License。这些协议明确且具有法律效力地禁止商业用途。
  2. 如果首要目标是“开源”和“防止代码闭源”:
    保留 GPLv3,删除 README 中关于禁止商业行为的限制。GPLv3 已经足够强力,它要求任何使用你代码的商业软件也必须开源,这通常已经足够阻止大多数不想开源代码的商业公司(如不良换皮应用)滥用你的代码。

值得注意的是,我不是律师,上面提供的信息仅供参考,不构成法律建议。

关于类似问题,我推荐你阅读 Free Software Foundation (发表 GPL 协议的实体) 网站上的这篇文章: 保护自由软件免受令人困惑的额外限制

如果有需要,我推荐进一步寻求专业的法律咨询。

希望这些信息能帮助项目规避潜在的法律逻辑漏洞!期待项目的后续发展。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions