Pull requests are a key part of the collaborative software development and code review process today. However, pull requests can also slow down the software development process when the reviewer(s) or the author do not actively engage with the pull request. In this work, we design an end-to-end service, Nudge, for accelerating overdue pull requests towards completion by reminding the author or the reviewer(s) to engage with their overdue pull requests. First, we use models based on effort estimation and machine learning to predict the completion time for a given pull request. Second, we use activity detection to filter out pull requests that may be overdue, but for which sufficient action is taking place nonetheless. Lastly, we use actor identification to understand who the blocker of the pull request is and nudge the appropriate actor (author or reviewer(s)). The key novelty of Nudge is that it succeeds in reducing pull request resolution time, while ensuring that developers perceive the notifications sent as useful, at the scale of thousands of repositories. In a randomized trial on 147 repositories in use at Microsoft, Nudge was able to reduce pull request resolution time by 60% for 8,500 pull requests, when compared to overdue pull requests for which Nudge did not send a notification. Furthermore, developers receiving Nudge notifications resolved 73% of these notifications as positive. We observed similar results when scaling up the deployment of Nudge to 8,000 repositories at Microsoft, for which Nudge sent 210,000 notifications during a full year. This demonstrates Nudge's ability to scale to thousands of repositories. Lastly, our qualitative analysis of a selection of Nudge notifications indicates areas for future research, such as taking dependencies among pull requests and developer availability into account.
翻译:调试请求是当今合作软件开发和代码审查过程的一个关键部分。 但是,调试请求也可以在审查者或作者不积极处理调试请求时减缓软件开发进程。 在这项工作中,我们设计了一个端到端服务,即Nudge,通过提醒作者或审查者处理其逾期的调试请求,加快逾期的调试请求的完成速度。首先,我们使用基于努力估算和机器学习的模型来预测特定调试请求的完成时间。第二,我们利用活动探测来过滤可能逾期但正在采取足够行动的调试请求。最后,我们利用演员识别来了解谁是拉动请求的阻截者,并调试调适当的行为者(作者或审查者)。 调试的关键新颖之处是,它成功地减少了调试算时间,同时确保开发者认为发出的通知在数千个储存库中是有用的。 在对微软公司147个储存库进行的随机测试中,Njudge能够将调试请求减少60 %,在N5 500调调试运行能力请求时,在进行这种延迟的调试测测测测测测测算中,在2个调期的调期中,这是我们提出的调试的调调调调试算。