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

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

RT 。

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

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

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

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

======

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

=======

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

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

======

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

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

=======

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

7575 次点击
所在节点    程序员
55 条回复
ChaosesIb
2022-12-07 21:40:20 +08:00
有时间写那么多话不如去读下 MIT 协议。
delpo
2022-12-07 21:40:23 +08:00
开源协议的存在价值之一就是让项目可以被更多的人使用,这里的使用自然也包括了二次开发,所以如果你在遵守协议的情况下对代码进行修改,分发,是完全合理合法的,因为这就是作者选择这种开源协议的本意
ggp1ot2
2022-12-07 21:42:34 +08:00
@ChaosesIb #1 抱歉,我读了,不然也不会打出来,因为第一次想去写一个开源的东西,直接咔咔拿走别人代码感觉有点不合适
ggp1ot2
2022-12-07 21:44:36 +08:00
如果没有 MIT 协议呢??
JiuW
2022-12-07 21:50:25 +08:00
不违反协议就行。各个开源协议要求不同,原作者选择了某种协议就代表他认可这个协议的内容,在你遵守协议的前提下的行为自然也应当得到认可
crysislinux
2022-12-07 21:51:28 +08:00
MIT 随便用。GPL 你如果是服务端用也是随便用。当然你可以在自己的 license 里提到你用了这些项目。
xmumiffy
2022-12-07 21:51:57 +08:00
不同协议有不同要求,按照协议要求去做就行。
不过如果项目没有附带协议,那就是你不能做任何事,代码只是给你看看的
subpo
2022-12-07 21:53:28 +08:00
包括但不限于使用、复制、修改、合并 、发布、分发、再许可的权利, 被许可人有权利使用、复制、修改、合并、出版发行、散布、再许可和 /或贩售软件及软件的副本,及授予被供应人同等权利

中文版本也很容易搜到,哪里很难理解了
xujinkai
2022-12-07 21:58:16 +08:00
MIT 随便,觉得不好意思就在你的 readme 里把他链接贴出来,再夸几句。
momocha
2022-12-07 22:07:18 +08:00
出于对前任贡献的尊重,添加致谢文件,保留前任的版权声明文件和源码里的版权声明,再添加自己的版权声明。
每一行代码都是汗水,请大家在使用别人的成果时候尊重别人的劳动成果和版权声明。
darkengine
2022-12-07 22:22:58 +08:00
没有协议就问原作者
imv2er
2022-12-07 22:24:05 +08:00
很多不都是开源二次包装做成商业版发售吗
hamsterbase
2022-12-07 22:49:58 +08:00
我觉得可以联系原作者,问一下能否新增 PR 加功能。 如果他不愿意,你可以选择 fork 。

注意不要删除原来的 license 。

推荐读一下 《大教堂与集市》,第 3.3 章提到了这个问题。

下面是原文

然而,在经历这些变化之后,人们对什么是“自由软件”或“开放源码”仍有着普遍认可的共识,在很多开源许可证中都能发现对此共识的清晰表达,其最关键要素都是一致的。

1997 年,“Debian 自由软件准则”提炼了这些共同要素,并形成了开放源码定义( OSD ,参见 http://www.opensource.org )。

定义指出,开源许可证必须保护任何个人或团体无条件修改开源软件(以及发布修改后软件版本)的权利。
所以,OSD (以及与 OSD 一致的版权声明,如 GPL 、BSD 许可证、Perl 的艺术许可证( Artistic License ))隐含的规则是“任何人能干任何事”( anyone can hack anything ),没有任何事情可以阻止人们获取任意开源产品(如自由软件基金会的 gcc 编译器)、复制其源码、推进其向不同方向演进,并都可声称是该产品。

这种演进上的分化称为“分支”(fork),分支最重要的特点是它派生出一个随后不能交换代码的竞争项目,并导致开发社区潜在的分裂。(有的情况看上去像分支但其实不是,如 Linux 存在的多种发布版本。这种伪分支可能会导致不同的项目,但是它们使用的代码几乎相同,并且可以互相受益于对方开发的所有成果,它们在技术上和社会学上都不是浪费,也不会让人感觉到是“分支”。)

开源许可证没有对“分支”做任何限制,更不用说“伪分支”了。人们可能会说这暗中鼓励了分支,但实际上,“伪分支”比较常见,分支却几乎没有发生过。重大项目极少产生分化,如果有,也总伴随着重新命名以及大量的公开解释,很明显,在诸如 GNU Emacs/XEmacs 分化、gcc/egcs 分化,以及从 BSD 派生出的各种分化中,分化者都觉得他们在违背一个相当强大的社区准则

事实上,和“任何人能干任何事”共识相矛盾的是,开源文化有一套严格的但主要是“不允许”类型的所有权惯例。
这些惯例决定了谁能修改软件、在什么情况下可以修改,以及(特别是)谁有权利向社区发布修改后的版本。
文化中的一些禁忌凸显了这些准则,我们在此总结其中一些重要的内容,以便后面使用。


1. 分化一个项目会遇到强大的社会压力,只有在极为必要的情况下才使用,而且要重新命名和做出大量的公开解释。
2. 在没有项目主持人认可的情况下发布更新是令人不悦的,除非是特殊情况(如本质上不重要的移植 bug 修复)。
3. 在项目历史、致谢表或维护列表中移除某个人的名字是绝对不可以的,除非当事人明确表示同意。

在本文的余下部分,我们将仔细研究这些禁忌和所有权惯例。我们将不仅探究这些概念是如何运转的,还将揭示开源社区背后隐藏的社会动力学及激励结构。
hamsterbase
2022-12-07 22:50:29 +08:00
如果选择闭源,直接改就行了,完全没问题。
geelaw
2022-12-07 23:05:15 +08:00
自由软件的宗旨就是告诉你所谓“使用别人的代码不道德”这个想法是有问题的,自由使用你所得到的软件,包括对它二次开发(实际上就是改进、衍生的一种)是自由软件运动鼓励的事情。没有领会到这一点是对自由软件运动理解的失败——这之中自然有受开源软件运动理念影响的问题。

这里惟一的道德问题是是否标注出处( give credit ),道德的做法是明确标注你使用了什么代码(衍生自哪里),同时这也是合同(你获得的自由软件的许可协议)所要求的。
lujiaxing
2022-12-07 23:13:56 +08:00
如果运用开源项目的代码都是违反道德的话, 那开源项目开源的意义在哪?
MrDavidJones
2022-12-07 23:16:34 +08:00
有开源还不用 作者看到更心疼
loading
2022-12-07 23:23:32 +08:00
不用删除原有功能,加入配置项或其他方式就行,改进他的代码结构,
如果可以,建议 fork 一下,后面 pr 回去,成为注意代码贡献者也是一个宝贵的经验。
Laussan
2022-12-07 23:24:39 +08:00
他声明了协议,你觉得遵守它的协议违反道德,这同样也是对协议的不尊重。
JackCh3ng
2022-12-07 23:24:43 +08:00
你只要记住苟富贵,勿相忘。先不管道不道德,用了再说,可以在鸣谢里加上用了谁谁谁的代码或基于谁谁谁的代码,以后真要是发达了,作者找到你或者你主动找作者要授权就好了。不要蛋糕还没做出来,就想着这蛋糕我一个人吃了道不道德的问题。
你也不要觉得我说的这种行为不道德,这样的行为在商业上很常见,先把蛋糕做出来,再考虑分蛋糕的事,你要是蛋糕都做不出来,谁会在乎你是不是用的他的代码做的蛋糕?

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

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

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

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

© 2021 V2EX