Thursday, July 26, 2018

On the question of licenses

Intro

Hi all. Today's topic is indirectly related to Java. I think it is not an overestimation that most people hate software licenses. I'm one of them. Every time I begin reading a license it makes my brain go crazy. Like this excerpt from the Gnu Gpl:
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
 All these "covered but not limited but complying with..." and "on your behalf or on your protection or ...". It must take several years to get comfortable with this language. 95% of the people in the world are not legal experts and cannot understand most of it. This is the main reason why these unpleasant things may happen. People may agree to anything because most of them do not read the terms and they do not read them because they are hard to understand.

I read some blog posts suggesting that AI may help with this. Like it will be scanning licenses and contracts for "bad" parts. The person who created this idea must have really disliked AI and AI developers. Even courts and judges have difficulties trying to understand the contracts and licenses and he or she wanted AI to handle it.

Solution

What is funny this problem does have a fairly easy solution. And this solution is well-known. Most programmers and also java programmers use this solution every day. It is (tense music in the background) INHERITANCE. Yes simple plain old inheritance. Even Java-style inheritance will do. Licenses must get rid of the old model when every license contains all the provisions, information that is necessary to use it. Licenses for concrete products must inherit well-known licenses like Java classes. So instead of the brain-depressing text above the Gnu Gpl could look like this:
If someone is presented with this structure he or she can clearly see everything he or she needs. And the mind-boggling text is not necessary. If someone wants to use the product he or she sees it is free (inherited from "Free Software License" which means no payment necessary). If someone wants to use it as part of a commercial product he or she sees that this license is non-commercial (inherited from "Non-commercial free software license") and cannot be used for this purpose. If someone wants to know the specifics he or she can read any of these texts to find out.

Explanation

With this scheme everybody gets what they want. The legal experts still have those mind-boggling texts. The texts do not go away and the current legal system doesn't need to change their ways much by incorporating AI to read the texts with them. The users get a clear explanation of the license they can understand.

This scheme is based on some assumptions. First there should be well-defined "abstract" licenses like abstract Java classes which define the basic terms. For example there could be an abstract license for  proprietary software and free software. These abstract licenses are organized in hierarchies. The provisions of the licenses higher in the hierarchy cannot be overridden by the licenses lower in the hierarchy. It is like all the methods/fields of the abstract classes are final. If two provisions contradict each other the provision from the license higher in the hierarchy is used.

Sounds really simple. Why has nobody used this solution before? I don't know. For unknown reasons the judicial system uses the one-license-has-all approach. It is like they work in Java without inheritance always writing the same code even though they need to change only one line. The people in the software world at least understand why writing the same code many times is bad and they came up with the idea of standard licenses like GNU GPL, Apache which people can use if they need it. While it is a good idea it falls short of a comprehensive solution to this problem.
Inheritance could be that solution.

No comments:

Post a Comment