V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yangyaofei
V2EX  ›  程序员

什么程度的使用 GPL 软件才不用受到传染

  •  
  •   yangyaofei ·
    yangyaofei · 2016-05-09 11:34:48 +08:00 · 13600 次点击
    这是一个创建于 2910 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们做项目用了 Sphinx 的中文版 coreseek 做全文检索引擎,不知道什么程度的使用不用公开源代码.

    整个软件我们要卖给客户的. 当然,软件不是主体,而是信息..... 但是公开源代码会暴露一些我们不想给竞争对手看的内容,所以不好开源

    所以想问一下什么程度的使用不用开源,不调用,直接使用程序跑出来的结果算吗?

    38 条回复    2016-05-12 09:15:17 +08:00
    julyclyde
        1
    julyclyde  
       2016-05-09 11:43:17 +08:00
    进程间通信
    kokutou
        2
    kokutou  
       2016-05-09 11:55:28 +08:00
    ```
    1.1. 什么是 Sphinx/Coreseek

    Sphinx 是一个在 GPLv2 下分发的全文检索引擎; Coreseek 是一个可供企业使用的、基于 Sphinx (可独立于 Sphinx 原始版本运行)的中文全文检索引擎,按照 GPLv2 协议发行,商业使用(例如, 嵌入到其他程序中)需要联系我们以获得商业授权。

    一般而言, Sphinx 是一个独立的全文搜索引擎;而 Coreseek 是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的中文全文搜索能力。 Sphinx/Coreseek 可以非常容易的与 SQL 数据库和脚本语言集成。

    ```

    http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html#license


    这个?
    lhbc
        3
    lhbc  
       2016-05-09 12:06:39 +08:00
    没有对代码进行修改的话,直接在线安装然后脚本修改配置就行了吧
    402645707
        4
    402645707  
       2016-05-09 12:14:35 +08:00
    抖个机灵
    cleanroom
    VmuTargh
        5
    VmuTargh  
       2016-05-09 12:16:03 +08:00
    wrapper?
    9hills
        6
    9hills  
       2016-05-09 12:16:14 +08:00   ❤️ 2
    @kokutou
    能吐槽下『按照 GPLv2 协议发行,商业使用(例如, 嵌入到其他程序中)需要联系我们以获得商业授权。 』

    这个其实是冲突的么, GPLv2 本身就允许商业使用,而且不能加限制性条款。


    @yangyaofei
    将其视为插件,在线安装不要打包进源程序(或者分开发布,让用户手动合并)
    通讯的话,使用 API 、进程间通讯均可,就不会感染。

    至于上文说的不允许商业使用,无视即可,因为 Coreseek 已经被感染成 GPLv2 了,也无法限制你商业使用。。
    yangyaofei
        7
    yangyaofei  
    OP
       2016-05-09 13:04:42 +08:00 via Android
    @kokutou 对啊………
    @402645707 现阶段没有那个成本和实践来完成这个功能………以后会实现吧……
    @9hills 我估计他说的商业授权指的是不公开源代码的情况下嵌入使用的授权吧……
    还有,调用 api 的话不会算是么……那 lgpl 还有啥意义……

    吐个槽
    唉,那群外包做东西的时候肯定没想这么多……客户版竟然想装虚拟机里给客户,我说再怎么也要用 docker 之类的吧,他们一脸蒙逼,本来还挺信任他们的,现在不得不仔细审视他们用的所有工具和写的所有代码了。
    yangyaofei
        8
    yangyaofei  
    OP
       2016-05-09 13:05:14 +08:00 via Android
    @julyclyde 这个应该可以…
    yangyaofei
        9
    yangyaofei  
    OP
       2016-05-09 13:07:37 +08:00
    @kokutou 你的 markdown 跑了.......
    9hills
        10
    9hills  
       2016-05-09 13:41:01 +08:00
    @yangyaofei API 指的是基于 socket 的,你要是动态链接,那有较大的争议的。

    你做个服务把这个东西包起来,对外暴露 api 即可
    yangyaofei
        11
    yangyaofei  
    OP
       2016-05-09 13:45:24 +08:00 via Android
    @9hills 哦……了解了,我也觉得库调用肯定会传染
    julyclyde
        12
    julyclyde  
       2016-05-09 13:45:46 +08:00
    @9hills 不冲突。如果商业使用不想开源的话可以“另”申请授权
    sivacohan
        13
    sivacohan  
       2016-05-09 14:13:46 +08:00 via Android   ❤️ 1
    想避免感染,学学 Android 的 HAL 层。感染到 HAL 就结束了。
    onceyoung
        14
    onceyoung  
       2016-05-09 15:47:02 +08:00 via Android
    请参考安卓
    hjc4869
        15
    hjc4869  
       2016-05-09 15:53:04 +08:00
    让用户自己完成组装 GPL 软件和商业软件的过程(可以教客户怎么做,或者做个向导),同时自己不将商业软件和任何包含了 GPL 库的程序一起分发。
    loading
        16
    loading  
       2016-05-09 15:53:20 +08:00
    写个中间应用,暴露需要的 api ,然后你调用就可以了,只感染你的中间应用。
    yuyang1110
        17
    yuyang1110  
       2016-05-09 17:00:37 +08:00
    @hjc4869 那是 lgpl , LGPL 协议是可以使用库,但是不能捆绑分发。

    gpl 如果不想开源的话,必须用进程间通信。否则,必须开源的。

    不过,开源也可以用在商业目的上。。这两个事情互补干扰。
    yangyaofei
        18
    yangyaofei  
    OP
       2016-05-09 17:24:56 +08:00
    @sivacohan
    @onceyoung
    @yuyang1110
    谢谢
    吐个槽:外包竟然说我们没和他说明白不能用 gpl 的软件....我靠,我们有说我们要给客户分发啊...现在开始说这个了.....
    yangyaofei
        19
    yangyaofei  
    OP
       2016-05-09 17:29:05 +08:00
    @sivacohan
    @onceyoung
    @yuyang1110
    @loading
    @9hills

    话说如果那个软件只是作为 mysql 的引擎的话,是不是就可以规避这个问题了?
    而且 mysql 和我 java 层面的软件都是用 socket 连接的,所以这样就应该没问题了吧?
    yuyang1110
        20
    yuyang1110  
       2016-05-09 19:03:46 +08:00   ❤️ 1
    @yangyaofei mysql 的引擎的话,应该没有问题的。
    jsonline
        21
    jsonline  
       2016-05-09 19:15:55 +08:00
    你们说的『传染』是同一个『传染』吗……
    yangyaofei
        22
    yangyaofei  
    OP
       2016-05-09 19:31:41 +08:00
    @yuyang1110 谢谢....再问一个.....如果是用 system("shell") 来执行 shell 命令呢?我觉得不算,但是也不敢说肯定不算
    yangyaofei
        23
    yangyaofei  
    OP
       2016-05-09 19:32:03 +08:00
    @jsonline 你认为是那种传染
    jsonline
        24
    jsonline  
       2016-05-09 19:38:19 +08:00
    @yangyaofei 难道不是 lisence 传染吗?
    msg7086
        25
    msg7086  
       2016-05-09 20:26:55 +08:00
    @jsonline 我们说的是 license 传染。
    simpx
        26
    simpx  
       2016-05-09 21:04:49 +08:00   ❤️ 1
    用 RPC ,我在一个要使用 gpl 代码的项目里是准备这么做的:
    1. 在本机上实现一个使用 GPL 代码的 server ,提供 http 接口,或者 rpc 接口
    2. 自己的项目通过接口访问 server 进而使用 GPL 代码提供的功能。
    3. 只需要开源 1 里面实现的 server
    Zzzzzzzzz
        27
    Zzzzzzzzz  
       2016-05-09 21:22:03 +08:00
    @yangyaofei 我感觉你是想打包了一起交付用户吧, 那转移 mysql 上也解决不了问题, mysql 商用捆绑打包需要专项授权 http://www.mysql.com/about/legal/licensing/oem/
    feelapi
        28
    feelapi  
       2016-05-09 21:44:29 +08:00
    PostgreSQL
    9hills
        29
    9hills  
       2016-05-09 21:45:35 +08:00 via iPhone
    @yangyaofei 这个肯定不算,就连动态链接都有争论的
    hjc4869
        30
    hjc4869  
       2016-05-09 22:59:33 +08:00   ❤️ 1
    @yuyang1110 并不是, GPL 限制的是分发者,如果你没有分发 GPL 软件,就不需要受 GPL 约束。
    如果是用户自己把你的软件和 GPL 软件放在一起用的,那么就是用户自身受 GPL 的约束,换言之用户分发你的商业软件+GPL 软件时需要同时遵守你提供的商业软件使用协议和 GPL 本身(显然这是不可能的),所以用户无权分发这样的软件,但是用户有权使用这一的软件,你作为商业软件发布者不需要担心。
    GPL 也没有规定你不能教用户怎么将 GPL 软件和你的商业软件一起组装使用。你可以在 Installer 结尾弹个 README ,或者干脆弹个网页,然后让用户下载另一个 GPL 程序装上。
    比较有争议的是像 potplayer 那样在安装结尾处直接让用户勾选一个复选框就能装 GPL 软件,但如果是分开分发,并且两个部分提供两个不同的协议(一个商业 license 一个 GPL ),那么原则上是没有违反 GPL 的。
    当然如果你的目标是 Oracle 家的 GPL 软件,就别拿上面这些理论去铤而走险了,除非自认为自己的法务部比 Oracle 牛逼(
    yangyaofei
        31
    yangyaofei  
    OP
       2016-05-10 11:25:32 +08:00
    @Zzzzzzzzz 恩是的,看来不能这么做了.现在我在想交付方式是一个 docker image 或者一台主机 win 上我在想是用一些脚本让他们同时启动,现在看来第三种基本上已经不行了....我们公司其实卖的是数据....

    @9hills 动态连接应该算吧...
    realpg
        32
    realpg  
       2016-05-11 01:39:02 +08:00 via Android
    @yangyaofei
    卖数据啊。
    好办。
    你们只销售数据文件就行了
    环境什么的,提供一个编译安装指导手册,就完事儿。
    甲方不行搞不定可以让委托一个个人付费 100 元按照你们的指导安装程序,导入数据。这个人个人身份承接就完事。
    yangyaofei
        33
    yangyaofei  
    OP
       2016-05-11 09:12:52 +08:00 via Android
    @realpg 估计这样客户会疯的😂😂😂
    realpg
        34
    realpg  
       2016-05-11 09:15:04 +08:00
    @yangyaofei
    疯啥啊……
    都是你公司的人去安装去干这干那的 就是个纸面规避授权而已
    这种事国外都尝干的
    你当那些带闭源扩展 PHP 环境的商业软件都是怎么搞的……
    yangyaofei
        35
    yangyaofei  
    OP
       2016-05-11 10:56:37 +08:00 via Android
    @realpg 我能说搞成那种形式基本上只能我去安装,别人都不会,现在基本上决定是,弄好一个主机直接交付弄好的硬件😂
    realpg
        36
    realpg  
       2016-05-11 11:36:01 +08:00 via Android
    @yangyaofei
    核心就是,卖数据和安装服务,不要卖软件
    明白没?
    yangyaofei
        37
    yangyaofei  
    OP
       2016-05-11 23:27:07 +08:00 via Android
    @realpg 明白😂😂😂😏
    wizardforcel
        38
    wizardforcel  
       2016-05-12 09:15:17 +08:00 via Android
    gpl 是用户拿到二进制就必须拿到源代码。如果你挂网上提供 http 服务,那不算。

    库的话,看最后链接不链接了。链接的话 gpl 传染, lgpl 不传染。不链接的话就是单独的程序集了,而且没必要打包分发,可以通过依赖配置(比如 maven )来配置嘛。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1033 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:45 · PVG 02:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.