如何评价一个开源项目——价值流网络

本文由X-lab开放实验室博士生赵生宇原创出品

该篇博客继续之前关于活跃度和协作影响力的介绍继续展开,希望可以在解决协作影响力无法容纳更多数据,从而可以更全面衡量开源生态的同时,也引入一种高可扩展的数学模型,可以在任意时间快速容纳更多元的数据,而不会导致模型的大幅改动。也希望可以有更多对社区度量感兴趣的朋友参与到讨论之中,本人的联系方式见关于页。

(http://blog.frankzhao.cn/about)

6f5291ace2232b5ee06c4ca332d5f5c3.gif

(该图为可探索的完整开源星系)

01

背景

之前的两篇博客介绍了一种基于开发者行为加权统计的活跃度指标计算方法,以及基于活跃度的开源协作网络下的项目协作影响力指标计算方法。其中活跃度主要解决指标多元导致的认识困难,同时通过不同的行为权重使这个指标对开发者的行为可以起到正向的激励作用。而协作活跃度则是从整个开源技术生态的角度出发,在考虑项目间的协作关联的同时,某种程度上解决了活跃度可能出现的恶意刷分的问题和人为给定权重导致的排序不稳定的问题。

然而仅仅是上述两个指标,除了存在一些固有度量准确度的问题外,还存在着一个重要的缺陷,那就是在引入新的生态数据后模型需要再次修正,而开源软件生态的数据要远远超出 GitHub 全域行为数据的范畴,所以我们更加需要一个高度可扩展的数学模型,可以在有更多的开放数据时随时融入进来。

02

价值流网络

就像 Nadia Eghbal 的新书「Working in Public」中表述的:“消费代码的目的不是为了简单地阅读和研究它,而是为了使用它,开放源代码的价值不是来自于它的静态品质。”、“是,基于依赖关系来衡量代码的价值,只能给我们提供等式的一部分。谁在使用开放源代码很重要,但谁开发了这些代码不也很重要吗?”。这两句话很好的表明的我们对开源软件度量应该遵循的最基本的底层逻辑。

即开源软件或开源数字制品是否有价值最重要的两个需要衡量的点分别在生产侧和消费侧。从生产侧而言,即便两个开发者具有相同的活跃度,但优秀的开发者的行为所产生的价值与刚入门的开发者所产生的价值是完全不同的。而从消费侧而言,如果一个开源软件在持续开发、但从未被人使用过,和一个可能已经长期不活跃、但却被成百上千的人所使用的的项目的价值也是不同的。

所以价值流网络本质上是希望从开源软件产生的社会价值的角度来进行分析,产生一个从生产端到消费端的模型,可以直接衡量出每个软件的社会价值,同时也可以反向推演出每个开发者的价值。这对于构建完整的开源经济生态体系是基础性的工作。

03

从协作影响力开始说起

回头先来看一下上一篇的协作影响力模型。

其实在原始的网页排名算法中,是从一个概率模型出发的,即当一个互联网用户浏览到某一网页时,接下来他可能去哪些网页?有较大概率他会在当前页面的外链中随机寻找一个链接继续访问一下,也有可能就关掉网页以后在所有的网页中随机打开一个。最终网页的排名就是可能被访问到概率较大的网页排在靠前的位置。

但同时这个模型也可以从价值流的角度来看,也就是每个网页会向其外链的网页传递一部分自己的价值,而从链入它的网页获取一部分价值,同时所有网页还都具有一个基础价值。那么当在整个网络结构的价值流稳定后,每个网页的价值也就被完全确定一下来,那么价值最大的网页就会排名靠前一些。

而从上一篇的开源协作网络中,也可以认为是每个项目都有一个基础价值,同时根据开发者协作导致的项目之间的关联会带来项目之间的价值流动和传递,直到整个网络稳定时,所有项目的协作影响力也就是被确定了下来。

04

一个简单的示例

从上面的角度来看,事实上我们是可以给出一种更加泛化的方法来进行价值网络的构造和计算的。下面给出一个最简单的例子,在考虑到开发者贡献活跃度的同时加入更多的数据关系,尤其是在生产侧和消费侧的数据。

5ab153ad7442e33ce0f497ee2dcd53da.png


如上图所示,在这个简单的价值网络中,包含了开发者和项目两种节点,开发者和项目具有各自的价值,且开发者之间具有关注关系,类似 GitHub 上的 Follow 关系。而项目之间具有依赖关系,即上下游的使用关系。同时除了开发者对项目的活跃度以外,我们还加入了关注度的概念,也就是那些由开发者对项目发起的单向的行为,例如 star、watch、fork、clone 等表示了对项目的关注,但没有实际反馈到项目中的行为。这个网络中的价值流动可以在下表中展示,每个单元格中的表示从行节点到列节点的价值传递:


项目
开发者
项目依赖活跃度、关注度
开发者
活跃度
关注

在这样一个模型下,对全域开源项目和开发者的价值流网络中,每个开发者的价值会通过其活跃度、项目关注度和对其他开发者关注关系向外流动;而每个项目的价值会通过活跃度和依赖关系向外流动。即我个人所创造的价值大部分会通过我的具体贡献行为流动到我贡献的项目中,另外有一部分会流动到我关注但没有贡献的项目中,还有一部分会流动到我关注那些开发者身上。而项目的价值一部分会通过贡献关系回归到开发者那里,还有一部分会通过依赖关系流动到给它提供服务的上游项目中。

而由于项目和开发者还会保留自己的一部分价值,那么我们可以将一些不在网络中的固有属性加入到他们的初始价值中,例如开源 KOL 的初始价值更高,那么这部分初始价值事实上会因为具有一定比例的保留持有而持续产生影响。


这个模型是否可以最终收敛并得到稳定解,是一个比较复杂的数学问题,有兴趣的同学可以参考附录部分的内容。

05

开源生态价值流网络

上面是一个可以快速实现并验证的数学模型,并且具有很好的可扩展性,但事实上整个开源生态的价值网络要远比上面的网络更加复杂。从生产侧到消费侧所包含的数据是远远超过这个范畴的,事实上尤其在消费端,被其他项目依赖并不是开源项目最终被消费的方式。事实上所有软件最终被消费的方式都是通过变成服务而满足某种现实用户的需求,事实上应该是指其最终的社会效用,而不是是否被集成做二次开发。如果二次开发后的项目同样没有被任何用户使用,没有解决任何现实需求,或换句话说没有产生任何社会效用的话,那其价值就是有限的。


这里可以给出一个更加复杂,但在当下可能还不具备可行性的价值网络供大家参考:

93594f77a3827c4a68f1b68ad5c1ba33.png

在上图表示的复杂网络结构中,其价值流动可以从下表中观察:


项目软件
开发者公司
基金会投资机构用户
项目
依赖、使用
使用
活跃度、关注度
拥有
拥有投资
-
软件使用--
-
--使用
开发者
活跃度
关注
雇佣
成员--
公司
拥有
-雇佣子公司
赞助投资
-
基金会
拥有
-
成员
赞助
--
-
投资机构
投资--
投资
--
-
用户
活跃度
-关注
雇佣
成员
--
在上图上,大量与软件生态相关的实体都被纳入进来,如软件、公司、基金会、投资机构、用户等。从这个不完整的视角来看,开发者的活跃和用户对软件的使用本质上是所有开源软件生态价值的来源,而投资机构的投资、公司通过对开发者的雇佣关系和对基金会的赞助关系所注入的是外部影响价值,其他的价值均在网络内部按照上述的关系进行流动。


而上述提到的项目之间除了依赖关系,还有软件和项目之间使用关系。事实上传统的项目依赖关系主要是指二次开发,通常以特定语言制品包的方式引入。而软件的使用则是指在最终像用户提供服务时,一定不是单独项目提供服务,还包括该软件运行的底层操作系统、数据库、虚拟机、其开发语言、通过 RPC 交互的其他服务等,都属于软件使用范畴。


在这个网络模型下,如果我们可以很好的量化每一部分的具体价值和流动机制,最终不仅可以很好的评估所有实体的价值,而且在数据不断完善的情况下,这个价值会逐渐趋近于其所对应的真实社会效用。这才是最终的目标所在。而事实上这种方法也经常用于复杂系统的求解,且其解通常就是该复杂系统的稳态解,揭示了该复杂系统应该具有的运行模型。


当然这也不是一个最终的模型,例如对于安全风险的引入,那些长期从事网络安全漏洞监控与分析的开发者或公司同样为开源生态带来了巨大的价值。但外延继续延伸会导致这个网络迅速膨胀,所以这里就不再扩展了。

06

思考

  • 价值流网络模型事实上是希望尽可能把开源生态中所包含的数据都囊括其中,更重要的是提供一种上层的模型可以兼容更多的数据。

  • 价值流网络模型通过对数学模型和业务模型的解耦,使得上层的开源生态描述几乎可以在不关心底层数学模型的情况下进行,例如上述较复杂的网络结构,并没有涉及到任何数学模型。

  • 价值流网络模型是否可以得到稳态解,与其底层的数学约束息息相关,感兴趣的同学可以参考附录部分。但业务模型确定后可以由具有底层知识的同学协作调整使其可收敛即可。

  • 价值流网络模型最终希望解决的是整个开源生态的经济体系构建的问题,关于这个问题,将在下一篇文章中展开。

07

问题

  • 该模型虽然解耦的数学模型和业务模型,而且具有较好的可扩展性,但如果设计业务模型的人不熟悉底层的数学逻辑,很可能会设计出无法得出稳定解的业务模型,所以对业务模型设计人员有较高的要求。

  • 该模型想要准确的衡量整个开源数字生态的经济体系,需要大量的数据,而其中大部分数据是难以获取和难以关联的,这部分将是一个非常长期,而且是需要大规模协同的工作,也将是我们后续会引出的一部分工作。

08

附录

PageRank 的收敛性一般是在其等价的马尔科夫过程视角下,利用随机过程的理论进行证明。其对应的转移矩阵需要满足两个条件:

  • 满足随机过程的要求,即转移矩阵为一个随机矩阵。

  • 转移矩阵需为素矩阵或本原矩阵(primitive matrix),此时该矩阵可以满足不可约(irreducible)和非周期(aperiodic),则根据 Perron-Frobenius 定理,该随机过程一定收敛。

那么在高维的异质信息网络中,类似的随机过程也需要满足上述两个条件,即可满足其收敛性要求。更详细的信息请自行查阅相关内容。

对于后续其他指标的介绍,请继续关注该系列文章。如需转载请与原文作者联系。

ba447ec02a26cde756a1c1d27accfe78.gif

dfee061a67459d4dea8b126bc9f1935e.png

X-lab开放实验室

          技术传播文明

          践行同步世界

          开源点亮未来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【翻译】C#编程语言和JAVA编程语言的比较(下)

原文地址:http://www.25hoursaday.com/CsharpVsJava.html 6、集合 许多有名的编程语言都会包含一个集合框架,框架一般由各种用于保存数据的数据结构和配套的操作对象的算法构成。集合框架的优势是让开发者可以不用写数据结构和排序算法,把精力…

物理太难?这些虚拟动图,让你看懂物理

全世界只有3.14 % 的人关注了爆炸吧知识(刻度尺的使用)(测量平均速度实验)(声音的产生)(温度计的使用)(晶体和非晶体的熔化)(光的反射&#xff09…

linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具

httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在用户的系统上不需要安装额外的软件(依赖)。从本质上来说它是一个 cURL 工具的封装,意味着你可以在 URL 后使…

微软 Ignite 大会 PowerBI 划重点

2021 年 11 月 2 日,微软举办 Ignite 大会,其中关于 Power BI 有哪些重点,带给你了解。摘要Power BI 和 Power Point 将原生整合。Power BI 和 Teams 将更深入整合。Power BI 云端数据集推出自动聚合。Power BI 数据模型推出混合表。Power BI…

美女晕倒怎么办?二哈:这不是一滋就醒......

1 永远不要质疑二哈▼2 睡觉也不耽误练功▼3 谁还没为数学考试受过伤呢?▼4 可能我的嘴巴安装了笑话过滤器吧▼5 我书读得少,你别吓唬我▼6 希望狗没事儿▼7 海王的微信壁纸事实证明,会计确实不赚钱▼你点的每个赞,我都认真…

linux at java,Linux-Tutorial/Java-bin.md at master · linsanityHuang/Linux-Tutorial · GitHub

Java bin 目录下的工具JVM 内存结构运行时数据区(JVM 规范)VM 栈(JVM 虚拟机栈)是线程私有的,它的生命周期和线程相同。它描述的是 Java 方法执行的内存模式。Java 堆区(Heap)是 Java 虚拟机所管理的内存中最大的一块。是被所有线程共享的一块内存区域,在…

15℃!人类首次实现高压下室温超导,研究登上Nature封面

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:机器之心今天一项新纪录,轰动整个物理界。「室温超导有可能实现吗?」这个问题困惑了人们许多年。而最新一期的 Nature 杂志封面研究给出了肯定的答案,该研究制造出了第一个无需冷却…

【ACR2015】依那西普按需维持治疗策略有效抑制RA骨破坏进展

标签: 类风湿关节炎; 依那西普; 药物减停; 复发重治 对RA疾病复发患者, 依那西普按需治疗与持续足剂量治疗是否存在疗效差异? Inui K, et al. ACR 2015. Presentation ID: 477. 背景/目的: 生物DMARDs(bDMARDs)对RA治疗而言非常重要, 尤其对…

堪称经典!这部由苏联最杰出数学家编写的数学教材,为何能大受推崇?

全世界只有3.14 % 的人关注了爆炸吧知识安德列柯尔莫哥洛夫,20世纪苏联最杰出的数学家,也是20世纪世界上为数极少的几个最有影响的数学家之一。1924年他念大学四年级时就和当时的苏联数学家辛钦一起建立了关于独立随机变量的三级数定理。1928年他得到了随…

浅议NetMQ常见模式和消息加密机制

题图来自https://www.pexels.com/概述在传统企业级开发中,消息队列机制已经成为一种非常常见的技术实现手段,而基于NetMQ则看起来有点像一朵“奇葩”,看起来从名字似乎是一个消息队列(Message Quene),但事实…

CentOS 5.5下搭建部署独立SVN服务器全程详解

SVN服务器有2种运行方式: 1、独立服务器 (例如:svn://xxx.com/xxx); 2、借助apache (例如:http://svn.xxx.com/xxx); 为了不依赖apache,我选择第一种方式:独立的svn服务器。SVN存储版本数据也…

35岁成MIT终身教授!北大数学“黄金一代”再获大奖

全世界只有3.14 % 的人关注了爆炸吧知识18岁时满分斩获国际奥林匹克数学竞赛金牌,本科就读北大数院期间19门课程成绩100分、7门99分,35岁成为麻省理工(MIT)终身教授……近日,数学“大神”恽之玮再获国际大奖——西蒙斯…

二维数组foreach嵌套遍历,判断连续3天以上的算有效数据

2019独角兽企业重金招聘Python工程师标准>>> $studycourseinfo $studycourseinfoModel->where($where)->limit($page->firstRow.,.$page->listRows)->order(create_time asc)->select(); //$studycourseinfos $studycourseinfoModel->where(…

linux mint 用户管理,Linux Mint 新工具:将网站转变为独立的应用

Linux Mint 目前正在积极推进 20.1 版本,日前官方博客介绍了新版本将会带来的一项有意思的新特性:WebApp 管理器。简单来讲,这一特性可以把网站转变成独立的应用,这与基于 Debian 和 Ubuntu 的发行版 Peppermint OS 名为 ICE 的功…

如何评价一个开源项目——协作影响力

本文由X-lab开放实验室博士生赵生宇创作 该篇博客紧跟上一篇关于活跃度的介绍这篇文章系统介绍了一种基于全域开发者协作网络的项目影响力评估方法,该方法对于分析整个开源生态有极大的帮助。在一次性评估出所有项目的协作影响力的同时,也可以对项目的协…

UITableView 界面小实例

最近一是很忙,没时间写东西,今天抽时间来总结一下这几天学到的东西 首先看看,程序现在的样子: 基本完成这些,还有一个webview就不截图了 记录一下要点,首先自定义tableview,这个是按照iphone3开…

linux 文档属于apache,Apache 安装和使用文档

Apache 安装和使用文档更新时间:2009年11月26日 00:34:37 作者:Apache安装和使用文档一、准备工作:1台PC机,安装linux操作系统 参考文档linux安装.docx2 gcc的安装 参考文档gcc的安装.zip3 apache的安装包httpd-2.0.63.tar.gz二…

在数学世界,都有这些美妙的数学公式......

全世界只有3.14 % 的人关注了爆炸吧知识什么是数学?华罗庚说:宇宙之大,粒子之微,火箭之速,化工之巧,地球之变,生物之谜,日用之繁,无处不用数学......回首往昔&#xff0c…

.NET 生态系统的蜕变之 .NET 6云原生

云原生的英文名是cloud native,native 就是土著的意思,也就是土著对当地的环境是非常适应的,在云的环境和传统的数据中心是非常不同的,云原生就是要用的云的技术来构建应用, 利用云的技术来降低种端服务的风险和提高可…

世界十大无法科学解释灵异事件(进来发表自己看发)

1、法老咒语(世界最大灵异事件) 2、葡萄牙灵异事件(在网上引起了极大的轰动) 3、伦敦塔闹鬼(超著名) 4、20世纪上海滩灵异事件(孟小冬照片灵异事件) 5、鬼脸(墙壁上出…