進度條

如何避免自製WordPress外掛被GPL授權?顧客購買「付費版」可以免費無限複製不用付授權費嗎?

開不開源是個人選擇,豐富社群當然是件好事。但是被強迫開源就不是開發者所樂見的事了。

作者: 進度條編輯群 更新日期:

*以下皆為個人見解,實際法律上判定以各國法官法院判定為準,以下內容是否同意請以照個人自行判斷。

 

新入 WordPress 外掛或佈景主題的開發者通常都有一個疑問,就是關於外掛引用他人的外掛程式並上架是否合理。我開發的外掛會不會被強迫開源免費商用幫別人賺錢同時,自己卻還要負責客服被罵

 

 

會有這個問題的主因還是跟 WordPress 是 GPL 授權有關。這個授權的大意是,拿到程式的使用者,可以免費商用散佈,製作利用其程式製作自己的程式。但是只要你新寫的程式有用到 GPL 授權程式裡面的任何內容,那你寫的程式就自動包含 GPL 授權。寫包含的原因是,你可以用其他兼容 GPL 授權的授權。

 

 

 

 

所以你所有為 WordPress 寫的「外掛 Plugin」與「佈景主題 Theme」都會自動變成 GPL 授權。別人可以免費利用之賺錢而不用分給你。

 

當然,這件事你我也在做,因為 Linux 也是 GPL 授權, Linux 上大部分的程式也是或是類似的情況,加上 WordPress 也是。所以你利用 WordPress 幫客戶還能賺到錢,就是受惠於 GPL 的授權。不然你光架站你就要付一堆授權費。

 

 

 

 

一般來說,你為 WordPress 撰寫「外掛 Plugin」與「佈景主題 Theme」後上傳到 WordPress 官方的下載區中。你也都會有這個認知,畢竟上面也有寫說你的程式碼必須符合 GPL 相容的授權。

 

 

所以我們現在要討論的就是不在 WordPress 官方的下載區中的版本,也就是所謂的付費版。

 

以結論來說,根據 GPL 的較嚴謹解釋,只要你的外掛離開 WordPress 後就不能運作,那你就是相依於 WordPress 主程式,尤其是你的程式碼內有包含 WordPress 的 API。無論你是放在哪邊,只要使用者當初是合法取的你的程式碼。那他就可以依照 GPL 授權使用。

 

例如 A 在你的網站買了這段 GPL 程式,依照 GPL 授權包裝在自己的程式,並且賣了一份副本給 B,那 B 不用付錢給你且可以合法使用(只有付給 A)。這也是私人外掛商城上正大光明賣”盜版”外掛的依據。

 

但是要注意,A 必須要合法取得,因為 GPL 沒有寫要公開給全世界,不然你寫程式難道要時時刻刻直播寫程式給全世界?因為即使是半成品也是要符合 GPL 嘛!

 

GPL 說的是如果你交付他人程式,那需要同時給那個人原始碼。所以如果 A 是非法取得,那後面都不算數。

 

 

 

 

事實上這並不是開源世界的單一現象,世界上也沒有絕對的定論。例如 AWS 就把 ElasticSearch 包進自己的服務裡面 (資料庫搜尋相關軟體) 。結果 Amazon 賺飽飽, ElasticSearch 雖然也過得不錯,但賺名氣比賺實質利益多得多。最後迫使 ElasticSearch 修改授權合約,讓所有雲服務與類似服務無法免費使用之製作商業服務。

(細節就不討論了,因為我們也沒完整的看完事件細節。)

 

AWS 當然也不是吃素的,畢竟年收千萬的工程師在 AWS 也只是路人,Amazon 大概因為商標的關係,不能在產品名使用 ElasticSearch,所以發佈了了 Amazon OpenSearch Service (WIKI),但是"兼容" ElasticSearch。OpenSearch 是從更改授權前的那一個版號分支出來弄一個 Amazon 自己維護的版本,並且明、暗示可以兼容以後的 ElasticSearch。

(應該是會弄成像 MySQL 與 MariaDB 之間的關係)

 

 

那你說 ElasticSearch 就很衰?其實也很難說,因為 ElasticSearch 與另外一個我們曾經提過的 Solr 同為 NoSQL 資料庫,強化搜尋,但實際上核心都是 Apache 基金會開源的 Lucene 專案。Apache 基金會自己的開源搜尋應用項目就是 Solr,只是市場目前覺得私人企業做的 ElasticSearch 是更符合需求的版本,所以 ElasticSearch 比較知名。

 

 

 

 

所以回到我們的主題,以下幾點可以提供大家參考。

 

1. WordPress 上架官方外掛區,就是 GPL 授權,這大家都沒爭議,你把別人上架的外掛直接加進去自己的外掛是可以的。雖然心理上會不舒服但多半可以接受。

 

2. GPL 不包含商標、名稱授權,所以我們的理解是"敘述"可以寫到對方公司名。例如總不可能寫了一個 Paypal 相關外掛,敘述裡面只提到說可以串接"某"金流公司。但是產品名內不能包含。外掛名稱包含他人公司名在外掛上架的時候就會被 WordPress 官方退回了。

 

3. 通常比較大的爭議點在於新外掛包含了別人外掛的「付費版」,依照狹義的 GPL 授權,即使不放在 WordPress 官方外掛區,但是因為「付費版」的程式的 API 與 WordPress 主程式強相關,所以會被 GPL 感染。前面也有提到這是私人外掛商城上正大光明賣”盜版”外掛的依據。但理論上應該要改名,也有前面商標的問題。

 

4. 把別人付費的外掛利用授權包進自己的外掛增強功能,只要建立在 GPL 授權上並沒有問題。但是此案例類似 AWS 做的事,會影響到原始開發者的利益,而且影響很大。所以可預期的原始開發者會非常不高興。

(被用自己不打算免費授權的程式碼做出加強版的競品,應該沒人會開心)

 

5. 所以最好的解法是 LGPL 概念,無論是不是在 WordPress 官方外掛區上架,不想給別人的程式碼就用 Web API 去執行。GPL 不會感染到 Server 上的程式,不然你現在就可以要求 Google 交出 Google Analytics 所有的程式。畢竟官方也有上架外掛。

 

6. 另外一提,如果你沒有該程式碼的授權,你沒辦法代表該程式的開發者提供 GPL 授權。例如你寫的程式公開但無任何免費授權(不是看得到就叫免費授權),但被它人加入自己的 GPL 程式,再經過兩、三種 GPL 程式引入後,大家雖然都以為這段為 GPL 授權。但其實因為源頭就是錯的。所以全部都有機會被視為侵權喔!


 

回到標題

a. 如何避免自製 WordPress 外掛「功能」被 GPL 授權?

如果你的外掛是相依別的服務,尤其是函示庫或是 Web API,那函式庫與 API Server 不會被感染。

所以要避免,就是功能全部用上敘的方式連結,外掛或佈景主題只保留 UI 和與 WordPress 主程式連接的部分。例如如果你的程式有用到 apt-get 下來的 PHP 函式庫,那個函式庫不會因為你的應用而變成 GPL 授權。

為了達成這點,外掛與函式庫必須分開安裝,但是外掛基本上一定是 GPL 授權。

 

 

b. 顧客購買「付費版」可以免費無限複製不用付授權費嗎?

是的,程式本身是這樣,但是如果上面說的 Web API 是需要 API Key 才能使用,那他取得程式也無法使用。另外,WordPress 官方是認可這種方式的外掛。可以上架 WordPress 官方的外掛區。

 

 

 

 

如果對這個議題有興趣的話,除了需要先了解 WordPress  Plugin 要如何寫以外。你還需要一個後端 API Server,畢竟大部分的功能都必須要靠他實現。

 

我們的 PHP Laravel 課程在最後的一個章節「建立 SaaS 服務」就是在講如何利用 Laravel 建立 Web API Server,並且提供給別的網站使用。也就是我們上面提到的 Web API 的解決方案。剛好 WordPress 與 Laravel 都是 PHP 製作的,所以寫起來不需要重新學習程式語言語法。

 

有興趣的歡迎參加喔!

 

Laravel 後端PHP架站,API Server與訂閱軟體全攻略

https://progressbar.tw/courses/19

 

前端進階 + 後端 Laravel 課程完整課程

https://progressbar.tw/packages/32

 

WordPress - 從頭教起的網站架設

https://progressbar.tw/courses/10

 

Laravel 後端架站完整組合

https://progressbar.tw/packages/37

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊