曾经有很长一段时间,我都模糊地觉得我必须为开源软件做些什么。在某种意义上来说开源是很有意义的事,我会因为做得不够多而觉得有点内疚。
我曾常常对自己说这样的话:
茱莉亚,开源软件非常棒! 嗯,我必须为开源项目添砖加瓦。 是什么项目?呃,我不知道。 我用Pidgin!好像是吧。 去看pidgin项目 好多问题啊!我都不知道从何处下手。 是用C写的!好多代码啊!我该怎么办! 心存内疚地放弃吧。
我试着不再感到内疚。现在如果我要参与一个开源项目的话,我会需要某种动机。MelChua在hackerschool有过一场很棒的演讲,她说动机是由胜任力(知道如何去做!)、自主性(自己做出决定!)以及关联性(知道为何要做!)组成的。
开源项目中会有很高的自主性–几乎没有人会强迫你做什么事。而经常会缺失关联性和胜任力。
对于关联性,我会问自己:
“我希望从参与这个项目中获得什么?”
我想知道这个项目是如何运作的!(从这个理由来说参与Linux项目会超级有意思!操作系统很惊人!通过做gunzipinjulia这个项目我学到了很多。) 我找到一个bug,想要修复它!我想增加一个特性! 我想积累一些编程工作经验以便找到更好的工作! 我觉得这个项目能实现很重要的功能而且我想要完善它!(KelseyGilmore-Innis的Anti-EvictionMapping项目就是一个很棒的例子) 我喜欢和参与这个项目的人来往!(我参加Drupal会议的时候,发现参与Drupal的开发人员都非常可爱,他们吸引着我参与到Drupal项目中去。)
对于胜任力,我会问:
“是否有什么东西会阻碍我完成工作?”
什么情况下我不会参与
通常会是因为相关性阻碍我参与某个开源项目–我不知道我能得到什么!Drupal项目的例子可以很好地说明这一点。Drupal是个非常重要的项目。以前我曾经参与过!我可以再次参与进去的!社区论坛非常友好!但现在对于我来说已经不存在相关性了–我已经不再开发网站了。
大多数时候会因为缺乏相关性而不参与到某个开源项目中去–如果我不用某个东西,那我目前就不会想要学习相关知识,也不认识有谁在做这个东西,也不会很强烈地觉得它有用,因此就不会想参与进去!这其实完全没问题。还有数不清的其他人在参与这些项目!少我一个根本不差的=)
缺乏胜任力的一个例子就是前面说到的Pidgin项目–聊天客户端遇到了一些问题,我想要修复它,但是对于那时的我来说太难了。
什么情况下我会参与
下面要说的是我参与过的开源项目,以及原因:
IPython项目,是因为我想给它增加一个它本来没有的特性!然后它就有了那个特性!我把一个性能要求合进了IPython,结果非常酷。 这个pandascookbook项目,是因为我想了解pandas的时候发现没有那么多我所需要的实用资料!还有一个原因!就是我写了一个东西,别人就可以更加了解pandas了!太完美了。 gzipinjulia项目,用来学习gzip是如何工作的。现在我学会了!棒极了。参与开源项目是件超级有意思的事!耶!
不要感到内疚
你能做的事情有很多。如果你在三个星期里花了超过三十个小时来修复一个网卡故障,那可能是很值的,因为你会学到很多,而且你的硬件会更好地运作!或者也许你会更愿意把这些时间花在陪伴家人朋友或者志愿活动或者踢足球或者看电影或者赚房租上面。
有时我听到有人会说“你必须开发开源软件!”,说得好像这是“普遍的善”一样。不要感到内疚。对你没有意义就不要做!除非你知道能获得什么并且觉得值得你花时间才去做!否则的话就做点别的吧! Lukas Eder是开源项目jOOQ的全职开发者,下面是他对Julia Evans文章的评论:
I’m a full-time Open Source developer (for jOOQ), and I get a lot of requests from people who would like to contribute. They’re often asking where they can start, how they should proceed, etc. Then, I never hear from them again :-) I think that your categorisation makes a lot of sense. The lack of relatedness is something that many people underestimate in search of The Cool. In our case, working on jOOQ means loving SQL and programming languages to the max. This can get quite boring and frustrating if there isn’t a concrete problem with a concrete database at hand. In the end of the day, merely contributing to Open Source is much like being a customer of any other (even non-software) product. People also contribute to – say – Microsoft, to help them improve their operating system, or MS Office. It just feels great to be heard, as a customer. But since Microsoft sells commercial software, people don’t make the mistake of trying to contribute withoutrelatedness. So maybe, we should start seeing Open Source more like commercial software in general.
英文原文:Julia Evans
|