The Free Software Definition
The Free Software Definition defines "free" not in terms of pricing but in terms of "free as in freedom". Free software is, therefore, a matter of liberty. To better understand the concept of free software, consider "free" in "free speech", not in "free meals".
The earliest published definition of the free software concept appears to be the February 1986 (vol. 1 no. 1) edition of FSF's now-discontinued GNU's Bulletin. The canonical source for the Free Software Definition can be found on GNU Project website's philosophy section. As of December 2008, the definition is published here in 38 languages. Basically, Free Software is defined by four kinds of freedom:
Freedom 0
The first kind of freedom is "The freedom to run the program, for any purpose." It means any person or organization can use free software on any computer system, for whatever purposes. Here, what matters is the purpose of the user, not of the developer. But if you distribute the software to someone else, you do not have the power to require your purpose on him or her; that person has all the freedom to use it for whatever purposes.
Freedom 1
The second kind of freedom is "The freedom to study how the program works, and adapt it to your needs." Placing practical or legal limitations on the modification or comprehension of a program (for example, mandatory special license purchase, Non-Disclosure-Agreement signing, or making popular way of editing and comprehending a program inaccessible) makes software proprietary, or non-free. If we are not free to modify or revise a program, we will remain at the mercy of one vendor.
Freedom 2
The third kind of freedom is "The freedom to redistribute copies so you can help your neighbor." You can copy and/or distribute software at practically no cost. The freedom to redistribute software must include executable or binary forms of the program and a source code for derivative and non-derivative versions. It is perfectly all right if an executable or binary form for some programs cannot be produced. However, you must redistribute these forms when you develop or find a means to make them.
Freedom 3
The fourth kind of freedom is "The freedom to improve the program, and release your improvements to the public, so that the whole community benefits." In order for the abovementioned freedoms to make meaningful changes, and for users to publish modified and improved versions, people need access to the program's source code. Thus, source code accessibility is an essential condition for free software.
