GMTC北京站9折购票倒计时,部分日程已上线,戳此查看 了解详情
写点什么

Ruby 大“翻车”:代码库因许可证失误被下架,致 50 万个项目陷入混乱

  • 2021 年 4 月 08 日
  • 本文字数:1774 字

    阅读完需:约 6 分钟

Ruby大“翻车”:代码库因许可证失误被下架,致50 万个项目陷入混乱

本文最初发表于 The Register,经原作者 Thomas Claburn 授权,InfoQ 中文站翻译并分享。


3 月 31 日,软件库 shared-mime-info 的维护者 Bastien Nocera 通知了 Ruby 库- mimemagic 的维护者 Daniel Mendler,该库包含了 Nocera 的代码,而它使用了一种不兼容的软件许可来发布 mimemagic。


shared-mime-info 库已经在GPLv2下获得许可,而 mimemagic 被列为MIT许可项目。


“使用一个 GPL 文件作为源文件,会让你的整个代码库成为一个衍生作品,使其全部成为 GPL,因此,我认为在有人将它用于纯 MIT 代码库或闭源应用之前,先解决这个问题,非常重要。”Nocera 在一个Issues 帖子中写道。


“现在迫切需要把 GPL 头重新添加到 shared-mime-info XML 文件。这是 tarball 发行版中用于合并转换的工具的一部分,但是在同一文件的 .in 版本中可见。”


Mendler 感谢 Nocera 的通知,并立即将最新版本 0.4.0 和 0.3.6移至 GPLv2 下,同时撤销了之前发布在 RubyGems.org 上的版本,rubygems 是 Ruby 开发者所用的软件包注册表。然后他将mimemagic 的 GitHub repo存档,这意味着它不再被积极地开发了。


遗憾的是,这一举动破坏了 Ruby on Rails 这个流行的 Web 开发框架,它包含了 mimemagic 0.3.5 作为依赖项。这也影响了其他 172 个软件包,其中包含了 577148 个不同的软件库。


并不是所有这些项目都会立即受到影响,但是,如果不实现依赖性缓存,任何从 RubyGems.org 获取已撤回版本的 mimemagic 的构建过程都将失败。


包含 mimemagic 的软件项目现在必须考虑包含 GPLv2 许可代码的影响,在某些情况下这可能是不能接受的。假如这样做在法律上和实践上可行,他们可以切换到 0.3.6 或 0.4.0 版本的库。


诸如由英国政府商业、能源和工业战略部运营的Web 应用FileStack CMS 的 Ruby SDK、基于 Rails 的可标记图片应用Danbooru等项目,都在考虑如何解决这一问题,这让人想起了 2016 年的Left-Pad 事件


因为 mimemagic 主要是一个 mime 类型数据映射的数据库,所以 Rails 团队正在考虑其他选择,包括 2-clause BSD 授权的libmagic或 mime 数据的 Ruby 转换。但是,要达到这个目标,还有很多事情要做。


至于其他人,Shopify 应用制造商 ASoft 的创始人Sergey Alekseev要求 Mendler保持 mimemagic repo 的活动状态,这样其他受影响的项目就可以在这里讨论它们的选择。


但是 Mendler 并不同意,他说:“Rails 的依赖关系无疑是影响最大的。要是我们能找到一个适合 Rails 的解决方案,并得到 Rails 团队的认可,那就更好了。”


开源许可顾问 Paul Berg 在一封电子邮件中对 The Register 表示,尽管目前形势艰难,但是似乎相关开发人员已经做好了准备。


“因为依赖的 mimemagic 库的维护者发现它包含 GPL 代码,他们就转而采用了 GPL 许可。”他说,“令人钦佩的是,一旦发现问题,他们就会做出反应,而不是对此保持沉默,让问题继续存在下去。”


“然而,这确实给 Rails 带来了一个重大问题,”Berg 说。“Rails 广泛用于 MIT 许可下的应用,MIT 许可是一种允许性许可。因为很多应用程序是使用 Rails 编写的,假定这些应用程序不受 GPL 版权保护,所以很有可能其中很多应用程序不符合 GPL 条款,因为它们在部署时没有考虑到这些条款。”


“所以,将 Rails 重新许可给 GPL,使 Rails 符合要求,这对成千上万的团队来说,很可能是一个巨大的变化,实际上不是一个可行的解决方案。遗憾的是,其他解决方案很可能并不容易。”


Berg 表示,mimemagic 可以尝试替换 GPL 部分代码,并保留其 MIT 许可。他说,另一个选择是 Rails 完全取代 mimemagic,前提是存在合适的替代方案。


“不管怎样,由于 Rails 的普及,它在行业中的重要性不言而喻,解决这一问题在短期内可能不会是一件小事。”他说。“我并不羡慕他们的处境。”


“这就解释了当你引入所有的依赖性和重用代码时,为什么一定要认真地列出它们,并努力确保这些依赖性的许可与你的意图相一致。这一点非常重要。”


最新情况:4 月 1 日,mimemagic 更新到了 v0.4.1,恢复了 MIT 许可,并删除了 GPL 覆盖的代码:theFreedesktop.org 共享的 Mime Types 数据库。现在用户必须自己提供。0.3.6 和 4.0 版本已经废除,这让很多人感到很沮丧。


作者介绍:


Thomas Claburn,居住在旧金山湾区,负责 The Register 的软件开发、DevOps、计算机安全等栏目。


原文链接:


https://www.theregister.com/2021/03/25/ruby_rails_code

2021 年 4 月 08 日 14:584568
用户头像
刘燕 InfoQ记者

发布了 836 篇内容, 共 280.5 次阅读, 收获喜欢 1592 次。

关注

评论

发布
暂无评论
发现更多内容

SpringCloud 从入门到精通 09--- 支付服务集群

Felix

量化自动交易系统开发,量化炒币

薇電13242772558

数字货币 策略模式

静态代理,jdk动态代理以及Cglib区别

Java架构师迁哥

真是太刺激了!美团CTO五轮面试,Java岗高级工程师一二三四五面面经(已拿到offer)

Java架构之路

Java 程序员 架构 面试 编程语言

testing

LeetCode题解:236. 二叉树的最近公共祖先,存储父节点,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

求职阿里Java 技术岗位的经历,三轮技术面+HR面,面试也不过如此

Java架构之路

Java 程序员 架构 面试 编程语言

sync.singleflight 到底怎么用才对?

cyningsun

并发 Concurrency singleflight Cache Miss Go 语言

创业失败启示录|校园微生活(故事篇 2)

阿萌

创业 28天写作 创业失败启示录 青城 人生故事

在CSDN的六载时光,由你来决定今年的博客之星

谙忆

第九周作业

dll

Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布

阿里巴巴云原生

Java 云原生 dubbo 大前端 中间件

面向对象之魔术方法· 第1篇《__init__方法,__new__方法》

无个性不签名

测试

量化交易机器人系统开发|市值管理系统开发搭建

W13902449729

量化交易机器人系统开发 市值管理系统开发搭建

潘建伟团队再登Nature:建成全球首个集成量子通信网,全长4600公里

京东科技开发者

云计算

阿里开发7年大牛:闭关60天学懂NDK+Flutter,大厂面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

WireMock 使用

hungxy

测试 WireMock

Alluxio Day 2021 线上直播

腾讯云大数据

大数据

程序员的五年:双非学历,两年进入苏宁,五年跳槽到阿里,建议收藏!

996小迁

Java 架构 面试 JVM Spring全家桶

毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到offer!

Java架构之路

Java 程序员 架构 面试 编程语言

Java 程序经验小结:避免使用float和double表示精确数据

后台技术汇

28天写作

案例研究之聊聊 QLExpress 源码 (四)

小诚信驿站

刘晓成 小诚信驿站 28天写作 QLExpress源码 聊聊源码

安卓开发详解!Flutter全方位深入探索,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

连续三年蝉联第一,Flink 荣膺全球最活跃的 Apache 开源项目

Apache Flink

Apache flink

【设计模式】断路器模式

soolaugust

设计模式 28天写作

脱不花:怎样成为高效学习的人 学习笔记

魔曦

Lock锁 精讲

伯阳

Java 多线程 lock lock锁

《价值》- 投资分析(4)

石云升

零售 28天写作 价值 投资分析

week8-homework

J

市值管理机器人系统开发|量化策略交易系统开发搭建

W13902449729

市值管理机器人系统开发 量化策略交易系统开发搭建

SD-WAN:网络走向业务

JiangX

创业 投资 网络 28天写作 SD-WAN

Ruby大“翻车”:代码库因许可证失误被下架,致50 万个项目陷入混乱_AI_Thomas Claburn_InfoQ精选文章