目錄
1、GNU通用公共許可證(GPL)
2、GNU寬松通用公共許可證(LGPL)
3、MIT許可證
4、Apache許可證2.0
5、BSD許可證
6、如何選擇合適的協議
在嵌入式系統開發中,開源軟件的使用已成為主流趨勢。從物聯網設備到汽車電子,開發者利用開源軟件來降低成本、加速開發并利用社區的集體智慧。然而,開源軟件的使用受到開源協議的約束,這些協議定義了軟件的使用、修改和分發規則。在嵌入式系統中,由于軟件與硬件的緊密集成以及專有代碼的廣泛使用,選擇合適的開源協議并確保合規性尤為重要。
開源協議是管理開源軟件的法律文件,符合 開源定義 的協議允許用戶自由使用、修改和分發軟件。根據限制程度,開源協議可分為兩類:
- 寬松型協議:如 MIT、Apache 2.0 和 BSD 許可證,允許用戶在幾乎無限制的情況下使用軟件,包括將其集成到專有軟件中,只需保留版權聲明。
- Copyleft 型協議:如 GPL 和 LGPL,要求衍生作品在相同協議下分發,確保軟件及其修改版本保持開源。
在嵌入式系統中,協議的選擇取決于項目需求。例如,基于 Linux 的系統可能需要遵守 GPL,而資源受限的實時操作系統(RTOS)可能更傾向于寬松型協議。
根據研究和行業實踐,以下是嵌入式系統中常用的五種開源協議:
- GNU 通用公共許可證(GPL):要求所有衍生作品開源,廣泛用于 Linux 內核和 BusyBox。
- GNU 寬松通用公共許可證(LGPL):允許與專有軟件動態鏈接,常見于 glibc 和 Qt 庫。
- MIT 許可證:寬松,適用于 FreeRTOS 等項目。
- Apache 許可證 2.0:寬松且包含專利授權,用于 Zephyr 和 Mbed OS。
- BSD 許可證:包括 2-clause 和 3-clause 版本,用于 RTEMS 和 lwIP。
1、GNU通用公共許可證(GPL)
GPL(包括 v2 和 v3 版本)是強 Copyleft 協議,要求任何使用 GPL 軟件的衍生作品必須在相同協議下分發,并提供完整源代碼。GPL v3 增加了防止“TiVo 化”的條款,要求用戶能夠修改和安裝軟件。
GPL 廣泛用于基于 Linux 的嵌入式系統,如 Linux 內核、U-Boot 和 BusyBox。這些組件是嵌入式 Linux 系統的核心。
合規要求:
- 提供完整源代碼,包括修改部分。
- 確保用戶能夠重新編譯和安裝修改后的軟件。
- 包含 GPL 許可證文本。
特斯拉在其汽車中使用 Linux 內核,需遵守 GPL v2,通過在其 官方網站 提供源代碼來滿足合規要求。在 GPL 項目中,源文件通常包含以下許可證聲明:
/* * Copyright (c) [Year] [Copyright Holder]* This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.*/
GPL v2 和 v3 在嵌入式系統中有不同影響。GPL v3 要求用戶能夠修改設備上的軟件,可能增加安全風險,因此許多項目(如 Linux 內核)仍使用 GPL v2。
2、GNU寬松通用公共許可證(LGPL)
LGPL(包括 v2.1 和 v3)是弱 Copyleft 協議,允許將庫與專有軟件動態鏈接,而不要求專有軟件開源。靜態鏈接則需提供庫的源代碼。
LGPL 常用于嵌入式系統中的庫,如 glibc(GNU C 庫)和部分 Qt 模塊。例如,Android 使用 LGPL 的 glibc 來支持用戶空間應用程序。
合規要求:
- 提供庫的源代碼。
- 允許用戶替換修改后的庫(通常通過動態鏈接實現)。
- 包含 LGPL 許可證文本。
在嵌入式 Linux 系統中,開發者可能使用 LGPL 的 glibc 庫來支持 C/C++ 應用程序,而無需將應用程序開源。LGPL 庫的頭文件可能包含以下聲明:
/** Copyright (c) [Year] [Copyright Holder]* This library is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 2.1 of the License, or (at your option) any later version.*/
動態鏈接是 LGPL 的關鍵優勢,但開發者需確保用戶能夠替換庫,這在資源受限的嵌入式設備中可能具有挑戰性。
3、MIT許可證
MIT 許可證是寬松型協議,僅要求保留版權聲明和許可證文本,允許幾乎無限制的使用、修改和分發。
MIT 許可證因其簡單性和靈活性在嵌入式系統中非常受歡迎,例如 FreeRTOS(自版本 10.0.0 起使用 MIT 許可證)。
合規要求:在分發的軟件中包含版權聲明和許可證文本。
FreeRTOS 是一個廣泛用于微控制器的實時操作系統,其 MIT 許可證允許開發者將其集成到專有產品中,而無需公開源代碼。
/** Copyright (c) [Year] [Copyright Holder]** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE* SOFTWARE.*/
4、Apache許可證2.0
Apache 2.0 是寬松型協議,允許自由使用、修改和分發,并提供明確的專利授權,降低專利訴訟風險。
適用于 Zephyr 和 Mbed OS 等嵌入式實時操作系統,這些系統常用于物聯網設備。
合規要求:
- 保留版權和許可證聲明。
- 提供修改部分的說明(NOTICE 文件)。
Zephyr 項目使用 Apache 2.0 許可證,允許開發者在專有產品中使用其代碼。
/** Copyright [Year] [Copyright Holder]** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
Apache 2.0 與 GPL v2 不兼容,但與 GPL v3 兼容,開發者需注意許可證組合。
5、BSD許可證
BSD 許可證有 2-clause 和 3-clause 版本,均為寬松型協議。3-clause 版本要求在廣告材料中提及版權。
用于 RTEMS(實時操作系統)和 lwIP(TCP/IP 協議棧)等項目。
合規要求:
- 保留版權和許可證聲明。
- 3-clause 版本需在廣告中提及。
lwIP 使用 BSD 許可證,適合嵌入式網絡應用。
/** Copyright (c) [Year] [Copyright Holder]* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:** 1. Redistributions of source code must retain the above copyright notice,* this list of conditions and the following disclaimer.* 2. Redistributions in binary form must reproduce the above copyright notice,* this list of conditions and the following disclaimer in the documentation* and/or other materials provided with the distribution.* 3. Neither the name of the copyright holder nor the names of its contributors* may be used to endorse or promote products derived from this software* without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE* POSSIBILITY OF SUCH DAMAGE.*/
6、如何選擇合適的協議
選擇開源協議時,開發者需考慮以下因素:
- 與專有軟件的集成:如果項目需要與專有代碼結合,寬松型協議(如 MIT、Apache、BSD)更合適。
- 強制開源:如果希望衍生作品保持開源,GPL 或 LGPL 是更好的選擇。
- 社區貢獻:寬松型協議可能吸引更多商業用戶,而 Copyleft 協議鼓勵社區共享改進。
- 法律風險:GPL 和 LGPL 有嚴格的合規要求,需確保資源支持源代碼分發。
以下是決策指南:
在嵌入式系統中,常用多種開源組件,需確保許可證兼容。例如,GPL v2 與 Apache 2.0 不兼容,但 GPL v3 兼容。開發者可參考 SPDX 許可證列表 檢查兼容性。
?在嵌入式系統中,開源協議的選擇和合規性直接影響項目的成功和法律風險。GPL 和 LGPL 在基于 Linux 的系統中占主導地位,而 MIT、Apache 2.0 和 BSD 許可證在 RTOS 和庫中更受歡迎。開發者應根據項目需求選擇協議,并通過工具和流程確保合規,以避免法律問題并支持開源社區的可持續發展。