比尔盖子 博客

关于龙芯开发的一点见解

月初的时候,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 在这方面树立了一面旗帜。

然而,社区的形成不可能一蹴而就,现阶段,我认为我们这些龙芯开发者应该多利用邮件列表,加强合作;共同解决问题,并将成果推入上游。这样一来,社区才可能慢慢形成。

不知你是否同意?

Categories: IT生活, Linux

服务器 SSH 端口变更 » « Fedora 20 的 r8168 与 rtl8723be 驱动

12 Comments

  1. @比尔盖子
    是的,就是传说中的2H.其实也出来两三年了吧,一些所在做平板等东西.只是一般个人接触不到吧.据说最近出了第三版硬件.

  2. 部分比较客观,但也有些比较偏颇。

  3. 说到PMON,我也忍受不了它的臃肿与速度.曾经基于LS2H写过一个简单的bootloader, 能启动到linux的命令行下面.但没兴趣继续折腾了.
    大家可以参考一下.
    http://pan.baidu.com/s/1ntsQ5c9
    其实写个loader是很简单的.

  4. …刚刚去了趟PMON编译方法(官方wiki),但是..感觉好简陋.
    archlinux的wiki简直是linux的百科全书….其他都可以参照下,如果什么时候龙芯的wiki能有那个规模….
    其实最主要的还是社区的归属感,社区内的成员对自己代码的态度才是最重要的把

  5. 文中说的GITHUT地址是哪些?去看看

  6. 无论是龙芯,还是别的社区,社区的形成都可以参考本文。

发表评论

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Copyright © 2018 比尔盖子 博客

Theme by Anders NorenUp ↑