0%

开源社群存在的目的,主要是制造高质量的开源软件,并促进该软件的使用。为了达到这两个目标,开源社群需要调动参与者的积极性,并且协同背景多样的参与者的贡献,共同修复软件缺陷、改善软件体验、增加软件功能、组织社群活动和发展软件生态。大多数开源社群的环境里,实际进行组织协调工作的成员,就是社群的维护者(Maintainer)。

不同开源社群对角色的定位和命名有着各自的风格。Vim 社群生态丰富,但是 Bram Moolenaar 是唯一的“仁慈的独裁者”Kubernetes 制作了一套基于 SIG 划分的从 Reviewer 到 Appover 再到 Owner 的体系。Apache 基金会的每个项目都使用 Committer + Project Management Committee 的治理结构。Rust 和如今的 Linux 采用分模块的 Team Maintainer 模式。PostgreSQL 则由整个项目级别的 Core Team + Committer 来治理。

对于刚起步的开源项目而言,这些眼花缭乱的标准背后,其实是一个大致相同的对项目维护者的标准。对于想要深入参与开源社群的人来说,理解了项目维护者的标准,也就明白该做些什么以成为一名维护者了。本文主要对这个标准的不同层面进行讨论,顺带对比上面这些经过演变的不同版本。

阅读全文 »

越来越多的开源软件占领了各个领域依赖链条的关键环节,越来越多的程序员也以参与知名开源软件的开发为荣,将开源贡献和在开源社群当中获得的头衔作为简历当中浓墨重彩的一部分。

在这样的背景下,技术驱动型公司的 HR 也随之需要掌握从开源社群当中找到组织需要的人才的方法。如果企业的业务依托于开源软件的发展,甚至公司直接投入人力参与开源社群,那么 HR 还需要了解开源项目运作的基本流程。

我在最近三年间陆续遇到人力资源相关的从业者询问如何解决这两个问题。目前,大部分的开源项目代码都托管在 GitHub 平台上。本文从我接触到的问题出发,从 GitHub 提供的能力和 GitHub 上项目协作的常见形式入手,回答这两个问题。

阅读全文 »

分布式系统的开发者知道,不同于本地方法调用总是被执行,要么成功要么失败,分布式系统之间各个组件的远程调用还存在第三种可能,那就是超时。

从消息发送者的角度看来,超时意味着没有确认信息返回。但是当前调用对应的一系列操作到底是已经成功,只是回复丢失,还是其中某些失败某些成功,或者全部失败,甚至是请求本身没发出去,这些情况一概无法断言。

大部分开源社群是分布式组织,社群成员分布在不同的地域乃至不同的时区。相比于线下集中办公的组织而言,分布式组织与分布式系统一样存在着“超时”的挑战。

线下集中办公时,负责同一个工作项目的人经常会坐在一起,有什么事情转过头、走几步也就当面说清楚了。工作关系紧密的几个人往往会共享午餐时间,休息娱乐时间。这种面对面的合作带来的信任感和大小事情都能当面沟通的效率,是分布式组织很难直接做到的。

不过,无法效仿线下集中办公的方式直接面对面沟通,并不意味着开源社群这样的分布式组织的沟通效率就总是低下的。从我在开源社群数年的观察和实践来看,要想做到在开源社群这样的分布式组织当中高效地协同,确保事情在异步沟通和分布式合作的情形下仍然能够稳步前进,一个不可缺少的点就是饱和沟通(Overcommunicate)。

阅读全文 »

缘起

ClickHouse 社群指标模型》一文里提到了 ClickHouse 社群基于自己的软件 ClickHouse 制作社群指标的探索。由于遇到了公开数据集表模式缺列,查询执行内存限制,以及数据库只读模式限制等问题,我在过去一周里试着按照 ClickHouse 官方博客的介绍,搭建起了一个属于自有的基于 ClickHouse 的 GitHub 事件数据库。

简单介绍下结果,自建数据集确实解决了上面列举的三个问题。然而,我选择的 16 核 64 GB 内存版本实例在查询性能上还不如 Playground 的性能,只是内存占用大的聚合查询 Playground 可能由于 Quota 限制无法执行。另外,我选择的阿里云上的 ClickHouse 数据库在追上游版本和一些使用体验上还是有所欠缺。最后,日常数据同步的脚本可以在 korandoru/github-adventurer 取用。

当然,我会去做这件事,还有一个不可忽视的原因是我所在的公司本身商业模式就是云上售卖数据处理服务,我希望能够基于云上的服务搭建自己的业务,体验这个流程可能遇到的各种问题。因此,本文不是一个指导手册或者技术指南,而是实现过程中每个环节的杂谈。

阅读全文 »

随着信息化和数字化的发展,传统企业的业务发展在软件的帮助下突飞猛进。软件技术日新月异,几乎每隔几年就会有全新的技术和产品颠覆过往业务开展的方式。然而,掌握前沿软件技术的人相对于全行业的需求可谓是凤毛麟角。为了规模化前沿技术的价值,越来越多的软件服务公司如同雨后春笋一样不断出现。

顾名思义,软件服务公司主要以提供高质量的软件或软件服务来提高其他企业开展业务的效率。随着软件技术日益复杂,采用何种软件服务逐渐从以往的 CTO/CIO 决策转变为不同领域的一线开发者根据自身的能力和喜好选择。因此,软件服务公司需要专门制定开发者关系的策略,以在新形势下继续赢得客户订单。

本文将以 What is Developer Relations? 网站的介绍和 Ubuntu 前任社群经理 Jono Bacon 的视频 Developer Relations: A Complete Guide to what it is, how it works, and whether you need it 为基础,讨论开发者关系将为企业带来什么价值,开发者关系的从业者到底在做什么工作,以及从事开发者关系工作需要具备什么样的能力。

阅读全文 »

我在《企业实践开源的动机》和《开源世界当中到底存不存在“白嫖”?》两篇文章中对这种商业模式已经有详细的介绍和议论。鉴于最近企业服务领域的创业公司以源代码可读为卖点,并大肆渲染“开源 vs. 云厂商”的对抗氛围,我从其中希望和 OSI 定义的开源区分开来的观点出发,尝试为这种模式做一个定义和说明。

阅读全文 »

数字化时代下绝大多数工作都有关键绩效指标(KPI)指导,任何组织都期望找到一个合理的指标来校准战略方向,衡量工作成果。

然而,并非所有工作都能有 KPI 准确地衡量产出。著名软件工程师,同时也是《重构》《分析模式》等书籍的作者 Martin Fowler 曾经写过一篇博客论证软件工程师的生产力是无法衡量的

开源社群成员的重要组成部分,也是一切价值的核心飞轮就是这样一群软件工程师。这是否意味着开源社群的工作也是无法衡量的吗?

我认为,目前探索所及的一切开源社群指标都是人的活动产生的,并且这里的人都是匿名的网络用户。这样的背景下,如果有人背负着必须提高某个指标的任务,在不论对社群协作造成的次生影响的前提下,几乎所有指标都是可以做出来的。因此,只是考察社群指标的结果数字,甚至为了掩饰自己不愿意理解社群运作的深层逻辑,而要求组织的社群协调员以某种归一化的分数来汇报社群指标,都不能达到撬动社群杠杆完成组织生产力增效的目的。

但是,没有北极星指标引领社群工作方向,难免会导致社群成员对自己所在的社群正处于一种什么状态缺乏清晰的认识。不是将指标作为目标结果,而是以定性和定量的指标来辅助校准社群发展的方向和衡量社群工作的效率,这样的工作是有价值的。

Apache 成熟度模型就是一个定性模型,从代码、版权、发布、质量、社群、共识和独立性七个方面衡量一个软件项目是否符合 Apache 开源之道。绝大部分从 Apache 孵化器毕业的项目在毕业前都会准备一份对应成熟度模型的报告,例如 Apache Pulsar 在毕业之际就专门撰写了一份社群成熟度报告来回应孵化器导师的质询。

近年来,越来越多的企业和组织认识到社群运营的重要性。除了定性的指标以外,这些企业和组织投入的人力和资金也使得探索定量指标得到了更多的支持。这其中值得关注的两个,就是 orbit.love轨道模型和 ClickHouse 社群基于 GitHub Events 全域公开数据进行的社群分析。

相比之下,orbit.love 的轨道模型不只是针对开源社群,而是针对普遍的社群运营行为及其结果的建模,定义更加严谨,理论更加丰富。ClickHouse 社群的指标模型是从使用自家软件分析社群活动出发,目前还停留在比较简单的统计分析的阶段上。

本文以 ClickHouse 的社群分析报告为基础,看看从 GitHub Events 全域数据能够进行哪些数字化社群指标分析。

阅读全文 »

开源软件不是凭空出现的,开发开源软件是一项艰苦卓绝的工作。每个开源软件的背后少则有原作者一人的投入,多则协同了成千上万人组成的开源社群的共同努力。然而,开源软件的源代码总是免费可得,并且开源软件协议总是不限制用户的使用形式。

基于开源软件完成工作乃至搭建业务盈利的用户,并不总是参与软件开发的人,这种形似经济学中“搭便车”的行为,在国内被提及的时候总会被称为“白嫖”,以至于后者称为圈内的一个热词。那么,开源世界当中到底存不存在“白嫖”,不同角色眼中的“搭便车”行为到底是怎么样的?本文将对此做些讨论。

阅读全文 »

《程序员修炼之道》讲了一个有趣的“石头汤”寓言。这个寓言里,饿着肚子的外来人在村子里烧了一锅水,放了三块石头,开始煮“石头汤”。这样的行为引来好奇的村民围观,外来人顺势在“石头汤”的基础上引导村民们添加食材以改善这锅料理。最后,村民和外来人一起煮出了一锅靓汤,外来人于是把石头从汤里扔掉,所有人分享了这顿美餐。

开源协同的工作方式与制作“石头汤”的方式有些相似。开源社群的核心成员与寓言中的外来人一样,充当了催化剂的角色,将这些各自拥有不同背景的人群组织起来。这样,社群成员才能聚在一起做出他们单独无法做到的事情。最后,所有人都是赢家。

当然,在这个版本的“石头汤”寓言里,村民被外来人骗了,石头并没有为最终的美味产生直接价值。《开放式组织》指出这种行为是一次性的,并且价值仅仅单向地从村民一方流向外来人一方,以至于它被冠以“汤姆·索亚合作模式”的恶名。

开源协同的模式保留了“石头汤”寓言当中催化剂的内核,但是这一次,外来人提供的不是水煮石头,而是初具规模的汤底和食材。《大教堂与集市》在揭示集市模式的必要条件时阐述了这一点,这个隐喻意味着一个能运行的软件,并且让潜在的合作开发者相信,这个软件在可以预见的未来,能够演变成一个非常棒的东西。

Apache 开源社群由三百多个项目组成,其中不乏开源版本“石头汤”的现实案例。

阅读全文 »

从本世纪初谷歌的三篇论文发布以来,数据处理领域在大数据的方向上探索了将近二十年的时间。从三篇论文的开源实现 Apache HadoopApache HBase 开始,到打破传统关系型数据库的分布式数据处理系统如雨后春笋般接连诞生,NoSQL 系统回应了移动互联时代的数据爆发式增长的挑战。

诚然,传统的数据库专家对 NoSQL 也有像 MapReduce: A major step backwards 这样的批评,不过 NoSQL 系统本身也在向传统数据处理领域当中被证明有效的特性靠拢,向 Not Only SQL 系统转变。

本文首先从移动互联时代数据增长和数据模型演进带来的实际问题出发,讨论 NoSQL 系统在现在企业数据处理生态当中的定位和价值,然后介绍 NoSQL 系统靠近 Not Only SQL 定位的过程中遇到的硬核诉求,最后分析新时代 NoSQL 的发展方向。

阅读全文 »