We maintain this free software definition to show clearly what must be true
a particular software program for it to be considered free software.
``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
Free software is a matter of the users' freedom to run, copy, distribute,
study, change and improve the software. More precisely, it refers to four kinds
of freedom, for the users of the software:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and adapt it to your needs
(freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom
- The freedom to improve the program, and release your improvements to the
public, so that the whole community benefits (freedom 3). Access to the
source code is a precondition for this.
A program is free software if users have all of these freedoms. Thus, you
should be free to redistribute copies, either with or without modifications,
either gratis or charging a fee for distribution, to anyone
anywhere. Being free to do these things means (among other things) that you
do not have to ask or pay for permission.
You should also have the freedom to make modifications and use them privately
in your own work or play, without even mentioning that they exist. If you do
publish your changes, you should not be required to notify anyone in particular,
or in any particular way.
The freedom to use a program means the freedom for any kind of person or
organization to use it on any kind of computer system, for any kind of overall
job, and without being required to communicate subsequently with the developer
or any other specific entity.
The freedom to redistribute copies must include binary or executable forms of
the program, as well as source code, for both modified and unmodified versions.
(Distributing programs in runnable form is necessary for conveniently
installable free operating systems.) It is ok if there is no way to produce a
binary or executable form for a certain program (since some languages don't
support that feature), but you must have the freedom to redistribute such forms
should you find or develop a way to make them.
In order for the freedoms to make changes, and to publish improved versions,
to be meaningful, you must have access to the source code of the program.
Therefore, accessibility of source code is a necessary condition for free
One important way to modify a program is by merging in available free
subroutines and modules. If the program's license says that you cannot merge in
an existing module, such as if it requires you to be the copyright holder of any
code you add, then the license is too restrictive to qualify as free.
In order for these freedoms to be real, they must be irrevocable as long as
you do nothing wrong; if the developer of the software has the power to revoke
the license, without your doing anything to give cause, the software is not
However, certain kinds of rules about the manner of distributing free
software are acceptable, when they don't conflict with the central freedoms. For
example, copyleft (very simply stated) is the rule that when redistributing the
program, you cannot add restrictions to deny other people the central freedoms.
This rule does not conflict with the central freedoms; rather it protects them.
You may have paid money to get copies of free software, or you may have
obtained copies at no charge. But regardless of how you got your copies, you
always have the freedom to copy and change the software, even to sell copies.
``Free software'' does not mean ``non-commercial''. A free program must be
available for commercial use, commercial development, and commercial
distribution. Commercial development of free software is no longer unusual; such
free commercial software is very important.
Rules about how to package a modified version are acceptable, if they don't
substantively block your freedom to release modified versions, or your freedom
to make and use modified versions privately. Rules that ``if you make your
version available in this way, you must make it available in that way also'' can
be acceptable too, on the same condition. (Note that such a rule still leaves
you the choice of whether to publish your version at all.) Rules that require
release of source code to the users for versions that you put into public use
are also acceptable. It is also acceptable for the license to require that, if
you have distributed a modified version and a previous developer asks for a copy
of it, you must send one, or that you identify yourself on your modifications.
In the GNU project, we use ``copyleft'' to protect these freedoms legally for
everyone. But non-copylefted free software also exists. We believe there are
important reasons why it is better to use copyleft, but if your program is non-copylefted
free software, we can still use it.
See Categories of Free Software for a description of how ``free software,''
``copylefted software'' and other categories of software relate to each other.
Sometimes government export control regulations and
trade sanctions can constrain your freedom to distribute copies of programs
internationally. Software developers do not have the power to eliminate or
override these restrictions, but what they can and must do is refuse to impose
them as conditions of use of the program. In this way, the restrictions will not
affect activities and people outside the jurisdictions of these governments.
Most free software licenses are based on copyright, and there are limits on
what kinds of requirements can be imposed through copyright. If a
copyright-based license respects freedom in the ways described above, it is
unlikely to have some other sort of problem that we never anticipated (though
this does happen occasionally). However, some free software licenses are based
on contracts, and contracts can impose a much larger range of possible
restrictions. That means there are many possible ways such a license could be
unacceptably restrictive and non-free.
We can't possibly list all the ways that might happen. If a contract-based
license restricts the user in an unusual way that copyright-based licenses
cannot, and which isn't mentioned here as legitimate, we will have to think
about it, and we will probably conclude it is non-free.
When talking about free software, it is best to avoid using terms like ``give
away'' or ``for free'', because those terms imply that the issue is about price,
not freedom. Some common terms such as ``piracy'' embody opinions we hope you
won't endorse. See Confusing Words and Phrases that are Worth Avoiding for a
discussion of these terms. We also have a list of translations of "free
software" into various languages.
Finally, note that criteria such as those stated in this free software
definition require careful thought for their interpretation. To decide whether a
specific software license qualifies as a free software license, we judge it
based on these criteria to determine whether it fits their spirit as well as the
precise words. If a license includes unconscionable restrictions, we reject it,
even if we did not anticipate the issue in these criteria. Sometimes a license
requirement raises an issue that calls for extensive thought, including
discussions with a lawyer, before we can decide if the requirement is
acceptable. When we reach a conclusion about a new issue, we often update these
criteria to make it easier to see why certain licenses do or don't qualify.
If you are interested in whether a specific license qualifies as a free
software license, see our list of licenses. If the license you are concerned
with is not listed there, you can ask us about it by sending us email at
If you are contemplating writing a new license, please contact the FSF by
writing to that address. The proliferation of different free software licenses
means increased work for users in understanding the licenses; we may be able to
help you find an existing Free Software license that meets your needs.
If that isn't possible, if you really need a new license, with our help you
can ensure that the license really is a Free Software license and avoid various
Free Office Suite: OpenOffice.org is a
multiplatform and multilingual office suite and an open-source project.
Compatible with all other major office suites, the product is free to download,
use, and distribute. To help build the community, join us.
HTML-Kit - HTML-Kit is a
full-featured, highly customizable and free development environment that can be
used to create, edit, validate, preview and publish web pages and scripts.
- [an X11-style license] - PostgreSQL is a sophisticated Object-Relational DBMS,
supporting almost all SQL constructs, including subselects, transactions, and
user-defined types and functions. It is the most advanced open-source database
Dopi - Dopi is an application
that allows you to update the songs stored on your Apple iPod, similar to gtkpod.
It relies on my ipod-sharp library.
'AKFQuiz' lets you make your own quiz games, learning exercises or
psychotests. These can be used with grquiz in a graphical
environment, or with scrquiz on the text-console. There is also a
line oriented variant, linequiz, which can be used as a backend.
A CGI-variant, cgiquiz, can be installed on a Web server to offer
exercises via Internet or a local network. Or you can use mkquiz,
be published using any web-space provider.
- 'CrocoPat' is a tool for querying and manipulating relations. It is
easy to use because of its simple query and manipulation language based
on predicate calculus and its simple file format for relations. It is
efficient because it internally represents relations as binary decision
diagrams, a data structure that is well-known as a compact
representation of large relations. CrocoPat is general, because it
manipulates not only graphs (i.e. binary relations), but n-ary
granule - Pauker
is a generic flashcard program written in Java. It uses a combination of ultra-shortterm,
shortterm, and longterm memory. You can use it to learn all the things you never
want to forget, like vocabulary, capitals, important dates, etc
Axiom - Axiom is a
general purpose Computer Algebra system. It was originally created under the
name Scratchpad and has seen development at companies such as IBM and NAG. Axiom
provides a mature, powerful, strongly typed environment designed to enable
research into mathematical algorithms and theory. It is also useful for
engineering or scientific purposes.
'Flawfinder' looks through source code for potential security flaws in source
code by using a built-in database of C/C++ functions with well-known problems,
and providing a list of potential security flaws, sorted by risk, with the most
potentially dangerous flaws shown first. Risk level depends on both the function
and the values of the parameters of the function. It ignores text inside
comments and strings.
Ding - Ding is a
dictionary lookup program that uses the 'agrep' or 'egrep' tools for searching.
It comes with a German-English Dictionary with ca. 120,000 entries. It is a Tk
based Front-End to [ae]grep, ispell, or dict. 'Ding' can also search in English
dictionaries using 'dict' and check spelling using 'ispell.' Configuration
options include search preferences, interface language (English or German), and
G-Cows - G-Cows is a
command line tool designed to make the creation and updating of a web site
faster, more flexible and less prone to errors without relying on server-side
technologies (scripting languages, web server's extensions etc.).
HTML::Mason is a web site development and delivery system that constructs web
pages and sites from shared, reusable building blocks called components.
Components contain a mix of Perl and HTML, and can call each other and pass
values back and forth like subroutines. They increase modularity and eliminate
repetitive work. HTML::Mason is most powerful when used in conjunction with
mod_perl, but can be used in standalone applications as well.
- HTML_ToPDF takes the hassle out of generating a PDF file from a Web page. It
will convert any HTML document into a format that will look the same on any
platform and printer. It includes support for converting images, using the
stylesheets to customize the look of the PDF file, and error handling.
ASPSeek is an Internet search engine. It consists of an indexing robot, a search
daemon, and a CGI search frontend. It Supports Webspaces, which means that the
user can combine and perfrom searches within several Web sites simultaneously,
instead of browsing each site individually.
-Pagecast makes it easy to submit lists of URLs. It also has more advanced
features such as the ability to check the URL's for problematic conditions. It
is designed to be simple to use and effective at what it does.
|Copyright (C) 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc., 51 Franklin
St, Fifth Floor, Boston, MA 02110, USA. Verbatim copying and distribution
of this entire article (except the links) is permitted in any medium without royalty provided
this notice is preserved.
|Opinions expressed in this article are of the
author's only and should not be construed as an endorsement by