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?"
that's right - sourceforge should be Your Choice
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.
And software developers claim they are immune to automation. Hah. Like generational blacksmiths insisting tools could never create themselves.
Code written by bots is not copyrightable because it wasn't made by a human. i.e. public domain.
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.
The bug-finding abilities of this software can be transferred to other software development tools, such as the compiler. BTW the tools are always being improved (so nothing new here).
Just one more thing... It is a bad idea to automatically fix programming errors without checking the surrounding code. It is also stupid to program, then have the compiler find your errors... A good programmer is better than this.
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.
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.
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.
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 agree, Repairnator is a tool. You don't pay the mechanic's tools to fix your car, you pay the mechanic.
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!
Literally. Fake research papers have a way of making it in journals even after peer review. It's not clear what the quality of the patch was.
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. ?
See subject: c6gunner's name on this post as submitter yet signed "APK" (me) https://linux.slashdot.org/com...
I never say hosts cure Spectre/Meltdown OR it'd be on the Start64.com download page for it & I do NO MacOS X one!
* Too bad I publicly DESTROYED you c6gunner both here https://tech.slashdot.org/comm... + here https://tech.slashdot.org/comm... vs. your LIES/LIBEL + on hosts' technicals https://tech.slashdot.org/comm...
APK
P.S.=> Due to you TRYING TO PUT WORDS IN MY MOUTH I NEVER SAID!: DNS in kernel? I never said that! I did get the BLOW YOU AWAY ON IT 4th link above! Hosts is tunable NATIVE resolver driven by tcpip.sys IN kernelmode in Windows + kernelmode diskcache in Linux + hosts resolves faster, safer vs. slow remote DNS that can be DOWN or DNS poisoned & NO DNS TRACKING for fav sites I use @ TOP of hosts for speed/security vs. DNS poisoning & rest are BLOCKED (who cares how 'fast' getting to them - I NEVER INTEND TO GET TO THEM, TTL does rest))
See subject: He BOTH hosts + RECOMMENDS it -> forum.hosts-file.net/viewtopic.php?f=5&t=4290
My code's also VIRUS PROOF (self-checking mathematically down to 1 byte change) upmodded @ CODING FOR DEFCON on /. in 2005 as a good method http://it.slashdot.org/comment...
I won't give my work away so "OpenSORES" thieves can use it (or abuse it, see EFast/Google Chrome).
APK
P.S.=> Dozens of REGISTERED /. users (+ 100,000 users worldwide) disagree with you https://it.slashdot.org/commen...
Hosts results STOPPING MALWARE = UNDENIABLE https://science.slashdot.org/c...
SECURITY PROS agree hosts work https://it.slashdot.org/commen... for MORE speed AND security & they do so NATIVELY for less (resources consumed, less moving parts for exploit vs. SECURITY ISSUE RIDDLED DNS/AntiVirus (which slow you down vs. local hosts in RAM cached) ... apk
All the others seems to be just wrapping assignments in null checks.
But this one shows clearly it works differently:
https://github.com/eclipse/ditto/pull/151/commits/7ab96e373ecc55e1b942bfff4c9550c8ba5e584d
Still, just one example is a fairly thin proof of usefulness.