分享一次被老外指责违反 MIT 协议的故事

2018-12-26 14:12:58 +08:00
 coloz

我的项目:
https://github.com/blinker-iot/blinker-library/

经过如下:
https://github.com/blinker-iot/blinker-library/issues/287

简单说下经过,

  1. 我们开发了一个名为 blinker 的物联网解决方案,现有的功能类似米家、阿里智能、home assistant。
  2. 我们并没有使用这个哥们儿的项目代码。
  3. 我们确实借鉴了其使用 C++模板类的方式,去构建了通信类,这在 issues 中一开始也说了。
  4. 但我们并不认为这个做法违法了 MIT 协议,项目更不是该项目的衍生版本,哥们一开始就说我们盗窃知识产权,这让我很不爽。

我的处理方式,
由于我和同事脾气都不太好,加上这哥们儿居然连 logo 和配置文件也觉得是一样,开始的时候回答简单粗暴了点。
结果,这哥们儿貌似开始在 FB 上声讨我,因为不是英语国家的人,说的可能是俄语啥的,翻译出来也看不太懂。
最后,我们换了一种写法,并添加了感谢信息,自认为算是结束了这个讨论。

总结下经验

  1. 虽然我自以为已经很注意相关协议,在文档和 readme 中都注明了使用到的项目,但还是没料到这种事,国人在国际上名声不太好,老外一开始就会主观的认为你不守规矩,所以大家做开源软件,真是要一开始就把 readme 写得滴水不漏,避免老外指责。

  2. 除了要写 readme,还要及时更新,很多人和我们一样把 github 当仓库用,但缺忽略了 github 也是个公告板,如果用了漏写了什么,可能会遭人诟病。

  3. 之前经常鼓励别人多看开源项目,学习别人好的写法,但现在我认为,如果觉得别人写法好,也不要学习,反而应该竟可能规避。

  4. 学好英语,避免和老外交流出现错误的表达,如果英语不好,直接用中文回复,让老外自己翻译,用了错误的表达,会刺激到老外。

  5. 遵纪守规,尽力维护中国程序猿形象

16057 次点击
所在节点    程序员
58 条回复
Lax
2018-12-26 14:28:36 +08:00
果然英语要表达恰当,不然容易留下弱点给对方攻击。对方针对那段 ascii art 显示的问题太过无理了
PerFectTime
2018-12-26 14:36:08 +08:00
emm 有毒......
sswxysswxy
2018-12-26 14:36:08 +08:00
“ Are u silly B ???” 你们同事确实可爱 😂😂😂但愿这个不是你🤔🤔🤔
jmc891205
2018-12-26 14:43:40 +08:00
一上来就说 "I had forked blynk codes before, and I use the template class(c++) same as blynk to build blinker."
有理也变成没理了
coloz
2018-12-26 14:53:12 +08:00
@sswxysswxy 不是我,也不是我同事,写了 Member 的才是我们,可能是某个用户,因为老外已经看到了,所以没删,怕删了,老外又有得说了
fl2d
2018-12-26 14:53:32 +08:00
自己没做错的话,千万别道歉。该怼就怼,别因为对方是老外就怂了。

当然前提是,自己没做错。
coloz
2018-12-26 14:56:09 +08:00
@jmc891205 英语不好,说的太急,后面我也做了解释,仅仅是用了同样 template 方式去实现一个模板,相同的代码,可能有 10 行不到吧
jeffcott
2018-12-26 15:01:39 +08:00
与主题无关,用中文还是用英语,这个问题我感觉挺现实的;

我和你的看法一致,“如果英语不好,直接用中文回复,让老外自己翻译,用了错误的表达,会刺激到老外。”;

但是,另一种更普遍的看法“ github 上用英语是基本礼貌”;

这两种看法,楼主怎么看
xeaglex
2018-12-26 15:03:04 +08:00
按照通行的做法,如果思路上你参考了它的实现,哪怕语法上和命名上不同,你这的确都算他的衍生品。不过 MIT 协议仅仅要求你们在相应位置添加人家的版权信息而已,这又有何不可呢?
Rh1
2018-12-26 15:04:36 +08:00
国外就没有杠精和喷子?国外程序员里就没有 V2 里某些奇葩?
fullpowers
2018-12-26 15:07:41 +08:00
借鉴别人的写法,自己造出一个的话会不会违法开源协议?
(我也经常借鉴其他优秀开源项目的写法)
gclove
2018-12-26 15:08:22 +08:00
我觉得肯定借鉴了一些 ... 关键 MIT 不是自由宽松的许可证吗 ? 几乎没有什么限制
KasuganoSoras
2018-12-26 15:09:00 +08:00
他要你删字符画那个是真的逗比,明明就是一条命令 figlet 就行了
歪果仁也不是全都素质这么高,素质 dio 差的我也遇到不少了
coloz
2018-12-26 15:09:34 +08:00
@jeffcott 由于我英语不好,因此我认为我使用中文更礼貌。。。
nooper
2018-12-26 15:09:38 +08:00
什么是 mit,什么是 copy,什么是抄袭,一定要认认真真搞清楚。
xmge
2018-12-26 15:14:44 +08:00
如果觉得别人写法好,也不要学习,反而应该竟可能规避。 如果没理解错的话,自我感觉作者有点玻璃心了,因为一个老外就不学习,是不是把他看得太重了。想学习就学习,他爱咋咋滴。
coloz
2018-12-26 15:15:38 +08:00
@xeaglex MIT 并没有相关说明,如果我们是在他项目基础上修改的,我认为可以算是衍生品。
事实上我们的代码,借鉴了很多前人的项目,只是“这个项目是以下几个项目的衍生品”,这种说法貌似没有看到过。
由于我们并不认为是衍生品,所以并没有添加权利信息,只是添加了感谢信息
tabris17
2018-12-26 15:17:51 +08:00
你可以用中文写,然后告诉对方,我写了,你 tm 自己看不懂中文怪谁
coloz
2018-12-26 15:24:18 +08:00
@gclove
确实是借鉴了,但我们认为使用 C++template 语法,和泛型编程实现,是一个常见的用法,所以并没有在意。
其中相同的几行的代码,是状态描述和对应函数:连接、未连接、连接中,我也认为是网络连接的正常写法。
并没有考虑到这可能违反 MIT 协议,事实上 MIT 协议也对这种情况没有说明。

现在已经没有用这个语法了,换个了方式写,并添加了对其的感谢
bumz
2018-12-26 15:26:03 +08:00
私以为那个老外的要求你们一个都不用满足

因为你们的项目不是他的项目的 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.

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

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

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

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

© 2021 V2EX