A Market-Based Bug Allocation Mechanism Using Predictive Bug Lifetimes Hadi Hosseini School of Computer Science University of Waterloo Waterloo, ON, Canada Email: h5hossei@uwaterloo.ca Raymond Nguyen School of Computer Science University of Waterloo Waterloo, ON, Canada Email: r9nguyen@uwaterloo.ca Michael W. Godfrey School of Computer Science University of Waterloo Waterloo, ON, Canada Email: migod@uwaterloo.ca Abstract—Bug assignment in large software projects is typ- ically a time-consuming and tedious task; effective assignment requires that bug triagers hold significant contextual information about both the reported bugs and the pool of available developers. In this paper, we propose an auction-based multiagent mechanism for assigning bugs to developers that is intended to minimize backlogs and overall bug lifetime. In this approach, developers and triagers are both modeled as intelligent software agents working on behalf of individuals in a multiagent environment. Upon receiving a bug report, triager agents auction off the bug and collect the requests. Developer agents compute their bids as a function of the developer’s profile, preferences, current schedule of assigned bugs, and estimated time-to-fix of the bug. This value is then sent to the triager agent for the final decision. We use the Eclipse and Firefox bug repositories to validate our approach; our studies suggest that the proposed auction-based multiagent mechanism can improve the bug assignment process compared to currently practised methods. In particular, we found a 16% improvement in the number of fixed bugs compared to the historic data, based on a sample size of 213,000 bug reports over a period of 6 years. Index Terms—Multiagent system, market mechanism, bug lifetime, bug repositories I. I NTRODUCTION AND MOTIVATION Estimating the time and effort it takes to release a product is a key task for almost every software project. Post-release modification is inevitable, as all software systems have bugs, and eventually need new features and other improvements also. Maintenance is expensive; the planning and allocation of resources can be difficult if we are unable to estimate how long it takes to fix these bugs [1]. With good estimates, project managers can effectively schedule the resources for upcoming releases and development phases. Most software projects, both industrial and open source, use an issue tracking system such as Bugzilla to help manage the maintenance process. These systems permit both end-users and developers to enter contextual information about observed failures, and to document the historical progress towards their resolution [2]. Once a bug has been reported, trusted team members must perform bug triage: they analyze the report, evaluate its merit, assess its seriousness and urgency, and decide if the bug should be assigned to a developer for fixing. The process of assigning bugs to suitable develop- ers is done manually by the triagers; it is time consuming and tedious, and requires that the triager hold significant contextual information about the reported bugs, developers, priorities, preferences, and dependencies between bug reports (i.e., duplicates, complements, etc.) [3] [4]. This assignment is strongly influenced by the discretion and expertise of the triager; due to the various human factors involved, it is also prone to being subjective and sub-optimal. The triager should take the limitations and preferences of each developer into account, avoiding overloaded backlogs for one developer and increased idle times for others. However, it is unrealistic to require that triagers have perfect knowledge of every possible developer’s expertise, experience, and availability. Mistakes in bug assignment can potentially delay the resolution of a bug report, and as a result, increase the overall bug fixing time. Compounding the problem, developers may not accurately report their experience, domain knowledge, availability, etc. they may over- or under-sell their abilities according to their egos and commitment level to the project [5]. On the other hand, we don’t want to bug developers too often; it would be best if their stated preferences could speak for them when bug assignment is being considered; the cost of bothering a user must be weighed against the expected utility of the result [6]. Developers strive to achieve “flow”, a state of deep concentration, an experience of full immersion, of harmony between one’s actions, skills, and goals [7]. It takes time and effort to get into flow, and it is a relatively fragile state, yet achieving it is extremely important for successful creative activities. Consequently, if a software agent is able to act effectively on behalf of a developer in representing their bug fixing preferences, this would likely be seen as a benefit, and that it is extremely important for successful creative activities. In this paper, we consider the following research questions: Can an automated multiagent approach improve the quality of bug assignment in large software projects? How can predicted fix time improve the intelligent bug allocation process? Can bug allocation be improved through intelligent multiagent systems? A. Framing the Idea Automating the process of bug assignment can decrease the load on the triager and system as well as providing a more suitable allocation by 1) preventing huge backlogs,