[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

There’s no Such Thing as a Free Lunch: Lessons Learned from Exploring the Overhead Introduced by the Greenkeeper Dependency Bot in Npm

Published: 13 February 2023 Publication History

Abstract

Dependency management bots are increasingly being used to support the software development process, for example, to automatically update a dependency when a new version is available. Yet, human intervention is often required to either accept or reject any action or recommendation the bot creates. In this article, our objective is to study the extent to which dependency management bots create additional, and sometimes unnecessary, work for their users. To accomplish this, we analyze 93,196 issue reports opened by Greenkeeper, a popular dependency management bot used in open source software projects in the npm ecosystem. We find that Greenkeeper is responsible for half of all issues reported in client projects, inducing a significant amount of overhead that must be addressed by clients, since many of these issues were created as a result of Greenkeeper taking incorrect action on a dependency update (i.e., false alarms). Reverting a broken dependency update to an older version, which is a potential solution that requires the least overhead and is automatically attempted by Greenkeeper, turns out to not be an effective mechanism. Finally, we observe that 56% of the commits referenced by Greenkeeper issue reports only change the client’s dependency specification file to resolve the issue. Based on our findings, we argue that dependency management bots should (i) be configurable to allow clients to reduce the amount of generated activity by the bots, (ii) take into consideration more sources of information than only the pass/fail status of the client’s build pipeline to help eliminate false alarms, and (iii) provide more effective incentives to encourage clients to resolve dependency issues.

References

[1]
Rabe Abdalkareem, Olivier Nourry, Sultan Wehaibi, Suhaib Mujahid, and Emad Shihab. 2017. Why do developers use trivial packages? An empirical case study on npm. In Proceedings of the 11th Joint Meeting on Foundations of Software Engineering. ACM, 385–395. DOI:DOI:
[2]
Rabe Abdalkareem, Vinicius Oda, Suhaib Mujahid, and Emad Shihab. 2020. On the impact of using trivial packages: An empirical case study on npm and PyPI. Empirical Software Engineering 25, 2 (March2020), 1168–1204. DOI:
[3]
Mahmoud Alfadel, Diego Elias Costa, Emad Shihab, and Mouafak Mkhallalati. 2021. On the use of dependabot security pull requests. In Proceedings of the IEEE/ACM 18th International Conference on Mining Software Repositories. IEEE, 254–265. DOI:DOI:
[4]
Richard A. Armstrong. 2014. When to use the bonferroni correction. Ophthalmic and Physiological Optics 34, 5 (Sept.2014), 502–508. DOI:DOI:
[5]
David F. Bauer. 1972. Constructing confidence sets using rank statistics. Journal of the American Statistical Association 67, 339 (Sept.1972), 687–690. DOI:DOI:
[6]
Christopher Bogart, Christian Kastner, and James Herbsleb. 2015. When it breaks, it breaks: How ecosystem developers reason about the stability of dependencies. In Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering Workshop. IEEE, 86–89. DOI:DOI:
[7]
Christopher Bogart, Christian Kästner, James Herbsleb, and Ferdian Thung. 2016. How to break an API: Cost negotiation and community values in three software ecosystems. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. ACM, 109–120. DOI:DOI:
[8]
Hudson Borges, Andre Hora, and Marco Tulio Valente. 2016. Understanding the factors that impact the popularity of github repositories. In Proceedings of the 2016 IEEE International Conference on Software Maintenance and Evolution (Oct.2016), 334–344. DOI:DOI:
[9]
Aline Brito, Laerte Xavier, Andre Hora, and Marco Tulio Valente. 2018. APIDiff: Detecting API breaking changes. In Proceedings of the IEEE 25th International Conference on Software Analysis, Evolution and Reengineering. IEEE, 507–511. DOI:DOI:
[10]
Aline Brito, Laerte Xavier, Andre Hora, and Marco Tulio Valente. 2018. Why and how Java developers break APIs. In Proceedings of the IEEE 25th International Conference on Software Analysis, Evolution and Reengineering. IEEE, 255–265. DOI:DOI:
[11]
Chris Brown and Chris Parnin. 2020. Sorry to bother you again: Developer recommendation choice architectures for designing effective bots. In Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops. ACM, 56–60. DOI:DOI:
[12]
Norman Cliff. 1996. Ordinal Methods for Behavioral Data Analysis.Lawrence Erlbaum Associates, Inc, Hillsdale, NJ. Pages: xiii, 197.
[13]
Filipe Roseiro Cogo, Gustavo Ansaldi Oliva, and Ahmed E. Hassan. 2019. An empirical study of dependency downgrades in the npm ecosystem. IEEE Transactions on Software Engineering 47, 11 (2019), 1–1. DOI:DOI:
[14]
Jacob Cohen. 1960. A coefficient of agreement for nominal scales. Educational and Psychological Measurement 20, 1 (April1960), 37–46. DOI:DOI:
[15]
Joel Cox, Eric Bouwers, Marko van Eekelen, and Joost Visser. 2015. Measuring dependency freshness in software systems. In Proceedings of the IEEE/ACM 37th IEEE International Conference on Software Engineering. IEEE, 109–118. DOI:DOI:
[16]
Alexandre Decan and Tom Mens. 2020. What do package dependencies tell us about semantic versioning? IEEE Transactions on Software Engineering 47, 6 (2020), 1–1. DOI:
[17]
Alexandre Decan, Tom Mens, and Maelick Claes. 2017. An empirical comparison of dependency issues in OSS packaging ecosystems. In Proceedings of the IEEE 24th International Conference on Software Analysis, Evolution and Reengineering. IEEE, 2–12. DOI:DOI:
[18]
Alexandre Decan, Tom Mens, and Eleni Constantinou. 2018. On the evolution of technical lag in the npm package dependency network. In Proceedings of the IEEE International Conference on Software Maintenance and Evolution. IEEE, 404–414. DOI:DOI:
[19]
Jens Dietrich, David Pearce, Jacob Stringer, Amjed Tahir, and Kelly Blincoe. 2019. Dependency versioning in the wild. In Proceedings of the IEEE/ACM 16th International Conference on Mining Software Repositories. IEEE, Canada, 349–359. DOI:DOI:
[20]
Marcia W. DiStaso and Denise Sevick Bortree. 2012. Multi-method analysis of transparency in social media practices: Survey, interviews and content analysis. Public Relations Review 38, 3 (Sept.2012), 511–514. DOI:DOI:
[21]
Margaret Drouhard, Nan-Chen Chen, Jina Suh, Rafal Kocielnik, Vanessa Pena-Araya, Keting Cen, Xiangyi Zheng, and Cecilia R. Aragon. 2017. Aeonium: Visual analytics to support collaborative qualitative coding. In Proceedings of the 2017 IEEE Pacific Visualization Symposium. IEEE, 220–229. DOI:DOI:
[22]
Linda Erlenhov, Francisco Gomes de Oliveira Neto, Riccardo Scandariato, and Philipp Leitner. 2019. Current and future bots in software development. In Proceedings of the IEEE/ACM 1st International Workshop on Bots in Software Engineering. IEEE, 7–11. DOI:DOI:
[23]
Amin Milani Fard and Ali Mesbah. 2017. JavaScript: The (un)covered parts. In Proceedings of the 2017 IEEE International Conference on Software Testing, Verification and Validation. IEEE, 230–240. DOI:DOI:
[24]
Joseph L. Fleiss and Jacob Cohen. 1973. The equivalence of weighted kappa and the intraclass correlation coefficient as measures of reliability. Educational and Psychological Measurement 33, 3 (Oct.1973), 613–619. DOI:DOI:
[25]
Darius Foo, Hendy Chua, Jason Yeo, Ming Yi Ang, and Asankhaya Sharma. 2018. Efficient static checking of library updates. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 791–796. DOI:DOI:
[26]
Keheliya Gallaba and Shane McIntosh. 2020. Use and misuse of continuous integration features: An empirical study of projects that (mis)use travis CI. IEEE Transactions on Software Engineering 46, 1 (Jan.2020), 33–50. DOI:
[27]
Jesus M. Gonzalez-Barahona, Paul Sherwood, Gregorio Robles, and Daniel Izquierdo. 2017. Technical lag in software compilations: Measuring how outdated a software deployment is. In Open Source Systems: Towards Robust Practices. Vol. 496. Springer International Publishing, 182–192. DOI:DOI:
[28]
Abbas Javan Jafari, Diego Elias Costa, Rabe Abdalkareem, Emad Shihab, and Nikolaos Tsantalis. 2021. Dependency smells in javascript projects. IEEE Transactions on Software Engineering (2021). DOI:https://doi.org/10.1109/TSE.2021.3106247.
[29]
Kamil Jezek, Jens Dietrich, and Premek Brada. 2015. How java apis break - an empirical study. Information and Software Technology 65, C (Sept.2015), 129–146. DOI:DOI:
[30]
Raula Gaikovina Kula, Daniel M. German, Ali Ouni, Takashi Ishio, and Katsuro Inoue. 2018. Do developers update their library dependencies? An empirical study on the impact of security advisories on library migration. Empirical Software Engineering 23, 1 (Feb.2018), 384–417. DOI:DOI:
[31]
J. Richard Landis and Gary G. Koch. 1977. The measurement of observer agreement for categorical data. Biometrics 33, 1 (March1977), 159. DOI:DOI:
[32]
Carlene Lebeuf, Alexey Zagalsky, Matthieu Foucault, and Margaret-Anne Storey. 2019. Defining and classifying software bots: A faceted taxonomy. In Proceedings of the IEEE/ACM 1st International Workshop on Bots in Software Engineering. IEEE, 1–6. DOI:DOI:
[33]
Li Li, Tegawendé F. Bissyandé, Haoyu Wang, and Jacques Klein. 2018. CiD: Automating the detection of API-related compatibility issues in android apps. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis. ACM, 153–163. DOI:DOI:
[34]
Bin Lin, Alexey E. Zagalsky, Margaret-Anne Storey, and Alexander Serebrenik. 2016. Why developers are slacking off: Understanding how software teams use slack. In Proceedings of the 19th ACM Conference on Computer Supported Cooperative Work and Social Computing Companion. ACM Press, 333–336. DOI:DOI:
[35]
Lionel Marks, Ying Zou, and Ahmed E. Hassan. 2011. Studying the fix-time for bugs in large open source projects. In Proceedings of the 7th International Conference on Predictive Models in Software Engineering. Association for Computing Machinery, New York, NY, 1–8. DOI:DOI:
[36]
Nora McDonald, Sarita Schoenebeck, and Andrea Forte. 2019. Reliability and inter-rater reliability in qualitative research: Norms and guidelines for CSCW and HCI practice. Proceedings of the ACM on Human-Computer Interaction 3, CSCW (Nov.2019), 1–23. DOI:DOI:
[37]
Gianluca Mezzetti, Anders Møller, and Martin Toldam Torp. 2018. Type regression testing to detect breaking changes in node.js libraries. In Proceedings of the 32nd European Conference on Object-Oriented Programming. 24 pages. DOI:DOI:
[38]
Samim Mirhosseini and Chris Parnin. 2017. Can automated pull requests encourage software developers to upgrade out-of-date dependencies? In Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering. IEEE, 84–94. DOI:DOI:
[39]
Suhaib Mujahid, Rabe Abdalkareem, Emad Shihab, and Shane McIntosh. 2020. Using others’ tests to identify breaking updates. In Proceedings of the 17th International Conference on Mining Software Repositories. ACM, 466–476. DOI:DOI:
[40]
J. C. Munson and S. G. Elbaum. 1998. Code churn: A measure for estimating the impact of code change. In Proceedings of the International Conference on Software Maintenance. IEEE Comput. Soc, 24–31. DOI:DOI:
[41]
Anders Møller, Benjamin Barslev Nielsen, and Martin Toldam Torp. 2020. Detecting locations in JavaScript programs affected by breaking library changes. Proceedings of the ACM on Programming Languages 4, OOPSLA (Nov.2020), 1–25. DOI:DOI:
[42]
Anders Møller and Martin Toldam Torp. 2019. Model-based testing of breaking changes in Node.js libraries. In Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM Press, 409–419. DOI:DOI:
[43]
N. Nagappan and T. Ball. 2005. Use of relative code churn measures to predict system defect density. In Proceedings of the 2008 Frontiers of Software Maintenance, 27th International Conference on Software Engineering, 2005.ACM, 284–292. DOI:DOI:
[44]
Benjamin Barslev Nielsen, Martin Toldam Torp, and Anders Møller. 2021. Semantic patches for adaptation of javascript programs to evolving libraries. In Proceedings of the 43rd International Conference on Software Engineering (2021), 12.
[45]
Steven Raemaekers, Arie van Deursen, and Joost Visser. 2014. Semantic versioning versus breaking changes: A study of the maven repository. In Proceedings of the IEEE 14th International Working Conference on Source Code Analysis and Manipulation. IEEE, 215–224. DOI:DOI:
[46]
S. Raemaekers, A. van Deursen, and J. Visser. 2017. Semantic versioning and impact of breaking changes in the maven repository. Journal of Systems and Software 129, C (July2017), 140–158. DOI:DOI:
[47]
Jeanine Romano and Jeffrey Kromrey. 2006. Appropriate statistics for ordinal level data: Should we really be using t-test and cohen’s d for evaluating group differences on the NSSE and other surveys? In Proceedings of the Annual Meeting of the Florida Association of Institutional Research (2006).
[48]
Benjamin Rombaut, Filipe R. Cogo, Bram Adams, and Ahmed E. Hassan. 2022. Greenkeeper Overhead - Online Appendix. (Feb.2022). Retrieved from https://github.com/SAILResearch/suppmaterial-22-ben-greenkeeper-overhead.
[49]
Julius Sim and Chris C. Wright. 2005. The kappa statistic in reliability studies: Use, interpretation, and sample size requirements. Physical Therapy 85, 3 (March2005), 257–268. DOI:DOI:
[50]
Margaret-Anne Storey and Alexey Zagalsky. 2016. Disrupting developer productivity one bot at a time. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. ACM Press, 928–931. DOI:DOI:
[51]
Mairieli Wessel. 2020. Enhancing developers’ support on pull requests activities with software bots. In Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 1674–1677. DOI:DOI:
[52]
Mairieli Wessel, Bruno Mendes de Souza, Igor Steinmacher, Igor S. Wiese, Ivanilton Polato, Ana Paula Chaves, and Marco A. Gerosa. 2018. The power of bots: Characterizing and understanding bots in OSS projects. Proceedings of the ACM on Human-Computuer Interaction 2, 182 (Nov.2018), 19. DOI:DOI:
[53]
Mairieli Wessel and Igor Steinmacher. 2020. The inconvenient side of software bots on pull requests. In Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops. ACM, 51–55. DOI:
[54]
Erik Wittern, Philippe Suter, and Shriram Rajagopalan. 2016. A look at the dynamics of the JavaScript package ecosystem. In Proceedings of the 13th International Conference on Mining Software Repositories. ACM, 351–361. DOI:DOI:
[55]
Marvin Wyrich, Raoul Ghit, Tobias Haller, and Christian Müller. 2021. Bots don’t mind waiting, do they? Comparing the interaction with automatically and manually created pull requests. Proceedings of the 3rd International Workshop on Bots in Software Engineering (BotSE’21), 6–10. arXiv: 2103.03591. https://doi.org/10.1109/BotSE52550.2021.00009.
[56]
Ahmed Zerouali, Eleni Constantinou, Tom Mens, Gregorio Robles, and Jesús González-Barahona. 2018. An empirical analysis of technical lag in npm package dependencies. In Proceedings of the New Opportunities for Software Reuse. Vol. 10826. Springer International Publishing, 95–110. DOI:DOI:

Cited By

View all
  • (2024)Balancing the Quality and Cost of Updating DependenciesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695595(1834-1845)Online publication date: 27-Oct-2024
  • (2024)The Hidden Costs of Automation: An Empirical Study on GitHub Actions Workflow Maintenance2024 IEEE International Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM63643.2024.00029(213-223)Online publication date: 7-Oct-2024
  • (2024)A Taxonomy and Survey of Software Bill of Materials (SBOM) Generation ApproachesAGC 202310.1007/978-3-031-50815-8_3(40-51)Online publication date: 4-Jan-2024
  • Show More Cited By

Index Terms

  1. There’s no Such Thing as a Free Lunch: Lessons Learned from Exploring the Overhead Introduced by the Greenkeeper Dependency Bot in Npm

        Recommendations

        Comments

        Please enable JavaScript to view thecomments powered by Disqus.

        Information & Contributors

        Information

        Published In

        cover image ACM Transactions on Software Engineering and Methodology
        ACM Transactions on Software Engineering and Methodology  Volume 32, Issue 1
        January 2023
        954 pages
        ISSN:1049-331X
        EISSN:1557-7392
        DOI:10.1145/3572890
        • Editor:
        • Mauro Pezzè
        Issue’s Table of Contents

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        Published: 13 February 2023
        Online AM: 30 April 2022
        Accepted: 24 February 2022
        Revised: 10 January 2022
        Received: 01 September 2021
        Published in TOSEM Volume 32, Issue 1

        Permissions

        Request permissions for this article.

        Check for updates

        Author Tags

        1. Dependency management
        2. software bots
        3. mining software repositories
        4. greenkeeper
        5. overhead

        Qualifiers

        • Research-article
        • Refereed

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)184
        • Downloads (Last 6 weeks)21
        Reflects downloads up to 02 Mar 2025

        Other Metrics

        Citations

        Cited By

        View all
        • (2024)Balancing the Quality and Cost of Updating DependenciesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695595(1834-1845)Online publication date: 27-Oct-2024
        • (2024)The Hidden Costs of Automation: An Empirical Study on GitHub Actions Workflow Maintenance2024 IEEE International Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM63643.2024.00029(213-223)Online publication date: 7-Oct-2024
        • (2024)A Taxonomy and Survey of Software Bill of Materials (SBOM) Generation ApproachesAGC 202310.1007/978-3-031-50815-8_3(40-51)Online publication date: 4-Jan-2024
        • (2023)Automating Dependency Updates in Practice: An Exploratory Study on GitHub DependabotIEEE Transactions on Software Engineering10.1109/TSE.2023.327812949:8(4004-4022)Online publication date: 1-Aug-2023
        • (2023)Understanding the role of external pull requests in the NPM ecosystemEmpirical Software Engineering10.1007/s10664-023-10315-w28:4Online publication date: 20-May-2023

        View Options

        Login options

        Full Access

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        Full Text

        View this article in Full Text.

        Full Text

        HTML Format

        View this article in HTML Format.

        HTML Format

        Figures

        Tables

        Media

        Share

        Share

        Share this Publication link

        Share on social media