纽约市的早晨很忙碌。我的电子邮件收件箱里充满了惊喜。第一个是我开源项目的一个补丁。第二个将在今天下午出现。第三个应该在深夜——或者可能明天——来自一位新的贡献者。
在我的日常工作之外,我还贡献和管理开源项目。我参与的项目数量在过去三年中从几个小型工具增长到十几个以上。开源已经成为学习新技术、尝试现代软件开发实践以及结识志同道合的工程师的好方法。我发现看到优秀的贡献者发送工作正常且经过测试的代码会产生一种独特的成就感,这种感觉与我的应用程序拥有许多满意的用户或为支付我账单的雇主带来强劲收入一样强大。
我询问了过去几个月发送补丁的三位工程师,想更多地了解他们的故事。首先,我想知道是什么激励他们做出贡献。
***
Nicolas Guillaumin 在 Funnelback 的研发团队工作,Funnelback 是一家位于澳大利亚迪克森的搜索引擎技术和服务公司。我与 Nicolas 的第一次联系始于对 WAFFLE 工作项 #8559 的评论
“请查收附件中的补丁。我已经完成了… [每个人都想要但没人愿意实现的这个东西] 的基本实现。”
我请 Nicolas 解释是什么促使他成为一名贡献者
“我们正在研究将我们的 Web 应用程序从 Perl 移植到 Java,我们需要一种方法来替换 IIS 提供的一些功能,例如 SSO 和模拟。我们遇到了各种可能的身份验证解决方案,例如 Spring Security 和 JAAS,但 WAFFLE 似乎是最简单、最干净的。此外,它是唯一一个具有模拟支持的,至少在底层 API 上是这样,并且将其扩展到在 Servlet 过滤器中实现模拟似乎很容易。贡献也很直接:该框架小巧、易于理解且文档齐全。”
Rami Abughazaleh 为 NovaStor 工作,NovaStor 是一家备份软件和数据保护公司,在加利福尼亚州阿古拉山设有办事处。如今,他为 Windows 部署领域的几个相关开源项目做出了贡献,包括 dotNetInstaller,一个流行的 Windows 引导程序。
“我们在生产环境中使用 dotNetInstaller,需要修复一些错误和增加一些功能。起初,我很高兴找到一个开源解决方案,它满足了我雇主的所有要求,这反过来也让我在工作中看起来不错。然后,我想贡献我的一些时间来感谢那些启动并继续改进项目的人和社区。我也有一个个人目标,即学习和获得更多使用各种新工具的经验。”
Neil Sleightholm 经营 X2 Systems Ltd.,该公司在英格兰西南部提供 IT 咨询服务。他尤其在 dotNetInstaller 中实现了安装时权限提升 (#7968)。
“该项目完成了我需要的 95%;商业应用程序要么不足,要么对于我想要的小部分来说太贵了。花时间添加我需要的功能似乎是划算的。代码的质量给我留下了深刻的印象,所以我知道值得投入精力来获得一个可靠的系统。特别是,我认为我从未遇到过一个项目(开源或商业开发)拥有如此复杂的单元测试程序。这意味着我有信心添加功能而不会破坏现有代码。此外,项目协调员愿意协助解决编程问题。”
***
这些都是很好的故事!但是,是什么让 Nicolas、Rami 和 Neil 成为优秀的贡献者?我思考了一会儿,并考虑了他们所说的话、我自己在贡献时的想法,以及我在这些社区中看到发生的事情。
我想出了一份清单,列出了我在贡献工程师中最看重的品质。展现这些品质将使您成为一名出色且可能受欢迎的开源开发人员。
- 有一个要解决的实际问题、业务需求或某种商业驱动的动机。
- 了解项目的目标,并确保您的贡献符合这些目标。
- 提交完整的补丁,以实现全部功能。包括任何测试信息和文档。
- 遵守您所贡献项目的规则。
- 保持谦虚。永远不要自己将自己的名字添加到贡献者列表中——项目负责人应该这样做,如果她或他重视您的工作。
- 放低期望。学会接受拒绝。
- 坚持不懈。改进评论并不断发送更新。
- 诚实且坦率地说明您可用的时间和技能。
- 做一个实干家,而不是空谈家或喷子。
- 完成您开始的事情,不要放弃。
这是我鼓励我的贡献者培养的核心价值观列表。如果您是一位开源项目负责人,您最看重您的贡献者的哪些方面?如果您是一位开源开发人员,您遵循哪些规则?我的清单符合您的世界观吗?我很想在评论中听到您的意见。
4 条评论