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

开源软件的闭源部分如何代码管理的

  •  
  •   layman3612 · 171 天前 · 2035 次点击
    这是一个创建于 171 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题, 有些开源软件会有部分付费才能用的高级功能, 这部分代码是如何管理的。
    13 条回复    2024-07-05 12:31:07 +08:00
    kk2syc
        1
    kk2syc  
       171 天前
    remove 管理法
    shuxhan
        2
    shuxhan  
       171 天前
    .gitignore
    layman3612
        3
    layman3612  
    OP
       171 天前
    @kk2syc 内网留一份全的, 专门的人去删代码 提交 github ??
    celaraze
        4
    celaraze  
       171 天前   ❤️ 2
    楼上都是说的啥,我使用子模块处理的,a 仓包含了 b 仓代码内容,b 仓不公开,a 仓 git submodule 加 b 仓地址。开发者正常 submodule update 会提示需要 b 仓的 credentials 才能拉取到这部分代码。
    celaraze
        5
    celaraze  
       171 天前
    #4 补充,设计时候要做对业务功能做模块化处理,如果闭源代码过于耦合,显然不适合。我是把闭源代码放在单独的目录中,这样才能用 git submodule 处理。
    layman3612
        6
    layman3612  
    OP
       171 天前
    @celaraze 多谢 学到了
    NICE20991231
        7
    NICE20991231  
       171 天前
    呃,不同的分支 不同的 ignore 文件就行了
    Kumo31
        8
    Kumo31  
       171 天前
    都是“开源”,但不同方式之间差异很大

    有一些是软件本身开源但不接受贡献 or 不维护社区,这种就只是公开代码而已,开发都在内部仓库,每次发版后就直接往 Github 上的仓库提个只有一条 commit 的上万行 pr 完事。

    大部分商业项目开源都是将组件设计为可插拔的,高级功能的组件是单独维护的,这样核心部分可以按正常的开源项目来维护和管理社区。或者内核完全开源,但产品化功能(例如管控平台、云服务)闭源,就我接触到的数据库、存储开源项目而言大多是这样
    kk2syc
        9
    kk2syc  
       171 天前
    @layman3612 事实上大部分都是这样干的,内部开发的是全版本,开源发版的时候去掉商业部分。都是草台班子
    AirCrusher
        10
    AirCrusher  
       171 天前   ❤️ 1
    https://github.com/google/copybara 就是在私有仓库和开源仓库之间同步用的
    Felldeadbird
        11
    Felldeadbird  
       171 天前
    首先你要把闭源代码和开源代码解耦。不然你就只能做 2 个仓库。

    我现在的做法是:开源主程序一个仓库。闭源的功能代码一个仓库。

    闭源的功能代码仓库,默认把开源主程序的代码都添加到忽略列表。这样电脑坏了,或者换一台电脑,我拉去闭源的仓库后,在拉去开源的仓库,把开源的主程 copy 一份过去就可以无缝运行了。

    所以才说解耦是关键。
    gegewu0927
        12
    gegewu0927  
       170 天前
    拉分支 ignore
    jones2000
        13
    jones2000  
       170 天前   ❤️ 1
    开源项目里面预留外挂扩展接口,闭源部分做成独立项目, 启动的时候通过开源项目外挂接口,把闭源的部门注册到开源项目里面去,就可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:24 · PVG 00:24 · LAX 08:24 · JFK 11:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.