文章來源于愛可生開源社區,作者陳書俊
隨著開源事業的快速發展,MySQL 在全球已擁有大規模的貢獻者和愛好者,這為使用MySQL帶來了許多額外的長期優勢。對MySQL的使用,應遵循該軟件提供的使用授權許可,而解讀冗長的授權協議并非易事 。今天愛可生用七個問答,帶大家一起了解如何正確理解MySQL的授權協議。
第一問:Oracle 為什么可以對 MySQL 采用雙許可證模式(GPLv2 開源許可證和商業許可證)發布?
在 MySQL 中引用的第三方源代碼,全部都基于不具備許可證傳染性的寬松開源許可證發布,或者基于雙許可證發布,Oracle 在其開源版 MySQL 中對此類雙許可證的第三方代碼 選擇使用 GPLv2 許可證,在閉源的商業版 MySQL 中對此類雙許可證的第三方代碼選擇使 用更為寬松的許可證。
例如 MySQL 在引用 Memcached.pm 的源代碼時有如下聲明(Artistic license 就是更為寬松且沒有傳染性的開源許可證,允許修改或引用其源代碼后不開源):
基于以上事實,再加上當第三方向 Oracle MySQL 貢獻源代碼時,都必須簽署 Oracle 公司 的 OCA 協議(Oracle Contributor Agreement),聲明放棄所貢獻的源代碼的知識產權, 這部分源代碼的知識產權歸 Oracle 公司所有,于是 Oracle 公司對 MySQL 源代碼擁有了絕對的控制權與知識產權,Oracle 公司有權決定 MySQL 基于何種許可證分發。很多人或許有些疑惑:為什么明明 GNU 的 GPL 規定代碼必須在較少約束的條款下發布,而版權持有者還可以提供私有許可證。答案是 GPL 的條款是版權持有者為所有其他人設置的;而版權所有者可以自由的決定是否對其本身應用這些條款。對此,一個好的理解方法是想象版權所有者在桶里有無數份軟件的拷貝。每次它從桶中取出一個發送到世界上時,它可以決定是采用 GPL、私有或其他許可證。這并不是僅僅與 GPL 或其他任何開源許可證相關,它僅僅是版權法所賦予的權利。
第二問:Oracle 是否可以更改 MySQL 的開源協議或者干脆直接閉源?
基于問題 1 的結論,可以,但是僅限于后續新發布的版本。已經基于 GPLv2 許可證發布的老版本 MySQL 無法變更開源許可證或閉源。
第三問:為什么已經發布的老版本 MySQL 無法變更開源協議或閉源?
開源許可證是跟隨軟件拷貝分發的,每一份 MySQL 軟件拷貝都帶有一份開源許可證。當用戶下載了一份 MySQL 軟件拷貝的時候,就獲得了這份軟件拷貝想對應的許可證,作為 軟件拷貝發布方的 Oracle 公司無法回收已分發的軟件拷貝和許可證,故也不可能變更該軟 件拷貝的許可證。可以作為上述結論佐證的,是在 GUN 官網上的一份 FAQ,其中有如下解釋:
http://www.gnu.org/licenses/gpl-faq.zh-cn.html#WhyMustIInclude
為什么 GPL 要求在每個軟件拷貝里都要包含一份 GPL 拷貝?
在每個拷貝里都包含許可證是關鍵性的,這樣每個獲得拷貝的人都知道他們的權利是什么。
包含一個指向許可證的 URL 而非許可證本身也許看起來很不錯。但是你無法保證該 URL 五年或十年之后的有效性。20年后,今天我們所用的 URL 可能不再存在了。
無論網絡發生什么變化,唯一能夠確保擁有拷貝的人們還能看到許可證的方法就是在程 序中包含許可證的拷貝。
第四問:Oracle 變更 MySQL 開源許可證或閉源的可能性有多大?
盡管 MySQL 產品本身是開源的,使用 GPLv2 許可證,但是它的開發受到 Oracle 公司的控制,雖然也可能有人確實不滿意 Oracle 公司把持著 MySQL 的開發而分叉這個項目(實際已經有人這么做了,比如 Percona、MariaDB 等)。一定程度上,這種威脅迫使 Oracle 公司需要慎重考慮變更許可證或閉源 MySQL 所帶來的后果,這有可能導致 Oracle 主動放 棄 MySQL 巨大的市場機會,而把這個機會拱手讓人。在另一方面,一個完全閉源的 MySQL 是否有可能在目前的開源世界生態或之外的領域獲得成功,也是 Oracle 需要考慮的。
我們無法揣測 Oracle 對于 MySQL 的想法,僅是從以上方面分析,我們認為 Oracle 更改目前 MySQL 商業策略的可能性不高。
第五問:如果后續版本的 MySQL 變更為更不友好的開源許可證或直接閉源,我們應該如何應對?
可以基于業已發布的老版本 MySQL 源代碼創建代碼分支,繼續發展基于 GPLv2 開源許可的 MySQL 分支版本,并基于此分支版本發布商業發行版(必須開源,可以售賣軟件許可或對用戶提供技術服務作為商業模式)。
我們認為即使 Oracle 后續沒有針對 MySQL 變更開源許可證或閉源的打算,發展國內自主的、有權威部門組織領導的 MySQL 分支版本項目也是十分必要的。原因如下:
一方面由于 Oracle 公司對 MySQL 項目的絕對控制,MySQL 并沒有真正平等的開發社區, Oracle 只能從外部獲得很小規模的 BUG 修復和補丁清理,并且需要投入大量公司內部資源支持 MySQL 項目的發展,一旦 MySQL 項目的收益過小,就有減小投入的可能性進而影響 MySQL 項目的發展。與此同時,不論是滿足用戶社區對新功能新特性的訴求還是 BUG 修復的響應速度,都不盡如人意,用戶對于 MySQL 的期待和訴求無法得到及時的反饋與滿足。
另一方面由于中美競爭升級,國家對于軟硬件自主可控的要求,Oracle MySQL 對于國產化軟硬件的適配、國密算法、國內普遍業務量巨大的場景的支持等都是欠缺的,并且 Oracle 公司的 MySQL 需求評估部門,也不可能會為中國國情做適當的考慮。
基于以上兩點,發展具有中國特色、符合中國國情、能充分響應國內用戶需求的 MySQL 分支版本就顯得十分急迫。
第六問:為什么 MySQL 在整個開源生態和在最終用戶的考量中如此重要,我們可以不發展 MySQL 而轉到其他路線上嗎?
MySQL 是目前世界上最流行的開源數據庫軟件,市場占有率巨大,這是不可否認的事 實。在我國國內,各行各業的最終用戶也大量使用了 MySQL 數據庫,業已形成了巨大的資產投入。這些資產包括且不限于:基礎軟硬件設施、適配 MySQL 的應用軟件開發、MySQL 生態的人才培養。在此基礎上,國內已形成了龐大的圍繞 MySQL 的軟件生態和人才生態,大量最終用戶把 MySQL 作為首選數據庫軟件使用。要替換如此龐大的軟件、人才生態,是需要天量投入和強勢領導的,其中的風險也是不言自明,這個風險不亞于 Oracle 突然閉源 MySQL 導致的后果。我們認為,與其承擔巨大風險徹底放棄 MySQL 并轉換路線,還不如牽頭各權威部門、聯合國內數據庫行業內廠商,建立國內自主可控的 MySQL 分支社區,通過強力、科學的領導,形成統一的 MySQL 分支社區生態,謹防 MySQL 在國內的社區分裂化、碎片化。通過這個統一的、強力的 MySQL 分支開源社區,服務好國內龐大的 MySQL 最終用戶群。
第七問:國內發展 MySQL 開源分支,是否會涉及知識產權侵權?
不會。要認清這個問題,首先需要了解 GPLv2 許可證遵循的最基本原則。
GPL 許可社會公眾享有:運行、復制軟件的自由,發行傳播軟件的自由,獲得軟件源 碼的自由,改進軟件并讓自己作出的改進版本向社會發行傳播的自由。GPL 還規定:只要 這種修改在整體上或者某個部分來源于遵循 GPL 的程序,該修改的整體就必須按照 GPL 流 通,不僅該修改的源碼必須向社會公開,并且對于這種修改的流通不準許附帶修改者自己所 作出的限制。因此,一項遵循 GPL 流通的程序不能同非自由的軟件合并。GPL 所表達的這 種流通規則稱為 Copyleft,表示于 Copyright(版權)的概念相左。
GPL 協議最主要的幾個原則:
1.確保軟件自始至終都以開放源代碼形式發布,保護開 發成果不被竊取用作商業發售。任何一套軟件,只要其中使用了受 GPL 協議保護的第三方軟件的源代碼,并向非開發人員發布時,軟件本身也就自動成為受 GPL 保護并且約束的實體。也就是說,此時它必須開放源代碼。
2.GPL 是 Copyleft,或譯為“僅有著作權”的 體現,除了著作權歸原作者所有以外,其他一切權利均與任何人分享。GPL 的精髓就是,使軟件在完整開源的情況下,盡可能使用戶得到自由發揮的空間,使軟件得到更快更好的發 展。
3.無論軟件以何種形式發布,都必須同時附上源代碼。例如在互聯網上提供下載,就必須在二進制版本(如果有的話)下載的同一個頁面,清楚地提供源代碼下載的鏈接。如果以光盤形式發布,就必須同時附上源文件的光盤。
從以上描述可以看出,GPL 是一個“自由”大于“版權”為原則的的許可證協議,在 “自由”傳播面前,其他一切均需讓路。用戶可以獲得著作權人通過 GPL 許可證放棄的權利,但也必須遵守許可證的規定才能行使權利,如果不遵守 GPL 規定,便是侵犯了開源軟件著作權,其著作權人就有權要求對方停止相關行為及其他。Oracle 一旦基于 GPLv2 許可 證發布了一份 MySQL 軟件拷貝,也既立刻放棄了其對這份 MySQL 軟件拷貝所擁有的除了著作權之外的其他一切權利,由于 GPL 許可證的保護,這份 MySQL 軟件拷貝立即成為了一份“自由”軟件拷貝,可以被獲得該軟件拷貝的人或組織自由使用和修改、傳播,并需要繼續遵循 GPL 許可證的所有規定和約束。
綜上,首先我們了解到最終用戶完全可以使用及分發MySQL開源社區版本的;其次最終用戶和軟件開發商應大力支持基于 MySQL的商業發行版,但需要通曉相關協議和規則,MySQL內核部分必須遵循開源協議;最后在發展國內 MySQL 開源分支時,只要遵循 GPLv2 的所有規定和約束,就不會觸發知識產權層面的爭議,我們可以合法的自由使用 Oracle 發布的 MySQL 源代碼。