作为多个开源项目的作者和维护者,Andrew Gallant试图缓解最近在开源社区中积累的紧张气氛。 灵魂的呼喊“如何成为一个自由软件维护者” , “不感恩的开源”以及维护者的其他抱怨引起了关于侵略性,粗鲁,无礼,情感疲倦以及对项目无私支持的严重性的讨论。 该帖子于2020年1月19日发布-大约 反式我想摆脱几乎严格讲技术主题的传统-我将与自由和开源软件(FOSS)分享我的一些个人关系。 尽管所有人都是不同的,但我希望交换意见将有助于建立对我们社区的相互理解,同情和信任。
请不要将此帖子视为对任何其他维护者的直接反应。 这不是理想行为的良方,而是个人的反思,希望他们将成为他人反思自己与开放源代码关系的机会。 没有一个正确的方法来成为一个好的维护者。 每个人都有自己的处理方式。
这绝不是寻求帮助。 这是关于理解。 我不是在要求改变自由/开源软件的经济或讨论我的心理健康。 我并不是说要吸引更多的维护者。 我只想分享我的故事,并尝试在FOSS社区中增加同理心。
目标受众 :涉及开源的所有人。
目录内容
故事
我的
第一个开放源代码项目大约在16年前发布-PHP的公告栏。 那时,几乎每个人都创造了这样的东西,这就是我学会编程的方式。 该项目最初是从学校的讨论系统开始的(当时,学校除了托管肮脏的网站外,根本无法使用Internet)。 然后我首先遇到了估计的困难。 该项目的拖延时间超过一个学期,并逐渐转移到一项超出学校项目范围的业余爱好中。
就个人而言,我一直喜欢只为娱乐而编程。 我喜欢所有阶段:首先探究一个话题,确定可行性,制定初步计划,沉迷于编码,甚至思考它,我都喜欢每一分钟。
要享受编程的乐趣,我不必共享工作成果。 但是,开源很快成为我开发过程的自然组成部分,以一种或另一种形式持续了16年。 实际上,我最喜欢的是如果代码允许某人更有效地解决他们的问题。 我的代码带来的效果越好,越令人愉快。 通常,我不在乎谁是满足他好奇心的另一位黑客,或者是一家以惊人的规模做有趣的事情的大型公司。
我的FOSS故事
延续了我的公告板和
wtcSQLite的多个版本,
wtcSQLite是
phpMyAdmin的简单克隆,但适用于SQLite。
当我在2009年左右从Windows切换到Linux时,我启动了更多项目,但使用的是Python和X11。 其中包括
PyTyle,用于在多窗口管理器和
openbox-multihead中固定框架,这是我在
Openbox中实现的多显示器支持。 这些项目以及Go的一些研究使我在Go上创建了我仍然使用的
窗口管理器 。
随着时间的流逝,大约六年前,我开始用Rust写作。
Quickcheck成为第一个库,但在接下来的
六年中 ,它紧随其后的是其他许多库:
regex ,
docopt.rs ,
rust-csv ,
fst ,
termcolor ,
walkdir和许多其他库。
尽管我的Rust项目绝大多数都是库,但是还是有
xsv和
ripgrep这样的命令行工具。
现在,我的许多旧项目实际上已经死亡或受到其他人的支持,但是我仍然支持大多数Rust项目。 或者,它们被其他质量更好的机架所取代(例如,
横梁通道如何替换
chan )。
今天,我仍然喜欢编程,但是我
也花了很多时间进行代码审查,调试最终用户的问题,回答功能请求以及其他类似的事情。 这总是意味着与他人的互动,工作和沟通。
该死的情绪
在我的青年时代,我为自己的“逻辑”和“公正的决策”感到自豪。 就像每一次自欺欺人一样,这里有一个真理。 但从本质上讲,我个人是一个深情的人。
情绪深入,可以成为内部动机的真正有用来源。 例如,在ripgrep发布后的一段时间里,我真的很
讨厌触摸
负责显示搜索结果的
代码 。 他感到困惑,马车且难以改变。 完全重写代码是完全
出于逻辑的决定,可以纯粹
出于技术上的考虑而做出,但是
出于这种厌恶感,我很
乐意这样做。 我只是
不喜欢自己的感觉 。 情绪帮助我解决了情况,帮助了自己。 例如,现在将输出隔离在一个经过全面测试的
独立库中 ,每次需要编写此代码并执行某些操作时,我都会感觉好多了。 这仍然不是我最好的工作,但是与以前的状态相比,至少在情感上,这已经是一个很大的进步。
情绪是一件有趣的事情,因为它们可以引导您进入真正令人惊奇的状态。 说在前面的示例中,一些技术原因足以重写输出代码吗? 在这里,您需要做出决定。 但是,如果没有动力,也许我将永远不敢重构。 而且,如果不进行重构,代码库很可能会停滞不前,并且程序将开始失败,或者二者兼而有之。 如果
情绪激发了动力,那么重构将开辟一个更好的未来,您可以在其中实现软件中的更多功能而又不影响可靠性。
情绪不利。 发布并支持某些颇受欢迎的软件的任何人都一定会与其他人联系。 事实证明,另一个人可以对您的情绪状态产生惊人的影响。 积极的姿态或评论可以使您的生活更加美好。 同样的感觉:
是的,上传我的代码是如此重要,以至于对这个人有所帮助 。 但是,正如任何维护者所确认的那样,正面评论几乎总是被负面评论所掩盖。
负面评论还不错。 当您邀请其他用户使用并
报告问题时,这是代码共享的自然结果。 出现错误消息时,您认为您已使该用户失败。 在编写代码时,您确定已对它进行了足够好的测试,但是
仍然不正确 。 错误报告永远不会停止吗? 该用户由于错误而浪费了多少时间? 我要花多长时间修好所有东西? 甚至还不行:我简单地切换到至少有
希望修复它的模式会花费多少时间?
这些想法会导致情绪开始侵蚀您。 当涉及负面评论时,这是最有可能发生的情况。
化脓性阴性
我很快学会了从错误报告中克服负面情绪。 实际上,
良好的,易于阅读的错误消息很快变得
令人愉快,因为它们通常很少见。 即使为显式请求所有参数的问题提供了模板(问题模板),也绝不会复制大多数错误。 发件人可能想要最好的,但是信息根本不足以重现错误。 然后大惊小怪地来回尝试以隔离该错误。
就我个人而言,这是最痛苦的领域。 情绪占上风,因为我只能思考一件事:
为什么这个人不花时间阅读和填写问题模板 ? 或者,如果由于未阅读文档的用户的错误而导致发生错误,我只能认为:
我花了一些时间向该用户提供一些软件,而他甚至在提交错误报告之前都无法阅读自述文件?太疯狂了 当然,情绪并不总是理性的。 该文档可能更清晰。 否则用户可能没有注意到此项目。 也许他没有运行FOSS项目或提交错误报告的经验,也许他不知道如何帮助简单地复制错误。 所有这些都是相当合理的假设,这就是为什么我会尽力避免情绪占上风。 尽管与另一端的人保持同理也很重要。
假设我在任何地方都不说“我邀请您使用我的代码”,但是我做
很多事情
只是因为我的意图是让其他人使用我的代码。 我正在写更详细的文档,使用示例。 我设置了持续集成测试。 为初学者制作了README。 我的许多页面上都显示了指向该项目的链接。 如果人们接受了使用我的代码的邀请,或者将打开的错误跟踪器视为报告错误的邀请,那么当他们真正发送这些消息时,我不应惩罚他们。 错误报告的作者可能认为他做了一切可能的事情。 尽管他们是出于善行,但我确实试图回答同样的问题。
这突出了用户与维护者之间的不对称性。 许多错误报告的作者可以与我交换一两个消息。 对于他们来说,写得不好的错误报告并不重要。 但是我的立场是错误的,因为我在所有项目中都一次又一次地播放了这个场景。 一直如此 几乎每天。 在这种情况下要保持同理心非常困难,尤其是当您的日子不好的时候。 有时会发生什么。
有时我的不耐烦表现在过于简短的回答中。 我会尽力在这方面变得更好。 自我完善的过程尚未完成。
通过权力工作
如果您是一个受欢迎的项目或几个常规存储库的维护者,则将获得几乎连续的错误报告和池请求流。 他们每天都来。 跟上他几乎是不可能的。 我的大脑的缓存大小异常小,因此我不太擅长在项目之间切换上下文。 由于这种现象,我迅速提出了错误报告并汇总了我最近处理过的那些项目的请求。 这些项目在大脑缓存的最后一页上可能更易于访问或得到更好的解决。
但是在其他项目中,问题列表开始堆积起来。 每天您看到一个新问题并对自己说:“是的,我真的会在下班后立即考虑这个问题。” 但是,新的事物即将到来。 结果,仅当用户每月对您连续四个月ping您时,才会出现切换上下文的动机-可能他的共享请求确实很重要。
抱歉,最后一句有点讽刺,但同时是真的。 用户和维护者的不对称性又重新发挥了作用,但我实际上是在尝试清除请求队列池并开发项目。 我想贡献这个用户,不仅要继续使用我的代码,还要使他
感到高兴 。 在许多情况下,仅一个小时即可解决池请求和所有需要采取措施的问题。
但是我花了四个月的时间悲伤地看着那些没有解决方案的人如何解决问题。
对于这种现象,我采用了一种在个人生活中非常有效地使用的方法:设置界限。 礼貌而坚定地设定界限是那些神奇的生活技巧之一,一旦您学会了,就可以赚钱。 如果您不知道该怎么做,那么我很难解释。 但是,设置界限可以让您专注于对自己重要的
事情 ,而不是
别人 。
显然,必须争取平衡。 边界的建立并不意味着您只能专注于自己的事务。 但是能够贴上这道墙并说:“不,我不做X,但我会很乐意做Y”的能力-这确实为我创造了奇迹。 我的秘密是根据我自己的经验和愿望提出别人无法争论的论点。
这与开源有什么关系? 对我个人而言,关键是要在我自己和所有这些池请求孤儿问题之间建立界限。 您需要以某种方式给自己留下深刻的印象:“我自愿度过时间,我不准时回应是正常的。 我敢肯定,大多数人都会理解这一点并且是合理的。”
在讨论对新功能的请求时,也会出现此问题。 有时,该请求可能对您的项目有意义,但是此功能意味着很大的支持负担。 我学会了设定界限:您可以以不想在支持上花费额外时间为由,对某个功能说“否”。 如已发生的不止一次,那么您可以改变主意! 例如,如果代码得到了改进,可以更易于维护-您可能会发现自己更加渴望引入新功能。 但是,如果没有,那么我会尽我所能来限制自己的界限,并拒绝为自己做些不愉快的额外工作。
我想就如何设置牢固的界限并避免由于一堆问题而感到难过的问题写一些逐步的说明。 这并不能完全消除负面影响,但会有所帮助。
粗鲁
明显的巨魔通常很容易应对。 这一群人显然有意惹你生气。 巨魔通常不发送任何代码,因此不需要给予很大的关注。 至少,这就是我在防御机制框架内对自己说的话。 如果我看到一个巨魔,我通常会报告它支持GitHub,并随后进行拦截。 通常,我很少遇到这样的角色,因此在这里我似乎很幸运。
但是无礼有多种形式。 我的情绪设定了一个相当严谨的举止框架,因此您不能考虑所有这些无礼。 但是从我的角度来看,这至少是毫无根据的。
- “您的工具(在我的小众案例中)不起作用,因此已损坏。”
- “我只是想说我也喜欢这个功能”(注意。似乎有些读者不能忍受我所说的“粗鲁”。也许这个词太强了,但是在讨论中,他们积累了这样的“ “附加组件”,它只会给电子邮件增加噪音并可能令人讨厌;相反,欢迎使用图释,也可以在您的特定用例中添加一些细节。 完全是我的问题)。
- 要坚持要实现该功能,您需要“ 仅使X”。
- 传递函数请求时的被动攻击。
- 在[在此处插入任何社交媒体]中对软件进行无限制的na。
- 主题为“为什么要重新发明轮子?”或“为什么不为现有项目做出贡献?”的变体。
在许多情况下,无礼是用户真正失望的结果。 当某些乐器没有按照您想要的方式运行时,您在呼吸下喃喃地说了多少次? 没关系,该工具可能是免费提供给您的。 您只是在尝试解决问题,而该工具正在妨碍您。 我自己绝对感觉得到。 我认为这是一种完全正常的人类感觉。
有时候,无礼占上风,这表现为各种非生产性的方式。 我知道我自己做了,当然也发生在另一侧。 这给参与其中的每个人都令人难以置信。
在其他情况下,有些人本身不了解他们的无礼。 可能是由于语言障碍,或者是因为他们根本不知道自己的言语会如何影响他人。 很无辜,但不会改变我的感受。
处理这种无礼可能非常困难。 也许这些问题不会困扰任何人,但我不是其中之一。 我可以
假装它不会打扰我,但是我相信这会导致对开源的侮辱甚至更令人失望。
再次在这里设置界限对我有帮助。 如果我们丢弃巨魔,那么如果您有礼貌地对待它们,绝大多数鲷鱼的反应通常会很好。 我经常在我的错误跟踪器中执行此操作,这通常可以改善这种情况。 我不会因为我保护自己而感到侮辱,同时
在对方道歉的
时候我会感觉好些,这在绝大多数情况下都会发生。
为此,只需简单地说:“我不喜欢您所说的X。我认为,如果将来我们拒绝此类呼吁,将会提高工作效率。”
但是在某些情况下,人们对这种话的反应不是很好。 以我的经验,他们通常会忽略它们。 如果他们仍然不礼貌,我可以重复几次,因为有些人需要听到不止一次的声音才能到达他们。 至少我是一个人知道的(这让我妻子很不高兴)。 如果这仍然不起作用,并且他们的语气仍然困扰着我,那么我将停止互动。 只需关闭或阻止问题或合并请求,或者进一步进行操作,直到在[在此处插入社交媒体]上阻止用户为止。
权威
曾几何时,我与一些出国旅行的密友交谈。 刚回到美国,他们分享了一个文化冲击的小例子。 主要的东西?
我从没想过美国人有多爱强迫 。
这是美国所有文化的特征还是环境的特征-我们将不予讨论。 关键是有些人喜欢谈论其他人
应该做什么。 我是从权力层级不同的人那里得到这种长大的,我确实对此感到天生的厌恶。
我绝对相信,大多数人甚至都没有意识到这种行为。 有些人不想进入您的生活,而只是尝试提供建议。 当我指出特别令人震惊的胁迫案例时,至少他们就是这样。
稍微退后一步,使用“应该”一词本身并不一定不好。 但是,我认为真正改变其含义的是
邀请的出现 。 如果您要求某人提供有关某个主题的建议,而他说“是的,您必须输入X”,那么听起来还不错。 , .
:
, - . . , , - , . , - , - , .
, , . :
- , « ?», , . FAQ .
- . , - , .
, . , Rust,
UNLICENSE . - «» , () , . . . - , .
, . - , .
. , .
, . , , , - .
, - ( ), . . . -, . - , — , , — . , -: - , .
. . , , .
. open source. , , , .
FOSS — . , . FOSS , , . , .
, . -
,
, , .
. , . :
, . , . , . . — , . , , .
, JSON, , . , / . .
,
, .
. , . , , . , .
, , . , , FOSS.
,
. : « ?» , . . ,
, . , ( ) .
, :
- , . , . , : «, , . ».
- -, .
- -, , , . — , .
- changelog, , . , , .
- , , . , .
- . , , .
- . , , .
, — — . . , , , . .
FOSS, . , . , . ,
. , , .
, . - , FOSS.
, , , , . , .
在本文中,我列出了许多我认为是负面的行为。并非每个人都会像我一样对他们感到消极。这是正常现象,是可以预期的。而且,我自己做了一些负面的事情。人不是完美的,我们永远不可能100%地完全响应。这些都是微妙的问题,我希望我们至少可以改善一下情况。