Filosofía
La Trampa de Java

Si su programa es Software Libre, éste es ético en principio —pero aún así, puede haber una trampa de la que debe cuidarse.
Su programa, aunque en sí mismo sea libre, puede estar restringido por software no libre del que depende. Dado que hoy se destacan por estar en esta situación los programas escritos en Java, llamaremos a esto la Trampa del Java.
Un programa es Software Libre si sus usuarios disponen de ciertas libertades cruciales. Groseramente, estas son:La libertad de ejecutar el programa, la libertad de estudiar y modificar los fuentes, la libertad de distribuir copias de los fuentes y binarios, y la libertad de publicar versiones mejoradas. (Ver http://www.gnu.org/philosophy/free-sw.html).
Que un programa sea libre depende solamente de la forma en que se licencia su uso. Que el programa pueda ser usado en el Mundo Libre, usado por personas que desean vivir en libertad, es una cuestión más compleja. Esto no es determinado por la licencia del programa, porque ningún programa funciona aislado. Cada programa depende de otros programas.
Por ejemplo, un programa necesita ser compilado o interpretado, de manera que este depende de un compilador o un intérprete. Si se compila a ’byte code’, este depende de un intérprete de ’byte code’. Más aún, necesita librerías para poder correr, e incluso podría también invocar otros ejecutables separados que corran en otros procesos. Todos esos programas generan dependencias. Las dependencias pueden ser necesarias solo para ciertas operaciones, o pueden impedir que el programa incluso logre ejecutarse.
Si alguna de las dependencias del programa es no libre, esto implica que parte o incluso todo el programa no podrá correr en un sistema totalmente libre —significa que no funcionará en el Mundo Libre.
Seguramente podríamos redistribuir el programa, y tener copias en nuestras máquinas, pero eso no serviría de mucho si el programa no se puede ejecutar. El programa es Software Libre, pero este está limitado en su libertad por sus dependencias no libres.
Este problema puede ocurrir con cualquier tipo de software, en cualquier lenguaje. Por ejemplo, un programa libre que solo corre en Microsoft Windows, es claramente inútil en el Mundo Libre. No obstante, software que ejecuta en GNU/Linux puede también ser inútil si depende de otro software no libre.
En el pasado, Motif (antes de que tuvieramos LessTif) y Qt (antes de que sus desarrolladores lo liberaran) fueron las mayores causas de este problema. La mayoría de las tarjetas de video 3D operan totalmente con drivers no libres, lo que tambien causa este problema.
Con mucho, la mayor fuente de este tipo de problemas los sufre Java en la actualidad, porque la gente que escribe Software Libre a menudo siente que Java es sexy. Ciegos por su atracción al lenguaje, minimizan el tema de las dependencias y caen en la Trampa de Java.
La implementación Java de Sun no es Software Libre. Blackdown tampoco es Software Libre, sino que se trata de una adaptación del código de Sun. Las librerías standard de Java tampoco son libres. Tenemos implementaciones libre de Java, como el compilador Java de GNU y el de GNU, pero estos aún no poseen la totalidad de las funcionalidades.
Aún estamos tratando de implementarlas.
Si Ud desarrolla un programa Java sobre la plataforma Java de Sun, Ud es incluso litigable por usar las funcionalidades propias de Sun, aunque no se haya dado cuenta. Para el momento en que Ud pueda darse cuenta, puede haber estado usándolas por meses, y rehacer el trabajo puede tomar mas meses aún. Ud podría decir ’Es demasiado trabajo para recomenzar de vuelta’. Es entonces cuando su programa habra caído dentro de la Trampa de Java, ya que no podrá ser usado en el Mundo Libre.
La manera segura de evitar la Trampa de Java es tener solo una
implementación libre de Java en su sistema. Entonces, si Ud usa
una característica o librería de Java que el Software Libre todavía no soporta, se dará cuenta de inmediato, y podrá reescribir ese código inmediatamente.
Sun continúa desarrollando librerías adicionales "standard" para Java, y la mayoría de ellas son No Libres, y en muchos casos, incluso las especificaciones de las librerías son secretos comerciales, y la última licencia de Sun para esas especificaciones prohiben el release de una implementacion completa de la especificación. (Ver http://jcp.org/aboutJava/communityprocess/JSPA2.pdf y http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html)
Afortunadamente, la licencia de la especificación permite liberar una implementación como Software Libre; a los que reciben la librería les está permitido cambiarla sin que les sea requerido adherir a la especificación.
Pero el requerimiento tiene el efecto de prohibir el uso de un
modelo de desarrollo colaborativo para producir la implementación libre. El uso de ese modelo podría imponer publicar versiones incompletas, que aquellos que han leído la especificación no tienen permitido.
En los primeros dias del Movimiento del Software Libre, era imposible evitar depender de programas No Libres. Antes de tener el compilador de C GNU, cada programa C (libre o no) dependía de un compilador C No Libre. Antes de tener la librería de C GNU, cada programa dependía de una librería C No Libre. Antes de tener a Linux, el primer kernel Libre, cada programa dependía de un kernel No Libre.
Antes de tener Bash, cada script de shell tenía que ser interpretado por un shell No Libre. Era inevitable que nuestros primeros programas fueran inicialmente limitados por esas dependencias, pero lo aceptamos porque nuestro plan incluía rescatarlos a posteriori. Nuestra meta final, un sistema operativo GNU autosuficiente, incluía reemplazos Libres para todas esas dependencias, si alcanzabamos la meta, todos nuestros programas serían rescatados. Así sucedió, con el sistema GNU/Linux, ahora podemos ejecutar esos programas en plataformas Libres.
La situación es diferente en la actualidad. Ahora tenemos potentes sistemas operativos libres, y muchas herramientas libres de programación. Cualquiera sea el trabajo que desee hacer, puede hacerlo en una plataforma Libre, no hay necesidad de aceptar una dependencia no libre, ni siquiera en forma temporaria. La razón principal por la que la gente cae en la trampa hoy es porque no estan pensando en ello. La solución más fácil al problema de la Trampa de Java es enseñar a la gente a no caer en ella.
Para mantener su código Java fuera de la Trampa de Java, instale un entorno Libre de desarrollo Java, y úselo. Mas generalmente, sea el que fuere el lenguaje que use, mantenga sus ojos abiertos, y chequee el estatus de Libre de los programas de los que dependa su código. La manera más fácil de verificar qué programa es libre, es buscándolo en el Free Software Directory: (http://www.fsf.org/directory). Si el programa no está en el directorio, entonces debe verificar su(s) licencia(s) comparándolas con la lista de licencias de Software Libre: (http://www.gnu.org/licenses/license-list.html).
Estamos intentando rescatar los programas Java atrapados, de manera que si le gusta el lenguaje Java, le invitamos a ayudar en el desarrollo de una Classpath GNU, y reportar cualquier problema que encuentre en clases ya implementadas, esto tambien es útil. Finalizar la Classpath GNU tomará tiempo, y si más librerias No Libres continúan siendo agregadas, nunca tendremos las últimas. Entonces, por favor no ponga a su software libre en apuros. Cuando escriba un programa de aplicación hoy, escríbalo para que corra sobre facilidades libres desde el principio.
Copyright 2004 Richard Stallman
Verbatim copying and distribution of this entire article are permitted worldwide without royalty in any medium provided this notice is preserved.
Traducción:
11 Abril 2004 Gerardo Díaz <gerardo.diaz@gmail.com>
Por favor, envíe sus comentarios y preguntas sobre este documento a SOLAR info@solar.org.ar
También puede contactarse con SOLAR por otros medios, ver en
http://www.solar.org.ar
Envie enlaces rotos y otras correcciones (o sugerencias) a inet@solar.org.ar
Copyright 2004 SOLAR Software Libre Argentina. Se permite la distribución y la copia literal de este artículo en su totalidad y por cualquier medio siempre y cuando se conserve esta nota.
NOTA DE ACTUALIZACION 14/XI/2006
Martin Olivera
molivera en solar.org.ar
Lun Nov 13 15:22:07 CET 2006
[Solar-general] JAVA ES LIBRE ! (y GPLv2)
Bueno, habrá que ver muuuchos detalles finos, pero finalmente y como se venía anunciando, parece que ahora Java (estandar, movial y enterprise) son _libres_ y GPL, con distintas excepciones, timeframes y etc. Habrá que mirar con lupa, pero si está todo como corresponde, el Software Libre ha "forzado la cerradura" de la Trampa de Java
Principios de SOLAR
Estatuto de la Asociación
Cómo colaborar
Listas de correo
Noticias

Canal IRC - #solar en freenode
¡Nuevo!
Sistema SOLAR
Los días 4 y 5 de diciembre se llevará a cabo el evento Agenda Digital: Gobierno en Red 2012-2015. Convocado por la Subsecretaría de Tecnologías de Gestión, el mismo tendrá lugar en Paseo Colón 301, Ciudad Autónoma de Buenos Aires. Durante la primera jornada el foco estará puesto sobre las (...)
¡Se alinearon los planetas! ¡Se viene el Media Party! Llegan tres días de charlas, workshops y un hackatón en Buenos Aires, Argentina, en un evento que promete hacer historia. Hacks/Hackers Buenos Aires convoca a periodistas, editores, programadores de software, diseñadores y emprendedores a (...)
¡Aquí estamos, arrancando con los preparativos para otra jornada de CheBlender! Este año se realizará un encuentro en la ciudad de Buenos Aires (el 7 y 8 de septiembre), y otro un mes más tarde en la ciudad de Córdoba. Se suma orgullosamente a nuestras tareas el equipo de graficalibre.org y la (...)
Hackathon Express 2012 El próximo sábado 30, de 9 a 21, se realizará en las instalaciones de la Facultad de Ciencias Exactas Naturales y Agrimensura (calle 9 de julio Nº1449 de la ciudad de Corrientes) el Primer Encuentro de Desarrollo Colectivo de Software Hackathon Express 2012. Las (...)
La Ministra de Industria Débora Giorgi respondió una Carta Abierta de la agrupación Software Libre con Cristina que fuera referenciada por medios nacionales como Pagina/12 y La Nación. En su respuesta Giorgi sustuvo que para este gobierno el Software Libre es una Política de Estado y remarcó (...)
SOLAR - Software Libre Argentina: Solar en las Jornadas de Software Libre y Economía Social de la UNTREF
Pensamiento de Mediodía: kernels Linux para testeo en Musix 3.0, realtime
Matixba: Puedo
Matixba: Puedo
Pensamiento de Mediodía: Besame mucho
FORSOL » Formosa Software Libre: FLISOL FORMOSA 2013
FORSOL » Formosa Software Libre: Software Libre en Turismo “Formosa Destino Accesible”
>>Contenido bajo licencia de Documentación Libre FDL<<
(salvo expreso en el artículo)
Envia tus comentarios al Equipo Inet
