The core principle of Free Software is that people who use software
retain certain freedoms, unlike the situation with proprietary
software in which all of the freedom associated with the software
remains with the vendor. Those are the Four Freedoms:
A program is free software if the program’s users have the four essential freedoms:
- The freedom to run the program as you wish, for any purpose (freedom 0).
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
Without other resources, these freedoms are pretty academic. Let’s
take access to a computer as a given for the purpose of this argument:
you’re one of “the program’s users”, so presumably you have the
material needed to use the program.
But does the program need all the resources it uses?
I can study and modify the program. Access to the source code is
indeed a prerequisite; comprehensible source code is also a
prerequisite. So are the study materials I need to comprehend the
source code, and the time it’ll take me to do that study.
So that’s me on the receiving end of free software, what about the
producing end? Nothing in the world of free software compels me to
choose the simplest language, to design my software for
comprehensibility, nor to make available the tools and information
needed to understand the source code that enables the other
freedoms. But unless I do that, the four freedoms are only
hypothetical.
0th freedom. You don't even need to be owner the computing resources used by the software to run it; nowadays, most software is run on servers in the cloud, far from the users' reach and control. The Affero GPL tries to address this problem but of course, very incompletely: the user is left with the freedom to get the source of some program that alledgedly would perform the same function as the server he was enticed to use. So that's a good thing for the user: he can check the program does what was announced, and run it on his own computing hardware. But this doesn't imply the server he was enticed to use in the first place, and that he may still have to use for networking or access to other hidden resources, runs the same program or doesn't do any immoral things with the data the user provides (ie. spying on the user's private data and communications, infering private information about the user, determining his geolocation, and launching killing drones after him, etc). That's why it's very important to have and exercise freedom 0. 1st freedom. But of course, you are right, that even for a programmer, exercising the 1st freedom is often difficult. How long would it take to read and understand the sources of Android (30 GB!)? It's been told that Google sources (excluding Chrome and Android sources) are 2 billion L.o.C. That would be about 80 GB! So indeed, even for the producer of the sources, size and understandability of the source code is a problem. It is addressed by Alan Kay at VPRI. http://vpri.org/ https://www.youtube.com/playlist?list=PLFGwvw1jHU_S1Sas5cYngDq16mk7O0H2a Only Lisp has natively the tools to deal with this complexity problem: the lisp macro. OMeta parser and compiler generators are how they add metalinguistic abstraction to a non-lisp programming language. Notice that Richard. M. Stallman is a lisp programmer. The notion of having a readable and small source would have been obvious to him… Or course, your argument about having the notions to understand source code, whatever its structure, and the abstractions it defines still remains, and in a sane society, this is what school and education would be about. I would also note that the forces that prevent you to produce short and readable code in the first place, are the same forces that wouldn't benefit from the user being able to have access and understand how the software their produce abuses them.
That may indeed be the thing: RMS was in the position of being a programmer in a programming community with advanced tools, so to him it was natural that people would be able to understand code. I’m also with you entirely on the cloud’s interaction with Freedom 0. I’ve had colleagues here say that free software “won” because of Android and Chrome/Firefox – except that Android is mostly not free and these are just used as hosts for proprietary (mostly JavaScript) code talking to trade secret server platforms.