Researchers Secretly Deployed A Bot That Submitted Bug-Fixing Pull Requests (medium.com)
An anonymous reader quotes Martin Monperrus, a professor of software at Stockholm's KTH Royal Institute of Technology:
Repairnator is a bot. It constantly monitors software bugs discovered during continuous integration of open-source software and tries to fix them automatically. If it succeeds to synthesize a valid patch, Repairnator proposes the patch to the human developers, disguised under a fake human identity. To date, Repairnator has been able to produce 5 patches that were accepted by the human developers and permanently merged in the code base...
It analyzes bugs and produces patches, in the same way as human developers involved in software maintenance activities. This idea of a program repair bot is disruptive, because today humans are responsible for fixing bugs. In others words, we are talking about a bot meant to (partially) replace human developers for tedious tasks.... [F]or a patch to be human-competitive 1) the bot has to synthesize the patch faster than the human developer 2) the patch has to be judged good-enough by the human developer and permanently merged in the code base.... We believe that Repairnator prefigures a certain future of software development, where bots and humans will smoothly collaborate and even cooperate on software artifacts.
Their fake identity was a software engineer named Luc Esape, with a profile picture that "looks like a junior developer, eager to make open-source contributions... humans tend to have a priori biases against machines, and are more tolerant to errors if the contribution comes from a human peer. In the context of program repair, this means that developers may put the bar higher on the quality of the patch, if they know that the patch comes from a bot."
The researchers proudly published the approving comments on their merged patches -- although a conundrum arose when repairnator submitted a patch for Eclipse Ditto, only to be told that "We can only accept pull-requests which come from users who 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. Who owns the intellectual property and responsibility of a bot contribution: the robot operator, the bot implementer or the repair algorithm designer?"
It analyzes bugs and produces patches, in the same way as human developers involved in software maintenance activities. This idea of a program repair bot is disruptive, because today humans are responsible for fixing bugs. In others words, we are talking about a bot meant to (partially) replace human developers for tedious tasks.... [F]or a patch to be human-competitive 1) the bot has to synthesize the patch faster than the human developer 2) the patch has to be judged good-enough by the human developer and permanently merged in the code base.... We believe that Repairnator prefigures a certain future of software development, where bots and humans will smoothly collaborate and even cooperate on software artifacts.
Their fake identity was a software engineer named Luc Esape, with a profile picture that "looks like a junior developer, eager to make open-source contributions... humans tend to have a priori biases against machines, and are more tolerant to errors if the contribution comes from a human peer. In the context of program repair, this means that developers may put the bar higher on the quality of the patch, if they know that the patch comes from a bot."
The researchers proudly published the approving comments on their merged patches -- although a conundrum arose when repairnator submitted a patch for Eclipse Ditto, only to be told that "We can only accept pull-requests which come from users who 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. Who owns the intellectual property and responsibility of a bot contribution: the robot operator, the bot implementer or the repair algorithm designer?"
easy one: nobody
Copyright applies to creative works. A machine produced work is not creative, since any similar machine could and would produce it.
During Expedition #1, whose results are presented in details in [7], Repairnator has analyzed 11,523 builds with test failures. For 3,551 of them (30.82%), Repairnator was able to locally reproduce the test failure. Out of 3,551 repair attempts, Repairnator found 15 patches that could make the CI build pass.
Translation: Repairinator was able to fix .4% of the bugs it saw.
A program repair bot is an artificial agent that tries to synthesize source code patches. It analyzes bugs and produces patches, in the same way as human developers involved in software maintenance activities. This idea of a program repair bot is disruptive, because today humans are responsible for fixing bugs. In others words, we are talking about a bot meant to (partially) replace human developers for tedious tasks.
Instead of stating "Our goal is to enhance the performance of programmers" because that is what tools do; there are tons of businesses with sub-optimal solutions to their business process. Instead we use intentionally menacing speech.
Their fake identity was a software engineer named Luc Esape, with a profile picture that "looks like a junior developer, eager to make open-source contributions... humans tend to have a priori biases against machines, and are more tolerant to errors if the contribution comes from a human peer. In the context of program repair, this means that developers may put the bar higher on the quality of the patch, if they know that the patch comes from a bot."
Translation: We spent a fair amount of time lieing to people, justifying a means to an ends, not realizing lieing to people might cause them to not believe anything we say.
Sounds like this guy is soon to be unemployed.
If the author was so confident in his bot, he would have attached his own name to it instead of making up a fake name for it.
Also, I don't see why he thinks his idea is so novel, static analysis, for instance, can suggest solutions if you want. And if you're too lazy to double-check the work yourself and let someone else do it for you, that's not a great discovery, that's just laziness.
> 1) the bot has to synthesize the patch faster than the human developer
I guess this is ok if it's faster in the sense of "the bot has to fix the bug faster than the human developer gets around to it", but in general I don't think this speed requirement needs to be that strict. If it's some latent bug waiting to hit us in production, for example, I don't care if the bot is slowly poring over code for days on end and brings a bug to my attention. Likewise, in any large project there are always tons of bugs that might not be that hard to fix, but it really is just a matter of getting around to them, so having some bot take a crack at them could be a good thing.
What I'm reading is that yes, it made 5 patches that were accepted but the more important question is how many patches did it make total? If it made 800 patches and only 5 were accepted, that's kind of a problem.
Also, there is good reason to distrust robotic submissions: there is no cognitive reasoning in generating patches. This means that it could very well make things worse rather than making them better. Sure, it could make your project build but it could also create an innocuous bug that breaks the code's functionality in the process which is likely to take even more time to correct because in addition to fixing the problem you also have to find it. Build failures already tell you where the problem exists.
Anons need not reply. Questions end with a question mark.
How often is that claim really made? And if ever, how often is it actually made by developers? The only time I've ever heard that claim put forward is like you did: right before shooting it down.
Automation is part of what makes development fun (there's a certain thrill to replacing something tedious with a "machine" that does it for you).
How is this even a question?
If you go and apply image filters to pictures on Flickr using SoftwareA... that doesn't mean SoftwareA is responsible for what you did or now owns what you produced, nor do SoftwareA's developers.
I don't recall when hammers could make hammers by themselves. Did they only appear in a Pink Floyd video?
"Wait. Something's happening. It's opening up! My God, it's full of apricots!"
A more pragmatic approach for a project may be to run static code analysis on each commit in order to highlight potential bugs and vulnerabilities. Creating a bot that waits for tests to fail and swoop in with a patch based on such analysis then seems like a mostly redundant addition.
He didn't say it in the right way, but he meant that he believes machines will program themselves one day.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
In ordinary patch submission, there are two instances with actual intelligence and understanding: The patch creator and the maintainer. Here, there is only one: The maintainer. This violated the 4-eye principle. If the maintainer makes a mistake, the most stupid (in a non-obvious way) code makes it into the software.
Automated tools should never be used to decide anything. They should always only provide input to a human expert that knows exactly how the input was created and that there is no intelligence in that mechanism.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Most developers are at risk of losing their jobs if anybody realizes how bad they actually are. Automation would just be the thing that shows that, not the thing that replaces them. Good developers will not get replaced until we have working strong AI, which is not happening any time soon. (A senior member of the IBM Watson team put it as "certainly not in the next 50 years" to me.)
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Eh, he's claiming that some broad segment of "developers" claim something and that this is evidence they are wrong.
stephanruby wrote:
It would be unethical for the human to impersonate a bot.
What's more, the bot has no means to give the human legal authority to impersonate itself. Conundrum! :P
[Oh dear. By the time I got to the end of this post, I began to realize that I was no longer quite so sure that I was joking.]
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
I went to the trouble to look at the patches themselves, and they appeared to be lacking any documentation of which test case that was failing was fixed. If the bot did a better job of documenting the rationale for the patch, perhaps they'd get a better acceptance rate. (And by the way, the acceptance rate wasn't reported in the article, only that 5 patches were accepted over a 6 month period. - Was that 5 out of 6, or 5 out of 100?)
Otherwise, I'd think that a program-generated patch, that indicated that it fixed a failing test case and didn't cause any additional failures in the test suite, and clearly indicated that it wasn't claiming proprietary rights to the patch would be generally welcome. I don't see the need for any secrecy.
Researchers Secretly Deployed A Bot That Submitted Bug-Fixing Pull Requests
AI Bots Secretly Deployed A Researcher That Submitted This Research Paper
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
Yeah, I remember that. It could handle choosing columns from a table if you told it which column ahead of time.
That doesn't prove this is the same kind of thing, but PR flacks aren't any more moderate now than then, so it could well be.
I think we've pushed this "anyone can grow up to be president" thing too far.
How often is that claim really made? And if ever, how often is it actually made by developers? The only time I've ever heard that claim put forward is like you did: right before shooting it down.
Automation is part of what makes development fun (there's a certain thrill to replacing something tedious with a "machine" that does it for you).
Frequently here on slashdot whenever people speak of automation costing jobs. Inevitably some developer will claim that they won't be the ones being ousted.
Are you sure? For kicks I checked a few stories (https://hardware.slashdot.org/story/18/04/24/2333259/a-study-finds-half-of-jobs-are-vulnerable-to-automation, https://hardware.slashdot.org/..., and https://slashdot.org/story/18/...) and didn't find really anything at all to suggest that "software developers claim they are immune to automation".
In fact, if comments on those articles is any indicator, on slashdot it's typically the software developers who are in the "anything can be automated" camp. And really that makes sense - who is more likely to see where automation can go, the people who have decades of first hand knowledge and experience of progress in automation (software developers) or people who have relatively little direct experience with automation in their day to day job (a lawyer or an author maybe)?
Maybe you had a prior bad experience with a deluded dev or two, but I think what you said was overly broad - or maybe my anecdotal experience is just the exact opposite of your anecdotal experience. ;-) Have a good one!
How long will it be now before they make bots to submit patch requests that insert vulnerabilities - likely under the guise of fixing a true vulnerability and just making a mistake in doing so?
Pointing such a bot at its own codebase is how skynet happens.
Following up on the links from the article, it's clear that the professor in charge only went out and informed those who accepted the pull requests more than 10 months after the fact of the situation, under the guise of "full disclosure" (and these are of course for links he has only linked directly, we have no information about the failed pull requests). While one of the areas they wished to focus on was inherent discrimination against bots, he appears to have missed the point that automation, while able to provide simple fixes to obvious problems (predominately in error handling flows), they have a terrible track record of understanding nuance or interaction subtleties during run-time. Coccinelle went through a lot of this with the Linux Kernel as well and is something that ultimately received a great deal of acceptance as it matured - although in this case, patches were generated automatically and submitted by humans. I wonder then what the objective of this research is, to show that software developers are sceptical of contributions from automated tools that follow semantic rules more than logical reasoning, or that by hiding behind a fake identity representative of a demographic that is more likely to submit trivial changes you are able to hoodwink the developers into accepting your submissions? Both get an ethics fail, and it's not clear that there's anything even novel to show for it.
How can this perform better than regular code analysis tools who already inform you of nullptr accesses, unused variables etc. ?