Assessing JavaScript API Deprecation
Resumo
Building an application using third-party libraries is a common practice in software development. As any other software system, code libraries and their APIs evolve over time. In order to help version migration and ensure backward compatibility, a recommended practice during development is to deprecate API. Although studies have been conducted to investigate deprecation in some programming languages, such as Java and C#, there are no detailed studies on API deprecation in the JavaScript ecosystem. The goal of this master research work is to investigate deprecation of JavaScript APIs. In a first assessment, we analyzed popular software projects to identify API deprecation occurrences and classify them. We are now conducting a survey study with developers to understand their thoughts and experiences on JavaScript API deprecation. Lastly, we plan to develop a set of JavaScript API deprecation guidelines based on this master research result. Initial results suggest that the use of deprecation mechanisms in JavaScript packages is low. However, we were able to identify five different approaches that developers primarily use to deprecate APIs in the studied projects. Among these solutions, deprecation utility (i.e., any sort of function specially written to aid deprecation) and code comments are the most common practices in JavaScript. Finally, we found that the rate of helpful message is high: 67% of the deprecation occurrences have replacement messages to support developers when migrating APIs.
Palavras-chave:
API Deprecation, JavaScript, Software Library
Referências
Bogart, C., Kastner, C., Herbsleb, J., and Thung, F. (2016). How to break an api: cost negotiation and community values in three software ecosystems. In International Symposium on Foundations of Software Engineering (FSE), pages 109–120.
Brito, A., Valente, M. T., Xavier, L., and Hora, A. (2019). You broke my code: Understanding the motivations for breaking changes in apis. In Empirical Software Engineering, pages 1–35.
Brito, G., Hora, A., Valente, M. T., and Robbes, R. (2018). On the use of replacement messages in api deprecation: An empirical study. In Journal of Systems and Software, vol. 137, pages 306–231.
Granli, W., Burchell, J., Hammouda, I., and Knauss, E. (2017). The driving forces of api evolution. In International Workshop on Principles of Software Evolution (IWPSE).
Li, L., Gao, J., Bissyande, T. F., Ma, L., Xia, X., and Klein, J. (2018). Characterising deprecated android apis. In International Conference on Mining Software Repositories (MSR), pages 254–264.
Moser, S. and Nierstrasz, O. (1996). The effect of object-oriented frameworks on developer productivity. In Computer, vol. 29, no. 9.
Nascimento, R., Figueiredo, E., Hora, A., and Brito, A. (2020). Javascript api deprecation in the wild: A first assessment. In 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 567–571.
Robbes, R., Lungu, M., and Rothlisberger, D. (2012). How do developers react to api deprecation?: the case of a smalltalk ecosystem. In International Symposium on Foundations of Software Engineering (FSE).
Santos, A., Valente, M., and Figueiredo, E. (2015). Do javascript static analyzers detect bad coding practices? In Workshop on Software Visualization, Evolution, and Maintenance (VEM).
Sawant, A., Robbes, R., and Bacchelli, A. (2018). On the reaction to deprecation of clients of 4 + 1 popular java apis and the jdk. In Empirical Soft. Engineering, vol. 23, pages 2158–2197.
Sawant, A., Robbes, R., and Bacchelli, A. (2019). To react, or not to react: Patterns of reaction to api deprecation. In Empirical Soft. Engineering, vol. 24, pages 3824–3870.
Tourwe, T. and Mens, T. (2003). Automated support for framework-based software. In International Conference on Software Maintenance (ICSM), pages 148–157.
Xavier, L., Brito, A., Hora, A., and Valente, M. T. (2017). Historical and impact analysis of api breaking changes: A large scale study. In International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 138–147.
Brito, A., Valente, M. T., Xavier, L., and Hora, A. (2019). You broke my code: Understanding the motivations for breaking changes in apis. In Empirical Software Engineering, pages 1–35.
Brito, G., Hora, A., Valente, M. T., and Robbes, R. (2018). On the use of replacement messages in api deprecation: An empirical study. In Journal of Systems and Software, vol. 137, pages 306–231.
Granli, W., Burchell, J., Hammouda, I., and Knauss, E. (2017). The driving forces of api evolution. In International Workshop on Principles of Software Evolution (IWPSE).
Li, L., Gao, J., Bissyande, T. F., Ma, L., Xia, X., and Klein, J. (2018). Characterising deprecated android apis. In International Conference on Mining Software Repositories (MSR), pages 254–264.
Moser, S. and Nierstrasz, O. (1996). The effect of object-oriented frameworks on developer productivity. In Computer, vol. 29, no. 9.
Nascimento, R., Figueiredo, E., Hora, A., and Brito, A. (2020). Javascript api deprecation in the wild: A first assessment. In 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 567–571.
Robbes, R., Lungu, M., and Rothlisberger, D. (2012). How do developers react to api deprecation?: the case of a smalltalk ecosystem. In International Symposium on Foundations of Software Engineering (FSE).
Santos, A., Valente, M., and Figueiredo, E. (2015). Do javascript static analyzers detect bad coding practices? In Workshop on Software Visualization, Evolution, and Maintenance (VEM).
Sawant, A., Robbes, R., and Bacchelli, A. (2018). On the reaction to deprecation of clients of 4 + 1 popular java apis and the jdk. In Empirical Soft. Engineering, vol. 23, pages 2158–2197.
Sawant, A., Robbes, R., and Bacchelli, A. (2019). To react, or not to react: Patterns of reaction to api deprecation. In Empirical Soft. Engineering, vol. 24, pages 3824–3870.
Tourwe, T. and Mens, T. (2003). Automated support for framework-based software. In International Conference on Software Maintenance (ICSM), pages 148–157.
Xavier, L., Brito, A., Hora, A., and Valente, M. T. (2017). Historical and impact analysis of api breaking changes: A large scale study. In International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 138–147.
Publicado
19/10/2020
Como Citar
NASCIMENTO, Romulo; FIGUEIREDO, Eduardo; HORA, Andre.
Assessing JavaScript API Deprecation. In: WORKSHOP DE TESES E DISSERTAÇÕES (WTDSOFT) - CONGRESSO BRASILEIRO DE SOFTWARE: TEORIA E PRÁTICA (CBSOFT), 11. , 2020, Evento Online.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2020
.
p. 107-113.
DOI: https://doi.org/10.5753/cbsoft_estendido.2020.14616.