开放协作:社区的生死攸关

目前还没有读者喜欢这篇文章。
open source sayings

Opensource.com

首先,感谢您。是的,我就是在对您说。

像我这样的人,事情顺利时往往会受到赞扬,事情不顺利时则会被批评,但在开源世界中,最终决定项目命运的是。工程师、经理和设计师们努力工作,这是真的。但除非我们有一个积极参与的社区,既仰望云端中闪亮的物体,又脚踏实地,否则这一切都毫无意义。

如果您感到困惑,请允许我解释一下。工程师、经理和设计师往往有一个致命的缺点:作为创造者,我们往往会变得自负,并认为(在没有被告知其他方式时)我们做事的方式是正确的方式。有时,我们需要被打击一下。作为一个工程师,全情投入到一个令人兴奋的新功能中可能非常诱人,但正是我们的社区提醒我们,这并非总是花费时间的最佳方式。有时,玩“打地鼠”式的错误修复工作不如开发闪亮的新功能那么光鲜亮丽,但这并不会使其变得不那么重要。因此,拥有一个积极主动(而不是被动反应)的社区,关注我们的进展并提醒我们优先事项,是一种非常宝贵的优势。

同样,一个积极主动的社区的存在可以带来我们自己可能从未想过的想法。在过去的六个月里,我们收到了人们为 SSSD 提出的一些绝妙的想法。有些想法已经出现在 1.1.x 版本中,另一些则出现在 1.2.x 系列中。我们最初从笔记本电脑用户的角度来考虑 SSSD,希望他们无论是否连接到公司网络,都能够维护一个一致的用户帐户。感谢我们社区的一些建议,我们意识到我们在数据中心也有一席之地,可以帮助服务器度过偶尔发生的内部中断。

这些都是开源真正力量的例子。很容易站出来说“嗯,它更好,因为更多人可以查看代码并发现其中的错误。” 开源的真正力量在于,人们可以查看代码,并将其变成他们梦想中的任何东西。在封闭的开发模式中,产品始终会受到公司工程师和产品管理团队的想象力的限制,也许偶尔的支持电话会产生一些影响(但在我在封闭源代码世界的经验中,这种情况并不常见)。开源不仅欢迎这些想法,我们还鼓励和培育它们。如果我们没有时间来实现某个功能,我们会尽力帮助您,指导您自己完成。

现在,我需要更详细地讨论最后一个话题。说“我们感谢我们的社区”和“我们欢迎补丁”当然很好,但有时很难坚持下去。有时,很难采纳社区成员的想法。有时原因很明显:社区成员想要全世界,放在银盘子上,而且还要切掉面包皮。为我们提供下一个伟大的想法是一件很棒的事情,但有时人们期望奇迹。我们只是人类(或者在某些情况下,是非常复杂的 shell 脚本)。

然后是另一方面。有时,您会遇到一位社区成员,他们非常渴望看到某个功能被包含进来,以至于他们会花时间和精力自己完成这项工作。他们为自己完成的工作感到自豪,并主动提供补丁。不幸的是,正如我上面提到的,有时成为创造者会让我们变得自负。可能没有人反对这个补丁会解决问题或提供一个很棒的新功能,但有时接受一个现成的补丁是不可行的。有时这只是一个小问题:也许补丁不符合项目的风格指南。有时它可能会被忽略很长一段时间,因为主要团队正在为某些付费客户赶工。有时补丁可能确实存在缺陷,并且无法通过任何修补使其在(合理的时间内)变得可用。

在这样的时刻,沟通就变得至关重要。正如我上面所说,一个开源项目的生死存亡取决于它的社区。很容易疏远人们,尤其是考虑到我们开发者经常表现出的傲慢。应该理解的是,虽然通常欢迎所有贡献,但有时特定的贡献是不受欢迎的(或者至少还没有准备好进入主流)。在这样的时刻,与您的社区建立良好的关系变得比以往任何时候都更加重要。

我在这里承认,对于许多难题,例如“我该如何处理无响应的上游?”或“为什么这个人一直提交同一个我告诉他们行不通的补丁?”我没有答案。对于参与其中的每个人来说,这都是一个学习过程,双方都是如此。而且仔细想想,也许将它视为双方对立是问题的一部分。

最初发布于 Stephen Gallagher 的开源博客

User profile image.
我是 Red Hat 的首席软件工程师。我曾担任系统安全服务守护程序的首席开发人员,现在我担任 BaseOS 团队的软件架构师。

2 条评论

无响应的上游是获得(或失去!)新开发人员的关键因素。我见过太多非常好的贡献被长期忽略,以至于新人感到生气并离开(通常是永远)。我意识到大多数开发人员都没有报酬,所以除非他们对某个补丁直接感兴趣,否则他们通常不会花时间在上面(“挠痒痒”的比喻)。但是,也许首席开发人员可以轮流查看这些没有人直接感兴趣的补丁。通常实际上并没有那么多,并且对一个人的第一个补丁的响应至关重要。如果他们的第一个补丁及时被接受,我敢打赌他们很快就会产生更多补丁。如果他们的第一个补丁被忽略,他们肯定会产生零个补丁。更糟糕的是,如果这是他们对任何开源项目的首次贡献,他们会对整个想法留下不好的印象,我想象不出比这更糟糕的事情了!

当然,如果一个项目想要社区参与,文档是关键。我研究过进行 btrfs 开发的可能性,但现有的少量文档并没有很好地解释事情。

Creative Commons License本作品根据知识共享署名-相同方式共享 3.0 未本地化许可协议获得许可。
© . All rights reserved.