滨海新区做网站,广州哪个区最繁华,wordpress rss订阅插件,建一个个人网站需要多少钱本文由X-lab开放实验室博士生赵生宇原创出品该篇博客继续之前关于活跃度和协作影响力的介绍继续展开#xff0c;希望可以在解决协作影响力无法容纳更多数据#xff0c;从而可以更全面衡量开源生态的同时#xff0c;也引入一种高可扩展的数学模型#xff0c;可以在任意时间快… 本文由X-lab开放实验室博士生赵生宇原创出品该篇博客继续之前关于活跃度和协作影响力的介绍继续展开希望可以在解决协作影响力无法容纳更多数据从而可以更全面衡量开源生态的同时也引入一种高可扩展的数学模型可以在任意时间快速容纳更多元的数据而不会导致模型的大幅改动。也希望可以有更多对社区度量感兴趣的朋友参与到讨论之中本人的联系方式见关于页。(http://blog.frankzhao.cn/about)该图为可探索的完整开源星系01背景之前的两篇博客介绍了一种基于开发者行为加权统计的活跃度指标计算方法以及基于活跃度的开源协作网络下的项目协作影响力指标计算方法。其中活跃度主要解决指标多元导致的认识困难同时通过不同的行为权重使这个指标对开发者的行为可以起到正向的激励作用。而协作活跃度则是从整个开源技术生态的角度出发在考虑项目间的协作关联的同时某种程度上解决了活跃度可能出现的恶意刷分的问题和人为给定权重导致的排序不稳定的问题。然而仅仅是上述两个指标除了存在一些固有度量准确度的问题外还存在着一个重要的缺陷那就是在引入新的生态数据后模型需要再次修正而开源软件生态的数据要远远超出 GitHub 全域行为数据的范畴所以我们更加需要一个高度可扩展的数学模型可以在有更多的开放数据时随时融入进来。02价值流网络就像 Nadia Eghbal 的新书「Working in Public」中表述的“消费代码的目的不是为了简单地阅读和研究它而是为了使用它开放源代码的价值不是来自于它的静态品质。”、“是基于依赖关系来衡量代码的价值只能给我们提供等式的一部分。谁在使用开放源代码很重要但谁开发了这些代码不也很重要吗”。这两句话很好的表明的我们对开源软件度量应该遵循的最基本的底层逻辑。即开源软件或开源数字制品是否有价值最重要的两个需要衡量的点分别在生产侧和消费侧。从生产侧而言即便两个开发者具有相同的活跃度但优秀的开发者的行为所产生的价值与刚入门的开发者所产生的价值是完全不同的。而从消费侧而言如果一个开源软件在持续开发、但从未被人使用过和一个可能已经长期不活跃、但却被成百上千的人所使用的的项目的价值也是不同的。所以价值流网络本质上是希望从开源软件产生的社会价值的角度来进行分析产生一个从生产端到消费端的模型可以直接衡量出每个软件的社会价值同时也可以反向推演出每个开发者的价值。这对于构建完整的开源经济生态体系是基础性的工作。03从协作影响力开始说起回头先来看一下上一篇的协作影响力模型。其实在原始的网页排名算法中是从一个概率模型出发的即当一个互联网用户浏览到某一网页时接下来他可能去哪些网页有较大概率他会在当前页面的外链中随机寻找一个链接继续访问一下也有可能就关掉网页以后在所有的网页中随机打开一个。最终网页的排名就是可能被访问到概率较大的网页排在靠前的位置。但同时这个模型也可以从价值流的角度来看也就是每个网页会向其外链的网页传递一部分自己的价值而从链入它的网页获取一部分价值同时所有网页还都具有一个基础价值。那么当在整个网络结构的价值流稳定后每个网页的价值也就被完全确定一下来那么价值最大的网页就会排名靠前一些。而从上一篇的开源协作网络中也可以认为是每个项目都有一个基础价值同时根据开发者协作导致的项目之间的关联会带来项目之间的价值流动和传递直到整个网络稳定时所有项目的协作影响力也就是被确定了下来。04一个简单的示例从上面的角度来看事实上我们是可以给出一种更加泛化的方法来进行价值网络的构造和计算的。下面给出一个最简单的例子在考虑到开发者贡献活跃度的同时加入更多的数据关系尤其是在生产侧和消费侧的数据。如上图所示在这个简单的价值网络中包含了开发者和项目两种节点开发者和项目具有各自的价值且开发者之间具有关注关系类似 GitHub 上的 Follow 关系。而项目之间具有依赖关系即上下游的使用关系。同时除了开发者对项目的活跃度以外我们还加入了关注度的概念也就是那些由开发者对项目发起的单向的行为例如 star、watch、fork、clone 等表示了对项目的关注但没有实际反馈到项目中的行为。这个网络中的价值流动可以在下表中展示每个单元格中的表示从行节点到列节点的价值传递项目开发者项目依赖活跃度、关注度开发者活跃度关注在这样一个模型下对全域开源项目和开发者的价值流网络中每个开发者的价值会通过其活跃度、项目关注度和对其他开发者关注关系向外流动而每个项目的价值会通过活跃度和依赖关系向外流动。即我个人所创造的价值大部分会通过我的具体贡献行为流动到我贡献的项目中另外有一部分会流动到我关注但没有贡献的项目中还有一部分会流动到我关注那些开发者身上。而项目的价值一部分会通过贡献关系回归到开发者那里还有一部分会通过依赖关系流动到给它提供服务的上游项目中。而由于项目和开发者还会保留自己的一部分价值那么我们可以将一些不在网络中的固有属性加入到他们的初始价值中例如开源 KOL 的初始价值更高那么这部分初始价值事实上会因为具有一定比例的保留持有而持续产生影响。这个模型是否可以最终收敛并得到稳定解是一个比较复杂的数学问题有兴趣的同学可以参考附录部分的内容。05开源生态价值流网络上面是一个可以快速实现并验证的数学模型并且具有很好的可扩展性但事实上整个开源生态的价值网络要远比上面的网络更加复杂。从生产侧到消费侧所包含的数据是远远超过这个范畴的事实上尤其在消费端被其他项目依赖并不是开源项目最终被消费的方式。事实上所有软件最终被消费的方式都是通过变成服务而满足某种现实用户的需求事实上应该是指其最终的社会效用而不是是否被集成做二次开发。如果二次开发后的项目同样没有被任何用户使用没有解决任何现实需求或换句话说没有产生任何社会效用的话那其价值就是有限的。这里可以给出一个更加复杂但在当下可能还不具备可行性的价值网络供大家参考在上图表示的复杂网络结构中其价值流动可以从下表中观察项目软件开发者公司基金会投资机构用户项目依赖、使用使用活跃度、关注度拥有拥有投资-软件使用-----使用开发者活跃度- 关注雇佣成员--公司拥有-雇佣子公司赞助投资-基金会拥有-成员赞助---投资机构投资--投资---用户活跃度-关注雇佣成员--在上图上大量与软件生态相关的实体都被纳入进来如软件、公司、基金会、投资机构、用户等。从这个不完整的视角来看开发者的活跃和用户对软件的使用本质上是所有开源软件生态价值的来源而投资机构的投资、公司通过对开发者的雇佣关系和对基金会的赞助关系所注入的是外部影响价值其他的价值均在网络内部按照上述的关系进行流动。而上述提到的项目之间除了依赖关系还有软件和项目之间使用关系。事实上传统的项目依赖关系主要是指二次开发通常以特定语言制品包的方式引入。而软件的使用则是指在最终像用户提供服务时一定不是单独项目提供服务还包括该软件运行的底层操作系统、数据库、虚拟机、其开发语言、通过 RPC 交互的其他服务等都属于软件使用范畴。在这个网络模型下如果我们可以很好的量化每一部分的具体价值和流动机制最终不仅可以很好的评估所有实体的价值而且在数据不断完善的情况下这个价值会逐渐趋近于其所对应的真实社会效用。这才是最终的目标所在。而事实上这种方法也经常用于复杂系统的求解且其解通常就是该复杂系统的稳态解揭示了该复杂系统应该具有的运行模型。当然这也不是一个最终的模型例如对于安全风险的引入那些长期从事网络安全漏洞监控与分析的开发者或公司同样为开源生态带来了巨大的价值。但外延继续延伸会导致这个网络迅速膨胀所以这里就不再扩展了。06思考价值流网络模型事实上是希望尽可能把开源生态中所包含的数据都囊括其中更重要的是提供一种上层的模型可以兼容更多的数据。价值流网络模型通过对数学模型和业务模型的解耦使得上层的开源生态描述几乎可以在不关心底层数学模型的情况下进行例如上述较复杂的网络结构并没有涉及到任何数学模型。价值流网络模型是否可以得到稳态解与其底层的数学约束息息相关感兴趣的同学可以参考附录部分。但业务模型确定后可以由具有底层知识的同学协作调整使其可收敛即可。价值流网络模型最终希望解决的是整个开源生态的经济体系构建的问题关于这个问题将在下一篇文章中展开。07问题该模型虽然解耦的数学模型和业务模型而且具有较好的可扩展性但如果设计业务模型的人不熟悉底层的数学逻辑很可能会设计出无法得出稳定解的业务模型所以对业务模型设计人员有较高的要求。该模型想要准确的衡量整个开源数字生态的经济体系需要大量的数据而其中大部分数据是难以获取和难以关联的这部分将是一个非常长期而且是需要大规模协同的工作也将是我们后续会引出的一部分工作。08附录PageRank 的收敛性一般是在其等价的马尔科夫过程视角下利用随机过程的理论进行证明。其对应的转移矩阵需要满足两个条件满足随机过程的要求即转移矩阵为一个随机矩阵。转移矩阵需为素矩阵或本原矩阵primitive matrix此时该矩阵可以满足不可约irreducible和非周期aperiodic则根据 Perron-Frobenius 定理该随机过程一定收敛。那么在高维的异质信息网络中类似的随机过程也需要满足上述两个条件即可满足其收敛性要求。更详细的信息请自行查阅相关内容。对于后续其他指标的介绍请继续关注该系列文章。如需转载请与原文作者联系。X-lab开放实验室 技术传播文明 践行同步世界 开源点亮未来