资讯详情

资讯详情

GPLv2 撞上 Apache-2.0:Husk 开源许可策略背后的法律与工程权衡

【免费下载链接】HuskRun Android on your iPhone. Natively or Emulated.项目地址https://gitcode.com/gh_mirrors/husk2/Husk点击查看免费下载Husk 是一款让 iPhone 直接运行安卓游戏和 App的开源项目而它最容易被忽略的亮点恰恰藏在 LICENSE 和 docs/01-licensing.md 里——一套教科书级的开源许可Open Source License选型方案。Husk 整体采用 GPLv2 许可同时项目里还撞上了 Apache-2.0、AGPL-3.0、MPL-2.0、MIT 等多种许可。这篇文章带你弄懂GPLv2 为什么是没有选择的选择、为什么 UTM 的 Apache-2.0 代码碰都不能碰以及法律条款如何一步步决定了这个项目的分发方式。先认识一下 Husk一个双引擎安卓运行器Husk 的玩法很简单把一个 APK 拖进 App点一下就能在 iPhone 上全屏运行。它内部有两条完全不同的技术路线Library 界面的两个分区翻译层Translation Layer游戏自己的 64 位 Android 代码直接在 iPhone 处理器上跑Husk 在旁边扮演安卓系统——C 库、Java 调用、OpenGL ES、Vulkan、声音、触摸全部由它接管。核心实现在 src/translation-layer/完整模拟在 QEMU 虚拟机里启动整套 LineageOS 安卓系统用于翻译层还跑不动的 App。正是模拟路线里链接的QEMU决定了 Husk 整个许可策略的走向。为什么是 GPL-2.0-or-later因为 QEMU 没有给退路这是本文的核心问题之一开源项目的许可不是想选什么就选什么而是被依赖项绑架的。原因有两层且互为独立QEMU 整体是 GPLv2。Husk 把 QEMU 编译成libqemu-aarch64-softmmu.dylib直接链进自己的进程并随 IPA 一起分发——这在法律上叫结合作品combined work整包必须按 GPLv2 对待。Husk 自己的代码选GPL-2.0-or-later正好与 QEMU 兼容同时又为将来升级到 GPLv3 留了口子JIT 内存分配器代码来自 shadPS4 的 AetherPS4-iOS原文件头就写着GPL-2.0-or-later见 src/ios-jit/husk-ios-jit.c所以就算没有 QEMU它也是 GPL 的。项目里每一个 Husk 自研文件都带 SPDX 许可头如SPDX-License-Identifier: GPL-2.0-or-later连给 QEMU 打的补丁 patches/husk-qemu-ios-jit.patch 也标注为 GPL-2.0-or-later, same as the file it patches——许可跟着被修改文件的许可走这是非常规范的工程实践。真正的陷阱UTM 的 Apache-2.0 应用代码只能抄想法不能抄代码Husk 基于 UTM 的 QEMU 构建方案起步而UTM 的 App 代码是 Apache-2.0。这里就出现了标题里的碰撞⚠️Apache-2.0 与 GPLv2 不兼容它只与 GPLv3 兼容但 QEMU 整体是 GPLv2救不了场。所以 Husk 给能从 UTM 拿什么画了一张清晰的清单来源许可能不能用UTM 构建用的 QEMU 代码包GPL-2.0它本身就是 QEMU✅ 可以UTM 的build_dependencies.sh构建脚本ISC✅ 宽松许可可以UTM 的 Swift/ObjC 应用代码、CocoaSpice、UIApache-2.0❌禁止复制注意一个精妙细节patches/目录里直接 vendor 了 UTM 的补丁文件patches/README.md因为这些补丁改的是 QEMU、pixman、libslirp它们的许可归属是各自上游项目如 GPL-2.0而不是 UTM 的 Apache-2.0。许可看改的是谁的文件而不是补丁从哪抄来——这个区分很多开发者都会搞错。AGPL-3.0 的 StikDebug 为什么无罪iOS 上的 JIT即时编译权限必须由调试器授予所以很多用户需要另装一个调试器 AppStikDebug它是AGPL-3.0许可——听起来很吓人AGPL 连网络服务都管。但 Husk 的解法是进程级隔离StikDebug 是独立应用通过 gdb-remote 协议附加到 Husk两者之间没有链接、没有共享地址空间跨边界传递的只是一条线上协议wire protocol而协议本身不是可版权的对象用户从 StikDebug 自己的渠道安装Husk 只做文档说明和链接绝不打包捆绑。结论只要不构成链接/派生作品AGPL 就管不到你。这是处理强 Copyleft 依赖的经典思路。内置 StikJITMPL-2.0 与 MIT 如何安全入包从 iOS 26 开始Husk 可以用内置 StikJITdocs/06-built-in-jit.md自己开启 JIT这时确实要打包第三方代码了许可盘点如下组件许可状态StikJIT 1.9.0 XCFrameworkMPL-2.0未修改原样嵌入idevice 库MIT已链接Rust 依赖src/rppairing-ios/Cargo.lock 锁定版本MIT / Apache-2.0 / BSD-3 / ISC静态链接关键在于MPL-2.0 是文件级的 Copyleft它只要求 MPL 文件本身的修改开源且 MPL-2.0 第 3.3 条明确与 GPL 兼容——所以它放进 GPL 主工程完全没问题。许可文本也随包分发在 src/app/Husk/Resources/legal/包括LICENSE-StikJIT-MPL-2.0.txt、LICENSE-idevice-MIT.txt等。一次漂亮的工程法律双赢删掉无许可二进制Husk 曾依赖一个叫BreakpointJIT.framework的第三方二进制但它分发物里没有任何许可文件。无许可unlicensed的二进制GPL 项目是不能依赖的——默认版权保留你什么权利都没有。最终解决方案堪称典范反汇编后发现这个 framework总共只有 11 条指令几对brk断点指令语义完全由 StikDebug 的公开协议文档规定。于是 Husk 自己在 src/ios-jit/husk-brk.S 里用汇编重新实现复刻的只是接口约定而非任何人的创造性表达。顺带的工程收益更大删掉 framework 后dlopen间接层和 AMFI 启动失败带 entitlements 的内嵌 framework 在侧载构建上会被拒载也一并消失了。法律风险归零代码还更干净——这就是许可思维反哺工程设计的例子。分发方式许可条款直接决定了上不了 App Store许可不只是文件头它直接改写了产品分发路线公开、完整、可构建的源码仓库——这才是满足 GPLv2 第 3 条分发二进制须附对应源码的方式侧载分发通过 AltStore / SideStore / TrollStore 安装 IPA随包提供完整源码放弃 App Store且有两个独立的理由GPLv2 条款与 App Store 分发限制冲突经典的 VLC 问题以及 Husk 必须依赖get-task-allow 运行时附加调试器才能开 JIT审查根本不会放行。还有一个留白但没忘的问题见 docs/01-licensing.md 末尾模拟模式启动的Linux 内核是 GPLv2未来若要随包分发内核二进制就必须连同其源码一起提供而Google Play Services 被明确禁止捆绑——这同样被定性为许可层面的禁令不只是太复杂。给开发者的三条启示 先定许可再写代码Husk 在写下大量自研代码之前就把许可问题裁定完毕避免返工依赖许可做资产盘点每一行第三方代码都标注许可、存放位置和兼容结论本项目在 docs/01-licensing.md 中全部对照真实源码树核验过不凭记忆隔离优于侥幸AGPL 用进程边界隔离、Apache-2.0 用只借想法不抄代码、MPL 靠文件级条款入包——同一项目里展示了三种不同的兼容性解法。延伸阅读项目整体架构见 docs/00-architecture.md翻译层原理见 docs/04-translation-layer.mdQEMU 相关补丁说明见 patches/README.md。赞分享【免费下载链接】HuskRun Android on your iPhone. Natively or Emulated.项目地址https://gitcode.com/gh_mirrors/husk2/Husk点击查看免费下载相关推荐Kata Containers 开源许可策略解析Apache 2.0 双轨授权与 SPDX 标识的工程落地Kata Containers 开源许可策略解析Apache 2.0 双轨授权与 SPDX 标识的工程落地 本篇技术指南以 docs/Licensing st云原生容器运行时终极指南Bend语言Apache 2.0许可证合规详解与知识产权保护策略终极指南Bend语言Apache 2.0许可证合规详解与知识产权保护策略 Bend作为一种大规模并行的高级编程语言A massively parallel,编程语言编译器语言运行时高性能计算免Root去预装完整攻略用Universal Android Debloater快速卸载安卓预装应用免Root去预装完整攻略用Universal Android Debloater快速卸载安卓预装应用 刚拆封的新手机里躺着一堆你大概率永远不会打开的应用电量桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →