设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

做一名开源社区的扫地僧 (上)

2012-10-15 14:02| 发布者: 红黑魂| 查看: 4520| 评论: 0|来自: 开源中国

摘要: 不知道怎么为开源软件做贡献?从汇报 Bug 开始吧,或许还有钱赚呢~ 且看 Qian Hong 的经验分享。全文转载开始今年的软件自由日(SFD),我在广州Linux用户组的线下活动上做了一个分享,主题叫做《做一名开源社区的扫 ...

如果这些笨办法对你实在没有吸引力, 可以看一下比较有技术含量的批量方法:http://wiki.winehq.org/UnitTestSuites

很多项目都有自己的单元测试, 如果你在Wine上面运行这些单元测试, 就变成一组非常有价值的Wine测试用例. (如果你恰好是某个Windows软件的作者, 希望借助Wine将软件移植到Linux/Mac, 其实只要在Wine下运行一下单元测试, 就能发现和解决绝大部分问题了.)

上面的例子不是特例, 其实很多项目都有前人总结开发出来的批量报bug方法或工具:

  • 怎么批量发现Chromium/Firefox浏览器的bug? 有一个叫做Selenium的开源项目, 它是一个浏览器自动化测试工具, 支持IE, Firefox, Chromium以及一些手机浏览器:http://seleniumhq.org/

  • 怎么批量发现linux桌面环境的bug? 有一个叫做linux desktop testing project的开源项目, 用来做桌面环境和图形界面软件的自动测试工具, 支持linux, windows 和 mac:http://ldtp.freedesktop.org/wiki

  • 怎么批量发现LibreOffice/OpenOffice的bug? 我不知道有什么聪明的办法, 但笨办法倒是很简单: 每个LibreOffice/OpenOffice跟MS office格式不兼容的地方都是一个bug. 面对格式兼容问题, 有的人只会抱怨, 有的人默默地拿走了5000美金... 从Libreoffice的wiki上可以看到, 已经有好几个GSoC学生做的是改进格式兼容的工作.

其实, 凡是跟兼容靠边的项目, 都很容易"制造"大量不兼容的bug :P mono, Wine, ReactOS, Haiku OS, LibreOffice/OpenOffice, mingw/mxe, gnash/lightspark, 这些都是跟兼容有关的项目, 只要google一下 XXX open source alternative, 可以发现兼容类开源项目还有很多, 这类项目非常需要志愿者去找bug报bug. 兼容性相关的问题常常是很有挑战的技术难题, 开发调试不容易, 还时不时需要逆向工程, 遗憾的是这类项目却被骂得最多, 真是吃力不讨好. 如果我们都能做到多报bug, 少抱怨, 这个世界会变得更好.

批量报bug的方法通常跟自动测试/单元测试工具有关, open source testing项目为我们收集总结了大量的自动测试/单元测试工具:http://www.opensourcetesting.org/functional.php

如果给一般的项目报bug对你来说太没技术含量怎么办? 不用担心, 总有够硬的骨头可以啃.

  • 怎么批量发现gcc的bug? 这个我真不知道, 不过当我搜寻这个问题的答案的时候, 我发现Delta这个工具真是帅呆了:http://gcc.gnu.org/wiki/Aguidetotestcasereduction Delta是一个利用二分原理对代码进行裁剪的工具, 对于诊断编译器的bug有很大帮助. 如果报bug可以骗钱, 我会先学习Delta工具, 然后上GCC的bugzilla搜索前人报过的有效的bug, 亲自重现几十个bug.重现bug 其实跟 报bug一样, 也是一种"扫地", 同样能学到很多东西. 俗话说熟读唐诗三百首,不会作诗也会吟, 如果你读过的bug report够多, 重现过的bug够多, 那你也一定会找bug报bug. 像gcc这样基础而重要的项目, 对于新手来说确实不容易找到bug, 但也不是没有机会. gcc在x86平台上可能非常完善, 但在一些冷门的平台上则未必有那么完美, 这也是找bug的一种思路.

  • 怎么批量发现内核的bug? 有一个开源项目叫做linux testing project, 是一个专门针对Linux内核开发的测试套件:http://ltp.sourceforge.net/ 同样, 如果报内核的bug太难, 也可以先从重现别人的bug report开始入手, 照样可以学到很多东西. 给内核找bug同样不容易, 但也不是没有机会, 一些冷门的平台, 例如openrisc, 人手不一定够, 肯定有很多bug等你捉 ;-)

很多人说Linux kernel稳定, 其实linux kernel哪里稳定? 测内核的最伤不起了, 新出的内核动不动就panic, 稳定的内核都是经过多轮测试的. 其实只要有足够多的工业级测试, linux桌面也可以跟内核一样稳定. 开源社区极缺大量志愿QA, 如果你愿意捉虫, 到处欢迎你, 甚至巴不得手把手教你 (就怕人手不够没手教你...) 当你报了200个bug的时候, 会发现原来开源项目bug那么多, 人手那么少...

在批量找bug这件事上, 需要一定的创意和想象力. 比如Selenium原本的作用是测试浏览器, 内置了大量的browser test case, 而ReactOS是一个开源的仿Windows操作系统, 如果把这两者组合起来, 在ReactOS上运行Windows版的Selenium+Firefox/Chrome, 那就变成一组现成的ReactOS test case了, 这时候还怕找不到ReactOS的bug吗?

只要肯动脑, 一定能发明出前人没想到过的批量找bug的方法. 还是那句话, 只要想一想5000美金, 办法一定有的 :P 读到这里, 也许你会发现, 报bug不是问题, 找bug也不是问题, 问题是木有项目!

很多人想参与开源项目, 却不知参加什么项目好. 其实这个问题功利的答案很简单: 如果是冲着GSoC的5000美金去报bug的, 那就去GSoC的官方网站查一下最近5年有哪些项目跟google合作过:http://code.google.com/intl/zh-CN/soc/ 看完之后可以猜出哪些项目明年参与合作的机会比较大, 然后就可以从中找感兴趣的项目去研究. 如果过去对开源项目了解不多, 那么不妨花一两个星期的时间广泛浏览然后再筛选一些进一步钻研.

不那么功利的答案: 只要是感兴趣的任何项目都可以. 如果毫无头绪, 不妨到ohloh.net上随便浏览, 比如看看按活跃贡献人数排名的top 1000:https://www.ohloh.net/p?page=100&sort=active_committers 如果找到一个感兴趣的项目, 还可以在 ohloh.net 上搜索这个项目的related project, 一不小心就会牵出一批有趣的项目. 如果有多个候选项目要筛选出一个进行重点研究, 可以在 ohloh.net 上看一下这些项目的统计数据, 比如: - 近期代码提交数量 - 最近一个月的new contributor的人数 - 高kudo rank的开发者的人数.

一个开源项目经常有新代码提交, 说明这个项目很活跃, 加入活跃的项目才有活干, 给活跃项目报bug才有人处理; 一个项目经常有新贡献者加入, 说明这个项目很吸引人并且对新人的门槛不是特别高; 一个项目有很多高kudo rank的开发者, 那么加入这个项目可以跟很多大牛学习.

如果找到这样的项目, 但它以前没有参与过GSoC, 也可以怂恿项目开发者明年向Google申请作为GSoC的合作项目, 当然, 申请不一定会成功, 因为每年只有大约200个项目有机会跟Google合作. 另外,Google每年都说不保证明年会继续举办GSoC, 所以, 骗钱要趁早...

很多事情是知易行难, 报bug也一样, 哪怕项目找到了, 批量报bug的方法也找到了, 坚持报200个bug也是一件不容易的事情.

怎样才能找到足够的动力持续去报bug呢? 其实也不难.

报bug被修复带来的成就感, 本身就能激励人继续努力. 问题是, 不是每一个bug都能被及时修复. 很多新手经常问, 一个bug要多久才能修复? 网上流传个段子, 正好回答了这个问题:

===
>> 师爷, 写代码最重要的是什么?
>淡定.
>> 师爷, 调试程序最重要的是什么?
>运气.
===

这个段子很经典, 影响bug修复的因素太多了, 有的bug一天就能修复, 有的陈年老bug很多年都没解决. 一个bug要多久才能被修复, 这个问题本身无法回答, 但是换个说法就能带来希望: 报100个bug一年后会有多少个被修复? 根据我的粗略统计, 给Wine项目报100个bug, 一年后大约会有50个被修复. 换句话说, "bug半衰期" 差不多是1年. 其他开源项目, 只要是活跃开发中, "bug半衰期"应该都不会太长. 所以, 保持报bug的动力的方法之一就是多报bug, 这样必定有一部分bug先被修复, 这些成果就会激励自己继续前进.


酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部