Está en la página 1de 4

Libre pero encadenado. La trampa del Java.

por Richard Stallman

Nota
En diciembre de 2006 Sun est en pleno relanzamiento de su plataforma Java bajo la GPL de GNU. Cuando este cambio de licencia haya terminado, esperamos que Java ya no sea una trampa. A pesar de eso, el problema general descrito aqu seguir siendo importante, porque cualquier biblioteca no libre o plataforma de programacin puede causar un problema similar. Debemos aprender una leccin de la historia del Java, para poder evitar otras trampas en el futuro.
12 de abril de 2004 Si su programa es software libre, bsicamente es tico pero hay una trampa de la que debe estar atento . Su programa, aunque en s mismo libre, puede estar limitado por software no libre del que dependa. A da de hoy este problema es notable, sobre todo, en los programas en Java, por lo que lo llamamos la trampa del Java. Un programa es software libre si sus usuarios tienen ciertas libertades esenciales. Sin entrar en detalles, stas son: la libertad de usar el programa, la libertad de estudiar y modificar el cdigo fuente, la libertad de distribuir el cdigo y los binarios, y la libertad de publicar versiones mejoradas (vase http://www.gnu.org/philosophy/free-sw.es.html). Que un programa dado sea software libre depende nicamente de los trminos de su licencia. Que el programa se pueda usar en el mundo libre, por la gente que quiere vivir en libertad, es una pregunta ms compleja. Esto no lo determina la licencia del propio programa, porque ningn programa funciona aislado. Todos los programas dependen de otros programas. Por ejemplo, un programa necesita ser compilado o interpretado, as que depende de un compilador o un intrprete. Si es compilado a byte code, depende de un intrprete de byte code. Adems, necesita bibliotecas para ejecutarse, y tambin puede invocar a otros programas aparte que se ejecutan en otros procesos. Todos estos programas son dependencias. Las dependencias pueden ser necesarias para que el programa pueda ejecutarse, o pueden ser necesarias solamente para ciertas funciones. En cualquier caso, todo o parte del programa no puede funcionar sin las dependencias.

Si algunas de las dependencias de un programa no son libres, entonces todo o parte del programa no se puede ejecutar en un sistema completamente libre es inusable en el mundo Libre. Ciertamente podemos distribuir el programa y tener copias en nuestras mquinas, pero eso no sirve de mucho si no podemos ejecutarlo. El programa es software libre, pero en la prctica est encadenado por sus dependencias no libres. Este problema puede suceder en cualquier tipo de software, en cualquier lenguaje. Por ejemplo, un programa libre que solamente funcione sobre Microsoft Windows es claramente inusable en el mundo Libre. Pero el software que funciona sobre GNU/Linux tambin puede ser intil si depende de otro software no libre. En el pasado, Motif (antes de que tuviramos LessTif) y Qt (antes de que sus desarrolladores lo hicieran software libre) fueron importantes causantes de este problema. La mayora de las tarjetas grficas 3D solamente funcionan a pleno rendimiento con controladores no libres, que tambin originan este problema. Pero hoy, la mayor fuente de este problema es Java, porque la gente que escribe software libre a menudo cree que el Java es sexy. Cegados por su atraccin por el lenguaje, descuidan el problema de las dependencias y caen en la trampa del Java. La implementacin del Java de Sun no es libre. Las bibliotecas estndar del Java tampoco son libres. S que tenemos implementaciones libres del Java, como el compilador de Java de GNU (GCJ) y Classpath de GNU, pero todava no tienen todas las funcionalidades. Estamos intentando alcanzarlas. Si usted escribe un programa en Java sobre la plataforma Java de Sun, est expuesto a usar funcionalidades exclusivas de Sun sin ni siquiera darse cuenta. Para cuando se d cuenta, quizs las haya estado usando durante meses, y rehacer el trabajo le tomara ms meses. Podra decir volver a empezar es demasiado trabajo. Entonces su programa habr cado en la trampa del Java; ser inusable en el mundo Libre. La manera fiable de evitar la trampa del Java es tener en su sistema solamente una implementacin libre del Java. As, si usted usa una funcionalidad o biblioteca del Java que el software libre todava no soporta, se dar cuenta en seguida, y podr reescribir ese cdigo de inmediato. Sun contina desarrollando bibliotecas estndar del Java adicionales, y casi todas son no libres; en muchos casos, incluso la especificacin de la biblioteca es un secreto comercial, y la ltima licencia de Sun para esta especificacin prohbe publicar nada que sea menos que una implementacin completa de la especificacin (vase http://jcp.org/aboutJava/

communityprocess/JSPA2.pdf yhttp://jcp.org/aboutJava/communityprocess/final/jsr 129/j2me_pb-1_0-fr-spec-license.html, para encontrar ejemplos). Afortunadamente, la licencia de esa especificacin permite publicar una implementacin como software libre; a otros que reciban la biblioteca se les permite modificarla y no se les exige adherirse a la especificacin. Pero el requisito tiene el efecto de prohibir el uso de un modelo cooperativo de desarrollo para producir la implementacin libre. El uso de ese modelo implicara la publicacin de versiones incompletas, que aquellos que han ledo la especificacin no estn autorizados a hacer. En los primeros das del Movimiento del Software Libre, era imposible evitar depender de programas no libres. Antes de que tuviramos el compilador de C de GNU, todos los programas en C (libres o no) dependan de un compilador de C no libre. Antes de que tuviramos la biblioteca de C de GNU, todos los programas dependan de una biblioteca de C no libre. Antes de que tuviramos Linux, el primer ncleo libre, todos los programas dependan de un ncleo no libre. Antes de que tuviramos Bash, todos los scripts de shell tenan que ser interpretados por un intrprete de rdenes no libres. Era inevitable que nuestros primeros programas estuvieran afectados al principio por estas dependencias, pero lo aceptamos porque nuestro plan inclua su posterior rescate. Nuestra meta final, un sistema operativo GNU autosuficiente, inclua sustitutos libres para todas estas dependencias; si alcanzbamos la meta, todos nuestros programas seran rescatados. Y as sucedi: con el sistema GNU/Linux, ahora podemos ejecutar estos programas en plataformas libres. La situacin hoy es diferente. Tenemos potentes sistemas operativos libres y muchas herramientas libres de programacin. Cualquier trabajo que usted quiera hacer, lo puede hacer en una plataforma libre; no hay necesidad de aceptar una dependencia no libre ni siquiera temporalmente. La principal razn por la que la gente cae hoy en la trampa es porque no piensan en ello. La solucin ms fcil al problema de la trampa del Java es ensear a la gente a no caer en ella. Para mantener su cdigo Java a salvo de la trampa del Java, instale un entorno de desarrollo del Java libre y selo. De forma ms general, cualquiera que sea el lenguaje que use, mantenga sus ojos abiertos, y compruebe el estado de libertad de los programas de los que dependa su cdigo. La manera ms fcil de verificar que un programa es libre es buscarlo en el Directorio de Software Libre. Si un programa no est en el directorio, puede comprobar si su licencia est en la lista de licencias de software libre.

Estamos intentando rescatar a los programas en atrapados en el Java, as que si a usted le gusta el lenguaje Java, le invitamos a ayudar en eldesarrollo de GNU Classpath. Tambin es til probar sus programas con el compilador (GJC) y GNU Classpath, e informar de cualquier problema que encuentre en clases ya implementadas. Sin embargo, finalizar GNU Classpath tomar tiempo; si se siguen aadiendo ms bibliotecas no libres, nunca podremos tener todas las ltimas. As que, por favor, no encadene su software libre. Cuando escriba una aplicacin, escrbala para que funcione desde el principio sobre componentes libres.

Vase tambin:
The Curious Incident of Sun in the Night-Time
http://www.gnu.org/philosophy/java-trap.es.html

También podría gustarte