Earlier quoted context omitted.
Bouncing around languages and ecosystems is pretty common, isn't it?
Only within startups. Larger corporations have stable toolchains with lifetimes measured in years.
GitHub Copilot available for JetBrains and Neovim
411–420 of 446 posts
Re: GitHub Copilot available for JetBrains and Neovim
#412Earlier quoted context omitted.
I'm sorry, but I think you have not thought my argument through. First, I'm well aware that a whole program is not an infringement. It doesn't have to be for there to be infringement by some piece of code in the program , which would be what I was arguing. When I go into court, what I will say is, "This piece of code infringes, here is my original." The court will rule on whether that piece infringes. At that point,…
Frankly, I think it's on you to lay out your argument in full rather than assume everyone is privy to your thought process. You seem to coming at this as if the law is a purely mechanistic thing that can quickly resolve disputes, overlooking how these things play out in the real world, like Oracle v google going on for a decade or the even longer litigation involving SCO and IBM. I mean, what makes you so sure the co…
No, it's on you to not assume you know everything about my thought process before I show you otherwise.
Could I have communicated better? Yes. But I didn't assume you knew everything about my thought process. I thought it wasn't necessary for you too until you assumed that you knew my argument better than I did.
> You seem to coming at this as if the law is a purely mechanistic thing that can quickly resolve disputes, overlooking how these things play out in the real world, like Oracle v google going on for a decade or the even longer litigation involving SCO and IBM.
Once again, you are assuming. Yes, I know law is not mechanistic. Yes, I know going to court would take a long time.
Going to court is not the only thing I am doing. I also created new licenses, which I would not have if I only cared about what happened in court.
Going to court would be to attempt to argue for and enforce my viewpoint (indirectly). It would be a last-ditch attempt.
The first thing I am doing is creating new licenses specifically meant to "poison the well" for machine learning on code in general and Copilot in particular. [1]
With those licenses, I hope to make companies nervous about using Copilot for anything that might be using my licenses. This hesitation may only apply to code with my licenses, but the FAQ for those licenses ([2] is an example) are also designed to make lawyers nervous about the GPL and other licenses.
If I succeed in making the hesitation big enough, then Copilot as a paid service would be dead, and hopefully enough companies will prohibit the use of Copilot, as is already being done. [3]
Going to court, then, would only happen if I found someone infringing.
This will be especially helped by the fact that the vast majority of the code under those licenses will be in a language I'm building right now. If there's open source code in the language, then I can search that code for infringements caused by Copilot.
> I mean, what makes you so sure the court is going to give you a quick judgment on the infringement, or that it's going to agree with you about the size of code fragment that that is sufficient to infringe?
Do you think I would be stupid enough to pick an example to bring before court that would not be obviously infringing?
Winning in court is not just about being right, it's also about picking your battles, and I would be very choosy.
> Surely you can can agree that sufficiently small code fragments won't meet this threshold because they're too basic or obvious.
Yes, and as I said above, I won't use any of those.
> Because your whole argument here rests upon that assumption, it comes off as a wish fulfillment scenario where Copilot disappears because nobody likes the risk calculus;
You realize that this is the entire basis for the cybersecurity industry? The entire point is to make it economically infeasible for bad guys to do bad things in cyber space; it's to make the "risk[/reward] calculus" skew in favor of the good guys so much so that bad guys just stop operating.
Making the risk calculus riskier for your opponent is how wars and legal cases are fought too, but such tactics are not confined to the warroom or courtroom. That's why my opening salvo is licenses to sow doubt, to change the perception of the risk calculus. Battles like this are won by "winning minds," which in this case means convincing enough people to be nervous about it.
> your stated goal of 'making Copilot a dead product' seems more emotional than rational.
This is something where you are partially right. There is a lot of emotion behind it, not because I'm an emotional person (I'm actually on the spectrum and less emotional than the average person), but because I objectively considered the ramifications of what GitHub is doing with Copilot, realized how bad those ramifications were, and that lit a fire under me.
I wrote about the ramifications and refuted the dubious legal justifications in a whitepaper [4] for the FSF call for papers [5]. (Intro blog post at [6].)
But if you will read through the paper, you will find that there is rationality in my thoughts. I just happen to think this is a fight worth taking. Thus, the emotion.
> In reality it will take you a long time to get a result, and if enough people find Copilot useful (which I suspect they will), legal departments will adapt to that risk calculus and just figure out the cost of blowing or buying you off in the event that their developers carelessly infringe.
"Buying me off" would include checking that Copilot didn't output my code, and if it did, to follow the license. I'm not sure they would like the added work to use something that is supposed to save work on the easiest part of programming. But even if they did, I would be satisfied.
And that points to another part of my "thought process": the reason that I think I've got a chance is because I think the "reward" side of the risk/reward calculus is not very high with Copilot because it is the easiest part of programming.
Almost everything in programming is harder than writing boilerplate, and as I said in another comment [7], I think there are still better ways of reducing boilerplate. In fact, the language I am working on is designed to help with that. So my perception, which I acknowledge could be wrong, is that the reward for using Copilot is not high, which means I may not have to raise the risk level much for people to change their minds about it.
But the most important point would be to make legal departments and courts recognize that copyright still has teeth, or rather, argue well enough to convince people of that fact, despite what GitHub is saying.
> If it sufficiently improves industrial productivity, it will become established while you're trying to litigate and afterwards people will just avoid crossing the threshold of infringement.
This would be a win in my book too. I am going to be the first person to write boilerplate code in my language, which means that anyone who writes in this language will be "copying" me. I don't care about the boilerplate, though; they can copy that as much as they want.
> Honestly, this exchange makes me glad that I don't publish software and thus don't care about license conditions on a day to day basis.
I feel you on that. The only reason I do is because I feel like my future customers deserve the blueprints to the software they are using the same way the buyers of a building deserve to get the building's blueprints from the architect. If I did not have that opinion, I would probably not publish either.
[1]: https://gavinhoward.com/2021/07/poisoning-github-copilot-and...
[2]: https://yzena.com/yzena-network-license/#frequently-asked-qu...
[3]: https://news.ycombinator.com/item?id=27714418
[4]: https://gavinhoward.com/uploads/copilot.pdf
[5]: https://news.ycombinator.com/item?id=27998109
[6]: https://gavinhoward.com/2021/10/my-whitepaper-about-github-c...
[7]: https://news.ycombinator.com/item?id=29019777
Edit: Clarification and fix typo.
Re: GitHub Copilot available for JetBrains and Neovim
#413I’ve never understood the value proposition for Copilot. In terms of difficulty, writing code is maybe on average a two out of ten. On average, maintaining code you wrote recently is probably a three out of ten in terms of difficulty, and maintaining code somebody else wrote or code from a long time ago probably rises to around a five out of ten. Debugging misbehaving code is probably a seven out of ten or higher. Gi…
I also fear that Copilot will be teaching anti-patterns. Just tried something really simple: def is_palindrome Copilot suggestion was def is_palindrome(word): if word == word[::-1]: return True else: return False facepalm So good for technically correct solution but still... This is an anti-pattern I think in pretty much any language that I know of and something that about half of my beginning students try when they…
However in Visual Studio Code on a different computer, I got much better idiomatic suggestions.
such as
def is_palindrome(word):
return word == word[::-1]
Very puzzling.Re: GitHub Copilot available for JetBrains and Neovim
#414Earlier quoted context omitted.
> It doesn't seem to me as though the distinction between "Copilot reproduced the code and the engineer copy/pasted/saved it" versus "Copilot inserted the code" is crucial. I think that could be crucial. If I read a computer science book, and from that produce a unique piece of code which was not present in the book, I have created a new work which I hold copyright over. If I train a machine learning algorithm on a c…
The way I'm reading your reply seems like sophistry, so I expect I'm misunderstanding you. Scenario 1: Copilot, operating as an IDE plugin, placed the suggestion directly into the text. To accept the suggestion, the engineer hit save. Scenario 2: Copilot, placed its suggestion in an external file. The engineer copy/pasted the suggestion verbatim into their IDE, then hit save. These don't seem as though they materiall…
You're right to be confused, and my reply can be ignored as off-topic for the thread i'm in.
Re: GitHub Copilot available for JetBrains and Neovim
#415Earlier quoted context omitted.
The way I'm reading your reply seems like sophistry, so I expect I'm misunderstanding you. Scenario 1: Copilot, operating as an IDE plugin, placed the suggestion directly into the text. To accept the suggestion, the engineer hit save. Scenario 2: Copilot, placed its suggestion in an external file. The engineer copy/pasted the suggestion verbatim into their IDE, then hit save. These don't seem as though they materiall…
Thanks for giving me the benefit of the doubt, but I do not deserve it in this case. I misread what I was responding to and my response was off the mark. You're right to be confused, and my reply can be ignored as off-topic for the thread i'm in.
Re: GitHub Copilot available for JetBrains and Neovim
#416I’ve never understood the value proposition for Copilot. In terms of difficulty, writing code is maybe on average a two out of ten. On average, maintaining code you wrote recently is probably a three out of ten in terms of difficulty, and maintaining code somebody else wrote or code from a long time ago probably rises to around a five out of ten. Debugging misbehaving code is probably a seven out of ten or higher. Gi…
Stuff like:
// Add 100 divs to the DOM in random places
...
// Randomize the color and text of all divs every 1 second
...
Other than that novelty, it can be genuinely useful if you think about it as a more intelligent autocomplete.Re: GitHub Copilot available for JetBrains and Neovim
#417My take is it's what you make of it. Copilot is only equivalent to copy-and-pasting from stack overflow if that's how you choose to field its suggestions.
As an example, I've enjoyed typing "const one_day_in_ms" and letting it finish it out with "1000 * 24 * 60 * 60". I already knew how to do that, but having GCP finish it for me and verifying on my own didn't make me feel stupider, it made me more efficient. I have more interesting problems to tackle.
On the other hand, another coder could have not known this calculation and thrown their trust into GCP. That's bad practice and it's on them, not on the tool.
Sometimes GCP gives me code that it learned from bad coding patterns. I know how GCP works and I know to look out for that, so I ignore those suggestions.
Of course, sometimes I don't know if what looks like a good idea from GCP is actually not. I take that on as my responsibility to trust but verify. If it's writing some function to slugify a string for a URL, I check it against what people are discussing online. Does it defeat the purpose of GCP in this case if I have to check it on my own? Probably, but it's only in these specific instances when I'm doing something I'm not familiar with.
Re: GitHub Copilot available for JetBrains and Neovim
#418I’ve been using this for weeks and it blooooows my mind. It comes up with crazy recommendations, just yesterday I wrote this big ass logic to do something, then I wanted to move that code to a function so I wrote the function name and I kid you not copilot suggested a one-liner that worked… the thing is so useful and I’m not writing simple code (writing cryptographic code). And when it’s not doing that at the very le…
> writing cryptographic code Delegating the implementation of something that you are notoriously never supposed to roll your own, to a text generator AI.... What could possibly go wrong?
Re: GitHub Copilot available for JetBrains and Neovim
#419Earlier quoted context omitted.
> This means that Google was careful to not make a large amount of copy-righted works publically accessible. Such is not the case for GitHub Copilot in particular Armin Ronacher’s tweet [19] The fast inverse square root algorithm referenced here didn't originate from Quake and is in hundreds of repositories - many with permissive licenses like WTFPL and many including the same comments. It's not really a large amount…
>The fast inverse square root algorithm referenced here didn't originate from Quake and is in hundreds of repositories With the exact same comments? > many with permissive licenses like WTFPL So it would be perfectly legal to do whatever I wanted with the source for GCC as long as there was a single fork on github that replaced the GPL with a MIT license? Quite sure the FSF would be perfectly fine with that.
Yep: https://github.com/search?p=1&q=evil+floating+point+bit+leve...
> Quite sure the FSF would be perfectly fine with that.
I believe the person republishing GCC code under MIT would be liable.
Also, I'm not recommending that you use code you know has been incorrectly licensed. Just that in cases where certain "folk code" is seemingly widely available under permissive terms, Copilot isn't doing much that an honest human wouldn't.
A better example against Copilot would be trying to get it to regurgitate some code that has a simple known origin and is always under a non-permissive license.
Re: GitHub Copilot available for JetBrains and Neovim
#420I’ve never understood the value proposition for Copilot. In terms of difficulty, writing code is maybe on average a two out of ten. On average, maintaining code you wrote recently is probably a three out of ten in terms of difficulty, and maintaining code somebody else wrote or code from a long time ago probably rises to around a five out of ten. Debugging misbehaving code is probably a seven out of ten or higher. Gi…