"Source code" is a computer program in its original, human readable form written in a computer programming language. To be executable this source code must be translated (compiled or interpreted) into non-human readable, computer machine code, also called object code.
The majority of end users never see the source code of programs that they run on their computers. Thus they are not able to see what these programs are doing on their computers or how their personal data is used by these programs.
Most likely you have heard or read about the terms Free Software, Proprietary Software, Open Source Software, Closed Source Software, Shareware, Freeware, etc. But what do all these terms mean? How are they different from one another, and what implications do these differences have to the security and privacy of your computers and personal data?
What is Free Software?
The creators/founders of the GNU Project - Free Software Foundation explain that:
“Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom, to show we do not mean the software is gratis.
We campaign for these freedoms because everyone deserves them. With these freedoms, the users (both individually and collectively) control the program and what it does for them. When users don't control the program, we call it a “non-free” or “proprietary” program. The nonfree program controls the users, and the developer controls the program; this makes the program an instrument of unjust power.
What is Proprietary Software?
Proprietary software, also called closed-source software, is a non-free computer software for which the developer or owner retains intellectual property rights exclusively.
Only the original owner of the software is legally allowed to view and modify the source code. Users of proprietary software must unconditionally trust them that there is no malicious code running on their computers and misusing their data.
A proprietary program puts its developers or owner in a position of power over its users. This power is in itself an injustice. The initial injustice of proprietary software often leads to further injustices: Malicious functionalities.
Some examples of malicious functionalities:
- Back doors: Any feature of a program that enables someone who is not supposed to be in control of the computer to send it commands. Examples: Spying, altering users data or settings, installing, deleting or disabling other programs.
- Digital Rights Management, or “DRM”: Functionalities designed to restrict what users can or can’t do with the data on their computers.
- Proprietary Incompatibility of a program with third party software that operates on the same data types. A fairly common sort of incompatibility is the use of secret formats or protocols. This directly blocks or hinders users from switching to any other program and, in particular, from switching to free software which can liberate the device the software runs on.
- Proprietary Surveillance: Collecting user data and sharing it with third parties.
- Proprietary Tethers: Tethering a product or program means designing it to work only by communicating with a specific server. That is always an injustice since it means you can't use the program without a connection to that server. It is also a secondary injustice if you can't communicate with the server in an alternative way. In some cases, tethering is used to do specific nasty things to the users: eBooks “bought” from Microsoft's store check that their DRM is valid by connecting to the store every time their “owner” wants to read them. When Microsoft closes this store, it will brick all DRM'ed eBooks it has ever “sold” unless they become generous enough to deactivate this aspect of the DRM code.
What is Freeware?
Freeware is closed source software available free of charge. ZERO $, but you aren't allowed to know exactly what this program, running on your computer is really doing with your data.
- Adobe PDF Reader
- Kik Messenger
- Google Chrome
What is Shareware?
Shareware is proprietary closed source software distributed free of charge to users, either with limited features or on a time limited trial basis. To use it after the time limit, you have to pay for the software.
Shareware limitation examples:
- Adware - Contains ads for generating revenue to developers
- Donationware - Offers optional payment option
- Nagware - Often begs users to pay for a licence to continue using the program
- Demoware - A feature limited demonstration version of the software
What is Open Source Software?
People very often confuse open source with free software. They are close, but not interchangeable. All Free Software is Open Source Software, but not all Open Source Software is Free Software.
Open source means you can see the source code, but without the free software aspect there can be restrictions on how you use the source code. Open source developers may let you look at the source code, but you may not be allowed to actually run binaries that are compiled from it: Look but don't touch, and don't run. You may also be allowed to build binaries, but only with limited features. Finally, and most important in practice, many products containing computers check signatures on their executable programs to block users from installing different executables; only privileged companies can make executables that can run on the device, or can access its full capabilities.
Many Android products contain non-free executables of Linux, even though its source code is under GNU GPL version 2.
The criteria for open source without the free software aspect are concerned solely with the licensing of the source code. Thus you can end up with non-free executables that was compiled from free and open source code.
Only Free Software gives users (not just the developer) ultimate control over the software and, subsequently, over their devices and data.