基于开源项目二次开发违反道德吗?

2022-12-07 21:35:48 +08:00
 ggp1ot2

RT 。

想用 Python 写一个插件,在查找相关资料时,发现在 GitHub 上有老外已经写了一个相关的项目。

当然,不是 100%和我要实现的需求重合,大概有 60-70%的重合度

但是主要的逻辑代码,我自从看过他写的,就跳不出他的想法了,因为已经实现了,代码写的也挺漂亮。

我想基于他的代码,去做二次开发(删掉我不要的功能,新增我需要的特性,优化使用细节等)

======

如果我直接拿走二次开发,那么我最终的项目里面不可避免的会有他的影子,至少主要逻辑的实现上差不多。

=======

我不知道这样做,是否违反某些开源协议,至少如果我直接这样做我会觉得有点不厚道。

当然我可以重写他的代码,换换函数掉用顺序,修改修改变量名、参数名等等来魔改,改到至少一眼看不出来,但是这样更让我觉得有点 shame ,并且我也觉得,写的挺好了。

======

所以,就这种情况,如果我基于别人的项目,具体点,在他现有的代码上修改来二次开发(无法通过提交 PR 合并来实现我的需求),是否为一件 [不应该] 去做的事情。

另外,如果可以,那我的项目应该属于谁?

=======

补充,我检索到的 GitHub 项目没有几个 star ,页面提示了 MIT 协议。

7965 次点击
所在节点    程序员
55 条回复
mikewang
2022-12-08 02:37:46 +08:00
GitHub 右上角有一个 Fork 按钮,就是干这个用的。
关于 MIT 协议,这个协议要求很宽松,你甚至可以选择闭源。
唯一一点需要注意的是,需要在你的项目中注明使用到代码的原作者并付上原本的 MIT 协议,以示感谢。
其他想怎么改就怎么改,改到原作者都不认识也都行。
msg7086
2022-12-08 03:11:14 +08:00
跟着协议要求走就行了。

MIT 协议允许你进行二次开发,照着上面的要求做就行了。他用了 MIT ,也就等于允许你做你说的事情。

你的项目属于你和这个项目的作者。他是第一作者,项目是原创作品。你是第二作者,项目是衍生作品。你们两人共享项目著作权。细化到每一块代码,他写的他拥有著作权,你写的你拥有著作权,双方都涉及的部分两人共享著作权。

看着他的代码来重写代码不会改变你的代码是衍生作品这一事实,没有必要做。
iBugOne
2022-12-08 05:34:45 +08:00
只要做法妥当,二次开发是光明磊落的。

例如,Proxmox VE 是基于 Debian 发行版和 Ubuntu 的 kernel 二次开发的虚拟化平台,加入自己写的前端软件,对标全套 VMware vCenter 软件。不仅开发成果出来了,而且按订阅收费,有很多企业级订户,还收获了各路虚拟化 /软路由论坛的响当当的口碑。毫不夸张地说,PVE 是开源软件二次开发的一个巨大的成功例子。
netabare
2022-12-08 06:18:40 +08:00
只要符合开源协议要求,那就没有任何问题。有的协议甚至允许你的二次开发代码闭源。

某种程度上说,二次开发也是软件开源的一个目的吧。
Henryzhao
2022-12-08 06:19:12 +08:00
@ggp1ot2 如果注明的是其他协议遵守协议即可,如果没有注明任何协议,需要认为是原作者保留所有权利,任何形式的使用都是违规的。

https://opensource.guide/legal/

“If you don’t apply an open source license, everybody who contributes to your project also becomes an exclusive copyright holder of their work. That means nobody can use, copy, distribute, or modify their contributions – and that “nobody” includes you.”
Henryzhao
2022-12-08 06:22:09 +08:00
@Henryzhao Section 2 第一段
“When you make a creative work (such as writing, graphics, or code), that work is under exclusive copyright by default. That is, the law assumes that as the author of your work, you have a say in what others can do with it.
In general, that means nobody else can use, copy, distribute, or modify your work without being at risk of take-downs, shake-downs, or litigation.”
baobao1270
2022-12-08 07:30:37 +08:00
问题不大。

之前我有在用一个 MIT 协议的 Chrome 插件,后来作者将后续版本闭源并收费了,并且直接将用户安装的开源版本强制推送升级成封源版本。于是我就直接 fork 了最后一个以 MIT 协议授权的版本,然后重新在 Chrome 商店上架了。
cheng6563
2022-12-08 09:19:52 +08:00
没有协议就是不小心代码让你看到的闭源项目
ttgo
2022-12-08 09:27:07 +08:00
安卓 ios 不都是「基于开源项目的二次开发」?
chrawsl
2022-12-08 09:51:58 +08:00
mit 貌似不允许直接倒卖源码,其他比如二次开发什么的都是允许的
Leonard
2022-12-08 09:55:21 +08:00
开源就是为了让大家用的,只要协议允许就行。
Marinaaaa
2022-12-08 09:56:28 +08:00
直接问原作者,如果没有回应的话。可以直接在 readme 中贴上原地址,或者直接 fork 一份出来也可以。
catsoul
2022-12-08 10:07:40 +08:00
@msg7086 我估计 OP 的意思是,删掉原有项目中的一部分代码,是否是不道德
ggp1ot2
2022-12-08 10:23:47 +08:00
@catsoul #33 删掉一部分,复用一部分,新增一部分。。。关键是复用的是核心代码,新增的只是新增一些功能,因为我感觉,如果让我从 0 开发,很大一部分精力是去思考、调试如何实现核心代码,现在直接发现有一份写好的,感觉直接拿来用感觉像小偷一样哈哈,
catsoul
2022-12-08 10:27:03 +08:00
@ggp1ot2 按我对 mit 协议的理解来说,这些都是协议范围内,所以应该是没问题的~
liprais
2022-12-08 10:30:06 +08:00
mit 协议不是随便玩么,只要你保留他的版权声明就行
soulmine
2022-12-08 10:36:06 +08:00
@ggp1ot2 那你这么想 你改出来的新版本也会有其他人像你一样直接在上面继续改出他所需要的版本 那你不就和他一样了么 这就是传承啊( bushi
msg7086
2022-12-08 10:46:05 +08:00
@catsoul
@ggp1ot2 这不是小偷,小偷是别人藏着护着的东西你给他拿来。这是人家主动公开了,主动允许你拿。
star7th
2022-12-08 10:55:37 +08:00
多年的开源项目维护者过来说一下。
既然是 MIT 协议,那法律上不存在问题。道德上,愿意的话,就在仓库首页致谢一下,说本仓库的代码参考了 xxx 的部分实现。
ysc3839
2022-12-08 11:14:40 +08:00
道德是个很宽泛的概念,不同人的道德标准也不一样。前面那么多说说符合协议的,都只是在讲法律问题。不然为什么某系统宣称自主研发,但实际上是基于开源项目修改,结果遭到很多人批评?个人觉得道德是约束自己的,每个人都有自己的道德标准,而这个标准是很难解释理由的,按照自己的标准做事即可。

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

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

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

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

© 2021 V2EX