Most people have a good understanding of what copyright protection means with regards to written words, such as a book or an article. Those same protections also apply to software source code. Suppose I write some software in C as follows:
y = 0;
for (i=1; i<=x; i++)
y += 3*i*(x+2);
As soon as I write it, I now own the copyright. (In some cases you should file with the U.S. Copyright Office.) If someone is paying me to write this code, such as the company I’m working for, then it is theirs, not mine. Once written (and thus copyrighted,) no one else can copy that code without permission. Others within the company can use it since the company owns it.
Some erroneously think that modifying code then makes it different and therefore not protected. For example, changing the variable names in my code as follows will not make it free to use:
myY = 0;
for (myI=0; myI<myX; myI++)
myY += 3*myI*(myX+2);
A copyright protects the expression, not the idea behind the expression. Patents (see post on patents) and/or trade secrets (see post on trade secrets) are used to protect the idea. The following code produces the same result but it was implemented differently and is therefore not likely a copyright infringement.
y = 3(x+2)x*(x+1)/2;
Translating to a different language is also considered to be copying. Here is the same code but translated into bash shell script:
let y=0
let i=1
while [ $i -le $x ]
do
let 'y=y+3i(x+2)'
let 'i=i+1'
done
In order to determine if copying was done between source codes of different languages, one must be able to read and understand both languages. An example I used in a litigation case is the following two sentences, the first in German and the second in Spanish:
Die geheime zutat im rezept ist zimt.
El ingrediente secreto de la receta es la canela.
It takes someone who knows both German and Spanish to understand that both are saying, “The secret ingredient in the recipe is cinnamon,” and therefore, highly likely that copying was done.
Not only does the copyright protect the source code, but also any machine-generated derivations into a non-human-readable form, such as compiling the source code files into binary files that the computer’s CPU can read and execute.
The concepts and examples I’ve written here are brief and incomplete. Closer examination is required on a case by case basis with legal counsel to determine if copyright protection of software source code has been violated.
Gary Stringham is an expert witness and consultant in hardware, software, and firmware. He can be contacted at 208-939-6984.