uncategorized

[翻译]开源指南-如何为开源做贡献

[翻译]开源指南-如何为开源做贡献

Sec1. 为什么要为开源做贡献?

在[freenode]的工作帮助我发展了很多技能,这些技能在后来的大学学习和实际的工作中都很受用. 我认为在开源项目中的工作对我自身的帮助和它对项目的帮助一样大 —@errietta

为开源做贡献是学习,教学,以及构建任何你能想象到的技能的一种有效的方式.

为什么人们会想开源做贡献呢,有很多原因!

提升已有的技能

不管是写代码,用户界面设计,图形设计,写作,还是组织,如果你希望练习你的技能,那么开源项目中一定有合适你的任务.

遇到和你有类似感兴趣的事情的人

开源项目以其温暖,受欢迎的社区而使得人们常常在多年之后回访,很多人在参与开源的过程中建立了终身的友谊,无论是在各种会议中碰面还是深夜在线上谈论关于玉米饼的话题.

找到导师以及教导别人

和别人在一个共享的项目上工作意味着你需要向别人解释你是怎么做事的,以及向他人寻求帮助. 对于每个参与其中的人来说,学习和教导他人将是一件令人愉快的事情.

构建公共的产品将对你的声望(以及职业)有帮助

显然,你所有的开源工作都是公开的,这就意味着你自然而然地拥有了可以随时用来展示你的技能的demo.

学习社交技能

开源提供了联系领导力和管理能力的机会,例如处理冲突,组织团队里的成员,以及为工作划分优先级.

人人都可以参与改变,尽管改变很小

你不需要成为一个终生贡献者才能享受到参与开源的乐趣. 你是否曾经在某个网站上发现了一处打字错误,希望有人能修正它? 在开源项目里,你自己就能完成. 开源帮助人们通过他们的生活和他们认知世界的方式中体会到自己的影响力和力量,这件事情本身是令人愉悦的.

Sec2. 贡献意味着什么

如果你是一个开源项目的新手贡献者,那么这个过程可能会有些令你恐惧. 你应该怎样找到合适的项目? 如果你不会写代码怎么办? 如果事情出错了怎么办?

不要担心!有各种各样的方法可以参与到开源项目中,而且一些小提示可以帮助你充分利用你的经验.

你根本不需要贡献代码

一个常有的关于为开源做贡献的错误观念是你一定要贡献代码. 事实上通常项目除了代码之外的部分最容易被疏忽. 如果你为项目作出这些类型的贡献的话,那么你就帮了项目的大忙了!

我因为我在 CocoaPods 的工作而出名,但是大多数人并不知道我并没有在 CocoaPods 这个工具本身上面做什么工作. 我在这个项目上的时间基本上花费在文档和品牌化这样的事情上. —@orta

尽管你很喜欢写代码,但是其他类型的贡献也是一种参与到项目中以及解除其他社区成员的很好的方式. 建立这些人际关系将会给你在项目的其他部分工作的机会.

我第一次参与到 Python 开发团队是因为我2002年6月17日向邮件列表发送了一封关于接受我的补丁的邮件. 我很快发现了开源的bug,并决定写一封邮件摘要来告知项目组. 他们给了我一个很好的理由来开启一个新的话题,但更重要的是当有人指出某个地方需要修复的时候,我可以收到通知. —@brettcannon

你喜欢计划事情吗?

  • 组织关于项目的讨论会或者见面会
  • 组织项目大会(如果项目有的话)
  • 帮助社区成员找到正确的大会以及提交发言提案

你喜欢设计吗?

  • 重构布局来提高项目的可用性
  • 进行用户调查来重新组织和提升项目的导航和菜单
  • 汇总风格指导来使得项目有一致的视觉设计
  • 为T恤设计图案或者新的logo

你喜欢写作吗?

  • 编写以及提升项目的文档
  • 组织一个文件夹来存放关于项目如何使用的示例
  • 为项目开启一个简报,或者整理邮件列表里的高亮部分
  • 为项目编写一个教程
  • 为项目的文档做翻译工作

真的,[文档] 真的超级重要. Babel的文档工作到现在为止做的非常好,并且成为了Babel的一大亮点特性. 有的部分还亟待完善,并且哪怕是为文档增加一段话,我们也是欢迎的. —@kittens

你喜欢组织事情吗?

  • 链接重复的问题帖,以及提出新的问题帖标签,从而使得事情井井有条
  • 浏览开启的问题帖,并且关闭旧的问题帖
  • 在最近开启的问题帖中提出一些需要被澄清的问题来推动讨论的展开

你喜欢编码吗?

  • 找一个开启的问题帖来处理
  • 问问你是否能帮助开发新的特性
  • 自动化项目的构建
  • 提升工具的质量和测试过程

你喜欢帮助人们吗?

  • 在例如 StackOverflow 或者 Reddit 这样的提问网站上回答关于项目的疑问
  • 在开启的问题帖中回答人们的疑问
  • 帮助主持讨论版面或者会话频道

你喜欢在编码上帮助别人吗?

  • 在别人的提交上面进行代码审查
  • 编写项目使用的教程
  • 为别的贡献者提供指导

你不仅仅能够在软件项目上工作

虽然开源通常指的是软件领域,但是你可以在任何事情上和别人合作. 有很多的书籍,菜单,列表,课程都是以开源项目的形式展开的.

例如:

尽管你是一个软件开发人员,做文档工作可以帮助你开始熟悉开源. 通常做和代码没有关系的工作会让你少些胆怯,并且合作的过程能帮助你构建信心和经验

Sec3. 为自己选定新的项目

如果你打开问题帖跟踪器发现你看到的东西令你感到迷惑,那么你不是一个人. 这些工具需要一些隐藏的背景知识,但是其他人可以帮助你,并且你可以问他们问题. — @shaunagm

任何除了修补语法错误之外的事情,向开源做贡献就好像在聚会上走向一群陌生人. 当一群人在深度讨论goldfish的时候你开始谈论llamas, 那么他们看你的眼光会有些奇怪.

在盲目地根据你自己的想法来加入之前,最好先学会领会人们的普遍想法. 这样做可以让你的想法被注意到或者听到的机会大大提高.

分解一个开源项目

所有的开源社区都是各不相同的.

在开源项目上花费数年时间意味着你会变得非常了解这个开源项目. 但是当你走向新的开源项目的时候,你会发现词汇,基准,和交流的风格和之前的项目大相庭径.

这也就是说,很多开源项目会遵从一个相似的组织结构.理解不同的社区角色以及所有的过程会帮助你很快地适应一个新的项目.

一个典型的开源项目有以下几类角色:

  • 作者: 创建项目的人或者组织
  • 拥有者: 对组织或者仓库有执行拥有权对人(不一定是项目的作者)
  • 维护者: 负责推进版本和管理组织层面的项目的贡献者(维护者也可能同时是拥有者或者作者)
  • 贡献者: 任何对项目做了任意贡献的人
  • 社区成员: 使用项目的人. 他们可能会在项目的讨论会上很活跃或者在项目的方向上提出自己的见解

◉ End.


参考资料:

  1. 原文

如博文有叙述不妥以及不准确的地方, 望各位看客不吝赐教, 感谢.

Share