V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
maxxfire
V2EX  ›  程序员

Github 上的 license 声明能否进行一些特别的定制

  •  
  •   maxxfire · 2020-06-16 09:19:43 +08:00 · 4201 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如在 github 上开了一个开源代码的项目,如果别人将该项目(或集成在自己项目中)用于:

    1. 用于非商业用途时,完全免费使用,无任何约束。
    2. 用于商业用途时,以下 2 种任选一种:
    a,如果用户数超过 1 万以上,则收取 1 元*用户数。
    b,如果盈利超过 1 万元,则收取 赢利*2%

    有没有这样类似的 license 玩法?
    27 条回复    2021-03-04 10:18:28 +08:00
    LokiSharp
        1
    LokiSharp  
       2020-06-16 09:24:13 +08:00 via iPhone
    可以定制,但是不一定有效,评估合法的协议才有效
    harde
        2
    harde  
       2020-06-16 09:26:15 +08:00
    那直接写 非商业使用 MIT 协议,商业使用,单独购买商业授权,结了呗。。。
    maxxfire
        3
    maxxfire  
    OP
       2020-06-16 09:33:55 +08:00
    @harde 这种东西人家只是看看,根本不当回事。比如之前 ffmpeg 耻辱柱,大厂也是照样用。
    Exin
        4
    Exin  
       2020-06-16 09:50:13 +08:00
    开源协议在事实上更接近于道德约束,而资本逐利,不重视道德
    Exin
        5
    Exin  
       2020-06-16 09:51:03 +08:00
    当然了,协议还是要写的,万一控诉成功经济自由了呢?
    GreenDam
        6
    GreenDam  
       2020-06-16 10:23:18 +08:00
    注意法律效力
    Ariver
        7
    Ariver  
       2020-06-16 10:41:41 +08:00
    参见几年前沸沸扬扬的 react 协议事件。
    zpf124
        8
    zpf124  
       2020-06-16 10:47:18 +08:00
    有你这种需求的都是发行俩版本,代码一模一样就是包含的 license 不一样。

    包含开源 license 的版本限制禁止商业使用。
    msg7086
        9
    msg7086  
       2020-06-16 10:49:59 +08:00   ❤️ 1
    @harde 规定了非商业使用就不是 MIT 了,MIT 本身就授予了在商业使用环境下的权利。

    @maxxfire 可以的,不仅是定制,甚至可以完全从头编写。当然,你修改后的协议和原始的协议是截然不同的,不能用原来的协议作为名称了。

    比如 MIT 协议是允许商业环境随意使用。你往里加了几个字,说商业环境要付费,那么这个协议就不再是 MIT 协议了。你可以给它起名字叫 maxxfire 许可证。

    当然了,写协议最好还是有律师来审核一下,保证效力。

    另外,修改后显然就不是开源 /自由软件了,不能以开源 /自由软件自称了。开源 /自由软件的用户本来就有用于商业用途的自由。
    nightwitch
        10
    nightwitch  
       2020-06-16 11:01:28 +08:00
    参考 Qt, LGPL 和商用双协议
    no1xsyzy
        11
    no1xsyzy  
       2020-06-16 15:03:08 +08:00
    @maxxfire #0 自写 License 就不是开源项目。必须被 OSI 确认的 License 才能算开源项目。开源是专有名词而非术语,其定义严格地被 OSI 掌握。可以考虑某 charts 的协议,以 CC BY-NC-SA 和 商业授权。两种方式发布。商业授权需要单独谈判。
    但值得指出的是,非商业使用本身是难以界定的。一篇文章被转载到 NPO 挂了广告的网站上可能被视作商业使用,而被新闻机构转载并付费墙可能被视为非商业使用。
    @harde #2 不符合 MIT 许可证,因为 MIT 许可证明确允许商业使用;操作上也不具有可行性,因为 MIT 允许中间人转代。比如甲公司可以在路上随便找一个人让他接受 MIT 许可证并获得此软件的一个副本,然后非商业地共享给甲公司使用,成功绕过 “非商业使用” 限制。
    @Exin #4 已经有判例了。 #5 但还是不如找个律师帮你写。法律文书让律师写,就好像软件代码让程序员写一样。
    no1xsyzy
        12
    no1xsyzy  
       2020-06-16 15:05:37 +08:00
    @LokiSharp #1 @harde #2 @Exin #4 @Ariver #7 @msg7086 #9 @nightwitch #10
    再重申一次,许可证不是协议。协议可以被部分接受而绕过,而许可证不行。如果 GPL 是协议的话你今天可以看到一堆 gcc 的私人化仅释放二进制文件的修改了。
    LokiSharp
        13
    LokiSharp  
       2020-06-16 15:36:33 +08:00
    @no1xsyzy #11 其实吧,这些开源许可都是虚的,他们都没规定必须在公共领域开源。即使是商业使用,也只需要在发行的二进制副本的时候附上源码就好了。
    msg7086
        14
    msg7086  
       2020-06-16 15:38:35 +08:00
    @no1xsyzy 许可证是一种合同。合同和协议的含义几乎相同。许可证怎么就变成不是协议了。
    协议是什么时候开始可以被部分接受而绕过了?
    几乎所有的商业软件都有 EULA 最终用户许可协议,他们都可以被部分接受而绕过?
    我没看明白这个论点是从哪里来的。
    msg7086
        15
    msg7086  
       2020-06-16 15:41:03 +08:00
    @LokiSharp 开源 /自由是指人们在获取软件的时候有获取源代码并处分的自由,怎么就成虚的了……
    no1xsyzy
        16
    no1xsyzy  
       2020-06-16 15:42:40 +08:00
    @LokiSharp #13 是没要求公开,连 GPL 都没要求,甚至 GPL 并没有明确要求 “同时附带源码”,可以书面承诺将来提供源码,此书面承诺向 “任何获得此软件的副本的自然人或法律实体” 生效。
    但这并不意味着这是虚的,因为任何得到源码副本的人都被明确允许把它任意形式公开,最终表现为实质公开。
    no1xsyzy
        17
    no1xsyzy  
       2020-06-16 15:54:08 +08:00
    @msg7086 #14 在与当地法律冲突的情况下,合同(按现存各国合同法)的默认处理方式是冲突条款失效剩余部分继续生效。每个 EULA 都应当对当地进行重新编写,或者限定生效地,实际上也是这么操作的。一个比较常见的绕过点是 “教育目的” 避风港。还有新闻出版自由这一避风港,都是常见的绕过版权法的尝试,即使最终法院判决是侵权,仍然,避风港的存在确实增加了维权的成本。
    而许可证在与当地法律冲突情况下,根据 TRIPS 公约,默认整个许可证失效。

    实际操作上,绕过的办法就是成立一个国家,并且设立与合同相违背的法律,或者在现存国家设置与合同相违背的法律,就可以绕过了。因此,合同必然明确指定参与方,通常指定生效地,而许可证为成为公共许可证,必然无法指定参与方,最多进行一些条件限定,那可玩的就多了。
    LokiSharp
        18
    LokiSharp  
       2020-06-16 16:18:21 +08:00
    @no1xsyzy #16 是啊,GPL 只是规定了发行时要附带源码,而在内部使用的情况下,副本的受众是自身,只需要对自身开源。而就算是因为发行时没有附带源码被起诉,也没有惩罚性的违约条款,只需要在宣判后开源即可。而且大多数情况下只需要承诺开源就会免于起诉,丢一份早期的源码然后承诺会维护即可。
    msg7086
        19
    msg7086  
       2020-06-16 16:19:51 +08:00
    @no1xsyzy 原来你拓展到其他国家了。
    我想着中国法律框架下应该是没什么区别的。
    msg7086
        20
    msg7086  
       2020-06-16 16:22:17 +08:00
    @LokiSharp GPL 本来就不要求内部使用时公开源代码啊。
    GPL 是获得软件的人有获得源代码的自由。既然公众没有获得软件,哪来获得源代码的自由呢。
    LokiSharp
        21
    LokiSharp  
       2020-06-16 16:39:17 +08:00
    @no1xsyzy @msg7086 嘛,协议主要是看违约条款的,没有违约条款的协议,都只是道德层面的约束。
    gnemux
        22
    gnemux  
       2020-06-16 17:06:17 +08:00
    TransAM
        23
    TransAM  
       2020-06-17 15:31:58 +08:00 via Android
    我的做法是只签不允许商业的协议,然后商业用户都懂,他会找你私聊。

    不要一刀切规定定个商业协议,你要学会价格歧视,差别定价。
    TransAM
        24
    TransAM  
       2020-06-17 15:33:48 +08:00 via Android
    @msg7086 是这样的,如果一个项目有两个协议,可以只选一个。无论是一个商业一个非商业,还是两个都是非商业。

    如果一个是 eula 另一个是 mit 或者 gpl 什么的,用户有权选择合适的那个。
    TransAM
        25
    TransAM  
       2020-06-17 15:34:17 +08:00 via Android
    @no1xsyzy 谁告诉你 osi 。认可的协议才是协议?没见过世面?
    no1xsyzy
        26
    no1xsyzy  
       2020-06-17 15:42:20 +08:00
    @TransAM #25 ? OSI 认可的许可证才是 “开源” 许可证,其他的只不过是一般的许可证,甚至存在理论上的可能性是自由许可证却不是开源许可证。
    这是别人定义、别人控制、别人一言堂的 “标准”,你没有办法反抗的,就像是说 “一流企业卖标准”。
    0bit
        27
    0bit  
       2021-03-04 10:18:28 +08:00
    可以考虑使用 BSL 协议,该协议可以自定义部分要求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:49 · PVG 21:49 · LAX 05:49 · JFK 08:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.