Discusiones sobre “estándares”, “software libre”, “software gratuito”, “portabilidad” y cuestiones afines se dan muy a menudo. En la mayoría de ellas puede apreciarse que existen grandes confusiones que involucran a estos términos.
Desde varios ámbitos (por ejemplo, el Proyecto GNU) se insiste hasta el hartazgo en marcar diferencias importantes (como la de “gratuidad” y “libertad“), pero esto no parece suficiente para aclarar el equívoco. Este es el por qué de mi pequeño aporte.
Gratuidad y libertad
Algunos programas libres son gratuitos y otros son pagos. Algunos programas privativos son gratuitos y otros son pagos.
Usualmente se habla de “software libre” o “software privativo” en términos demasiado amplios. En rigor, lo que es “libre” o “privativa” es la licencia bajo la cual se distribuye el programa.
Una licencia es “libre” si garantiza al poseedor del programa los siguientes derechos:
- Usar el programa, con cualquier propósito.
- Analizar cómo funciona el programa, y adaptarlo a sus necesidades.
- Distribuir copias del programa.
- Distribuir las modificaciones hechas al programa.
Es inmediato notar que la disponibilidad del código fuente (el programa escrito en un lenguaje comprensible por los programadores) es indispensable para el ejercicio de estos derechos. Por esto que muchas veces se denomina a los programas distribuidos bajo licencias libres, programas de “código abierto” (opensource).
Un punto importante es que ninguna de estas cuatro condiciones hacen referencia al valor de comercialización del programa, sino solamente a qué cosas le está permitido hacer a su tenedor.
Si la licencia bajo la cual se distribuye un programa limita o restringe de alguna manera cualquiera de estos derechos, se dice que es una licencia “privativa“, “propietaria” o “no libre” .
Un programa distribuido bajo una licencia “privativa” puede volverse “libre” con el sólo acto, por parte de su autor o autores, de cambiar sus condiciones de licenciamiento. La inversa no es cierta: si un programa es libre, por más que su autor decida cambiar las condiciones de licenciamiento, cualquier persona que haya recibido el programa anteriormente, tendrá el derecho a redistribuirlo bajo una licencia libre. (Esta situación se ha dado en numerosas oportunidades, ante el intento de empresas productoras de programas distribuidos bajo licencias libres para capturar a sus usuarios limitando sus derechos.)
Dicho esto queda en evidencia que un programa puede ser distribuido gratuitamente pero bajo una licencia privativa. Existe una gran cantidad de ejemplos de esta situación. Lo que muchas veces se presta a confusión es que la mayoría del software distribuido bajo licencias libres puede obtenerse de forma gratuita y, en los casos en que resulta oneroso, se está pagando por la distribución del software y no por la cantidad de computadoras en que se utilizará.
Otra fuente de confusión es la utilización del término “software comercial” como sinónimo de “software privativo“. Es incorrecto pensar que sólo las licencias privativas permiten hacer negocios, o que las licencias libres niegan esta posibilidad. A la luz de la realidad puede verse que muchas empresas obtienen muy buenas ganancias de la venta de software (y servicios derivados) bajo licencias libres. Lo único que las licencias libres no permiten lograr es el establecimiento de monopolios.
Estándares y pseudo-estándares
El uso no estandariza. Lo que estandariza es la definición pública como un estándar.
Un estándar es un modelo de referencia o patrón. Muchas veces se llama erroneamente “estándar” (o “estándar de facto“) a algo por el simple hecho de ser de uso común. Un protocolo, formato o lenguaje no puede considerarse estándar si no existe una especificación completa y pública del mismo (no puede utilizarse como referencia algo que no se conoce).
En palabras de la Organización Internacional para la Estandarización (ISO): Los estándares son diseñados para ser implementados.
El ejemplo más claro quizás sea el formato .DOC utilizado por el procesador de textos Microsoft Word. El hecho de que millones de personas utilicen este formato para almacenar y distribuir sus documentos de texto, podrán convertirlo en un formato de uso común, pero jamás en un estándar. No puede serlo porque nadie conoce cómo se representan los datos en este tipo de archivos. Es cierto que hay programas que leen y escriben en archivos .DOC, pero han sido construidos realizando “ingeniería inversa“, una técnica que no garantiza la corrección de los resultados y que está penada por la ley en varios países del mundo (por ejemplo, en los EE.UU.).
Sobre lenguajes de programación
Para obtener programas realmente libres deben usarse lenguajes estándares y herramientas libres.
De la misma manera que ocurre con los formatos de almacenamiento y los protocolos comunicación, un lenguaje de programación no puede ser considerado estándar si su especificación completa no está documentada públicamente.
Muchas veces se habla sobre la “gratuidad” de un lenguaje de programación. En términos estrictos, carece de sentido preguntarse si un lenguaje es o no gratuito. Lo que sí cabe preguntarse es si es estándar o no. Por ejemplo, C es un lenguaje estándar (es un estándar ANSI), en tanto que Visual Basic no lo es. Lo que puede ser o no gratuito (y además, ser o no libre) es un compilador o un entorno de desarrollo (IDE) para determinado lenguaje.
Aún en el caso de lenguajes estándares, para los cuales existen entornos de desarrollo libres, hay un aspecto más a considerar: el uso de bibliotecas (o librerías) privativas. El caso más conocido de este tipo de situación es el de Java. El compilador Java de Sun aunque es gratuito no es libre y, a pesar de que existen compiladores libres como el de GNU, dicha libertad se pierde si el programador utiliza las bibliotecas privativas que distribuye (también gratuitamente) la empresa Sun (por ejemplo swing o awt).
Portabilidad y múltiples plataformas
Un programa libre no puede estar arbitrariamente ligado a una plataforma. Uno privativo tampoco debería estarlo.
Un concepto por muchos olvidado es el de la portabilidad del software. Parece ser que los años y millones invertidos por varias empresas para “enganchar” a los programadores, convenciéndolos de usar extensiones no estándares de ciertos lenguajes de programación o, peor aún, herramientas y lenguajes totalmente cerrados y privativos han rendido sus frutos. Lamentablemente muchos programadores no se preocupan de que sus programas puedan ser desarrollados y modificados en distintas plataformas de software (sistemas operativos).
Sin embargo, la portabilidad sigue siendo una propiedad importante de un programa: ¿cuántas buenas piezas de software han quedado obsoletas al morir el sistema operativo para el que fueron desarrolladas? ¿cuántas otras han sobrevivido gracias a la posibilidad de ser fácilmente migradas a cualquier sistema operativo?
Software libre que requiere software privativo
Un programa no es totalmente libre si de alguna manera requiere de software privativo.
Es realmente una muy mala idea desarrollar software que será distribuido bajo una licencia libre, utilizando (o requiriendo) herramientas privativas. Esto generalmente guarda una estrecha relación con el tema tratado en la sección anterior: la portabilidad.
Pero no termina allí. Cuando un programador decide utilizar herramientas privativas para un desarrollo, o producir programas que sólo se ejecuten en determinado sistema operativo, está imponiendo a otros posibles desarrolladores (si hablamos de un programa libre) y a los posibles usuarios, su decisión.
En el caso de los desarrolladores, la propuesta será generalmente descartada: a quienes participamos de la comunidad del software libre no nos resulta para nada interesante un programa libre que requiera de software privativo para su desarrollo o ejecución (excepto para clonarlo y realizar un desarrollo 100% libre, si realmente presenta ideas interesantes).
Muchos usuarios, lamentablemente, no estarán alertados de la situación. Descargarán gratuitamente o, peor aún, pagarán por un programa que los obliga a utilizar otros programas privativos y entrarán (o sumarán otra presión para permanecer) en el mundo de las restricciones arbitrarias.
Compra-venta de software
Microsoft (y otros) no venden software.
Otro error muy común es creer que empresas como Microsoft y otras que distribuyen software bajo licencias privativas, venden software.
Al leer el contrato de licencia de los programas distribuidos por estas empresas puede verse que lo único que su poseedor adquiere son los CDs (el medio físico), los manuales y la licencia de uso. Allí está claramente establecido que el software (del que el comprador sólo recibe una versión binaria ejecutable) es propiedad de la empresa proveedora. Esto significa que lo que estas empresas venden son derechos de utilización de sus programas (licencias de uso no exclusivo).
De la única manera en que uno puede comprar un programa, es bajo los términos de una licencia libre. Si el tenedor no posee el derecho a usarlo como lo desee, a modificarlo y adaptarlo a sus necesidades y a distribuir a terceros los cambios realizados, entonces no ha comprado un programa: apenas ha pagado por el derecho a usarlo bajo determinadas condiciones.
Peor aún es cuando se afirma (y lo he oído de boca de un alto ejecutivo de Microsoft) que lo que su negocio es la venta de “propiedad intelectual“. Nada más lejos de la realidad: lo primero que estas empresas retienen y se aseguran por todos los medios es la propiedad intelectual de sus productos (a lo sumo, podrían decir que la están alquilando con reservas).
Las licencias libres y la obligación de compartir las modificaciones
No se contrae ninguna obligación al usar o modificar software libre.
Muchos creen, haciendo una mala lectura del cuarto derecho enumerado en la definición, que las licencias libres de alguna manera obligan a redistribuir las modificaciones que uno pudiera realizar al programa en cuestión. Esto ahuyenta, justificadamente, a las empresas que podrían beneficiarse de la adaptación de un programa libre pero no quieren compartir estos cambios con su competencia.
La realidad es que el tenedor de un programa libre tiene el derecho (y no la obligación) de distribuir el programa modificado. ¿Quiénes hacen uso de este derecho? Todos aquellos a quienes les interesa que las modificaciones sean revisadas, corregidas y quizás aumentadas por el resto de los programadores involucrados en el desarrollo del programa. ¿Quiénes no hacen uso de él? Quienes deseen obtener una ventaja competitiva respecto de su competencia basada en la utilización del programa modificado.
La confusión se hace aún mayor en el caso de la licencia GPL (la licencia libre más utilizada), ya que ésta sí obliga a la publicación de los cambios realizados, pero solamente en el caso en que el programa sea redistribuido. Esto significa que si alguien (persona o empresa) modifica un programa para uso propio está fuera del alcance de esta obligación.
Conclusiones
A mi juicio, la explicación de la generalización de estas confusiones tiene dos vías:
- Una multimillonaria inversión en marketing (a veces disfrazado de “educación“) de ciertas empresas ligadas a la venta de licencias de uso de software, que mediante mecanismos de distracción (y la confusión es uno de los más efectivos) intentan convencer a sus potenciales clientes de que afortunadamente no hay alternativa a sus exitosos productos y que el modelo de ventas de licencias es la base del desarrollo de la informática.
- El desinterés (muchas veces por comodidad) de gran parte de la comunidad informática (programadores y educadores, principalmente) que no prestan atención al impacto de sus elecciones en los derechos de sus clientes (y en los propios). Desafortunadamente, muchos toman a la ligera las cuestiones relacionadas con las formas de licenciamiento, la portabilidad, los estándares, y solo prestan atención a las bondades técnicas de un programa.
Por otra parte, el aumento de la cantidad de personas involucradas con el software libre y la difusión de estas ideas echa presión sobre muchas empresas que, paulatinamente, se ven obligadas a cambiar su modelo de negocio. Así es cómo Sun Microsystems ha tenido que cambiar la licencia de su sistema operativo Solaris y ha prometido la liberación completa de la plataforma Java.
Es mi deseo que cada día la confusión vaya cediendo para poder dejar atras los preconceptos y las confusiones que han impedido el avance de muchos aspectos de la informática, en favor del establecimiento de monopolios y del control de los usuarios de software.
Excelente artículo. Creo que no hay mucho más que aclarar, ya que está todo dicho.