文章分析了 2023 年最受歡迎的開源許可證。資料顯示,MIT 和 Apache 2.0 許可證在不同的程式設計語言和包管理器中最為普遍。盡管已有許多成熟的許可證,但許多開源元件缺乏指定的許可證,帶來法律複雜性和安全問題。文章強調了清晰和标準化許可證對開源社群健康的重要性。
原文連結:https://blog.opensource.org/the-most-popular-licenses-for-each-language-2023/
未經允許,禁止轉載!
作者 | Nick Vidal 譯者 | 明明如月
責編 | 夏萌出品 | CSDN(ID:CSDNnews)
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) 的許可證使用情況
在 JavaScript 的 npm 包管理器中,大多數元件采用 MIT 許可證(占比 53% ),其次是 Apache 2.0(14.76%)和 ISC(10.48%)。ISC 許可證由網際網路系統聯盟釋出,在 JavaScript 項目中非常流行,但在其他程式設計語言中的使用相對較少。還有一小部分項目無許可證(8%)或是沒有 SPDX 識别的許可證/無聲明(5.49%)。
.NET (Nuget) 的許可證使用情況
在 .NET的包管理器 Nuget 中,最引人注目的資料是有相當大比例的元件要麼沒有許可證(26.76%),要麼被歸類為無聲明(31.95%)。這表明 .NET 生态系統中存在較高程度的許可不明确性。另一方面,使用 MIT 許可證的元件占比為21.55%,而采用 Apache 2.0 許可證的元件占比為13.37%。
Java (Maven) 的許可證使用情況
在 Java 的包管理器 Maven 中,大多數元件采用 Apache 2.0 許可證(占比高達 69.18%)。而使用第二受歡迎的 MIT 許可證的元件僅占 7.4%。此外,無聲明的元件所占比例為 14.75%,顯示出一定程度的許可不确定性。
Python (Pypi) 的許可證使用情況
在 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) 的許可證使用情況
在 Ruby 的包管理器 Gem 中,大多數元件采用 MIT 許可證( 63.11%),顯示出 Ruby 社群對 MIT 許可證的強烈偏好。其次是 Apache 2.0 和 BSD 3-Clause 許可證,分别占 8.22% 和 6.66% 。
PHP (Composer) 的許可證使用情況
在 PHP 的包管理器 Composer 中,MIT 許可證非常受歡迎,占據了 64.37% 的比例。此外,BSD 3-Clause 和 Apache 2.0 許可證的使用率分别為 5.72% 和 3.92% ,顯示出這些許可證在 PHP 社群中也有一定的存在。
Go 的許可證使用情況
在 Go 語言中,Apache 2.0 和 MIT 許可證是最常用的許可證,分别占 32.49% 和 20.1%。值得注意的是,相當一部分 Go 元件沒有指定許可證,比例高達 29.67%,這表明在 Go 生态系統中存在一定程度的許可不确定性。
Rust (Crate) 的許可證使用情況
在 Rust 的包管理器 Crate 中,使用 MIT 和/或 Apache 2.0 許可證的項目占主導地位,兩者合計占了 83.52%。這表明 MIT 和 Apache 2.0 許可證在 Rust 社群中極為流行。
你工作中使用哪種程式設計語言?你是否熟悉文中提到的各種開源許可證?你是否注意過你使用的開源軟體包是否有适當的許可證?