NAIST-IS-MT1451090 2016 3 13
( )
(OSS) (Log4j, Slf4j, Commons logging, Logback), NAIST-IS-MT1451090, 2016 3 13. i
Analysis of Version Selecting on Open Source Software Library Keisuke Fujino Abstract The principle aim of this paper was to provide a reliable guideline for software developers who want to use the open source software library. They should not always use the latest versions. For example, quality is important in the large scale systems. In the previous study, most popular version is recommended based on the wisdom of the crowds. However, there is the example that many users downgrade after reporting bugs in the library which they are using. Therefore, the wisdom of crowds is not always reliable when they select library. In this paper, to provide a reliable guideline, I investigate the version selection through the case study of 4 Java logging libraries (Log4j, Slf4j, Commons logging, and Logback) from the initial release to plateau. From the results, users select different version in the soon after initial release, but many users will come to use same version after a certain time. Therefore, after version selection of users converged, the wisdom of crowds is available to select version. In addition, I clear the extreme trend version increases as soon as the bug fixing curve begins to converge. Keywords: Open Source Software, Software Library, Bug Fixing Curve, Software Reliability Growth Model, The Wisdom of Crowds Master s Thesis, Graduate School of Information Science, Nara Institute of Science and Technology, NAIST-IS-MT1451090, March 13, 2016. ii
1. Keisuke Fujino, Akinori Ihara, Kiyoshi Honda, Hironori Washizaki, and Ken-ichi Matsumoto, Toward Monitoring Bugs-Fixing Process After the Releases in Open Source Software, In Proceedings of the 6th International Workshop on Empirical Software Engineering in Practice (IWESEP 2014), November 2014. 1.. OSS. 21 (FOSE2014) pp. 57-62 2014 iii
1. 1 1.1.............................. 1 1.2 Research Questions.......................... 2 1.3............................. 3 2. 4 2.1.................... 4 2.2............. 4 3. 6 3.1........................ 6 3.2........................ 7 3.3................................ 8 3.4................................ 8 3.5................................ 10 3.6.................................. 12 4. 17 4.1.................................. 17 4.2............................. 17 4.3........................ 19 4.4................................ 20 4.5................................ 20 4.6.................................. 23 5. 29 5.1....................... 29 5.2.............................. 30 5.3................................ 30 iv
5.4.................................. 31 6. 33 7. 35 36 38 v
1 POM.xml...................... 7 2......................... 9 3 slf4j :........... 13 4 log4j........... 14 5 logback.......... 15 6 commons logging.... 16 7....................... 18 8 slf4j............ 25 9 log4j............. 26 10 logback........... 27 11 commons logging...... 28 1...................... 8 2 1..................... 20 3 B 31 vi
1. 1.1 OSS 1 Google Chrome Mozilla Firefox OSS [1] OSS OSS [2] OSS [3] The Wisdom of Crowds [4] 1
4 Java Logging Framework slf4j, log4j, commons logging, logback 10 1 1.2 Research Questions 1 2
Research Question RQ1: OSS RQ2: 1.3 2 3 4 5 6 7 3
2. 2.1 OSS Java Java Community Process 1 Web GWT 2 Spring 3 Hibernate 4 HTML SSH [2] 1 OSS 2.2 OSS 1 https://www.jcp.org/en/home/index 2 http://www.gwtproject.org/ 3 https://projects.spring.io/spring-framework/ 4 http://hibernate.org/ 4
[3] ( ) [5] Web / Web 5
3. Github OSS OSS 2015 3 1 3.1 Java MAVEN 5 MAVEN Project Object Model POM MAVEN POM 1 depedency dependency groupid : artfactid : version : 5 http://mvnrepository.com 6
1 POM.xml groupid artfactid MAVEN Repository 6 3.2 MAVEN Mileva [6] AKTARI AKTARI Mileva Mileva Mileva 2005 2015 2015 3 1 6 http://mvnrepository.com/open-source/logging-frameworks 7
1 Log4j 1999 10 15 2012 5 6 62 Commons Logging 2002 8 13 2014 7 9 10 Logback 2006 2 9 2014 4 2 60 Slf4j 2005 5 1 2015 1 6 68 3.3 MAVEN Popular Category Logging Framework 4 SLF4J API Module Apache Log4j Logback Classic module ApacheCommons Logging Apache Software Foundation Apache OSS 1999 Apache Log4j 2002 Apache Commons Logging Log4j SLF4J API Module Logback Classic module Log4j 2 1 3.4 Apache Software Foundation Github OSS 598 7 MAVEN 330 7 2015 3 1 8
2 OSS POM Github 2 POM 2 log4j POM 2001 3 1 POM log4j log4j Ver1.0 Ver1.0 1 2005 8 1 POM POM 2001 3 1 Ver1.0 2005 8 1 Ver1.0 2001 3 1 2005 8 1 Ver1.0 2015 3 1 POM 2001 3 1 2005 8 1 Ver1.0 Ver1.1 2014 2 28 Ver1.0 2015 3 1 Ver1.0 Ver1.1 POM POM 9
2015 3 1 23:59 Github OSS 4 Logging Framework 3.5 3 4 5 6 SLF4J API Module Apache Log4j Logback Classic Module Apache Commons Logging A 2 B 1 Logback 3 1 SLF4J API Module 3 A Ver.1.4.3 Ver1.5.8 10
Log4j Compiler Assisted Localization (CAL10N) 8 Open Service Gateway initiative (OSGi) 9 Ver.1.6.1 B 2 Ver.1.6.4 Ver.1.6.7 Ver.1.7.2 Ver.1.7.10 50% Apache Log4j 4 A Ver1.2.8 Ver1.2.12 Ver1.2.13 Ver.1.2.14 Appender Ver1.2.14 B 2 Ver1.2.16 1 50% Ver1.2.14 Ver.1.2.16 Ver.1.2.17 Logback Classic Module logback 3 5 A Ver1.0.9 2 Ver1.0.9 Ver1.1.2 Apache Commons Logging 6 A Ver1.0.4 Ver1.1 8 ResourceBundle Java 9 Java 11
Ver1.1.1 3 B Ver.1.1.1 2 2 50% Ver.1.1.1 Ver1.1.3 Ver1.2 Ver1.1.1 Ver1.1.1 3.6 4 OSS [7] (IPA) OSS 5 OSS [8] Web OSS Web 12
3 slf4j : 13
4 log4j 14
5 logback 15
6 commons logging 16
4. Research Question 4.1 OSS [7] Mileva AKTARI [6] IPA [8] 4 OSS RQ1: OSS 4.2 1 100 [9] OSS 17
7 Bugzilla 10 RedMine 11 Jira 12 BTS: Bug Tracking System BTS 1 1 4 18
4.3 [10] 7 2 13 BTS Jira Jira Status RESOLVED CLOSED Resolution FIXED 10 https://www.bugzilla.org/ 11 https://www.redmine.org/ 12 https://jira.atlassian.com/secure/dashboard.jspa 13 2015 3 1 19
2 1 Commons Year Slf4j Log4j Logback Logging 2001-44 - - 2002-50 - - 2003-9 - - 2004-47 - - 2005 4 64 - - 2006 5 49-10 2007 24 92 104 3 2008 34 36 16 10 2009 16 34 55 47 2010 15 30 15 0 2011 5 3 34 0 2012 10 19 42 5 2013 4 4 15 7 2014 1 0 7 3 Total 118 481 288 85 4.4 4.5 2 1 8 9 10 11 3 20
A ( B ) 80% 2 3 40% 50% 40% 50% 80% Slf4J API Module 8 A 21
2 Ver1.6.1 B 80% 1 Ver1.6.4 2012 5 90% Ver1.6.1 Ver1.6.4 Ver1.7.2 Ver1.7.5 Apache Log4 9 A 60% Ver1.2.14 B 2010 4 90% Ver1.2.14 Ver1.2.16 Ver1.2.17 Logback Classic Module 10 A B Ver1.0.9 6 B 80% logback 3 Ver1.0.9 Ver1.1.2 22
Apache Commons Logging 2010 1 50% Commons Logging Status 11 A Ver1.0.4 ver1.1 Ver1.1.1 20% B 80% Ver1.1.1 Ver1.1.1 B 4 14 4.6 3 slf4j log4j commons logging OSS OSS (1) (2) slf4j log4j commons logging 3 (1) 3 23
[5] 24
8 slf4j 25
9 log4j 26
10 logback 27
11 commons logging 28
5. 4 5.1 (SRGM:Software Reliability Growth Model) [11] NHPP:Non-Homogeneous Pois-son Process [12][13] [14] 29
[10] RQ2 RQ2: 5.2 slf4j log4j 3 2 B B 12 9 6 3 ) B slf4j log4j 5.3 3 8 9 B B 12 9 6 3 B 3 B 2 5 B 100% 30
3 B 12 9 6 3 slf4j 90 (106%) 96 (98%) 101 (103%) 102 (104%) 98 (100% log4j 799 (274%) 815 (265%) 932 (269%) 1053 (297%) 358 (100% B B log4j slf4j 23651 475 80% (B ) 12 9 6 3 B slf4j 96 102% log4j 265 297% B 12 B slf4j 90% log4j 274% 9 6 3 B slf4j 96% 102% 100% log4j 265 297% B 3 slf4j log4j 3 6 B 5.4 slf4j log4j slf4j 12 31
9 6 3 100% 8 B 2011 3 B 12 2010 3 2 2010 2011 15 5 B 98 log4j 3 2008 2009 36 34 slf4j slf4j B 358 8 slf4j S 9 2 log4j 32
6. 3 2 High Impact Bug [15][16] High Impact Bug High Impact Bug OSS 33
5 log4j 5.3 B 34
7. 35
1 5 2015 3 1 36
Department of Computer Science and Software Engineering at Concordia University Emad Shihab 4 37
[1] Mika V Mäntylä, Bram Adams, Foutse Khomh, Emelie Engström, and Kai Petersen. On rapid releases and software testing: a case study and a semisystematic literature review. Empirical Software Engineering, Vol. 20, No. 5, pp. 1384 1425, 2015. [2] Frank McCarey, Mel Ó Cinnéide, and Nicholas Kushmerick. Knowledge reuse for software reuse. Web Intelligence and Agent Systems: An International Journal, Vol. 6, No. 1, pp. 59 81, 2008. [3] Michele Tufano, Fabio Palomba, Gabriele Bavota, Rocco Oliveto, Massimiliano Di Penta, Andrea De Lucia, and Denys Poshyvanyk. When and why your code starts to smell bad. In Proceedings of the 37th International Conference on Software Engineering-Volume 1, pp. 403 414, 2015. [4] James Surowiecki. The wisdom of crowds. Anchor Books, 2005. [5] Henrik Plate, Serena Elisa Ponta, and Antonino Sabetta. Impact assessment for vulnerabilities in open-source software libraries. In Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on, pp. 411 420, 2015. [6] Yana Momchilova Mileva, Valentin Dallmeier, Martin Burger, and Andreas Zeller. Mining trends of library usage. In Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops, pp. 57 62, 2009. [7] Eric Raymond. The cathedral and the bazaar. Vol. 12, pp. 23 49, 1999. [8]. 3 (2009 ), 2010. 38
[9] Philip J Guo, Thomas Zimmermann, Nachiappan Nagappan, and Brendan Murphy. Characterizing and predicting which bugs get fixed: an empirical study of microsoft windows. In Software Engineering, 2010 ACM/IEEE 32nd International Conference on, Vol. 1, pp. 495 504, 2010. [10],,,,.. 21 (FOSE2014), pp. 57 62, 2014. [11]. :., 2011. [12] Richard Lai and Mohit Garg. A detailed study of nhpp software reliability models. Journal of Software, Vol. 7, No. 6, pp. 1296 1306, 2012. [13] Amrit L Goel. Software reliability models: Assumptions, limitations, and applicability. Software Engineering, IEEE Transactions on, No. 12, pp. 1411 1423, 1985. [14] Rakesh Rana, Miroslaw Staron, Claire Berger, Jorgen Hansson, Martin Nilsson, and Fredrik Torner. Evaluating long-term predictive power of standard reliability growth models on automotive systems. In Software Reliability Engineering (ISSRE), 2013 IEEE 24th International Symposium on, pp. 228 237, 2013. [15] Yutaro Kashiwa, Hayato Yoshiyuki, Yusuke Kukita, and Masao Ohira. A pilot study of diversity in high impact bugs. In 2014 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 536 540, 2014. [16] Emad Shihab, Audris Mockus, Yasutaka Kamei, Bram Adams, and Ahmed E Hassan. High-impact defects: a study of breakage and surprise defects. In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, pp. 300 310, 2011. 39