1. 程式人生 > >關於GPL協議的理解(開源與商用、免費與收費的理解)

關於GPL協議的理解(開源與商用、免費與收費的理解)

如果你用了我的 GPL軟體,那麼你的軟體也必須要開源,否則就不能使用我的軟體,你是否把你的軟體商用和我沒關係 Oracle 賣的不是軟體的版權,而是技術服務 MySQL作為一個開源資料庫,幾乎所有的使用者都只是通過自己的程式去操作這個資料庫,不涉及到改動原始碼的問題,根本不用去考慮是否要遵循 GPL的問題。 只有在你修改MySQL原始碼的情況下,才需要考慮GPL
導讀:

網路上多數朋友擔心甲骨文會對MySQL軟體採用收費模式,多數朋友也不清楚MySQL開源到底是什麼模式,開源=免費嘛?是很多的疑 問,MySQL是遵守雙重協議的,一個是GPL授權協議,一個是商用授權協議(註釋:為解決其他企業用MySQL軟體牟利或引用了MySQL的原始碼而不 想開源),雖然www.mysqlops.com也有寫關於MySQL版權的來龍去脈,但是這篇文章寫更透徹與詳盡,特轉載ITPUB上的帖子,希望大家 能夠更加清晰!

最近剛把MySQL和GPL的玩法搞明白,很是慚愧,居然花了這麼久的時間才想通。不過聊以自慰的是,搞明白這個玩法的人真是不多,儘管有些人已經搞了很多年。

看過GPL協議的人應該都會覺得一頭霧水,究竟GPL在講些什麼。我看過好幾遍,英文的原版、中文的各種譯文,都沒能真正理解,後來是從軟體行業的 歷史等等方面綜合考慮,才算是理解了。先總結一下我對GPL的理解,我認為GPL的精髓就是開源,和是否商用,是否收費完全沒有關係。 GPL(General Public License)
, 其實從字面上就可以理解為公共許可證,也就是說遵循GPL的軟體是公共的,其實不存在什麼版權問題,或者說公眾都有版權,GPL提出了和版權 (copyright)完全相反的概念(copyleft)。而我經常聽到的說法是如果你的程式或系統引用了別的GPL軟體,並且向用戶收費,那麼你就需 要向引用的GPL軟體購買版權。聽上去很合理,如果你用我的軟體賺錢,那你當然應該向我支付一定的費用。但其實是錯誤的,正確的概念是 如果你用了我的 GPL軟體,那麼必須你的軟體也要開源,如果你不開源,那麼就不能使用我的軟體,你是否把你的軟體商用和我沒關係,如果你不能遵循GPL協議來開源,那麼你付再多的錢也不能用GPL的軟體
, 事實上很多GPL軟體是很多人共同完成的,每個人在前人的基礎上做出自己的貢獻,如果收費的話你把錢交給誰?提出 GPL協議的GNU希望做到的是通過開源來使軟體行業得到一個好的發展,試想如果你要做一個大型的軟體,不在前人的原始碼基礎上開發,那必然會是曠日持久 的,也會有很多重複勞動,顯然不利於軟體技術的發展。所以理解了GNU的精神,也就能理解GPL在說些什麼,其實就是開源。在現實生活中,我們受益於 GPL的地方,其實很多,幾乎所有的作業系統,除了windows,其他的幾乎都是基於linux開原始碼改寫的。

再來談MySQL,這是個開源的資料庫,做技術的應該都知道。MySQL最早是瑞典的一家叫做MySQL AB的公司開發的,它是以雙授權的方式來發布MySQL。一種授權就是GPL,另一種授權就是商業授權。也就是如果你不能滿足GPL,那麼就走商業授權的 路線,向這個公司交錢。我覺得這公司有掛羊頭賣狗肉之嫌,想借著GPL快速傳播它的軟體,但又留著商業授權這個收費的口。後來這家公司以10億美金的價格 被Sun收購,接著Sun又被Oracle收購,MySQL成為了Oracle的東西。現在Oracle把MySQL分為三種產品,標準版、企業版和叢集 版。不談其中具體的差異,但都是以年度訂閱(subscription)的方式來賣的。這個subscription引起了我的疑問,如果使用者購買了一 年,那麼第二年使用者還要繼續付費才能合法使用?這三種版本都包含了一年的服務,那麼如果第二年使用者只需要用軟體而不需要服務,怎麼辦?Oracle官方沒 有一個說得過去的說法。後來我想通了, 其實Oracle賣的不是軟體的版權,也不是寂寞,而是技術服務。
所 有的GPL開源軟體都不能賣版權,因為是公共版 權,當然不能賣了。所以像redhat這類的開源軟體都是用subscription的方式來賺錢的。賺錢其實是合法的,GPL協議裡面寫了“Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish)我們的GNU通用公共許可證決意保證你有釋出自由軟體的自由(如果你願意,你可以對此項服務收取一定的費用)”。但現在大眾的誤區是覺得購買的 是軟體產品的版權而不是服務。其實你要用GPL軟體在絕大部分情況下都是合法的,不存在版權問題,那麼在什麼情況下才算是非法的呢?

前文一直提到“用”GPL軟體的情況,這個“用”可能並不合適,GPL的原文“the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program保證你的共享和修改自由軟體的自由”。可以理解為你使用開源軟體並不受GPL約束,只有在你基於開源軟體,修改開源軟體的原始碼的時候才受 GPL約束。 MySQL作為一個開源資料庫,幾乎所有的使用者都只是通過自己的程式去操作這個資料庫,不涉及到改動原始碼的問題,根本不用去考慮是否要遵循 GPL的問題。只有在你修改MySQL原始碼的情況下,才需要考慮GPL。

如果我根據MySQL的原始碼開發出了一個新的資料庫,我覺得自己開發的原始碼非常的優秀,想靠這個賣錢,不想公開原始碼。那麼這種情況就無法滿足GPL 的規定,我沒法釋出我的資料庫。好在MySQL有個非常流氓的雙授權,我就可以購買其商業授權來達到我的目的。為什麼說這是流氓行為?因為既然MySQL 是根據GPL開源釋出,多多少少有各路人馬貢獻自己的原始碼才成為今天的MySQL,賣別人的勞動成果來讓自己受益,這就是流氓的做法。

所以 GPL就是一個為了保護軟體自由的一個協議,它強調的是開源,與錢無關。MySQL是一個雙授權的軟體,Oracle現在賣的是年度的服務(編者加註:另外主要收入來源是 銷售資料庫維護工具), 如果你只是使用MySQL而不是改寫MySQL,那麼在這些情況下你應該考慮購買Oracle的商業版本,一是Oracle的商用版本提供的附加元件(監 控器、備份工具等)對你有價值,二是Oracle的年度技術支援是你需要的,三是各種潛規則。而不應該是你想合法的使用MySQL才去購買其商業版本。另 外,如果你是基於MySQL的原始碼開發你自己的產品,那麼你需要購買的是商業授權,而不是subscription這些商業版本。

前面正兒八經的分析了GPL和MySQL的問題,接下來要玩粗的了。狗日的Oracle原廠的人老是說用了MySQL而不開源就應該向Oracle 購買 MySQL商業版本。他媽的搞了這麼多年MySQL還沒搞明白這個問題?這種說法根本不合邏輯也沒法操作,我的系統可以定義一個子系統叫做資料庫連線,裡 面的程式碼就是連線資料庫,我把這子系統公開原始碼就符合你的邏輯了吧,這麼不嚴謹的說法漏洞太多了,還他媽叫著要告誰誰的,你告告試試,看看出醜的是誰。可 能有人覺得他們其實是明白的,只是在欺騙客戶來牟利。不過真別高估了這幫人,他們真沒搞明白也是完全有可能的。別老覺得redhat做的多成功,賣的多 好,MySQL一定也能像redhat一樣賣的好。redhat怎麼做的我沒仔細研究過。不過肯定存在兩種可能,一是redhat提供了客戶需要的技術服 務,二是客戶也是被欺騙的。如果是第一種情況,那麼說明redhat原廠做的好,不管是自己原廠的技術服務還是代理的技術服務,肯定是有一套很不錯的服務 體制,MySQL有嗎?如果是第二種情況,客戶總有一天會變聰明,被redhat騙了一次還會被MySQL再騙一次嗎?其實是可能的,比如各種運營商、政 府部門等等機構。