开源社区入门指南#

本章命名为_社区入门指南(社区101)_,借鉴了高等院校的课程编号体系。"101 课程"代表你在特定领域作为初学者最先接触的基础内容。

如果你是首次考虑组建或加入开源社区,可能会遇到一些新概念。本章将解答关于开源社区基础要素的核心问题,并阐述个人和组织参与其中的动因。

什么是社区?#

社区是由共同身份和集体目标所联结的一群人,他们长期共同参与各种活动。社区会形成独特共享的价值观、原则与规范,这些特质使其与众不同,并为成员提供归属感。

什么是开源软件社区?#

开源软件社区是由共同目标联结的群体,致力于开发、维护、扩展和推广特定的开源软件项目。这些社区通常分布在全球各地——成员身处不同地域,跨越众多行业领域。将他们凝聚在一起的,是对开源软件项目的共同愿景,以及在社区参与中获得的协作精神与集体认同感。

什么是上游社区?#

开源软件的社区驱动生态系统庞大且难以具象化,因此许多开发者倾向于用隐喻来描述它,更喜欢使用水系和支流的语言。构成其他软件基础的软件被称为存在于该软件的"上游"。当"上游"软件发生变化时,这些变化会"顺流而下"流向依赖它们的开源项目。当"下游"程序员创造出可能惠及他人的创新时,他们可以将这些变更"溯流而上"提交给父项目,从而使这些改进能涟漪般扩散到所有使用相同上游项目的人。

例如 Red Hat Enterprise Linux 就位于许多构成它的开源软件项目"下游",比如 Fedora 和 CentOS Stream。而这些项目本身又依赖于更多"上游"项目——比如 Linux 内核、GNOME 桌面环境以及数百个其他项目。

开源软件社区是如何形成的?#

当人们同意共同构建和改进软件时,开源软件社区便应运而生。要实现这一点,软件开发者个人或团体必须向他人提供该软件——通过发布软件源代码,并明确授予他人复制、修改和重新分发该软件的权利(通常根据特定开源许可证的条款)。

由于开源社区具有全球分布的特性,它们通常通过共同使用电子邮件列表、Discourse 等论坛以及 GitHub 等代码共享平台在线上形成。

如何参与开源社区?#

大多数开源软件社区没有正式的成员申请或审批流程。通常情况下,人们只需以某种方式为项目做出贡献即可参与其中——例如修复软件代码中的错误、为应用程序创建新功能、编写和编辑文档、设计标识和图形、推广软件采用、在会议和其他活动中代表项目,或帮助其他对软件有疑问的人。

简而言之,人们通过为开源软件社区做出贡献,并由此建立良好声誉,从而获得社区成员资格。

人们为何加入开源软件社区?#

人们加入开源软件社区的动机多种多样。

许多人参与是因为软件开发是其工作的一部分——要么受雇于组织进行开发,要么因其工作依赖该软件的良好运行。他们加入社区是为了直接影响这些关键运营软件(或其组织所依赖的软件)的开发进程。另一些人加入是为了通过与同行协作学习来提升技能;有些人则是为了共同解决自己遇到的难题;还有人出于对"共建共享公共资源"理念的认同;此外也存在为社交需求或寻求归属感而加入的群体。

组织为何要参与开源软件社区?#

随着全球众多最具创新性和高效性的应用均为开源软件,各类组织在关键业务运营中日益依赖开源应用程序。因此,他们参与开源软件社区既是为了确保这些应用的长期生存能力、稳定性和安全性,也常常希望通过参与来影响这些应用程序的功能特性开发方向。

其他组织参与开源软件社区,是希望他们开发的软件能成为行业标准——他们公开自己的成果,期待他人能更快采用并整合这些技术。

许多组织发现,参与开源软件社区能让他们接触到比完全内部开发应用程序更广泛的人才资源库。

组织如何开始参与开源软件社区?#

参与开源社区时,不妨采用搬入新社区时的相处之道。先自我介绍并努力了解该社区的历史、价值观和运作方式,再提出重大变革建议。

通过完成小型任务结交新朋友。修复源代码中的错误。编辑文档。构建安装脚本。若贵组织能调配额外资源支持社区,可考虑赞助该社区在活动中的表现,或聘请社区开发者,使他们能投入更多时间参与项目工作。

需要注意的是,若一次性涌入过多新成员超出社区舒适接纳范围,可能引发社区反弹反应,这对组织的长期目标反而有害。同时需审慎选择组织首批参与社区的人选——加入开源社区的是个人而非组织,某位参与者赢得的信任不会自动转移给其他个人或组织。

互为市场竞争关系的企业如何参与同一个开源社区?#

许多企业正面临这样的处境。这些公司意识到,在互利共赢的软件应用或标准上进行协作,远比各自开发可能互不兼容的技术更有价值。因此,它们的商业模式转变为在这些共享技术基础之上,构建具有市场差异化并能创造收益的创新产品。

组织如何决定是否参与开源软件社区?#

参与开源软件社区对企业具有重要的组织、流程和法律影响。大多数认真投入开源软件开发的组织都会资助内部开源项目办公室(OSPO),就参与开源社区相关事宜为组织提供建议。其他组织则选择与开源专家合作,为这项工作提供指导。

结论#

本章介绍了开源社区的基本概念,以及各类人群和组织参与其中的原因。随后探讨了人们在决定是否创建新开源社区时需权衡的考量因素