When we talk, in English, about `free software', there is a dangerous ambiguity, due to `free' meaning both `freedom' and `gratis'. Therefore, in this document, we will use mainly the term `open source' when referring to users freedom of use, redistribution, etc., and `gratis software' when referring to zero acquisition cost. The use of the Spanish and French word `libre', by the way, has been adopted in many environments to refer to open source software, but will not be used here for the sake of uniformity. Anyway, before going into more detail, it is a good idea to state clearly that open source software does not have to be gratis. Even more, it usually is not, or at least, not completely.
The main features that characterize free (open source) software is the freedom that users have to:
It is important now to make clear that we are talking about freedom, and not obligation. That is, users of an open source program can modify it, if they feels it is appropriate. But in any case, they are not forced to do so. In the same way, they can redistribute it, but in general, they are not forced to do so.
To satisfy those previous conditions, there is a fourth one which is basic, and is necessarily derived from them:
The source code of a program, usually written in a high level programming language, is absolutely necessary to be able to understand its functionality, to modify it and to improve it. If programmers have access to the source code of a program, they can study it, get knowledge of all its details, and work with it as the original author would.
Paradoxically, if this freedom is to be guaranteed for a given piece of software, with current legislation, it is necessary to ``protect'' it with a licence which impose certain restrictions on the way that it can be used and distributed (as it will be shown later). This fact causes some controversy in certain circles, because it is considered that these licences make the software distributed under them ``less free''. Another view, more pragmatic, is that software will be made more free by guaranteeing the perpetuation of these freedoms for all its users. Because of that, people holding this view maintain that it is necessary to limit the ways of use and distribution. Depending on the ideas and goals of the authors of a piece of code, they can decide to protect it with several different licences.