What is artificial intelligence?
The term “artificial intelligence” has been around since at least the 1950s. It originated in an academic setting, but it was also clear since the beginning that artificial intelligence would have commercial relevance if its goals could be achieved.
It turns out that artificial intelligence is not so easy to define. This is in part because the term “intelligence” is difficult to define. If psychologists cannot agree on the definition of human intelligence, perhaps we can forgive computer scientists for not agreeing on the precise definition of artificial intelligence. Nonetheless, we can see from scientific literature that the concept of artificial intelligence developed from attempts by researchers to answer the question, “Can machines think?”. Note that in the early days of computers, the terms “computing machine” or “calculating machine” were used for what we would now simply call a computer, so this question is equivalent to “Can computers think?”
This question, however, simply shifts the challenges of defining “intelligence” to an equally hard-to-define term “think”. For the rest of this post, however, let’s not worry about precisely defining intelligence or thinking. If we intuitively understand what these concepts are about when referring to humans, we can apply these same intuitions to think (no pun intended) about artificial intelligence.
Roughly speaking, artificial intelligence is about designing and building computers and computer systems to perform tasks that would otherwise require human competence or intelligence to perform. Notice that I include the term “computer systems” to highlight the fact that many examples of artificial intelligence projects involve lots more than just computers. Robotics is the clearest example of this. Of course, the center of any artificial intelligence system is the computer hardware and software that does the actually “thinking,” just as the brain carries out the thinking in humans and other animals.
One of the challenges with the above definition is the problem of “moving goalposts”. Take, for instance, the task of finding driving directions using your favorite navigator. Most people today don’t think of this as artificial intelligence, but 40 years ago the situation was quite different and people might have considered this a problem for AI. If history is any lesson, probably some of the tasks that artificial intelligence researchers are tackling today, such as autonomous driving, will seem like pretty mundane tasks in another 40 years time.
What about machine learning?
Before we turn to the next topic, I should mention a term closely related to artificial intelligence: machine learning. Machine learning is, put simply, a set of techniques used to allow computers to learn from data. By “learn” we mean to improve the performance of certain tasks. The reason that machine learning is so closely linked to artificial intelligence is that most (if not all) modern artificial intelligence systems are built using one or more techniques from machine learning. Machine learning is certainly not the only way we could build artificial intelligence, but it is the most scalable way and in most cases, it gives us the best performing systems.
How is AI impacting the open source world?
It has long been a dream of AI researchers to build AI systems that could write their own software. In other words, an operator would give the computer a high-level task like, “Write a program to compute the diameter of a pipe needed to achieve different flow rates for different liquids,” and the computer would experiment with many different versions of code until it found one that did the job correctly. Or perhaps a more ambitious example would be, “Create a nice looking UI to display the following information.” Continuing with this idea, one could imagine an AI system that generated software and published it as open source to GitHub or another code repository.
If the above examples sounded a bit like science fiction to you, you are not mistaken. Nonetheless, AI researchers have recently had some success with automatic programming, also known as program synthesisor inductive programming. Research in this field usually involves generating programs to perform simple tasks, such as “return the given input in reverse order.” If you work as a software developer and can write more complicated programs, your job is probably safe for the time being. While predicting the future is always difficult, I think it’s safe to say that AI not going to be auto-generating commercially relevant software any time soon.
AI should not be seen as a threat to software development jobs but more as a tool every developer should have in his or her toolbelt. AI has the potential to help software developers in many different ways. With the increasing role open source software plays in software development in general, it is more and more difficult for developers to effectively manage their use of open source. The challenges range from compliance with disparate (and often confusing) open source licenses to remaining aware of security vulnerabilities. It can also be challenging just to stay abreast of the availability of different open source components for potential inclusion in projects. How often, as a developer, have you spent countless hours implementing some functionality only to find out later that the same functionality is available as an open source library?
The tools of machine learning and AI can help with all the above challenges because a computer can methodically scan tens of millions of source code files and build statistical models which would be impractical to compile manually.
Head of AI, FOSSID
Rob Guinness (PhD) is Head of AI at FOSSID, developing AI to help people make the most out of their use of open source software (and comply with OS licenses). After starting his professional career at NASA he spent a few years in the aerospace industry and eventually became a researcher, earning a PhD in Pervasive Computing. He previously served as the CTO of Teqmine Analytics, a company developing AI for patents.
AI in open source compliance?
We at FOSSID are working exactly in the direction described above, and we are evolving the AI of our code scanning engine to eliminate false positives and always provide the most precise, most accurate results possible for our customers.