你是如何参与开源社区的?

10
似乎加入项目的正常进程是先贡献一段时间,赢得信任,然后被接受为社区成员(即获得提交权限)。现在,我已经知道了“最好的方法”,可以说是这不是我的问题。我希望得到的是:其他人是如何参与其中的?肯定不是每个人都走了“找到一个项目并提交补丁”的路线,或者他们有吗?我不认识开源社区中的任何人,所以我很想知道...也许你已经认识社区中的某个人,并且自然而然地加入其中了?也许你对某个错误感到沮丧,因此开始定期做出贡献?也许你只是在SourceForge上发现了一个项目...更新:看起来最常见的原因是解决棘手问题,引用singpolyma:“寻找要贡献的项目通常不是正确的方法。”相反,您应该通过为您已知和使用的项目做出贡献来加入开源社区。重要提示:请告诉我您具体的经验,不要给出一般性答案。此外,仅当您是项目成员或补丁贡献者时才回答。请勿就如何加入社区提供建议,这不是我要找的答案类型。如果您想就加入社区提供建议,请在此其他主题中回答

优秀回答:

相关:


5
此问题似乎不适合本站,因为它与具体的编程问题无关。 - Wladimir Palant
6个回答

9

我的个人经历:

  1. 我在1991年左右开始参与Tcl社区的建设。邮件列表和后来的usenet新闻组是与人交流联系的重要方式。我专门从事用户普及和教学工作,并最终写了两本书。其中一本仍然印刷出版已有十年: http://www.amazon.com/dp/0201634740

  2. 现在我使用很多Python,非常喜欢cx_Oracle包。同样,我积极参与邮件列表并贡献了一些补丁。

  3. 我提供了几个我为工作编写的软件包。通过将它们开源,我能够得到一些不错的反馈,由于这些不是当时雇主的“核心技术”,所以他们不介意分享这些代码。其中最受欢迎的两个软件包是:

    http://sourceforge.net/projects/kap/ Kinetic Application Processor - 这是在我在中国互联网骨干网工作期间构建的。

    http://code.google.com/p/orapig/ - Oracle Python Interface Generator - 它生成Python代码来调用数据库中定义的API,并包括一个XML-RPC数据库接口。

建议:

与其寻找要加入的项目,不如试着为自己已经在使用的项目做贡献。

通常很难加入“核心”开发,因为(a)在大型项目中,这可能是一块相当庞大的代码需要理解,而且(b)可能已经有一组核心开发人员在工作了。

因此,假设你喜欢某个软件并想开始做出贡献,你可以从边缘开始。以下是几个具体任务,可帮助您与团队融合:

  • 编写一些测试用例以添加到回归测试套件中。
  • 浏览错误数据库并查找要处理的错误。 这可能是进入核心开发的最佳方式。
  • 查看功能请求数据库,看看是否有小任务可以完成。
  • 查找“用户文档”请求...其中许多请求涉及编写示例代码,您可以提供这些内容。

祝好运!


@Mark Harrison:谢谢你的提示。我正在寻找轶事,你有吗? - Nick Bolton
这是我第一次看到一句话中出现了“Oracle”和“pig”这两个词,而不是“Oracle跑得像只猪” :-) - paxdiablo
@Mark Harrison:非常出色的回答!!! :) - Nick Bolton

6
人们通常参与的方式是:
  • 你在日常工作中使用FOSS产品
  • 你注意到一个问题或缺失的功能
  • 你给维护者发邮件询问这个bug/缺失的功能是否真实存在
  • 维护者回复说是的,这是一个bug/缺失的功能
  • 你决定尝试修复/添加这个bug/功能
  • 你疯狂地编写代码
  • 你向维护者提交了一个补丁
  • 维护者要么嘲笑你,要么说“非常感谢!”

如果你重复了最后几步,维护者可能会给你项目的RCS存储库的提交访问权限,然后你就可以真正变得危险了。但最重要的是,要靠你自己去做一些事情,即编写一些代码 - 仅仅对一个项目“感兴趣”是不够的。


谢谢,但你有没有任何具体的故事可以分享,讲述你是如何参与其中的? - Nick Bolton
我在几个项目中都按照我所描述的方式进行了操作 - 我不知道你所说的“stories”是什么意思。 - anon
Pax的回答非常接近我所想的,更多是轶事。 - Nick Bolton

5

我加入了DiSo和Greasemonkey。

我发现参与项目的最佳方式是在项目早期加入或者对项目非常感兴趣。对于DiSo或我参与的各种Github项目,是前者;对于我的Greasemonkey贡献,是后者。

寻找要贡献的项目通常不是正确的方式。使用这些工具并找出你想要建立/修复的东西,然后去做。


关于不特别寻找项目来做贡献的有趣评论,我认为我倾向于同意这一点... - Nick Bolton

4

最近,我的妻子在孩子长大一点后重新开始了兼职工作,因此我对GnuCash进行了一些小的修补。

我宁愿用热火钳夹住我的眼睛也不想重新安装Windows,但是GnuCash缺少某些其他会计软件所具有的功能,所以我告诉她我会添加这个功能。

事实证明,在他们将我的补丁收录之前,他们使它变得更好了(可能最终补丁只有1%是我的),但至少现在我们可以使用GnuCash代替那种专有软件。他们也非常响应 - 从提交补丁到补丁可用仅需一周左右,并在三周后将其纳入产品中。

我还曾经调查过向Linux内核的过程记账中添加一个补丁,但是付出的努力远远超过了我的需求 :-)

我并不定期做出贡献,只是按需贡献(找到自己感兴趣的领域)。有些人把这当作一项爱好,但我宁愿把空闲时间花在孩子身上,不幸的是,我的雇主不会为我在其他地方做出贡献支付报酬。

最后一点让我特别恼火,因为:

  • Linux补丁将极大地帮助我们的产品(以及其他很多产品)。
  • 另一个我们的产品的行为变化降低了我们产品的有用性。
  • 解决方案在概念上相当简单(需要的工作量是测试,因为问题会对任务切换产生高影响,并且非常普遍[每个使用Linux的人])。
  • 编写补丁比我们最终实施的解决方案更快。
  • 解决方案是一个临时权衡(ptooee)。
  • 现在,全世界没有人能够受益于我们的补丁(包括我们自己)。

作为对最后一点的回应,你们公司使用了一些开源软件,你有机会修复它,但简而言之,他们没有让你这么做?反而花时间绕过去了...哎呀!哈哈 - Nick Bolton
好吧,他们没有让我用他们的钱做这件事。我本可以利用自己的时间完成它,但正如我所说,我有其他的优先事项。如果我从中受益(就像GnuCash一样),我并不介意造福全世界,但是对于内核工作,我将得不到任何好处——我又为进程记账关心什么呢? - paxdiablo

2

我所做的很简单; 我打开了一个。

我已经有一位永久的开发人员,还有另外两位在幕后捐赠代码的人。该项目处于非常早期的阶段,因此没有多少用户下载它。


0
一个开源项目真正有用的是拥有插件架构。相比于尝试向Linux内核添加功能,为例如文件格式等编写简单的插件要容易得多。这使得建立社区变得更快、更容易。

待办事项:请提供一个轶事。


编写Linux内核模块并不难。内核模块就像插件一样。 - Zifre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接