-
Notifications
You must be signed in to change notification settings - Fork 18
Opendium
本文的试图从一个宏观全局的业务角度,建立一个以开源软件(OSS)为核心的,在不同场景域(Domain)下的分类体系,进而从一个业务场景驱动的视角来观察不同类别的开源事项活动(Activity),并通过事项类别(Class)进行组织。
顶层的业务场景域包括:开源社区、企业开源、商业开源、公共设施等大类别,还可以拓展到的类别包括政府场景、行业场景、教育场景等。顶层业务场景域下面细分为具体的场景(Scenario),其中:
- 开源社区:社区机制、治理流程、运营流程
- 企业开源:开源使用、开源贡献、开源战略
- 商业开源:开源项目投资
- 公共设施:基础设施、公共数据
最终,形成了一个“域(Domain)-场景(Scenario)-类别(Class)-活动(Activity)”四级结构的开源纲目(Opendium)体系。
图1 开源业务场景视角下的开源纲目体系
开源社区场景域是从开源社区的角度,系统梳理开源社区治理与运营过程中的活动事项,主要包括社区机制、治理流程、运营流程三个业务场景。
社区机制包括了成员管理、组织架构 、流程规范、指标管理、文档管理等事项类别。
成员管理事项类别包括了角色管理、权限管理、技能管理、行为准则等具体的事项活动。
1.1.1 角色管理
社区组织架构有三大核心角色,包括:开发者角色、运营者角色、组织者角色等。其中,开发者角色根据参与度可以分为使用者、贡献者、维护者等,形成了一条开发者在开源社区的成长路径;运营者角色主要分为社区经理、社区志愿者等;组织者角色则是开源社区议事规则的制定者、决策者和审核者,最核心的议事组织是项目管理委员会(PMC)或类似的管理层,是开源社区的最高决策机构。典型的分析任务包括:
- 社区角色识别
- 角色分类
- 角色聚类
- 社区角色成分分析
- 核心开发者识别
- 角色变换
- 社区角色画像
1.1.2 权限管理
开源社区中的不同角色,拥有不同的贡献与决策权限,不同的协作平台也有不同的权限体系。典型的分析任务包括:
- 社区权限识别
- 角色-权限映射
1.1.3 技能管理
开源社区中的不同角色对应着社区中不同的活动,因此也需要具备不同的技能。典型的分析任务包括:
- 技能分类体系
- 社区成员技能识别
- 技能标签预测
1.1.4 行为准则
行为准则是一份确立开源项目参与者行为规范的文件,采用和执行行为准则可以帮助社区营造积极的氛围。一些著名的行为准则包括:贡献者盟约、Django 行为守则、Citizen 行为守则等。典型的分析任务包括:
- 社区行为准则识别与分析
1.2.1 愿景使命
1.2.2 社区类型
可以根据社区的不同特征对社区进行分类,典型的视角包括:组织规模大小、技术类型、项目语言、创建年限、成熟度等。典型的分析任务包括:
- 开源社区分类(多种视角)
- 开源社区聚类(多种视角)
- 开源社区结构画像
1.2.3 职责分工
开源社区具有不同的功能职责,不同类型的社区其职责也不尽相同。典型的分析任务包括:
- 开源社区的职责功能识别
- 社区职责-人员映射
1.2.4 社区架构
根据开源社区的组织形式,可以分为单项目社区架构模式、多项目社区架构模式、以及基金会社区架构模式等。典型的分析任务包括:
- 社区架构识别与分类
开源社区通过一系列的流程机制保障社区的正常运作,包括决策流程、投票流程、审批流程、贡献流程、反馈流程、指导流程等。典型的分析任务包括:
- 开源社区流程挖掘
开源社区通过一系列的指标,来帮助社区管理人员更好的洞察社区状态,进而指导行动。典型的分析任务包括:
- 社区常用指标选取
- 标杆库建设
文档是开源社区重要成果,不同类型的模板能够让不同的贡献者更加容易地参与到社区的协作过程中去。典型的分析任务包括:
- 社区文档质量分析
一个大型的开源社区由成千上万开发者组成,如果没有与之相适应的治理模型,社区的管理将会进入无序的状态。开源社区治理流程域包括项目治理、社区治理和风险治理等三大业务场景。
项目治理是对开源软件的许可模式和开源的知识产权保护提供法律和法理的保障,制定开源项目的治理流程和合规规范是保障项目健康发展的基础。
2.1.1 许可模式
开源软件许可证从法律的观点来看相当于一份许可合同,只不过这种许可合同并非协商得到,而是事先规定好的标准化合同。例如,目前 OSI 认证的开源许可协议有80多种。典型的分析任务包括:
- 开源软件许可证流行度分析
- 开源软件许可证兼容性分析
2.1.2 知识产权
知识产权主要包括著作权、专利、商标、商业秘密等几大类别。开源社区需要有效利用知识产权的组合,进而构建社区的竞争力以持续发展。
2.1.3 合规规范(CLA 与 DCO 管理)
CLA 是Contributor License Agreement 的缩写,CLA 可以看做是对开源软件本身采用的开源协议的补充。 一般分为公司级和个人级别的CLA,所谓公司级即某公司代表签署CLA 后即可代表该公司所有员工都签署了该CLA,而个人级别CLA 只代表个人认可该CLA。DCO 是 Developer Certificate of Origin 的缩写,由 Linux Foundation 于 2004 年制定。DCO 最大的优点是可以减轻开发者贡献的阻碍,不用阅读冗长的 CLA 法律条文,只需要在提交的时候签署邮件地址即可。Chef 和 GitLab 已分别于 2016 年和 2017 年从 CLA 迁移到 DCO。典型的分析任务包括:
- CLA / DCO 文本分析
- CLA / DCO 流程分析
社区治理从社会人文的角度来保障社区的稳定和健康,社区文化、社区的领导力是维护社区可持续发展的基础。
2.2.1 领导力建设
社区领导力是带领社区持续向前的重要因素,如何定性与定量评估社区领导力,具有相当的挑战性。典型的分析任务包括:
- 开发者领导力与社区资本
- 社区领导力评估模型
- 社区领导力指标体系
- 社区引领标杆项目
2.2.2 文化建设
社区文化是带领社区持续向前的另一重要因素,如何定性与定量评估社区文化,具有相当的挑战性。典型的分析任务包括:
- 社区文化成熟度度评估模型(公开、透明、平等)
- 社区文化成熟度指标体系
- 社区文化成熟度标杆项目
2.2.3 激励机制
健康可持续的开源社区离不开良好运转的激励机制,是不断引入外部开发者的关键。典型的分析任务包括:
- 开源社区激励模型
- 开发者贡献度量与评估
- 开发者分配机制
风险治理则从开源社区的内外部风险角度来为社区提供风险控制的机制。
2.3.1 质量风险
开源项目与代码的高质量是保障项目持续发展的关键要素,如何客观合理的评估开源项目的质量具有较大的挑战。典型的分析任务包括:
- 开源项目的质量评估模型
- 开源项目质量风险识别
- 开源项目质量风险评估
2.3.2 漏洞风险
由于开源软件使用与获取的便利性,加之部分开发人员的安全意识淡薄,导致忽略开源软件带来的风险。其中,软件安全漏洞是主要的问题之一,软件供应链攻击呈现上升趋势,缺少系统的安全审查机制。典型的分析任务包括:
- 开源项目漏洞风险的识别
- 开源项目漏洞风险的评估
- 开源软件供应链漏洞风险系统评估
2.3.3 依赖风险
2019 年,GitHub 的报告指出,超过 360 万个开源项目依赖了 Top50 的开源项目之一。众多知名开源项目被其他上百万个开源项目所使用。开源项目平均有 180 个第三方依赖组件,具体的依赖组件数量从几个到上千个不等。除了安全风险,开源软件还可能引入知识产权风险。由于开源软件的依赖关系的复杂性,在使用开源软件时,不同开源软件的许可证可能存在合规性和兼容性风险,从而导致知识产权风险。典型的分析任务包括:
- 开源项目依赖关系构建
- 开源项目依赖风险的识别
- 开源项目依赖风险的评估
开源社区是一个分布式的组织架构,是以开放式协作的开发模式来进行项目的开发和运营管理,因此开源社区运营流程域包括项目研发管理、社区运营管理以及项目孵化管理等三大业务场景。
项目研发管理包括研发目标、架构、功能定义以及开发计划等工作,定义了代码的发布和维护的具体流程、持续集成和持续开发的具体规则等。
软件开发是一条非常灵活的流水线,这条流水线从需求出发,经过开发、测试、发布、运维等环节,最后交付给用户。可以从四个维度建立一个项目的研发效能模型:个人开发、研发流程、协作开发、管理与文化。
3.1.1 个体开发
社区中的开源项目工作由每一个贡献人员完成,是开源项目生产的基础,不仅决定了研发个体的效率,也极大程度上决定了整个团队和社区的效率。主要包括准确性、速度、可持续等关键要素。典型的分析任务包括:
- 准确性:如何在定义任务、寻找解决方案,以及实现方案的过程中聚焦最重要的任务。
- 速度:个体开发工作中哪些部分最适合提速,又有哪些具体方法。
- 可持续:如何在精力管理、软件开发原则,以及日常工作中有意识地确保自己有充足的经历完成工作,并不断进步,以面对将来的挑战。
- 高效工具:利用工具来优化与提高个体的生产效率。
3.1.2 研发流程
开源软件的研发流程优化主要包括流程产出物的准确性与流程的流畅度。典型的分析任务包括:
- 寻找用户价值
- 提高用户价值的流动效率
- 代码入库前后的流程优化
- 分支管理策略
- 全栈开发和运维(DevOps)
- 高效信息流通
3.1.3 协作开发
开源项目与社区成功的关键之一是高效的开放式协作,在开发、测试、运维等步骤中均有很好的实践。典型的分析任务包括:
- 高效协作环境
- 高效代码审查
- 技术债的处理
- 高效上云
- 测试左移与右移
3.1.4 管理与文化
开发管理是提高社区成员协作效能的基石,需要通过制定计划引入高效的开发实践,并通过诸如 ORK 等管理手段推动这些实践。文化则是持久提高效率的保障。典型的分析任务包括:
- 寻找目标
- 目标管理
- 执行任务:调动人的能动性、选择恰当的方法和流程、选择最佳工具
- 开源社区的开放式文化
社区运营管理的核心是以开发者为中心的管理,吸引新的开发者,激励做出贡献的开发者,帮助开发者成长,包括内容运营、活动运营、品牌运营、文化建设等。
3.2.1 开发者运营
开发者运用的核心是开发者关系(DevRel),从社区外部持续吸引开发者贡献社区项目,同时帮助他们在社区成长,是开源社区运营的重要任务。典型的分析任务包括:
- 开发者识别
- 核心贡献者识别
- 机器人账号识别
- 开发者活跃度分析
3.2.2 用户运营
用户是使用开源社区构建的项目的使用方,是开源项目价值的象征,可以说用户决定了开源项目的价值,甚至有专门的用户社区来进行用户关系的运营。典型的分析任务包括:
- 用户识别
- 核心用户识别
- 用户画像
3.2.3 内容运营
内容运营的核心是围绕内容的生产和消费,搭建一个良性循环,从而持续提升各类对运营相关的数据,最终达成吸引流量、培养用户和开发者,实现转化的目的。内容运营是从开源项目出发,以项目为第一优先级。典型的分析任务包括:
- 内容生产
- 内容传播
- 用户/开发者增长
3.2.4 活动运营
开源社区通过举办类似 Meetup 的活动,来达到宣传开源项目与品牌,吸引流量、培养用户和开发者,进而实现转化的目的。典型的分析任务包括:
- 活动筹备
- 活动宣传
- 活动举办
- 用户/开发者增长
3.2.5 品牌运营
品牌是一个开源社区的核心资产之一,能够集中体现一个开源项目的价值。持续增长社区品牌对于开源社区的运营至关重要。
3.2.6 价值链管理
3.2.7 培训认证
可以作为活动的一种特殊形式,通过和教育、职业发展等场景进行融合,进而产生宣传项目、吸引流量、培养与转化开发者和用户的目的。
开源项目孵化管理是针对大型的开源社区,特别是基于基金会伞型结构的开源项目,从开源项目孵化到毕业的过程,从提供专业的导师到指导计划,从创新成果的转化,从产学研用的结合等,为开源项目提供更多的指导和帮助,加速这些项目的成长和成熟。典型的分析任务包括:
- 项目准备
- 项目孵化
- 项目毕业
- 项目退休
开源项目与社区运营的成效度量是一个可量化的社区贡献和价值量化的评估模型,通过量化和可视化来衡量开源项目与社区的整体状态,给社区运营提供必要的数据化辅助。分别从三个视角观察(项目、社区、生态),可以建议一个四个维度的开源社区度量与评估模型,包括项目研发效能、社区健康度、社区持续性、以及生态价值。
3.4.1 项目研发效能
开源软件开发是一条全球分布式、公开透明、灵活的流水线。开源项目的研发效能可以被定义为持续为用户产生有效价值的效率,包含了有效性(Effectiveness)、效率(Efficiency)和可持续性(Sustainability)三个方面。简单来说,就是能否长期、高效地开发出有价值的产品。因此,可以从四个维度建立一个开源软件项目研发效能模型:准确度、速度、质量、以及个人研效。准确度关注的是项目跟计划、用户需求的吻合程度,能否提供较大的用户价值;速度主要来衡量社区开发者开发项目的速度;质量包括项目的性能、功能、可靠性、安全等方面;个人研效则是个人开发过程中的效率指标。典型的分析任务包括:
3.4.2 社区健康度
如何定义社区健康度是首要问题,CHAOSS 开源项目与社区在社区健康度方面做出了第一步工作。典型的分析任务包括:
- 关键要素:活跃度、健壮性、社区风险
- 社区健康度评估模型
- 社区健康度指标体系
- 社区健康标杆项目
3.4.3 社区持续性
如何定义社区的可持续性是首要问题,CHAOSS 开源项目与社区在社区持续性方面做出了第一步工作。典型的分析任务包括:
- 关键要素:关注度、影响力、多样性
- 社区可持续性评估模型
- 社区可持续性指标体系
- 社区可持续标杆项目
3.4.4 生态价值
开源项目与社区的生态价值是从整个开源生态的视角出发,对齐进行价值量化与判断的过程。可以从用户、技术、贡献等几个方面进行分解。典型的分析任务包括:
- 关键要素:用户生态、技术生态、贡献者生态
- 生态价值评估模型
- 生态价值指标体系
- 生态价值标杆项目
附表 开源业务场景全景图