Network-based Analysis of the Structure and Evolution of an Open Source Software Product Qize Le Washington State University qizele@wsu.edu Jitesh H. Panchal Washington State University panchal@wsu.edu Abstract In this paper, an analysis of product structures in open source software (OSS) at both product level and module level is presented. At the product level, the product structures are modeled as complex networks, and the evolutionary characteristics of product structures are analyzed by using network analysis metrics. At the module level, linking mechanisms, which describe how a module is attached with other modules, are proposed. The linking mechanisms are modeled as probability functions dependent on the degrees of linking modules. A case study from an open source software project, Drupal, is presented. The evolutionary trends of Drupal product structures are analyzed and discussed. Finally, a model is presented to illustrate the effects of linking mechanisms at the module level on the product structures at the system level. The results indicate that the model built using the proposed linking mechanisms generates networks whose evolutionary characteristics are close to that of the original network. 1. Introduction We present a network-based analysis of the structure of open-source software products and their evolution. The structure of open-source products evolves as new requirements are proposed, new modules and functions are created, and new interfaces are designed. The analysis of the product structure and its evolution is critical for gaining an understanding of fundamental similarities in the way open-source processes can be applied to a wide range of products (e.g., open-source hardware). The approach used in this paper involves: 1) modeling the product structure as a dynamic evolutionary network where product modules are represented as nodes and dependencies are represented as links; 2) development of a quantitative model of network evolution based on module-level mechanisms to model the evolution of product structure; and 3) illustration of the model using an example of an open- source software product. The module-level mechanisms describe how modules are added (or removed) and linked with each other. The word “module” is used in a generic manner and can refer to different levels of granularities of the product such as files, classes, and functions. In the example used in this paper, module refers to functions. The module-level behaviors provide information about the following questions: How many new modules are added at a certain time-step? How many existing modules are removed? For given existing modules, what are the probabilities of linking with new modules, other existing modules, or removing existing interfaces? For new modules added, what are the probabilities of linking with existing modules and other new modules? The premise is that the linking mechanisms at the module-level determine the evolution of product structures. Additionally, we assume that the linking mechanisms are dependent only on the degrees of modules. We acknowledge that this is a very simple model of complex open-source software development processes. However, degree is used because most of the other network characteristics are dependent on it. Our results show that the model built based on linking mechanisms derived from the Drupal project produces dynamic networks whose evolutionary characteristics are close to that of the original product structure. Hence, by understanding the linking mechanisms at module level, the evolutionary characteristics of product structures can be determined. The results indicate that such a bottom-up approach can be utilized for modeling evolutionary product structures in open-source processes. The paper is organized as follows. In the following section, existing literature is discussed. The proposed approach, involving the analysis of evolutionary characteristics of product structures at the system level as well as the module-level mechanisms are discussed in Section 3. In Section 4, the results from the execution of the approach for a specific open-source product are presented. In Section 5, a model is built to explain the effect of the mechanisms at the module level on the evolutionary characteristics of product structures. Finally, closing thoughts are present in Section 6.