常用开源协议介绍以及开源软件规范列表
生活随笔
收集整理的這篇文章主要介紹了
常用开源协议介绍以及开源软件规范列表
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 開源協(xié)議介紹
GPL:General Public License,開源項目最常用的許可證,衍生代碼的分發(fā)需開源并且也要遵守此協(xié)議。該協(xié)議也有很多變種,不同變種要求會略微不同。MPL:MPL協(xié)議允許免費重發(fā)布、免費修改,但要求修改后的代碼版權(quán)歸軟件的發(fā)起者,這種授權(quán)維護了商業(yè)軟件的利益,它要求基于這種軟件的修改無償貢獻版權(quán)給該軟件。LGPL:Lesser General Public Licence,是GPL的一個為主要為類庫使用設(shè)計的開源協(xié)議。LGPL允許商業(yè)軟件通過類庫引用的方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。Apache:Apache協(xié)議是Apache軟件基金會發(fā)布的一個自由軟件許可證,Apache 2.0協(xié)議除了為用戶提供版權(quán)許可之外,還有專利許可,非常適合涉及專利內(nèi)容的項目。BSD:BSD(Berkeley Software Distribution,伯克利軟件發(fā)行版)。BSD協(xié)議在軟件分發(fā)方面,除需要包含一份版權(quán)提示和免責(zé)聲明之外,沒有任何限制,該協(xié)議還禁止用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣。MIT: 協(xié)議的主要內(nèi)容為:該軟件及其相關(guān)文檔對所有人免費,可以任意處置,包括使用,復(fù)制,修改,合并,發(fā)表,分發(fā),再授權(quán),或者銷售。唯一的限制是,軟件中必須包含上述版權(quán)和許可提示。MIT協(xié)議是所有開源許可中最寬松的一個,除了必須包含許可聲明外,再無任何限制。
那具體如何選擇適合自己的開源協(xié)議呢?你可以參考烏克蘭程序員 Paul Bagwell 畫的這張圖:
2. 開源規(guī)范詳細(xì)列表
項目結(jié)構(gòu):一個開源項目應(yīng)該有一個合理、專業(yè)的、符合語言特色的項目結(jié)構(gòu)。嚴(yán)格遵循代碼規(guī)范:開源的代碼,面向的人群是所有的開發(fā)者,一個不規(guī)范的代碼,可讀性差,不利于其他開發(fā)者閱讀和貢獻代碼。代碼質(zhì)量:開源的代碼,一定要保證代碼的質(zhì)量,一個低質(zhì)量的代碼,不僅隱藏了很多性能和功能缺陷,而且還會影響開源項目的品牌,進而影響開源效果。單元測試覆蓋率:一個開源的Go項目,要保證整個項目的單元測試覆蓋率,這樣一方面可以保證代碼的質(zhì)量,另一方面可以使開源項目更專業(yè),也能讓你更加安心的發(fā)布版本。版本發(fā)布規(guī)范:開源項目要遵循既定的版本規(guī)范,整個項目的更新迭代,要有版本號,目前用的比較多的是語義化的版本規(guī)范。向下兼容:代碼要做到向下兼容,這樣可以盡可能減少發(fā)布變更的影響,遵循語義化的版本規(guī)范,可以在一定程度上保證代碼的向下兼容能力。詳細(xì)的文檔說明:要保證代碼能夠被其他開發(fā)者很容易的閱讀和貢獻代碼,所以不僅要保證文檔的質(zhì)量和數(shù)量,還要確保有某些需要的文檔:LICENSE(如果是開源項目,LICENSE是必選的):軟件協(xié)議,聲明該開源項目遵循什么軟件協(xié)議。README.md:README文件,放在項目的根目錄下,包含項目的描述、依賴項、安裝方法、使用方法、貢獻方法、作者和遵循的軟件協(xié)議等。CHANGELOG:目錄,用來存放版本的變更歷史,方便其他開發(fā)者了解新版本或舊版本的變更內(nèi)容。Makefile:對于一個復(fù)雜的項目,通常也會包含一個Makefile文件,用來對項目進行構(gòu)建、測試、安裝等操作。CONTRIBUTING:用來說明如何給本項目貢獻代碼,包含貢獻流程和流程中每個環(huán)節(jié)的詳細(xì)操作。docs:目錄,用來存放本項目所有文檔,例如:安裝文檔、使用文檔、開發(fā)文檔等。一些重要的文檔,可以鏈接到項目根目錄的README文檔中。這些文檔要確保開發(fā)者能夠輕松的理解、部署和使用該項目。examples:存放一些示例代碼。安全:開源的代碼,要保證整個代碼庫和提交記錄中,不能出現(xiàn)類似內(nèi)部 IP、內(nèi)部域名、密碼、密鑰這類信息。完善的 examples:完善的 examples,可以幫助用戶快速學(xué)習(xí)和使用開源項目。好的 Commit Message 記錄:開源項目在commit時,要遵循一定的規(guī)范,這樣其他開發(fā)者才能夠快速瀏覽和理解變更歷史,減小學(xué)習(xí)成本,本項目遵循Angular commit message規(guī)范。發(fā)布可用的版本:要確保每一次發(fā)布都經(jīng)過充分的測試,每一個發(fā)布的版本都是可用的。持續(xù)的更新:一個好的開源項目,應(yīng)該能夠持續(xù)的更新功能,修復(fù)Bug。對于一些已經(jīng)結(jié)項、不維護的開源項目,需要及時的對項目進行歸檔,并在項目描述中加以說明。及時的處理 pull request、issue、評論等:當(dāng)項目被別的開發(fā)者提交pull request、issue、評論時,要及時的處理,一方面可以確保項目不斷被更新,另一方面也可以激發(fā)其他開發(fā)者貢獻代碼的積極性。建立討論小組:如果條件允許,最好和貢獻者建立討論小組,每周或每月組織討論,共同維護。做好推廣:如果有條件,可以宣傳運營開源項目,讓更多的人知道,更多的人用,更多的人貢獻代碼。例如:在掘金、簡書等平臺發(fā)表文章,創(chuàng)建 QQ、微信交流群等。Git 工作流:選擇合適的Git工作流,并遵循Git工作流使用規(guī)范,例如Gitflow工作流。
參考:
https://time.geekbang.org/column/article/380033
總結(jié)
以上是生活随笔為你收集整理的常用开源协议介绍以及开源软件规范列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国节能建材行业深度
- 下一篇: 吸水间最低动水位标高_水库水位库容监测系