Modularity of Code X Collective Ownership: An Empirical Study on Popular Open Source Projects
Abstract
Collective code ownership is a standard software development practice in open source systems. Throughout the construction of the code, a contribution network is created, an association between developers and the system modules. This article lists in a simple matrix the modules of a software system, retrieved from its source code, with the main developers of each one. These matrices provide a simple and quick way to reason about responsibilities and modules. A tool to recover such an array is presented. Also, twelve examples and applications of the matrices in GitHub?s Open-Source Projects are discussed, demonstrating their applicability.
References
Avelino, G., Passos, L., Hora, A., and Valente, M. T. (2016). A novel approach for estimating truck factors. In 24th International Conference on Program Comprehension (ICPC), pages 1–10.
Baldwin, C. Y. and Clark, K. B. (1999). Design Rules: The Power of Modularity Volume 1. MIT Press, Cambridge, MA, USA.
Coelho, J., Valente, M. T., Silva, L. L., and Hora, A. (2018). Why we engage in FLOSS: Answers from core developers. In 11th International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE), pages 1–8.
Conway, M. E. and Spandorfer, L. M. (1968). A computer system designer’s view of large scale integration. In Proceedings of the December 9-11, 1968, Fall Joint Computer Conference, Part I, AFIPS ’68 (Fall, part I), pages 835–845, New York, NY, USA. ACM.
Fritz, T., Ou, J., Murphy, G. C., and Murphy-Hill, E. (2010). A degree-of-knowledge model to capture source code familiarity. In Proceedings of the 32nd ACM/IEEE In- ternational Conference on Software Engineering - Volume 1, ICSE ’10, page 385–394, New York, NY, USA. Association for Computing Machinery.
Greiler, M., Herzig, K., and Czerwonka, J. (2015). Code ownership and software qua- lity: A replication study. In Proceedings of the 12th Working Conference on Mining Software Repositories, MSR ’15, page 2–12. IEEE Press.
Mockus, A., Fielding, R. T., and Herbsleb, J. D. (2002). Two case studies of open source software development: Apache and mozilla. ACM Trans. Softw. Eng. Metho- dol., 11(3):309–346.
Nakakoji, K., Yamamoto, Y., Nishinaka, Y., Kishida, K., and Ye, Y. (2002). Evolution patterns of open-source software systems and communities. In Proceedings of the International Workshop on Principles of Software Evolution, IWPSE ’02, pages 76– 85, New York, NY, USA. ACM.
Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. Commun. ACM, 15(12):1053–1058.
Sangal, N., Jordan, E., Sinha, V., and Jackson, D. (2005). Using dependency models to manage complex software architecture. SIGPLAN Not., 40(10):167–176.
Wohlin, C., Runeson, P., Hst, M., Ohlsson, M. C., Regnell, B., and Wessln, A. (2012). Experimentation in Software Engineering. Springer Publishing Company, Incorpora- ted.
Yamashita, K., McIntosh, S., Kamei, Y., Hassan, A. E., and Ubayashi, N. (2015). Revisi- ting the applicability of the pareto principle to core development teams in open source software projects. In Proceedings of the 14th International Workshop on Principles of Software Evolution, IWPSE 2015, pages 46–55, New York, NY, USA. ACM.
