各開源協議一覽

在 GitHub 上,開源項目通常會使用一些常見的開源協議來定義項目的使用、修改和分發規則。以下是目前 GitHub 上最常見的幾種開源協議及其差異和示例說明:


TL;DR

協議寬松程度是否強制開源專利保護適用場景
MIT最寬松希望代碼被廣泛使用
Apache 2.0寬松希望提供專利保護
GPL嚴格希望確保代碼始終開源
LGPL較寬松部分是希望代碼被更廣泛集成
BSD寬松希望代碼被廣泛使用且簡單
MPL 2.0中等部分是希望代碼部分開源但允許混合

協議詳解

1. MIT License

  • 特點
    • 非常寬松,幾乎沒有任何限制。
    • 允許用戶自由使用、復制、修改、合并、發布、分發、再授權甚至用于商業用途。
    • 唯一要求是保留原始版權聲明和許可聲明。
  • 適用場景
    • 適合希望代碼被廣泛使用的開發者。
    • 示例:Vue.js 使用了 MIT License 。
  • 差異
    • 相較于其他協議(如 GPL),MIT 不強制要求衍生作品也必須開源。

2. Apache License 2.0

  • 特點
    • 提供了明確的專利授權條款,保護用戶免受潛在的專利訴訟。
    • 允許用戶自由使用、修改和分發代碼,但需要保留版權聲明和許可證文件。
    • 明確限制商標使用,不允許用原作者的商標進行宣傳。
  • 適用場景
    • 適合希望保護知識產權并提供專利保障的項目。
    • 示例:Apache Kafka 使用了 Apache License 2.0 。
  • 差異
    • 比 MIT 更加詳細,特別是關于專利和商標的規定。

3. GNU General Public License (GPL)

  • 特點
    • 強制性開源,任何基于 GPL 代碼的衍生作品也必須以 GPL 協議發布。
    • 用戶可以自由使用、修改和分發代碼,但必須公開源碼。
  • 適用場景
    • 適合希望確保代碼始終開源的項目。
    • 示例:Linux Kernel 使用了 GPL 。
  • 差異
    • 相較于 MIT 和 Apache,GPL 對衍生作品有更強的約束力。

4. Lesser GNU General Public License (LGPL)

  • 特點
    • 是 GPL 的一個變種,允許將 LGPL 代碼作為庫鏈接到閉源項目中。
    • 衍生作品如果是獨立模塊,可以不公開源碼;但如果修改了 LGPL 庫本身,則必須公開修改后的代碼。
  • 適用場景
    • 適合希望代碼被更廣泛地集成到商業項目中的庫類項目。
    • 示例:GNU C Library (glibc) 使用了 LGPL 。
  • 差異
    • 比 GPL 更寬松,但仍要求對庫本身的修改保持開源。

5. BSD License

  • 特點
    • 類似于 MIT,非常寬松。
    • 分為兩種主要版本:2-Clause(簡化版)和 3-Clause(禁止用項目名稱做廣告)。
    • 要求保留版權聲明和許可證文件。
  • 適用場景
    • 適合希望代碼被廣泛使用且不介意閉源衍生作品的項目。
    • 示例:FreeBSD 使用了 BSD License 。
  • 差異
    • 相較于 MIT,3-Clause 版本增加了對廣告的限制。

6. Mozilla Public License 2.0 (MPL 2.0)

  • 特點
    • 是 BSD 系協議和 GPL 系協議的折中。
    • 要求對 MPL 覆蓋的代碼部分保持開源,但允許與閉源代碼混合。
    • 必須保留版權信息,并公開對覆蓋代碼的修改。
  • 適用場景
    • 適合希望代碼部分開源但允許與其他閉源代碼協作的項目。
    • 示例:Firefox 使用了 MPL 2.0 。
  • 差異
    • 比 GPL 更寬松,但比 MIT 和 BSD 更嚴格。

7. Creative Commons (CC)

  • 特點
    • 主要用于非代碼內容(如文檔、圖片、音樂等)。
    • 提供多種版本,包括 CC0(完全放棄版權)、CC BY(署名即可使用)等。
  • 適用場景
    • 適合非軟件項目或需要靈活授權的內容。
    • 示例:Wikipedia 的部分內容使用了 CC BY-SA 。
  • 差異
    • 不適用于傳統意義上的代碼項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76658.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

51c自動駕駛~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13793157 #匯聚感知、定位、規劃控制的自動駕駛系統 自動駕駛技術在應用到車輛上之后可以通過提高吞吐量來緩解道路擁堵,通過消除人為錯誤來提高道路安全性,并減輕駕駛員的駕駛負擔,從…

小程序開發指南

小程序開發指南 目錄 1. 小程序開發概述 1.1 什么是小程序1.2 小程序的優勢1.3 小程序的發展歷程 2. 開發準備工作 2.1 選擇開發平臺2.2 開發環境搭建2.3 開發模式選擇 3. 小程序開發流程 3.1 項目規劃3.2 界面設計3.3 代碼開發3.4 基本開發示例3.5 數據存儲3.6 網絡請求3.7 …

Day15:關于MySQL的編程技術——基礎知識

前言:先創建一個練習的數據庫和數據 1.創建數據庫并創建數據表的基本結構 -- 創建練習數據庫 CREATE DATABASE db_programming; USE db_programming;-- 創建員工表(包含各種數據類型) CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…

批處理腳本bat丨遍歷一個包含項目名稱的數組,并對每個文件中的項目執行 git pull 操作 (一鍵拉很多文件的代碼)

文章目錄 前言一、操作方式二、文件展示三、分析代碼結構四、代碼五、需要注意的潛在問題六、改進后的代碼七、改進說明八、感謝 前言 由于之前git服務部署在本地服務器,處于代碼安全角度考慮。領導讓我將所有的項目代碼手動物理備份一份并且發給他。 這種傻傻的操…

【C++】C與C++、C++內存空間、堆與棧

C嘎嘎嘎嘎嘎~ C與C的區別與聯系 C內存空間 int global_var; // 未初始化全局變量,BSS段 const char* str "Hello"; // 字符串常量text段 in數據段void func() {static int static_var; // 未初始化的靜態變量,數據段int local_var; …

舵機:機器人領域的“關節革命者”

機器人的技術,每一個細微的進步都可能引領一場行業變革。而在這場變革中,舵機作為機器人關節的核心部件,正悄然上演著一場革命性的應用風暴。從簡單的關節運動到復雜的姿態控制,舵機以其卓越的性能和無限的可能,重新定…

微前端的不斷探索之路—— qiankun 實戰與思考!

全文目錄: 開篇語📝 前言🛠? 微前端是什么?為什么需要它?💡 先從“前端痛點”說起🧐 微前端的優勢 🤹?♀? qiankun 簡介與核心概念🌟 為什么選擇 qiankun?…

拆解加密黑盒

在Web安全與數據爬取領域,JavaScript加密黑盒的逆向工程是核心技術之一。本文基于行業通用方法論與實戰案例,提煉出一套標準化的五步逆向流程,涵蓋目標定位、代碼提取、邏輯分析、算法復現到自動化集成的全鏈路解決方案,幫助開發者…

IntelliJ IDEA 中安裝和使用通義靈碼 AI 編程助手教程

隨著人工智能技術的發展,AI 編程助手逐漸成為提升開發效率的強大工具。通義靈碼是阿里云推出的一款 AI 編程助手,它能夠幫助開發者實現智能代碼補全、代碼解釋、生成單元測試等功能,極大地提升了編程效率和代碼質量。 IntelliJ IDEA 是一款廣…

Redis 特性和應用場景

1. Redis特性 1)In-memory data structures Redis 在內存中存儲數據,key 是 String, value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通過 “表” 的方式來存儲組織數據的 “關系型數據庫” Redis主要是通過 “鍵值對”…

每天五分鐘深度學習:非線性激活函數的導數

本文重點 本文探討了神經網絡中幾種常見非線性激活函數(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的導數特性。通過對各激活函數導數的數學推導與實際應用分析,揭示了不同激活函數在梯度傳播、收斂速度及模型表達能力方面的差異。研究發現,ReLU及其變體在計算效率與…

redis哨兵機制 和集群有什么區別:

主從: 包括一個master節點 和多個slave節點: master節點負責數據的讀寫,slave節點負責數據的讀取,master節點收到數據變更,會同步到slave節點 去實現數據的同步。通過這樣一個架構可以去實現redis的一個讀寫分離。提升…

關于讀完《毛澤東選集》的一些思考迭代

看完毛選前四卷,從革命初期一直講到抗戰勝利,共75.8W字,花費67個小時讀完。從1925年發表的“中國社會各階級的分析”,跨越100年,通過67個小時向主席學習到: 實事求是 從實踐中來再到實踐中去 用辯證與發展…

MySQL——MVCC(多版本并發控制)

目錄 1.MVCC多版本并發控制的一些基本概念 MVCC實現原理 記錄中的隱藏字段 undo log undo log 版本鏈 ReadView 數據訪問規則 具體實現邏輯 總結 1.MVCC多版本并發控制的一些基本概念 當前讀:該取的是記錄的最新版本,讀取時還要保證其他并發事務…

【Linux篇】深入理解文件系統:從基礎概念到 ext2 文件系統的應用與解析

文件系統的魔法:讓計算機理解并存儲你的數據 一. 文件系統1.1 塊1.2 分區1.3 inode(索引節點) 二. ext2文件系統2.1 認識文件系統2.2 Block Group (塊組)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 塊組內部結構2.3.1 超級塊(Super Bloc…

3 VS Code 配置優化與實用插件推薦:settings.json 詳解、CodeGeeX 智能編程助手及插件離線安裝方法

1 優化 settings.json 文件 1.1 settings.json 簡介 settings.json 是 VS Code 的核心配置文件,用于存儲用戶的個性化設置和偏好。通過該文件,用戶可以自定義和覆蓋 VS Code 的默認行為,包括但不限于以下方面: 編輯器外觀&#…

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識 1. 引言 在微服務架構中,分布式事務處理是一個復雜且常見的問題。隨著業務規模的擴大,單體應用逐漸拆分為多個微服務,每個服務…

力扣面試150題--有效的數獨

Day 19 題目描述 思路 其實還挺簡單的&#xff0c;主要的難點在于如何判斷每個小數獨是否滿足要求 詳細見代碼 class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set new HashSet<>();//處理行HashSet<Character> set1…

達夢數據庫-學習-15-大內存SQL相關視圖介紹

目錄 一、環境信息 二、介紹 三、數據字典表 1、V$MEM_POOL 2、V$SQL_STAT 3、V$SQL_STAT_HISTORY 4、V$LARGE_MEM_SQLS 5、V$SYSTEM_LARGE_MEM_SQLS 四、總結 一、環境信息 名稱值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系統CentOS Linux release 7.9.2009 (Co…

從0到1使用C++操作MSXML

1. 引言 MSXML&#xff08;Microsoft XML Core Services&#xff09;是微軟提供的一套用于處理XML的COM組件庫&#xff0c;廣泛應用于Windows平臺的XML解析、驗證、轉換等操作。本文將詳細介紹如何從零開始&#xff0c;在C中使用MSXML解析和操作XML文件&#xff0c;包含完整的…