转自:https://www.nexusmc.cn/forum/post/luminolmc-canvasmc-gpl-3-0,此内容遵循GPL-3.0协议
近日,Minecraft 服务端核心项目 LuminolMC 宣布停止维护旗下三款服务端核心。Luminol、LightingLuminol 与 Lophine 的 GitHub 仓库均已于 2026 年 7 月 9 日由维护者归档,目前处于只读状态,不再接受新的代码提交和问题反馈。
其中,Luminol 是一款面向生存及无政府服务器的 Folia 下游分支,主要提供性能优化、Folia 问题修复、可配置的原版机制以及扩展 API;LightingLuminol 在其基础上进一步加强 Bukkit 插件兼容能力;Lophine 则主要面向 Folia 环境中的生电玩法与相关功能扩展。
LuminolMC 团队指控,CanvasMC 在部分功能中使用了来源于 Luminol 的实现,却没有完整保留原作者、代码来源及相应的许可信息,并将相关代码标记为 Canvas 自有实现。LuminolMC 方面认为,这种做法涉嫌违反 Luminol 所采用的 GNU GPL-3.0 开源许可证。
Luminol 的许可证文件显示,项目从 Folia、Paper、Spigot 等上游项目继承 GPL-3.0;除许可证文件中特别列明采用 MIT 许可证的贡献者外,其余作者提交的修改默认按照 GPL 许可证发布。CanvasMC 当前公开仓库同样声明采用 GPL-3.0。因此,这次争议的重点并非代码是否公开,而是被引用或派生的代码是否正确保留了来源、作者信息以及相应的许可证声明。
目前公开的主要争议案例包括:
LuminolMC 方面则通过提交历史和代码截图指出,Canvas 最终代码中的异常处理、异步传送及跨区域移动处理结构与 Luminol 方案存在较高相似度,但最终补丁使用了 Canvas 自身的代码标记,未在实际代码中保留 Luminol 来源说明。相关材料目前仍属于 LuminolMC 一方提供的对比证据,是否构成许可证违规仍有待 GitHub 或其他法律程序判断。
CanvasMC 的该拉取请求于 2026 年 6 月合并,主要涉及将世界卸载流程转移至独立线程、处理传送过程中世界被卸载的竞态条件,以及避免区域调度线程受到长时间阻塞。LuminolMC 方面认为,其中部分设计和实现来源于 Luminol,但未获得适当署名。
当前 Canvas 补丁将相关实现标记为“Canvas async protocol switch”,代码包含异步等待 Netty ChannelFuture、暂停自动读取以及异步设置出站协议等逻辑;LuminolMC 方面认为,其中部分实现与其此前公开的异步协议切换补丁存在直接派生关系。
此后,开发者多次通过工单补充代码文件、提交记录、许可证信息和代码对比材料,并在超过两周仍未得到处置后发送了紧急升级邮件。
截图还显示,GitHub Support 随后建立了编号为 #4506476 的确认工单,表示已收到消息,但由于支持请求数量较多,处理时间可能长于正常情况。开发者称,GitHub 曾告知投诉正在审查,但截至其最近一次跟进,仍未给出删除、驳回或要求对方整改等实质性处理结果。
因此,更准确的说法是:GitHub 已确认收到投诉并表示正在审查,但在近一个月的时间里尚未作出最终处置。
截至发稿,CanvasMC 的公开仓库仍可正常访问,并继续以 GPL-3.0 许可证发布。GitHub 尚未公开发布针对该起 DMCA 争议的最终处理结论。
LuminolMC 的停止维护也再次引发 Minecraft 服务端开发社区对于开源代码使用边界的讨论。开源许可证允许其他开发者学习、修改和分发代码,但“开放使用”并不意味着可以删除原作者信息、隐去代码来源或绕过许可证规定。对于高度依赖上游补丁和社区协作的 Minecraft 服务端生态而言,明确保留代码来源和贡献者署名,是项目之间能够持续合作的基本前提。
近日,Minecraft 服务端核心项目 LuminolMC 宣布停止维护旗下三款服务端核心。Luminol、LightingLuminol 与 Lophine 的 GitHub 仓库均已于 2026 年 7 月 9 日由维护者归档,目前处于只读状态,不再接受新的代码提交和问题反馈。
其中,Luminol 是一款面向生存及无政府服务器的 Folia 下游分支,主要提供性能优化、Folia 问题修复、可配置的原版机制以及扩展 API;LightingLuminol 在其基础上进一步加强 Bukkit 插件兼容能力;Lophine 则主要面向 Folia 环境中的生电玩法与相关功能扩展。
停更原因指向 CanvasMC 代码争议
根据 Luminol 核心开发者 EarthMe 发布的公告,此次停止维护并非常规的项目调整,而是与 LuminolMC 团队和 CanvasMC 之间持续已久的代码版权及开源许可证争议有关。LuminolMC 团队指控,CanvasMC 在部分功能中使用了来源于 Luminol 的实现,却没有完整保留原作者、代码来源及相应的许可信息,并将相关代码标记为 Canvas 自有实现。LuminolMC 方面认为,这种做法涉嫌违反 Luminol 所采用的 GNU GPL-3.0 开源许可证。
Luminol 的许可证文件显示,项目从 Folia、Paper、Spigot 等上游项目继承 GPL-3.0;除许可证文件中特别列明采用 MIT 许可证的贡献者外,其余作者提交的修改默认按照 GPL 许可证发布。CanvasMC 当前公开仓库同样声明采用 GPL-3.0。因此,这次争议的重点并非代码是否公开,而是被引用或派生的代码是否正确保留了来源、作者信息以及相应的许可证声明。
LuminolMC 建立专门仓库公开争议材料
为集中整理相关材料,LuminolMC 建立了名为 AboutCanvas(Github链接) 的公开仓库,其中列出了多个被其认为存在代码来源和署名问题的案例,并提供 CanvasMC 拉取请求、历史版本、网页存档、Luminol 原始提交及代码截图作为对比。目前公开的主要争议案例包括:
跨区域高速移动修复
CanvasMC 的第 164 号拉取请求处理了实体在单个游戏刻跨越较大距离时可能产生的跨区域线程问题。该拉取请求的讨论中曾明确提到 Luminol 已有类似修复,并链接了对应的 Luminol 实现。随后,CanvasMC 对实现进行了多次调整并合并。LuminolMC 方面则通过提交历史和代码截图指出,Canvas 最终代码中的异常处理、异步传送及跨区域移动处理结构与 Luminol 方案存在较高相似度,但最终补丁使用了 Canvas 自身的代码标记,未在实际代码中保留 Luminol 来源说明。相关材料目前仍属于 LuminolMC 一方提供的对比证据,是否构成许可证违规仍有待 GitHub 或其他法律程序判断。
世界卸载与加载 API
AboutCanvas 仓库还将 CanvasMC 的“World Unload API”改进列为争议案例,并将 Canvas 第 249 号拉取请求与 Luminol 的相关提交进行对照。CanvasMC 的该拉取请求于 2026 年 6 月合并,主要涉及将世界卸载流程转移至独立线程、处理传送过程中世界被卸载的竞态条件,以及避免区域调度线程受到长时间阻塞。LuminolMC 方面认为,其中部分设计和实现来源于 Luminol,但未获得适当署名。
异步协议切换
第三类争议涉及网络连接中的异步协议切换功能。AboutCanvas 仓库同时列出了 Canvas 的新旧版本、Leaf 的相关实现以及 Luminol 的历史提交,供社区对比代码演变过程。当前 Canvas 补丁将相关实现标记为“Canvas async protocol switch”,代码包含异步等待 Netty ChannelFuture、暂停自动读取以及异步设置出站协议等逻辑;LuminolMC 方面认为,其中部分实现与其此前公开的异步协议切换补丁存在直接派生关系。
DMCA 投诉提交一个月后仍无实质性结果
开发者向 NexusMC 提供的 GitHub Support 工单截图显示,LuminolMC 方面最早于 2026 年 6 月 8 日 提交了编号为 #4458573 的 DMCA 删除请求,要求 GitHub 对 CanvasMC 仓库中被指侵权的内容进行处理。此后,开发者多次通过工单补充代码文件、提交记录、许可证信息和代码对比材料,并在超过两周仍未得到处置后发送了紧急升级邮件。
截图还显示,GitHub Support 随后建立了编号为 #4506476 的确认工单,表示已收到消息,但由于支持请求数量较多,处理时间可能长于正常情况。开发者称,GitHub 曾告知投诉正在审查,但截至其最近一次跟进,仍未给出删除、驳回或要求对方整改等实质性处理结果。
因此,更准确的说法是:GitHub 已确认收到投诉并表示正在审查,但在近一个月的时间里尚未作出最终处置。
三款核心进入历史维护状态
随着三个仓库被归档,Luminol、LightingLuminol 和 Lophine 已正式进入停止维护状态,LuminolMC的Discord也已关闭。现有源代码及历史版本仍然可以访问和自行构建,但原维护团队将不再继续提供版本更新、安全修复及技术支持。截至发稿,CanvasMC 的公开仓库仍可正常访问,并继续以 GPL-3.0 许可证发布。GitHub 尚未公开发布针对该起 DMCA 争议的最终处理结论。
LuminolMC 的停止维护也再次引发 Minecraft 服务端开发社区对于开源代码使用边界的讨论。开源许可证允许其他开发者学习、修改和分发代码,但“开放使用”并不意味着可以删除原作者信息、隐去代码来源或绕过许可证规定。对于高度依赖上游补丁和社区协作的 Minecraft 服务端生态而言,明确保留代码来源和贡献者署名,是项目之间能够持续合作的基本前提。
编者注:本文根据 LuminolMC 公开仓库、代码提交记录、AboutCanvas 材料及开发者提供的 GitHub Support 工单截图整理。文中“抄袭”“侵权”和“违反许可证”等内容均为 LuminolMC 一方的指控,截至目前尚无 GitHub 最终裁定或司法判决确认。
- 内容版权许可
- CC BY-SA 署名-相同方式共享