最近購得一個openwrt書籍《智能路由器開發指南》,做者張永智。html
Building a smart router with openwrt服務器
做者網址:http://openwrt.bjbook.net/網絡
做者提供軟件包下載服務,和openwrt代碼搜索引擎,同一網站。架構
書中所提到的系統使用openwrt 12.09和openwrt 15.05.1介紹。框架
做者但願經過本書的學習可以掌握openwrt各類技術的應用,同時在必定程度上能夠參考openwrt的技術架構,使本身的職業技能有一個質的提升。異步
在異步社區http://www.epubit.com.cn/book/onlinechapter/43506有本書前兩章內容,可供參考。分佈式
做者在前言中提到了openwrt成功的祕訣,能夠學習參考。工具
能夠實現路由器功能的開源軟件不少,爲何只有OpenWrt成功了?OpenWrt軟件成功的關鍵在於3個方面:領導者、基礎設施以及實現軟件的技術。一般領導者是最重要的,由於領導者決定着社區的規則和技術方向,可是每一個人都是獨特的並且是沒法複製的,所以一般沒法借鑑。基礎設施和實現軟件的技術則是能夠借鑑的。學習
OpenWrt社區採用六大基礎設施工具支撐整個社區的運轉,這六大基礎設施工具分別是代碼管理工具Git、郵件列表、自動構建工具buildbot、文檔管理工具WiKi、Trac和技術論壇。測試
代碼管理工具Git能夠跟蹤文件和目錄的歷史信息,包含4個W(Who、When、Why和What),即誰作了修改,什麼時間作了修改,爲何修改以及修改的內容是什麼。此外,Git還支持分佈式代碼倉庫,適合開源軟件項目的跨地域開發,這個工具可讓每一個人看到代碼的變化過程。OpenWrt通過了12年的發展,代碼倉庫還保留了最初的提交記錄。
郵件列表是代碼審查及代碼提交集成的地方,開發人員將修改代碼生成補丁發送給全部的郵件訂閱者,每一個人均可以進行代碼評審,核心開發人員看到後會將代碼集成到代碼倉庫中。郵件內容能夠永久保存到郵件列表中。郵件列表和普通郵件的主要區別在於訂閱機制和存檔機制,每一個人均可以自由訂閱並查看歷史郵件。
自動構建工具buildbot的核心是一個做業調度系統,它會將任務排隊,當提供了任務所需的資源時,執行任務並報告結果。buildbot不只僅支持持續集成及自動化測試,還支持應用程序的自動化部署和軟件發佈的管理。同時在多個平臺開發時,一般最後的編譯驗證都是重複的,編譯機器人(buildbot)將這一部分接管過來,每日自動下載代碼進行編譯驗證,並將安裝包上傳到文件服務器上,若是編譯失敗則將用郵件通知感興趣的人。
文檔管理工具WiKi的特色是具備開放性,可讓任何參與人員很是方便地進行編輯、訪問和搜索。大多數軟件公司的軟件文檔均保存爲二進制格式,在通過一段時間和人員流動以後,這些文檔就會成爲固定的資料,由於它會被遺落在某個角落而沒法找到,而OpenWrt社區的軟件開發文檔和使用手冊均保存到WiKi上。WiKi是一個協同寫做和分享平臺,容許全部人修改頁面。WiKi使用簡化的語法來代替複雜的HTML語言,下降了內容維護的門檻。
Trac是一個集成WiKi和問題跟蹤管理系統的項目管理平臺,能夠幫助開發人員更好地管理軟件開發過程,從而開發出高質量的軟件。任何人均可以使用該系統來提交Bug並查詢當前的進展。Trac採用面向進度的項目管理模型,採用里程碑的方式來組織開發。里程碑是以ticket(問題)來組織的,全部的問題都解決了,就到達了里程碑。但社區並不徹底聽從這個標準,由於其開發人員所有是志願者,一般到了必定時間會發佈一個版本。
技術論壇是一個技術討論的平臺,每一個註冊用戶都可發帖參與討論。在開發過程當中,每一個新版本的說明經過該平臺發佈。
社區的運轉是經過以上所述的六大基礎設施工具來實現的,咱們經過這些工具能夠理解到,開源軟件和社區的精髓在於其開放性,任何人員都可以經過網絡自由地獲取其信息並參與其中,這樣能夠激勵每一個人貢獻出本身的力量,開發人員同時也從社區得到回報。開源社區的工具大多都是相同的,掌握這些工具能夠幫助你深刻了解開源社區和OpenWrt。
OpenWrt技術上成功的祕訣在於:統一編譯框架、統一配置接口(Unified Configuration Interface,UCI)、開放的軟件包管理系統及其讀寫分區系統、系統總線ubus和進程管理模塊procd。
全部的這些功能並非一次性設計出來的,而是隨着時間的推動,根據用戶和開發進展逐步發展起來的,每一種技術都有其獨特的價值。
那麼怎樣向openwrt提交代碼呢?
參考做者的建議:如何貢獻代碼