it-swarm.cn

我如何找到一个好的开源项目加入?

我一年前才刚开始工作,出于与其他人相同的原因,我想加入一个开源项目:帮助创造有用的东西并进一步发展我的技能。

我的问题是,我不知道如何找到适合的项目。

如何找到适合初学者的项目?我应该搜索什么属性?什么是项目可能不适合的警告标志?not?有没有什么工具可以帮助人们与开源项目匹配?

有一个类似的问题 here ,但是这个问题与就业有关,仅限于PHP/Drupal。

152
Pops

我的第一个开源贡献是为我以前在以前的付费项目上使用过(如果没有它的话,将会遭受很大的损失)的图书馆。在我的初次使用中,我发现了代码中的一个错误,因此我创建了一个补丁,加入了该项目,并将其提交进行审查。

大约8个月后,当我有空闲时间时,我决定通过为项目做出更多的贡献来回馈(并致力于我的开发技能)。因此,我克隆了存储库并开始熟悉代码库。在向代码库提交次要修补程序补丁并监视功能请求几周后,我收到了一个功能请求,为该项目添加了一个相当重要的模块。

由于生成许多单独的补丁程序对于任何重要的开发都是非常繁琐的工作,因此我将存储库克隆到git hub上的一个分支,并开始删除代码。几周又几千行代码之后,项目负责人和我一起以与其他代码库一致的方式,将修复程序集成和测试到库中。

我从中学到了很多宝贵的经验:

  • 当我开始时,我不知道如何使用Git,到最后,我可以熟练地创建远程跟踪分支,并将它们合并或重新设置为master分支,而不会费力。
  • 我从VS 2008开始,最终迁移到Linux和Monodevelop从事代码编写工作(因为VS的unicode延迟,行尾在git中很痛苦)。事实证明,在* nix中不能做的事比在* dows中可以做的事多。
  • 我以前从未真正进行过任何单元测试,Nunit简直是小菜一碟,编写单元测试非常简单。
  • 我必须学会吞咽舌头,聆听以及练习耐心。没有必要对您在开源项目中的立场立足,因为每个参与人员都知识渊博(可能比您自己了解得多),并且能够基于不交付的实质性内容接受/拒绝您的想法。同时极其谦虚和有益。
  • 仅仅让另一位熟练的开发人员着眼于我的大量代码,便指出了我以前从未考虑过的风格缺陷(以及我指出了他的代码中的缺陷)。对我来说,我了解到定义常数比使用带有详细注释的一堆神奇数字要容易/更好。

该特定项目基于在所有级别的网络协议上生成和解码网络数据包。我对低级网络很有兴趣,因此很高兴与另一位对此领域有共同兴趣和知识的开发人员进行讨论。

如果您只想弄湿自己:找到一个已经使用的项目;克隆存储库;并开始查看您是否可以修复一些错误和/或添加一些单元测试。用新鲜的眼光看别人的代码库似乎很吓人,但这是学习中非常有价值的技能。提交一些补丁。您可以期望您的代码在开始时会受到严格审查。不用担心,这是获得项目管理员信任的正常过程。

在与项目建立绩效基础后,管理员开始寻求更多职责,例如提出新功能或要求分配以实施功能请求。

如果您在一个主要的开放源代码存储库网络(github,sourceforge,google代码)上找不到一个已经存在的项目,请考虑一个您真正想要使用的应用程序,该应用程序尚不存在,然后启动您自己的应用程序。

做好谦卑的准备,并期望工作被拒绝,以便进行进一步的修订。任何人都可以向开放源代码项目中添加代码的神话是完全错误的。您和Push访问之间总会有网守。您的代码越好,从长远来看,随着您对项目管理员的信任,对代码的审查就会越少。如果这是您的项目,那么您将成为该网守。

更新:

我只是考虑了一下,然后意识到,我不必理会很多答案都引用了哪个项目。对于那些想知道的人,它是 SharpPcap 。首席开发人员Chris Morgan非常专业,而且观点明确。他在管理项目方面做得很辛苦,并且教会了我很多关于OSS项目成熟所需的知识。

由于个人时间的限制,一年多来我一直无法提供代码,但我仍然尝试通过潜入Stack Overflow并偶尔回答有关SharpPcap的问题来回馈他人。

111
Evan Plaice

在这里,我建议您做些什么以找到您的完美匹配:

  1. 如果您有一个已经使用,了解和关心的开源项目,那么它应该是您尝试的第一个候选人。否则,请考虑您通常想要做什么,然后在该区域中搜索项目。

  2. 找到潜在项目后,请勿着急进行。尝试自己使用它。从描述和评论看来,它的作用是否令人满意?如果不是的话,那还不是一个完整的表演终结者。也许这是您进入并真正有所作为的机会。毕竟,没有人需要其他开发人员来提供完美的产品。但是,当您在自己感兴趣的领域获得新技术的第一手经验时,它将为您提供重要的见解,使其成为该项目的一部分。

  3. 同样,在开始在项目上投入过多时间并了解其来龙去脉之前,请考虑在项目邮件列表,论坛甚至错误跟踪系统中闲逛几周。如果您将开始定期为该项目做贡献,那么您将在那里花费很多时间。

弄清楚:您喜欢在附近闲逛,还是对您有拖累?感觉这个项目有一个良好而充满活力的社区,还是快要死了?那里的核心人员似乎在鼓励和指导新移民,还是您将自己生活?

对可能在不同领域的多个项目执行这些步骤,并且当您加入错误的团队时,您不太可能感到失望。这样的经历可能会阻止您将来再次这样做。

还有一些想法:

如果您真正感兴趣的项目是一个知名度很高的项目,并且周围有很多开发人员和活动,那么您可能很难在那建立足够的声誉,例如在社区中获得落实权利或有趣的角色。在这种情况下,请考虑加入具有较低可见性的相关衍生项目。例如,与其尝试开始为jQuery做贡献,不如寻找适合您的jQuery插件。稍后,您可以考虑“向上移动”。

如果您喜欢一个项目,但对它的大小,复杂性或代码质量要求感到恐惧,请考虑从支持角色开始,例如测试,文档维护或错误报告验证。如果您在项目邮件列表中询问,他们目前最需要哪种帮助,他们将非常乐意为您提供指导。 :)

这样,您将可以在项目中学习并建立声誉,同时为项目做出更多贡献,这比开始提交次标准补丁之前要提交的次标准补丁要好得多。

最后也是最重要的一点:如果您在一个地方被烧毁,请继续前进;不要放弃。

希望能有所帮助。

28
kdubinets

我强烈建议您找到一个真诚的兴趣并积极地se的开源项目。

原因很简单:它使琐事和业余爱好有所不同。

看一下你的电脑。您使用了什么开源软件?猜测可能是Chrome或Firefox,或者可能是Open Office或Instant Messenger客户端。它们是否完美?或者,如果可能的话,是否有一些微小的事情要更改?

如果有的话,现在该采取行动了。

9
user1249

我建议像人们已经从事多年一样,寻找(或开始)一个项目,开始使用开放源代码软件来做事。这对您来说似乎微不足道,甚至可能过于简化。但是,很难描述使用某种东西,找到一个错误,获取源代码并进行修复的满意度。或者,也许对其进行更改,使其以您希望的方式工作。

另外,不要只是为了“参与”而黑客。我有95%的Linux内核补丁永远都不会消失,我知道sure除了我,没人会想要它们,而我如果任何其他有能力的内核黑客曾经见过d,可能会被迫接受精神病评估。但是我仍然喜欢piglatin_printk()的实现,该实现几年前开始于4月1日,:)

是的,让您的代码和思维过程在许多其他有能力的人士面前是无价的,因此学习如何进行沟通和协作也是如此。一个单独的项目是向您展示不该做的好方法。提示,不仅仅使用版本控制软件,邮件列表和错误跟踪器,它还有其他更多功能。

首先,我建议先挖掘 (Ohloh )来查找您可能对感兴趣的软件,并使用。下载,构建,玩游戏。然后去抢别的东西。最终,您会想要改进某些东西,或者意识到您有实现与发现完全不同的东西的冲动。

另一有帮助的是为一家开放友好的公司工作。我的公司广泛使用Xen,因此我发现有趣的错误并加以修复没有问题,因为无论如何我们都需要这样做。他们也不介意参加RFC和规范草案之类的员工,因为我们最终将使用结果。

8
Tim Post

OpenHatch 是专门为此创建的。

报价:

OpenHatch是一个非营利性组织,致力于使潜在的免费软件贡献者与社区,工具和教育相匹配。

您可以按类型,技术,所需的技能水平等浏览项目,并找到与您的水平相匹配的项目。

7
phw

在人们开始使用开源开发的过程中,我反复注意到的一件事是,他们对大型项目的复杂性和规模感到不知所措。几年前,我遇到了同样的问题,根据我的经验,最好不要立即关注更大的项目。

在花了一些时间看完我可能喜欢的项目之后,我意识到它们仍然遥不可及,然后我自己开始从事很小的项目。我认为仅在Github上发布代码就可以了,无论它是否真正相关或其他人是否会开始使用它。最终,人们可能会开始对您的工作产生兴趣。甚至否则,您将获得信心和技术能力,以缓慢地转向更大,更受欢迎的项目。

4
Checksum

当我开始时,我在网上搜索选项,事实证明,找到适合初学者的东西很有挑战性。

有些项目之所以难以做出贡献,不是因为它们太先进,而是因为社区不受欢迎。因此,撞墙时不要灰心。

在搜索过程中,我决定整理一个清单,列出10个开源项目,初学者可以在无需太多压力的情况下开始支持。这是要使用的链接:

十个项目,供初学者支持和学习

希望对您有所帮助,如果发现不错的产品,您随时可以添加更多!

3
Eenvincible

我建议阅读: http://open-advice.org/

它的目的是帮助那些创建和维护社区的人,以及对自己想加入哪个社区或如何加入社区不自信的人们。

如果失败,请找到一个任务与您产生共鸣的项目,或者分叉并为已经对您有用的项目做出贡献。

祝好运。

3
user549213

有一个专门用于此的新网站 代码52 鼓励新开发人员通过每周启动一个新的OSS项目来参与开源。

这个想法是,对于以前从未参与过开源的人们来说,这似乎并不那么令人畏惧,并且希望他们也会更倾向于参与其他OSS项目。

3
Marcus Swope

我建议您根据自己感兴趣的主题开始一个项目。

通常,通过从事一个项目可以学到很多东西。无需查看其他人如何编码即可学习如何更好地编码。有时,您实际上会看到不该做的事,因为其他人通常没有比您经验丰富的经验。

通常可以帮助查看其他人的代码,但是您将仅通过使用的库和组件在自己的项目中遇到其他人的代码。

经验会教你什么是好事和坏事。

2
Brian R. Bondy

我是Google代码的项目所有者,我正在寻找贡献者。 (不过,我会not将此答案误用于广告。)因此,我的观点可能对您很有趣。

您首先必须找出感兴趣的内容。然后在与您的兴趣相关的某些领域中发展一些专业知识。然后找到一个需要和需要您的专业知识的项目。

项目越小,已经存在的贡献者越少,寻求贡献者的机会就越大,您可以直接与作者/项目所有者联系。告诉他们a)您的专长是什么b)您认为可以在项目中应用的专业知识c)您认为可以实现的目标。

请记住:仅了解一种或两种主流编程语言就是不是专业知识。

2
Ingo