Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.6 开源评价 #47

Open
Peng99999 opened this issue Sep 11, 2024 · 0 comments
Open

3.6 开源评价 #47

Peng99999 opened this issue Sep 11, 2024 · 0 comments
Labels

Comments

@Peng99999
Copy link

Peng99999 commented Sep 11, 2024

1、术语和定义

1.1 开源评价 Open Source Evaluation

开源评价是指在开源生态领域内基于数据、方法对开源项目、人才、活动、贡献等各个方面进行评估和评价。

2、标准解读

2.1 基本知识

开源评价是通过系统性的数据、方法和分析,对开源项目、人才、活动和贡献等方面进行评估的过程。在开源生态中,评价不仅有助于衡量项目的质量和健康状态,还能够为决策者提供重要的参考信息。开源评价涵盖多个维度,如项目的技术质量、社区的活跃度、贡献者的多样性等。这种评价对于了解开源项目的当前状态、预测其未来发展趋势,以及促进项目持续改进和创新具有重要意义。

在此基础上,接下来将重点介绍开源成熟度模型和开源评价指标,以帮助更好地理解和应用开源评价方法。

2.2 深入理解

2.2.1开源成熟度模型

社区治理与运营的成效可以通过开源成熟度模型(Open Source Program Maturity Model,OSPM)进行定性或定量的评估,以衡量开源社区的健康发展程度,并为管理者和运营者提供参考和指导。

OSPM 是一种评估和衡量开源社区成熟度和可持续性的框架。它可以帮助管理者和运营者了解社区在不同方面的表现,并制定相应的策略和计划来促进社区的健康发展。

image

图中:

初始阶段(社区共识):社区成员建立共同的价值观和目标,明确社区使命和愿景。社区成员关注项目的基本架构和功能的开发,通过讨论和协作,以促进共识的形成。
发展阶段(社区信赖):社区吸引更多贡献者和用户,建立开放和透明的协作模式。社区成员关注代码质量和文档完善,确保社区的可靠性和可信度。
成熟阶段(社区归属):社区拥有稳定的开发和贡献生态系统,成员形成归属感。社区成员形成对社区的归属感,并积极参与社区活动和决策,同时注重社区治理和社区的品牌建设。
高级阶段(社区连接):社区与其他开源社区和组织建立联系和合作。社区成员注重更加成熟和专业化的社区治理和运营,并主动与其他社区形成合作互利的关系,共同推动开源生态发展。
卓越阶段(社区引领):社区成为业界领导者,具有广泛影响力。社区成员注重可持续性、领导力和影响力的持续增长。

通过本模型,社区管理者和运营者可以更好理解社区的发展阶段和关注事项,从而制定相应的策略和计划促进社区成长,同时社区成员也能够通过本模型了解其在社区中的角色和贡献的重点。

2.2.2开源评价指标

开源评价指标是用于评估开源项目质量、发展状态和社区健康度的一系列标准和度量方法。评价指标能够提供量化的评估结果、指导决策、定义目标和监控进展,从而促进社区的发展与成熟。根据对开源社区活动类型和活动主体关系的分析,木兰开源社区在孵化项目OpenDigger中设计并实现了三种评价指标:活跃度指标、影响力指标和价值网络指标。

评估体系能够帮助社区管理者和运营者全面了解社区的成熟度,并制定相应的策略和计划,以推动社区向更高的成熟度水平发展。同时,评价指标也能够为社区成员提供明确的目标和方向,帮助他们更好地理解自己在社区中的角色和贡献的重点。

  • 活跃度指标

活跃度指标用于评估开源社区的整体活动强度,衡量开发者参与的频度,并从宏观上描述社区的健康情况,进而评价开源社区的成熟度。

活跃度指标通过加权求和的方式,根据某一时间段内五类事项的数量进行计算,从而对开源社区的活动进行量化。具体计算公式如下:

S = aOI + bIC + cOP + dPRR + e*MP

其中公式中的五种符号代表着开源社区的五类主要活动,并为其制定相应的评价指标和方法,以确保评价的准确性和一致性。这五类活动为:
OI:涉及新任务的创建,用于日常开发事务的展开。
IC:在特定任务中进行日常讨论和交流。
OP:提出将新代码合并到代码仓库的请求。
PRR:对代码合并过程进行评审和讨论。
MP:将代码最终合并到代码仓库中。

公式中:S —— 社区活跃度指标计算结果;a、b、c、d、e —— 每类事项的权重,可由用户通过专家共识或技术手段确定。活跃度指标计算具体权重和计分规则示例见下表。其中木兰开源社区在孵化项目 OpenDigger 采用此活跃度计算方法,即 Activity 指标。该指标可以根据需求进行自定义调节,或使用技术方法(如层次分析法)来确定每个事项的权重。

image
  • 影响力指标

影响力指标是活跃度指标的延伸,综合考虑活动情况和开发者与项目之间的差异性和网络特征,更全面准确地评估开源社区的成熟度。影响力指标利用五类事项的全部信息,在某一时间段内构建开发者协作关系网络,从而得到包含开源全域开发者和项目开源社区协作关系的网络。通过图算法分析该网络,可以计算出开发者参与开源项目的协作影响力结果。

在全域开源协作网络中,可以构建一个异质协作网络,其中以项目和开发者为节点,以活动频度为边。通过对该异质协作网络进行降维(将开发者与项目合并为社区),然后利用图分析算法(如加权 PageRank 算法)来分析整个协作网络,可以得到每个开源社区的全域影响力排名和影响力值,后者即为影响力指标的计算结果。

木兰开源社区在孵化项目 OpenDigger 采用此影响力指标计算方式,即全域 OpenRank 指标(Global OpenRank,GOR)。在该指标中,所有参数都可以根据需求进行自定义调节。

  • 价值网络指标

价值网络指标是对影响力指标的进一步扩展和细化。它考虑了不同开发者在不同协作单元中的协作关系,帮助项目了解社区开发者的贡献价值和贡献分布情况,对社区的治理、运营和激励具有重要的指导价值。价值网络指标利用开发者在不同协作单元中的活动,在某一时间段内构建开发者协作关系网络,并得到包含开发者、项目、任务和合并请求的社区协作价值网络。通过图算法分析该协作价值网络,可以计算出开发者参与开源项目贡献的价值,并累加得出整个开源社区的价值。

构建价值网络即当多个贡献者同时在开源项目的同一个协作单元(例如Issue、PR等)中活跃时,这些贡献者之间存在协作关联。

在某个开源社区的价值网络中,以开发者和项目协作单元为节点,以活动频度为边,构建社区内部价值网络,见下图。通过应用图分析算法(例如加权PageRank算法)分析该社区内部的价值网络,可得到该社区开发者和协作单元的价值排名和价值数值。该社区的所有价值单元的价值数值相加,为价值网络指标的计算结果。为了使价值网络指标的结果符合社区的实际价值,可以加入更多的关联数据,例如项目之间的依赖关系和开发者之间的社交关系等。

木兰开源社区在孵化项目 OpenDigger 采用了此价值网络计算规则,即社区 OpenRank 指标(Community OpenRank,COR)。在该指标中,所有的参数都可以根据需求进行自定义调节。

image

3、应用案例

3.1 基于OpenRank的开源贡献评价

基于OpenRank指标有如下应用:
全球开源协作全景图大屏,该全景图清晰的展示了全球范围内以及中国范围内的开源企业和开发者的每月OpenRank值的变化情况以及OpenRank总值,来评价这些开源企业和开发者的贡献情况
image

与上图类似的,还有中国高校开源贡献全景图,该图丰富的展示了中国各个高校以及学生在开源领域的评价
image

4、总结

开源评价通过系统性的方法对开源项目、社区、贡献者等各方面进行评估,为开源生态的持续发展提供重要的指导。在开源评价中,开源成熟度模型和开源评价指标起到了关键作用。开源成熟度模型(OSPM)帮助管理者评估社区在不同阶段的发展状况,从社区共识到社区引领,为制定社区治理和发展策略提供参考。开源评价指标(如活跃度指标、影响力指标和价值网络指标)则通过量化方法,对开源社区的活跃程度、影响力以及贡献价值进行精确评估。这些评价体系不仅帮助管理者理解开源社区的状态,也为贡献者提供了清晰的反馈,激励他们在开源社区中的持续贡献和成长。

5、推荐阅读

6、参考资料

https://github.com/kaiyuanshe/ONES/wiki/1270.3-Community-governance

@Peng99999 Peng99999 changed the title 开源评价 3.6 开源评价 Sep 11, 2024
@wj23027 wj23027 added the 社区 label Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants