我的项目:
https://github.com/blinker-iot/blinker-library/
经过如下:
https://github.com/blinker-iot/blinker-library/issues/287
简单说下经过,
我的处理方式,
由于我和同事脾气都不太好,加上这哥们儿居然连 logo 和配置文件也觉得是一样,开始的时候回答简单粗暴了点。
结果,这哥们儿貌似开始在 FB 上声讨我,因为不是英语国家的人,说的可能是俄语啥的,翻译出来也看不太懂。
最后,我们换了一种写法,并添加了感谢信息,自认为算是结束了这个讨论。
总结下经验
虽然我自以为已经很注意相关协议,在文档和 readme 中都注明了使用到的项目,但还是没料到这种事,国人在国际上名声不太好,老外一开始就会主观的认为你不守规矩,所以大家做开源软件,真是要一开始就把 readme 写得滴水不漏,避免老外指责。
除了要写 readme,还要及时更新,很多人和我们一样把 github 当仓库用,但缺忽略了 github 也是个公告板,如果用了漏写了什么,可能会遭人诟病。
之前经常鼓励别人多看开源项目,学习别人好的写法,但现在我认为,如果觉得别人写法好,也不要学习,反而应该竟可能规避。
学好英语,避免和老外交流出现错误的表达,如果英语不好,直接用中文回复,让老外自己翻译,用了错误的表达,会刺激到老外。
遵纪守规,尽力维护中国程序猿形象
1
Lax 2018-12-26 14:28:36 +08:00
果然英语要表达恰当,不然容易留下弱点给对方攻击。对方针对那段 ascii art 显示的问题太过无理了
|
2
PerFectTime 2018-12-26 14:36:08 +08:00
emm 有毒......
|
3
sswxysswxy 2018-12-26 14:36:08 +08:00 2
“ Are u silly B ???” 你们同事确实可爱 😂😂😂但愿这个不是你🤔🤔🤔
|
4
jmc891205 2018-12-26 14:43:40 +08:00 1
一上来就说 "I had forked blynk codes before, and I use the template class(c++) same as blynk to build blinker."
有理也变成没理了 |
5
coloz OP @sswxysswxy 不是我,也不是我同事,写了 Member 的才是我们,可能是某个用户,因为老外已经看到了,所以没删,怕删了,老外又有得说了
|
6
fl2d 2018-12-26 14:53:32 +08:00 1
自己没做错的话,千万别道歉。该怼就怼,别因为对方是老外就怂了。
当然前提是,自己没做错。 |
7
coloz OP @jmc891205 英语不好,说的太急,后面我也做了解释,仅仅是用了同样 template 方式去实现一个模板,相同的代码,可能有 10 行不到吧
|
8
jeffcott 2018-12-26 15:01:39 +08:00
与主题无关,用中文还是用英语,这个问题我感觉挺现实的;
我和你的看法一致,“如果英语不好,直接用中文回复,让老外自己翻译,用了错误的表达,会刺激到老外。”; 但是,另一种更普遍的看法“ github 上用英语是基本礼貌”; 这两种看法,楼主怎么看 |
9
xeaglex 2018-12-26 15:03:04 +08:00
按照通行的做法,如果思路上你参考了它的实现,哪怕语法上和命名上不同,你这的确都算他的衍生品。不过 MIT 协议仅仅要求你们在相应位置添加人家的版权信息而已,这又有何不可呢?
|
10
Rh1 2018-12-26 15:04:36 +08:00 via iPhone
国外就没有杠精和喷子?国外程序员里就没有 V2 里某些奇葩?
|
11
fullpowers 2018-12-26 15:07:41 +08:00
借鉴别人的写法,自己造出一个的话会不会违法开源协议?
(我也经常借鉴其他优秀开源项目的写法) |
12
gclove 2018-12-26 15:08:22 +08:00
我觉得肯定借鉴了一些 ... 关键 MIT 不是自由宽松的许可证吗 ? 几乎没有什么限制
|
13
KasuganoSoras 2018-12-26 15:09:00 +08:00
他要你删字符画那个是真的逗比,明明就是一条命令 figlet 就行了
歪果仁也不是全都素质这么高,素质 dio 差的我也遇到不少了 |
15
nooper 2018-12-26 15:09:38 +08:00
什么是 mit,什么是 copy,什么是抄袭,一定要认认真真搞清楚。
|
16
xmge 2018-12-26 15:14:44 +08:00
如果觉得别人写法好,也不要学习,反而应该竟可能规避。 如果没理解错的话,自我感觉作者有点玻璃心了,因为一个老外就不学习,是不是把他看得太重了。想学习就学习,他爱咋咋滴。
|
17
coloz OP @xeaglex MIT 并没有相关说明,如果我们是在他项目基础上修改的,我认为可以算是衍生品。
事实上我们的代码,借鉴了很多前人的项目,只是“这个项目是以下几个项目的衍生品”,这种说法貌似没有看到过。 由于我们并不认为是衍生品,所以并没有添加权利信息,只是添加了感谢信息 |
18
tabris17 2018-12-26 15:17:51 +08:00 1
你可以用中文写,然后告诉对方,我写了,你 tm 自己看不懂中文怪谁
|
19
coloz OP @gclove
确实是借鉴了,但我们认为使用 C++template 语法,和泛型编程实现,是一个常见的用法,所以并没有在意。 其中相同的几行的代码,是状态描述和对应函数:连接、未连接、连接中,我也认为是网络连接的正常写法。 并没有考虑到这可能违反 MIT 协议,事实上 MIT 协议也对这种情况没有说明。 现在已经没有用这个语法了,换个了方式写,并添加了对其的感谢 |
20
bumz 2018-12-26 15:26:03 +08:00 2
私以为那个老外的要求你们一个都不用满足
因为你们的项目不是他的项目的 derivative work 但是你们的「 To be honest, I had forked blynk codes before, and I use the template class(c++) same as blynk to build blinker.」反倒是在说你们的项目是一个 derivative work。这就等于直接认输了。 「 But the way how to communicate and connect server and so on are all different with blynk.」这句话相当于是在说你们的项目是一个 new work,而不是原 work,因为它有 "protectable expression that is not found in a prior work"。而 new work 是 derivative work 的一个基本要求。所以这句话依旧在佐证你们的项目是 derivative work。 私以为正确的做法是这样回复: Our work is NOT a derivative work of yours. Our code is new and DO NOT contain any piece of code from your work. We DID steal your ideas, such as project structure, architecture, logos, configuration options, headers, descriptions, but these are ideas, not code. Ideas cannot be copyrighted, it is not protected by your code license. Stealing your ideas DO NOT make our work a derivative work of yours, therefore we DID NOT violate your code license. |
21
coloz OP @fullpowers 虽然我不认同,但真是有可能,从很多讨论可以看出,大家对开源协议的解读都不一样。
|
22
xeaglex 2018-12-26 15:30:59 +08:00
@coloz 感谢信息也可以,其实就是表明这个地方多多少少受了他的好处。用 MIT 协议开源的人能要的也只有这个名头了,不然他为啥要开源啊。
|
24
coloz OP @bumz 感谢,确实我们表达有问题,但我也不同意使用 steal 一词,我只是觉得我们用了一个常用的语法去定义类,没有考虑到这样的做法可能违反协议。
当然是否违反协议,大家也众说纷纭,只是我个人觉得不违反。 如果这种做法违反 MIT 协议,很多项目可能都要添加一句“这个项目是以下几十个项目的衍生品”。 |
25
bumz 2018-12-26 15:43:21 +08:00 1
@coloz #24 问题不在于 steal/copy/learn from,而在于你 steal/copy/learn from 的是 idea 还是 expression。如果你抄了 idea,没关系(比如用 ASCII Art 就是一个 idea );如果你抄了 expression,比如代码,那么你明显违反了协议。
|
27
w01230 2018-12-26 15:53:59 +08:00
Blynk Blinker 这个……
关于 LOGO 部分我也认为你们抄了~哈哈 |
28
chaichaichai 2018-12-26 15:54:05 +08:00
啊,我之前一直在使用 Blynk,感觉可以试一下你们的项目,但是你们官网好像挂了?不知道你们是否支持 server 端部署在私有服务器上
|
29
deanzh16 2018-12-26 15:58:09 +08:00 via Android
Please tell us the same thing.
这个也太好笑了吧 |
30
bumz 2018-12-26 15:59:09 +08:00
@coloz #19
「确实是借鉴了,但我们认为使用 C++template 语法,和泛型编程实现,是一个常见的用法,所以并没有在意。 其中相同的几行的代码,是状态描述和对应函数:连接、未连接、连接中,我也认为是网络连接的正常写法。」 但是如果在法庭上「其中相同的几行的代码」可能足够让 jury 认为你们的项目是一个 derivative work。 至于「使用 C++ template 语法,和泛型编程实现」这显然是 idea 而不是 expression。 |
32
coloz OP @chaichaichai 企业版的才可以独立部署,计划提供个开源 APP,不需要 server 端也能用
|
33
coloz OP @w01230 我们中文名叫点灯,通常学习单片机开发,把 IO 口置高置低让一个 led 灯亮灭,中文通常说点灯,英文说 blink,这是单片机开发第一课,相当于学编程的 hello world,我们这个方案,基础功能就是完成这种控制,加个 er,表示这是一个实现功能的控制器,也指学习单片机的新手。
|
34
coloz OP @bumz 如果如此,是不是应该注明项目为多个项目的衍生品呢?
但貌似看没有人这么写。 观察很多实现类似功能的程序,实际都有重合的写法和代码,有些是用不同语言同样的结构实现。 如何才能规避相同写法呢? |
35
w01230 2018-12-26 16:15:26 +08:00
不过 MIT 不是可以随意拷贝 复制 修改发行的嘛(只要不侵权)……各位详解?
|
36
exceloo 2018-12-26 16:17:07 +08:00
以为老外就没有沙雕?
|
39
disonlee 2018-12-26 16:26:02 +08:00
借鉴模板类的方式...这也算抄么....
我真心认为这是借鉴并发扬光大...我要是原作者会很开心..... |
40
Kirscheis 2018-12-26 16:26:28 +08:00 via Android
你一开始的回复就错了。一旦你承认刚开始是从某个作品出发,哪怕你贡献了 100%的新内容,也就是原作品的源代码已经被删得一行都不剩下,也还是原作品的衍生。
如果你希望参考某个作品但是重新创造新作品,正确的办法是采用 clean room design。 如果我是你,我要么会在对应的文件添加版权信息,要么会完全删除这个仓库,删除侵权部分,并且从头重新 commit 一遍 |
41
fullpowers 2018-12-26 16:26:47 +08:00
https://github.com/SoyM/Esp32bot 这个会不会也侵权了
|
42
bumz 2018-12-26 16:44:36 +08:00 1
@Kirscheis #40 这个不一定吧
如果你把它的每一行代码都替换成了新的,新作品 100% 没有原作品的代码,那么它就已经不再包含「 sufficient protectable expression from a prior work 」,也就不再是 derivative work 了 case: lame, http://lame.sourceforge.net/about.php |
43
Kirscheis 2018-12-26 17:28:22 +08:00
@bumz
感谢你的讨论 我个人认为如果新的代码都和原功能彻底无关的话,确实有可能没有 sufficient protectable expression from a prior work,不过很难想象会有人从一个作品出发去衍生成另一个完全无关的东西...... 而一旦你的功能或者设计上有任何类似的地方,都无法说清楚不是 derivative work,根据以往的情况来看,即使是你个人在完全读懂原本代码的基础上从头自己实现,依然会被认为属于 derivative work,这也是 chinese wall 必要性的来源。 不过对于你举的例子 lame,我记不太清楚它的历史了,但我大概记得它在开始时并不是 dist10 的一个衍生,而是作为一个独立的 patch。虽然运行依赖于 dist10,不过从第一行代码起就是 GPL 的吧。举个类似的例子的话,就很像是当年各种 windows 下的简单窗口程序,它们的工作都依赖于 windows API,离开 windows 都无法运行甚至编译,但也不能说这些程序都是 windows 的衍生作品吧。 至于后来的 lame 的逐步实现并从 patch 变成彻底独立的软件,我认为这其中并不侵权的主要原因是由于 MP3 标准是确定的,兼容性要求导致其相似性,因此不存在创造性元素,举例来说,NEC vs. Intel, 1990 |
45
admirez 2018-12-26 17:54:49 +08:00
借鉴了人家的思路,连个感谢都舍不得写?
|
46
CHYK 2018-12-26 18:13:48 +08:00
最好声明原作者。。。这个还是蛮重要的。
之后,还有,不适合展开的就是,我可没有说印度同事的坏话啊 :p 感觉一展开就会引来异常骂战,这里没有印度的朋友吧,逃、 |
47
chinvo 2018-12-26 18:24:50 +08:00
怎么说呢,前面的部分确实是楼主不对,用了别人的模板类,如果改动不大确实应该给模板类的文件加上版权声明,如果只是借鉴思路,最好也在文件或者 readme 写明。
但是楼主一开始的表达直接说自己的项目是对方的一个衍生品,瞬间落了下风。 后面老外要求删掉 ASCII art 就无理取闹了,ASCII art 并不是他个人的专利,也不是他个人的 idea,这点不能向他妥协。 |
48
coloz OP |
49
bumz 2018-12-26 18:40:15 +08:00 3
@Kirscheis #43 lame 一开始作为 derivative work,是 GPL,当最后一行原作代码被移除后,它得以解除 derivative work,使用 LGPL 版权。类似的例子还有 BSD,系统地移除了来自 AT&T Unix 的代码后获得了属于自己的版权。
保护功能的是 patent。copyright 不保护功能和想法,只保护表达 (expression)。所以哪怕你的功能和原代码相同,只要你采用不同的方式实现,就 ok |
52
creatorz 2018-12-27 08:00:09 +08:00
@sswxysswxy 其实是我 hhhhh 实在看不下去这种 SX 了。跳出来骂两句
|
53
neoblackcap 2018-12-27 13:21:39 +08:00
@w01230 MIT 能复制,分发,只是要保留作者的原来 MIT 声明,但是假如你的东西是用了 MIT,别人的实现里面有用他的专利,那么你就悲剧了。MIT 授权协议不管专利,据我了解 GPLv2 好像也是没有。GPLv3 不知道有没有。
唯一一个详细说明专利授权的开源协议是 Apache 2.0,所以优先使用 Apache 2.0 的项目 |
54
w01230 2018-12-27 13:35:24 +08:00
@neoblackcap 多谢,原来还有这个东西,如果别人的也是 MIT,但是有别人的专利,这种授权还要交专利费?
|
55
neoblackcap 2018-12-27 14:13:24 +08:00 1
@w01230 你们都不研究授权协议,当初 React 的授权协议风波不就是这样吗?违反专利当然是需要付专利费,所以理论上你可以在 GPL 或者 BSD 的代码里面埋一个专利坑。然后等别人用了,你就挥动你的专利大棒去收专利税。
|
56
coloz OP @neoblackcap MIT 也可以这么做么?
|
57
neoblackcap 2018-12-28 03:51:25 +08:00 1
@coloz 当然可以,BSD,MIT,GPLv2 这些都是在版权问题,都是围绕著作权做文章。但是专利是独立的,是专利法管的,要是 BSD 这些有用的话,FFmpeg 就不用附带一句他们实现的东西有可能违反专利法了,https://ffmpeg.org/legal.html。
不过你要知道专利法是看国家的,比如我们国家就不保护已公开的算法思想,一旦开源,我们国家的专利法是帮不了你的。还有就是,你不能要求我们国家学加拿大。你想用中国的法去办俄罗斯的人也是不行的。你要去多个国家申请专利,这样你的法律大棒才能挥起来。所以一般这事也就跨国企业能玩。 |
58
HADB 2021-11-01 18:41:12 +08:00
是我的话,一开始直接说一下,借鉴了你的 template ,我会加上声明。不就完事儿了。对方本来要求的就是添加声明,而确实也借鉴了他的项目,哪怕一点点借鉴,我觉得也是值的加上一个声明的。就不会有后续这些事了。
|