歡迎您光臨本站 註冊首頁

從射手QQ之爭看開源許可證的選擇

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  在射手播放器和QQ影音為GPL吵得不可開交的時候,CBer應該少一些無知的謾罵,多學習一下開源許可證的基本知識。要罵也要罵到點子上,別不分是非,指著別人腳罵別人鼻子。在中國這樣一個幾乎完全不尊重版權,開源軟體處於萌芽發展的國家,開源是一個及其冒險的選擇,你做出的產品頃刻之間便會被人抄襲。在中國,選擇開源是需要勇氣的,既然選擇了它,就選擇了坦然面對這個殘酷的現實,開源可不是簡單開放了源代碼了事就可以了的。

首先,開源並不代表放棄自身的權力,相反,開源軟體之所以存在,正是它非常注重這種權力,並且把這種權力賦予了軟體的所有使用者。小心的選擇許可證是開發開 源軟體的第一步,也是每一個開源軟體作者所必須要了解的,這代表了你對你的軟體的最基本態度。很多的時候,這背後也隱藏著某種商業策略,特別是有商業公司 支持的項目。

比如Android為什麼是Apache 2.0而不是LGPL/GPL發布?為什麼Linux是以GPL發布?其中絕對不是簡簡單單的看哪個許可證用得多就選擇哪個,而是深思熟慮的結果。千萬不 要小看這個選擇,一個許可證之於軟體就相當於價值觀之於普通人,代表了這個軟體的基本品性。一個錯誤的許可證選擇可能會直接導致整個項目的失 敗,XFree86就是一個好例子,所以,選擇許可證是一件小心、謹慎的事情。

各種開源的許可證主要的限制還是在redistribution(發布),所以個人/商業公司開發的軟體包含了GPL的代碼,只要你不發布,是可以任意使用的。

GPL
這裡不想再解釋長篇的GPL譯文和更長的FAQ。 簡單說,GPL軟體的使用者有權力得到軟體的代碼,只要使用了GPL,在發布(redistribution)的時候,整個項目也必須是GPL的,即主程 序和靜態鏈接的庫(Linux的.a和Windows的.lib)必須是GPL的,動態鏈接庫(Linux的.so,Windows的.dll)必須是比 GPL兼容的。所謂GPL兼容,也就是GPL軟體中可以使用的庫,這些許可證必須比GPL弱(如LGPL,BSD),而不能是某個商業許可證。這裡有一個 兼容列表 List of FSF approved software licenses。正因如此,GPL是帶有很強的傳染性,只要你的軟體使用了GPL的代碼,那麼就請以GPL開放源代碼吧,並且你的項目中也不能有任何和GPL不兼容的庫。

LGPL
GPL 帶有很強的傳染性,那麼如果一個庫使用GPL發布,那麼使用這個庫的所有軟體也必須使用GPL發布,這對不想開放源代碼的商業軟體來講是致命的打擊——你 可以不使用其他的庫,但最基本的libc是無論如何繞不開的,如果libc是以GPL發布,就相當於所有軟體必須以GPL發布了。所 以,LGPL(Lesser GPL)誕生了。LGPL定義為,在以LGPL發布的庫的基礎上開發新的庫的時候,新的庫必須以LGPL發布,但是如果僅僅是動態鏈接,那麼則不受任何限 制。這樣商業軟體就可以隨意的使用LGPL的庫了。因此,LGPL也具有傳染性,但限制在在其基礎上開發的庫上,而並不限制使用它的程序本身——它的傳染 性遠小於GPL。

BSD、Apache 2.0
相對GPL/LGPL的開放源代碼,BSD,Apache 2.0就寬鬆許多——商業軟體可以任意的使用BSD,Apache 2.0發布的軟體代碼,而不需要開放源代碼,只需要提及代碼的原出處就可以了。BSD和Apache 2.0提及的方式稍有不同,具體可以參考協議的詳細內容。它們是GPL兼容的。

了解了幾種常用許可證的異同,再來看許可證的選擇。

Android 使用寬鬆的Apache 2.0發布,因為Google作為一個商業公司,並不想失去商業軟體的支持,它希望團結一切可以團結的力量加入的Android的開發中來,壯大自己的陣 營,使用Apache 2.0就無可厚非了。而Google本身,並沒有喪失對Android的控制權,不會擔心另外一個公司拿走了Android的代碼開發出一個閉源 Android的對手。因為,只要Android不斷的出新版,社區不停的跟進,並且不停的修改API,其他基於Android開發的公司不得不把自己的 Patch提回到主幹上,否則,必然將耗費大量人力物力在維護自己的Patch上(錢這方面你斗得過Google?),得不償失。而且,閉源之後,與整個 社區為敵,作為一個定位軟體平台的項目,會流失大量應用軟體開發者,以小博大,任何一個商業公司都不會幹這種勝算不高的蠢事。

在看以 GPL發布的Linux為什麼比以BSD發布的FreeBSD成功。其實正是因為GPL的傳染性。當一個開發人員在Linux基礎上開發一個新功能之後, 不得不以GPL開放源代碼,貢獻回Linux,這樣Linux本身才能越來也越壯大而且留住了相當的開發人員,形成了一個 優秀軟體->很多使用者和貢獻者->貢獻->更優秀的軟體->更多的使用者和貢獻者... 的良性循環。

正如每一個成功的男人背後都有一個女人,每一個成功的開源軟體背後都有一個符合它策略的開源許可證。許可證明確的版權劃分,明確的版權劃分為軟體發展提供 了一個良好的環境。正是因為老外重視版權,天天為版權爭吵,才會有一個良好的商業軟體和自由軟體大環境。相對的,漠視版權的中國無論商業還是開源軟體,才 會淪落到毫無創新能力,只能給外國打打下手,作點邊角外包的境地。

最後,回到射手和QQ,他們都使用的ffmpeg作為解碼器。 ffmpeg本身是LGPL的,使用它開發閉源軟體是無可厚非的。但是ffmpeg有部分可選GPL的解碼器主要是xvid和x264,由於GPL的傳染 性,打開了可選的GPL解碼器后的ffmpeg也成了GPL的,所以,基於ffmpeg的射手播放器和QQ影音從法律上講,必須以GPL發 布源代碼,這個是強制的,不是可選項。射手的申明中引用的GPL FAQ的話已經很明確了,GPL軟體中使用的動態鏈接庫必須是GPL兼容的,也就是說,射手的字幕模塊(它是動態鏈接到射手播放器本身),也必須是使用 GPL兼容的許可證發布,閉源顯然是一個錯誤。

射手播放器的作者Tomasen發現了這個錯誤之後,很快開放了這部分的代碼,彌補了自己的失誤,這為射手播放器以後的發展掃清了一個大障礙,下一個障礙 是把非GPL兼容的CoreAVC商業解碼器踢出發行包,這不是一個GPL軟體該有的東西。理清了許可證,和賦予開發者的權力,才有可能吸引到開發者。



[火星人 ] 從射手QQ之爭看開源許可證的選擇已經有280次圍觀

http://coctec.com/news/soft/show-post-74385.html