查看原文
其他

科学网:如何姿势正确的抄袭他人代码?

2017-08-21 徐洲更 生信媛

这是我写的最后一篇关于Y叔代码被抄袭事件文章,主要是介绍一下自由软件的协议,当然也为了回应某个X教授。

这篇文章的思路和辩论的思路是一致的,但是为了照顾哪些不愿意看这种辩论的读者,我会首先提出真正正确使用别人代码的方式,然后对X教授的观点进行反驳。

太长不看版: 每当你要修改别人的代码,请发邮件问下对方如何使用。开源软件的开发者大多希望自己的工作能被别人记住,而不是被别人霸占。

如何正确的使用别人的代码

不懂就去问搜索,发邮件问开发者是正确使用别人代码,避免以后不必要的纠纷的最佳方法。

目前生物信息领域粗略的分为两个方向(我个人分的,欢迎拍砖),一个方向侧重于工具开发,一个方向侧重于工具的整合使用。

对于工具的整合使用,就类似于我们平时拿Excel, SPSS, R进行数据分析,我们不会想去修改工具本身,而且软件本身也会提出引用要求,你只要按照软件要求来的就行了。如果你觉得这个软件不太适合你的需求,你需要进行一点修改,那么发邮件和原作者进行讨论,按照他的要求来。如果这个程序本身是按照某一种协议开发的,你还需要根据协议要求来修改代码,这个会和工具开发一起讨论。

对于工具开发,如果你只是借鉴了别人的想法,但是在代码部分完全不同,比如说Minix的开发者就是看完了Unix的源码文档,然后从头到尾根据自己的理解写出不同的代码,那么在文章说明主意的来源,引用文章,让原作者能被记住,给他继续创作的动力。但是你一旦开始用到别人的代码,那么你就需要看别人的代码所遵守的协议。Y叔的被抄袭的代码遵守的GPL v2.0 协议,有如下几条关于复制和修改

  1. 您可以修改本程序的一个或数个复制物或者本程序的任何部份,以此形成基于本程序所生的著作,并依前述第一条规定,复制与发布此一修改过的程序或著作,但您必须符合以下要件:
    (a) 您必须在所修改的挡案上附加显著的标示,阐明您修改过这些挡案,以及修改日期。
    (b) 您必须就您所发布或发行的著作,无论是包含本程序全部或一部的著作,或者是自本程序或其任何部份所衍生的著作,整体授权所有第三人依本授权规定使用,且不得因此项授权行为而收取任何费用。
    (c) 若经过修改的程序在执行时通常以交互方式读取命令时,您必须在最常被使用的方式下,于开始进入这种交互式使用时,列印或展示以下宣告:适当的著作权标示及 无担保声明(或者声明您提供担保)、使用者可以依这些条件再发布此程序,以及告知使用者如何浏览本授权的副本。(例外:若本程序本身是以交互的方式执行, 然而通常却不会列印该宣告时,则您基于本程序所生的著作便无需列印该宣告。)

光像X教授说的那样是不够的,或许是因为他没有了解GPL协议就写文章的原因吧,

Introduction里要有介绍,方法学里要有概括,人家论文你要引用,致谢里最好再写上感谢XX大虾仗义相助云云,这几个您总得占上一个吧?

我们修改别人的代码的时候,如果要发表(私用随便你),你必须注明你修改的地方,而Y叔在学术期刊的学术不端,你见过吗? 提供的截图就是抄袭者没有遵守GPL协议的“您必须在所修改的挡案上附加显著的标示,阐明您修改过这些挡案,以及修改日期“ 的证据。

X教授的不足

每当看完X教授的文章,你都会发现大部分的内容都是合理的,比如说X教授在如何姿势正确的使用他人代码? 讲了一个故事,讲的是自己如何为了解决自己的问题”正确“使用别人的代码的故事。 他借用了别人的代码,然后修改了一下,除了自己的数据,并且在文章进行致谢。这个故事没有任何问题,他的行为其实也很恰当。只不过文章掺杂了二个错误的观点:

第一: 乱用案例。X教授用了自己正确修改别人代码的方式,来类比ppiPre抄袭GOSemSim。X教授是用别人的软件进行数据分析,并没有专门写文章介绍自己如何开发这款软件,代码重复率99.99%肯定没有关系。而ppiPre发的文章就是介绍自己如何开发“开发”的软件。一个是软件开发,一个是软件使用,没有联系的案例硬是被自己联系到一起,这不是混淆概念,乱用案例吗?

第二: 没有说清代码的重用,抄袭不能按照代码相似度来判断,那你为什么刻意抹去原作者的贡献。

所以这三篇文章在方法学里,都用了相当的篇幅来介绍如何用之前他人的方法来研究自己关心的问题,并且既然都是用之前他人设计的方法,这代码如何能没有相似之处?

原文想用这一段说明HPOSim、DOSim和GOSim代码相似不是抄。 开源协议允许代码重用,但是要求重用的时候体现原作者的贡献。显然抄袭者的代码中没有体现这一要求,X教授避而不谈

另外,使用他人代码是否规范,并不能按照代码相同或相似的比例来判定,GOSemSim做的是GO分析,ppiPre做的是相互作用预测,即使这两个代码相似度在99.9999999999%,那ppiPre也必然有自己独到的东西,不然如何能预测蛋白质的相互作用?

Y叔的回应是:而ppiPre之所以可恶,就是因为违背了开源精神,改函数名删注释等各种试图去抹除原作者的痕迹,并试图把代码当成是自己的,所以说啊,开源要说人抄袭也很困难,但ppiPre明显就是.

代码相似不是问题,既然你ppiPre有自己的独到的地方,可以预测蛋白质的相互作用,你改函数名删注释干嘛。你确定你自己不是心虚吗?而且ppiPre全文都在试图把Y叔的工作当作自己的工作介绍。这些东西你放在introduction不就行了,你放在全文里说那么多干嘛。

代码重用 VS 抄袭

X教授无论写多少文章来洗白抄袭者,都避不开一个问题:抄袭者为什么要刻意抹去原作者的贡献。 如果抄袭者认为自己无法直接调用R包,那你为什么不写邮件和作者联系。

当然X教授喜欢活在自己的世界里,而且还特别喜欢用自己的文字体现自己的心态宽广,喜欢用自己的阅历,而不是逻辑来说事情。

系列文章

还有一句,科学网是不客观的媒体。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存