WeHack BBS
分享一下我为自由软件贡献代码的经验 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 其他讨论 (https://bbs.wehack.space/forum-10.html)
+--- 版块: 自由讨论区 (https://bbs.wehack.space/forum-13.html)
+--- 主题: 分享一下我为自由软件贡献代码的经验 (/thread-80.html)



分享一下我为自由软件贡献代码的经验 - vimacs - 06-19-2019

在使用一个软件的过程中,发现不满意的地方,或者发现了错误,尝试修改代码,或者报告这个问题,这样就为自由软件贡献了代码。

在上报错误的过程中,可以学到一些开发工具的使用,提高自己开发和调试的水平。

有一次升级了系统之后,发现系统变得不稳定,而且无法关机,于是向 Arch 和 kernel 都提交了错误报告,最后 kernel 的开发者帮助我找到了问题。(https://bugzilla.kernel.org/show_bug.cgi?id=58401) 这次我学会了使用 git bisect,而且从此我的硬盘上留下了一份完整了 git 版内核源码用于以后的学习使用。

我曾经使用 SpaceFM 作为我的文件管理器,偶然间发现在里面输入中文会导致 SpaceFM 崩溃。(https://github.com/IgnorantGuru/spacefm/issues/203) 于是我向 SpaceFM 和 fcitx 的开发者提交了错误报告。在解决问题的过程中,我学会了用 gdb 的 bt 操作打印调用栈。

去年翻译 Designing with LibreOffice (https://github.com/mytbk/designing-with-libreoffice-zh) 的时候,为了实践书中说的样式和模板,我使用了模板管理器,发现模板管理器出了问题,从而给 LibreOffice 报告了一个 bug. (https://bugs.documentfoundation.org/show_bug.cgi?id=116195) 后来子调整这本书的模板的时候,发现模板文件中的图书封面显示不出来,我又上报了一个 bug (https://bugs.documentfoundation.org/show_bug.cgi?id=116195).

有时做一些项目是出于兴趣。有一次社团活动讲 cdm 的重构。 (https://bbs.pku.edu.cn/v2/post-read.php?bid=13&threadid=13613136) 后来我想做一个和 cdm 类似,但是比较符合我的使用思路的作品,于是我写了 tdm,现在已经不维护,被其他人 fork 了。 (https://github.com/dopsi/console-tdm)

我当 BBS 版务的时候,开始用 FQTerm (现在由我维护,在 https://github.com/mytbk/fqterm, 原来的代码在 Google Code),由于项目长期没人维护,我自己弄了个分支自己维护。后来 Qt5 出现之后,我又按 Qt5 和 cmake 的一些文档,把 FQTerm 迁移到了 Qt5 上。

这几年我一直在给 coreboot 贡献代码,想写的东西比较多,就另开一篇文章来谈吧。 (https://bbs.wehack.space/thread-81.html)

为了找出一些私有代码的工作原理,我需要做一些逆向的工作,因此我在几年前开始用 radare2. 在熟悉这个工具的过程中,也发现了它的一些错误,从而也贡献了几个补丁。同时,我也写了一些 radare2 的辅助脚本。

重复造轮子是为了造让自己满意的轮子。我觉得自己写的 liveusb-builder (https://github.com/mytbk/liveusb-builder) 是适合我的启动盘制作工具,相比于其他同类工具,它更符合我的需求。由于对 signing-party 依赖于过多的 Perl 依赖不满意,我写了 easy-signing-party (https://github.com/mytbk/easy-signing-party) ,不过这工具很粗糙,现在也没继续维护了。由于 tuna 的 Qt 弹幕客户端在 i3 窗口管理器下使用不正常,而且我不喜欢 Qt 这种大依赖,于是我用 C 和 libx11 重写了一个。(https://github.com/mytbk/xdanmaku)