Author’s note: I was a little too definite with my hypothetical situation here. I’m sure that AI could have some hand in reverse engineering proprietary software to the point of being able to replicate its functions without human interference. However, I don’t think we’re anywhere near that at this point in time. I added this as some folk have messaged me about this point. I’ve also modified the title to more closely reflect my opinion.
This essay was written by me, Brandon Nolet, in the context that AI is getting more and more advanced, and I think that eventually it will obsolete proprietary software.
Artificial intelligence, machine learning, neural networks. They’re all concepts that are related and in this post I’m just going to put them all under the umbrella, along with other things I haven’t mentioned here, which I don’t know the proper terms for.
I do this for two reasons:
- I’m not well versed in the subject and so the terminology is often lost on me
- I think it’s irrelevant to the message I’m trying to get across.
For the uninitiated, proprietary software is that which is written with the intent to not disclose the inner workings of the software to the public, or even to anyone who uses the software. By this definition you cannot modify the software as an end-user in a way that is outside the designed scope of functions.
This poses a few issues that relate to freedom, privacy, and even security in many cases. I won’t go at length on this part, because again, it’s irrelevant. All that you need to know is that proprietary software is licensed as such and under copyright law.
It’s not hard to look at something like a word processor or spreadsheet handler and figure out how certain parts work. You might be able to implement a rudimentary copycat or parody of the software, and maybe even make it into a competitive product.
Especially in the free software community, there are a wide variety of options to choose from when it comes to photo editors, text editors, and even web browsers. With this abundance of choice, it’s a wonder why people even choose proprietary software in some cases.
But what if someone wants to use the proprietary software without having to actually use the proprietary parts?
AI Programmed Software
There are already pieces of software out there that take a few bits of information and create brand new news articles from them. For example, a quick report that an earthquake has happened in x place is pretty formulaic. You report the severity of the earthquake, where it transpired, the time of the earthquake, the number of casualties available at the time, and so on. An AI can not only take the information and compile it into a news article, it can also write with a given style. It can apply all the nuances and whatnot to the language to create flourish and make it convincing that a human had written it.
Now imagine taking that and writing a piece of software that writes itself. That, by itself, is machine learning, or neural networks, depending on the purpose and the implementation. That exists already and has been quite successful. Take it a step further and ask the AI to not only write itself, but ask it to create a new feature in itself. At this point, the AI is stumped unless it can observe and learn from another person doing it.
Once we pass this obstacle, we can find a robot adding new features to itself on command, we’ll find a computer anticipating what you need from it and mold itself to fit those needs. But at this point, why not apply this to proprietary software?
What if your need was to use a piece of software but it can’t be proprietary? AI is good at reverse engineering. I mean, it’s been used to reverse engineer software stacks to find vulnerabilities in the past, it’s also being used to reverse engineer “the enemy” in cyber warfare. What it’s not being used for, that I know of, is to reverse engineer a piece of software.
Take Microsoft Word as an example. Of course the AI would have to learn from free software prior to this experiment, but stay with me. You give Microsoft Word in its entirety to your brand new AI. You let it try every single task a thousand times and tell it to write code that performs the same tasks. It clicks here and there, it moves these things here and those things there, and it just goes about testing a thousand things a second (given enough computing power).
Three days later, you come back and it’s finished exploring every part of the word processor and you find a brand new codebase that you’ve gotta try out. You give the AI all the assets required for this new program to look “pretty” and then tell the AI to compile the software.
You find something that looks absolutely identical to Word. It’s so similar, down to the bugs, that you can’t believe that it’s not the same thing. But you also find that it’s more performant than the original Word. It starts up faster and performs complicated tasks with ease. You find that it has no issues opening up really large Word files, and that even exporting to PDF is a lot snappier!
You know that the Microsoft Word GUI is heavily patented and even copyrighted so you give the AI a few other word processors and give it instructions to take the best and most usable, according to design standards, pieces of the interfaces and put it all together, and make it pretty too!
You come back another three days later to find that not only do you have an application that looks fantastic and wildly different from what you’ve seen before, but the AI has also implemented features not found in Word before, because the “best design” also included GUI segments that were attached to certain features. The code’s been refactored, optimized, and minified. The codebase consists of a heavily obfuscated version and a human-readable version. Why? Because the AI was bored. Not really, but just because that would be cool.
Now imagine you put this AI on a cluster of supercomputers, and had it going 24/7/365. Eventually this AI would have deciphered all of the secrets and because the code is not proprietary to Microsoft or whatever other company, it can be released for everyone else to enjoy, explore, and build on top of.
At this point, writing proprietary software is basically pointless because every company knows that at some point the AI will spill all the secrets and will probably make it better.
But then the AI passes another milestone: creation. The AI can now make its own programs without having to analyze existing software. It can take some suggestions, look through codebases that exist, and then craft something entirely new, just because you asked.
I could go much further into this, with sources and all that, but I think my message has been delivered enough without being too rambly. Let me know what you think about this concept and tell me if you agree!