Computing firm ZeniMax Media and tech giant Facebook have been in a two-year legal battle involving allegations of copyright infringement and trade secret misappropriation in the development of the Oculus Rift, a virtual reality device. On February 1, 2017, a Dallas jury ordered Oculus VR, the relevant subsidiary of Facebook, to pay $500 million to ZeniMax for violation of a non-disclosure agreement. However, Oculus was found not to have misappropriated ZeniMax's trade secrets.
At the center of this lawsuit is former ZeniMax lead programmer and current Oculus CTO John Carmack. ZeniMax has accused Oculus executives of knowingly stealing its software and trade secrets through the hiring of Carmack and five of his employees. According to ZeniMax, the Oculus Rift was undeveloped and primitive until Carmack began working on it, allegedly using previous work under ZeniMax to make fundamental improvements.
What does it mean to steal code?
Oculus claims that the Oculus Rift does not contain a single line of code written by ZeniMax, but copying code verbatim is not a necessary element to copyright infringement. There is an intricate complexity involved with software copyright cases due to the technical aspects of writing code. It is actually fairly common for two programmers to write remarkably similar code to solve the same problem because there is a limited number of possible ways to express an idea in code.
The crux of the issue is the logic behind a piece of code, and the way that logic is implemented. For large scale projects such as the software for the Oculus Rift, it is actually very easy for a programmer to copy the logic and the execution of someone else's code without plagiarizing a single line.
The Abstraction-Filtration-Comparison test (AFC) is the method of identifying substantial similarity between the copyrighted work and the allegedly infringing work in computer program related cases.
The first step is the identification of the layers of abstraction. This essentially breaks down a computer program into hierarchies of function, figuring out what the idea of the code is and what the expressions are. This step is important to help courts view programs not as a million lines of code, but rather as multiple blocks of functionality. This facilitates a broad view of the program's function and purpose.
The next step is filtration, removing aspects of the code which are not legally protectable by copyright from consideration. An analysis is done at each level of abstraction and considers three factors:
- Elements dictated by efficiency are not protectable because concerns for efficiency limit the possible ways to achieve a particular function, making certain expressions necessary to complete the idea.
- Elements dictated by external factors, such as hardware specifications, compatibility requirements, and standard programming and design techniques, are not protectable.
- Elements taken from the public domain are not protectable.
The final step is a straightforward comparison between the remaining elements of the work. The remaining protected items are compared with the allegedly infringing program to determine whether substantial portions of the copyrighted program have been misappropriated. This comparison differs on a case-by-case basis due to the variability of complex computer programs. Unlike normal copyright cases, in software copyright cases, experts and professionals are often required to assist courts in understanding the subtleties in the works that may make or break the case.