常见问题
MIT 许可证相关
什么是 MIT 许可证?
MIT 许可证源自麻省理工学院,是一种极其宽松的“许可型”开源许可证。 它允许用户对软件做任何操作,唯一的要求是保留作者的版权声明和许可证文本。 据2019年的统计,它是 GitHub 上最流行的开源许可证,使用率高达27%。
MIT 许可证的核心特点是什么?
超级宽松:想怎么用就怎么用(商用、修改、闭源都行)。 唯一义务:必须保留作者的版权声明 。 无担保:作者不对软件质量承担任何责任,软件按“原样”提供 。 无专利保护:与 Apache 2.0 不同,MIT 不包含明确的专利授权条款 。
MIT 与 GPL 有什么根本区别?
最大的区别在于“传染性” : GPL:如果您分发(发布)包含 GPL 代码的软件,必须将整个项目的源代码公开,并使用 GPL 许可证。 MIT:您可以修改 MIT 代码,然后将其集成到闭源的商业软件中发布,无需公开您的源代码。 请记住,无论您如何修改或再许可,原作者的代码部分仍然受 MIT 许可证约束,您必须保留其版权声明。
如何获得本许可,及其所授予之权利?
任何人自动获得本许可及其所授予之权利。 但您使用本许可所授予之权利,则需遵守本许可所规定之义务,否则属于版权侵权行为。
我应该遵守什么义务?
在本软件的所有副本或实质性使用中,都必须包含以上版权声明和本授权声明。 当您分发本软件的源码或二进制副本时(包括修改后的版本),必须在所有副本中保留版权声明和许可证文本。 如果您只是参考本软件的思想独立开发代码,未直接复制源代码,则无需署名。但如果您复制了任何一部分源代码,即使是很小的片段,也必须保留原作者的版权声明。 简单地说:软件作者保留其贡献代码之版权,并通过本许可授予他人对这部分代码之权利。您不能把作者的名字删掉,必须让别人知道这代码是从何而来的。
我获得什么权利?
使用、复制、修改、合并、发布、发行、再许可、售卖本软件拷贝、并有权向被供应人授予同等的权利。 使用:您可出于任何原因,以任何方式运行本软件。 复制:您可拷贝本软件到任意位置,无论出于传播亦或是其他目的。 修改:您可修改本软件,无论是增加功能、修复漏洞或是将其作为自己项目的一部分。 合并:您可以把这份软件的代码与其它软件的代码整合到一起,形成一个更大的作品。 发布:您可以把原始代码或修改后的代码公开发布出来,比如上传到个人网站供大家下载。 发行:与发布类似,无论是免费发行、收费发行或作为商品的一部分发行。 再许可:您可以将您修改后的代码与原始代码一起作为一个整体,以其他许可证发布(甚至闭源商业软件)。但您必须确保原始代码的 MIT 许可证条款仍然被遵守(即保留版权声明),您不能改变原始代码本身的许可性质。您对新增的代码可以选择任何许可证。 售卖本软件拷贝:您可以直接售卖本软件的副本,或者把它打包进您的收费软件里售卖。 有权向被供应人授予同等的权利:见下文。 简单地说:取得本许可,意味您可以任意使用本软件。
如何理解“有权向被供应人授予同等的权利”?
被供应人视角:基于本许可,您有权通过软件供应人取得与之同等的许可授权。 供应人视角:您从原作者处所取得之权利,必须原封不动地传递给所有从您处拿到软件的人。 注意:这里的“同等权利”仅指原作者所贡献代码部分的许可必须原样传递。您对软件修改的部分(您自己的贡献)可以自行决定是否授予权利,以及授予何种权利,不受此条款约束。但您不能限制下游对原作者代码部分的自由。
作者的责任?
本软件是“按原样”提供的:作者把软件以当前的状态交给您,不承诺任何东西(例如:本软件一定能运行、本软件没有漏洞,本软件适合您做任何事情)。 不附带任何明示的保证:排除作者任何声明带来的责任,它们只作为一种参考。 不附带任何暗示的保证:排除法律默认的隐含的保证。例如:适销性、适用性、非侵权性。 简单的说:基于本许可证,在任何情况下,作者或版权持有人都不负任何责任。您需自担风险,自行判断是否使用、如何使用。
我该如何正确履行“保留版权声明”的义务?
根据您的使用场景,操作略有不同:
场景A:直接复制源代码文件:确保每个文件头部保留原作者的 Copyright (c) [year] [author] 信息。
场景B:作为依赖库使用(如 npm、pip 安装):在您的软件发布包中(无论是源码包还是编译后的程序),附带一份原始的 LICENSE 文件。
场景C:编译后的软件(App、exe):在软件的“关于”、“设置”或“法律声明”页面中,显示这份版权信息和许可证文本。
我的项目里用了多个不同的 MIT 开源库,版权声明怎么放?
最佳实践是创建一个统一的授权文件(如 NOTICE 或 LICENSE-3RD-PARTY)。 在这个文件中,依次列出每个库的名称、原作者的版权声明以及一份 MIT 许可证的副本。
如果我只在内部使用(不向外分发),需要遵守MIT协议吗?
如果您仅将软件用于个人学习、公司内部测试或内部业务系统,无需附带版权声明。MIT协议要求“在所有副本中”保留声明,通常指向分发行为。但请注意: 如果您的内部系统通过互联网向外部用户提供服务(SaaS),且服务本身基于MIT代码构建,您不需要开源或附带声明(与 AGPL 不同),只需要在代码或内部文档中保留声明即可。 但如果您将代码副本分发给外包团队、合作伙伴或客户,则属于分发,必须保留声明。
我修改了MIT代码,需要把我修改的部分也开源吗?
不需要。MIT 许可证不要求您公开修改后的源代码。您完全可以: 将修改后的代码闭源,作为商业产品的核心机密。 将修改后的代码以其他许可证(包括商业许可证)发布。 唯一要求:无论您如何修改,原作者的版权声明和MIT许可证文本必须保留在代码副本中。
我使用MIT代码开发了一个网站/App/服务,需要在界面上显示版权信息吗?
网站后端代码:如果用户无法获取您的代码(只能通过浏览器访问),您无需在网页上显示版权信息。 移动App:如果您将App打包(如APK、IPA)分发给用户,属于分发二进制副本,必须在App的“关于”、“设置”或“法律信息”页面中显示版权声明。 SaaS服务:如果您只是运行服务,不向用户分发代码副本,无需显示声明。
MIT代码的作者可以随时改变许可证吗?
不能。许可证一旦授予,就不可撤销: 对已发布的版本:您使用的特定版本(如v1.0)永远保持 MIT 许可证。即使作者后续将项目改为 GPL 或商业许可证,也不影响您对已获取副本的使用。 对未来版本:作者可以更改后续版本的许可证(例如从v2.0开始采用新许可证),但您可以选择继续使用 MIT 版本的旧代码。 注意:如果作者是唯一版权持有人,他可以停止维护MIT版本,但不能收回您已获得的授权。
我可以把MIT代码用在专利相关的产品中吗?
可以,但需自行评估风险。 MIT 许可证本身不授予专利许可,但也不禁止您将其用于已获专利的产品。需要警惕的情况: 情况一:如果代码实现了他人的专利方法,且您未获得该专利许可,可能侵权。 情况二:如果您为自己的产品申请专利,且该产品包含MIT代码,专利审查不会因代码开源而受影响,但您需确保专利申请不侵犯原作者版权。
如果MIT代码有漏洞导致我损失惨重,我能追究作者责任吗?
不能。 MIT协议明确声明软件"按原样"提供,作者不承担任何责任。这意味着: 您需要自行承担使用风险,包括但不限于数据丢失、系统崩溃、商业损失。 如果您将MIT代码用于关键业务(如医疗设备、自动驾驶、金融交易),建议:
- 进行充分的代码审计和测试。
- 购买商业支持服务(如有)。
- 购买专业责任保险(如开源软件使用风险保险)。
我修改了别人的 MIT 代码,版权声明应该怎么办?
不能删除原作者的名字! 正确做法是:保留原作者的版权声明,并额外添加您的版权声明(通常按顺序位于原作者版权声明下面)。
MIT 可以和 GPL 代码混合使用吗?
情景:您在一个项目里包含了 MIT 代码和 GPL 代码。 结果:由于 GPL 的“传染性”,整个项目的分发必须遵守 GPL 许可证。也就是说,您的整个项目必须开源 。 反过来不行:您不能把 GPL 代码放进一个原本是 MIT 的项目里,然后声称整个项目还是 MIT,因为 GPL 要求整体开源。
MIT 和 Apache 2.0 的区别?
两者都很宽松,但侧重点不同 。 MIT:极简,义务最少,只要求署名。 Apache 2.0:虽然也宽松,但增加了专利授权条款,并要求声明修改(如果修改了文件,需要说明)。 MIT 代码可以集成到 Apache 项目里,但反过来,Apache 代码里的专利条款是 MIT 代码不具备的。
MIT 对专利的态度如何?
MIT 没有明确的专利授权条款。 需要特别注意:MIT许可证不包含专利授权。因此,即使代码可以自由使用,原作者(或其他任何人)仍然可能拥有覆盖该代码实现方式的专利,并有可能在未来主张专利权。这是使用MIT代码时需要自行评估的风险。
个人观点
这不是 MIT 的缺点和不足,反而是其自由的特点。 作者的让渡: 当我选择MIT时,我实际上是在说:"我放弃了对我的代码所衍生出的未来可能性的控制权。您可以站在我的肩膀上,而且您不需要为此对我负任何义务。您可以利用我的工作去赚钱、去封闭、甚至去申请专利来构筑您自己的护城河。" 自由的本质: 这种自由是彻底的、不加条件的。它不仅允许对方自由地使用,也允许对方自由地离开。如果对方基于MIT代码搞出了一个改进专利,然后反过来建立了一个商业壁垒,这在MIT的哲学里是允许的——因为这就是他行使自由的方式。 专利的争议:专利本身是一把双刃剑。它是为了鼓励创新而设立的"垄断",但在软件领域,它也常常被用作诉讼武器。MIT许可证对此持完全中立的态度。它既不鼓励专利,也不反对专利。它只是说:"我(作者)不打算用专利来限制您,至于您和别人之间怎么用专利打交道,那是您们的事,我不参与。"
MIT 对商标的态度如何?
MIT 没有明确的商标授权条款。根据惯例,MIT 默认不授予任何商标使用权。 当您使用MIT代码时,获得的只是版权方面的授权(可以复制、修改等),但没有获得使用原作者商标的权利。
为什么 MIT 代码的作者会起诉我侵犯专利?
因为MIT许可证仅授予您版权方面的权利,并未授予您实施代码中可能包含的专利技术的权利。如果作者拥有一项专利,而您使用该代码恰好实施了该专利(例如代码实现了一种专利方法),那么作者可以依据专利法起诉您侵权,即使代码是您合法获得的。
争议应该如何处理?
项目许可证以根目录下 LICENSE 文件作为唯一具备法律效力之版本(通常为英文原版),其他版本仅供参考。
任何附加文件不会修改 LICENSE 文件的条款,仅充当补充法律声明,以澄清可接受的使用并否认滥用的责任。
安全策略相关
什么是安全策略文件?
安全策略文件提供一个向我们披露“安全和合规性问题”的建议和可行的方式,旨在让项目更健壮安全的发展。 该文件不修改开源许可的任何条款,但滥用漏洞可能因对他人造成损失而违反法律。
什么是安全和合规性问题?
项目在安全或合规性方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁。而常见的功能缺陷、界面缺陷则不属于这个范畴。 例如:可能导致XSS的网页漏洞、可能导致低等级用户未经许可提升权限的系统漏洞。
什么是概念验证(POC)?
对某些想法(例如漏洞披露)的一个较短而不完整的实现,以证明其可行性(例如漏洞可复现),示范其原理,其目的是为了验证一些概念或理论。
行为准测相关
什么是行为准测?
行为准测文件旨在让项目的开源环境和氛围更健康、友好和包容。若您参与我们开源项目的建设或讨论,我们希望您可遵守这份准则。 该文件不修改开源许可的任何条款,若参与我们项目建设和讨论并违反规定可能导致贡献被拒或禁止继续参与我们的讨论,但您仍可分叉我们的项目且不因此丧失我们的开源许可。
常见场景相关
有什么是我可以做的?
- 下载本软件,并任意编译、运行它,无论提供什么输入、环境。
- 您把本软件下载到本地电脑,或者备份到U盘、服务器上。
- 您发现代码里有段排序算法很好,把它复制出来,改一改,用到您自己的软件里。
- 您可以把原始版本或修改后的版本公开发布出来,比如上传到 GitHub、放在个人网站上供下载。
- 您提供免费或付费的下载、编译、调试、运营本软件(无论是否修改)的服务。
- 您对原始代码所做的修改部分,可以声明为专有,不需要公开。
- 您可将本软件作为商业软件或商业软件的一部分,为用户提供免费或付费的服务。
- 您可改进本软件后申请相关专利,并以此限制他人(包含作者)使用您的改进软件专利。您只能对自己新增的发明申请专利,不能对原始代码本身申请专利。如果您的改进部分确实构成新的发明,您可以申请专利并依法限制他人(包括原作者)使用您的专利技术,但必须保留原始代码的 MIT 版权声明。请注意,这可能导致原作者无法使用您的改进,但这是MIT允许的自由。
- 您可以用新许可证发布整个衍生作品,但必须确保原始代码部分仍然符合MIT条款,即下游用户对原始代码部分享有MIT赋予的全部权利。如果您的衍生作品整体采用新许可证(如闭源商业许可证),您仍然需要在软件中包含原始代码的版权声明和MIT许可证文本,但用户可能无法直接访问原始代码(因为整体闭源)。只要您没有对原始代码部分附加额外限制即可。
注意:原始代码中原作者的版权声明和许可证文本必须保留。
有什么是我不能做的?
- 删除本软件中的版权声明,这属于版权侵权。虽然 MIT 许可证文本没有明确“违规则授权自动终止”,但根据版权法,未经授权使用他人作品是违法的。原作者有权要求您停止分发、赔偿损失。
- 因作者说“这个软件能处理每秒100万次请求”而如果实际达不到,主张让作者为此承担任何法律责任和赔偿。若作者故意欺诈(如明知无法达到却虚假宣传),作者可能无法完全免责。
- 因软件有漏洞,导致您的服务器崩溃、数据丢失或造成经济损失,主张让作者为此承担任何法律责任和赔偿。
- 因利用本软件时遭到侵权起诉,主张让作者为此承担任何法律责任和赔偿。
- 假冒原作者或暗示原作者背书您的产品。即使MIT许可证未涉及商标,商标法禁止误导性使用他人商标或名称。
- 违反出口管制等法律法规。MIT许可证本身不豁免任何法律义务。

