Software Libre
Introducción
¿Qué es el software libre? ¿Qué es y qué implicaciones tiene la licencia de un programa libre? ¿Cómo se está desarrollando el software libre? ¿Cómo se financian los proyectos de software libre, qué modelos de negocio se están experimentando relacionados con ellos? ¿Qué motiva a los desarrolladores, especialmente a los que son voluntarios, a involucrarse en proyectos de software libre? ¿Cómo son estos desarrolladores? ¿Cómo se coordinan en sus proyectos, y cómo es el software que producen? En resumen, ¿cuál es la panorámica general del software libre? Éste es el tipo de preguntas que trataremos de responder en este texto. Porque aunque el software libre está cada vez más en los medios de comunicación, en las conversaciones de los profesionales de la informática, e incluso empieza a estar en boca de los ciudadanos en general, aún es un desconocido para muchos. Y muchas veces los que lo conocen lo hacen sólo de algunos de sus aspectos, desconociendo completamente otros. Para empezar, en este capítulo vamos a presentar los aspectos específicos del software libre, centrándonos fundamentalmente en explicar sus bases para los que se aproximen al tema por primera vez, y en motivar su importancia. Entre estas bases nos detendremos en la definición del término (para saber de qué vamos a hablar) y en las consecuencias principales del uso (y la mera existencia) del software libre. También presentaremos otros recursos libres distintos del software y que han ido apareciendo, en parte, bajo el impulso y ejemplo de aquél.
El concepto de libertad en el software:
Desde hace más de 30 años nos hemos acostumbrado a que quien me vende un programa me impone las condiciones bajo las que puedo usarlo, prohibiéndome, por ejemplo, que se lo pase a un amigo. A pesar de ser software, no puedo adaptarlo a mis necesidades, ni siquiera corregir errores, debiendo esperar a que el fabricante los arre-gle. Esto no tiene por qué ser así, y es precisamente el software libre el que me concede las libertades que el software propietario me niega.
Definición
Así pues el término software libre (o programas libres) se refiere a libertad, tal como fue concebido por Richard Stallman en su definición. En concreto se refiere a cuatro libertades:
1. Libertad para ejecutar el programa en cualquier sitio, con cualquier propósito y para siempre.
2. Libertad para estudiarlo y adaptarlo a nuestras necesidades. Esto exige el acceso al código fuente.
3. Libertad de redistribución, de modo que se nos permita colaborar con vecinos y amigos.
4. Libertad para mejorar el programa y publicar las mejoras. También exige el código fuente.
Estas libertades se pueden garantizar de acuerdo con la legalidad vigente por medio de una licencia, como veremos en el capítulo 3. En ella se plasman las libertades, pero también restricciones compatibles con ellas, como dar crédito a los autores originales si redistribuimos. Incluso puede obligarnos a que los programas ajenos mejorados por nosotros también sean libres, promoviendo así la creación de más software libre. Así pues no estamos hablando de software gratuito, y el software libre se puede vender si se desea. Pero debido a la tercera libertad, cualquiera puede redistribuirlo sin pedir dinero a cambio ni permiso a nadie, lo que hace prácticamente imposible obtener dinero por distribuirlo, salvo la pequeña cantidad que se pueda cargar por grabarlo en un soporte físico y enviarlo, algo raramente demandado excepto para grandes volúmenes, como es el caso de las distribuciones. Se han formalizado definiciones más precisas de software libre, como es el caso notable de las directrices de la distribución Debian. En ellas se permite además que el autor exija que los códigos fuentes distribuidos no sean modificados directamente, sino que los originales se acompañen de parches separados y que se generen programas binarios con distinto nombre que el original. Además, exigen que las licencias no contaminen otros programas distribuidos en el mismo medio.
Términos relacionados
Equivalente a software libre es el término Open Source Software (‘programas de fuente abierto’), promovido por Eric Raymond y la Open Source Initiative. Filosóficamente, el término es muy distinto, ya que hace énfasis en la disponibilidad de código fuente, no en la libertad, pero su definición es prácticamente la misma que la de Debian. Este nombre es más políticamente aséptico y recalca un aspecto técnico que puede dar lugar a ventajas técnicas, como mejores
modelos de desarrollo y negocio, mayor seguridad, etc. Fuertemente criticado por Richard Stallman y la Free Software Foundation, ha encontrado mucho más eco en la literatura comercial y en las estrategias de las empresas que de una manera u otra apoyan el modelo. Otros términos relacionados de alguna manera con el software libre son:
• Freeware
Programas gratuitos. Normalmente se ceden en binario y con derechos de redistribución. Sin embargo, a veces sólo se pueden obtener de un sitio oficial, normalmente para promocionar otros programas o servicios, como es el caso de los kits de Java gratuitos que proporciona Sun Microsystems.
• Shareware
No es siquiera software gratis, sino un método de distribución, ya que los programas, generalmente sin fuentes, se pueden copiar libremente, pero no usar continuadamente sin pagarlos. La exigencia de pago puede estar incentivada por funcionalidad limitada o mensajes molestos, o una simple apelación a la moral del usuario, además de que las estipulaciones legales de la licencia podrían utilizarse en contra del infractor.
• Charityware, Careware Generalmente shareware, pero cuyo pago se exige para una organización caritativa patrocinada. En muchos casos, el pago no se exige, pero se solicita una contribución voluntaria. Algún software libre, como vim solicita contribuciones voluntarias de este tipo.
• Dominio público
El autor renuncia absolutamente a todos sus derechos, en favor del común, lo cual tiene que estar declarado explícitamente en el programa, ya que si no se dice nada, el programa es propietario y no se puede hacer nada con él. En este caso, y si además se proporcionan los códigos fuentes, el programa es libre.
• Copyleft
Un caso particular de software libre cuya licencia obliga a que las modificaciones que se distribuyan sean también libres.
• Propietario, cerrado, no libre
Términos usados para denominar al software que no es libre ni de fuente abierta.
Motivaciones
Como hemos visto hay dos grandes familias de motivaciones para el desarrollo de software libre, que dan lugar asimismo a los dos nombres con que se lo conoce:
• La motivación ética, abanderada por la Free Software Foundation, heredera de la culturahacker, y partidaria del apelativo libre, que argumenta que el software es conocimiento y debe poderse difundir sin trabas. Su ocultación es una actitud antisocial y la posibilidad de modificar programas es una forma de libertad de expresión Puede profundizarse en este aspecto en los ensayos de Stallman o en el análisis de Pekka Himanen.
• La motivación pragmática, abanderada por la Open Source Initiative y partidaria del apelativo fuente abierta, que argumenta ventajas técnicas y económicas, que repasaremos más adelante. Aparte de estas dos grandes motivaciones, la gente que trabaja en software libre puede hacerlo por muchas otras razones, que van desde la diversión a la mera retribución económica, que es posible debido a modelos de negocio sustentables. En el capítulo 4 se profundiza en estas motivaciones a partir de análisis objetivos.
Consecuencias de la libertad del software
El software libre trae consigo numerosas ventajas y pocas desventajas, muchas de ellas exageradas (o falseadas) por la competencia propietaria. De ellas la que más fundamento tiene es la económica, ya que como vimos no es posible obtener mucho dinero de la distribución y ésta la puede y suele hacer alguien distinto al autor. Es por ello por lo que se necesitan modelos de negocio y otros mecanismos de financiación, que se desarrollan en el capítulo 5. Otras, como la falta de soporte o la calidad escasa, están relacionadas con la financiación, pero además en muchos casos son falsas, ya que incluso software sin ningún tipo de financiación suele ofrecer muy buen soporte a través foros de usuarios y desarrolladores, y muchas veces tiene gran calidad.
Desarrollo temprano de Unix
Unix fue uno de los primeros sistemas operativos portables, creado originalmente por Thompson y Ritchie (entre otros) en los Bell Labs de AT&T. Su desarrollo ha continuado desde su nacimiento, hacia 1972, hasta hoy, con innumerables variantes comercializadas por literalmente decenas de empresas.
Durante los años 1973 y 1974, Unix llegó a muchas universidades y centros de investigación de todo el mundo, con una licencia que permitía su uso para fines académicos. Aunque había ciertas restricciones que impedían su distribución libre, entre las organizaciones que disponían de la licencia el funcionamiento fue muy similar al que se vio más tarde en muchas comunidades de software libre. Los que tenían acceso al fuente de Unix tuvieron un sistema que podían estudiar, mejorar y ampliar. Juntamente con él apareció una comunidad de desarrolladores, que pronto empezó a girar en torno al CSRG de la Universidad de California en Berkeley, y que desarrolló su propia cultura, que fue muy importante, como veremos más adelante, en la historia del software libre. Unix fue, hasta cierto punto, un ensayo temprano de lo que se vio con GNU y Linux varios años más tarde. Estaba confinado a una comunidad mucho más pequeña, y era necesaria la licencia de AT&T, pero en otros aspectos su desarrollo fue similar (en un mundo mucho menos comunicado). Con el tiempo, Unix fue también un ejemplo temprano de los problemas que podían presentar los sistemas propietarios que a primera vista tenían alguna característica del software libre. Durante el final de la década de 1970, y sobre todo durante la de 1980, AT&T cambió su política, y el acceso a nuevas versiones de Unix se convirtió en algo difícil y caro. La filosofía de los primeros años, que hizo