-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Description
你好!感谢开源这个项目,我看到了 README 中关于防止滥用和商业行为的声明,非常理解作者希望保护自己劳动成果、防止被不良商家利用的初衷。
但我注意到项目目前声明使用的是 GPL 3.0 协议,而 README 中的 “禁止用于商业行为” 和 “禁止新建项目...用做商业行为” 条款,与仓库内自带的 LICENSE 文件(GPLv3)存在法律冲突。
根据 GPL v3 的规定,用户可能可以合法移除 README 中额外添加的限制,并进行与项目作者/维护者们预期不符的行为。
可以看看 GPL v3 官网对这个问题的解释:
我愿意按照GPL发布我的代码,但是我还想清楚地说明我的程序不能用于军事和/或商业。我能这样做吗?
不行,因为你的两个目标互相矛盾。GNU GPL 专门设计成禁止添加额外的限制。GPLv3 在第 7 节允许非常小的例外,但是用户可以去除任何其他后添加的限制。
更普遍地说,一个限制用户范围,或者限制用户使用目的的许可证,不是自由软件许可证。
我没打算批判项目的任何决定,只是担心当前的许可证选择可能没办法达到维护者的预期,使得项目被合法地用于维护者不期望的用途。
为了避免项目日后陷入法律逻辑陷阱,对未来可能的法律行动造成阻碍,特此引用 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)” 软件。
建议
为了确保协议的法律效力并符合作者的意图,下面有一些思路:
- 如果首要目标是“禁止商用”:
请移除 GPLv3 协议。GPL 无法实现禁止商用。你应该使用非开源的专有协议,可以自己写一份,基于其他协议进行修改 (但要注意冲突) (另外 GPLv3 似乎不允许你在 GPLv3 条款上做未经授权的衍生创作,似乎可以基于 GPL 改一份新协议,但不能叫 GPL。我的转述可能不准确,请参考 FSF 的文章 和相关资料),或者使用 CC BY-NC-4.0 (知识共享-署名-非商业性使用) 或 PolyForm Noncommercial License。这些协议明确且具有法律效力地禁止商业用途。 - 如果首要目标是“开源”和“防止代码闭源”:
保留 GPLv3,删除 README 中关于禁止商业行为的限制。GPLv3 已经足够强力,它要求任何使用你代码的商业软件也必须开源,这通常已经足够阻止大多数不想开源代码的商业公司(如不良换皮应用)滥用你的代码。
值得注意的是,我不是律师,上面提供的信息仅供参考,不构成法律建议。
关于类似问题,我推荐你阅读 Free Software Foundation (发表 GPL 协议的实体) 网站上的这篇文章: 保护自由软件免受令人困惑的额外限制
如果有需要,我推荐进一步寻求专业的法律咨询。
希望这些信息能帮助项目规避潜在的法律逻辑漏洞!期待项目的后续发展。