目录

    1. 开源越来越受欢迎

    2019 年的 IDC 北美开源软件使用调查显示,71% 的企业正在使用开源软件,54% 的企业计划扩大使用范围。2020 年的 RedHat 企业开源现状调查显示,有 95% 的 IT 领导者认为企业开源对于企业基础架构软件战略至关重要。

    一方面企业越来越接受开源软件,另一方面企业也开始参与开源。现在思考的主要问题,不再是用不用,而是怎样用好开源软件。

    可以说开源迎来了一个大时代,对协作模式、研发流程、产品发布等方方面面产生了深远的影响。

    2 开源的核心是管理和运营社区

    开源不是公开源代码,而是管理和运营社区。

    很多关于开源的讨论在强调,license、管理风险、安全风险等防守策略。对于大企业,这些无法避免,为了获得上层的支持,却给开源带来了极大的负担,最终没有精力管理和运营社区。

    社区的特征是共识与协作。开源项目是开源社区的共识,也是开源协作的对象。社区成员质量越高、数量越多,就越能代表该领域的先进性。

    在有限的人群上,可以构建无限的社区。但在无限的社区上,个人又只能投入有限的精力和时间。这就是开源项目之间争夺的焦点。

    更多高质量的人、更长时间地参与是开源项目成功的关键。

    3. 开源与商业并不冲突

    前面说到开源主要是在管理和运营社区,而社区又具有自发性和开放性,提供了很多免费的服务。

    之前的一位同事说开源就是白嫖,搭了一个框架,啥都没有,写了 Bug 想着社区给擦屁股。他就是站在社区的角度在思考。社区是反感被利用,被商业化的。

    但,你看 Google 开源的 Kubernetes , 各大厂商都有发行托管版本、如火如荼的 CKA/CKD 认证考试,也有商业化部分却并没有引起社区反感。这些厂商在 Kubernetes Toc 却占有一席之地,提交了很多 PR, 促进了开源项目的发展。

    开源社区的用户也需要商业服务。在软件生命周期内,有很多脏活累活是用户不想参与的,都可以成为商业服务的切入点。开源与商业是相互促进与成就的。

    4. 像经营企业一样经营开源项目

    我更愿意以经营企业类比开源项目。开源项目不是项目,不是一次性的。开源项目应该与企业一样,追求永续经营。

    一个企业软件的发布是一群人共同努力的结果。需要产品经理、设计师、研发、测试、文档、市场、运营等人员的通力合作,才能交付一个可靠的版本。

    可以将整个开源协作理解为一条供应链,需要社区分工协作,人人参与,人人贡献,最终完成组装达成目标。管理开源项目,就是管理这样一条供应链。

    我想起一个故事: 在灾荒之年,能吃的都被吃了,大家聚在一起准备迁徙,但饿着肚子实在走不动。突然,有个人拿出来一块肉,准备和大家一起吃了再走。接着,有人找来了锅,有人在拾柴火,有人准备挑水,有人挖来了野菜,有人拿出了攒着的面粉…… 就这样煮出来满满一大锅肉汤,大家吃饱一起上路了。

    这是一个自由的群体,时刻有人离开,也会有人加入。社区治理是一个很大的话题,也是一个很老的话题,可以在社区设立子部门,分工协作;可以建立指挥中心避免分歧,一致向前。但能不能按时开饭,每次有没有肉,很大程度在于能不能激发大家参与的积极性。

    5. 目标是贡献者而不是 star

    参与需求反馈、测试、设计、讨论、提建议、文档撰写、宣传、问题回复等,都可以称之为贡献者,而不局限于写代码。

    star 是一个十分量化的指标,经常被用来衡量一个开源项目的受欢迎程度。我认为 DAU/MAU 也同样适用于开源项目。

    观测开源项目应该看的是有多少贡献者、贡献者的质量、每天合并了多少 PR、一个 PR 的合并周期、提交了多少 Issues,一个 Issue 得到回复的等待时间。活的烂项目比死的好项目更具有持久地生命力。只要有人在社区参与贡献,错误的内容终究会得到纠正。

    明确目标之后,社区的很多决策就会简单很多。贡献者最重要,那么你就会重视社区用户的反馈,认真地看待用户提出的问题,线上会议,线下走访,深入交流,甩掉那些没有成效的事情。

    聚拢足够多的意见领袖,高质量的贡献者才是关键。

    6. 云原生可能是个机会

    我在之前的文档中提到 现在是云原生最好的时代

    云原生的技术架构具有分布式的特点,天生有利于开源协作。也反映出,组织架构与软件架构具有一致性。

    传统的基于单机 Linux 系统的软件设施,正在往基于 Kubernetes 系统的软件设施迁移。涉及整个软件体系的方方面面,各行各业也在努力融入其中。

    这是云原生的机会,也是更是开源社区的机会。