Tool Choice Matters: JavaScript Quality Assurance Tools and Usage Outcomes in GitHub ProjectsTechnical Track
Quality assurance automation is essential in modern software development. In practice, this automation is supported by a multitude of tools that can fit every need and give developers control over every step in their pipeline, but also present choices, requiring decision making about which tool to choose for a task. And, making good decisions requires data and analytics of the pros and cons. While questions about best tools and practices in development automation appear in online forums, they are infrequent, mostly based on third-party experiences, and often non-applicable to the specific context. This is in large part due to a lack of empirical evidence on the effectiveness of existing practices and tool choices. We propose a general methodology to model the time-dependent effect of automation tool choice on four outcomes of interest: prevalence of issues, code churn, number of pull requests, and number of contributors, with a multitude of controls. On a large data set of npm JavaScript projects, we extract the adoption events for popular tools in three task classes: linters, dependency managers, and coverage reporters. Using case studies and quantitative modeling, we study the reasons for the adoptions and compare the adoption effects within each class, and sequential tool adoptions across classes. We find that some tools within each group are associated with more beneficial outcomes than others, providing an empirical perspective for the benefits of each. We also find that the order in which some tools are implemented is associated with varying outcomes.