2008/12/26

Neo FreeRunner 新手手冊 (10) 認識 Openmoko 社群, 環境, 工具以及開發人員


Neng-Yu Tu (Tony Tu)

Openmoko 是一個非常特別的專案, 也是目前唯一軟體及硬體都完全根據 Open source 社群精神公開的專案. 2006 年底, 第一個產品 Neo1973 (GTA01) 在市場上販售前, 所有相關的程式碼及開發資訊就已在網路上公開. 在2008 年 6 月 FreeRunner (GTA02) 發售後, 相關的電路圖 (schematics: http://downloads.openmoko.org/developer/schematics/ ) 以及外型設計 CAD 檔 (Housing: http://downloads.openmoko.org/developer/CAD/) 也都開放給開發人員下載. 同時也提供了大部分的硬體 datasheet 供開發人員有機會 base on 在原設計下進行自己的設計.

[開放原始碼社群常使用的工具]
這幾年來, 許多硬體產品除了原先的出貨的功能外, 會有開放原始碼社群加入開發或以 hack 的方式增加原先產品的功能. 比較有名的例如最早建立在 Linksys 的 WRT54G 的 OpenWRT ( http://openwrt.org/ ) 專案, 提供了無線 AP 的相關 firmware. 或是最近的 Google Android 也提供了幾乎完整的原始碼在 http://android.git.kernel.org/ .

而其它的像是 Gumstix ( http://gumstix.com/ ) 也有 Windows CE (http://www.codeplex.com/gumstix) 及 OpenEmbedded (http://www.gumstix.net/) 不同的討論社群. 基本上, 開放原始碼社群進行開發 (極端的分散式開發 ;) ) 使用的工具有下列幾項:

* 郵件/即時線上討論: IRC, mailing list, jabber
* 原始碼管理: svn 及 git
* 知識管理: wiki
* Developer 個人的分享: planet/blog
* Bug 追蹤/Issue tracker: Trac/Bugzilla
* Project 管理: taskjuggler
* 常用的免費服務: sourceforge, google xxx (code/calendar/docs) 等
* 釋出版本及套件下載

[線上討論]
Oopenmoko 的線上公開討論區是在 Freenode 的 #openmoko , Windows 的使用者可以用 mIRC 或是其他 IRC 軟體.

[郵件討論]
在開放原始碼社群 (open source community)中, 傳統的 mailing list 是最常見的討論方式, 以及 irc. 這一點和國內常用的討論區方式不同. Openmoko 的 mailing list 列表在這裡: http://lists.openmoko.org/mailman/listinfo/ 如果你習慣討論區的介面, 可以透過http://lists.openmoko.org/nabble.html 來加入討論.

最重要的有:

* community: 社群主要的討論區, 包含常見問題, 發展方向, 抱怨, 希望...等
* devel: 軟體相關討論: 主要是在應用程式 level, 包含工具, 各個 distribution, release package 討論
* kernel: 相關 kernel porting/driver bugs, 以及介於 software 和 hardware 相關的問題
* hardware: 硬體相關問題討論, hardware bugs
* support: 常見的 distribution 問題, 硬體瑕疵和軟體使用問題等

在這些 mailing list 進行訂閱動作後, 相關的討論 mail 就會寄到你的信箱, 通常一個單一 list 一天都會有數封到數十封不等的信件. Android 或其他的 Open Source 專案, 都以類似的方式進行資訊分享與協同開發.

[原始碼伺服器]
Openmoko 是一個開放原始碼專案, 當然提供所有相關的原始碼供使用者下載. Openmoko 使用下列原始碼伺服器:

<git 伺服器>
位址: http://git.openmoko.org/

可能一般開發人員對 svn 或是 virtual source safe 的原始碼管理方式比較熟悉, 但是對於 git 可能會有一些陌生. git 最主要的優點就是分散式設計, 可以快速 branch. 舉例來說, 每個人自己 clone 下來的 git 都是可以自己 branch, 同時可以在本機 commit 自己的 code. 不需要連回原 server 做 commit 的動作. 網路上的有許多的 cheat sheet (http://git.or.cz/gitwiki/GitCheatSheet), 可以印出來, 讓你快速習慣工具使用. Openmoko 的 git 裏, 主要有:

* Linux Kernel 相關的原始碼及 patch
* u-boot 相關原始碼及 patch
* qi 一個精簡的 boot 程式, 最早是 werner 想用 k-boot 換掉 u-boot, 後來變成帶有東方味的 qi (氣)
* xglamo: FreeRunner 用的 X driver
* 產測相關軟體 production-testing
* 開發人員的自己使用的 tools 及 Distribution fork

Openmoko 的 git 基本上是從 vanilla linux kernel (未修改的 linux kernel from kernel.org), 加上 ARM 相關的 patch, 再加上 Ben Dooks 的 S3Cxxxx 的 porting patch, 最後加上 Openmoko 自己的patches. 相關的說明可以參考這一頁:
http://git.openmoko.org/?p=kernel.git;a=summary

<svn 伺服器>
位址: http://svn.openmoko.org/

Neo1973 開發時, Openmoko 使用的主要版本控制系統. 不過目前 kernel 及 u-boot 都已經被移到 git 中繼續開發. Svn 留下的是一些比較小型的專案/工具, 以及開發人員所會用到的開發工具放在 svn 中.

[Bug 追蹤/Issue tracker]
Openmoko 使用 Trac (http://trac.edgewall.org/) 作為主要的 Bug track 及 Issue track. 通常這類 Bug/issue tracker 工具的功能都差不多, Trac 的介面整合了 wiki 跟 issue tracker 的功能, 是用 python 作維護. Openmoko 的 Trac 在 http://docs.openmoko.org/trac/

[知識管理 - wiki]
開放原始碼專案大部分都會提供某一種的 "共筆" 平台, 讓參加專案以及想發表心得的人可以有一個地方把資訊有系統的紀錄下來. 通常許多的話題都是從 mailing list 開始, 然後討論的結果會到 wiki 或是 Trac �. Openmoko.org 的首頁就是 wiki (http://wiki.openmoko.org/wiki/Main_Page), 同時, Openmoko 的 wiki 也是使用 wikipedia 使用的 media wiki.

* Mailing list 討論有明確結果 -> Wiki
* Mailing list 討論有 bug -> Trac/Bugzilla

要新增/修改/刪除 wiki 頁面上的資料, 必須先在 wiki 上建立帳號, 同時 wiki 上有 一些重要頁面是保護狀態. 只有 Wiki Administrator 才能修改.
[釋出版本及套件下載]
Openmoko 目前釋出的版本及對應的套件 (testing/released/un-stable) 都是放在 http://downloads.openmoko.org/ . 各個社群的 Distributions 可以從各自的網站下載. 要使用預先打包好 opkg 應用程式, 可以參考 http://www.opkg.org/

[相關應用開發]
Openmoko 有自己的 project server (http://projects.openmoko.org/), 申請帳號後即可在 project server 建立新專案. 但是 Openmoko 有計畫要 phase out 這個 server. 所以目前 Openmoko 內部的公開 project, 開始 host 在 google code 上, 例如 motion senor (accelerometer) 的 omnewrotate, 新的 contacts/sms/dialer 介面專案 paroli 等.

[主要開發人員]
Openmoko 最早成員是 Sean Moss/Michael Lauer (Framework)/Harald (Low Level driver and HW consultant)/Werner (bootloader and HW consultant), Sean 帶領了大家開始了這個奇妙旅程.

Openmoko 主要的開發人員都在 wiki 的 Who is Who 頁面中 ( http://wiki.openmoko.org/wiki/Who_is_Who ). 透過 mailing list 或是討論區介面的 mailing list nabble (http://lists.openmoko.org/nabble.html) 是最直接的方式.
雖然大部分的 developer 已經成為歷史 (Sad...), 但是我還是把名字列出來 (2009, March upadte)

[SW]

Andy Green: kernel/Driver (http://warmcat.com/_wp/)
Werner Almesberger: Kernel/Driver/u-boot (http://www.almesberger.net/cv/papers.html)
Matt_Hsu: Kernel/Driver (http://matthsu-abacus.blogspot.com/)
Michael 'Mickey' Lauer: FSO/GTK (http://www.vanille-media.de/site/index.php/about/)
Brenda: Wiki
Roh: IT infrastructure
Gismo: IT infrastructure/SysOP
Marek Linder: Project coordinator
John_lee: OE/Distribution maintenance (http://asleepfromday.wordpress.com/)
Holger 'zecke' Freyther: System/QT (http://zecke.blogspot.com/)
Wendy: Testing
Regina: Testing
Tick: opkg/installer/etk/OE (http://linuxocarina.blogspot.com/)
Will: Design, Product manager
Guillaume 'Charlie' Chereau: FSO/Python (http://charlie137-2.blogspot.com/2009/01/paroli-get-website.html)
Julian: Distribution (http://walkingice.twbbs.org/blog/)
Olv: X/LBS application (http://olvaffe.blogspot.com/)
Erin: GTK/Python (http://i-miss-erin.blogspot.com/)
Jeremy: LBS
Willie: Early kernel/production work (http://openmoko.wordpress.com/)
Sean Chiang: gsmd/gps application
Miles: production test
Jelan Hsu: certification/production test
Raster: enlightment/etk/everything (http://www.rasterman.com/)
Harald Welte: kernel/everything (http://laforge.gnumonks.org/weblog/)
Jserv: kernel/application

[HW]

Tim Lee: EE
Allen: EE
Shawn: RF


And Me ;) GTA01/02 PM, the one should be damned :)

沒有留言:

 
Creative Commons License
著作 係採用創用 CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款授權.