"If we make this change to our code, how will it impact our clients?" It is difficult for library maintainers to answer this simple -- yet essential! -- question when evolving their libraries. Library maintainers are constantly balancing between two opposing positions: make changes at the risk of breaking some of their clients, or avoid changes and maintain compatibility at the cost of immobility and growing technical debt. We argue that the lack of objective usage data and tool support leaves maintainers with their own subjective perception of their community to make these decisions. We introduce BreakBot, a bot that analyses the pull requests of Java libraries on GitHub to identify the breaking changes they introduce and their impact on client projects. Through static analysis of libraries and clients, it extracts and summarizes objective data that enrich the code review process by providing maintainers with the appropriate information to decide whether -- and how -- changes should be accepted, directly in the pull requests.
翻译:图书馆维护者在演变图书馆时很难回答这个简单而必要的问题。 图书馆维护者经常在两个对立立场之间保持平衡: 以打破客户中某些客户的风险来做出改变, 或者避免变化, 并保持兼容性, 代价是无法移动和技术债务不断增加。 我们争辩说, 缺乏客观使用的数据和工具支持, 使得维护者对自己社区有主观看法, 才能做出这些决定。 我们引入了 BreakBot, 一个分析贾瓦图书馆在GitHub 上的拉动请求的机器人, 以辨明他们带来的断裂式变化及其对客户项目的影响。 通过对图书馆和客户的静态分析, 提取并总结客观数据, 通过向维护者提供适当的信息, 来丰富代码审查过程, 从而决定是否在拉动请求中直接接受 -- 以及如何接受变化 。