华为云 ServiceComb 抄袭 Go Micro 代码,已致歉

2017年6月19日在(LC3)开源峰会上,华为宣布开源了微服务框架 ServiceComb,华为称它是 FusionCloud 解决方案中 PaaS 平台的重要组成部分,内置了高可靠性运行、动态治理等运维阶段的高级能力。 并在2017年12月4日获得全票通过,进入Apache孵化器。 但在13天前,Asim Aslam...

2017年6月19日在(LC3)开源峰会上,华为宣布开源了微服务框架 ServiceComb,华为称它是 FusionCloud 解决方案中 PaaS 平台的重要组成部分,内置了高可靠性运行、动态治理等运维阶段的高级能力。

并在2017年12月4日获得全票通过,进入Apache孵化器。

但在13天前,Asim Aslam在GitHub上开的一个问题单(issue)引起了轩然大波,他觉得有人将他开发的go-micro代码拿来改头换面后,做成了一个新的微服务框架。

今日在微博上也引起了关注:

相关人员在Github上作了回复。现将他们在Github上的互动内容编译如下:

这不是灵感来自go-micro的项目。它简直照搬照抄了代码。我实际编写的代码随处可见。也许有人该出面谈谈如何可以利用go-micro,而不是只是获取代码。

Asim你好,我同意利用go-micro,而不是只是获取代码的观点。但我们在谈论灵感来源时,我指的是micro接口设计和插件思路,它们很赞,很感谢那些部分,我们已经改变了选择器(selector)等组件的许多实现,或者说改变了接口。所以我们有2个文件夹,“vendor”用来放我们从未改变的那些库,而“third_party”用来放我们作了一些改变的库,我们会将所有go-micro代码放在那里,之后你可以再次检查我们的代码,看看我们是否正确处理了你的代码。

致以诚挚的问候!

  • https://github.com/ServiceComb/go-chassis/tree/master/core/client/client.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/server/server.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/transport/transport.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/default.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/selector.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/filter.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/loadbalance/strategy.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/loadbalance/options.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/client/client.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/server/server.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/transport/transport.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/default.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/selector.go

  • https://github.com/ServiceComb/go-chassis/tree/master/core/loadbalance/filter.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/loadbalance/strategy.go

  • https://github.com/ServiceComb/go-chassis/blob/master/core/loadbalance/options.go

以上是来自micro的所有文件,我会将它们移到third_party文件夹。

Asim你好,我已更改了代码,请再检查一下,我这样可以吗?多谢!我为没有将那些文件移到third_party文件夹表示真诚的歉意,是我的错。

另外还有好多地方你只是照搬了代码,没有参考许可证。你的确认识到所有micro项目都采用apache2许可证,这意味着你必须注明代码从哪里获取并致以谢意,哪怕在修改之后。

TCP transport

你的:https://github.com/ServiceComb/go-chassis/blob/master/transport/tcp/tcp.go

micro的:https://github.com/micro/go-plugins/blob/master/transport/tcp/tcp.go

还有,这是华为官方项目还是不相干的独立项目?我觉得一家公司不该有这样的行为。

这是我头一回搞Go开源项目。我承认我犯了些错误。你可否给出一些建议,以便更妥当地利用go-micro?目前我们有一个不同的注册中心模型(registry model),我们可能很难直接利用go-micro代码,也许我们以后可以探讨相关的一些细节。

谢谢指出这一点,go-micro是一种出色的框架,我受益匪浅。我确实很感谢你所做的工作。

你可以告知你的电子邮箱吗?那样我们可以通过邮件进一步探讨,非常感谢!

我觉得不需要在除GitHub这个公共论坛之外的其他任何论坛探讨这个话题,大家在这里都看得见。

请问这是华为官方项目吗?

go-micro的许可证和版权已包含在go chassis的初始提交版中,见此[1]

现在,go-micro的版本已添加到ROOT目录中的通告文件中。

[1]https://github.com/ServiceComb/go-chassis/blob/master/third_party/forked/go-micro/LICENSE

谢谢你这么做。不过你还是没有回答我的问题:这是华为的官方项目吗?

将许可证包含在third_party中并不能成为拷贝其他地方的代码,转而用作自己接口的理由。针对代码作了修改的地方,你必须向创作者致以谢意。我看到这个做法后来已改正。

请回答我的问题:这是华为的官方项目吗?

Asim你好,

感谢帮助我们纠正许可证问题,以尊重原始创作者的版权。go-chassis目前是放在Github上的一个一般性开源项目,但我们确实计划将它合并到Apache ServiceComb(孵化中),后者是华为捐献的项目。这对你来说是个问题吗?我不是很清楚你说的华为官方项目是指什么意思。你可以就此明确一下吗?

我觉得go-micro的可插入式设计确实很出色。go-chassi使用go-micro的客户机、服务器、选择器、编解码器和transport等模块以获得可插入性,但是go-chassis拥有另外一些高级的服务治理功能,比如容错、断路器、负载均衡、监控和热重新配置。

不管怎样,如果我们可以利用go-micro,同时又回过头来将一些变更贡献给上游,那就太棒了,我非常乐于参与任何这种讨论。

Asim随后逐句作了针对性的答复(内容已经过编辑):

我不是很清楚你说的华为官方项目是指什么意思。

我是问,你在华为搞这个项目吗?这项工作得到华为的资助吗?这是在公司上班时间搞的吗?这就是官方项目的真正含义。

go-chassis拥有另外一些高级的服务治理功能,比如容错、断路器、负载均衡、监控和热重新配置。

这些是micro以不同方式来处理的问题。我们有一个名为wrappers的中间件接口,可以添加额外功能:https://github.com/micro/go-plugins/tree/master/wrapper。还在go-os方面付出了努力,但需要开发者团队才能推进工作:https://github.com/micro/go-os。

不管怎样,如果我们可以利用go-micro,同时又可以回过头来将一些变更贡献给上游,那就太棒了,我非常乐于参与任何这种讨论。

贡献代码谁都欢迎。插件在go-plugins中加以维护:https://github.com/micro/go-plugins。如果正如你所说你在构建更高级的功能,看起来这功能像是生态系统的一部分:https://micro.mu/explore/。

如果这是华为官方项目,我们很有兴趣与华为合作,就像我们与Sixt合作那样。

谢谢建议。作为开源开发者,几个项目作为一个社区协同运作是常见的做法。但是建立起商业合作关系可能需要一点时间,也许我们以后可以在另一个帖子中谈论此事。

一位旁观者称:

我觉得这是个官方项目。像华为和小米等许多中国大公司(不好意思我也来自中国)并不很重视“开源”。它们从开源项目窃取源代码的做法很常见。无论怎样,华为在这个项目上还算做得比较好,至少它让你知道这一点。

相关阅读:

中高端IT圈人群,欢迎加入!

GitHub 上 82% 的代码是重复代码 !(附研究报告)

文章导航