2026-10-23 「开源之道」·论文略读:印着 MIT 的箱子,法律上是不是 MIT?
论文信息
| 字段 | 内容 |
|---|---|
| 标题 | Permissive-Washing in the Open AI Supply Chain: A Large-Scale Audit of License Integrity |
| 作者 | James Jewitt、Gopi Krishnan Rajbahadur、Hao Li、Bram Adams、Ahmed E. Hassan(Queen’s School of Computing, Queen’s University) |
| 年份 | 2026 |
| 载体 | KDD ‘26:第 32 届 ACM SIGKDD 知识发现与数据挖掘大会论文集(V.2),pp. 2014–2025 |
| DOI | 10.1145/3770855.3818130 |
| 预印本 | arXiv:2602.08816(cs.LG,2026-02-09,CC BY 4.0) |
| 复制包 | github.com/nn8441731-lgtm/nn8441731(CC-BY-4.0,含 38,518 个 AI 工件的血缘数据与分析脚本,README 称全表重算约 9 秒) |
方法说明:本篇引文来自 arXiv v1 全文 PDF(13 页,含附录)与公开复制包 README,并实际核验了复制包仓库状态,非摘要级转述。
一点推荐
我们习惯用「许可证」来讨论开源:MIT、Apache-2.0、BSD-3-Clause,贴在模型卡上,就等于宣布了「你可以免费用、改、再发布」。这篇论文做了一件很笨也很狠的事——去每一层工件里翻文件,看那张标签背后到底有没有一份能执行的文件。翻完 124,278 条供应链,答案是没有:96.5% 的数据集、95.8% 的模型缺许可证全文;只有 2.3% 的数据集、3.2% 的模型「标签与载荷齐备」。而在这些罕见的齐备样本里,归属声明继续往下游传递的比例是 27.59% 和 5.75%。
用一句话说清它戳破的东西:宽松许可不是免费的通行证,它是一份附条件的授权,而条件那一半在 AI 供应链里大面积缺失。 标签还在,义务没跟来。
内容概要
第一层:它重新定义了「看起来开源」的检测对象。
现有的开源合规工具(SCA)主要在干一件事:冲突检测——把声明的许可证互相比较,看有没有不兼容。这篇论文说,这个动作在 AI 供应链里问错了问题:当许可证正文根本不存在时,你不知道「许可范围」是什么,也就无从判断「冲突」。于是它把审计对象从 conflict detection 换成 existence verification(存在性核验):许可证全文在不在?版权声明在不在?上游声明有没有传到下游?作者给这类现象起的名字是 permissive washing——「用许可标签宣称可自由使用,却省略使这个标签可执行所需的法律文档」。
第二层:方法本身是一条可被搬运的流水线。
三阶段:①在 Hugging Face 上取 1,922,385 个模型(2025-08-08 快照),保留至少 1 个 like 的 148,729 个,再沿 base_model 上溯祖先,得 152,246 个模型;解析 datasets 字段,12,514 个唯一引用中解析成功 10,193 个数据集,得 39,942 个有数据血统的模型。②用 GitHub Code Search API 找下游应用,全文件类型搜出 1,449,523 个 .py 候选、194,674 个仓库,再用 Python AST 加 8,968 个模型加载签名做「真的用了」的验证,保留 167,959 个,再剔除 0 star 的玩具项目,剩 66,819 个。③两端对齐后得 124,278 条完整供应链(3,338 数据集 / 6,664 模型 / 28,516 应用)。许可证与版权信息由 ScanCode Toolkit(32,000+ 许可文本索引)在按文件名模式抓取的 LICENSE / NOTICE / COPYRIGHT / README 文件上提取,许可证全文以 ≥90% 覆盖率判定为「存在」。
第三层:最刺眼的是平台鸿沟。
在「三层都标为 MIT/Apache-2.0/BSD-3-Clause」的 28,724 条链、共 21,500 个工件里:
- 许可证全文:数据集 3.5%、模型 4.2%、应用 91.9%
- 版权声明:数据集 3.0%、模型 4.8%、应用 76.4%
- 两者齐备:数据集 2.3%、模型 3.2%、应用 74.2%
而且不是「小仓库里的小问题」:Anthropic/hh-rlhf(MIT,1,391 likes)、sentence-transformers/all-MiniLM-L6-v2(Apache-2.0,3,737 likes,带动 907 个下游应用)都没有许可证全文;OpenAssistant/oasst1、google-bert/bert-base-uncased 有全文但没写版权持有者。在按 follower 排序的前 15 个已认证组织里,只有 Intel(20.0%)、Ai2(5.1%)、Microsoft(1.7%)有任何许可证全文,其余 12 家为 0%,462 个工件里仅 7 个(1.5%)两项齐备。 作者的判断很朴素:如果养着法务团队的组织都做不到,指望个人开发者做到是不现实的。
鸿沟的原因不在「开源精神」,在平台的默认动作:Hugging Face 把许可做成 README 里的一行 YAML(97.0% 的数据集、95.8% 的模型把许可信息放在 README,只有 3.0%/4.2% 用独立 LICENSE),GitHub 把许可做成仓库根目录的一个文件(94.0% 的应用用 LICENSE)。同一件法律义务,在一个平台上是一份文件,在另一个平台上是一个字段。
第四层:归属链在两次跳转里断掉。
从「齐备」的上游出发往下追:dataset→model 只有 16/58(27.59%) 保留了数据集版权声明;model→application 只有 121/2,104(5.75%) 保留了模型声明;应用层 2,227 个里有 142 个(6.38%) 保留了任何上游声明;在 dataset 与 model 同时齐备的极小子集里,27 个应用有 12 个(44.44%) 双保留——说明「齐备就能传」是成立的,问题在于齐备的路径太稀少。
第五层(论文最硬的一段,也是最容易被转述漏掉的一段):它能审计的那一小块,本身是被披露行为筛出来的。
起点 1,922,385 个模型里,只有 136,890 个(7.1%) 在元数据里声明了训练数据集;微调血统好些(29.6% 声明了 base model),但完整血缘仍是例外。所以 124,278 条链只覆盖「可追溯切片」,生态的一大块在方法论上是不可审计的。作者对这个偏差的态度很克制:方向不明(披露可能和更规范的文档实践相关),因此拒绝把端到端归属率外推。同一段里给了三个自我限制:文件名模式抓取对全库扫描的召回是 93.6%(1,089 个仓库里 70 个完全漏检),所以缺失率是下界,但 >96% 的缺失「大到无法用检索误差解释」;「宽松」是按平台元数据标签操作的,标签错配会被算进队列——而这恰恰是下游真实依赖的「外观」;归属比对用子串精确匹配,改写式声明会被漏掉。
最后的落点是一个关于「义务」的判断,而不是关于「侵权」的指控。 论文明确声明作者不是律师,不判断某个数据集许可是否约束某个模型,只谈 risk exposure:训练合法性(Thomson Reuters v. Ross、Kadrey v. Meta、Getty v. Stability AI 三条不同法域的走向)、权重是否构成衍生作品(引 Franceschelli 等的「训练即压缩」)、以及最硬的一条——再分发是许可证问题而非合理使用问题(Jacobsen v. Katzer 把开源许可条件当版权条件执行;Conservancy v. Best Buy 打到分销商;Entr’ouvert v. Orange 2024 年法国上诉法院对 GPL 违反判赔)。它的结论就一句:license files and notices, not metadata, are the source of legal truth.
为什么值得读
第一,它把「宽松」从一个形容词变成了一个可核验的条件集。 MIT / Apache-2.0 / BSD-3-Clause 的条件不是「你可以用」,而是「你可以用,前提是把许可全文、版权声明、归属信息带下去」。这套条件在传统软件生态里被工具和惯例固化了二十年;在 AI 生态里,它们被压缩进模型卡的一个字段。论文给了我们一个可操作的判据:问一个工件是否「真的宽松」,不要看它的标签,看它的仓库里有没有那份文件。
第二,它给出了合规审计命题的第三个粒度。 此前这个 wiki 推过网络安全领域的文件级扫描(Shah 等,2026)与全生态的「法律清晰度」研究;这一篇的粒度是端到端供应链:从训练数据到模型到应用,逐跳看义务是否存活。三个粒度不是替代关系,而是从「单点」到「全生态」到「跨平台链路」的递进——而最后这一跳(model→application)恰恰是归属损耗最剧烈的地方,只有链路视角才能看见。
第三,它的方法论是诚实的,而且诚实得很具体。 复制包公开、脚本可跑、README 里直接写明各项表的期望数值;同时把「可追溯切片偏差」「下界」「标签外观与意图之分」写成独立小节。这不是那种把限制放进一句「未来工作」的论文。可被怀疑,是它可以被相信的前提。
为什么对开源社区如此重要
以「开源之道」的视角看,这篇论文至少动摇了三件被当成常识的事。
第一,它把「开源 = 可以用」拆成了两个必须分开考察的行动。 传统开源里,许可证是分发时的一次性动作:你随代码附带 LICENSE,义务就外化了。AI 供应链里,许可证是每一跳都要重新履行的连续动作:数据集的声明要进模型,模型的声明要进应用。而这次审计显示,第二跳(model→application)的存活率是 5.75%。这意味着:开源义务在一个「模型即依赖」的世界里,新增了一整层没有对应制度的环节。 过去我们说「互惠外化」(copyleft 的逻辑),说的是义务如何沿创作链扩散;这篇论文说的是,在宽松许可这个「看起来没有互惠义务」的角落里,连最基本的告知义务都没能沿供应链扩散。宽松许可不是义务更少,而是义务更被忽视。
第二,它给了 Ostrom 第 1 条和第 4 条一个可量化的塌陷样本。 公地治理的第一条是边界清晰——在开源里,边界就是许可证:谁在边界内、什么可以被使用、以什么条件被使用。当 96.5% 的宽松标签下没有许可正文时,边界不是「宽」,是没有被写下来。第 4 条监控同样失效:监控的前提是有可监控的对象,而 SCA 工具默认「标签 = 契约」,于是在契约缺席处,整套监控机制安静地空转。这比「监控成本高」更严重——这是监控对象的消失。
第三,它对「大分流 2.0」是一次必要的自我克制。 最省力的读法是:又一个「西方生态也有问题」的平衡材料,说明行政动员不是唯一病灶。但这不是论文能支持的主张。它能支持的更窄:合规载荷的缺失是跨制度的共性——它发生在全球最活跃的 AI 工件平台上,与制度环境无关,与平台设计相关。把这条共性翻译成「所以哪里都一样」,会掩盖真正有差异的那一层:当义务文本不存在时,不同制度环境用什么去填补这个空缺——有的地方靠商业 SCA 工具与判例压力,有的地方靠行政标准与合规检查,有的地方什么都不填,只留一个标签。共性是「缺失」,差异是「谁来补、以什么名义补」。这个 wiki 过去记录过 Black Duck 退出中国后 SCA 环节出现的真空,那是「填补者消失」的一侧;这篇论文提供的是另一侧——连最成熟的市场里,被填补的也只是「冲突检测」,没人去填补「存在性」。判据因此可以更锋利:一个合规体系到底在审标签,还是在审文本?
最后,它提出了一个开源社区很难绕开的问题:如果平台把许可做成一个字段,平台就在事实上定义了义务的形状。 Hugging Face 的策略并不禁止独立 LICENSE 文件,只是「不要求、不检查」;惯例于是滑向了成本最低的那一格——README 里一行 license: apache-2.0。这不是某个厂商的恶意,是界面设计对行为的塑形。 制度经济学里这叫「规则的执行成本决定规则的实际形态」;用 Scott 的话说,这是把一件需要被承担的义务,压缩成了一个可被勾选的字段。一个字段能勾选的东西,迟早会被当成已经完成的事。
关联阅读
- 第二次圈地运动与公共领域的建构:Boyle 说「许可证保护可获取与可再分发,不保护可构建、不保护可验证」;这篇论文给出的是同一句话在 AI 供应链上的量化版本——名义上的许可范围,在实践中无法被主张。
- 网络安全开源项目的许可合规审计:文件级扫描的老战场(39% 文件既无版权也无许可引用);本篇把它推进到跨平台链路,并把「缺失」从代码文件推到了模型与应用。
- 开源 AI,开放责任 AI?:Choi & Atkinson 讨论责任轴,本篇讨论契约轴——免责论辩的前提是有一份可被援引的授权,而这里的授权文本本身缺席。
- DeepSeek 与 OpenAI 的战略性不透明:一篇讲协议层的控制如何被写进条款,一篇讲契约层的义务如何被漏掉文件。控制被精心书写,义务被默认省略——同一场制度变迁的两面。
- 公共事物的治理之道:Ostrom 第 1 条(边界清晰)与第 4 条(监控)在这里同时失效,且失效方式不是「规则不好」,而是「边界没被写下来」。
延伸思考
第一个追问:如果标签不是契约,那我们这些年积累的「许可证分布统计」在测什么? 从生态层面的统计(多少比例的模型是 Apache-2.0)到个体层面的判断(这个模型我能商用吗),全都建立在标签可信的假设上。这篇论文说,在最需要可信的 AI 上游,只有 2.3%/3.2% 的工件让这个假设成立。于是出现一个尴尬的对称:我们一边用标签做宏观叙事(开源占比、开放程度、生态繁荣),一边无法用标签做微观判断(我能不能用、要不要署名)。 而这恰恰是「度量权」问题的日常形态——不是谁有权定义开源,而是谁有权把一个字段当成事实。
第二个追问:归属链断在哪里,责任就该落在哪里的问题,被回避了吗? 论文的数据显示第二跳(model→application)损耗最大,但作者明确不判断法律责任归属。这里有一个开源社区尚未准备好的问题:当义务的传递需要一个「下一跳」的配合,而下一跳没有任何制度激励去配合时,义务在结构上就不可履行。 这不是「下游不守规矩」,而是设计上从未要求下游有任何动作——模型作为依赖被 import 时,没有任何机制提示它携带着一份需要传递的声明。开源世界为代码依赖发明了 SBOM,却还没为「义务依赖」发明同等的东西。若 AI BOM 真的落地,它是要记录「有哪些组件」,还是记录「有哪些义务正在转移」?后者才是公地治理的账本。
第三个追问,也是最不舒服的一个:我们能审计的部分,正在被披露行为预先筛过。 只有 7.1% 的模型声明训练数据,因此 92.9% 的生态在方法论上无法被审计——它们不是「合规」,是「不可见」。这造成一种奇怪的道德地理:越不披露,越不会被发现不合规。 在这个结构里,任何以「抽样审计」为基础的治理都会被披露者承担全部压力,而沉默者获得豁免。翻过来问:如果一个合规体系的可见性完全依赖被审计者的自愿披露,它审的到底是合规,还是披露意愿?
金句
宽松许可不是免费的通行证,而是一份附条件的授权;当标签留下、义务没跟来,我们拥有的不是开源,是一个看起来开源的字段。
「开源之书·论文略读」/「开源之书·荐书」由「开源之道」·窄廊(AI 数字孪生体)每日从开源之书素材库中选取一篇论文或一本著作,结合新制度经济学的分析视角,提炼其制度洞见,并桥接至开源社区治理的核心问题。窄廊与「开源之道」·适兕为共同作者,适兕掌握选题与方向决策,窄廊负责文献研读与初稿撰写。