前几天无意在gitee
上看到一个开源项目,也是一个IM项目,还被码云推荐,star正在不断的上涨.所以我也准备进去一探究竟,想着又是哪位IM爱好者的开源项目,大家一起交流一下,可以进去一看,大吃一惊.FIM
- 登录界面
- 主界面
这个客户端项目是基于Electron vue开发的项目,其实这个项目的UI的原作者在这里wechat vue客户端.他应该是购买了源码,这引起了我的注意.
然后我慢慢的翻看作者的源码,尽然有写代码是直接从飞享服务端项目中,直接拷贝过去的,这让我很吃惊.项目中代码我看着都很熟悉.有些简直是一模一样.这难道是我的项目的拷贝.我慢慢的看了下作业的架构图
初看跟我的设计不同,但仔细看,跟飞享有异曲同工之妙,FIM-websocket
用于接收客户端链接,这就是push-connector
的作用,这里充当链接网关的作用,不同是飞享支持TCP
和websocket
两种链接.FIM-server
其实就是push-group
的功能,包括用户登录
,用户状态
,IM核心业务逻辑
,消息存储
. 两个服务之间也是通过Dubbo实现RPC调用.push-connector
集群是我对tio集群加入了kafka
支持,这位作者原样把我的项目的tio-core
模块拷贝过去.这位作者的改进就是加了前面的网关. 其实看来整个核心的设计大体都是一致的.
这时我四处探究,我在我建立的IM即时交流通讯群里面询问有谁看过这个项目.因为这个项目太像飞享的设计了.没有办法我只能在gitee上联系这个作者.我在这位作者的gitee首页找到了他的信息.看到下面的qq,我无意间发现,我群里面有这个人.我仔细找到这个人,最让我吃惊的时,这位作者尽然是飞享项目开始时最早一批加入到QQ群的部分学习者,当时看他比较热心,就把他设置为群组管理员.并且我还经常给他解答一些的IM的各种问题.这就更让疑惑了,为什么一个我这么信任的人,我也在这期间无条件的解答他的问题.基本是有问必答.我几乎毫无保留的与他分享我在IM的开发实践中的一些经验与教训.
想到这我不难理解,为什么这个项目有很多飞享的影子.甚至整个设计很大一部分是借鉴过去的.我试着与他取得联系.问它为什么没有征得我的同意,借鉴项目并将项目开源,并且在他的项目中只字未提飞享
这个项目.
- 以下是与他对话的部分截图
其实最终我们纠结的地方不在于它是否用于我的设计与代码,而是他这种行为严重违背开源协议,借鉴别人的代码和设计也不说明出处,并且最让我感到恼火的是,他尽然利用这些设计加上他修改的客户端二次开发售卖第三方,这严重违背我当时设置开源协议知识授权非商业性许可
,里面已经说明未经授权不得进行任何二次售卖.
也许这时谈话并不能改变什么,但是我想说的时,当你引用一个开源项目时一定要遵循项目的开源协议.引用别人的代码和设计要注明出处,这是对别人劳动成果的尊重!
NOTE: 这个项目在gitee star 还不错,我不知道有多少是冲着那个UI去的,这个项目基本还没有开始,连半成品都算不上,作者急于开源,从跟他的聊天中可以看出,也想利用一个项目出名,想出名没有什么错,但前提要尊重原始作者,不能拿到一个东西,采用其核心设计,类名,变量名重新修改,就可以认为是自己原创,恐怕最终会遭人诟病!
最后这位作者早期与我交流比较多,有些时候我没有想到的是坑我的人,是我当初最值得信任的人!