Lably
Skip to content

The Free Software Definition

Free Software Foundation policy document defining free software

  • 3 min read
  • 3 chapters

Explore on Lably

ToursExplore Lably’s 3D tours

The earliest known publication of the definition appeared in the February 1986 edition of the now-discontinued GNU's Bulletin published by the FSF. Since 1996, the official version of the document has been maintained in the philosophy section of the GNU Project website. As of March 2025, the definition had seen 27 major revisions since it was originally published online and it had been translated into 65 languages. The FSF also publishes a list of licenses that meets this definition.

The Four Essential Freedoms

The definition published by the FSF in 1986 originally listed two key points:

The word "free" in our name does not refer to price; it refers to freedom. First, the freedom to copy a program and redistribute it to your neighbors, so that they can use it as well as you. Second, the freedom to change a program, so that you can control it instead of it controlling you; for this, the source code must be made available to you.

In 1996, when the GNU Project website was launched, the definition was expanded to include "three levels of freedom", explicitly adding the freedom to study the software (which had been implied in the original). Stallman later discouraged describing them as "levels," noting that all freedoms are equally essential.

A fourth freedom was later introduced to explicitly affirm the user's right to run the program. Because it was seen as more fundamental than the others, it was placed first. Since the existing freedoms were numbered one through three, this new one was designated "freedom zero". Such zero-based numbering, where counting begins at zero, is also a common convention in computer programming.

The modern definition states that a program is free software if it grants users the following 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 to make it do what you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help others (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.

Freedoms 1 and 3 require source code to be available, as studying and modifying software without source code is impractical.

Sign in to keep reading

2 more chapters are free with a Lably account.

More in Computing and communication