Does that matter? It's not the end users who are being accused of copyright violation, it's the tool itself.
If the argument is that copilot is infringing because it merely displays an allegedly copyrighted snippet for a few moments, even if the user does not accept the completion, or accepts it but then deletes it, then that is a completely different argument because there is very little identifiable damage to the authors, which bolsters an argument of fair use.
If I steal your television, it doesn't matter how much I get for it at the pawn shop.
> It possesses and reproduces copyrighted code without it's attribution.
To be clear - attribution does not fix GPL license violation.
Emphasis mine.
This is different from asking Google and getting code directly from Google without the license - that is, without any indication that this code was taken from somewhere that has a license on all parts of it, not just the parts that Google didn't bother to show you.
That's not how this works.
If I give you a blob of uniformly random bits and then give you a passphrase you can use with a tool to turn that into a Hollywood movie, and you do so, and then you delete it, that isn't not copyright infringement.
It is.
There is a concept in copyright law of derivative work which means simply editing Harry Potter isn’t enough to publish it without paying for the rights to do so. Even highly transformative fanficfion can run into this issue when much of the original work’s characters and setting remain.
Disney gets away with this stuff by copying public domain works, copilot and it’s users don’t have that defense.
But works of non-fictional literature (of which source code is an example) have to work harder to justify their copyright.
Many of the snippets of code generated by copilot contain zero creative expression. They are just mechanical implementations of an algorithm.
You mentioned setting and plot. The source code equivalent is architecture. Copilot generated snippets are usually too short and too algorithmic to have their own architecture.
What makes a derivative work derivative is that it copies creative expressions from the parent work. If you edit them out, then it’s not a derivative work anymore.
The use is only helping developing the algorithm by adding more value to the product in improving extracting the creative expression.
Copilot is a loose/loose game for developers, regardless on which end they are.
Which is why even very short snippets of code have been an issue.
Keyword being "Most of the time"
It's not unlike copying code from stack overflow and swapping the identifiers around.
Isn't this exactly what you'd expect an AI coder to do?
What is the specific difference?
In that order likely a violation, but it depends on the concrete case, always.
I take care to attempt to not duplicate code; it's why don't use copilot.
It's certainly possible. Back when Phoenix reverse-engineered the IBM BIOS using published sources with a restrictive license, they did it by having one team read the sources and write a very detailed specification of everything that happens there, and then another team used that spec to write new code from scratch. They did it that way because if the first team were to write the code themselves, it is quite likely that the result would be legally considered derived work.
They also usually have a Luddite axe to grind.
If they succeed in getting CoPilot outlawed (obviously they won’t), then I will rent $50 worth of GPU time and train my own, like some kind of cyberpunk outlaw.
Most of the time copilot is giving you one-line completions that are heavily adapted to the surrounding code. It’s not “writing a book by quoting choice paragraphs from other books”. It’s fancy autocomplete.
You can direct copilot to give you anything you ask it for. If you ask it for an entire function, and you don’t give it any context, then you are more likely to get a snippet from inside its memory. But even when this happens you are unlikely to keep the entire snippet unmodified because the chance that it is what you were looking for is low.