開源軟件的許可(License)

  • 自由軟件基金會(Free Software Foundation):FSF

0. GNU

GNU (GNU is Not Unix 的遞歸縮寫)計劃,又稱革奴計劃,是由 Richard Stallman 在 1983 年 9 月 27 日公開發起的。它的目標是建立一套徹底自由的操做系統。Richard Stallman 最先是在 net.unix-wizards 新聞組上公佈該消息,並附帶《GNU 宣言》等解釋爲什麼發起該計劃的文章,其中一個理由就是要「重現當年軟件界合做互助的團結精神」。程序員

爲保證 GNU 軟件能夠自由地「使用、複製、修改和發佈」,全部 GNU 軟件都有一份在禁止其餘人添加任何限制的狀況下受權全部權利給任何人的協議條款,GNU 通用公共許可證(GNU General Public License,GPL)。即「反版權」(或稱 Copyleft)概念。編程

1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來爲 GNU 計劃提供技術、法律以及財政支持。儘管 GNU 計劃大部分時候是由我的自願無償貢獻,但 FSF 有時仍是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸得到成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是以後被 Red Hat 兼併的 Cygnus Solutions。網絡

  • 到了 1990 年,GNU 計劃已經開發出的軟件包括了一個功能強大的文字編輯器 Emacs 。
  • GCC(GNU Compiler Collection,GNU編譯器集合),是一套由 GNU 開發的編程語言編譯器。以及大部分UNIX系統的程序庫和工具。惟一依然沒有完成的重要組件就是操做系統的內核(稱爲HURD)。

1991年 Linus Torvalds 編寫出了與 UNIX 兼容的 Linux 操做系統內核並在 GPL 條款下發布。Linux以後在網上普遍流傳,許多程序員參與了開發與修改。1992 年 Linux 與其餘 GNU 軟件結合,徹底自由的操做系統正式誕生。該操做系統每每被稱爲「GNU/Linux」或簡稱 Linux。(儘管如此 GNU 計劃本身的內核 Hurd 依然在開發中,已經發布 Beta 版本。)編程語言

GNU 包含3個協議條款,編輯器

  • GPL:GNU通用公共許可證(GNU General Public License)
  • LGPL:GNU較寬鬆公共許可證 (GNU Lesser General Public License), ) ,舊稱 GNU Library General Public License (GNU 庫通用公共許可證);
  • GFDL : GNU 自由文檔許可證(GNU Free Documentation License )的縮寫形式。

1. 所謂自由

這裏指的自由,並非價格免費,這和價格無關而是使用軟件對全部的用戶來講是自由的。GPL 經過以下途徑實現這一目標:函數

  • 一、 它要求軟件以源代碼的形式發佈,並規定任何用戶可以以源代碼的形式將軟件複製或發佈給別的用戶。
  • 二、若是用戶的軟件使用了受 GPL 保護的任何軟件的一部分,那麼該軟件就繼承了 GPL 軟件,並所以而成爲 GPL 軟件,也就是說必須隨應用程序一塊兒發佈源代碼。
  • 三、GPL 並不排斥對自由軟件進行商業性質的包裝和發行,也不限制在自由軟件的基礎上打包發行其餘非自由軟件。
    因爲 GPL 很難被商業軟件所應用,它要求調用它的庫的代碼也得 GPL,所有開放,而且一同發佈,不能直接鏈接。因此後來 GNU 推出了 LGPL 許可證
    在 GPL 與 LGPL 許可證保護下發布源代碼的結果很類似,對舊代碼所作的任何修改對於想知道這些代碼的人必須是公開的,惟一真正的不一樣之處在於私人版權代碼是否能夠與開放源代碼相互鏈接,LGPL 容許實體鏈接私人代碼到開放源代碼,並能夠在任何形式下發布這些合成的二進制代碼。只要這些代碼是動態鏈接的就沒有限制。(使用動態連接時,即便是程序在運行中調用函數庫中的函數時,應用程序自己和函數庫也是不一樣的實體)

2. 如何商用?

GPL 只是規定用戶在獲取你的程序的時候必須能夠得到源代碼,但並無規定必須免費GPL 能夠免費,也能夠收費),所以理論上說,你仍然能夠收取費用。不過,因爲 GPL 規定你不得阻止用戶再分發,所以用戶徹底能夠從你這裏買來代碼以後再免費送給全部其它人,所以對於 GPL 代碼想要收費發佈難度是很大的,目前比較可行的辦法是像 Redhat 那樣,經過提供訂閱和服務的方式來收費,提供一些額外的增值服務吸引用戶交費。工具

固然,若是你的程序只是本身內部使用,並無分發給用戶的話,那就不存在必須開源的問題了。程序的生成物是不被看做程序的一部分的,所以你使用一個開源的庫搭建了一個網站,若是僅僅將生成物,也就是生成的 HTML 頁面,展現給用戶,而不出售網站自己的代碼的話,是不須要開源的。網站

若是你的確須要發佈你的程序,但又不想開源,規避 GPL 的方法是經過 LPC 或者 RPC 間接調用庫裏的接口。只要庫和你的程序不運行在同一進程下,就不須要開源。操作系統

另外,你須要區分 GPL 和 LGPL。LGPL 的要求比 GPL 低,你能夠動態連接一個 LGPL 的庫而不須要開源你本身的程序,而 GPL 是不行的。 開放源代碼

3. GPL 與 AGPL

GPL,是 General Public License 的縮寫,是一份 GNU 通用公共受權非正式的中文翻譯。它並不是由自由軟件基金會所發表,亦非使用GNU通用公共受權的軟件的法定發佈條款─直有GNU通用公共受權英文原文的版本始具備此等效力。

AGPL(The GNU Affero General Public License),AGPL是GPL的一個補充, 在GPL的基礎上加了一些限制。原有的GPL協議,因爲如今網絡服務公司興起(如:Google)產生了必定的漏洞,好比使用GPL的自由軟件,可是並不發佈與網絡之中,則能夠自由的使用GPL協議卻不開源本身私有的解決方案。AGPL則增長了對此作法的約束。

相關文章
相關標籤/搜索