Hi saker.hsia,
以下簡短就幾個重點來回答您的問題。
對於嵌入式系統下對GPL授權的Kernel規避,有以下幾個思考重點:
1. 依照GPL授權條款的文意解釋,只有能夠主張獨立性的其它程式才能夠不受GPL程式授權拘束性的影響。
2. 在嵌入式系統裡面,這個
獨立性(Separate and Independetn)很難被證明,因為嵌入式系統下所有程式都是包在一起運作、一同出貨的,所相結合的程式很容易就被當成GPL授權的Linux Kernel下的衍生作品(Derivative Works)。
3. 近期對於Linux Kernel授權拘束性比較成功的規避模式,就是Android的中隔模式(Well defined interface),但那需要使用者花時間來了解和建設這個中隔模式。
4. 而另一種與Android類同的規避模式UIO(the user space I/O system),是在AP及Kernel之間隔一層以LGPL或是BSD、MIT等,可以為GPL授權方式*吸納*的函式庫程式做為中介,然後將Driver的重要演算法寫在AP的層級,以運作在User Space的方式透過中介的Library與Linux Kernel間進行呼叫,這樣的方式、有很多人認為,寫在AP層級的Driver,是不必受到Linux Kernel授權拘束性的約束的(但是中隔的Library層就一定要選擇和GPL相容的授權方式釋出)。
5. 但是這樣的判斷標準,還是有它的模糊地帶,複雜的情況下還是得就個案來做分別評判。
以下提供幾個UIO模式的重要連結,有後續問題歡迎接續討論。
1. Carsten Emde於2008年11月的演講簡報,綱舉目張的解釋了運作在Userspace下的驅動程式與Linux Kernel之間的拘束關係(重點在第八頁):
https://www.osadl.org/fileadmin/dam/presentations/FAPI-UIO-SPS-2008.pdf
2. 2006年8月UIO作法的原開發者所發布的說明頁面:
https://lkml.indiana.edu/hypermail/linux/kernel/0608.3/1908.html
3. 2006年Linux Kernel開發者Greg Kroah-Hartman在其演講中批評不符合GPL授權規定的專屬驅動程式:
https://www.kroah.com/log/linux/ols_2006_keynote.html
4. 2004年4月Linus發表他對GPL授權拘束性的意見和立場:
https://cvs.fedora.redhat.com/viewvc/rpms/kernel/devel/COPYING.modules?view=co
5. 2004年1月LWM.net上面討論Userspace驅動程式的技術內容:
https://lwn.net/Articles/66829/
6. 2007年發表的德文博士論文:「病毒般的影響力:開放源碼軟體領域的開發風險(Der virale Effekt: Entwicklungsrikien im Umfeld von Open Source Software)」,以Creative Commons 姓名標示-非商業性-禁止改作 德國2.0版的授權方式授權散布:
https://digbib.ubka.uni-karlsruhe.de/volltexte/documents/3081
希望這些資訊對您有所幫助。
敬祝 順心康泰
20090523 1640 自由軟體鑄造場 林誠夏