Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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
  • Get Citation Alerts
  • 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)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

    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

          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)182
          • Downloads (Last 6 weeks)23
          Reflects downloads up to 10 Aug 2024

          Other Metrics

          Citations

          Cited By

          View all
          • (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

          Get Access

          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

          Media

          Figures

          Other

          Tables

          Share

          Share

          Share this Publication link

          Share on social media