The folks at the GitHub division of Microsoft have released Copilot: a new feature which writes code… so computer programmers don’t have to.
According to Microsoft: “GitHub Copilot is an AI pair programmer that helps you write code faster and with less work. GitHub Copilot draws context from comments and code, and suggests individual lines and whole functions instantly.”
I’m going to be blunt here: This is, quite possibly, the worst idea in the history of computer programming. Ever.
To be fair, from a technical perspective, Copilot is an impressive accomplishment. The sheer amount of data that needed to be collected, indexed, and processed (every line of public code on GitHub)… that’s impressive. The A.I. that predicts the code that it thinks you will need… also incredibly impressive.
Just the same, Copilot is such an astoundingly bad idea — on so many levels — that it is truly baffling that it was created at all. Let’s go over some of the biggest issues with why Copilot is just the worst.
Copilot Problem #1 – Finding and Fixing Bugs
Hypothetical: you decide to build a new piece of software using Copilot as one of your tools.
And let’s assume that Copilot performs its job admirably. Just as intended. Every so often inserting the code you need, exactly when and where you need it. How marvelous! You’ve just cut your total development time significantly!
You now have a small mountain of code, that you did not write, interwoven among the code that you wrote yourself.
Who wrote that code? Who knows! It got copied from someone else’s project on GitHub.
Does it have bugs? Probably! Most code does!
Does it have issues interacting with the rest of your code? Possibly? Hard to say! You didn’t actually write it!
When those bugs do crop up… it is now going to be significantly harder to fix as it is code that you are not necessarily at all familiar with.
This is a hard reality of software development. It is almost always easier to read, understand, and fix issues with code that you are already familiar with (especially if you wrote it yourself). If you did not write the code yourself, it is certainly nice to at least know that you can contact the person who did. With Copilot… that’s not possible.
Thus finding — and fixing — bugs is going to be significantly more time consuming and difficult.
Copilot Problem #2 – Programming is Not Data Entry
There is a (relatively profound) misunderstanding among those that are championing Copilot. Something that shows a deep lack of understanding about what computer programming truly is.
Consider this Tweet, for example:
The notion here is that Copilot is a simple tool, for performing repetitive tasks. Tasks that are in no way different if they are performed by a simple tool, or by a human being. Not unlike a calculator, performing some simple equations.
This is utterly preposterous.
Computing programming is a fascinating mixture of engineering and artistry. The number of ways different developers may approach a seemingly simple programming task is nearly limitless. With different benefits (and drawbacks) in a wide variety of ways — including code readability, size, speed, robustness, flexibility, and portability. Just to name a few.
Saying Copilot is to Programming like a Calculator is to Mathematics betrays a deep misunderstanding of at least one of those things.
What if we applied the same technology and approach to writing novels? Taking snippets of other works and inserting them where the AI thinks they should go. The very notion is completely insane.
Copilot Problem #3 – Code Bloat
Reusing self contained code, copied by an AI from an unknown source on GitHub does not lend itself well to lightweight, lean, memory and CPU efficient code.
This is ridiculously obvious.
Copilot Problem #4 – Licensing Troubles (Big Ones)
GitHub confirmed, according to one Twitter user, that the code used with Copilot is pulled from ALL public GitHub projects. No matter what the license is.
“All public GitHub code was used in training. We don’t distinguish by license type.”
Meaning, if you use Copilot to insert code into your software, you have absolutely no clue what (or how many) licenses are now involved.
GPL? MIT? Apache? BSD? Probably. Others that are likely incompatible (at least in some way)? Almost assuredly.
Looking to ship your software under a specific license? Maybe even as closed source?
Is some of your code, which you hosted on GitHub, now being used in other projects without proper attribution or licensing? Maybe? Who knows!
The legal nightmare that this opens up is of epic proportions. And the problem was so glaringly obvious, that I am at a loss for words as to how the team behind Copilot did not understand and address this from the very moment the idea was first proposed. It’s almost as if the team had never dealt with software licensing.
Copilot should be deleted
Some ideas are simply so bad, they should not exist. Copilot is one of those ideas.
It serves to make code slower, bigger, buggier. To, over time, reduce the skills of programmers. And to not only create a maelstrom of software licensing issues… but to deeply disrespect the work for thousands and thousands of programmers.
It may be an impressive accomplishment… but it does far more harm than good.
Is Copilot the worst thing to ever happen to computer programming? That’s a pretty intense statement. If there has been something worse, I can’t think of what it might be. Regardless, one thing is certain…
Microsoft should close it up. Today.