2011/1/2

Android 基本產品化的常見問題 (Framework and APP) - Part 1

剛進入 2011 民國 100 年, 就聽到水果機的鬧鐘不響, 跟 Android 簡訊有機會會亂發的 bug 在 google code 的 issue list 被 complain 到洗版. 從第一次聽到 google 要推出自己的 app framework 到現在已經 3 年多了. 想當年, 從一開始有這個消息, 就一直不斷有人問那 Openmoko 怎麼辦? 不過當初我覺得這個問題, 應該留給時間來決定, 因為我們是沒辦法管到這麼多的, 一個想要 change the world 的專案, software framework 或 business model 並不是我們能夠控制的. 同時, 要 maintain 一個 open source 的 software framework 跟搭配 FOSS community 的發展, 也並不是那麼簡單的事.

當年 (2006) FOSS (Free and Open Source Software) 並沒有像現在那麼多人認識 (多少是相對於當時, 現在並不見得真的多很多, 但是關心 Linux (驅動) 的人肯定多了不少 :P ). 由於這個專案剛開始只是內部的一個特別專案, 所以不管內外, 當年在台灣經常被問到幾個問題, 每次都跟 sean 在內部解釋半天, 可是當年解釋應該很多人聽不懂吧 :) 現在 Android model 算是比較 stable 的 model 了, 可以拿來借答一下.

* 你們開放 source 之後, 人家拿你們 source code 不是就可以做一樣的產品了嗎?

Open source 改版的 cycle 跟傳統 MS 3-5 年的 cycle 是不一樣的, 大概是 3-4 個月一個 cycle. Release source 是在產品交到市場後 "才" 需要 release source code (不過這一點是違反 real FOSS 的 release early/often 原則). 以 Android 的複雜度對一般的 RD 來說, 即使能力還不錯, 拿到 Android 最新的 source 到能夠 tune 完變成稍微 ok 產品, 最少也需要 2-3 個月或更長. 何況大部分廠商都極端依賴所謂 chip 原廠的 BSP (Windows or Android), 等到原廠 BSP 出來, 其實 Android 差不多都發新的版本了. 然後因為大部分 RD 其實都不會 (可能公司網路也不行) 加入 community development, 所以 code 就不斷的被 fork 出來, 改完一版基本上最多利用個半年, 然後重來一次. 大部分的狀況, 一堆 dirty hack 其實也只能讓產品剛剛好跑的動, 但是想要跟 S 公司的 tab 或是 H 公司手機比品質其實是很困難的. Google 可以控制 release schedule/發展方向, 即使你拿到 source, so what? 你還是痴痴的等 Android 下一版是 2.4 還是 3.0, 每天都還是不停的 google 是 4 月還是 5 月出下一版. 只要你 follow 遊戲規則, 你不知道定規則的人何時放棄跟 linux kernel upstream merge 的 policy, 或何時 freeze source code release.

Open source 很大的一部分在於分享的精神 (當然 RSM 還有對 "知道" source 在幹嘛的需求), 這一部分是東方文化背景比較難了解的. 西方相對來說對於取用別人 donate code, 再把 code donate 回去的習慣是很自然的 (可能是宗教或教育的關係). 東方相對來說, 很容易陷入藏東藏西的循環裡.

* 免費的 open source code or Linux 能用嗎(functional)?

很久很久以前 :P 是一堆人 "覺得" 或振振有詞的說 Linux 不能用 (or 不好用) 在消費性電子產品, 或是適合沒有 UI 的產品上 (先不管 QT :) ). Linux kernel (with android patch) + Android framework 現在好像這類問題什麼都沒有了. 反而是大家直接拿來 tune 一 tune 就滿坑滿谷的 Android 產品, 覺得免費真好, 用的超高興. 但是這裡有一個問題, AOSP (Android Open Source Project) 的 code, 並不是為了每一家的產品量身訂做或是 debug. 在 Nexus S/Milestone 沒問題不代表在其他 ok.

所以現在又有一個奇怪的觀念, 就是 Android 東西放上去會動不是就 ok 了嗎?

我不確定這系列能寫或該寫多深, 可能也要分個幾次寫或是修修改改補充完, 工程就是這樣, 基本 porting 跟產品化的問題並不會隨時間改變. Android 產品還是幾個部分:

* Driver
* Power management
* Media service
* USB
* Display and UI framework
* Upgrade policy/flow
* Service and Intent settings
* Prepare for next release
* Code Open = IPR Free?

寫下來自己當備忘吧...
張貼留言
 
Creative Commons License
著作 係採用創用 CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款授權.