如何評價 Xposed 作者指責 MIUI 使用其代碼而不提供 Licence 違反 Apache Licence?

翻譯來自伯樂在線

Xposed框架開發者rovo89今年5月份談起小米 fork 其內容時這樣說:「MIUI fork 了 Xposed 一些內容打造它們自己的 ROM。當我把證據擺在它們面前,要求註明出處時,小米表示了歉意,並解釋說,它們還在修復代碼中的漏洞,沒有想要(把MIUI)發布出來。他們還說會很快將這些內容移除掉。」

一個半月之後,有人告訴我,Dexspy(小米系統 patch ROM)還在。小米還把(Dexspy)

源代碼發布到了 GitHub 上。我查看小米公布的源代碼發現,它們沒有增加任何新代碼或者新內容,它們只是移除了一些代碼……提到沒提到引用 Xposed 這件事。Dexspy最開始版本的「NOTICES」文件中還提及 Tungstwenty 和我是原作者這件事,但現在,它們移除了這些。」

「這也就是說,小米不是不小心忘了註明出處,而是故意不想讓人知道(obfuscate)它們的東西是基於誰的內容開發的。這麼說好像有些抬舉小米了,因為相對於原作品,它們的東西沒有增加任何有價值的內容。」

社交新聞網站用戶45452F4345指出,小米最終在「Mi 3w MIUI ROM」4.5.9版本中移除了所有Xposed框架的痕迹,還更新了 Github 上的內容,註明了出處是 Xposed。不過,有意思的是,小米沒有在「XDA」上提到上述內容。

原文鏈接: Xiaomi forked Xposed framework for MIUI without giving any credit to the developer [Updated]


更新:

找到了 Xposed 的作者 rovo89 之前在小米論壇上發的帖子 Where does MIUI give credit for their Xposed fork? (防刪,已備份)

原來小米之前「fork」出來的項目叫 DexSpy,這個項目連源代碼也沒有注 Xposed 的署名。還將所有出現 Xposed 的地方替換成了 DexSpy。

這就近乎無恥了。

-----------------------------

原回答:

Apache License 2.0 里 4.(d) 關於再分發的條款大意如下:

如果原作品中有 NOTICE 這個文本文件,那麼所有再分發的衍生作品中必須至少以下列形式之一包含 NOTICE 文件中所提到的署名:

  • 作為衍生作品的一部分,以 NOTICE 文本形式標明
  • 如果衍生作品帶源碼以及文檔,以源碼或者文檔的形式標明
  • 在衍生作品通常用來展示第三方通告的地方以畫面形式呈現(within a display)

署名(attribution)指的是對版權方身份(通常為作者名字)的 acknowledgement(「認可」,但也有人按「致謝」一意理解)。而衍生作品指的是所有基於原作品產生的作品,無論是源代碼形式還是對象形式。Xposed 從自第一個 commit 開始就帶了 NOTICE 文件。也就是說,MIUI 作為 Xposed 的一個對象形式(Object form)的衍生作品,需要以類似下圖的形式標註 Xposed 的署名:

上圖為 iBooks 所包含的 acknowledgements。

當然 MIUI 要說我就在發布的操作系統里扔一個 NOTICE 文件行不行,按 license 理解似乎也沒問題,可特么誰看得到啊。再說,MIUI 這麼做了嗎?

僅把自己的修改放在 Github 上並表明是從 Xposed fork 而來是不夠的。代碼本身是 Xposed 的衍生作品,而包含 Xposed 的 MIUI 同樣也是 Xposed 的衍生作品。來,我們 4.(d) 再看一遍:

If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file…

就這樣你們也好意思說「請問哪裡不符合 Apache License」嗎?

還有噁心到我的一點是,小米公司的員工口口聲聲號稱自己把修改開源放在 Github 上,感覺自己一直很光明正大的樣子,事實上呢?

這個是他們 fork 出來的 repository: MiCode/Xposed · GitHub,圖中可以看出來的信息是自從 fork 以後只進行了一次 commit (1 commit ahead, 7 commits behind),並且 commit 的時間是今年的 4 月 29 號。

但實際上這個 commit 是 15 個小時前(現在是北京時間 2014.08.29 11:56)才 push 到 github 上的。

「我們將修改後的代碼開源」的真正含義是「我們在媒體報道後才將修改後的代碼開源」。


Apache License 2.0確實不要求衍生作品開源,但是有明確提到:

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

就是說不管你開不開源,你分發的產品里都要保留Apache License文本(例如像Google在Android的About的Legal Information里專門詳細列明的)。更進一步的,如果使用的原作品自帶了NOTICE文件,其內容也應該在分發時提供——這就是為啥Xposed作者要專門提到小米修改NOTICE——因為標準的APL文本裡面可能不包括作者的信息,因而有的作者選擇在NOTICE里自豪的聲明自己的credit,專門把這個抹掉當然會激怒原作者(如果rovo89所說屬實)。

小米在這種事情上的作為給人的感覺是:

  1. 公司缺乏從上到下形成共識的知識產權觀念(這筆賬隨著小米往外走總是要還的),可能有的人知道,有的人不知道;有的人care,有的人完全不care
  2. 拋開法律不談,有些程序員本身也缺乏對自己同行和自己職業的最起碼的尊重——你用了別人的東西,又不要你給錢,又不要你公開衍生產品的源碼,就保留個別人的名字都辦不到?
  3. 不管是個別人的行為還是系統性的行為,出這種事都是影響小米作為一個公司的整體形象。


  喜歡折騰Android的同學應該對Xposed並不陌生,套用貼吧里的一句話,就是:Xposed 框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,基於它可以製作出許多功能強大的模塊,且在功能不衝突的情況下同時運作。

  這次MIUI犯的錯並不新鮮,國內的商業軟體默不作聲地使用開源代碼這種事情發生的還少嗎?

  • QQ影音涉嫌違反開源協議背後深思:誰來保護開源
  • 迅雷斷臂上市:盜版紅利消失 仍存在版權風險
  • 「綠壩」被曝盜用國外開源技術
  • 麒麟官方承認非獨立研發 採用FreeBSD代碼

【這裡明明是一個暴漫表情的,知乎總提示上傳失敗外鏈也不行,表怪我,親們自行腦補吧】

你?在逗我

  不,我不是在吐槽,其實舉例之前我也不確定,不過我用Google百度了一下之後發現原來真!的!有!這!么!多!啊……然後呢,然後你以為我就會把這個問題歸罪於國內版權立法不完善然後譴責一下國人的版權意識不足就把自己置於道德的制高點上了嗎?不你錯了,我不僅僅是來吐槽的~ ~ ~ ~

  我想有不少同行跟我一樣(說的就好像我已經畢業了23333333),從小就立志做一名能夠用雙手改變世界的程序員(為什麼我感受到了一絲猥瑣),然後當我們入行已久,發現距離自己兒時的期待卻越來越遠。我們每天敲打著鍵盤,卻不知這些代碼能給這個世界帶來什麼,每個產品都會漸漸老去,即便經典如同Windows XP。但XP為這世界創造出無數美好,而我們寫過的代碼,過去這麼多年留下了啥呢?為什麼我們編寫的程序每個功能點技術點都要符合客戶變態的要求,為什麼我們為公司里龐大的系統構建一個小小的齒輪卻看不見這輛大車行駛的方向?其實在大學時代(好像我本來就還在大學時代哎╮(╯▽╰)╭),當我們為了參加比賽苦苦的思索能博得指導老師和評委老師喜愛的題目時,當我們為了符合某某比賽的各種要求添加一些無病呻吟的功能時,當我們為了趕上Deadline不惜在編程的時候偷工減料犧牲代碼的美感甚至Copy別人的代碼時——咦,我們終於繞回今天的主題了,為什麼大公司的軟體紛紛默不作聲的抄襲開源呢?難道實際上把代碼Copy過來的是公司而不是我們自己嗎?

  回想起來,的確有不少時候我們(請不要帶上「們」字)為了解決問題時直接把Stackoverflow上的代碼直接粘貼到我們的工程里,的確有時我們會學習和借鑒別人的代碼。但這並沒有錯啊,錯的是當我們習慣了粘貼、習慣了借鑒、習慣了以最低的成本完成上面交代的任務的時候,我們已經違背了我們選擇用編程來改變命運的初心了。而討論MIUI抄襲Xposed到底錯在哪裡,我覺得並不會為我們日後的工作和生活帶來什麼改變,否則如果早在我們譴責龍芯所做的工作就是打磨掉摩托羅拉的Logo的時候就能做出改變,現在還輪得到這事兒發生?

  我們為什麼要編程(咦,好像終於繞回標題了耶,終於快寫完了,可以吃 早午飯 咯)呢?懷著對C、對Linux、對開源世界的崇拜の種種,我們當初難道不是想去創造出更有價值、甚至能流芳幾年的東西嗎?

  但生活壓力,為了養活一家幾口,我們不得不這麼做,提早完成任務趕上Deadline,作為被壓榨的苦命程序員,在每天因為趕不上Deadline而挨批的時候,抄幾句開源的程序有錯嗎?我們倒是想在程序里致謝了,可是作為一名渺小的碼農,你們有理會過我們的請求嗎?為什麼要怪罪於碼農(剛才是誰說「實際上完成Copy」的人是我們自己來著)?

  有人說,當我們無力去改變這個社會的時候,不如就改變自己來適應這個社會吧。的確,生活所迫我們有時不得不做出一些掉節操的事情,但我想只要我們不要忘記初心,並且在虔誠祈禱的同時不忘去不斷實現我們當初所立下的誓言,上蒼是會原諒我們的。

  其實,學生時代遠遠犯不上為了競賽而選擇自己不喜歡的題目,為什麼不為了自己做一個產品呢,然後拿去參加比賽,不為獲獎,只為當你在答辯時能驕傲的面對台下評委說「我們的產品,不是老師分配的題目、也沒有在學校立項,更沒有照抄別人的產品,它是我們懷著最大的誠意,為我們自己製作的一款產品」。如果學生時代真有這麼一款為了自己而開發的產品,我想也值了。如果面試的時候哪家公司還是更看重於你所獲的獎項,那我覺得,不如放棄這家公司,你還有更好的選擇。

  至於,工作以後會怎麼樣,開學後剛剛讀大三的我,是做不出像樣的預言的。在這裡,只能為工作了的親們送出最大的祝福,祝你們所做的工作也恰好是你們當初的理想,你們所開發的產品即便是放到公司之外也能發揮它最大的價值。

  就醬。

  圖片來源:數字尾巴、暴走漫畫

  其實這也是我的一篇博文,看到知乎也在討論這個問題就直接粘過來啦,雖然有點跑題,但這不妨你們用郵箱來訂閱我的博客http://Yicong.me 不是嘛?


小米繼不肯提供linux內核源碼後的另一個作死舉動

@輕颺 所說,按照Apache2.0許可提供原作者署名

但是它在海外有業務,會被迫做出正確的反饋的


Apache License是開源中最松的License,並沒有要求使用者將修改後的代碼開源,我們將修改後的代碼開源在http://github.com/micode上了,裡面也包含了明確的license說明是從xposed修改而來的。

另,miui 6之後都不會使用xposed框架。

怎麼說呢,回答問題前認真研究下先嘛……

利益相關: 小米職員,MIUI喉舌。


這是MiUI團隊最初就有的問題,甚至這種「無恥」可以說是MiUI的一貫的基調

在小米還沒有出手機之前,如果你關注過MiUI和XDA的話,大家應該知道MiUI做的很過分,曾經大量抄襲CyanogenMod的源碼不說,甚至貌似有那麼幾次直接就用的人家全套代碼,只不過過刪除了除了中文和英文之外的語言包就號稱「中國人自己的第三方ROM」。而CyanogenMod項目的管理者也曾在官網上直接表示,對「MiUI這個賊"不提供任何支持(包括回答任何問題)。

當然之後得到雷軍注資之後,MiUI團隊得到了實力上的擴充,有實力獨立編寫和改造安卓了,可江山易改本性難移,靠這種無恥起家的MiUI,他們會認真重視License這種東西么?有需要故伎重演是很正常的事情。

不給過我倒對這種事情沒太大反感,用無恥手段起家的公司國內外有的是。但同作為程序員出身,多少感覺MiUI很丟臉就是了。


原文鏈接: Xiaomi forked Xposed framework for MIUI without giving any credit to the developer [Updated]

原文中有一段對rovo89的引用,其中提到的GitHub倉庫的地址是https://github.com/MiCode/dexspy ,這個地址現在404了,說明小米方面有過刪除操作,把這個庫刪除了,為什麼?

現在GitHub倉庫的地址是MiCode/Xposed · GitHub ,我好奇的檢查了一下,發現了幾個問題。

1. fork後只有一個提交,"Modify for miui",正如另一個回答中提到的,提交發生在2014年4月,push卻發生在2014年8月28日。

2. Android.mk 和 app_main.cpp 這兩個文件本來是沒有rovo89和Tungstwenty的版權聲明的,小米在他們僅有的一個提交中好心地添上了rovo89和Tungstwenty版權聲明。

3. 在NOTICE文件中小米沒有添加自己版權聲明。

簡單總結一下,Apache Licence 是一個非常寬鬆的許可協議,稍微注意一下就不會不會違反。


愛面子不至於到這程度吧,小米。。


[已刪除]


以前我認為開源就是免費的,沒有版許可權制的。

為了這個問題我又去百度了一下,才知道開源系統貌似也有版權。

開源系統_百度百科

開源軟體也是有版權的 違規同樣要受罰_Linux新聞_Linux公社-Linux系統門戶網站

另外附上:

自由軟體_百度百科

免費軟體_百度百科


這是miui的一貫作風,早期不就是這麼乾的嗎?


我說小米的對齊喚醒怎麼實現的,原來是這樣


推薦閱讀:

MIUI的適配機型為何越來越少了?
米聊是如何匹配好友的?
為什麼MIUI9已經「快如閃電」了卻還要「基於安卓」?
為什麼小米MIX取消額頭而不是下巴?
如何評價 MIUI 的 AnalyticsCore 後門?

TAG:小米科技 | 米柚MIUI | XposedFramework |