domingo, 15 de agosto de 2010

La nueva trampa de Java

[ Este artículo es una copia del que se encuentra en Radar Libre ]

La demanda iniciada por ORACLE contra Google donde se argumenta que el sistema operativo Android viola patentes propiedad de ORACLE, muestra una debilidad de lo que usualmente muchos en la comunidad (incluyendome) consideramos software libre.

Desde que Sun Microsystems liberó la mayor parte del código de la plataforma Java, este asunto ha pasado por debajo de la mesa, pues las implementaciones que se utilizan son: la original, y alguna que otra licenciada directamente del propietario.

En un debate ocurrido hace un lustro, sobre El uso de Java en el Plan Nacional de Migración a Software Libre, Simon Phipps argumentaba que Sun Microsystems era una compañía amigable, que había prometido liberar el código y que estaba trabajando para ello.

En aquel momento mi argumento fue que las corporaciones no tienen alma, sentimientos o lealdad, que son básicamente actores de guerras que solo obedecen a motivos económicos y que verlas de cualquier otra manera era un riesgo que que el Estado no debería correr.

Después de un lustro y luego de la desaparición Sun, al ser adquirida por ORACLE, quedó demostrado que Simon Phipps probablemente tenía razón, Sun finalmente liberó lo que pudo de Java y nunca aplicó tarifas al licenciamiento de la plataforma, sin embargo yo también tenía razón: las corporaciones no tienen alma y ahora que Sun fue tragada por ORACLE se lanza al ataque en contra de quien pueda rendirle beneficios.

Este ataque es hoy posible gracias a un arma secreta que Sun mantenía en su arsenal: "Patentes de Software", para evitar suspicacias como las que siempre han rodeado a Mono, Sun emitió una liberación de uso de dichas patentes para cualquier implementación de  Java, siempre y cuando la implementación incluyera todas las características y servicios de la plataforma y no se incluyera ninguna característica o servicio adicional, es decir que para evitar una demanda de propiedad intelectual por patentes el distribuidor debía asegurarse de:

implementar toda la plataforma y solo la plataforma

Aquí es donde Google cayó en la trampa porque al parecer no incluyó AWT y Swing que son parte integral de la especificación.

Sin embargo lo peligroso de todo este asunto no es la demanda de ORACLE a Google, que puede presentar una buena pelea judicial al estilo SCO, Novel e IBM, sino que la trampa ahora es mucho más sutil (pero no menos potente), ya no basta que un código sea GPL versión 2 para que sea realmente libre.

En los términos establecidos por la liberación de derechos de uso de las patentes de Sun se coarta la libertad 3, que da el derecho a modificar el código y redistribuir el resultado de la modificación, porque Oracle va a demandar por violación de patente al quedar fuera de la protección de la liberación de derechos de uso de patentes, independientemente de lo que diga la GPLv2.

Así que en realidad aunque la mayoría del código de la plataforma Java sea libre por derecho, de hecho no es libre porque ORACLE puede utilizar otros instrumentos para ejercer coacción sobre cualquiera que intente modificar la plataforma, y por lo tanto no cumple con el espíritu del decreto 3390, por ello debe prohibirse nuevamente el uso de esta plataforma en el Estado hasta que se aclare esta situación o se libere Java bajo la licencia GPL versión 3 que incluye protección legal contra las patentes.

Finalmente en un tono más personal deberíamos hacer un esfuerzo coordinado por dejar de consumir productos ORACLE para que la corporación aprenda por la única vía posible: su cuenta bancaria, que jugar con la libertad puede resultar peligroso y dañino.

Dejar de consumir productos de esta infame comañía no es difícil, casi cualquier cosa que se esté haciendo con su manejador de base de datos, se puede hacer con PostgerSQL y todo el resto de sus productos son bastante malos, incluyendo el lenguaje de programación Java (no la plataforma) así que en general, dejar de usar productos ORACLE se puede considerar de entrada como una ventaja competitiva.

3 comentarios:

  1. Lo que no me gusta es lo del 'lustro', me hace sentir viejita!!! ;).

    Pienso en la canción: '...el tiempo pasa y nos vamos poniendo viejos...'.

    Por cierto, me incribí en el gym. Así que podemos seguir comiendo el helado que nos de la gana!!!!!. Hoy es un buen día!!!!.

    ResponderEliminar
  2. Épale!: Dices que Java es un lenguaje pobre pero no la plataforma, te pregunto, ¿no son los dos inseparables?.
    No me parece viable desentenderse de Java (ni la plataforma ni el lenguaje) dada la enorme cantidad de software que se cree libre que se ha hecho encima, aún cuando comparto tu interés en no "consumir" Oracle, todavía me parece que ofertas tales como Android valen la pena. Parece mucho a la historia de GTK versus Trolltech and QT; no tengo clara una posición.

    Una observación: Cuando Microsoft, que es más maligna, intentó un "embrace&extend" con J++ Sun le puso freno con recursos tales como los que Oracle usa hoy contra Google. Por cierto, en mi opinión la "libertad" en software u otras cosas no es un asunto estático sino dinámico; me refiero a que bien pudiera ser más libre una plataforma cuyo desarrollador preserve la capacidad de retaliar contra usuarios para defender las libertades (tal como Sun hizo contra Microsoft), por supuesto, si el proveedor se reserva privilegios que pueden ser usados en contra de los usuarios, es un riesgo contra las libertades que tiene que ser manejado. Un poco el espíritu de GPL es usar un mecanismo legal desarrollado para restringir libertades (copyrights) para alcanzar el objetivo opuesto; pero la defensa de libertades no tiene que detenerse allí; por ejemplo, no me preocupa que Linus Torvalds se reserve ciertos privilegios acerca de Linux; tal parece que la pregunta de si usar algo o no tiene que ser vigilado atentamente y aceptar la ineficiencia de usar múltiples opciones en paralelo para disuadir proveedores de intentar "bait & switches", así es como se maneja el riesgo.

    ResponderEliminar
  3. Eddie: aunque Java es el lenguaje para el que se diseñó la plataforma, hay muchos otros lenguajes que funcionan allí, la plataforma tiene un valor que transciende el del lenguaje, porque hay muchas herramientas y librerías que pueden ser útiles.

    Lenguajes como Scala, Clojure, Groovy, Bigloo, JRuby y Jython, entre otros, demuestran que la plataforma puede ser versátil para la implementación de nuevos lenguajes.

    Curiosamente para mi, las mejores herramientas y lenguajes de la plataforma han sido aportadas por la comunidad, y Sun solo ha servido para interponerse en el proceso de innovación, por eso es que el CLR le lleva una morena en ventajas.

    Lo lamentable es que la comunidad no se haya dedicado a desarrollar algo que compita con estas dos plataformas, se me ocurre que Parrot pudo haber sido pero no fué, LLVM quiere ser pero todavía le falta y es como de muy bajo nivel, y no se que paso HLVM.

    La mitad del tiempo estamos viendo como comenzar con la arquitectura ideal, cuando en realidad se debe partir de algo más funcional, por ejemplo: si Perl6 se hubiera implementado sobre SBCL, ya tendría al menos 3 o 4 años en el mercado, en una plataforma muy eficiente para las arquitecturas más populares.

    Ya a estas alturas, prefiero aprender LISP para usar algo que me funcione bien SBCL, que esperar a que los panas terminen Parrot, afortunadamente en el software libre hay plenitud de opciones: SBCL, CLISP, Haskell, OCaml, Erlang, Python y Perl son solo algunas de las mejores.

    ResponderEliminar