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。網絡
1991年 Linus Torvalds 編寫出了與 UNIX 兼容的 Linux 操做系統內核並在 GPL 條款下發布。Linux以後在網上普遍流傳,許多程序員參與了開發與修改。1992 年 Linux 與其餘 GNU 軟件結合,徹底自由的操做系統正式誕生。該操做系統每每被稱爲「GNU/Linux」或簡稱 Linux。(儘管如此 GNU 計劃本身的內核 Hurd 依然在開發中,已經發布 Beta 版本。)編程語言
GNU 包含3個協議條款,編輯器
這裏指的自由,並非價格免費,這和價格無關而是使用軟件對全部的用戶來講是自由的。GPL 經過以下途徑實現這一目標:函數
GPL 只是規定用戶在獲取你的程序的時候必須能夠得到源代碼,但並無規定必須免費(GPL 能夠免費,也能夠收費),所以理論上說,你仍然能夠收取費用。不過,因爲 GPL 規定你不得阻止用戶再分發,所以用戶徹底能夠從你這裏買來代碼以後再免費送給全部其它人,所以對於 GPL 代碼想要收費發佈難度是很大的,目前比較可行的辦法是像 Redhat 那樣,經過提供訂閱和服務的方式來收費,提供一些額外的增值服務吸引用戶交費。工具
固然,若是你的程序只是本身內部使用,並無分發給用戶的話,那就不存在必須開源的問題了。程序的生成物是不被看做程序的一部分的,所以你使用一個開源的庫搭建了一個網站,若是僅僅將生成物,也就是生成的 HTML 頁面,展現給用戶,而不出售網站自己的代碼的話,是不須要開源的。網站
若是你的確須要發佈你的程序,但又不想開源,規避 GPL 的方法是經過 LPC 或者 RPC 間接調用庫裏的接口。只要庫和你的程序不運行在同一進程下,就不須要開源。操作系統
另外,你須要區分 GPL 和 LGPL。LGPL 的要求比 GPL 低,你能夠動態連接一個 LGPL 的庫而不須要開源你本身的程序,而 GPL 是不行的。 開放源代碼
GPL,是 General Public License 的縮寫,是一份 GNU 通用公共受權非正式的中文翻譯。它並不是由自由軟件基金會所發表,亦非使用GNU通用公共受權的軟件的法定發佈條款─直有GNU通用公共受權英文原文的版本始具備此等效力。
AGPL(The GNU Affero General Public License),AGPL是GPL的一個補充, 在GPL的基礎上加了一些限制。原有的GPL協議,因爲如今網絡服務公司興起(如:Google)產生了必定的漏洞,好比使用GPL的自由軟件,可是並不發佈與網絡之中,則能夠自由的使用GPL協議卻不開源本身私有的解決方案。AGPL則增長了對此作法的約束。