Showing posts with label GPL. Show all posts
Showing posts with label GPL. Show all posts

January 25, 2020

The future of Open Source licenses

There are two major Open Sources licenses available, the MIT License and the GPL license. The advantage of both licenses is, that the user get access to the sourcecode. He can read the code and he can compile the binary file from scratch. The disadvantage is that problems are upraising if the end user forks an existing software project. Let us go into the details.

In the easiest case, the enduser is interested to download, read and execute existing sourecode. This is possible with the MIT License and the GPL license very well. Both licenses are written for exactly this purpose. The created code can spread freely over the internet and the costs for the end user is low.

The bottleneck is visible if the end user tries to do more with the sourcecode than only execute it on his computer. This is called forking. Forking means, to build on top of the sourcecode a new program. In the domain of software engineering, a library is linked into the own program and then the new software is distributed. If the end users is planning to do such things, he will run into a lot of trouble.

This is the case of the MIT License and the GPL license as well. The reason is, that every piece of code was written by a person, and the person holds the copyright on this code. Suppose, the idea is to use the libc library in the own project. The libc library is copyright protected. That means, a person in the world holds the copyright. And what is allowed and what is forbidden with the code is defined by this person. In case of the libc, the LGPLv2.1 license is valid https://en.wikipedia.org/wiki/GNU_C_Library Other library are available under a MIT license. What will happen in any case is, that after the library was used in a new project, the original author will check if the new project is fulfilling the license. That means, the enduser is not really free, but he has to negotiate with the license holder.

Suppose, the enduser is not interested in doing so. Suppose the idea is to fork an existing project and do not talk to the original author. Unfurtunately, such a software license is not available. No matter if the project was licensed under MIT, GPL or anything else, in all the cases, the copyright is reserved for the original author. The reason is, that it is a demanding task to write software. If the sourcecode contains of 100k lines of code, many manhour were invested in the past. And the copyright is protecting this invested time.

The only option for the end user to become independent from the original author and the Open Source license is to reinvent the code from scratch. That means, the user has to program it's own libc library from scratch which doesn't use the original sourcecode. That's the reason why the SCO vs. Linux case was openend a long time ago. Reprogramming software from scratch is the only option if somebody needs completely freedom from the original author.

The problem is, that even with modern software development tools like compilers and well documented sourcecode it's a demanding task to reprogram a software project from scratch. In a science fiction movie, the programmer would start a code generator which will produce it's own version of the Linux kernel. That means, the code generator gers some constraints as input and it will produce software from scratch. The software is different from existing sourcecode, so it's not copyright protected. This gives a hint how the future of Open Source will look like.

Today's licenses like the GPL license are protecting fixed code stored in files. The more advanced technique is to develop code generators who are able to produce unlimited amount of code. The generated code is new and it's not protected by the copyright law at all. This can be imagined as an advanced level generator in the Mario AI challenge. A level generator is able to produce a meaningful map from scratch which is different from any level created before. This newly generated game-map isn't protected by a software license. The problem with the Linux kernel, the glib library and most other Open Source projects is, that tha code wasn't generated automatically but it was typed in manually, and therefore it's possible for the original author to protect the code with a software license.

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.

How to get in conflict with the Creative Commons license

The creative commons license is described in theory and in the reality very different. In the theory, Creative commons licensed images and texts can be modified by anybody, which includes forking of an entire project. According to the theory, a user takes a creative commons photo, puts this in his own version control system, adds some additional colors to the photo and the resulting photo is used in the blog.

The surprising fact is, that this theoretical workflow can't be realized in the reality. The problem is, that Creative commons is not the same like free the content from copyright, but it will start a conflict between the original author of the photo and the user how has reused the image. What does that mean? Suppose the ininformed user has put the modified photo on his homepage. Then the original author will take a look at it and he will check carefully if the Creative commons license is fulfilled. In most cases, the author will come to the conclusion that the secondary user was not allowed to use the photo specifically in a commercial context. The result is conflict between both parties. So creative commons has not simplified the situation but it will produce new problems.

Let us define for which purpose Creative commons and the Gnu public license is a great choice. It's for the read-only mode. If a content is provided under a creative commons license, this will ensure that no paywall will protect the content. That means, CC-BY is equal to “the world has access for free”. What CC-BY and similar licenses (which includes the BSD license) are not solving is the problem of forking content. Which means, that the world is allow to take the content and use it for their own purpose.

The problem is not located in the license itself, but in the copyright law in general. Creating content which is more free than CC-BY-SA content can be realized with neural networks which are producing the content from scratch. Instead of copying existing information the idea is to use a generative grammar which will produce a new kind of work. This new content is not a derivative of the original work, but it's produced by a computer software.

What the user has to proof is, that his picture on his own website is a different picture which was licensed under the CC-BY license. If the pictures are different, then the copyright law is no longer valid. That means, the original author has as no control over the second picture. The second picture can be used for any purpose, which includes commercial applications, forks or whatever.

Basically spoken, CC-BY and the GPL license is protecting content which is the same. if picture1==picture2 then the CC-BY license can be applied. That means the author of picture1 can dictate the rules to the owner of picture2.

Let us describe the situation from a technical perspective. There is file on the harddrive called “image1.jpg”. The author of the file has tagged the file with a CC-BY 4.0 SA license and uploaded it to the internet. A second user uses the “wget /remote/image1.jpg” command to download the file. He opens the picture in the gimp software and puts his individual logo on the picture. The resulting image2.jpg is uploaded to the blog. Such a workflow will produce a lot of work for the lawyer. Even if the original picture was tagged with CC-BY 4.0 license and even if the blog of user2 has the same license (CC-BY 4.0) it's not clear if a copyright violation was there or not. In case of doubt it was a copyright violation. Not because of the CC-BY license but because image1.jpg and image2.jpg is the same.

The reason is, that a unix command like “cp or wget” is producing an exact copy. That means all the pixel information are the same. And pictures and texts as well are created by someone first. He owns the information no matter which license he has choosen for the content. The answer to the problem is, to replace the “cp” command by something which is not producing a copy but something else.

A very simple example for creating an image from scratch is to manual redraw the outline of the picture with a pencil. This is what artists are doing. They take a photograph as template, draw the lines with a pencil and then the colors are put into the drawing. The resulting image2.jpg has nothing in common with the original but it's an image created from scratch. That means, it's not important under which license the original content was licensed, but the image2.jpg can be licensed by the artists by himself.

How to overcome the Creative commons license

On the first look, modern licenses like Creative commons, GPL and the MIT license are a here to stay, because they provide more freedom to the user. From the standpoint of spreading information into the world, these licenses have made a great job. Today's it's possible to download the latest Linux version for free and get access to lots of Creative commons pictures in the internet.

The limits of Open Source licenses are visible if someone tries to use the content in it's own product. According to the license itself, it's allowed in doing so. But in the reality nobody tries to do so, because it's a copyright violation. Let us make a simple example. Somebody downloads an photo from Wikipedia and puts the photo on the own homepage. The result is, that he is reused a copyright protected image. The first thing what will happen is, that WIkimedia will recognize the case. They have a special subpage in which all the Wikipedia content is tracked in the Internet. The second thing is, that the user gets perhaps an e-mail to not doing so in the future.

Somebody may assume that WIkipedia doesn't have understand the meaning of the Creative commons license, but it's a general problem. Suppose somebody ignores Wikipedia completely, and tries to re-use software which has a MIT License. That means, he downloads the sourcecode and then he puts the code onto his own homepage. The result is very similar to creative commons licenses. In theory it's maybe allowed in doing so, but in the real world it will create a lots of problems.

The real bottleneck is the not GPL, creative commons or MIT license, but it's the copyright for content. If somebody creates a text, and image or sourcecode from scratch he owns the copyright on this infomration. If a second person is using the content for it's own purpose, it's a copyright issue. The good news is, that it's pretty easy to overcome the problem. In short, a Generative Adversarial Network (GAN) can do the job pretty well.

What does that mean? The first important fact is, that the GPL license, CC-BY and the MIT License are not as free as expected. They are protecting copyright protected information and as the result, it's not possible to modify the content free of any rules. The more elaborated way in handling content is to create it from scratch every time. If content1 is different from content2 no copyright law at all is needed to protect it. Let me give an example: somebody creates an Generative Adversarial Network algorithm which takes as input the images from the WIkipedia. After the learning process, the algorithm is able to generate lots of new images from scratch. They will look different from the original one. That means, these new images are not protected by the Creative commons license, but the user has created the content from scratch. Therefor he is allowed to use them in any possible way.

The conclusion is, that the limits of creative commons license can be overcome easily with modern technology which is a neural network for generating the content from scratch. This will make any copyright regulation (no matter if classical or modern Creative commons licenses) obsolete.

January 17, 2020

How open is the GPL license?

From a theoretical point of view, the Gnu public license is well documented and well known in the public. In contrast to a proprietary license the sourcecode can be redistributed by asking anyone, and it's possible to use the code in the own project if the new project contains of the same GPL license. A possible discussion would read the following way:

user1: Can i copy the Linux kernel and improve it by myself?

user2: Why do you ask?

user1: Because this is not allowed with proprietary code.

user2: I'm not an expert for law, but the GPL license is used by the open source community because it's superior to the plan license which prevents code-redistribution.

This is – in short – the discussion style used by open source advocates. They are proud of the GPL license because it gives them and the world the freedom to share and reuse written code. It's surprising to know that the reality looks a bit different. The legal aspects of coping software are not defined in the literature but what is happen in reality. How many people have copied the Linux sourcecode to their own computer? Not that much. Around the world less than 5 million PCs are running LInux. In contrast, billion of PC are running with Windows. So from a legal aspect, Windows is more legal than Linux. But suppose all the Windows user are not informed, that they can install Linux too. So we have to ask, how many forks of the LInux kernel were created in the past? A fork is a concrete application of the GPL license, it means to use existing sourcecode in the own project. The answer is, that not a single Linux fork is available.

Four years ago, Matthew Garrett (which was involved in the Kernel programming team) has talked about forking the Kernel https://www.zdnet.com/article/matthew-garrett-is-not-forking-linux/ but he hasn't do so. In other projects which are called a fork, a mostly not a real fork, but it's only a patch, which means extra software which can be installed as a plugin to the kernel, similar to writing a mod for a computer game. So the funny question is, why was the Linux kernel never forked? Are the software developers are not informed about the GPL license which explains that this is allowed?

Exactly this is the problem. In the theory, the GPL license allows the programmer to fork the kernel. That means to copy the sourcecode onto the own server and invite other people to modify the content. In the reality, nobody is doing so.

In contrast, normal propiatary software for example BSD Unix is forked very often Apple for example is based on the BSD kernel. It seems, that the GPL license results into a situation in which nobody will fork the code, especially because it's allowed in the license. But what the reason behind it?

Suppose somebody takes the Linux kernel as fulltext, puts it into a git repository and make some changes on it. Then he explains that the fork is licensed under a GPL license and everybody is allowed to download and change the code. The funny thing is, that this user would be the first one in the world who is doing so. That means, it's not sure what will happen next. if Linux is licensed under a GPL License why is no Linux fork available? Open Source activists are explaining to the world that Linux is the future. Ok, which Open Source activist group is powerful enough to fork the Linux kernel and show in reality what will happen?

How open is the GPL license?

Let us explain what the problem with a fork is, if it's done with normal copyright protected software. Suppose somebody takes the sourcecode from the Microsoft windows ooperating system, copies it into a github folder and invites other people to send a commit. The other user will clone the repository, create patches and commit it back to the github folder. From a technical side such a project is a great idea. That means, the programmer will improve the code a lot, fix all the bugs and the end user can download the next release.

Everybody who is familiar with the history of the computer industry knows what the real problem is. It's not the technical problem of create commits and push the result to the server but the problem has to do with the license, the copyright law, and that forking of copyright protected content is a form of redistribution. It's not very complicated to predict that forking the Windows sourcecode will produce a lot of trouble in theory and in reality as well. That is the reason why nobody is doing so.

And now let us imagine the same situation for the Linux kernel. Everybody knows that Linux is a different project. So it's allowed to create a git project publicly and commit changes to the server? I don't know. From a theoretical point of view, it's allowed because this is explained in the GPL license. But in reality, nobody has tried to do so in the past, so it's not clear if it's allowed or not. What we can say for sure, that coping the LInux sourcecode to an online repository and invite other people to commit patches is equal to fork a project. Forking is something which is discussed by the copyright law and if it's not allowed it will produce a lot of trouble.