“我的开源项目被大厂‘盗用’了!”

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

  • UNIX 的命名者 Brian W. Kernighan:开源是一件非常好的事情,它对软件行业的发展至关重要(现在几乎所有东西都和开源有关)。如今我们其实已经取得了很大的进步,主要的软件系统,如操作系统、编译器和工具都可以作为高质量商品免费提供;

  • Vue.js 作者尤雨溪:开源有一个好处就是只要项目技术过硬,就可以跨越文化和语言的隔阂;

  • OpenCV 创始人 Gary Bradski :如果我要走商业化的道路,应该可以赚很多钱,但我更关心开源对社会进步的推动。但另一方面,我并不认同开源完全免费,资金支持很重要。

  • ......

当提及“为什么会选择开源”时,在《新程序员001:开发者黄金十年》中,这些嘉宾如是说。兴起于软件行业的开源,以开放、共享、协同为本质,成为众多科技公司和个人开发者的利器之一,而它在逐渐渗透到各个领域的同时也为技术创新提供了重要的渠道。

不过,当个人的创新成果成为他人商业化的产品时,开源似乎就“变了味”。

近日,澳大利亚的一位开发者 Brendan Gregg 发布了一篇《An Unbelievable Demo》控诉自己在多年前开发的一款开源项目被彼时的科技巨头 Sun Microsystems 作为商业产品的部分进行销售,其中该公司还将他的代码涉及其姓名的注释部分全部做了删除处理,而世界轮回,最终这款产品销售对象之一竟然是自己,颇为讽刺。

与此同时,值得注意的是,Brendan Gregg 发现他的开源项目被“盗”用并不是近期发生的事情,而是在 16 年前,但是如今想起仍似昨日,且今天仍有不少的开源作者们有着相似的经历。基于此文,Brendan Gregg 也希望呼吁更多开发者或企业不要直接复制他人的开源代码,因为这样的举措,一方面会来带重复劳动力,一方面也会让客户使用过时的软件版本,带来一定的安全风险。

Brendan Gregg:一位实战派大神

打开 Brendan Gregg 的履历(http://www.brendangregg.com/),你会发现他正如传说中的那番,是一位“实战派大神”。他目前在 Netflix 从事大规模云计算性能方面的工作。

来自:http://www.brendangregg.com/appearance.html

Brendan Gregg 出版过《Systems Performance: Enterprise and the Cloud》、《BPF Performance Tools: Linux System and Application Observability》等图书;在 AWS re:Invent 2019、Ubuntu Masters 2019 、 NetConf、 PerconaLive 等会议上担任过演讲嘉宾;编写过 bcc/BPF 最终用户教程、Python 开发人员教程(https://github.com/iovisor/bcc/blob/master/docs/tutorial_bcc_python_developer.md)。

同时,他也是一位狂热的开源爱好者,开发并发布了基于 Linux perf_events 和 ftrace 的性能分析工具 perf-tools(https://github.com/brendangregg/perf-tools);用于性能分析的 FlameGraph(https://github.com/brendangregg/FlameGraph);用于从跟踪数据生成交互式 SVG 热图的程序 HeatMap(https://github.com/brendangregg/HeatMap)等等。

“我发现我的开源项目被‘盗用’了”

在《An Unbelievable Demo》控诉一文中,Brendan Gregg 提到了一家公司——Sun Microsystems,想必不少互联网从业者也并不陌生,作为曾经的科技巨头之一,其开发的 Java 仍然是当代主流的编程语言。2009 年,Sun Microsystems 被 Oracle 以 74 亿美元收购。而 Brendan Gregg 提及的事情则要追溯到 2005 年。

2005 年,Brendan Gregg 是 Sun Microsystems 公司的一名独立的性能顾问,他会为 Sun 公司员工做一些培训以及咨询工作,帮助他们的客户进行提升系统管理和性能。有时候,Sun 公司也会以当地专家的身份邀请他去参加 Sun 公司的客户会议以及其他 Brendan Gregg 个人可能感兴趣的活动。

在这一年中,Sun Microsystems 公司发布了一款可以检测所有软件的工具 DTrace。据维基百科显示,它最初由 Sun Microsystems 公司创建,用于实时诊断生产系统上的内核和应用程序问题。

在这款软件发布不久后,Brendan Gregg 在应用 DTrace 编写和发布高性能工具的过程中发现了一些问题:这款软件和他此前开源的 DTraceToolkit 和其他 DTrace 工具相比,有些类似,但是功能似乎稍逊一筹。

不过,由于 Brendan Gregg 并不是 Sun Microsystems 的内部员工,所以他对 Sun 公司的内部项目一无所知。

Brendan Gregg 与 Sun 公司的 DTrace 专家交谈始末

但是在一个偶然的机会下,他遇到了一位来自 Sun 公司的 DTrace 专家和开发人员,而这位专家正在世界做巡回演讲,展示 Sun 公司基于 DTrace 的新产品。

彼时,Brendan Gregg 在两位澳大利亚籍 Sun 公司员工的陪同下,和这位来自美国的  DTrace 专家见了面。在见面的过程中,其中一位澳大利亚籍 Sun 员工向对方介绍道,“Brendan 为我们教了一些课程,并且一直在做一些 DTrace 的相关工作。”

而 Brendan Gregg 本人也试图通过分享其曾编写了 DTraceToolkit 工具以此来打开双方共同的话题,但是这位 DTrace 专家似乎从来没有听过 Brendan Gregg 的名字,也从来没听过 DTraceToolkit 工具。Brendan Gregg 表示,“对他来说,我只是个随便的陌生人。”

后来,这位 DTrace 专家还是非常友好地给 Brendan Gregg 进行了  DTrace 新产品的快速演示。

在演示过程中, Brendan Gregg 发现对方的 DTrace 产品是他已经非常熟悉且更大版本的 Sun GUI 附加组件。譬如,当加载后,可以通过双击图标来运行多个 DTrace 工具之一。原始输出将呈现在单独的窗口中,或者结果将显示为折线图。在 Brendan Gregg 看来,这似乎相当平庸,因为原来的 Sun GUI 已经具有显示工具的原始输出或绘制折线图的功能。

Brendan Gregg 试图从这款工具中找到一些创新点。因此,他又继续浏览了一些新的 GUI 图标,其中他看到了一个用于跟踪套接字 I/O 的工具。其实,早在 2004 年,Brendan Gregg 自己尝试写过这个(socketsnoop.d,http://www.brendangregg.com/DTrace/socketsnoop.d)并将其作为开源项目发布,不过当时这款工具写的并不完整,用 Brendan Gregg 自己的话来讲,“这款工具没有办法访问内核源代码,因此不得不使用黑盒分析来解决所有问题;这款工具适用于大多数 TCP 流量类型,但不适用于其他类型,我在脚本注释中对此进行了警告。我还没有将它包含在 DTraceToolkit 中,因为我认为它还没有完成。”

因此,在 Brendan Gregg 看到 Sun 公司的 DTrace 这款产品中包含用于跟踪套接字 I/O 的工具时,他情不自禁地问道,“我可以看到套接字 I/O 脚本吗?”,与此同时,他点击启动了一个终端。而此时这位 DTrace 专家看起来有些惊慌失措,他认为 Brendan Gregg 不应该看他们的后台,但是他也意识到或许可以以此为卖点时,稍有停顿之后其回答道:“嗯,当然,你甚至可以在 GUI 中添加更多工具!”

于是,他给了 Brendan Gregg 一个开始查找的路径,经过一番体验以及搜索之后,Brendan Gregg 惊呆了,他发现了此前这位 DTrace 专家做演示时候的所有工具目录,然而这些目录中都有他熟悉的名字,甚至包括了一个名为 socketsnoop.d 的项目名。

此时,Brendan Gregg 意识到了某种可能性,于是他进一步输入 socketsnoop.d 时,发现屏幕上跳出来的都是他自己一年前不完整的尝试,彼时这些代码都是作为开源项目公开发布的。与此同时,Sun 公司的这个项目中也包含了一些奇怪的代码,而这些代码都是他早期的编码风格来编写的。

事情进行到这里,Brendan Gregg 几乎可以确定自己的开源项目被 Sun 公司应用到这款商业产品中。后来,他还尝试在这位 Sun 公司 DTrace 专家的电脑的所有工具中搜索 Brendan Gregg 这个的名字,但遗憾的是,Brendan Gregg 什么也没发现,这意味着 Sun 公司在用他开源代码的同时,直接把他的名字、许可等信息删除了。

Brendan Gregg 觉得讽刺的是,“现在,这位专家在澳大利亚悉尼,试图将 Brendan Gregg 的工具卖给 Brendan Gregg。”

在文章中, Brendan Gregg 表示,“我的大部分工具都有我自己的版权和 GPLv2 或 CDDL 许可证。但这些只有 Sun 的标准版权信息,而且开源许可证已被剥夺。虽然 Sun 的一些人鼓励开源贡献并建立一个社区,但其他人却在窃取同一个社区的产品。当拿走他们的作品时,更改许可和版权,然后将其出售。”

虽然后来,这位 DTrace 专家并没有说太多,或许是他不知道发生了什么事情,或许他也是从其他人那里得到了这款工具,但 Brendan Gregg 还是建议他直接从其开发的 DTraceToolkit 中获取工具的更新副本,并提醒他保留其姓名、版权和许可证。

重复地“造轮子”只能带来资源浪费

 

在文章中,Brendan Gregg 表示,“在我发布的开源工具中,我仍然无法相信 socketsnoop.d 被他们选用了。因为这款工具并不是很优秀,后来我还写了更好的套接字工具。”

或许在有些人看来,这或许并不是 Sun 公司的本意,而是个别人员的行为,但是 Brendan Gregg  认为这个和 Sun 公司的企业文化有着必不可少的关系。因为,后来 Apple 公司也曾将 Brendan Gregg 的数十种工具添加到了 OS X 中。但是对方保留了 Brendan Gregg 的姓名、版权和 CDDL 开源许可证等完整的信息,甚至也对开源项目进行了改进和增强。与此同时,多年后,无论是 Oracle 还是 BSD 社区在使用其工具的时候,都会根据开源相关的要求,保留作者完整的信息。

Brendan Gregg  在文章最后写道:

这是第一次但不是最后一次有人无意中试图向我出售我的作品。只是后来我学会了不告诉销售人员我发明了他们展示给我的东西,因为他们会觉得我像一个疯子一样,只是简单地说“我对这项技术有很多经验”和“就这样吧”。

我之所以现在提起这个案例,是因为我的 BPF 工具现在出现在可观察性产品中,并且其增长到比我的 DTrace 工具规模还要大得多。我会在以后的文章中详细介绍它,但我对开发人员的直接建议是:请不要重写我的 BPF 工具和 bcc 库;尝试按原样构建它们(bcc Python 或 bcc libbpf-tool 版本)并获取定期更新。这是因为它们正在进行中,重写它们会划分工程资源,并使您的客户使用过时的版本。

至于那个令人难以置信的演示:这不是我听到世界巡演时想象的伟大的 DTrace 产品。事实上,它是我自己的工具。我怀疑开源开发者在某个时候发现他们自己的代码已被重新命名的情况并不少见。但这种情况下的情况可能有点不寻常。一位美国开发人员因并非他编写的软件进行了世界巡回演讲,其中包括在澳大利亚无意中向作者进行了销售宣传和演示。

他甚至没有说一声“谢谢”。

网友热评

当 Brendan Gregg 发布这篇文章之后,引发很多网友的共鸣,其纷纷表示也曾有过相关的经历:

@Vincent Milum Jr:

  • 听起来你的经历比我的少一些。我最好的朋友之一,在我的一次演讲之后,我们在会议的大厅里见面了。他开始向我引用我发表的一篇文章,却没有意识到我是作者。

@cperciva:

  • 让我想起有一次 Apple 为 OS X 提供“更小尺寸的更新”。当时的我对他们实现的细节很好奇,因为我的博士论文涉及到这个话题,所以我联系了我的朋友(我有一些来自 FreeBSD / OS X 的 Apple 公司朋友),几个月后我得到的回复:“我们正在使用一个名为 bsdiff 的工具,你熟悉它吗?” 那是当然,因为我是上述工具的作者。

    (需要说明的是,本案中没有违反许可证;只是缺乏对他们使用的开源软件的出处的认识。)

@knolan:

  • 我在一个相当受人尊敬的机械工程实验室攻读博士学位。我的领域是实验流体力学。我最终在那里编写了大量 MatLab 代码,甚至在生物技术领域的实验室中与一家衍生公司合作了一段时间。

    经常性会有很多其他学生来找我寻求编码帮助,事实上,大多数人只是想让我为他们做他们的工作,而我有时候无法拒绝。其中有一次,有人想使用图像处理对微流体设备中的细胞进行计数。我和他们讨论了很久,并引导其了解了一些他们可以研究的方法,并帮助他们开始收集脚本中的所有示例等等。几个月后,我看到对方将我的简单介绍作为一篇零修改的论文发表了。不过,他至少在致谢中感谢了我。

    几年后,在大厂的科技实验室工作时,我们面试了旧实验室的一名候选人。他们向我展示了他们对热像仪图像进行了一些数据分析。我发现原来他们使用的是我曾经在那里任职时候写的脚本,却没有人对其进行过修改或改进过代码。我很生气,因为倘若没有进一步开发代码,那说明他们甚至没有阅读或理解过这段代码。

    在物理科学研究中,很多人对代码作者和开发者一无所知,就像我所说,许多人对代码感到胆怯因此会选择很多捷径去获取它,但他们不重视这份代码所需要的时间和专业知识,因为当他们一旦拥有这份代码时,他们就不会再考虑它背后的维护者亦或感谢作者。

开源本是创新的源泉,如果只是一味地汲取而没有任何的奉献,那么开源势将不会长久。与此同时,作为开源开发者,在带来开源软件的同时也要注重版权保护,防止自己的劳动成果被他人窃取。而对于开源软件如果避免被侵权,你有什么好的想法?欢迎下方留言分享。

参考:

http://www.brendangregg.com/blog/2021-06-04/an-unbelievable-demo.html

http://www.brendangregg.com/

https://news.ycombinator.com/item?id=27390512、

https://twitter.com/brendangregg/status/1400661237420023818

生于2001年的《程序员》曾陪伴了无数开发者成长,影响了一代又一代的中国技术人。时隔20年,《新程序员》带着全球技术大师深邃思考、优秀开发者技术创造等深度内容回来了!同时将全方位为所有开发者呈现国内外核心技术生态体系全景图。扫描下方小程序码即可立即订阅!

加入新程序员读者俱乐部:

移动端的同学也可以扫码下方二维码加入
 

 

相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页