Analysis Luc Esape leads a double life. The software engineer on the Spirals research team at the University of Lille in France goes by another name, Repairnator.
Repairnator has a superpower, the ability to fix bugs during continuous integration. That's the process by which servers continuously and automatically compile code and create builds for the commits flowing into a code repository, to ensure the corresponding application is sound.
Repairnator started trying to fixing bugs in January 2017 and continued off and on while getting the hang of it. The bug vigilante's moment of glory came on January 12, 2018, at 1308 after learning that a build in a project called GeoWebCache failed ten minutes earlier.
It sprang into action and produced a patch ten minutes later. At 1410, the developer responsible for the project accepted Repairnator's pull request and merged it, saying, "Weird, I thought I already fixed this... maybe I did in some other place. Thanks for the patch!"
The appreciation went unacknowledged because Repairnator is computer code masquerading as a person.
The problem with prejudice
Comp sci boffins Martin Monperrus, Simon Urli, Thomas Durieux, Matias Martinez, Benoit Baudry, and Lionel Seinturier described that moment, when Repairnator became human-competitive for the first time, in a recently released research paper, "Human-competitive Patches in Automatic Program Repair with Repairnator."
By that, the researchers mean Repairnator has to be able to produce high-quality patches before other people could do so. The bot works in Java, using the Maven toolchain, on open-source projects hosted on GitHub that use Travis CI.
The computer scientists created the human identity Luc Esape because, they claim, "human engineers do not accept contributions from bots as easily as contributions from other humans, even if they are strictly identical."
Humans are biased against machines, they say, tolerating the failings of other people and setting a higher bar for bots. A secret identity was deemed necessary so Repairnator's code contributions could be judged on their merit. And now the researchers have disclosed their bot's true nature in each of its pull requests as a matter of ethics.
Repairnator is unique in its focus on build fixing, its creators say, but it fits into the spectrum of intelligent bots for software development, such as Facebook's SapFix.
According to Martin Monperrus, professor of software technology at KTH Royal Institute of Technology in Stockholm, Sweden, Repairnator has produced five patches that have been accepted by human developers and merged into their respective code bases.
"This is a milestone for human-competitiveness in software engineering research on automatic program repair," he said in a blog post on Tuesday.
Paperwork proves a killer
According to Monperrus, there's been past bug fixing research that demonstrates automated systems can fix code bugs. But those bugs had all been fixed by human developers in the past, offering the automated system a template.
Thought Patch Tuesday was a load? You'll want to avoid this Oracle mega-advisory thenREAD MORE
Repairnator takes CI builds as input, every time a developer makes a commit, says Monperrus. Its output consists of patches, if any, to fix failing builds and data for future program repair research. Project team members vet Repairnator's work as a courtesy to human developers, so the bot doesn't waste anyone's time with a bad contribution.
Despite proving that it can compete with human developers in this narrow area, Repairnator isn't equal in the eyes of the law. As Monperrus tells it, the boffins' bot produced a suitable patch for the Eclipse Foundation's Ditto project but was rebuffed because one of the project's developers said pull requests can only be accepted from users who have signed the Eclipse Foundation Contributor License Agreement.
"We were puzzled because a bot cannot physically or morally sign a license agreement and is probably not entitled to do so," said Monperrus. "Who owns the intellectual property and responsibility of a bot contribution: the robot operator, the bot implementer or the repair algorithm designer? This is one of the interesting questions uncovered by the Repairnator project." ®