誰偷了 Android-x86?

By cwhuang, 2010 年 03 月 31 日

先前曾提到,有個山寨版的 Android-x86 網站,明明對 Android-x86 計劃沒有任何的貢獻,卻大剌剌的在首頁放了要大家捐款的圖示。想藉本計劃的名氣來吸金嗎? 只可惜本計劃人氣低落,至今為止只收到三筆,總共 20 元美金的捐款而已。他人想藉本計劃吸金發財的夢想可能要破滅了! 當然我想得到捐款來買一支 Android 手機的希望也幻滅了。(還是說我們捐款都被山寨版網站給吸走了?)

無獨有偶,現在又發生了疑似剽竊 Android-x86 的成果,改成自己的名字來發表的事。話從我們的 eclair 2.0 porting 開始說起。先前在 Android-x86 2.0 初體驗一文曾提到在 bionic linker 處理 weak symbols 上有瑕疵,導致在 x86 上出問題。Yi 首先做出修正,我經過整理後,已提交給 AOSPcode 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,

在 Android-x86 上跑 Google maps

By cwhuang, 2010 年 03 月 25 日

Odroid 的朋友最近發了一則消息,說成功修改 Google maps 和 YouTube,在 Odroid 上跑起來。我下載了他們修改過的檔案,放到 Android-x86 1.6-r2 上測試,果然也跑得起來。真是太酷了!

以下就是 Google maps 在 Eee PC 901 上執行的情況:

Google maps on Android-x86
Taipei Streets (Google maps)

看 YouTube 影片也沒問題:

YouTube on Android-x86
YouTube Playback

安裝方法很簡單。 Read more »

Android-x86 1.6-r2 釋出

By cwhuang, 2010 年 03 月 20 日

最近在 donut-x86 branch 新增不少功能或修正,因此釋出了 1.6 release 2。主要的特色包括

細節以及下載地點,請參考 release note

加入 busybox source

By cwhuang, 2010 年 03 月 17 日

我已經將來自 CyanogenMod 計劃的 busybox source code 加到 Android-x86 上。經過一些小修改後,已經可以在 x86 上編譯成功。

如果有人不知道什麼是 busybox 的,它是一個 Linux 的工具集合。把一些常用的指令,集合在一個小小的執行檔中。只要用不同的名字去叫用它,就有不同的功能。例如 ls、ps、grep、find… 每個功能都叫做一個 applet。在大多數的 Linux embedded system 上都可以見到它的蹤影。不過不包括 Android — Android 內建一個類似的工具叫 toolbox,不過它提供的功能遠少於 busybox。

請注意目前 busybox 執行檔是放在 /system/xbin。它的優先順序低於系統執行檔放的位置 /system/bin。部分 busybox 和 toolbox 有重疊的功能,例如 ls、ps 等。因此直接打這些指令時仍是叫用 Android 的 toolbox。若要使用 busybox 中的功能,要用 busybox <applet> 的方式呼叫,例如 busybox ls。至於兩者有何不同? 請自行比較一下就知道了。

注意 Android-x86 發展的人也許會發現,Android-x86 不是已經有 busybox 了嗎? 和現在加的有何不同? 其實原本的 busybox 的版本是 1.15.0,以 prebuilt 的方式被加進來,而且是 link glibc。現在的 busybox 是 1.16.0,以 source 的形式加到 Android-x86 tree 當中,因此編譯後才會產生執行檔,而且是 link Android 的 bionic。簡單的講,原本的做法是比較暴力的非正統(偷懶)方式,因此當初決定僅有在 DEBUG=1 或 BUSYBOX=1 的情況下才 enable 它。而以 source 的形式加入才是正確的做法,不論在什麼 mode 之下都可使用。

將來或許會把 prebuilt 的 busybox 移除,直接用新的 busybox 替代。不過這牽扯到 Android-x86 loader 的設計和修改,有點麻煩。有時間再來想辦法。

Android-x86 加入 3G 上網功能

By cwhuang, 2010 年 03 月 15 日

我已經將實驗性的 3G USB 網卡支援功能加入到 Android-x86 的 donut-x86 branch 當中。請 repo sync 取得編譯。測試過的網卡是 Haiwei E160 和 E172。目前可以傳送簡訊,並透過 3G 無線上網。

如下圖,這是在 Eee PC 701 上測試 3G 網卡的情形。

Eee PC 701 接 3G USB modem

插上 3G 網卡後,系統應該就能自動偵測到。可以注意右上角的無線訊號 icon 已經能正確秀出訊號強度。這時開啟桌面的「簡訊」程式,就可以收送簡訊了。

用 3G 網卡傳簡訊

Read more »

趕快開發熱門的 Android 應用程式吧!

By cwhuang, 2010 年 03 月 07 日

如果你在開發 Android 的應用程式,或即將打算開發,趕快加緊你的腳步吧! 只要在 Android Market 上,擁有評價 3.5 顆星以上,或是超過 5000 次以上的唯一下載次數,就有資格拿到 Google Nexus One 或 Motorola Droid 手機。不過僅有在這兩支手機已通過認證國家的開發者才有機會拿到。還好台灣也是其中之一。

差不多在三月三號,也就是我拿到小禮物那天,符合資格的開發者就已經收到這個通知信了。像我的朋友 LIME IME 的作者就得到通知。

雖然一開始有人以為是詐騙信,不過在求證 Google 後似乎已經得到了證實。看來 Google 為了力拼 Android 的佔有率,不惜砸下重金,以拉攏全世界的開發者,對抗競爭者(Apple?)。

當然這個機會目前是給已在 Android Market 經營出良好成績的開發者。如果現在才要開始寫還有機會得到手機嗎? 我也不知道啦。但我想應該是很有機會的… 只可惜我大部分的工作都是在做 Android 底層的移植,極少在寫上層的應用程式。不然我也想來試試…

老實說 Google 這樣的做法真的很聰明(或者說很邪惡?)。雖然說看似要花不少錢,但是跟 Google 一年的營收比起來真是不足微道。更何況它的效益驚人。因為開發者都是 power user,能帶來良好口碑和一票的用戶。這比其它的行銷方式更有效。

其實我當年在 ASUS 透過 EeeCommunity 計劃推動捐贈 Eee PC 給 Linux 社群的開發者就有同樣的意圖。只是我們的規模和強度完全無法和 Google 現在的做法相提並論…

Google 的小禮物

By cwhuang, 2010 年 03 月 03 日

一個多月前收到關於 Google Android Developer Lab 的消息。那時幾乎已經是報名的最後一天,趕緊上網填了資料寄出。過年前就收到通知,我得到參加的資格。也沒多想,直接記在行事曆當中。

今天就是這個 Developer Lab 在台北舉辦的日子。不過事情很多,加上這個會議從中午 12 點半就開始,連午飯都來不及吃。其實一開始有點不太想去。但為了有機會和 Android 開發者近距離接觸,還是決定參加。還好去了,否則可就後悔莫及。

報到時,領到一張綠色貼紙,被要求貼在胸前。我不是很喜歡在身上亂貼東西,不過還是照辦了。遇到在台北 Google 工作的朋友,他告訴我,等會將發小禮物。我問每個人都有嗎? 要是用抽獎的,我一定抽不到啦。他說是的,每個人都有。我心想 Google 給的禮物應該不會太差吧? 但了不起就是 T-恤之類的紀念品吧?

想不到,Google 的這個禮物還真不小哩! 接近中場休息時, Read more »

OfficeFolders theme by Themocracy