How do developers react to API evolution? A large-scale empirical study

Software engineering research now considers that no system is an island, but it is part of an ecosystem involving other systems, developers, and users. When a framework or a library evolves, its clients often must adapt. For example, client developers might need to adapt to functionalities, client systems might need to be adapted to a new API, and client users might need to adapt to a new user interface. The consequences of these changes are yet unclear: what proportion of the ecosystem might be expected to react, how long might it take for a change to diffuse in the ecosystem, do all clients react in the same way? This paper reports an exploratory study aimed at observing API evolution and its impact on a large software ecosystem, Pharo, which has about 3600 distinct systems, and 6 years of evolution. We analyze 118 API changes in the context of method replacement and suggestion, and answer research questions regarding the magnitude, duration, extension, and consistency of such changes in the ecosystem. The results of this study help to characterize the impact of API evolution in large software ecosystems and provide the basis to better understand how such impact can be alleviated.

[1]  Qing Wang,et al.  Mining API mapping for language migration , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[2]  Slinger Jansen,et al.  Software Ecosystems: Analyzing and Managing Business Networks in the Software Industry , 2013 .

[3]  Robert J. Walker,et al.  Seeking the ground truth: a retroactive study on the evolution and migration of software libraries , 2012, SIGSOFT FSE.

[4]  Romain Robbes,et al.  On how often code is cloned across repositories , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[5]  Anita Sarma,et al.  The onion patch: migration in open source ecosystems , 2011, ESEC/FSE '11.

[6]  Martin P. Robillard,et al.  Managing Concern Interfaces , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[7]  Marco Tulio Valente,et al.  Do Developers Deprecate APIs with Replacement Messages? A Large-Scale Analysis on Java Systems , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[8]  Mircea Lungu,et al.  Reverse engineering software ecosystems , 2009 .

[9]  Nicolas Anquetil,et al.  Domain specific warnings: Are they any better? , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[10]  Marco Tulio Valente,et al.  Automatic detection of system-specific conventions unknown to developers , 2015, J. Syst. Softw..

[11]  Gabriele Bavota,et al.  The Impact of API Change- and Fault-Proneness on the User Ratings of Android Apps , 2015, IEEE Transactions on Software Engineering.

[12]  Miryung Kim,et al.  A graph-based approach to API usage adaptation , 2010, OOPSLA.

[13]  Yogesh Padmanaban,et al.  Inferring likely mappings between APIs , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[14]  David G. Messerschmitt,et al.  Software Ecosystem: Understanding an Indispensable Technology and Industry , 2003 .

[15]  Romain Robbes,et al.  The Small Project Observatory: Visualizing software ecosystems , 2010, Sci. Comput. Program..

[16]  Daniel M. Germán,et al.  The Evolution of the R Software Ecosystem , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[17]  Alexander Serebrenik,et al.  Eclipse API usage: the good and the bad , 2013, Software Quality Journal.

[18]  Tom Mens,et al.  Studying Evolving Software Ecosystems based on Ecological Models , 2014, Evolving Software Systems.

[19]  Romain Robbes,et al.  Recovering inter-project dependencies in software ecosystems , 2010, ASE.

[20]  Mira Mezini,et al.  Mining framework usage changes from instantiation code , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[21]  Wei Wu,et al.  An exploratory study of api changes and usages based on apache and eclipse ecosystems , 2015, Empirical Software Engineering.

[22]  Marco Tulio Valente,et al.  How do developers react to API evolution? The Pharo ecosystem case , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[23]  Miryung Kim,et al.  Discovering and representing systematic code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[24]  Miryung Kim,et al.  Automatic Inference of Structural Changes for Matching across Program Versions , 2007, 29th International Conference on Software Engineering (ICSE'07).

[25]  Martin P. Robillard,et al.  Recommending adaptive changes for framework evolution , 2011, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[26]  Lu Zhang,et al.  A history-based matching approach to identification of framework evolution , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[27]  Marco Tulio Valente,et al.  When should internal interfaces be promoted to public? , 2016, SIGSOFT FSE.

[28]  Miryung Kim,et al.  An Empirical Study of API Stability and Adoption in the Android Ecosystem , 2013, 2013 IEEE International Conference on Software Maintenance.

[29]  Wei Wu,et al.  AURA: a hybrid approach to identify framework evolution , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[30]  Gabriele Bavota,et al.  The Evolution of Project Inter-dependencies in a Software Ecosystem: The Case of Apache , 2013, 2013 IEEE International Conference on Software Maintenance.

[31]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[32]  Gabriele Bavota,et al.  How do API changes trigger stack overflow discussions? a study on the Android SDK , 2014, ICPC 2014.

[33]  Daniel M. Germán,et al.  Macro-level software evolution: a case study of a large software compilation , 2009, Empirical Software Engineering.

[34]  David Notkin,et al.  Semi-automatic update of applications in response to library changes , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[35]  Romain Robbes,et al.  How do developers react to API deprecation?: the case of a smalltalk ecosystem , 2012, SIGSOFT FSE.

[36]  Oscar Nierstrasz,et al.  A Quantitative Analysis of Developer Information Needs in Software Ecosystems , 2014, ECSAW '14.

[37]  Marco Tulio Valente,et al.  APIEvolutionMiner: Keeping API evolution under control , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[38]  Ralph E. Johnson,et al.  The role of refactorings in API evolution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[39]  Marco Tulio Valente,et al.  Apiwave: Keeping track of API popularity and migration , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).