天天看點

常見開源協定介紹

世界上的開源許可證(Open Source License)大概有上百種,今天我們來介紹下集幾種我們常見的開源協定。大緻有GPL、BSD、MIT、Mozilla、Apache和LGPL等。

常見開源協定介紹

BSD

BSD是"Berkeley Software Distribution"的縮寫,意思是"伯克利軟體發行版"。

BSD開源協定:是一個給于使用者很大自由的協定。可以自由的使用,修改源代碼,也可以将修改後的代碼作為開源或者專有軟體再釋出。當你釋出使用了BSD協定的代碼,或則以BSD協定代碼為基礎做二次開發自己的産品時,需要滿足三個條件:

  • 如果再釋出的産品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協定。
  • 如果再釋出的隻是二進制類庫/軟體,則需要在類庫/軟體的文檔和版權聲明中包含原來代碼中的BSD協定。
  • 不可以用開源代碼的作者/機構名字和原來産品的名字做市場推廣。

BSD代碼鼓勵代碼共享,也允許使用或在BSD代碼上開發商業軟體釋出和銷售,是以很多的公司企業在選用開源産品的時候都首選BSD協定,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發。

Apache Licence

Apache Licence (Apache 許可證),是Apache軟體基金會釋出的一個自由軟體許可證,最初是為Apache http伺服器而撰寫。

該協定和BSD類似,同樣鼓勵代碼共享和最終原作者的著作權,同樣允許源代碼修改和再釋出。

Apache Licence也是對商業應用友好的許可,使用者可以在需要的時候修改代碼來滿足并作為開源或商業産品的釋出/銷售。

但是也需要遵循以下條件:

  • 需要給代碼的使用者一份Apache Licence。
  • 如果修改了代碼,需要在被修改的代碼中說明。
  • 在衍生的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協定,商标,專利聲明和其他原來作者規定需要包含的說明。
  • 如果再釋出的産品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache Licence。你可以再Notice中增加自己的許可,但是不可以表現為對Apache Licence構成更改。

如何引用Apache Licence 2.0條款

Copyright [yyyy] [name of copyright owner]
 
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.      

GPL

GPL(GUN General Public License): GUN 通用公共許可協定。

「Linux采用了GPL」

GPL協定和BSD, Apache Licence等鼓勵代碼重用的許可很不一樣。GPL的出發點是代碼的開源 / 免費使用和引用 / 修改 / 衍生代碼的開源 / 免費使用,但不允許修改後和衍生的代碼做為閉源的商業軟體釋出和銷售。這也就是為什麼我們能用免費的各種linux,包括商業公司的linux和linux上各種各樣的由個人,組織,以及商業軟體公司開發的免費軟體了。

LPGL

LGPL是GPL的一個為主要為類庫使用設計的開源協定。和GPL要求任何使用/修改/衍生之GPL類庫的的軟體必須采用GPL協定不同。LGPL允許商業軟體通過類庫引用(ink)方式使用LGPL類庫而不需要開源商業軟體的代碼。這使得采用LGPL協定的開源代碼可以被商業軟體作為類庫引用并釋出和銷售。

但是如果修改LGPL協定的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協定。是以LGPL協定的開源代碼很适合作為第三方類庫被商業軟體引用,但不适合希望以LGPL協定代碼為基礎。

商業軟體采用。

GPL/LGPL都保障原作者的知識産權,避免有人利用開源代碼複制并開發類似的産品。

MIT

MIT是和BSD一樣是寬範的許可協定,源自麻省理工學院(Massachusetts Institute of Technology,MiT) ,又稱×11協定。作者隻想保留版權,而無任何其他的限制。

使用者隻需在釋出的源代碼、二進制可執行檔案相關文檔中包含MIT許可協定聲明,便可自由的使用、修改源代碼、作為商業軟體再釋出、甚至使用開源機構名字做産品的市場推廣。

這個協定唯一的條件就是在修改後的代碼或者發行包包含原作者的許可資訊。适用商業軟體。使用MIT的軟體項目有:jquery、Node.js。

MPL(Mozilla Public License 1.1)

MPL協定允許免費重釋出、免費修改,但要求修改後的代碼版權歸軟體的發起者。這種授權維護了商業軟體的利益,它要求基于這種軟體的修改無償貢獻版權給該軟體。這樣,圍繞該軟體的所有代碼的版權都集中在發起開發人的手中。但MPL是允許修改,無償使用得。MPL軟體對連結沒有要求。

EPL(Eclipse Public License 1.0)

EPL允許Recipients任意使用、複制、分發、傳播、展示、修改以及改後閉源的二次商業釋出。

使用EPL協定,需要遵循以下規則:

  • 當一個Contributors将源碼的整體或部分再次開源釋出的時候,必須繼續遵循EPL開源協定來釋出,而不能改用其他協定釋出.除非你得到了原"源碼" Owner的授權;
  • EPL協定下,你可以将源碼不做任何修改來商業釋出。但如果你要釋出修改後的源碼,或者當你再釋出的是Object code的時候,你必須聲明它的Source Code是可以擷取的,而且要告知擷取方法;
  • 當你需要将EPL下的源碼作為一部分跟其他私有的源碼混和着成為一個Project釋出的時候,你可以将整個Project/Product以私人的協定釋出,但要聲明哪一部分代碼是EPL下的,而且聲明那部分代碼繼續遵循EPL;
  • 獨立的子產品(Separate Module),不需要開源。

小結

簡單的說,就是你使用了GPL許可證的軟體,那麼你的軟體産品就被GPL“傳染”了,也必須“自由”!這對國内的商業軟體開發商來說是很難接受的。

但是LGPL, Apache Licence, BSD就不存在這個問題,後兩者隻要求你對軟體原作者的工作進行必要的認可和尊重就行了,是以這是适合商業應用的。

是以在選擇應用開源軟體時,一定要明白自己的用途,選擇合适許可證下的軟體。