誰偷了 Android-x86?
先前曾提到,有個山寨版的 Android-x86 網站,明明對 Android-x86 計劃沒有任何的貢獻,卻大剌剌的在首頁放了要大家捐款的圖示。想藉本計劃的名氣來吸金嗎? 只可惜本計劃人氣低落,至今為止只收到三筆,總共 20 元美金的捐款而已。他人想藉本計劃吸金發財的夢想可能要破滅了! 當然我想得到捐款來買一支 Android 手機的希望也幻滅了。(還是說我們捐款都被山寨版網站給吸走了?)
無獨有偶,現在又發生了疑似剽竊 Android-x86 的成果,改成自己的名字來發表的事。話從我們的 eclair 2.0 porting 開始說起。先前在 Android-x86 2.0 初體驗一文曾提到在 bionic linker 處理 weak symbols 上有瑕疵,導致在 x86 上出問題。Yi 首先做出修正,我經過整理後,已提交給 AOSP 的 code review,代號 12801。這已經是去年 12 月 8 號左右的事情了。
不料,Android team 一直沒有 review 這個修正(就像絕大多數修改一樣)。直到昨天,我才收到第一個 review 的結果,這位叫 David Turner 的 Android 開發工程師,希望我拿掉非必要的 debug 訊息修改後,再重新提交。我立刻依照要求做了修改,並重新提交為 14117 號修正。(其實不應該提交成新的 patch,應該取代掉舊的。但我不熟悉 repo upload,所以犯了錯誤。後來發現應該用 repo upload –replace 才對。)
今天 David 說已 approve 這個修改,但 merge 時有 conflict,希望我 merge 或 rebase 後重新提交。我抓了最新的 bionic 要 rebase 時,卻驚訝的發覺這個修改已經存在於 bionic master branch 中,只不過,作者被換了一個人,由 Yi Sun 變成了 Min-su Kim. (姓金? 韓國人?)
如果這位金先生是自己獨立發現相同的問題,並且跟我們做出了相同的修正,那也很好。英雄所見略同,這樣的例子在歷史上屢見不鮮。然而,仔細閱讀了他提交的 14063 號修正後,我的想法有了 180 度的轉變。很顯然的這是我去年就提交的 12801 號修正,只不過被改成了他的名字來發表,連 git log summary 也一模一樣,只是後面的補充說明被拿掉。
為什麼我能如此肯定? 請仔細看 12801 號修正,它其實只改了兩行。第一行才是真正的問題修正,第二行其實只是調整 debug 訊息的輸出,跟問題的修正無關。這部分也是 David Turner 在第一次的 review 意見中希望我拿掉的部分。但是金先生第一次提交的 14063 號修改卻和我們的 12801 號修正一模一樣,連 debug 訊息的修改也一樣。後來的修改才拿掉 debug 的部分。這難道只是巧合? 英雄所見略同? 我難以相信。
說實在的,這只是一個一行的小修正,似乎不值得大驚小怪。本來 Android-x86 就是開放源碼計劃,成果歡迎取用。然而,剽竊他人的成果來改成自己的名字,這是開放源碼界的大忌! 更何況這個小小的修正,也是我們開發者花費數天的時間,辛苦 debug 的成果。因此不能不據理力爭!
當然,我也要再度對 Google Android 團隊提出抱怨。你們 review 社群所提交修改的速度實在太慢了! 如果在去年我提交這個修改的時候,你們就已經 review 並 approve,怎麼會發生幾個月後,其他人又提交了相同的修改,而且還先被 approve 的事情? (14063 號修改是今年三月 25 號才被提交的)
我已經發英文信給 14063 號修正的所有 reviewers 和相關人員,包括金先生,仔細說明事情的前後始末,並要求一個合理的解釋。全文重貼於此:
Hi, I wrote this email to you due to recent change in bionic (commit id: 3cab22c8cf0dcf30718a1452ce9cbb637876cea3) and you are the reviewer or related person. The problem I'm going to argue is not about the patch itself, but who did it. Actually, the issue was first found by the Android-x86 project (http://www.android-x86.org) when we tried to port eclair 2.0 to x86 platform. We fixed the issue and pushed to our git server on Dec 2nd, 2009, (http://git.android-x86.org/?p=platform/bionic.git;a=commitdiff;h=e4b007657165f74b23540af542d77f6a05118f26) The original author is Yi Sun. Later, I think the issue is a flaw of the bionic linker itself, so I decided to submit the patch to AOSP. I cleaned up the patch and repo upload it on Dec 8th, 2009. (http://review.source.android.com/12801) However, the Android team didn't review it, until March 30th, 2010. The reviewer, Davi Turner, asked me to remove unrelated debug change, so I repo upload another patch immediately. (http://review.source.android.com/14117, sorry I failed to replace the old patch since I'm not so familiar with repo upload) Today David said he approved the patch, but it can't be merged due to conflict. When I tried to rebase the patch, I was surprised the patch is already in, but in a different author name, Min-su Kim. Mr. Kim, if you are an independent developer who found the same issue and fixed it in the same way as us, that's totally fine. However, after carefully read change 14063 (http://review.source.android.com/14063) I really believe this is just the patch I uploaded on Dec 8th 2009, except the log is simplified and the author is changed. I feel unhappy since it seems our work was kidnapped. Though this is just a small patch, I'm not so care about the credit. But I really hope you can explain why it happened. Regards,
