January 18, 2020

The old debate about which software license is more free

In the development of open source software licenses, it was sometimes questioned if the GPL license is really the most open license. Sometimes the BSD license is called more open because it doesn't force the other side in doing something.

The short answer to the conflict is, that only the GPL v3.0 license is the most open license available. If somebody likes to get more rights, he has to reverse engineering software from scratch. This allow him to become the owner of the code. Let us go into the details.

Suppose somebody takes the Linux kernel which has a GPL license, puts the sourcecode into the own closed source project and sells the software on the market. This is a clear violation of the GPL license and the user/company will have many problems. Critics of the GPL license argue, that this example show, that GPL is not really a free license. What they forget is, that with a MIT license the same problem is there. The MIT license works similar to the GPL license with ownership. That means, user1 creates the software and he holds the copyright. IF user2 tries to do something with the software he may violate the copyright.

To overcome the conflict, user2 has to create the software from scratch. That means, the sourcecode of user2 needs to be different than the sourcecode written by user1. Let us construct an example. User2 takes the Linux kernel. He reprogramms the software from scratch. He is not using the C language, but the C++ language for doing so. The resulting sourcecode is not the same like the original Linux project. So the original GPL license is no longer valid. User2 can choose any license he likes for the C++ software and he is allowed to use it in a closed source project.

Basically spoken the bottleneck is not the license agreement which is formulated in the GPL license, but the bottleneck is the question if user1 and user2 is using the same software. If the software is different, user2 can choose a new license. To understand the situation we have to analyze the technical aspect of coping a software. The easiest way in doing so is to use the Unix cp command:

cp file1.c file2.c

If file1 was licensed under the GPL license, then the file2 can be used only with restrictions. That means, it's possible to use the file2.c in a wrong way and a copyright violation may be the result. To overcome the issue, a more powerful tool than cp is needed: Unfurtunately, there is no computer program available which can convert C-code into C++ code. But if a company starts a project to reprogram given c code into C++ code manually, the resulting file2.cpp is independent from the original one:

file1.c -> manual reprogramming -> file2.cpp

The user can do with the file2.cpp what he likes. No matter which license was used for file1. The only thing what is important is, that file2 is very different from file1. That means, it should be a different programming language, different subfunctions and also a different GUI interface. This is similar if an artist redraw an existing photograph with a pencil. The handdrawn image can be licensed from scratch.

Risks of software licenses

The debate around Open Source licenses contains of theoretical explanation plus the real world scenario. In most cases only the theoretical side is discussed. For example, somebody may ask if GPL or the MIT license is more open. The focus on theoretical definitions is not enough, because in the reality the world is working quite different. If somebody tries to minimize the risks of copyright violations the easiest way in doing so is:

1. use a gpl licensed software as template, for example the latest version of the linux kernel

2. reprogram the software from scratch in a different programming language and with some modifications

3. give the newly created software any license you want

A possible copyright dispute is only the case if software1 is equal to software2. if both projects are using different sourcecode it's a different project and the license is different. If the step #2 (reprogram the code) is missing it's possible that in the reality some problems will be there. For example, reusing a GPL licensed software in a commercial context will produce a gpl violation and re-using a mit licensed software will generate also some trouble with the copyright owner. The reason is, that each piece of software is linked to an author. If user1 has created the software, he can define what user2 is doing with the code. The only option to real freedom is not the GPL license, but it's a situation in which user2 reprograms the code from scratch. This will produce a new copyright which is owned by user2.

The question left open is, under which constraint software1 is different from software2. For example, if in the code only some comments are different, than the software2 is not different. But if it's code rewrite from scratch in a different programming language and with different features, than the new project stands by it's own and it can be licensed from scratch.