I’ve never understood the value proposition for Copilot.<p>In terms of difficulty, writing code is maybe on average a two out of ten.<p>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.<p>Debugging misbehaving code is probably a seven out of ten or higher.<p>GitHub Copilot is optimising the part of the process that was already the easiest, and makes the other parts harder because it moves you from the “I wrote this” path to the “somebody else wrote this” path.<p>Even during the initial write, it changes the writing process from programming (which is easy) to understanding somebody else’s code to ensure that it’s right before accepting the suggestion (which is much less easy). I just don’t understand how this is a net time/energy savings?
Copilot is crazy. The other day, I was writing a Python function that would call a Wikipedia API. I pulled from the internet an example of a GET request, and pasted it as a comment in my code.<p><pre><code> # sample call: https://en.wikipedia.org/w/api.php?action=query&format=json&list=geosearch&gscoord=37.7891838%7C-122.4033522&gsradius=10000&gslimit=100
</code></pre>
Then I defined a variable,<p><pre><code> base_url = "https://en.wikipedia.org/w/api.php?"
</code></pre>
Then, like magic, Copilot suggested all the remaining keys that would go in the query params. It even knew which params were to be kept as-is, and which ones would come from my previous code:<p><pre><code> action = "query" # action=query
format = "json" # or xml
lat = str(latitude.value) # 37.7891838
lon = str(longitude.value) # -122.4033522
gscoord = lat + "%7C" + lon
...
api_path = base_url + "action=" + action + "&format=" + format + ... + "&gscoord=" + gscoord
</code></pre>
As a guy who gets easily distracted while programming, Copilot saves me a lot of time and keeps me engaged with my work. I can only imagine what it'll look like 10 years from now.
I’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 least it provides auto-completion to lists where a counter has to increase and things like that. It’s just baffling, I don’t think I’m that directly impacted by AI, or at least this is the first time where I’m like “wow, AI really is changing the world RIGHT NOW”. Half-joking: can’t wait for it to just write my code.<p>Also if this feature would be paid tomorrow, I think I would pay for it. It’s really noticeable when I don’t have copilot enabled now.<p>Oh and, autocompletion doesn’t work with markdown files because of markdown plugins I think? But this is another level of insanity: when I’m writing english it figures a lot of the sentences I want to write. Makes me question if I’m just a deterministic individual with no choice.
A lot of the examples people are giving of code Copilot filled in for them sound like what would be called plagiarism, and probably also copyright infringement.<p>Which I think was fairly predictable.<p>What wasn't predictable was that someone would ship this Copilot anyway, consequently exposing their company and their users' companies to liability.<p>Imagine if you hired an intern who was copy&pasting bits of GPL'd code throughout your system. This would not be a good job, it would be something that needed immediate attention from legal counsel and others, and mean reverting every commit the intern from heck made if you couldn't prove convincingly it wasn't tainted. Especially if you're a startup, who needs to assure investor due diligence in good faith that you actually own the IP.
Wait, they got Tim Pope on the case for the Neovim plugin? Amazing, I'm positive it'll work beautifully.<p>For those who don't know, he's essentially the godfather of vim plugins - I even have an entire 'tpope section' in my init.vim
I actually really like Copilot.<p>There tends to be a lot of repetitive code in the world. I primarily write JS, Py, and Rust. Sometimes, I might declare something like a function table, and Copilot will automatically fill in the class definition with everything I defined.<p>I'm not using Copilot to write new algorithms or solve library-specific problems, but it sure is next-level in picking up patterns in a file and predicting where you want to go next. Obviously, good code is succinct (not repetitive), but it sure is helpful when in that early prototyping stage. I admire it's ability to infer a correct assertion when writing Unit Tests - it made it much easier for me to write tests recently and helped me recognize a few bugs.
I tried it on IntelliJ recently. The examples I tested blew my mind. Yet, I think there are two things that need to improve to get me to use it regularly (it will get there!):<p>- less than perfect import/types/var suggestions that LSP in typed languages would've made perfect suggestions for (e.g named import in go would use the package name instead).<p>- latency feels a bit high and my thoughts would get interrupted waiting for a suggestion to come.<p>For the former, I wonder hard feasible it would be to give structured suggestions to the LSPs that it would swap for correct var names and imports and such. Or test each suggestion with the LSP for error counts and offer the least erroring suggestion.
I've been getting a lot more misses than hits with Github Copilot, even when writing elementary math or utility functions; but despite its error I am nevertheless astonished at its approximation of intent.<p>Very eager to see Github Copilot catchup to some bright line of signal v noise.
I have many thoughts about Copilot, but here are two.<p>First, as much as I don't like the idea of Copilot, it seems to be good for boilerplate code. However, the fact that boilerplate code exists is not because of some natural limitation of code; it exists because our programming languages are subpar at making good abstractions.<p>Here's an example: in Go, there is a lot of `if err == nil` error-handling boilerplate. Rust decided to make a better abstraction and shortened it to `?`.<p>(I could have gotten details wrong, but I think the point still stands.)<p>So I think a better way to solve the problem that Copilot solves is with <i>better programming languages</i> that help us have better abstractions.<p>Second, I personally think the legal justifications for Copilot are dubious at best and downright deception at worst, to say nothing of the ramifications of it. I wrote a whitepaper about the ramifications and refuting the justifications. [1]<p>(Note: the whitepaper was written quickly, to hit a deadline, so it's not the best. Intro blog post at [2].)<p>I'm also working on licenses to clarify the legal arguments against Copilot. [3]<p>I also hope that one of them [4] is a better license than the AGPL, without the virality and applicable to more cases.<p>Edit: Do NOT use any of those licenses yet! I have not had a lawyer check and fix them. I plan to do so soon.<p>[1]: <a href="https://gavinhoward.com/uploads/copilot.pdf" rel="nofollow">https://gavinhoward.com/uploads/copilot.pdf</a><p>[2]: <a href="https://gavinhoward.com/2021/10/my-whitepaper-about-github-copilot/" rel="nofollow">https://gavinhoward.com/2021/10/my-whitepaper-about-github-c...</a><p>[3]: <a href="https://yzena.com/licenses/" rel="nofollow">https://yzena.com/licenses/</a><p>[4]: <a href="https://yzena.com/yzena-network-license/" rel="nofollow">https://yzena.com/yzena-network-license/</a>
Copilot has been super fun! Here is a small website I generated via only comments - in the HTML and JS. The CSS needed a bit more massaging but it also auto generated.<p><a href="https://spencer0.github.io/copilot-tests/" rel="nofollow">https://spencer0.github.io/copilot-tests/</a>
the fact that most of Co-Pilot's usefulness comes from repeating common snippets of code makes me think there has to be a much simpler way to reduce the boilerplate of "common tasks"
I have a few questions about copilot. I haven’t gotten a chance to use it yet.<p>Is it irrational that this makes me a little anxious about job security over the longterm? Idk why but this was my initial reaction when learning about this.<p>Given the scenario where copilot and its likes becomes used in a widespread manner.
Can it be argued that this might improve productivity but stifle innovation?<p>Im pretty early in my career but the rate things are capable of changing soon doesn’t sit too well with me.
Here is a demo of it with Neovim & Codespaces: <a href="https://twitter.com/josebalius/status/1453413543232090118" rel="nofollow">https://twitter.com/josebalius/status/1453413543232090118</a>
The davinci-codex model that copilot uses also has the capability of translating someone else's code into plain English. This has a great value potential.<p>Ultimately I'd like to have a conversation with a machine, where I can describe what I want, and the machine can serve me a possible answer, and then I can respond to clarify the idea.
I've been using Copilot in VS Code and it's been surprisingly useful. It makes suggestions pretty rarely, but when it does I accept about 50% of them. Generally these are few-line functions and it just gives me what I would have written after thinking about it a moment.
I signed up for the copilot technical preview right after it was announced a few months ago, but I haven't gotten an invite yet while all my friends who signed up later did (I feel a bit left out). Is there any way to get an invite sooner? What am I doing wrong?
This will lead IMO to an interesting problem, although the technology and the idea is certainly cool.<p>Currently many programmers do not take the time to really understand how/why their code works -- programming without understanding 1.0. Essentially make library calls and fuzz around with the arguments until it appears to work. [Not wanting/suggesting to go back to the world before libraries/code completion, just stating where we are now.]<p>This will enable programming without understanding 2.0 -- not only will you not know how/why a particular function call works, you will now fail to understand why you want a sequence of functions in a particular order.
Most of the arguments here boil down to the same belabored point, that you shouldn't expect Copilot to actually write the code for you at the end of the day.<p>My 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.<p>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.<p>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.<p>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.<p>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.
The comments are so full of praise that I will have to give this an earnest try. But is <i>writing</i> code really the part of software that people are struggling with?
> Login to GitHub Copilot using the device auth flow and authorized GitHub Copilot IntelliJ plugin with your GitHub Account in an external browser.<p>> Read and agree to the GitHub Copilot additional telemetry terms.<p>Can anybody comment on the privacy aspects of this? Is the telemetry reasonable? Why on earth do I need to login: presumably so that they can associate my coding with my account to structure the data they are gathering?
In my opinion, Copilot is going to become one of those "perceived authorities" that have just enough legitimacy to be blindly trusted by the inexperienced, but not enough to actually be useful to the experts.<p>This is like social media (or even the Internet as a whole) and say, our parents' generation. Countless times I receive links to Facebook posts or random articles that somebody thinks must be true, simply because The Oracle (i.e. their smartphone) showed it to them. For much of the older generation, smartphones are these all-knowing repositories of wisdom, and anything they come across while using them is likely to be true. This is why I think misinformation has spread so easily.<p>I imagine Copilot going down a similar path. The next generation of programmers who didn't grow up with knowing how to sift through API docs or SO answers for the right bit of code, or who's attention spans have been fizzled away, will love the idea of Copilot. Instant gratification in the firm of a tool that can seemingly do your work for you. This will be dire consequences for their ability to code and think for themselves.
Note that you have to have a copilot account and GA is still waitlisted.<p>I filed a PR because it was a bit frustrating to go through the entire setup and then find out I needed to be granted access.<p><a href="https://github.com/github/copilot.vim/pull/2" rel="nofollow">https://github.com/github/copilot.vim/pull/2</a>
So who knows what all that WASM is for in the Neovim plugin? Is there source for it? <a href="https://github.com/github/copilot.vim/tree/release/copilot/dist" rel="nofollow">https://github.com/github/copilot.vim/tree/release/copilot/d...</a>
Copilot thread is always hot. TBH I don't mind the plagiarism. They can use my code.<p>The real problem is indeed the code quality, since Copilot does actively provide low-quality codes, and this will bite a lot of people. I guarantee. I don't think this massive learning approach can't be the solution. We need an extra kick.<p>My shower-thought solution for this garbage-spewing problem is to design a new library with Copilot in mind. Tighten up the interface, and use strict patterns instead of domain-specific hacks.<p>In other words, we can make libraries so <i>lame</i> that Copilot (and newb programmers) simply can't produce low-quality code. Just disregard smart programmers with fast hands. They don't need any help anyway. Don't even try to target them, because it's gonna cause more stupid flame wars...
So it looks like for neovim there is not yet the option to cycle through suggestions?<p>Looks like for VSCode the shortcut on Linux is Alt-], see: <a href="https://github.com/github/copilot-docs/blob/main/docs/visualstudiocode/gettingstarted.md#alternates" rel="nofollow">https://github.com/github/copilot-docs/blob/main/docs/visual...</a><p>But for neovim, it doesn't mention anything about it in the docs: <a href="https://github.com/github/copilot.vim/blob/release/doc/copilot.txt" rel="nofollow">https://github.com/github/copilot.vim/blob/release/doc/copil...</a><p>And, nothing happens when pressing Alt-].
I wonder how long before Github is forced to include youtube’s content idesque system. So that i can cease and desist even before I even push the code. And oracle, google and ms can charge my Github billing account for violations.
In the few short weeks i have used CoPilot inside of VSCode, it's been a big* timesaver; I can type out a bare skeleton of a class, and with minimal guidance for things like naming conventions CoPilot let's you simply tab+enter through each class property.<p>Maybe I'm missing something obvious, but I feel like CoPilot should have the ability to allow a user to define a 'class template' in the form of a block comment and then allow a user to write "make this class" or something.<p>*Big being it's probably saved me around two hours of manually typing out 'public property... etc.'
What this feels like to me, after a nominal amount of time using it, is that I am now in charge of vetting the proposed code, and is it appropriate for my use case, and does it meet our coding standards and does it integrate with my code or further suggestions. Honestly it feels like constantly code reviewing, which is not pleasant nor conducive to productivity.<p>And I do a lot of PR approval, and I shudder to think about PRs stitched together in haste because look how easy it is now to crank out code!<p>And lastely it doesn't work well when you have a large legacy codebase that your working within.
A product perspective:<p>- Co-pilot will not replace software engineers, however ...<p>- I do think it will in some cases help them be more productive as some have expressed in this thread already.<p>- Once they open it up to fine-tuning on your own codebase I suspect it can be used to bring new engineers upto speed faster plus it get will get more trustworthy.<p>- I do have concerns about the legal aspect of selling software built with assistance if co-pilot but a lawyer could probably get me comfortable (or not!)<p>- I have personally found it useful for data science type tasks especially getting familiar with new libraries.
Any word on if they will ever make Copilot free software? It sounds interesting, but I avoid using proprietary software in my development stack. Plus it looks like it be fun to play with.
Looking forward to the next generation of programmers who can only program if they have Copilot, and will complain in interviews when they are asked to code without Copilot.
I've been using TabNine for several years and love it. I'd be interested in hearing a comparison between TabNine and GH Copilot from anyone who has used both.
I'm very interested in this as a learning tool: instant feedback about what could come next, compared to the status quo of searching the internet or searching the language documentation. A lot of the time I learn <i>a</i> way to do something, then sometime later stumble across a <i>better</i> way to do the same thing. My hope is that Copilot can be a shortcut for that discoverability.
this has been "inevitable" for three decades now. The difference is, walled gardens making participation non-optional; commercial intent over "fairness"; elevating the trivial for the pleasure of management .. what could go wrong?!<p>overall, a new forms generator with a somewhat terrifying amount of horsepower.. zero trust of microsoft here, basically
I just tried installing for neovim - but got an error running vim-plug's `:PlugInstall`<p>I added an issue.
<a href="https://github.com/github/feedback/discussions/6847" rel="nofollow">https://github.com/github/feedback/discussions/6847</a><p>Anyone else install in neovim?
It say on the github page that "GitHub Copilot will attempt to match your code's context and style. You can edit the suggested code as you choose.". Does this mean that the plugin will transmit my code to github servers?
I used it for about a week but found I could type faster than it could suggest, even if it suggested the right thing. I have been coding for about 25 years but maybe it will help people new to whatever language they are using.
We should put up a huge amount of Oracle open source code on GitHub, get CoPlagiarizer to quote it and let Oracle deal with the situation.<p>The plebs should also play a little divide and conquer now and then.
I hope it will work for the 'standard' vim, so far it reports 'vim version too old', while I'm using the newest vim.<p>it's said because vim lacks 'virtualtext' feature.
makes it even easier for both the US (via Microsoft) and Russian govs (via JetBrains) to copy, analyze and inject arbitrary code into any codebase (public or "private") used by this combo of tools