February 01, 2009

BSD License 與 GPL 的相容性案例 -- qemu

去年在 [不再囉唆:NetBSD 簡化 BSD 授權條款] 提及 BSD 授權條款的變革,其中 GNU/FSF 發現原本 BSD 授權的問題,導致無法與 GNU GPL 保持相容,從而將原本四個條款的 BSD 授權之中的一項,視為 [obnoxious BSD advertising clause],主要「不相容」的問題,肇因於 GNU GPL 其「遞迴性」的設計中,不允許增加額外限制 (強制性廣告本質上就是新的限制)。我們要知道,儘管許多以 BSD License 發行的軟體專案,逐漸改採加州柏克萊分校於 1999 年,對 FSF 做出正式回應,刪去原始 BSD 授權條款的第三條「廣告條款」而生的 New BSD License,避開 GNU GPL 的不相容問題,如此的案例仍相當廣泛,本文舉出知名指令集與硬體架構模擬器專案 [qemu] 中,所發生的 BSD License 與 GNU GPL 的不相容案例,並談論其解決方案。

Qemu 作為一個系統模擬器,除了 CPU 與諸多系統 Bus 外,還得模擬常見的網路裝置,而被模擬的環境一般稱為 "Guest OS",相對來說,提供模擬器執行的環境,就叫 "Host OS",而 Qemu 就扮演讓 Host 與 Guest 兩個 OS 間,網路封包與傳輸得以連結的角色。其中,透過 [SLiRP] 就是一個很有效的途徑,以下摘錄網頁上的簡介:
    "SLiRP is a free SLIP/CSLIP/PPP emulator which allows a normal user with a shell account on a Unix system make it act like a SLIP/CSLIP/PPP account."
而在 [SLiRP Features] 中提到:
    "The TCP/IP code is based on 4.4BSD which is widely regarded as a very stable and complete implementation. ... The TCP/IP code was actually taken from the excellent FreeBSD 2.0 sources."
由上述可見,SLiRP 的開發,很大部份來自加州柏克萊分校的 BSD,後來重新在 FreeBSD 2.0 核心實現,自然是以具備四項條款的 BSD License 發行,原始作者為 Danny Gasparovski,後繼維護者為 Kelly Price,這兩位的名字很重要,下文會再次提及。在 Qemu 開發初期,即包含了一份 SLiRP 的核心元件 libslirp 的原始程式碼,位於原始程式碼的 slirp/ 目錄,一直到最近的 qemu 釋出版本仍有如此的程式碼。而最近,開發者 Anthony Liguori 在 qemu 的 Subversion revision [6451] 中,移除了 BSD License 的廣告條款,以下是更動紀錄:
Log Message:
-----------
Remove the advertising clause from the slirp license

According to the FSF, the 4-clause BSD license, which slirp is covered under,
is not compatible with the GPL or LGPL[1].

[1] http://www.fsf.org/licensing/licenses/index_html#GPLIncompatibleLicenses

There are three declared copyright holders in slirp that use the
4-clause BSD license, the Regents of UC Berkley, Danny Gasparovski,
and Kelly Price.
Below are the appropriate permissions to remove the advertise
clause from slirp from each party.

Special thanks go to Richard Fontana from Red Hat for contacting
all of the necessary authors to resolve this issue!
中間是一開始筆者陳述 William Hoskins 在 1999 年刪去原始 BSD License 中「廣告條款」的聲明,已於稍早的文章提過,這裡忽略。咱們看看為了解決 4-clause BSD license 與 GNU GPL 不相容的議題,而透過知名 open free software / source license 律師、RedHat 的 Open Source Licensing and Patent 法律顧問 -- Richard Fontana -- 的處理經過,以下是在 SVN 更動紀錄的附帶紀錄,是郵件往返取得授權更動的資訊,首先,致信給 SLiRP 作者 Danny Gasparovski:
Subject: RE: Slirp license
Date: Thu, 8 Jan 2009 10:51:00 +1100
From: "Gasparovski, Daniel"
To: "Richard Fontana"

Hi Richard,
I have no objection to having Slirp code in QEMU be licensed
under the 3-clause BSD license.
Thanks for taking the effort to consult me about this.
Dan ...
同時也要致信給 SLiRP 的維護者 Kelly Price:
Date: Thu, 8 Jan 2009 19:38:56 -0500
From: "Kelly Price"
To: "Richard Fontana"
Subject: Re: Slirp license

Thanks for contacting me, Richard.  I'm glad you were able to find
Dan, as I've been "keeping the light on" for Slirp.  I have no use
for it now, and I have little time for it (now holding onto
Keenspot's Comic Genesis and having a regular US state government
position). If Dan would like to return to the project, I'd love to
give it back to him.

As for copyright, I don't own all of it.  Dan does, so I will defer
to him.  Any of my patches I will gladly license to the 3-part BSD
license.  My interest in re-licensing was because we didn't have
ready info to contact Dan. If Dan would like to port Slirp back out
of QEMU, a lot of us 64-bit users would be grateful.

Feel free to share this email address with Dan.  I will be glad to
effect a transfer of the project to him and Mr. Bellard of the QEMU
project.
我們可見,最合理的解決方式就是,央請原始作者為前述「不相容」的議題,更改授權模式,是此,一旦 qemu 中 slirp 的程式碼改以 3-clause BSD license 發行時,即不再與 qemu 其他以 LGPL 或 GPL 發行的程式碼,產生授權上的衝突,整件事得以圓滿解決。
由 jserv 發表於 February 1, 2009 11:47 PM
迴響
發表迴響









記住我的資訊?