作者: @比尔盖子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 在这方面树立了一面旗帜。
然而,社区的形成不可能一蹴而就,现阶段,我认为我们这些龙芯开发者应该多利用邮件列表,加强合作;共同解决问题,并将成果推入上游。这样一来,社区才可能慢慢形成。
不知你是否同意?
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/44756.html