Madeira 的 GPL-3.0 附加许可机制:Madeira Converter Exception 与 Apple Metal Shader Converter 的合规组合方案
游戏开发图形学【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址https://gitcode.com/GitHub_Trending/mad/Madeira点击查看免费下载导读Madeira 的目标是在被沙盒限制的 iOS 环境中运行 x86-64 Windows 游戏技术栈为 FEX-Emu Wine DXMT其中 DXIL 着色器需要经 Apple 专有的 Metal Shader Converter 动态库libmetalirconverter.dylib转换为 Metal 库。由于 Madeira 主体代码以 GPL-3.0-or-later 授权与 Apple 专有库静态/动态组合存在许可证兼容问题。本文围绕仓库根目录的 LICENSE-EXCEPTION.md 展开讲解Madeira Converter Exception, version 1这份附加许可GPL-3.0 第 7 节机制的生效流程、适用范围边界、配套的 Wine LGPL 分支方案与分发义务帮助读者理解开源项目如何合规地与专有 Apple 组件共存的完整工程实践。一、背景GPL-3.0 代码为何需要一份附加许可Madeira 的授权路径是 GPL-3.0-or-later见 COPYING 与根目录 LICENSE。项目中存在两类许可来源迥异的组件Madeira 作者自有代码主应用Swift/ObjC 与工具链、原生 Direct3D 12 运行时madeira_d3d12.dll、FEX 与 DXMT fork 中的 Madeira 修改代码均为 GPL-3.0-or-laterApple 专有代码Metal Shader Converter 动态库Apple 协议仅允许以着色器转换为目的分发、Apple 系统框架Metal、Foundation、UIKit 等。GPL-3.0 对组合作品combined work的分发有严格的许可证传染要求而 Apple 组件的专有授权与该要求无法兼容。GPL-3.0 第 7 节Additional Terms允许版权持有人为自己的代码附加额外许可从而有条件地豁免特定组合场景下的传染义务——这正是 Madeira Converter Exception 的法律基础。二、Madeira Converter Exception, version 1许可条款全文解读LICENSE-EXCEPTION.md 中定义的Madeira Converter Exception, version 12026-09-16 起草自采纳日起生效核心条款如下如果你修改本程序或任何覆盖作品通过链接或组合的方式将其与 Apple Metal Shader Converter 动态库libmetalirconverter.dylib任意版本、或与 Apple 的 Metal、Foundation、CoreGraphics、QuartzCore、UIKit、AppKit 及相关系统框架或其修改版本结合本程序的许可方授予你额外许可以传播由此产生的作品。关键限制必须注意对应源代码义务保留对以非源码形式传播的组合作品对应源代码必须包含组合中使用的本程序部分的源码但不需要包含 Apple 库的源码不改变 Apple 库的授权该许可不延伸到 Apple 库本身它们仍受 Apple 自身许可条款约束可移除性根据 GPL-3.0 第 7 节传播副本时你可以自行移除这一附加许可。也就是说这份异常只豁免Madeira 自有代码与 Apple 库组合这一场景并未改变任何一方的底层授权。三、生效机制Adoption Line 与 pre-push 钩子这份文件是一份准备中的法律文书其生效有严格的时间线设计起草日期2026-09-16采纳日期2026-09-24由版权持有人 Will Faust 完成采纳Adopted on: 2026-09-24 / By: Will Faust生效边界文档明确分发自首次推送到公共远程开始而不是从发布 tag 开始因此采纳行必须在任何公共推送之前完成工程保障仓库的.githooks/pre-push钩子在文件仍为草稿状态时会拒绝远程推送需执行git config core.hooksPath .githooks启用该钩子见 LICENSE-EXCEPTION.md。这一点与 docs/LICENSING.md 互相印证GPL-3.0 代码与专有转换器的组合仅在版权持有人授予附加许可时被允许而该许可在第一次公共推送之前2026-09-24即已采纳。forks 与运行时中的每一份该文本副本都遵循此采纳——这意味着附加许可随代码副本传播不因 fork 而失效。四、适用范围Scope and Authority覆盖什么、不覆盖什么附加许可只能由其所覆盖代码的版权持有人附加。因此 LICENSE-EXCEPTION.md 用两节明确定义了边界。4.1 覆盖范围由 Madeira 作者持有版权组件说明本仓库中的 Madeira 应用与工具链所有提交均由 Madeira 作者完成贡献按 CONTRIBUTING.md 接受自采纳日起贡献即包含本许可原生 Direct3D 12 运行时research/madeira-d3d12作者相同其自带 LICENSE 承载相同文本FEX 与 DXMT fork 中 Madeira 作者的修改、FEX/External 下 rpmalloc fork 中 Will Faust 的提交各 fork 的LICENSE-MADEIRA.md完整复现本许可在最后一项中上游 FEX 与 DXMT 代码为 MIT上游 rpmalloc 为 0BSDRyan Houdek 的 rpmalloc 提交保持 0BSD——这些组件本就不需要异常。这一点在 THIRD-PARTY-NOTICES.md 的组件表格中亦有完整记录Wine LGPL-2.1-or-later、FEX/DXMT MIT、rpmalloc 0BSD、GMP/Nettle/Hogweed LGPL、GnuTLS LGPL-2.1-or-later 等。4.2 明确不覆盖Nothing here changes上游 Wine 代码Wine fork 曾在 LGPL-2.1 第 3 节下整体转换为 GPL-3.0-or-later该转换对该副本不可逆使 Wine 作者的代码在该树中仅以 GPL 授权除他们本人外任何人无法为其附加异常。因此项目准备了一条LGPL 分支路径基于上游 wine-11.4 基线重新构建将 Madeira 作者的补丁以 LGPL-2.1-or-later 重新应用完整溯源记录见 docs/wine-lgpl-provenance.mdApple 库本身转换器库被跟踪在本仓库中其共存是否构成与 GPL 代码的组合作品属法律审查问题本文件不予定论且仅依据 Apple 协议分发——见 app/Madeira/d3d12/METAL-SHADER-CONVERTER-AGREEMENT.txt 第 2.B 节分发仅为着色器转换之目的。五、源码级佐证异常在仓库中的落点附加许可并非孤立的顶层文档它在整个仓库中形成了一套自洽的证据链原生 D3D12 运行时research/madeira-d3d12/LICENSE 完整声明Madeira Converter Exception, version 1依据 GPL-3.0 第 7 节与 Apple Metal Shader Converter 动态库及 Apple 系统框架组合的附加许可并注明其编译所依赖的转换器头文件为 Apache-2.0见 app/Madeira/d3d12/LICENSE-metal-shader-converter-headers.txt运行时 NOTICEapp/Madeira/d3d12/NOTICE.txt 记录了libmetalirconverter.dylibMetal Shader Converter 4.0 beta 2SHA-256073f903b...的获取与校验方式build/madeira-d3d12/fetch-converter.sh并明确转换器不受 Madeira 的 GPL 或 Madeira Converter Exception 覆盖接收方按 Apple 协议取得它仓库中的canary_*.dxil测试着色器则按GPL-3.0-or-later 附加许可授权贡献者协议CONTRIBUTING.md 明确所有贡献按GPL-3.0-or-later附 Madeira Converter Exception, version 1接受并采用 Developer Certificate of Origingit commit -s签署同时提醒 FEX-Emu 的贡献政策禁止 AI 生成代码Wine fork 溯源docs/wine-lgpl-provenance.md 记录了madeira-lgpl分支的构造方式上游 tagwine-11.4 51 个 Madeira 提交-x按序 cherry-pick跳过转换提交 1 个添加 LGPLLICENSE-MADEIRA.md与CONTRIBUTING.md的提交与已退役的 GPL 分支 diff 仅差 22629 行许可声明行、无任何代码改动随包分发的许可证集合构建产物app/Madeira/licenses/与app/Madeira/legal/目录随包携带 GPL-3.0、异常文本、LGPL-2.1、LGPL-3.0、MIT、0BSD、LLVM 文本及 THIRD-PARTY-NOTICES见 app/Madeira/licenses/THIRD-PARTY-NOTICES.txtbuild/stage-licenses.sh负责刷新两份生成副本Xcode 构建在副本过期时会失败。六、由此产生的分发义务Obligations依据 docs/LICENSING.md 与随包 NOTICES附加许可之外仍需履行的义务包括GPL 与专有库组合仅在版权持有人授予附加许可时被允许已满足且不可扩展至 GPL 转换后的上游 Wine 代码——这是 LGPL 分支存在的根本原因LGPL 静态链接义务WineLGPL 分支、gnutls、nettle、hogweed、gmp 被静态链接进主程序。LGPL-2.1 第 6 节 / LGPL-3 第 4 节要求显著声明使用了 LGPL 库并受其覆盖、提供 LGPL 文本副本、提供库的完整对应源代码及用修改后的库重新链接应用的手段。LGPL-3 第 4(e) 节的 Installation Information 义务仅在满足 GPL-3 第 6 节条件即组合作品在用户产品中分发且可安装时触发sideload 的 iOS 应用是否满足该条件属法律审查问题LGPL-2.1 第 6 节的 relink 要求适用于 Wine 与 gnutls提供应用的目标文件是源码的替代方案同时需允许为调试修改对组合进行逆向工程Apple 协议第 2.D 节转换器不得用于非 Apple 设备或作为服务提供——Madeira 仅运行于 Apple 设备通知义务在各 fork 中保留上游版权与许可声明随包携带NOTICE.txt、Apple 协议全文、头文件的 Apache 文本、COPYING与LICENSE-EXCEPTION.md。七、开放事项与适用限制Open ItemsLICENSE-EXCEPTION.md 与 docs/LICENSING.md 明确了发布前的未决事项读者引用本文时应知悉这些前提madeira-lgpl分支已采纳2026-09-16wine 子模块已指向该分支所有下游 Wine 补丁的作者归属待确认git authorship 是证据而非证明需注明任何改编自第三方代码的补丁LGPL 三元组选举已记录GnuTLS 3.8.9 按 LGPL-2.1-or-later、Nettle/Hogweed 3.10.1 与 GMP 6.3.0 按 LGPL-3.0-or-later 选举源码 tarball 与 SHA-256 校验和跟踪于build/gnutls-ios/src干净机器重建/重链接/安装测试未闭环2026-09-16 的递归克隆无法无辅助构建缺失输入与重建配方见 docs/BUILDING.md端到端重建尚需从零复现、签名并安装验证律师审查整套安排需由开源许可律师复核后公开发布。最后必须强调LICENSE-EXCEPTION.md 是版权持有人的许可声明不是法律建议组装后的应用在公开发布前必须由律师审查。从源码结构可以推断这份文件的工程意义在于它把GPL 代码 专有 Apple 组件这一常见开源合规死结通过 GPL-3.0 第 7 节附加许可 上游组件分支化LGPL Wine 分支 自动化钩子与构建期校验pre-push、stage-licenses.sh三重手段拆解为可验证、可追踪、可随包分发的完整方案——这对于任何需要与 Apple 专有组件共存的开源项目都具有直接参考价值。赞分享游戏开发图形学【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址https://gitcode.com/GitHub_Trending/mad/Madeira点击查看免费下载相关推荐Notely项目中的GPL-3.0许可证合规实践Notely项目中的GPL 3.0许可证合规实践 在开源软件开发过程中许可证的规范使用是保障项目合规性的重要环节。近期Notely语音笔记项目在许可证文件处理Buster法律合规开源许可证GPL-3.0的解读与应用Buster法律合规开源许可证GPL 3.0的解读与应用 引言开源合规的重要性 在当今开源软件蓬勃发展的时代遵循开源许可证的要求已成为开发者和组织不可忽视人工智能AI 应用语音GPL-3.0开源许可证完全指南OpenSC2K项目的合规实践解析GPL 3.0开源许可证完全指南OpenSC2K项目的合规实践解析 GPL 3.0开源许可证是当今最流行的自由软件许可证之一它为开发者提供了强大的版权保护机游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CAN总线单个报文收发实战:抓帧、发帧与解析

CAN总线单个报文收发实战:抓帧、发帧与解析

干车载网络测试或者嵌入式通信调试的同行,一定绕不开这样一个场景:想在CAN总线上单独发一帧报文,或者从一堆连续刷屏的报文里把某一帧挑出来看个明明白白。你可能觉得这不算什么大事,可真到了现场,发不出去、收不到、解…

2026/9/30 23:40:19 阅读更多 →
使用 Cherry Studio 中体验 MCP 服务:把 MCP Server 配置改到 TaoToken 的完整实践

使用 Cherry Studio 中体验 MCP 服务:把 MCP Server 配置改到 TaoToken 的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 23:40:19 阅读更多 →
嵌入式分享#18:一文搞懂Linux图形显示(X11/Wayland/Weston)

嵌入式分享#18:一文搞懂Linux图形显示(X11/Wayland/Weston)

前言 在 Linux 系统下开发、使用图形桌面时,往往会被一堆概念和术语弄得头晕目眩:GDM3、LightDM、XFCE4、X11、GNOME、Xserver、KDE、Weston…… 本文将带你捋清楚这些术语之间的关联。理解它们的层级关系,非常有利于在工作中快速定位并解决图…

2026/9/30 23:40:19 阅读更多 →

最新新闻

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱Bilibili 同步视频游戏逻辑 vs 游戏引擎,剧本和摄影机的区别现代游戏引擎都包含哪些模块?游戏编辑器:游戏开发者的工作台数学,游戏引擎的内功根基需要重点掌握的数学知…

2026/9/30 23:59:29 阅读更多 →
中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关

中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关

近日,中国科学院青藏高原研究所、国家青藏高原科学数据中心联合国内多个地学数据中心科研人员,系统提出了“人工智能就绪地球科学数据(AI-ready geoscience data)”的定义框架与实现路径。当前,“人工智能就绪数据&…

2026/9/30 23:59:29 阅读更多 →
智能车竞赛芯片选型指南:从主频、资源到双核与生态的决策链

智能车竞赛芯片选型指南:从主频、资源到双核与生态的决策链

1. 为什么第十五届的“芯片选型”忽然成了所有人绕不开的话题从第十五届备赛周期开始,智能车竞赛里的一个趋势变得非常明显:你打开官方通知后,第一件事不再是去翻上届学长传下来的代码,而是先去看“主控芯片”那一栏还能不能沿用老…

2026/9/30 23:59:29 阅读更多 →
MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链

MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 23:59:29 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →