自由軟體授權一直都有爭議上的問題。源頭出於廠商很想利用自由軟體營利,也很想在種種限制中找到適合自己的營利方式。這篇文章旨要探討 Google Android 與 GPL2 的曖昧關係。
GPL 的概念
我們要先知道的是,什麼是 GPL2。簡單說,當你的產品伴隨著含有 GPL2 的程式一起出售時 (光碟片、網路、嵌入式等種種型式),則所有的程式也都要開放源碼,這意謂著你自己開發的程式也要開放源碼。
這出現了什麼問題?不管你撰寫的是驅動程式或應用程式都要開放源碼,但往往這是台灣廠商想要保留的商業機密。有很多廠商指出,一旦把源碼開放,他們 的技術就很容易被競爭廠商追上。(需要補充的是,即使應用程式是使用介面的方式隔開 GPL2/3,但只要一起打包出售,理應就要開放源碼,除非分散下載。)
Google Android
上一段有說,只要是一起打包出售(隨手機一起出貨),不管程式是屬什麼層級,理應就要開放源碼,那麼為何廠商還是愛用 Google Android 來開發他們的產品?難道他們不怕開放源碼而失去競爭力?
事實是,廠商用 Google Android 開發的產品,不一定要開放源碼,即使是一起打包出售。
為什麼?因為我發現 Google Android 中,不管是作業系統(Linux kernel)、開發工具、函式庫(Library)、應用程式框架(Application Framework)或應用程式(Application),只有 Linux kernel 是屬於 GPL2,其它的都是較無感染性的 Apache、BSD 或 Google 自己的工具。(架構圖參照)
我們可以從 What is Android 看出一些訊息。整理如下:
- Linux Kernel: GPL 2.0
- Dalvik virtual machine: Apache License 2.0
- WebKit: New BSD License (WebKit 亦可採用 LGPL 授權,但 Android 採用 New BSD)
- OpenGL ES: OpenGL ES License (有別於 OpenGL 授權,OpenGL ES 免授權金但若要用其 LOGO,則必須通知其組織的產品測試;另 Android 似乎沒有特別對 OpenGL ES 授權多做聲明)
- SQLite: Public Domain
- PacketVideo’s OpenCORE: Apache License 2.0
- Bionic C Library: Google 自己的 libc,以 BSD 授權釋出
- FreeType: 選用 BSD-style 的 License
- SSL: BSD-style 的 License (OpenSSL 有兩個授權: 主體與 SSLeay,皆容於 BSD 授權)
因此,唯一可以訴訟 Google Android 或採用 Google Android 廠商未遵守自由軟體遊戲規則走的只有 Linux kernel。但 Linux kernel 團體本身未必會要求非要這些廠商公開源碼,而且目前在法律上也不太能夠要求(因為著作權人不明),再加上 Linux kernel 團體不會強烈要求一起打包的應用程式一定要開放源碼(但若是驅動程式則另當別論)。
也就是說,若產品中,只有 Linux kernel 是 GPL 授權,則不開放源碼的風險是最低的,而這也是 Google Android 目前採用的方式。
台灣硬體廠商採用 Google Android 模式的危險性
台灣硬碟廠商沒有辦法像 Google 有著這麼多的資金與能力去達到 Google Android 這般較完美的解決方案。因為台灣廠商很多是需要開發驅動程式 (Linux kernel 比較要求驅動程式要開放源碼),或者是用 GCC/Glib 等 GPL 程式/函式庫開發應用程式 (應用程式與 Glib 一起打包,不管是不是動態連結都要開放源碼,除非像 Google 般使用 BSD-style 的 C Library),所以在規避議題上很難達到。
台灣廠商需自創屬於自己的商業模式
很多案例會依實際情形有所不同,須視個案來解決。最後的重點是,廠商若要採用自由軟體,請以誠實為上,否則就不要使用自由軟體來作為營利。
題外話
想要下載完整的 Google Android 需要龐大的硬體空間,因為 Android 的專案包含很多項目。下載方式請參考 Using Repo and Git 及 Google Android: Get source。
No comments:
Post a Comment