文章分析了 2023 年最受欢迎的开源许可证。数据显示,MIT 和 Apache 2.0 许可证在不同的编程语言和包管理器中最为普遍。尽管已有许多成熟的许可证,但许多开源组件缺乏指定的许可证,带来法律复杂性和安全问题。文章强调了清晰和标准化许可证对开源社区健康的重要性。
原文链接:https://blog.opensource.org/the-most-popular-licenses-for-each-language-2023/
未经允许,禁止转载!
2023 年的报告强调了帮助开发者了解并正确使用软件许可证的重要性。虽然开源软件是现代软件开发的基石,但数据显示,许多软件都是在没有明确定义许可证的情况下被共享和使用的。
利用开源倡议(OSI)社区项目 ClearlyDefined 的数据,Aleksandrs Volodjkins 深入分析了 2023 年 9 月 21 日的数据集。ClearlyDefined 是一个专注于提供软件组件起源和许可的全面、标准化元数据的协作项目。其数据揭示了当前主导开源生态系统的趋势。
总体来看,MIT 和 Apache 2.0 是目前最普遍的许可证选择。它们的简洁性和允许在极少限制下修改及分发代码的特性,这无疑是它们能够被广泛采用的关键因素。
不同包管理器的许可证选择各异,每种编程语言的生态系统也有其许可偏好。例如,JavaScript 社区普遍使用 MIT 许可证,Python 开发者则偏爱 Apache 2.0。ISC 许可证因其简洁性和灵活性,在 JavaScript 社区中也颇受欢迎。BSD 许可证,包括 3-Clause 和 2-Clause 版本,尽管采用率稳定,但相对较低。另外,体现自由软件精神的通用公共许可证(GPL)虽然存在,但普及程度不及 MIT 和 Apache 2.0。
虽然已有许多成熟的许可证可供选择,ClearlyDefined 数据集却揭示了一个问题:许多开源组件未指定许可证,或标记为 SPDX “NOASSERTION”。这种不明确性带来了关于这些组件使用权限的不确定性,可能会妨碍合作,并给开发者带来法律和安全风险。
解决无许可证组件的问题对于维持开源社区的健康和持续发展至关重要。开发者、组织和整个社区都能从明确、标准化的许可中受益。这不仅有助于促进合作,还能确保法律合规,保护贡献者的知识产权。此外,它还帮助开发者追踪可能存在漏洞的组件。
无许可证组件问题是一个需要社区共同努力解决的挑战。为解决这一挑战,ClearlyDefined 项目邀请来自各组织的开发者共同创建全球软件组件许可元数据数据库。该项目通过一个简单的 API 提供每个组件的许可元数据,并让开发者贡献缺失或错误的信息,共建准确的数据库。查看详情!
在 JavaScript 的 npm 包管理器中,大多数组件采用 MIT 许可证(占比 53% ),其次是 Apache 2.0(14.76%)和 ISC(10.48%)。ISC 许可证由互联网系统联盟发布,在 JavaScript 项目中非常流行,但在其他编程语言中的使用相对较少。还有一小部分项目无许可证(8%)或是没有 SPDX 识别的许可证/无声明(5.49%)。
在 .NET的包管理器 Nuget 中,最引人注目的数据是有相当大比例的组件要么没有许可证(26.76%),要么被归类为无声明(31.95%)。这表明 .NET 生态系统中存在较高程度的许可不明确性。另一方面,使用 MIT 许可证的组件占比为21.55%,而采用 Apache 2.0 许可证的组件占比为13.37%。
在 Java 的包管理器 Maven 中,大多数组件采用 Apache 2.0 许可证(占比高达 69.18%)。而使用第二受欢迎的 MIT 许可证的组件仅占 7.4%。此外,无声明的组件所占比例为 14.75%,显示出一定程度的许可不确定性。
在 Python 的包管理器 Pypi 中, MIT 和 Apache 2.0 许可证的使用率分别为 29.14% 和 23.98%,显示它们在 Python 社区的广泛受欢迎。使用 BSD 2-Clause 和 GPL 3.0 许可证的组件分别占 6.25% 和 6.11%。值得注意的是,无许可证的组件比例相当高,达到 23.69%。
在 Ruby 的包管理器 Gem 中,大多数组件采用 MIT 许可证( 63.11%),显示出 Ruby 社区对 MIT 许可证的强烈偏好。其次是 Apache 2.0 和 BSD 3-Clause 许可证,分别占 8.22% 和 6.66% 。
在 PHP 的包管理器 Composer 中,MIT 许可证非常受欢迎,占据了 64.37% 的比例。此外,BSD 3-Clause 和 Apache 2.0 许可证的使用率分别为 5.72% 和 3.92% ,显示出这些许可证在 PHP 社区中也有一定的存在。
在 Go 语言中,Apache 2.0 和 MIT 许可证是最常用的许可证,分别占 32.49% 和 20.1%。值得注意的是,相当一部分 Go 组件没有指定许可证,比例高达 29.67%,这表明在 Go 生态系统中存在一定程度的许可不确定性。
在 Rust 的包管理器 Crate 中,使用 MIT 和/或 Apache 2.0 许可证的项目占主导地位,两者合计占了 83.52%。这表明 MIT 和 Apache 2.0 许可证在 Rust 社区中极为流行。
你工作中使用哪种编程语言?你是否熟悉文中提到的各种开源许可证?你是否注意过你使用的开源软件包是否有适当的许可证?