Código Abierto y Software Libre
Marzo 1 de 2.005
Por Óscar Andrés López.
Mi intención es aclarar de una vez por todas, si el software libre (free software) y el software de código abierto (open source software) son, en la práctica, "la misma cosa". Manifiesto desde este punto que considero que sí existen diferencias entre los dos conceptos, pero son de índole filosófico e ideológico, no práctico.
Empecemos con algunas definiciones. La Free Software Foundation (FSF) define software libre [1] a partir de las cuatro libertades que el software debe garantizarle a sus usuarios (opté por dejar estas y otras definiciones en su versión original para evadir el problema de las malas traducciones):
(Libertad 0) The freedom to run the program, for any purpose. (Libertad 1) The freedom to study how the program works, and adapt it to your needs. Access to the source code is a precondition for this. (Libertad 2) The freedom to redistribute copies so you can help your neighbor. (Libertad 3) The freedom to improve the program, and release your improvements to the public, so that the whole community benefits. Access to the source code is a precondition for this.
Por su parte, la Open Source Initiative (OSI) define una 'meta-licencia', una licencia que indica claramente qué criterios debe reunir otra licencia para ser considerada de software de código abierto [2]:
Introduction Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria: (1) Free Redistribution The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale. (2) Source Code The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed. (3) Derived Works The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software. (4) Integrity of The Author's Source Code The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software. (5) No Discrimination Against Persons or Groups The license must not discriminate against any person or group of persons. (6) No Discrimination Against Fields of Endeavor The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research. (7) Distribution of License The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties. (8) License Must Not Be Specific to a Product The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution. (9) License Must Not Restrict Other Software The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software. (10) License Must Be Technology-Neutral No provision of the license may be predicated on any individual technology or style of interface.
Estudiando con detenimiento estas dos definiciones, se puede ver que para cada una de las cuatro libertades del software libre corresponde uno de los criterios del software de código abierto, así:
- La (Libertad 0) es equivalente al criterio (6)
- La (Libertad 1) es equivalente al criterio (2)
- La (Libertad 2) es equivalente al criterio (1)
- La (Libertad 3) es equivalente al criterio (3)
Alguien podría argumentar que dichas libertades y criterios no son equivalentes entre sí. Reitero, aquí estamos hablando de diferencias prácticas. ¿Aún no convencidos?, entonces intenten responder estas preguntas: ¿qué puedo hacer con un producto de software libre, que no pueda hacer con un producto de software de código abierto? y su converso ¿qué puedo hacer con un producto de software de código abierto, que no pueda hacer con un producto de software libre? Estas preguntas deben responderse para el caso general, sin utilizar características propias de una licencia en particular, sin usar argumentos ideológicos ni filosóficos y proporcionando un ejemplo concreto. Si las diferencias prácticas entre software libre y software de código abierto fueran fundamentales, las preguntas serían muy sencillas de responder.
Podemos apoyarnos en un elemento más para continuar con esta discusión. La FSF mantiene una lista oficial de licencias de software libre [3] en donde detalla las licencias (a) libres y compatibles con la GPL, (b) libres pero incompatibles con la GPL y (c) definitivamente, no-libres. De igual manera, la OSI tiene un listado de licencias certificadas como de software de código abierto [4]. Analicemos estas listas.
A simple vista, se aprecia que la mayoría de las licencias de software libre aparecen en la lista de software de código abierto y que la mayoría de licencias de software de código abierto aparecen en la lista de software libre. Es decir, la mayoría de licencias aparecen en ambas listas. La sub-lista más interesante es la (c), las licencias que la FSF definitivamente considera como no-libres. Algunas licencias en esta lista no aparecen en la lista de la OSI, muy notablemente la "Microsoft's Shared Source License". Esta es una excelente oportunidad para aclarar conceptos; algunas personas equiparan el software de código abierto a la iniciativa de código compartido de Microsoft, lo cual es completamente erróneo. En el sitio de la OSI hay un artículo que reseña este punto [5]. El último caso que encontramos, es el de las pocas licencias que aparecen en la sub-lista (c) y que sí se encuentran en la lista de la OSI, por ejemplo, la "Reciprocal Public License". Si se fijan en las razones por las cuales la FSF no las considera como licencias de software libre, verán que son tecnicismos poco relevantes, que no van en contra de ninguno de los diez criterios del software de código abierto, pero que sí imponen algunas condiciones adicionales que hacen que sean rechazadas por la FSF. Siendo pragmáticos, vemos que no son condiciones fundamentales.
En conclusión, desde el punto de vista práctico, el software libre y el software de código abierto son equivalentes entre sí, las diferencias entre ambos son puramente ideológicas y filosóficas.
[1] http://www.gnu.org/philosophy/free-sw.html
[2] http://www.opensource.org/docs/definition.php
[3] http://www.gnu.org/licenses/license-list.html
[4] http://www.opensource.org/licenses/index.html
[5] http://www.opensource.org/docs/sharedsource.php
El contenido del material publicado por nuestros columnistas es responsabilidad de sus autores.
Para saber más sobre la programación y naturaleza de nuestros artículos, columnas y pistas técnicas, haga clic aquí.