A multi-dimensional measurement system for the health of the open source software ecosystem
Through the discovery of algorithms and neural network methods in the Louvain community, a multi-dimensional measurement system was established to evaluate the health of open source software ecosystem from productivity, scale, stability and structure, and solve the lack of uniformity and subjective factors in the existing methods of health measurement. Impact issues achieve a more scientific health assessment.
Patent Information
- Application Number
- CN202110254806.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-03-09
- Publication Date
- 2024-12-24
- Estimated Expiration
- 2041-03-09
AI Technical Summary
The existing open source software ecosystem health measurement methods lack uniformity, confusing project health and ecosystem health, failing to effectively consider the topological relationship between network nodes, and having subjective factors, it is difficult to apply to actual evaluation.
The Louvain community discovery algorithm is used to find the software ecosystem, establish a multi-dimensional metric system to measure health from four dimensions: productivity, scale, stability, and structure, and quantitatively evaluate health through neural network methods to reduce the impact of subjective factors.
It provides a more scientific and objective method for measuring health of open source software ecosystems, considers the impact of structure on health, avoids subjective factors, and applies to changes in the importance of indicators at different stages of development.
Smart Images

Figure CN112882914B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the technical field of crowd-intelligence software development, and in particular to a multi-dimensional measurement system for the health of an open source software ecosystem. Background Art
[0002] A software ecosystem is a platform where many participants collaborate on a common technology platform, ultimately forming a large number of software solutions or services, such as Eclipse, Gnome, Linux, and Ruby. According to research, software ecosystems are currently an effective way to build large software systems by combining components developed by internal and external participants on a software platform. With the rapid development of open source software development platforms, the number of available open source software projects has increased dramatically, and software projects no longer exist in isolation, but in different software ecosystems on hosting platforms.
[0003] However, so far, the research on the health of the open source software ecosystem is still in its infancy. There is relatively little work on the measurement methods of the health of the software ecosystem, and there are some problems. There is no unified method to measure the health of the software ecosystem. Regarding the measurement of the health of the software ecosystem, the current work either confuses the health of the project with the health of the ecosystem, or only proposes indicators for evaluating the health of the software ecosystem without detailing the measurement methods and processes.
[0004] With the rapid development of open source software development platforms, the number of available open source software projects has increased dramatically. Software projects no longer exist in isolation, but in different software ecosystems on hosting platforms. However, so far, research on the health of open source software ecosystems is still in its infancy. There is relatively little work on the measurement and prediction methods of the health of software ecosystems, and there are some problems. There is no unified method to measure the health of software ecosystems. On the one hand, current work may confuse project health with ecosystem health. The indicators used are all at the project level, without considering the topological relationship between network nodes. The structure has a certain impact on the health of the software ecosystem. For example, the higher the densification index of the software ecosystem, the closer the connection between nodes, that is, the higher the degree of information exchange between projects, which is conducive to the formation of a healthier software ecosystem.
[0005] The industry has measured the health of the open source software ecosystem from multiple dimensions, but the angles of choice vary. Some scholars have designed a three-layer measurement indicator system to measure the sustainability of the open source software ecosystem from four dimensions: openness, stability, activity, and scalability, and proposed to determine the weight of each measurement indicator in the sustainability calculation based on its information contribution value. However, the selected indicators are at the project level, equating the health of the open source software project with the health of the software ecosystem, without considering the network relationship between projects. Some scholars have also designed a hierarchical evaluation model from three aspects, namely platform quality, community quality, and ecosystem quality, and constructed a Bayesian belief network for the software ecosystem. They have designed a framework for evaluating the quality of the ecosystem, QuESo, using a combination of subjective and objective methods, including measurement models and evaluation processes. However, this framework contains a large number of indicators, and it takes a lot of time and financial resources to conduct expert evaluations during the evaluation process, and cannot be applied to the evaluation of actual ecosystems.
[0006] Therefore, in order to help managers, investors and developers better understand the development status of the open source software ecosystem and make corresponding decisions, designing a multi-dimensional measurement system for the health of the open source software ecosystem and studying a measurement method have important theoretical significance and practical application value. Summary of the invention
[0007] To solve the above problems, the present invention discloses a multi-dimensional measurement system for the health of an open source software ecosystem. First, starting from the definition of an open source software ecosystem, the Louvain community discovery algorithm is used to find the software ecosystem in a complex network by utilizing the dependencies between nodes. Then, the health of the open source software ecosystem is measured from four dimensions, namely productivity, scale, stability, and structure. Appropriate evaluation indicators are given for each dimension, and a multi-dimensional measurement indicator system is established. Finally, the definition of health is quantified, the health of each open source software ecosystem is labeled, and a health measurement method based on a neural network is given.
[0008] Among them, the present invention is further improved in that: the software ecosystem is found based on the Louvain community discovery algorithm; there are a large number of open source software ecosystems in the open source software community; first, the definition of modularity Q is given:
[0009]
[0010] in,
[0011] ①A vw is the weight of the edge between project v and project w in the complex network of the open source software community. When the network is not a weighted graph, the weight of all edges can be regarded as 1 and is defined as:
[0012]
[0013] ② Represents the total weight of the complex network;
[0014] ③k v =∑ w A vw , represents the total weight of all edges connected to item v, that is, the degree of item v;
[0015] ④c v and c w They represent the two software ecosystems where project v and project w are located.
[0016] ⑤ Function δ(c v , c w ) is defined as follows:
[0017]
[0018] The ratio of the weight (number of edges) within the software ecosystem to the total weight (number of edges) in the entire GitHub project network is:
[0019]
[0020] The probability that item w is associated with any item in the network is And the degree of item v is k v , so the probability that item v and item w are associated under random conditions is
[0021] Therefore, the modularity Q can also be defined as the ratio of the total weight (number of edges) within the software ecosystem to the weight (number of edges) in the entire complex network minus an expected value, which is the ratio of the total weight (number of edges) within the software ecosystem to the total weight (number of edges) in the network formed by the same software ecosystem distribution when the network is set as a random network; thus, Q can be simplified as:
[0022]
[0023] Among them, ∑in represents the weight (number of edges) within the i-th software ecosystem, and ∑tot represents the weight (number of edges) of the edges associated with the projects within the i-th software ecosystem; that is,
[0024] Σin=Σ vw A vw δ(c v , i)δ(c w , i)
[0025] ∑tot=∑ v k v δ(c v , i)
[0026] Note that Q = ∑ i (e i -(a i ) 2 )
[0027] The Louvain algorithm is a community discovery algorithm based on modularity, which aims to maximize Q.
[0028] Each division
[0029] The modularity before and after the partition will be compared to obtain the modularity gain.
[0030] The modularity gain ΔQ when assigning node i to community c where node j is located is defined as:
[0031]
[0032] Among them, k i,in It is the sum of the weights of the edges between nodes in community c and node i. The first part of ΔQ is the modularity after adding node i to community c, and the second part is the modularity of node i as an independent community and community c.
[0033] ① Treat each node in the graph as an independent community, and the number of initial communities is the same as the number of nodes;
[0034] ② For each node i, try to assign node i to the community where each of its neighboring nodes is located in turn, calculate the modularity change ΔQ before and after the assignment, and record the neighbor node with the largest ΔQ. If maxΔQ>0, assign node i to the community where the neighbor node with the largest ΔQ is located, otherwise it remains unchanged;
[0035] ③Repeat ② until the communities to which all nodes belong no longer change;
[0036] ④ Compress the graph, compress all nodes in the same community into a new node, convert the weight of the edge between nodes in the community into the weight of the ring of the new node, and convert the weight of the edge between communities into the weight of the edge between new nodes;
[0037] ⑤Repeat ① until the modularity of the entire graph no longer changes; find the software ecosystem that exists in the complex network.
[0038] The present invention is further improved in that: the multi-dimensional measurement index system of the health of the open source software ecosystem evaluates the health of the software ecosystem from four dimensions: productivity, stability, scale and structure; productivity measures the speed of knowledge generation within the open source software ecosystem and the speed of knowledge transmission to the outside world. A healthy software ecosystem can continuously generate new knowledge; stability measures the ability of the open source software ecosystem to maintain a normal development state, which includes two aspects, namely the ability to resist unstable factors and the ability to return to a normal state after being affected by unstable factors; scale measures the size of the open source software ecosystem. Generally, the larger the scale, the healthier the software ecosystem; structure reflects the connection between projects in the software ecosystem, and measures the internal structure of the software ecosystem.
[0039] The present invention is further improved in that: the open source software ecosystem health measurement method first defines two time variables T 1 、T 2 , the meaning is as follows: T 1 : The time interval between the creation time of a software ecosystem in the open source software community and the last activity, used to indicate whether a software ecosystem is long-lived.
[0040] T 2 : The interval between the last activity of a software ecosystem in the open source software community and the current time, used to indicate whether a software ecosystem has a tendency to continue to grow.
[0041] T 1 、T 2 The value of can be set freely, that is, different thresholds correspond to different stages of the software project life cycle.
[0042] The interval between a creation time and the last activity time exceeds the threshold T 1 A software ecosystem with a long life is called a long-lived software ecosystem, and the time interval between the last event and the current time is less than the threshold T 2 A software ecosystem that satisfies both of these conditions is called a healthy software ecosystem.
[0043] The present invention is further improved in that: according to the definition, all software ecosystems can be labeled, that is, divided into two categories: C 0 , C 1 , representing health and unhealth respectively, and the characteristics of the software ecosystem are X = {Pro, Sta, Sca, Str}, representing productivity, stability, scalability and structure respectively. For each dimension, the feature vector is D i ={xi1 , x i2 , ..., x in}, x ik represents the kth index of the i-th dimension. We use the neural network method to obtain the weights of each evaluation index. The neural network model is as follows: Figure 3 As shown. Both the hidden layer and the output layer use the sigmoid function, that is,
[0044]
[0045] By training the neural network, we can obtain the impact of each evaluation indicator on the classification of healthy and unhealthy open source software ecosystems, and then normalize the impact, that is, obtain the weight of each indicator, and then obtain the health score of each open source software ecosystem.
[0046] Beneficial effects of the present invention:
[0047] 1. On the one hand, it can supplement the deficiencies of existing research on the health of the open source software ecosystem and consider the impact of the structure of the software ecosystem on its health.
[0048] 2. Compared with the existing subjective and objective measurement methods, the present invention uses a neural network-based method to measure the health of the software ecosystem on the basis of quantitatively defining the health of the software ecosystem, so as to avoid the influence of subjective factors. At the same time, the method proposed by the present invention can take into account the changes in the importance of indicators at different development stages of the open source software ecosystem. BRIEF DESCRIPTION OF THE DRAWINGS
[0049] Figure 1 , is a complex network of projects in the open source community;
[0050] Figure 2 is an open source software ecosystem;
[0051] Figure 3 is a schematic diagram of a neural network;
[0052] Figure 4 It is the basic framework for evaluating the health of the open source software ecosystem of the present invention. DETAILED DESCRIPTION
[0053] The present invention is further explained below in conjunction with the accompanying drawings and specific embodiments. It should be understood that the following specific embodiments are only used to illustrate the present invention and are not used to limit the scope of the present invention. It should be noted that the words "front", "rear", "left", "right", "upper" and "lower" used in the following description refer to directions in the accompanying drawings, and the words "inner" and "outer" refer to directions toward or away from the geometric center of a specific component, respectively.
[0054] like Figure 4 As shown, this embodiment provides a multi-dimensional measurement system for the health of the open source software ecosystem.
[0055] The first part is: starting from the definition of open source software ecosystem, using the dependencies between nodes, and using the Louvain community discovery algorithm to find the software ecosystem in the complex network;
[0056] The second part is: establishing a set of multi-dimensional measurement indicators for the health of the open source software ecosystem, evaluating the software ecosystem from four dimensions: productivity, scale, stability, and structure;
[0057] The third part is: quantifying the definition of the health of the open source software ecosystem, labeling the open source software ecosystem, and providing a health measurement method based on neural networks.
[0058] like Figure 1 As shown in Figure 1, in a complex network, each node does not exist independently, and there are generally intricate relationships between them. We call the clustering structure formed by the difference in the closeness of the relationship in the network a software ecosystem, such as Figure 2 As shown in Figure 2, software ecosystems in complex networks usually have the following characteristics: the connections between nodes within the software ecosystem are relatively close, while the connections between nodes between software ecosystems are relatively sparse.
[0059] The content of this embodiment includes the following parts:
[0060] (1) Searching for software ecosystems based on the Louvain community discovery algorithm
[0061] Implementation method:
[0062] In the open source software community, there are a large number of open source software ecosystems, such as GitHub. In this complex network, a node represents a project, and the edges between nodes represent the dependency relationship between projects, that is, there is a Pull Request, Issue or Commit behavior between two projects. Relying on this association relationship, the present invention mines and discovers the software ecosystem in the complex network.
[0063] First, the definition of modularity Q is given:
[0064]
[0065] in,
[0066] ①A vw is the weight of the edge between project v and project w in the complex network of the open source software community. When the network is not a weighted graph, the weight of all edges can be regarded as 1 and is defined as:
[0067]
[0068] ② Represents the total weight of the complex network.
[0069] ③k v =∑ w A vw , represents the total weight of all edges connected to item v, that is, the degree of item v.
[0070] ④c v and c w They represent the two software ecosystems where project v and project w are located.
[0071] ⑤ Function δ(c v , c w ) is defined as follows:
[0072]
[0073] The ratio of the weight (number of edges) within the software ecosystem to the total weight (number of edges) in the entire GitHub project network is:
[0074]
[0075] The probability that item w is associated with any item in the network is And the degree of item v is k v , so the probability that item v and item w are associated under random conditions is
[0076] Therefore, the modularity Q can also be defined as the ratio of the total weight (number of edges) within the software ecosystem to the weight (number of edges) in the entire complex network minus an expected value, which is the ratio of the total weight (number of edges) within the software ecosystem to the total weight (number of edges) in the network formed by the same software ecosystem distribution when the network is set as a random network. Therefore, Q can be simplified as:
[0077]
[0078] Among them, ∑in represents the weight (number of edges) within the i-th software ecosystem, and ∑tot represents the weight (number of edges) of the edges associated with the projects within the i-th software ecosystem.
[0079] ∑in=∑ vw A vw δ(c v , i)δ(c w , i)
[0080] ∑tot=∑ v k v δ(c v , i)
[0081] Note that Q = ∑ i (e i -(a i ) 2 )
[0082] The Louvain algorithm is a community discovery algorithm based on modularity, with the goal of maximizing Q. Each partition will compare the modularity before and after the partition to obtain the modularity gain.
[0083] The modularity gain ΔQ when assigning node i to community c where node j is located is defined as:
[0084]
[0085] Among them, k i,in It is the sum of the weights of the edges between nodes in community c and node i. The first part of ΔQ is the modularity after adding node i to community c, and the second part is the modularity of node i as an independent community and community c.
[0086] ① Treat each node in the graph as an independent community, and the number of initial communities is the same as the number of nodes;
[0087] ② For each node i, try to assign node i to the community where each of its neighboring nodes is located in turn, calculate the modularity change ΔQ before and after the assignment, and record the neighbor node with the largest ΔQ. If maxΔQ>0, assign node i to the community where the neighbor node with the largest ΔQ is located, otherwise it remains unchanged;
[0088] ③Repeat ② until the communities to which all nodes belong no longer change;
[0089] ④ Compress the graph, compress all nodes in the same community into a new node, convert the weight of the edge between nodes in the community into the weight of the ring of the new node, and convert the weight of the edge between communities into the weight of the edge between new nodes
[0090] ⑤Repeat ① until the modularity of the entire graph no longer changes
[0091] Through the above methods, we can find the software ecosystem in the complex network, such as Figure 2 shown.
[0092] (2) Multi-dimensional measurement indicator system for the health of the open source software ecosystem
[0093] Implementation method:
[0094] The present invention evaluates the health of the software ecosystem from four dimensions: productivity, stability, scalability, and structure. The multi-dimensional measurement indicator system is shown in Table 1.
[0095] Table 1 Multi-dimensional measurement indicator system for the health of the open source software ecosystem
[0096]
[0097]
[0098] Productivity measures the speed at which knowledge is generated within the open source software ecosystem and the speed at which knowledge is transmitted to the outside world. A healthy software ecosystem can continuously generate new knowledge; stability measures the ability of the open source software ecosystem to maintain a normal development state, which includes two aspects, namely the ability to resist unstable factors and the ability to return to normal after being affected by unstable factors; scale measures the size of the open source software ecosystem. Generally, the larger the scale, the healthier the software ecosystem; structure reflects the connection between projects in the software ecosystem and measures the internal structure of the software ecosystem.
[0099] (3) Methods for measuring the health of the open source software ecosystem
[0100] The definition of software ecosystem health that is generally accepted in the industry is: "The health of a software ecosystem is a long-term existence with a tendency to continue to grow." In order to quantify this definition, the present invention defines two time variables T: 1 、T 2 , the meaning is as follows:
[0101] T 1 : The time interval between the creation time of a software ecosystem in the open source software community and the last activity, used to indicate whether a software ecosystem is long-lived.
[0102] T 2 : The interval between the last activity of a software ecosystem in the open source software community and the current time, used to indicate whether a software ecosystem has a tendency to continue to grow.
[0103] T 1 、T 2 The value of can be set freely, that is, different thresholds correspond to different stages of the software project life cycle.
[0104] The interval between a creation time and the last activity time exceeds the threshold T 1 A software ecosystem with a long life is called a long-lived software ecosystem, and the time interval between the last event and the current time is less than the threshold T 2A software ecosystem that satisfies both of these conditions is called a healthy software ecosystem.
[0105] Now, based on this definition, we can label all software ecosystems into two categories: C 0 , C 1 , representing health and unhealth respectively, and the characteristics of the software ecosystem are X = {Pro, Sta, Sta, Str}, representing productivity, stability, scalability and structure respectively. For each dimension, the feature vector is D i ={x i1 , x i2 , ..., x in}, x ik represents the kth index of the i-th dimension. We use the neural network method to obtain the weights of each evaluation index. The neural network model is as follows: Figure 3 As shown. Both the hidden layer and the output layer use the sigmoid function, that is,
[0106]
[0107] By training the neural network, we can obtain the impact of each evaluation indicator on the classification of healthy and unhealthy open source software ecosystems, and then normalize the impact, that is, obtain the weight of each indicator, and then obtain the health score of each open source software ecosystem.
[0108] We can train neural network models for different stages of development of open source software ecosystems, and then obtain the measurement weights of health evaluation indicators of software ecosystems at different stages. This will enable us to detect and regulate the software ecosystem and help relevant personnel make decisions.
[0109] The technical means disclosed in the scheme of the present invention are not limited to the technical means disclosed in the above-mentioned implementation mode, but also include technical schemes composed of any combination of the above technical features.
Claims
1. A multi-dimensional measurement system for the health of the open source software ecosystem, characterized by: Includes the following sections: Module 1: Starting from the definition of open source software ecosystem, using the dependencies between nodes, the Louvain community discovery algorithm is used to find the software ecosystem in the complex network; the software ecosystem is found based on the Louvain community discovery algorithm; first, the definition of modularity Q is given: in, ①A vw is the weight of the edge between project v and project w in the complex network of the open source software community. When the network is not a weighted graph, the weight of all edges is considered to be 1 and is defined as: ③k v =∑ w A vw , represents the total weight of all edges connected to item v, that is, the degree of item v; ④c v and c w Represent the two software ecosystems where project v and project w are located; ⑤ Function δ(c v ,c w ) is defined as follows: The ratio of the weight within the software ecosystem to the total weight of the entire GitHub project network is: The probability that item w is associated with any item in the network is And the degree of item v is k v , so the probability that item v and item w are associated under random conditions is Therefore, the modularity Q is defined as the ratio of the total weight within the software ecosystem to the weight in the entire complex network minus an expected value, which is the ratio of the total weight within the software ecosystem to the total weight in the network formed by the same software ecosystem distribution when the network is set as a random network; thus, Q is simplified to: Among them, ∑in represents the weight within the i-th software ecosystem, and ∑tot represents the weight of the edge associated with the project within the i-th software ecosystem; that is, Note that Q = ∑ i (e i -(a i ) 2 ) The Louvain algorithm is a community discovery algorithm based on modularity, with the goal of maximizing Q. Each partition will compare the modularity before and after the partition to obtain the modularity gain. The modularity gain ΔQ when assigning node i to community c where node j is located is defined as: Among them, k i,in is the sum of the weights of the edges between nodes in community c and node i; the first part of ΔQ is the modularity after adding node i to community c, and the second part is the modularity of node i as an independent community and community c; the specific steps of using the Louvain community discovery algorithm to find the software ecosystem in a complex network are as follows: ① Treat each node in the graph as an independent community, and the number of initial communities is the same as the number of nodes; ② For each node i, assign node i to the community where each of its neighboring nodes is located in turn, calculate the modularity change ΔQ before and after the allocation, and record the neighboring node with the largest ΔQ. If maxΔQ>0, assign node i to the community where the neighboring node with the largest ΔQ is located, otherwise it remains unchanged; ③Repeat ② until the communities to which all nodes belong no longer change; ④ Compress the graph, compress all nodes in the same community into a new node, convert the weight of the edge between nodes in the community into the weight of the ring of the new node, and convert the weight of the edge between communities into the weight of the edge between new nodes; ⑤ Repeat ① until the modularity of the entire graph no longer changes; find the software ecosystem that exists in the complex network; Module 2: A multi-dimensional measurement indicator system for the health of the open source software ecosystem is established to evaluate the software ecosystem from four dimensions: productivity, scale, stability, and structure. The multi-dimensional measurement indicator system for the health of the open source software ecosystem evaluates the health of the software ecosystem from four dimensions: productivity, stability, scale, and structure. Productivity measures the speed of knowledge generation within the open source software ecosystem and the speed of knowledge transmission to the outside world. A healthy software ecosystem can continuously generate new knowledge. Stability measures the ability of the open source software ecosystem to maintain a normal development state, which includes two aspects, namely the ability to resist unstable factors and the ability to return to normal after being affected by unstable factors. Scale measures the size of the open source software ecosystem. The larger the scale, the healthier the software ecosystem. Structure reflects the connection between projects in the software ecosystem and measures the internal structure of the software ecosystem. Module 3: Quantify the definition of the health of the open source software ecosystem, label the open source software ecosystem, and provide a health measurement method based on neural networks; The open source software ecosystem health measurement method first defines two time variables T1 and T2, with the following meanings: T1: The time interval between the creation time of a software ecosystem in the open source software community and the last activity, which is used to indicate whether a software ecosystem is long-lived; T2: The time interval between the last activity time of a software ecosystem in the open source software community and the current time, which is used to indicate whether a software ecosystem has a tendency to continue to grow; The values of T1 and T2 are freely set, that is, different thresholds correspond to different stages of the software project life cycle; A software ecosystem whose creation time and the last activity time have an interval greater than the threshold T1 is called a long-lived software ecosystem, and a software ecosystem whose last event time interval from the current time is less than the threshold T2 is called a software ecosystem with a growth tendency; therefore, a software ecosystem that meets both conditions is called a healthy software ecosystem.
2. The multi-dimensional measurement system for the health of the open source software ecosystem according to claim 1 is characterized by: According to the definition, all software ecosystems are labeled into two categories: C0 and C1, representing healthy and unhealthy respectively. The characteristics of software ecosystems are X = {Pro, Sta, Sca, Str}, representing productivity, stability, scale and structure respectively. For each dimension, the characteristic vector is D i ={x i1 ,x i2 ,…,x in }, x ik represents the kth index of the i-th dimension; the neural network method is used to obtain the weights of each evaluation index. The hidden layer and output layer in the neural network model both use the sigmoid function, that is, By training the neural network, we obtain the impact of each evaluation indicator on classifying healthy and unhealthy open source software ecosystems, and then normalize the impact, that is, obtain the weight of each indicator, and then obtain the health score of each open source software ecosystem.
