比爾蓋子:關於龍芯開發的一點見解

比爾蓋子發表於2014-07-01

作者: @比爾蓋子V

月初的時候,Bowen Han 在《關於》頁面問了這麼一個問題:

我發現現在龍芯的開發者們都很分散,做的工作最後都因為版本的更新失效了,不知道你有什麼高見麼,龍芯官方不怎麼給力啊。

感謝你的評論。這條評論我擱置了很長時間,十分抱歉。

我不想做完備的論述,此時此刻我還在除錯 YeeLoong 8089D 用的 SM712 顯示卡驅動。我只想簡單說一說我的第一看法,但是我依然不小心把它寫成了一篇長論述。因此,特別將這個回答獨立成博文一篇。

實際上,自由軟體社群在龍芯上的工作如此分散的現狀,雖然一定程度上是自由與開源軟體的分散本質決定的,但問題很大的出在龍芯官方和開發者。龍芯官方和大量的龍芯支持者始終認為自己在做民族產業,而不是建設社群。

現在的龍芯社群,也就是那個半死不活的程式碼倉庫、一個沒什麼意義的主站,一個具有一些高手,但也充斥著一些極端民族主義分子的論壇,而作為自由軟體支持者的幾乎沒有,作為自由軟體的龍芯開發者就更少了。據我所知,大概只有龍芯程式碼倉庫核心源的維護者 Alexandre Oliva 這位國際友人了,這部分少數人集中在 loongson-dev 郵件列表,這是龍芯開發的重要力量。

有人可能會說,開發者少的現狀是人力不夠造成的,問題是,本來人力就分散,再不透過社群匯聚眾人之力,人力只能更加分散。我們可以看到,龍芯官方和大量的龍芯支持者並沒有建設出一個活躍的社群。

這樣的現狀,導致連龍芯許多自己的工作都很難完成。

龍芯的 Firmware,即 PMON,本來是自由軟體,但是其幾度易手,程式碼腐爛現象嚴重,急需大規模重構,或完全重寫。然而,不談重構,就普通的維護而言,PMON 不存在自己的社群,官方問題也很大。第一:龍芯的官方網站上,甚至沒有給出完整的正確編譯 PMON 的詳細說明。我曾費盡九牛二虎之力,終於成功編譯了 PMON 二進位制,結果刷入 BIOS 給刷黑屏了。第二:PMON 最初不少問題和解決方法卻都是由不是龍芯官方的劉世偉完成的,官方似乎並沒有積極參與到社群中。而如今,官方還正忙著進行龍芯 3A 的 PMON 開發,原本的 PMON 無人問津。

而劉世偉把不少原本應有官方解答的問題,比如硬體規格等,都進行了解答,他一度被稱為非官方中的官方。雖然說這樣優秀的開發者是龍芯的力量,但也是對官方的一種反襯;另一位開發者,是龍芯的前員工,試圖清理 PMON 程式碼未果,決定重頭編寫一個 Firmware,他的程式碼十分優秀,堅持了好幾年,直至最終放棄都沒有實現 Linux 核心的引導,他的程式碼至今還在 GitHub 中。

龍芯的 Webkit,本來國內曾有幾個人致力於讓 Webkit 流暢的執行在龍芯上,幾個月後專案就死掉了。原因顯然是精力、力量不夠。至今,Webkit 都不支援 MIPS N32 的 JIT 編譯,記憶體分配器 fastMalloc() 這麼多年了,依然會崩潰。

如此可見,如果龍芯官方不像 Novell, RedHat 一樣大力推動自己的社群,那麼最終的結果是官方表現無力,個人開發者無助,龍芯自己的社群都如此不活躍,建立一個和上游密切互動的社群和這樣的協作氛圍就更加不可能了。但另一封面,正是因為沒有和上游協作,因此才造成了現在的氛圍。

再比如,龍芯的 SM712 顯示卡驅動,原本是由一名龍芯官方的開發者提交合併入上游的,我很欣喜的看到上游對龍芯程式碼的歡迎態度。然而,最初因問題被移除的 2D 加速程式碼,直至 Linux 3.15,整個驅動因無人維護被踢出核心為之,沒有任何後續的工作。龍芯官方真的有用心和上游配合,維護這驅動嗎?

還有,龍芯也有一位開發者在支援開發龍芯 3A 的 Webkit,實現了 JIT,成果顯著,但工作沒有進入上游,沒有社群,個人推動它進入上游談何容易。而且,因為沒有社群,他的成果是片面的。沒有人和他合作讓龍芯 2F 的 MIPS N32 也用上 JIT。

簡而言之,開發者完成它的工作以後,最好的結果也就是釋出到龍芯論壇上或 GitHub。沒人,或者說沒有足夠的精力告知上游、推動它合併入、持續維護它。這樣,開發者所作的工作就沒有融入上游,這樣,上游一大改,自己的補丁也就掛了;或是進入上游後許久,又被上游移除,這就是現狀。

反觀對龍芯支援比較好的 Linux 核心,正是因為龍芯開發者與上游配合,因此不談外設相容性,就龍芯 CPU 來說,才能暢通無阻的被 Linux 所支援;再比如 pixman 的開發者,本身是自由軟體的支持者,他為社群開發了 pixman 的龍芯彙編加速程式碼。它們都是在融入社群為前提下開展工作的。

因此,我認為建設一個活躍的社群,開發者把自己的工作融入社群,社群把工作融入上游,這是開展龍芯相關工作的關鍵。而且,我認為這不但是發展龍芯事業的關鍵,而且是很多工作,包括國內 Linux 發行版在內的關鍵。Deepin Linux 在這方面樹立了一面旗幟。

然而,社群的形成不可能一蹴而就,現階段,我認為我們這些龍芯開發者應該多利用郵件列表,加強合作;共同解決問題,並將成果推入上游。這樣一來,社群才可能慢慢形成。

不知你是否同意?

相關文章