京东开源项目 ContainerFS 涉嫌抄袭 SeaweedFS

微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置“置顶”:点击上方蓝色字体“程序员之家”-点击右上角“…”-点击“设为星标”。

可以啦,让我们继续相互陪伴。


内容综合自:好奇心日报(作者:罗骢)、Chris Lu知乎专栏


昨天,GitHub上开源项目SeaweedFS的作者Chris Lu在知乎专栏中发表文章称京东在TigLab开源项目中涉嫌抄袭他的源码。


开源项目SeaweedFS是由Go语言开发,用于存储大批量文件的系统,原理基于Facebook的一篇图片存储系统的论文 Facebook-Haystack。特点是可以在保证速度的情况下,存储上亿的文件(根据硬盘大小变化)。京东涉嫌抄袭的项目叫 ContainerFS ,是由京东开发的大规模原生文件存储系统。


京东的TigLab项目也是开源项目,可以查看到项目内的代码。在知乎专栏中,ChrisLu表示这些项目中使用了他的源码,但是没有根据Apache-2.0协议的许可条款添加引用说明。


他列举了一些引用的地方,例如storage/chunk.go里面,函数名WalkIndexFile,两种文件名".cpx"、".cpd",变量名TombstoneFileSize等都属于 ChrisLu随便编写的名称,但是这些名称都出现在了京东的项目中,其余还有一些Facebook论文中并未描述的程序结构也有相似的地方。


随后ChrisLu说联系了京东该项目的负责人刘海峰,在晒出的聊天截图中,刘海峰表示并不知悉SeaWeedFS该项目,他认为出现参数名称相同的情况,可能是因为编码的同事查看过ChrisLu的作品,对于其中参数名称印象深刻,所以才会使用。“参数名称相同并不能构成抄袭。”,随后称正在要求修改相同的参数名称和文件后缀名。


随后ChrisLu贴出了京东修改了相同参数名的Commit截图。京东并未作出官方回应。


在评论区有人对开源项目的使用权进行了质疑,认为既然开源了,难道不是可以随意使用该项目的代码吗?但实际上从最初代码开源开始,开源项目的版权就有明确的规定,受到相关开源协议的约束,开源并非意味着全部代码可以未经授权随意使用。

对于程序员来说,作品上传到GitHub或者开源中国等平台上,并不意味着就算“开源”了。在创建项目(仓库)的时候,都会有一个选项选择一个开源许可证。


640?wx_fmt=jpeg


一般来说,开源意味着作者希望自己的代码项目能够被他人使用,修改以及进一步研究。但因为法律依然默认开源项目享有专有版权,所以作者需要在代码中添加明确说明项目权限的许可协议,也就是版权协议License。


License就是版权许可证,里面详尽表述了获取开源代码后修改者拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的。常用的开源软件协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL。开源项目SeaweedFS就是使用Apache-2.0版本的协议。


以Apache-2.0版权协议为例,协议允许使用者可以将基于源代码修改后用于专利使用,也可以将源代码修改版进行商用。惟一的要求就是附带一份原作者许可和版权的申明。MIT,以及GPLv3都是类似宽松的流行开源协议。


而如果不希望自己的代码被人用于商用,也可以使用 CCAttribution-NonCommercial中文:署名-非商业性使用协议。开源届定义有几百种不同的开源协议,宽松程度不一,用以满足开源项目的各种使用场景。比如,是否允许商用,是否允许修改,修改后是否需要继续开源,开源是否必须继续使用相同协议授权等。


甚至还有 WTFPL协议,WTFPL(DoWhatTheFuckYouWantToPublicLicense,中文译名:你他妈的想干什么就干什么公共许可证)是一种不太常用的、极度放任的自由软件许可证。


网络上有人翻译了乌克兰程序员简单描述六种流行开源协议的使用区分。


640?wx_fmt=png


这几年,关于开源项目的抄袭事件发生了很多起。包括大公司阿里、华为在内,小项目也有发现自己的开源app代码被人直接使用上架AppStore赚钱等事件。


2017年,号称“中国首位00后CEO”的17岁创业者李昕泽被曝出涉嫌抄袭GitHub上的开源项目,被抄袭的国产开源项目名字叫做AndroidTVLauncher(中文名“猫桌面”)。从证据上看,两套产品的界面,素材几乎完全一样。李昕泽的产品右上角甚至还挂着“猫桌面”的名字,但并未在产品中注明代码来源,版权等声明。


去年9月,阿里巴巴也被质疑和《你今天真好看》应用团队合作后抄袭了整个产品的代码和设计。随后阿里回复称暂停了相关应用内的功能,进行下一步调查。


以下为作者在知乎平台发布详细内容(略经云头条编辑):


最近在github上搜索,碰到京东方面建立的TigLab公布出来的ContainerFS源代码。tiglabs/containerfs 其中关键的数据存储部分代码读起来异样的熟悉。仿佛时光倒流到SeaweedFS若干年以前。


例如storage/chunk.go 里面,函数名WalkIndexFile, 两种文件名".cpx", ".cpd", 变量名TombstoneFileSize。其实都是我拍拍脑袋想出来的。当时自己觉得很土的名字。没想到还有人认真的沿用了。真是非常荣幸。(京东找了一个乖巧的程序员写了一个乖巧的回答。不知道为什么删了。现在也截图补充在下面。)


640?wx_fmt=jpeg


ContainerFS 做存储的,这段代码是最关键的垃圾回收的部分。抄起SeaweedFS来挺大气的。不过抄的挺认真的。别的地方一般都有test. 这么重要的地方都不用写test.


例如,Google上随便搜索一下TombstoneFileSize,看看是不是都是指向SeaweedFS.


640?wx_fmt=jpeg


这是我相关的一些代码 (链接:https://github.com/chrislusf/seaweedfs/blob/master/weed/storage/volume_vacuum.go#L41)不过这是最新的,代码重构了无数次了,加了不少新的功能。京东估计也是改了不少变量名称,另外增加了不少功能。(当然这些功能是从哪里学习来的我就不知道了。)


据最近京东的报道,“幻想一蹴而就和急功近利,都是容器化过程中的大忌。“ 看来京东踏踏实实的借鉴了不少前人的经验。只是不用说明而已。


京东构建了全球最大的Kubernetes集群,没有之一


"我们也计划发布我们的内部自研项目。在http://github.com/tiglabs上能找到很多。我们还计划提出新的CNCF项目。其中一个项目是ContainerFS。它是一个与Kubernetes无缝集成的大规模容器原生集群文件系统。"
https://www.kubernetes.org.cn/4407.html


640?wx_fmt=jpeg


640?wx_fmt=jpeg


 事件后续更新:


联系了京东的负责人。京东的效率非常高。在稳住我的同时,偷偷让程序员改了一些明显的参数名,尽快扫除痕迹。然后批评我不该发知乎,让他吃惊了。姜还是老的辣!下面是一些截图让大家一起学习见识一下:


  1. 联系对话

  2. 具体的commit细节

  3. 看看群里人的反应(参考原链接)


对于不了解的同学,我想说一下,真的只是不想和京东掺和。对于这种事,生气伤身体。大浪淘沙,奶茶即使变绿茶也说要守得云开见月明。见识了,多吐吐,大家就会遗忘了吧。


640?wx_fmt=jpeg

640?wx_fmt=jpeg


640?wx_fmt=jpeg


知乎原文链接:

1、https://zhuanlan.zhihu.com/p/45668894

2、https://zhuanlan.zhihu.com/p/45653912


公众号内回复“1”带你进粉丝群640?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值