安同 Linux 是如何開發的?

安同 Linux 如今並不算出名,但其開發模式似乎很特別。希望有知情人士過來分享一二。


也不知道是誰提的問題,另謝宅撩邀。

AOSC 的開發者主要是核心組四人和周邊組張某鋒和黎民某,基本上比較鬆散。

核心組四人的日常以打包為主,另外吉祥物(我)常年神遊,除了白之外的人都在餅乾群掉節操。白乾活真的比較多,各種 DE 一個個刷…(當然,DDE 我們交給了鄭來刷)

我一般負責看鄭的 Bash,tab 換空格、加引號、$* 換成 "$@" 之類的、另外哪裡缺特性不爽補哪裡……偶爾我去本地化轉轉、維基百科水水或者看看首頁改改。

鄭是高三大忙人,autobuild 主要貢獻者之一,和 autobuild 另一名主要開發者存在難以調和的矛盾(縮進聖戰 + 變數名大小寫之 Shift 的哭泣)。技術革命者,最近 abbs 在慢慢坑。(那是個理論上可以接近 ebuild / ports 甚至帶軟體包的 ALFS 這種玩意的 autobuild 前端)鄭一般負責系統基礎,干 LFS 和 BLFS。技術革命者(是這麼叫的吧)。

卜是萬能的文科生,觸摸屏加筆用戶和 Archwiki 閱讀器。伺服器發行分支的主要維護者。

白一直很嚴肅,很嚴肅,很嚴肅…專業打包三十年。

系統本身上 Hack 不算少,比較標新立異的就是 /opt/32 分 32 位,另外再做偽 multilib。似乎有 /opt 狂魔的趨勢,例如我們有段時間說要做個 /opt/ubuntu(我不說話,我沒黑 Ub)

bashrc 是改 BLFS 的,核心組的王、鄭、白沒有 posix shell 差不多會瘋掉。

構建工具是叫做 autobuild 的玩意,進入了 autobuild3 的新代系。這是一堆和 PKGBUILD 像到詭異但是(在大部分情況下)更偷懶的 Bash 腳本……

由於技術原因和需求原因,我們丟掉了 dpkg 和 rpm 各自的源碼包。

由於 autobuild 就是不拆包,我們幾乎是一個源碼 tarball 出一個軟體包的依賴樹,還是和 Arch 有點像……拆包技能點在 autobuild3 即將被加入(就是這麼拖延症)

對 bug 的處理一般是看到就去上補丁打包修。白最近(總算!)訂閱了 Debian Security Advisory,夠他每天忙活一會的了…

核心組的人日常都會用 AOSC OS,卜壕最喜歡曬 Wacom,還有就是「Wacom 在 OS2 不工作,udev 的問題?」。

打包除了 bugfix 都基本上各管各的。

* * *

「A2 女裝」已經成了個 meme,我中槍得好慘……(現在的最新黑是「十四歲九十六分,秒殺某獅子」?)

周邊組受到高三影響,輸出能力常年較低,主要負責安裝器和 Windows 安裝器。

網頁方面某獅子(那是只前端工程獅!)在各種方面都觸觸的,並且有 JoyNeop 大神的幫助…(不過獅子比較厲害的還是 asm 和 free basic)

葉是個很棒的運維,不過這不是系統的事情了…

* * *

GitHub 是 AOSC-Dev,從那裡差不多看得出每個人習慣的區別了。要知道地理位置?沒問題,git log 看時區 (。)

* * *

完了,我們的一個特性似乎已經被發現了

我們比較有ㄐㄧ情,嗯。

還有鄭怎麼還不來,有這麼好的機會湊齊核心組一起搞基…

* * *

前幾天(11/23)去 ustc 本來是考托的,沒想到 cuihao 在那裡,於是…

啊 USTC 的 LUG 真是個好地方 // 吃貨模式 ON


首先 A2 你把我們都黑一頓真的有意思嗎?再到處開黑槍你給我等著

言歸正傳,我們現在真正在幹活的的確只有那麼幾人,人手從我加入的時候開始就一直是問題,不但沒有足夠人進行維護開發,而且也沒有足夠的測試樣例。

下面的敘述主要是我個人的觀察與個人經歷,因為我們核心組成員相對獨立,我對其他成員的流程也不清楚,而通行的一些準則 A2 已經進行了解釋,我只進行補充。

現在白應該是開發主力,核心組裡面鄭要高考,我要申請大學(想像一下每天除了上課還有一晚上的作業、三篇文書,具體請谷歌 Common Application )而且距離 Deadline 只有兩周了,然後 A2 每天還要在推特微博以及某些群裡面掉節操(話說那個上次問如何優雅地勾搭 angelXwind 姐姐的就是我們的吉祥物 當然被包括我在內的很多人的黒搶毀了)

還要我一點也不壕好嗎!我用來享用 Wacom 的是 2006 年的 Fujitsu Lifebook T4215, eBay 上 69 刀拿下然後又升級了下內存加上了一塊價格差不多的固態硬碟(機器買來不帶硬碟,這在美國是慣例)換了副廠電池,比起餅乾群裡面那位兩台蘇菲一堆其他筆記本的壕差遠了。

因為個人學業關係(本人現在在美國當交換生)我已經從半年前的開發者降級到開發者和測試者之間的角色了。畢竟我不可能一邊編譯一邊寫文書對吧。

作為測試者更多是因地制宜。比如說我手上除了之前提到的 Fujitsu Lifebook T4215 以外還有一台 Dell Latitude XT2, 後者裝備的支持多點觸控的電磁屏(英文其實就是 Digitizer 然後 Windows 硬是給翻譯成了『數字化器』)是由以色列 N-Trig 公司生產的,而我則成了唯一有條件測試我們對該公司的硬體支持度的人。而作為一個測試項目,在除了我們自己的系統以外,我會保留一個用於測試用途的主流發行版(現在是 Ubuntu Trusty/Elementary Freya, 因為白正在移植 Pantheon 桌面環境)

作為開發者,主要任務就是打包。我們使用的工具包括一個順手的文字編輯器(我現在是 GNU nano/GitHub Atom, 取決於操作環境)、一套 autobuild 模板(文件或者大腦均可,但是推薦前者)以及一個合適的編譯機器(本機遠程均可,但是一般為前者)。我們每個人的工作流程略有不同,我本人的流程是:確定要構建什麼包 - 確定包的類型(源碼, Java, 預編譯二進位,受限)- 參考可靠來源(包括官方文檔、 ABS (Arch Build System), AUR 等)編寫 autobuild 配置腳本 - 調用 autobuild 打包 - 測試 - 上傳。我負責的一般都是奇奇怪怪的東西,比如 PyTouhou, Story of a Lost Sky, xnp2, onscripter 等等。除了標準的打包,我還負責過一些 Wine 自動化配置包的編寫,比如東方 Project 部分遊戲和 osu! 等。

因為人手不夠,我們更新一般是不必要則不更新,一般更新的主要理由除了新的包要求就是安全問題。

autobuild 的優勢在於將常用構建系統的通行構建指令內置,減少了人工工作量,使得我們可以集中在更重要的部分;缺點就是拆包複雜而且只能生成自有的 autobuild source archive, 無法生成 dpkg 或者 rpm 格式的源碼包。

在測試者和開發者以外,我還會有機會就去波士頓這裡的 Linux 用戶組,一是刷刷存在感二是跟上業界(我似乎是唯一去那裡的高中生)

然後呢就是 A2 的本子其實很多的,女裝當然是最出名的, 14 歲托福首考狂砍 96 分也是讓我的同學(武漢外校)徹底拜倒(我 16 歲多第一次考托福當時是砍下 109 結果一年半後上個月月在美國又考了一次還是 109, 已哭瞎)

在開發之餘我們還會聊一些計算機相關的東西比如固態硬碟哪家強,鍵盤哪家的最舒服之類的。結果我在白的影響下入了塊 IBM SpaceSaver II 薄膜鍵盤,正在打算入一塊 IBM Model M4 靜音型座屈式鍵盤。

最後 A2 別逼我更新加入更多你的本子。

補充:這就是 A2 問的如何向 angelXwind 姐姐表白的問題: 如何優雅地向 GitHub 上的大神妹子表白?

補充:白現在的鍵盤是 IBM Model M,正在考慮 Poker 2

補充:白的固態信仰:Intel ; 我的固態信仰:Micron,SanDisk,Plextor

補充:白曾經是 Windows 開發者以及 BSD 用戶;鄭一直是 Linux 用戶;我在加入 AOSC 之前是學生會的工程師,負責一段時間的伺服器,加入之後最早也是做伺服器方面的

補充:大家不要刺激白,他曾經在我的影響下看了 SYD 然後整個人就不好了好久

更新:我把我的 LIfebook T4215 賣給了 CeX 然後剛好換了台 Lifebook T5010 with Core 2 Duo T9600


黑槍打得歡樂......

於是我就是上面大家提到的....... 嚴肅的,用著 Model M 擾民的,用著 Intel SSD 天天 mkfs 的那個「白」。補充一下,我是個用著老舊 ThinkPad 筆記本(寬屏能用?)的工作狂...... 其實無論是 AOSC 的活還是些什麼別的,我都是這樣...... 比如給美術榮譽社團(National Art Honors Society)寫一篇 12 頁的網管競選稿(當然最後還是敗下了),以及給國內的同學或者網友做些班服或者海報設計...... 書桌上常年 3 個屏幕:iPad 用來刷 IRC 或者各類 Socialist(Social, as a pro, socialist...) 工作的玩意、ThinkPad 12 寸屏幕一枚,還有個 Acer 23 寸屏放各種信息垃圾(不像 Tom,我手上絕對不拿三台筆記本)。

好嘛,黑槍上面打齊了我也進入正題吧。

AOSC 是個很鬆散的社區,開發方式的話,可以說很不正規(?),但在我們條件允許的情況下,這大概是最好的一種方案了?

1. 任何社區決策,有多少人在,就多少人參與討論,不等待;

2. 開發上儘可能把活都分開,離遠點,但是至於 AOSC OS 本身,底層構建一般都是我和鄭兩個在暑假一頓狠刷搞出來的;

3. 參與一定是開放的,但是你的決定權取決於你是否在場(第一點);

我認為 Autobuild 給我們有限的參與時間提供了最大化的生產力。正如上面倆人說的,我們的 Autobuild 存檔是不提供源碼的,但是任何基於源碼的修改,都會保存在這份存檔里。至於這是否可以成為「合法的」開源,我們暫時都沒有一個很清晰的認知,如果確定這種做法不正確,肯定會立即整改,但是代價就是開發進度會更緩慢(嘗試想像一下家庭網路用來推送好幾個 GiB 級的文件,酸爽)。

至於我們的開發平台,肯定是 AOSC OS 本身,大部分的編譯活動都會在自己的電腦上進行,用於保證質量和測試便利(網速,測試動力問題)。當然我們也有許多來自開源社團和學校的贊助,比如我們的源伺服器、網站伺服器以及一台 BuildBot(我們對構建伺服器的叫法)...... 綜合來說我們的時間並沒有過度浪費在等待編譯或者是規範保障上(後者 Autobuild 已經很好地解決了)。

我分享這個問題到微博後,有人問我不知 AOSC OS 特色何在。我認為我們最大的特色就是通用性和廣泛的兼容性。AOSC OS 兼容所有的 Ubuntu 應用,也間接支持 multilib(multiarch 我不認識,啦啦啦),Deepin 支持則還在推進中(對不起這貨移植起來真是文明用語,我可不是黑,當然是否喜歡也是我個人自由,請不要過多評論)。至於系統的易用性以及應用選擇之類,這屬於產品設計。

汝知乎?安同 Linux 不是正確叫法,AOSC OS 是我們的發行版項目,為 AnthonOS 和 CentralPoint 做基礎的。

補充下:我們社區的「不規範」和「不正統」來自我們對一部分現實條件的妥協,當然,也有對傳統教條的反抗(如果你細心看看我們的 GitHub,你會發現的)。

坐等被揍。

補充:在我們的發行版真的拿得出手前(希望至少能和 Arch 比比整潔度),真不希望我們像 Deepin 一樣被捧來捧去......


這款發行版似乎是少有的鏡像站比(活躍)用戶多的發行版。


作為王口中的『很棒』的運維,怎麼能不冒下泡呢對吧。

那麼這個答案就作為我的一點吐槽吧

那時作為遠景論壇 Linux 版的版主,白找到了我,問我有沒有興趣參與。剛好那時對 Linux 挺感興趣,就同意了。(最後我還是當了名苦逼的網站運維……)

一開始,安同還只是一個閑的沒事幹,基於 suse 的一個拼湊式系統。這一點被許多人,當然包括當時的開發團隊吐槽過。因為那時的我們連 LiveCD 都不會打,連安裝器都沒有→_→(對,內容有些時間上的錯亂……)

不過很幸運的,我們總算走上了正軌。

現在的我們,有了來自台灣國立暨南國際大學(National Chi Nan University)贊助的兩台伺服器(其實是虛擬機……只是配置還行),一台拿來做 Repo ,一台拿來開發(其實就是編譯打包)(雖然性能在被很多人吐槽後,有的選擇了本地擼包)。還有了許多好心的 mirrors,特別是 ustclug,他們真的幫了我們很多呢。

(這其實就是廣告吧喂。)


過了那麼久了,我來從「周邊組」的角度來談談我讀此問題的理解吧……

PS:我就是王同學口中的「黎民某」,2012年11月進入尚未形成社區的「安同開發團隊」。

1、AOSC OS的開發是自發的,很大程度上也是因為安同開源社區始終是開放的。社區四大主力(CT(核心組))中,鄭、卜、王都是在2013年初「安同開發團隊」解散之後才加入開發的。圍繞AOSC OS的附屬產品(autobuild、安同開始程序、LinkC等)都是自發進行,社區不會去指派任務給某人(當然涉及QA除外)。這樣看來,AOSC OS本身也是一樣,是我們一幫學生的興趣產物(或者說,「高級玩具」),而實用只是目標其中之一。

說到興趣產物,有人曾問過我開發這些東西有什麼用,我只能告訴他:我只是玩玩而已。非要功利一點地說的話,「實踐出真知」應該是比較貼切的了。像本人開發安同開始程序,其實是學C語言順帶做出來的。

2、AOSC OS的開發由學生的零碎時間拼湊而來。安同開源社區的成員組成多為在校學生,自然學業占時較多。而且就目前(2014年11月),核心組幾位開發者都逐漸進入高考備考狀態(周邊組平均晚一年),開發的效率和質量自然就高不到哪裡去。所以,整個社區的所有開發,都是課餘時間拼湊出來的。

3、我覺得有幾點促進了安同開源社區的發展:

  • 相同的身份(促進互相理解)
  • 相同的價值觀

對於系統架構和技術細節,很抱歉我不太清楚,因此無法從技術角度剖析問題。

總之,題主所說的AOSC OS(安同 Linux),可以這麼說,是一個興趣愛好產物。以它為中心形成了安同開源社區,又是一個聚集興趣愛好產物的地方。我們只是一幫Full of passion的學生,做著自己喜歡的事情。

(利益相關:安同開源社區周邊組成員)


2015 年底被 @艾雨寒 拉進去打醬油至今的來強答一發(當然我說錯的話大佬們儘管指出):

首先社區叫 AOSC(Always Overuse Shell Community, Anthon Open Source Community, 安同開源社區, 安徽同志網(劃掉))

網站爲:

  • 社區門戶: https://aosc.io
  • GitHub: https://github.com/AOSC-Dev
  • 黑歷史:安同_新浪博客 (劃掉)

創始人之一兼領導人(特首)爲 @白銘驄

AOSC OS 爲 AOSC 現在的主要項目。


現在最新的 Core 版本是 4.2.2 (代號 Duang-Duang,AOSC-Dev/aosc-os-core 上看 Tag),Core 5(代號 eMMC) 還在開發。

系統底層如果我沒記錯的話 OS 2-3 的時候應該是由冰琳大佬和果凍一起構建,OS 2 是按照 BLFS 構建,OS 3 以 OS 2 爲工具鏈構建,之後也差不多這樣(大概)。

現在 AOSC OS 支持架構與主要維護者:

  • AMD64 (x86_64): MingcongBai (Mingcong Bai)(@白銘驄,果凍,特首,老白,白)等等一大羣人。
  • ARM (armel, arm64):Icenowy (Icenowy Zheng)( @Icenowy Zheng,冰琳,鄭)
  • PowerPC (ppc32be,ppc64be):一樣是果凍(畢竟也就他有設備...)
  • MIPS (mips32,mips64el):lmy441900 (Junde Yhi)(@堯以俊德,以俊德,小以以,自由門)(大霧)

其中 MIPS 和 PowerPC(大端序) 因爲設備(窮),本身問題就多等等原因相對進度比較慢。

更新模式爲(半)滾動,分爲兩個分支,testing 打包完就推包(用於測試),stable 每月更新一次。

具體打包/更新規則:

  • 第一天:收集更新信息並通知對應打包者;如果需要引入新特性也在這一天內通知開發者。
  • 第二到二十天:打包,打包,打包(打完的包推送到 testing)。
  • 第二十天到月底:測試,並解決問題(如果沒完成則延遲到下一個月)。

如果有架構沒能完成本月內計劃的打包:

  • 第二十到二十五天:在這五天內完成打包(完成了的架構照常進行測試),如果沒完成就延遲到下一個月。
  • 完成打包到月底:測試,並解決問題(如果沒完成則延遲到下一個月)。

更新類型:

  • 一般更新:普通的更新版本,以及重構需要重構的包。
  • 安全更新:oss-security 以及 Debian Secutiry 等地說明需要更新並有 CVE 編號的安全修復,以及打包時出錯導致的安全問題等安全性相關的更新內容。
  • 嚴重影響使用(比如 bugfix):打包失誤等等原因導致的無法正常使用的包。如果是上游的原因則需要討論。

一般只根據月度更新規則進行更新,後兩種允許根據需要進行更新。

每月更新內容會在 https://aosc.io 以及郵件列表等地查看。

打包工具現在主要爲:

  • 柳樹魚(liushuyu,實在找不到他的知乎帳號了)同志用 Python 寫的 ACBS(AOSC-Dev/acbs,AutoBuild CI Build System):主要的打包工具。
  • 萬能的獅子同學(@Lion Yang)寫的 ciel(AOSC-Dev/ciel)(此處應有表情包)(怕被獅子打死就不把圖發上來了):用於規範化打包程序等等。
  • ABBS 樹(AOSC-Dev/aosc-os-abbs),近似 Arch pacman 的 PKGBUILD 以及 Gentoo Portage 的 ebuild。

簡單點說大概就是在 ciel 環境裏跑的 ACBS(以前是 ABBS) 根據 ABBS 樹進行打包。

(現在獅子在跑 ACID 項目,也就是用 ciel+ACBS 把樹裏所有包全跑一邊,以此來發現不規範的)

決策一般是提議者先在羣裏或郵件列表裏提出,然後經過討論決定要不要實行。

具體信息可以參考社區 GitHub 上的各個項目的 Wiki。


以下是一些雜七雜八的內容:

社區裏一些常見的人(黑槍時間)(其實前面水了那麼多就是爲了現在開黑槍):

  • 特首:果凍,吃果凍會肚子痛。IBM ThinkPad 忠實粉絲(果凍型自走 ThinkWiki,收藏有不少老 ThinkPad,現在日常用機是 ThinkPad T61),壕 x1,還是個學霸。初看很嚴肅,但是實際上挺好相處的。很認真很認真的一個人。
  • 冰琳:大佬,擁有一大堆 ARM 開發板/SBC,與 AOSCC 2017 獲得外號 「雙鴨山的女人」。
  • cth(@柴天浩):AOSC(R) Certified(TM) FatOatku(TM)(劃掉);白學家;音游大佬;跟果凍是住在同一個宿舍的同♂學。
  • 以俊德:小以以以以以以以以以以以以以以以;MIPS 適配填坑者,上帝之子的擁有者;AST 作者(所以什麼時候才肯去學下設計呢)(跑)。
  • 柳樹魚(抱歉我真的忘了他的正式稱呼是什麼)(別打我):在楓葉國上大學的壕;LMMS 社區成員;不定時冒泡。
  • 獅子:全能(前端後端移動端化學翻唱種菜樣樣行的日語系大學生);修仙大師。
  • 金黃色葡萄球菌(StephDC (Staph. aureus),似乎沒有知乎帳號):名字說明一切;獅子的迷妹(大霧)。
  • 陳先生 97(@陳克斯 ):任豚(所以你什麼時候買交換機?);水羣擔當。(註:此人最近脫團了,燒!)
  • 艾雨寒:美工大佬;獅子的室友(獅子御用起牀助手)(大霧)。
  • Dr.Thril(疑似 @Nikita Nikitin):發言幾乎永遠跟當前話題不沾邊,每句話都透露著大寫的 #RICH 與 #Dalao 氣息。
  • 葉總( @葉曉星 ):運維大佬。
  • 彼得彼得(@蔡希瑀):大佬,大佬,大佬。
  • Joy Neop:偶爾冒泡,冒泡內容往往是回復以前別人開的黑槍(
  • 開源王( @開源哥 ):今天開源王挖到果凍埋在 ...... 的石油/冰毒了麼?

實際上還有不少人... 但是我沒黑槍好開了(比如莉莉艾塔)... 或是怕被打(比如怕被 A2 打)。

內部小組織(大霧):

  • AOSC 考古隊:以果凍、書記爲首,從各種渠道淘老機器並進行維修/復原然後拿來折騰老系統甚至適配 AOSC OS。
  • Surface User Group:主要是 cth(Surface Pro 3),萌狼(Surface Book)。
  • ThinkPad User Group:一大羣... 真的是一大羣...

(依次爲:380XD, 380Z, T61, T410, X220(x2), T460p, P50, T470p, X1 Carbon 5th Gen)

(照片是我站在窗戶外面拍的... 所以有層玻璃的反光)


Leader 是 @白銘驄 MingcongBai (Mingcong Bai)


以前參加過過,還給我郵了,蒙的里安的光碟,不勝感激 @王銘燁 Arthur2e5

可是後來一橫心,退出了。(qq群退了),以高考為主,當然沒考上心目中的學校,一氣之下入伍了。

現在是無業游民一枚,主攻雲計算。


推薦閱讀:

能否利用 bash for windows 學習 Linux系統?
【瞎折騰-01】deepin系統菜單快捷鍵魔改(恢復快捷鍵)
Arch滾炸了是一種怎麼樣的體驗?
在Linux上執行rm -rf操作會導致設備永久變磚嗎?
微軟有沒有可能為Linux系統開發桌面環境?

TAG:操作系統 | Linux |