社区建设要点#

孤立工作的企业和技术人员常常会忽略这一点,但通过启动开源软件项目,你向集结所需人才迈出了一大步,确保你的成果能满足实际需求、具备用户想要的功能且易于使用。开源工作能提醒技术人员:社区对产出优秀技术和获得认可至关重要。

由于开源项目依赖健康的社区来完成工作,其成员必须有意识地开展具有挑战性的社区建设工作,这通常包括以下实践:

  • 设定共同目标与战略

  • 参与社区治理并为领导层更迭做准备

  • 招募、培训和指导成员,涵盖多样化角色与人口群体

  • 引导决策与化解冲突

  • 维护积极规范

  • 认可和奖励社区成员

  • 通过会议及其他活动凝聚社区力量

  • 管理社区发展并确保其可持续性

本章总结了项目领导者及成员为打造成功社区应执行的任务,并列出了实施这些任务的最佳实践。可视作一份"社区快速入门"指南——概述了本书后续将深入探讨的若干关键主题。我们在开篇提供这份精简说明,是因为我们认为社区领导者应尽早建立最佳实践;若等到问题出现后才试图补救和制定规范,不仅会让参与者困惑,更可能导致大量成员流失。但我们也理解,要求大家在着手建设社区前通读整本《开源之道》手册,对许多人而言可能并不现实。

考虑到创建和维持社区所需的重大投资——时间、精力、物质资源、劳动和情感——我们建议首先认真评估你是否具备条件有必要创建社区。这正是我们要探讨的起点。

考虑建立社区#

并非每个开源软件项目都需要自己的社区。存在(且并不罕见)这样的情况:开源软件由一些维护者管理,而这些维护者除了自身之外,并未表现出组建社区的意愿。

简而言之,仅仅作为一个开源项目并不保证该项目会拥有社区。但这意味着确实拥有一个社区时,它可以收获开源软件特有的某些好处。

在组建开源软件社区时,你将面临与组建任何其他实践社群相同的伦理和组织考量。实践社群是指一群拥有共同兴趣的人,他们聚集在一起在共同领域内学习和实践。例如,扬琴演奏者每年聚会分享演奏艺术与实践知识,或者滑板爱好者每周在公园聚集学习新技巧,这些都是实践社群的体现。

当你(或你的所在组织)考虑组建开源软件社区时,首先需要回答几个关键问题:你是否愿意组建并维护其他类型的社群?这样做是否符合你的愿景?是否符合你一贯的处事风格?

这些问题将帮助你判断组建社区是否适合你和团队。例如,大学和军队分支这类组织在事务处理方式上会有截然不同的路径——他们组建任何形式社区的动机可能天差地别(也可能出人意料地一致)。

开源软件社区如同所有实践社群,确实能将来自迥异世界的人们凝聚在一起。在开源社区中,拥有共同兴趣(共享实践)的人们联合起来,通过协作实现学习与成长(社区)。

组建开源社区时你可能还需考虑:

  • 你希望获得开放协作与创新的红利。或许你已拥有或正在规划一项新技术,而开源是寻找志同道合者的途径。也可能你单纯觉得这种方式契合你的计划。

  • 吸引爱好者加入你的项目是增长战略的关键部分,而你已经认识到各类开源贡献者都是理想的爱好者人选。

  • 科学方法是你使命、宗旨和/或实践的核心,你意识到将软件工具链、基础设施等资源定位为用户可参与贡献并成为维护者的价值所在。

  • 你的组织本质上是开放、协作且具有社区属性的。你可以创建规模适中的开源项目,让用户与贡献者以某种方式紧密联结。例如大学里的合作者:如果没有法律障碍阻止项目启动,何不尝试发起一个?你永远不知道未来会有谁发现它并从中受益。

构建任何社区都非易事。在为开源项目定义最佳实践时,需考量社区的以下方面:

  • 许多人刚加入时还是新手。一些人需要接受所开发技术的培训,一些人需要学习工具使用,而大多数人则需要学习如何在团队中有效协作。

  • 人们喜欢自己的贡献得到认可,尤其是作为志愿者时。

  • 在宣传和社区建设方面的非技术贡献常常被忽视或低估。

  • 性别、种族和能力方面的多样性对产品面向广大用户群体的实用性影响重大,但实现这种多样性却十分困难。

如果你或你的组织对这些机遇心向往之,且愿意直面随之而来的挑战,那么构建社区或许是你的正确选择。接下来,我们将更深入地探讨做出这一选择所需付出的努力。

设定目标与策略#

当你决定启动一个社区驱动的项目时,首要考虑事项之一将是该项目的使命、愿景、目标和战略方向。明确阐述这些内容——并将其记录在整个社区都能查阅和评论的地方——很可能会占据项目初期的大部分精力。

为项目设定有效的战略目标需要提出关键问题,如:

  1. 项目是什么?

  2. 项目的用户群体是谁?

  3. 目前如何与用户群体互动?

  4. 你的项目存在哪些替代方案?

  5. 你能与相关的项目紧密合作吗?

  6. 你对这个项目的目标是什么?

  7. 谁是你的关键利益相关者?

在项目启动之初,这些问题思考得越透彻,成功的可能性就越大。

招募项目成员#

一个高效的社区绝非仅仅敞开大门坐等成员加入。领导者需要审视项目所需的技能与知识储备,研究潜在贡献者群体,并积极确保这些参与者既能发现项目,又认为其具备足够的吸引力而愿意加入。

为确保项目的努力能产出有用的成果,不妨邀请可能受项目影响的各群体代表参与。需要纳入代表的受益群体包括潜在用户、受项目影响的其他技术项目(例如依赖或基于该项目开发的项目),以及目前在项目领导层中代表性不足的群体。项目领导者必须采取明确行动,识别利益相关方并吸纳其代表参与。

这种参与方式背后的核心理念在于,用户及其他可能间接受项目影响的群体,其需求往往不为外界所察觉。让所有相关群体的代表参与其中,有助于项目打造出更具实用价值的产品,使各方都能受益并确保公平性。早期参与还具有现实意义:它能规避项目后期遭人反对而无法落地的风险。

新成员入职引导#

领导开源社区通常需要为项目的入门体验承担一些责任:即新成员加入项目并寻求参与时所获得的体验。

新成员加入项目通常涉及以下工作:

  • 介绍项目的历史背景

  • 阐述当前项目需求及关于项目方向的重要讨论

  • 帮助人们找到项目沟通渠道

  • 通过解释贡献于项目的好处来激励成员

  • 明确会议时间及其他时间承诺

构建具有多元化成员的包容性项目#

大多数技术项目的领导者和团队成员在种族与国籍、性别(涵盖男性、女性及 LGBTQ+群体)以及能力(例如视力障碍、操作灵活性或抽象信息处理能力)方面缺乏多样性。即便主导群体试图对其他人群的需求保持敏感,他们很可能仍无法充分理解其他群体的生理与文化处境,因而难以充分代表这些需求。若将被边缘化的社群成员排除在项目设计之外,最终成果可能会隐含歧视性倾向。

构建多元化的社区还能催生更具创新性和韧性的项目。正如红帽前首席人事官DeLisa Alexander所写

一个多元包容的组织更具创新力:它能从更多角度审视潜在问题,更自如地应对问题的复杂性,构想出更智能且多层次的解决方案,并察觉自身创造物中的偏见。这样的组织也更具抗风险能力:汇集多元视角意味着让更多经过独特训练的目光共同关注未来动向。虽然无法预知一个月、一年或五年后所有可能影响组织的变化,但汲取更广泛的见解意味着遭遇变革时能更敏捷坚韧。而贯穿整个组织的包容精神,能确保每个人在发现潜在威胁时既敢于发声又感到自在。

"普遍包容精神"对于构建成员多样化的开源社区至关重要。虽然行为准则对吸纳多元群体具有关键作用,但仅靠准则不足以建立多元化社区——因为它仅能约束负面行为,并未明确要求领导者及其他项目成员应如何主动寻找被边缘化群体的代表。可采取的措施包括:

  • 邀请代表性不足群体中可能受影响的成员加入领导层。被认定为"少数群体"的人往往会收到大量此类请求,且常因其他项目中自己的建议未被采纳而感到沮丧。因此邀请方必须能够说明项目的影响力,并提供证据表明他们的建议将得到认真对待。

  • 请项目成员识别被排除群体的成员,邀请他们加入项目,或将其引荐给项目负责人。

虽然多元化委员会可能有助于推动项目中多样性的重要性,但多样性是每个项目成员的责任,应在每个项目决策中予以考量。

培养贡献者#

项目领导者应当留意机会,尽可能将项目的用户转变为贡献者。当成员表现出兴趣或主动性时,领导者应该通过对话予以鼓励。这类邀请可以这样表达:

  • "我注意到你对提议的关闭功能表现出浓厚兴趣。你愿意加入负责该功能的开发团队吗?我们预计需要每周召开一小时会议,持续四周,另外还需要一些开发时间。"

  • "你加入我们团队时曾提到,你在自己公司部署过我们的产品。能否抽半小时与市场团队交流,分享你是如何推介产品并获得批准的经验?"

  • "我知道你过去曾成功为另一个团队实施过类似的解决方案。你是否愿意担任我们团队处理相同问题时的主题专家?他们下周将进行一小时的会议。"

请注意,每个请求都附带了预估的时间投入。并非每次贡献邀请都需要强调时间承诺,因为这可能因耗时过长而阻碍参与。更好的做法是让他们对所承担任务的重要性产生兴趣。随后,他们的热情——以及与他人协作的愉快体验——将推动他们持续参与。

如同招募和管理成员的其他环节一样,在培养成员时必须特别且有意识地关注鼓励女性及其他历史上被边缘化的群体在新职责中施展才能。切勿假定某类人适合(或不适合)某项特定任务。如有疑虑,主动询问。

引导决策与化解冲突#

每个开源项目都依照某种治理模式运作。该模式在项目发展历程中很少一成不变,而是随着社区的壮大及参与者对工作分配与决策责任划分方式的不断探索,逐步演进完善。

大多数开源项目治理模式都致力于在关键决策上达成社区共识,因为开源项目往往通过共识机制运行得最为顺畅。"即便当开源治理聚焦于成员资格和投票时,共识始终存在,就像空气中的氧气一样,"资深社区管理者 Karsten Wade 写道。"人们基于认同参与其中——如果不同意某项决定,他们随时可以退出。投票通常发生在充分讨论之后,而非领导层的指令之下。大多数决策在正式投票前就已形成一致意见。"虽然达成共识并非在所有情况下都可行,但它始终是激励项目参与者采取包容行为的核心目标。

每个项目都采用不同的治理实践和机制。例如,投票有助于了解社区的情绪,但可能不会像议会投票那样具有决定性。其他项目则将决策权交给单一权威(通常是项目创始人,有时被称为仁慈的独裁者),但这种模式长期来看并不总是有效。正因如此,许多项目会组建技术和社区指导委员会来分担决策责任。

因此,社区领导者应当理解并持续优化项目的治理模式,让参与者在影响项目发展方向时能真正掌握主动权。

认可和奖励社区成员#

志愿者参与开源项目的动机多种多样。专家希望围绕自身实践建立行业标准,学生前来磨炼技能,而所有人都渴望为世界创造更优质的技术。但无论处于何种层级,人们都珍视自己劳动获得的回报——当感受到被认同时,他们便会贡献更多力量。

领导开源项目通常需要建立一套奖励机制。社区的奖励体系应体现项目的使命与愿景,并与贡献者参与的动机相契合。例如,徽章系统既能嘉奖那些追求工作成果获得公开认可的贡献者,也能帮助识别具备潜力承担更高阶任务——甚至成为项目领军人物的社区成员。

培养项目领导者#

让志愿者晋升至领导岗位是项艰巨的工作。多数人加入项目是为了贡献技术能力或担任其他特定角色作为个人贡献者。他们可能担心承担领导职责需要投入大量时间,或认为这些任务枯燥乏味,会分散他们真正热爱之事的精力。除此之外,领导者们忙于处理项目需求,难以抽身招募和指导新领导者。然而这些工作对长期项目至关重要。

招募领导者是开源社区建设的关键环节。作为项目负责人,你的成功很大程度上取决于培养和赋能更多项目领导者的能力(这些继任者又将延续这一传统,在项目中形成指导者文化)。在物色这些角色的人选时,要关注那些提出深刻问题、为项目规划新方向或提出创新推广方式的成员,以及其他展现非正式领导者的特质。你可以通过两种方式与他们接触:直接描述空缺的领导岗位并询问其任职意愿;或是开启对话了解他们对项目的期待,进而鼓励他们通过承担领导职责来实现这些目标。

担任领导职务既需要时间投入,也意味着重大责任,但这是每个人都应把握的绝佳成长机会。以下是为项目领导角色人选提供的潜在激励方案:

  • 他们在项目中实现所需变更的空间要广阔得多。

  • 他们能更深入地理解项目的宗旨与影响力。

  • 他们与项目领导者密切互动,这些领导者很可能是他们敬重甚至想要效仿的对象。。

  • 他们掌握了项目管理与社区协作的新技能。

  • 他们的专业能力与贡献获得社区内外的认可,由此带来更多人脉资源与职业发展机遇。

志愿者常问的第一个问题是:"我需要投入多少时间?"回答时不必强调该角色所需的时间投入。试着引导志愿者思考:如果他们成为领导者能为项目带来哪些益处,或是他们将获得的更高地位及其带来的好处(可能还包括对其组织的益处)。不妨大方赞美成员们的重要性——这完全属实!

许多开源软件项目往往侧重于培养技术领导者,这类角色通常由做出技术贡献(例如向项目提交代码)的人员担任。但实际上领导职能涵盖多种类型,包括:

  • 招募项目成员

  • 指导项目成员

  • 根据项目治理模式解决冲突

  • 管理关键项目资源并协助其他希望使用这些资源的人员

维护社区价值观和规范#

当拥有共同价值观的人们无论合作多久,都会形成一套隐性的协作规范。这些规范是任何持久社群的基石,开源软件社区也不例外。领导这样的社区意味着要坚守社区价值观,并以身作则践行这些规范。

一旦发现违反社区规范的行为,应立即处理。理想情况下,若有成员违背良好行为准则,其他成员会礼貌指出,违规者也会改正自身行为。但若无人发声,或违规者因此挑起骂战(这可能耗尽团队精力,造成的损害甚至超过最初违规行为),此时便需要调解员介入。该调解员必须拥有执行规范的权限,必要时甚至可实施禁言处罚(此类情况应极为罕见)。

将调解员职责分散给多人看似诱人,但这样做存在风险。面对行为准则的模糊违规行为时,不同调解员可能作出相左的裁决,甚至引发内部骂战,造成极大破坏性。更理想的做法是每次只设一名调解员(若工作量过大可轮换人选),同时由社区指导委员会在不牵涉全体成员参与争论的前提下复核相关决定。

当行为准则被违反,威胁到社区成员的参与或可能降低讨论质量时,社区及负责监督讨论的版主首要任务是维护规范并消除威胁。这通常需要对冒犯性言论进行明确批评。然而,处理方式有多种选择,采用兼顾各方感受的方法往往能带来更理想的结果。

请记住,志愿者几乎总是怀着善意加入项目,其中许多人具备出色的技能可供贡献。冒犯性言论通常源于强烈情绪或无知。虽然必须表明不能容忍此类言论,但版主或指导者可以直接与发表言论者沟通,了解触发原因。通常情况下,可以通过引导让该成员继续留在社区,并学会更好的互动方式

为弥补冒犯性言论造成的伤害,领导者(最好还有其他社区成员)必须明确声明该言论越界。但发表该言论的人应在与领导者私下沟通后,主动道歉并承诺避免今后再有类似行为。若未能及时道歉,则可能需要对发表该言论者实施至少临时性封禁。

因此,违反行为准则的言论应分两个阶段处理。首先,领导者或版主必须声明该言论违反准则且不被允许。随后,领导者应私下联系发表该言论的人,了解其动机:是因情绪激动而口不择言?是蓄意挑衅或打压其他成员?还是确实未意识到言论具有冒犯性?在查明原因后,领导者应与当事人沟通,引导其学会如何在社区中发挥建设性作用。但若对方拒绝改正或坚持其"权利"继续违反准则,则可能面临封禁。

管理进展和衡量增长#

希望你对开源软件社区的投入能推动该社区发展壮大。随着社区规模扩大,领导者必须有意识(且尽责地)管理这种增长,以确保社区保持健康与可持续性。

衡量社区增长可能颇具挑战性,但由此带来的收益值得付出努力。指标发挥着多重重要作用,包括:

  • 彰显贡献者身份,从而提升成员士气与参与意

  • 评估项目成效(例如新增产品功能、缺陷报告的解决速度)

  • 评估项目健康状况并识别待改进环节

健康的社区会突出人们的贡献,因为大多数贡献者并非有偿参与,除了对其努力的认可外并无个人利益。此外,当了解谁贡献最多时,你就能帮助人们承担新的领导角色与责任。幸运的是,软件及其他文本类项目提供了能自动衡量特定贡献类型的工具。利用版本控制、缺陷追踪器等工具来监测你认为关键的若干指标。

其中一些关键指标可能包括:

  • 特定时间段内修复的缺陷数量和采纳的变更数量(项目存在大量缺陷报告并非坏事。每个项目都有缺陷,因此持续不断的缺陷报告表明人们正在使用该产品——但缺陷应当被及时修复!)

  • 项目下载量(许多人下载产品试用后便弃之不用,因此应尽可能采用其他指标衡量用户群体的实际增长——例如论坛参与人数及提问数量)

  • 社区贡献者的经验结构(保持合理的项目成员结构,既要有长期参与项目、能提供组织记忆的资深成员,也要有注入新活力的新进成员)

结论#

本章概述了在决定是否启动开源软件社区以及如何构建该社区时,所需考量的关键因素。