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

140 天前
 layman3612
如题, 有些开源软件会有部分付费才能用的高级功能, 这部分代码是如何管理的。
1980 次点击
所在节点    程序员
13 条回复
kk2syc
140 天前
remove 管理法
shuxhan
140 天前
.gitignore
layman3612
140 天前
@kk2syc 内网留一份全的, 专门的人去删代码 提交 github ??
celaraze
140 天前
楼上都是说的啥,我使用子模块处理的,a 仓包含了 b 仓代码内容,b 仓不公开,a 仓 git submodule 加 b 仓地址。开发者正常 submodule update 会提示需要 b 仓的 credentials 才能拉取到这部分代码。
celaraze
140 天前
#4 补充,设计时候要做对业务功能做模块化处理,如果闭源代码过于耦合,显然不适合。我是把闭源代码放在单独的目录中,这样才能用 git submodule 处理。
layman3612
140 天前
@celaraze 多谢 学到了
NICE20991231
140 天前
呃,不同的分支 不同的 ignore 文件就行了
Kumo31
140 天前
都是“开源”,但不同方式之间差异很大

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

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

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

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

所以才说解耦是关键。
gegewu0927
139 天前
拉分支 ignore
jones2000
139 天前
开源项目里面预留外挂扩展接口,闭源部分做成独立项目, 启动的时候通过开源项目外挂接口,把闭源的部门注册到开源项目里面去,就可以了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1054826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX