艾瑞
艾瑞
新闻资讯
中心动态 学习技巧
2023年各编程语言中最流行的许可证
2024-01-02

OSI 所属的 Voices of Open Source 发布了一篇 “2023 年每种语言中最流行的许可证” 的文章,揭示了每种编程语言生态系统中的许可偏好,并强调了清晰和标准化许可证对开发人员、组织和整个开源社区健康的重要性。


文章指出,MIT 和 Apache 2.0 许可证在不同的编程语言和包管理器中最为普遍。JavaScript 社区通常倾向于使用 MIT 许可证,Python 开发人员则偏爱 Apache 2.0。ISC 许可证以其简单性和宽容性在 JavaScript 社区中颇受欢迎。BSD 许可证(包括 3-Clause 和 2-Clause)保持稳定但相对较低的采用率。GPL 也有一定的影响力,但落后于 MIT 和 Apache 2.0。

Javascript (npm)

JavaScript 的 npm 软件包管理器中,大多数组件采用的是 MIT 许可(53%),其次是 Apache 2.0(14.76%)和 ISC(10.48%)。ISC 许可证由 Internet Systems Consortium 发布,虽然在 JavaScript 项目中很流行,但在其他编程语言中使用得并不多。小部分项目没有许可证(8%)或或是没有 SPDX 识别的许可证 / 无声明(5.49%)。

1.png


.NET (Nuget)

而在 .NET 的包管理器 Nuget 中,最令人担忧的点在于,它的大部分组件要么没有许可证(26.76%),要么被认定为 "NOASSERTION"(31.95%)。使用 MIT 或 Apache 2.0 许可的比例分别为 21.55% 和 13.37%。

2.png

Java (Maven)

Maven (Java 的包管理器) 中的绝大多数组件都使用 Apache 2.0 许可证(69.18%),使用 MIT 的组件仅占 7.4%。此外,被归类于 NOASSERTION 的组件占比为 14.75%。

3.png

Python (Pypi)

在 Python 的包管理器 Pypi 中,MIT 和 Apache 2.0 许可下的组件占主导地位,分别为 29.14% 和 23.98%。BSD 2-Clause 和 GPL 3.0 下的组件分别占 6.25% 和 6.11%,还有相当一部分组件没有许可(23.69%)。

4.png

Ruby(Gem)

Gem(Ruby 的包管理器)中绝大多数组件都使用 MIT 许可证 (63.11%)。其次是 Apache 2.0 和 BSD 3-Clause 许可证,分别占 8.22% 和 6.66%。

5.png

PHP(Composer)

在 PHP 的包管理器 Composer 中,MIT 许可证非常受欢迎,占 64.37%。BSD 3-Clause 和 Apache 2.0 下的项目分别占 5.72% 和 3.92%。

6.png

Go

Apache 2.0 和 MIT 许可证在 Go 中占主导地位,分别为 32.49% 和 20.1%。很大一部分 Go 组件没有许可证(29.67%)。

7.png

Rust(Crate)

对于 crate(Rust 包管理器),使用 MIT 和 / 或 Apache 2.0 的项目占主导地位,合计占比 83.52%。

8.png


总的来说,虽然市场上已经存在一些成熟的许可证供选择,但仍有许多开源组件未指定许可证或标记为 SPDX “NOASSERTION”。文章指出, 这种模糊性致使此类组件的使用也存在很多不确定性,可能会阻碍协作、并给开发者造成法律和安全风险。


解决无许可证组件的问题对于开源社区的持续健康发展至关重要。开发人员、组织和整个社区都受益于清晰和标准化的许可。它不仅促进协作,还确保法律合规性并保护贡献者的知识产权。此外,它还可以帮助开发人员跟踪可能存在漏洞的组件。