Friday, March 25, 2005

What is readable source?

What can be considered readable source code? What freedom do you have in expressing yourself and calling that source code?

The FSF defines the four basic freedoms of source code

I feel that freedom #1 "to study how the program works, and adapt it" to my needs is a more important basic freedom than freedom #3 for you to "improve the program, and release your improvements to the public, so that the whole community benefits".

Because the "improvement" could be to create derived works that preevent me from reading your improvement, this is what I term as uglified source code.

The GPL allows authors to distribute software that they are the sole author of that is uglified (not in the preferred form for editing) at will, with no punishment. At least the University of Saarlands is doing so with the stated reason of making it hard to read and understand. There is no limit to this is seems. Or is there?

Your creative expression in uglifing your software, distributing it the non preferred form for editing, can limit me from reading the source code.

This is bad in my opinion, and I would like to prevent that from happening to my software under the GPL, if I cannot prevent the proliferation of uglified code in general.

It also means that you should not be able to use my readable sources to create software that is not readable, This should be preventable by the GPL.

Freedom has its limits and there are some freedoms that are more important to the public interest than others.

The GPL in Section 3 states
"The source code for a work means the preferred form of the work for making modifications to it."
Would it be possible to modify the GNU public license to add definitions for uglified code? It seems to be impossible to prevent uglified code, but it should be possible to lay down some guidelines.

Here are some suggestions for some definitions, and they would not limit the creative expression of an author.

1. This code may not be uglified, except by the copyright holder. Uglified means it is generated by some automatic tool that changes the code that is edited by human. The results of the uglification process are not the preferred form of editing. The uglification process is done to take away the ability of a user of the software to read and understand the sources. If some tool is used to process the source, then all the inputs to this tool must be included and the tool must be also included. The uglification process is an automatic process where the original sources are not distributed and the uglifier software not distributed. the uglified source is a derived object and can be considered to be like a binary file.

2. This code may not be combined with uglified code, unless by the copyright holder of all parts. Users may not create derived works that include other peoples code with uglified to create a derived work.

Rational :

Because of problems with the university of Saarlands releasing uglified code under the gpl, code that was modified to be unreadable, I want to make sure that the software I write cannot be included in such a tool. The GPL does not prevent people from creating uglified code. But I should be able to prevent someone from adding obfuscated code with my code and creating a derived work.

I see this a conflict between the freedom to expression and the freedom to read and understand.

The original author of the software can distribute the original source in a obfuscated form, in a way that is automatically converted into something that is really hard to read and modify, and not even the preferred form of editing, there is nothing anyone can do against that.

When it is no longer the prefered form of editable source code, then it becomes a difficult issue because the copyright holder does not sue themselves for violation of the GPL.


Feedback :

Thanks to Alfred M. Szmidt (AMS) for his criticism and advice.

Thanks to S11001001 for pointing out that a new license might not even been needed : I dont even know if a new license is need, or if the GPL needs to be clarified in this case. But I do still want to tell you my idea, maybe it can be used to create a more watertight definition of preferred form of source in the GPL.

Thanks MarcusU from DotGNU for Spel Kheking.

References :
Rusty's thoughts on the claused in the GPL here.
This is also the topic of discussion in the LKML.
The debian policy makers have voted on the topic of the definition of source code here
This topic was discussed on debian legal as well in great detail.

The GCC supports VCG output, but it is also an issue that it is obfuscated
mentioned here
Look for example at vcg.1.30/src/step1.c for an example of the obfuscatoroutput. This is not source within the meaning of the GPL. A strict view
would say that given a GPLed program without full source, we cannot
distribute it at all; even with a less strict view that the authors
intended this version to be distributed, distributing a program without
proper sources from a *.gnu.org site seems dubious.

Loic Dachary Mentions that we are not allowed to apply the GPL to the VCG at all because it is obfuscated
I'm having a problem related to the distribution of VCG, aspublished at http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html. Although VCG is published under the GNU GPL, it contains obfuscated source code. As a result, I'm unable to redistribute it because I would violate the GNU GPL that states that the sources are defined as "the preferred form of the work for making modifications to it".