为什么要在开放环境中工作?

目前还没有读者喜欢这篇文章。
neon sign with head outline and open source why spelled out

Opensource.com

是什么阻止您在开放环境中工作?

我在一家开源公司从事一个开源项目,但每天仍然遇到这样的情况:从事开源软件的人员更喜欢私下工作(有时是这样)。他们不在公共邮件列表中讨论技术问题,正常的聊天发生在内部聊天室而不是公共 IRC 中,新功能宁愿在私人视频会议频道上演示,也不像例如 Hangout on Air 那样公开演示。

当然,有些情况下沟通必须是私密的:如果涉及到客户或客户数据,那么(特别是对于上市公司而言)就需要私下对话。销售额或其他财务方面也是如此。但现实情况是,工程师们大多数时候听不到任何销售额方面的信息。而且大多数客户案例都只是通用的软件问题,在不提及客户姓名的情况下,可以公开讨论。这就引出了一个问题,为什么人们不公开协作——尤其是在最终的源代码发布到像 GitHub 这样的公共仓库时。

害怕泄露

当您与客户合作时,总会有像客户支持这样的部门无法在开放环境中工作,这意味着他们不会加入公共 IRC 频道,而是加入私人频道,以保持客户数据的私密性。从事此类客户案例的工程师可能始终潜在地担心,讨论案例细节可能会泄露客户数据,因此无论是否讨论任何客户特定问题,都始终在内部频道上进行讨论。这就引出了下一个问题。

选择和切换的麻烦

当您在内部频道处理客户相关数据时(并且因为相应的同事只能通过这种方式联系),您必须不断思考和决定某个消息是否可以发布到公共频道。可以理解的是,此类案例评论是在内部频道上进行的,为了获得连贯的思路,仍然应该留在内部频道。关于其他非客户相关问题的讨论则应该转到公共频道,这意味着需要不断切换频道。这种选择和切换频道无疑是一种麻烦,人们会尽量避免。

不确定性

可能也存在这样的情况:工程师正在处理客户的功能请求或错误,但这些请求或错误并非任何客户特有。但仍然存在不确定性,不知道这项工作是否可以公开讨论。因此,在有疑问的情况下,讨论再次发生在私下。

害怕分心

虽然社区贡献(据称)总是受欢迎的,但它也可能被视为一种分心来源。项目的核心成员可能不得不中断她的工作,开始思考社区成员的观点,然后再回到原来的工作。这有时可能会让人分心,尤其是在您有时间限制的版本发布时,因此这可能不受欢迎。

感知不到好处

我们的项目社区相当小,这可能会引出一个问题:如果似乎没有人感兴趣,为什么要公开讨论事情?为什么要经历上述所有麻烦?如果没有观察者,树真的会在森林里倒下吗?

缺乏自信

另一个可能的原因可能是害怕承担责任和可追溯性。乍一听可能觉得可笑,因为源代码最终会出现在公共仓库中。这里更深层的原因可能是缺乏自信。公开的讨论会被记录为聊天记录、功能演示视频或博客文章,这使得其他人可以提出批评性反馈,并可能使当事人感到不自信。

我坚信在开放环境中工作是好的。即使社区很小。在开放环境中工作可以让您从社区成员那里获得输入,从而丰富对问题领域的了解。其他人会给出完全不同的视角,并可能列出您从未想到的用例。此外,如果社区成员被纳入整个社区,他们会感觉更好,并开始做出更多贡献。有关如何以代码以外的方式做出贡献的想法,请参阅我的文章:不编写代码为开源项目做贡献的 10 种方式

我与社区成员的相遇经历非常好,因为每个人都很友好,并且与社区成员亲自见面总是很有趣。那么,我们能做些什么来克服我上面列出的障碍呢?

  • 首先,制定一项政策,规定除非有充分的理由反对,否则所有沟通都必须默认在公共频道上进行。
  • 提醒自己从公共频道开始新的一天。当您从那里开始时,它会为自己设定某种默认设置。它也鼓励其他人在那里聊天,从而建立起足够的规模,让对话进行下去。
  • 不时提醒人们注意上述政策。
  • 尽快将客户信息与技术信息分离。也许直接在支持人员层面进行分离。NullPointerException 就是 NPE,无论是由付费客户还是社区成员报告的。
  • 记录公共频道,以便社区成员可以重读讨论的内容。
  • 如果您需要安静地工作,那么不要只将外部社区拒之门外。关闭外部通信,完成您的工作,然后再回来——分心就是分心,无论来自其他社区人员还是同事。
  • 如果您觉得编写(例如,解释您的工作或新功能的博客文章)感到不舒服,请先将其交给您信任的另一个人。除非您甚至没有尝试交付好的结果,否则不会有糟糕的文章。更广大的社区总是会感谢任何额外的信息。
标签
User profile image.
Heiko 是一位长期的开源提交者。他目前在 Red Hat 工作,负责服务器和软件系统的监控和管理。Heiko 拥有卡尔斯鲁厄大学计算机科学硕士学位,并撰写了两本关于 JBoss AS 和 Enterprise Java Beans 的书籍。

1 条评论

自 90 年代以来,我一直在做很多开源工作,既为各种项目做贡献,也运营自己的项目。

几年前,我编写了一个库,这个库被广泛使用。我通过其自己的 github 组发布了这个库,但有一个我正在开发的公共 fork 版本。该 fork 版本甚至在其 Readme.md 中标记为“这是一个不稳定的 fork 版本,您在这里看到的一切都是正在进行中的工作,请勿使用此版本,请使用来自正确仓库链接的稳定版本。
人们没有听从,他们克隆了我的 fork 版本,遇到了问题和不兼容性,并开始为尚未存在的东西创建大量工单,所以我最终花费大量时间回答工单,而不是推进该库的开发。
当时我链接的 IRC 频道也显示了类似的景象,人们开始在那里抱怨,或者询问他们还不应该使用的东西。
当我决定重构该库以使其符合 PHP 中的新 PSR,并使用 PHP 命名空间等时,我再次 fork 了它,并开始着手开发。起初还可以,但在一段时间后,我仍然没有发布任何版本,人们开始向我发送拉取请求(这本身是好事),要求我在我进行操作时,也要做他们想要更改的任何事情。其中一个人在 IRC 上就他认为某些类应该以不同方式命名的事情展开了讨论。一开始他只是暗示,然后暗示变成了要求,在某个时候,即使我花了很多时间解释为什么我这样命名并坚持使用这个名称(而且这次讨论确实花费了我一个多小时),他还是向我发送了一个拉取请求,其中所有名称都已更改,并声称我必须将其合并,因为我已将我的代码提供给社区,现在我已经不再拥有它,并且无法自行做出此类决定。

我的反应?我向 github 付费并将仓库设置为私有,然后我让他滚开。

您是对的,公开工作可能是有益的,但过早地将您正在开发的东西公之于众会适得其反,您最终会遇到太多的厨师,他们都想决定您正在煮什么汤。以我的经验来看,最好先完成工作,然后再与社区输入一起迭代(无论是 PR 还是评论),因为人们将能够基于某些工作成果进行讨论,而不是基于假设。这也让您可以花时间照顾您的工作,而不是将大部分时间花在(通常是毫无意义的)讨论上。

是的,与您的社区交谈很重要,尽可能透明地公开您正在做的事情也很重要。但这并不意味着您需要完全公开地做所有事情,也不意味着您应该牺牲您宝贵的时间来尝试取悦所有人。毕竟,您是在为他们做免费的工作。

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