5 ms·
> "look I prompted CoPilot for this piece of code that I already knew about and it spit it right out" https://twitter.com/docsparse/status/1581461734665367554
by klyrs 4y ago
> "look I prompted CoPilot for this piece of code that I already knew about and it spit it right out"
https://twitter.com/docsparse/status/1581461734665367554 https://twitter.com/docsparse/status/1581461734665367554
An english description plus three characters of a function name is enough to coax CoPilot into distributing LGPL-licensed code out of context, without a proper license. That's neither "emotional" nor "cherry-picked", it's a clear-cut license violation.
- williamcotton 4y ago
- striking 4y agoFrom your second link: > In a computer program, the lowest level of abstraction, the concrete code of the program, is clearly expression, while the highest level of abstraction, the general function of the program, might be better classified as the idea behind the program. Copilot is alleged to be reproducing blocks of code verbatim, which fall into the expression side of the idea/expression distinction, which by your own links and statements appears to show that the allegations against Copilot are not false. I'm not going to say you're necessarily disagreeing with reality (I'm not really sure what that's supposed to mean) but you're certainly contradicting the evidence you've brought.
- dragonwriter 4y agoThis quote: > In a computer program, the lowest level of abstraction, the concrete code of the program, is clearly expression, while the highest level of abstraction, the general function of the program, might be better classified as the idea behind the program. Seems to be trying to force everything associated with programming into a false “expressive/abstract idea” divide. Abstract ideas are distinct from expression and not subject to copyright, but not everything outside of the scope of copyright is abstract rather than detailed: notably, functional elements.
- striking 4y agoNo, it's an illustration of two ends of spectrum, and only one of three parts of AFC. All I'm saying is that the original comment gave us three links and that they didn't strictly agree with what the comment said without further elaboration. I will say, though, that the allegations of basically copying and pasting exact instances of substantive portions of copyrighted codebase appear to be at one end of the spectrum.
- PaulDavisThe1st 4y ago> If the code was covered by license in the first place the comment you're replying to stated that it was covered by the LGPL.
- williamcotton 4y agoSlapping an LGPL on something does not mean that the utilitarian aspects are covered by the license! --- Yes, I know that comments are expressive. They are clearly not utilitarian.
- ivalm 4y agoThings like code comments are clearly expressive and not utilitarian (you don’t need comments to compile code and you can express the ideas of these comments with different verbiage without loss of efficiency).
- klyrs 4y ago> Edit: Downvotes mean you disagree with reality. Alternative theory: you're overconfident and wrong, and haven't even read the tweet I shared. CoPilot is observed to reproduce entire files (less two lines), down to variable names and comments, verbatim, from a repo that's covered by the LGPL. If verbatim copies are not covered by copyright, then software can effectively never be copyrighted. And that there would be an extreme departure from "reality." regarding your edit: this is a verbatim copy. The process you're describing is actually strengthening, not weakening, my argument. It allows material dissimilarity in the face of an overall similarity. Whatever process is meant to be applied to the licensed code and the allegedly infringing code, it will produce identical output given identical input. You're attempting to claim that the entire file would be deleted by the process and that the remainder would be an empty comparison which would (granted) be covered by fair use. And since CoPilot has been shown to redistribute multiple files, your "case" would hinge upon the entire repository not being covered by copyright. This is beyond absurd. edit 2: > Or don't! Just keep downvoting in support of your fantasies! Wheeeeee! Please review the site guidelines. You're both whining about downvotes and sneering at the community with this. Probably time to take a break from the keyboard. edit 3: > Care to address the content of my claims? Probably time to take a break from the keyboard.
- rockemsockem 4y agoFor what it's worth I've found the links you've provided very interesting and insightful! It's bringing back bits and pieces of some of the software license training I've got at various jobs in the past.
- rockemsockem 4y agoI mean, he clearly knew about that code in advance and used his prior knowledge to coax Copilot into spitting it out, yeah? Three characters can get you pretty far, that's 1 combination out of 125,580 (considering all english letters, upper and lower, along with most of the numbers and symbols on my keyboard), plus the description of a fairly complex algorithm. Also, this code is really just executing a mathematical operation in what I would assume is fairly standard, so it may not even fall under copyright. IANAL. Even if it is a copyright violation, that is one out of, IDK, millions, maybe billions already of Copilot completions? That sounds cherry-picked. Just because some high profile, highly-retweeted person says something doesn't make it not cherry picked.
- cowtools 4y agoOf course it is cherry picked. The idea is that it allows you to INTENTIONALLY void any copyright you want. So let's say I obtain an illegal copy of microsoft windows' source code. Under this precedent, what stops me from just (overfitting) training a neural network to produce the source code verbatim, sans any license notice? But it doesn't end there. What stops me from making a neural network that exactly reproduces the bytes of Illegally_Ripped_Disney_Movie.mp4 that I obtain from the pirate bay? Copyright need not apply. At what point can the neural network I've described (which is intentionally designed to violate copyright) distinguishable from a neural network like Copilot and others which violate copyright extrinsically?
- jeremyjh 4y agoIt doesn't void anything. If you use Copilot to copy some licensed code illegally, you are the person in breach, not the tool. People using Copilot are possibly littering their code-base with future copyright liabilities, and they'd have no idea about it. Until someone writes an AI to find infringing software and automatically sue them...
- cowtools 4y agoYes, that's the other outcome, which is the industry getting GPL'd to death for using this. But I don't think there is an established precedent when it comes to this. I don't know much about AI/SL but I think the logical outcome is that using a transformer to generate source code is going to result in an over-trained system that produces sections of code verbatim because of the relative size of the space of all valid programs vs the space of all possible programs. It's not like art where you get soft failure if a single pixel or word is wrong: the inclusion, exclusion, or replacement of a single instruction or symbol is enough to introduce fatal bugs into a computer program. If the system doesn't have the capacity to understand programs generally (which it probably won't if it's just a transformer), then you're going to end up with a system that spits out samples from training data that do work.
- spywaregorilla 4y agoSuppose you wanted to do what some code does, then you see this LGPL code. What can you do? Adjust variable names and play with line spacing and comments until it feels different?
- andrewxdiamond 4y agoWrite it yourself
- wilg 4y agoSo, then, there's no way to know whether someone wrote it themself or "copied" it verbatim.
- spywaregorilla 4y agoI wrote it myself and it came out looking very similar. What do I do?
- klyrs 4y agoFirst off, that's a library of pedagogical implementations, so I wouldn't even want to copy it -- I'd prefer a library focused on performance. Second, it's linear algebra, there are alternative implementations and libraries out there. Third, it's covered by the LGPL, so I'd be perfectly happy to link to the library. Fourth, I'd look up a pseudocode description and go from there. In no case would I sit down with another person's implementation and give it the undergrad treatment to pretend that I'm not copying.
- zo1 4y agoHere is this guy's function copy-pasted on a SO question: https://stackoverflow.com/questions/17913191/using-typedef-in-class-for-its-own-struct-data https://stackoverflow.com/questions/17913191/using-typedef-i... Found it after 5 mins and a couple tweaks to the search terms. Another: https://vdoc.pub/documents/direct-methods-for-sparse-linear-systems-26b50n39j9ig https://vdoc.pub/documents/direct-methods-for-sparse-linear-... Someone copied this guy's book and put it on scribd: https://www.scribd.com/document/514019650/Direct-Methods-for-Sparse-Linear-Systems-by-Timothy-a-Davis https://www.scribd.com/document/514019650/Direct-Methods-for... Someone put it on a "personal" edu page: https://people.sc.fsu.edu/~jburkardt/c_src/csparse/csparse.c https://people.sc.fsu.edu/~jburkardt/c_src/csparse/csparse.c A modified version of it here marked as open-source: https://github.com/rwl/CSparse.py/blob/master/csparse.py https://github.com/rwl/CSparse.py/blob/master/csparse.py More: https://tonus.pages.math.unistra.fr/schnaps/schnaps/csparse_8c_source.html https://tonus.pages.math.unistra.fr/schnaps/schnaps/csparse_... Google search used to find them: https://www.google.com/search?q=Sparse+matrix+addition+%22check+inputs%22+cs_add https://www.google.com/search?q=Sparse+matrix+addition+%22ch... Could probably find more if I looked harder. Side note, looks like in a lot of places people do the ""proper""-ish thing and leave this guy's name on the code.
- TigeriusKirk 4y agoFrom what I've seen on the art side of things, the more a certain work has been copied in the real world (and thus in the training set multiple times), the more likely it is you're able to get a very close copy out of the model with the right prompts. For example, I'm pretty sure this is why some models turn up a near exact version of The Girl With The Pearl Earring.
- klyrs 4y agoOther people doing it doesn't make it okay.
- robswc 4y agoJumping into this but I've honestly lost my train of thought, lol That said... is that any different from someone copying and pasting into their code vs copilot doing it? If someone randomly pastes code that has a copyright, and people use it, how are they supposed to know they shouldn't be using it? I imagine we're talking functions here though. Not sure if Copilot would reproduce entire libraries unprompted if they're not open-source, anyone have an answer?
- gfodor 4y agoIt's a violation but this examples doesn't jive with how I use Copilot, for whatever that is worth. Usually Copilot takes into account context and integrates the various bits into a whole that fits in with the surrounding code. The "empty file, type function signature" use case feels somewhat dubious to try to understand actual, not theoretical, harm. Though I respect the right for this person to defend their rights.
- deleted 4y ago[deleted]
- zarzavat 4y agoIt’s a contrived example. This is not how people use copilot in the real world. Copilot is designed to be used in context. The completions it provides in context are specialized to your project. Artificially starving copilot of context and then showing that it recites parts of its training dataset is mundane.
- k_roy 4y agoNah, mostly what we've learned is that AI has become lazy enough that it goes out to Stack Overflow just like the rest of us.