七問七答理清MySQL開源許可
隨著開源事業的快速發展,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 ,其中有如下解釋:
為什麼 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 原始碼。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007333/viewspace-2898486/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 開源許可研究MySql
- java基礎(七) java四種訪問許可權深入解析Java訪問許可權
- 七、許可權管理和資料庫備份資料庫
- MySQL許可權問題MySql
- SpringSecurity許可權管理系統實戰—七、處理一些問題SpringGse
- 看懂開源許可協議協議
- Mysql資料庫許可權問題MySql資料庫
- Linux系統程式設計(七)檔案許可權系統呼叫Linux程式設計
- mysql許可權MySql
- 【MySQL】死鎖案例之七MySql
- 谷歌VirusTotal開源元件曝高危漏洞,可獲取內網訪問許可權谷歌Rust元件內網訪問許可權
- MySQL儲存過程的許可權問題MySql儲存過程
- 七臺河哪裡有開票-七臺河開票
- MySQL許可權管理MySql
- Docker教程之七安裝 MySQLDockerMySql
- ThinkSWN開源社群問答系統 免費開源 歡迎使用
- 開源軟體許可協議介紹協議
- Halo 開源專案學習(七):快取機制快取
- 微信小程式開發常見問題(七)微信小程式
- 【MySQL】七、再說MySQL中的 table_idMySql
- linux下mysql開啟遠端訪問許可權及防火牆開放3306埠LinuxMySql訪問許可權防火牆
- mysql許可權參考MySql
- MySQL 許可權詳解MySql
- 網路監控系統七大開源工具分析開源工具
- Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)Spring BootMyBatisMySql資料庫XML
- 七
- 《MySQL 基礎篇》七:資料型別MySql資料型別
- 關於開源軟體的七大錯誤認知
- 關於GAN的靈魂七問
- 關於mysql許可權管理MySql
- MySQL許可權管理實戰MySql
- canal mysql select許可權粒度MySql
- mysql連線無許可權MySql
- Hanlp等七種優秀的開源中文分詞庫推薦HanLP中文分詞
- 七個很實用的開源專案「GitHub 熱點速覽」Github
- 【Flutter】開發之功能篇(七)Flutter
- 情商(七)
- 七、類