首先,感谢您。是的,我就是在对您说。
像我这样的人,事情顺利时往往会受到赞扬,事情不顺利时则会被批评,但在开源世界中,最终决定项目命运的是您。工程师、经理和设计师们努力工作,这是真的。但除非我们有一个积极参与的社区,既仰望云端中闪亮的物体,又脚踏实地,否则这一切都毫无意义。
如果您感到困惑,请允许我解释一下。工程师、经理和设计师往往有一个致命的缺点:作为创造者,我们往往会变得自负,并认为(在没有被告知其他方式时)我们做事的方式是正确的方式。有时,我们需要被打击一下。作为一个工程师,全情投入到一个令人兴奋的新功能中可能非常诱人,但正是我们的社区提醒我们,这并非总是花费时间的最佳方式。有时,玩“打地鼠”式的错误修复工作不如开发闪亮的新功能那么光鲜亮丽,但这并不会使其变得不那么重要。因此,拥有一个积极主动(而不是被动反应)的社区,关注我们的进展并提醒我们优先事项,是一种非常宝贵的优势。
同样,一个积极主动的社区的存在可以带来我们自己可能从未想过的想法。在过去的六个月里,我们收到了人们为 SSSD 提出的一些绝妙的想法。有些想法已经出现在 1.1.x 版本中,另一些则出现在 1.2.x 系列中。我们最初从笔记本电脑用户的角度来考虑 SSSD,希望他们无论是否连接到公司网络,都能够维护一个一致的用户帐户。感谢我们社区的一些建议,我们意识到我们在数据中心也有一席之地,可以帮助服务器度过偶尔发生的内部中断。
这些都是开源真正力量的例子。很容易站出来说“嗯,它更好,因为更多人可以查看代码并发现其中的错误。” 开源的真正力量在于,人们可以查看代码,并将其变成他们梦想中的任何东西。在封闭的开发模式中,产品始终会受到公司工程师和产品管理团队的想象力的限制,也许偶尔的支持电话会产生一些影响(但在我在封闭源代码世界的经验中,这种情况并不常见)。开源不仅欢迎这些想法,我们还鼓励和培育它们。如果我们没有时间来实现某个功能,我们会尽力帮助您,指导您自己完成。
现在,我需要更详细地讨论最后一个话题。说“我们感谢我们的社区”和“我们欢迎补丁”当然很好,但有时很难坚持下去。有时,很难采纳社区成员的想法。有时原因很明显:社区成员想要全世界,放在银盘子上,而且还要切掉面包皮。为我们提供下一个伟大的想法是一件很棒的事情,但有时人们期望奇迹。我们只是人类(或者在某些情况下,是非常复杂的 shell 脚本)。
然后是另一方面。有时,您会遇到一位社区成员,他们非常渴望看到某个功能被包含进来,以至于他们会花时间和精力自己完成这项工作。他们为自己完成的工作感到自豪,并主动提供补丁。不幸的是,正如我上面提到的,有时成为创造者会让我们变得自负。可能没有人反对这个补丁会解决问题或提供一个很棒的新功能,但有时接受一个现成的补丁是不可行的。有时这只是一个小问题:也许补丁不符合项目的风格指南。有时它可能会被忽略很长一段时间,因为主要团队正在为某些付费客户赶工。有时补丁可能确实存在缺陷,并且无法通过任何修补使其在(合理的时间内)变得可用。
在这样的时刻,沟通就变得至关重要。正如我上面所说,一个开源项目的生死存亡取决于它的社区。很容易疏远人们,尤其是考虑到我们开发者经常表现出的傲慢。应该理解的是,虽然通常欢迎所有贡献,但有时特定的贡献是不受欢迎的(或者至少还没有准备好进入主流)。在这样的时刻,与您的社区建立良好的关系变得比以往任何时候都更加重要。
我在这里承认,对于许多难题,例如“我该如何处理无响应的上游?”或“为什么这个人一直提交同一个我告诉他们行不通的补丁?”我没有答案。对于参与其中的每个人来说,这都是一个学习过程,双方都是如此。而且仔细想想,也许将它视为双方对立是问题的一部分。
最初发布于 Stephen Gallagher 的开源博客。
2 条评论