18 de ago. de 2010

Oracle, Google y las Patentes de Software

Oracle debe ser una de las empresas más odiadas en este minuto, algunos de los temores existentes respecto a la adquisición de Sun se están haciendo realidad o al menos eso parece. Una demanda contra Google por Android y la cancelación de OpenSolaris da para muchas artículos, puntos de vista, rabias, enojos e interpretaciones, como lo que viene a continuación.
Para entender lo que está pasando hay que tener claros los conceptos que están en juego, confundirlos es fácil y hace que rápidamente se puedan sacar conclusiones equivocadas: Un dato por aquí, desconocimiento por allá, sumado a experiencias personales, grandes dosis de suposición y Salfateismo están causando más tormenta de lo que el caso se merece.  Aunque no niego que sea entretenido.

Los dos pilares fundamentales de todo este asunto son las licencias y las patentes:  Una licencia es un contrato entre el poseedor de los derechos sobre una tecnología y quien la va a utilizar. En esta licencia se establecen los limites de los derechos cedidos por el propietario original.  Cualquiera puede inventar una licencia, pero hacerla valer es otra historia, sobre todo si estamos hablando de hacerla valer en una corte.  Ya que se trata de un contrato, si uno se pone creativo y no tiene los conocimientos de derecho suficientes, es muy probable que termine con una licencia inútil, igual que un contrato con vacíos legales.  Para evitar este problema, existen licencias que uno puede reutilizar, licencias que ya se han probado en la corte y son bastante conocidas, lo que ayuda a entender qué tipo de contrato se está estableciendo.  En el mundo del software libre tenemos licencias como la famosa GPL, pero también se han creado casos especiales como MPL (Mozilla Public License) y MS-PL (Microsoft Public License).
El otro aspecto en juego son las patentes.  Básicamente una patente es una protección sobre una idea. Se trata de una constancia de que una persona u organización ha inventado algo.  La idea original era proteger la innovación, para que aquellos que invirtieran en investigación lograran tener el privilegio de usar su invención sin que otro la copiara y le quitara los beneficios a su creador.  Hasta ahí todo bien, pero el problema es que las patentes pueden ser muy ambiguas y quien las registra en la práctica no necesariamente es quien ha creado la idea.  Es así como encontramos patentes por ideas obvias, o patentes que cubren invenciones que no pertenecen a quien hizo el registro de esa patente.

El licenciamiento de Java


El caso de Oracle contra Google es una combinación de ambos factores.  Aunque el lado legal se ha llevado a través de las patentes, hay un problema de licenciamiento histórico sobre la tecnología Java.  La idea de Java es permitir que el código fuente y el código compilado se pueda usar en cualquier dispositivo que implemente una máquina virtual de Java.  Para garantizar esta portabilidad, tanto el código fuente como el código compilado debe seguir un estándar, y en este caso era Sun quien definía ese estándar.
Para poder usar el nombre de Java (licencia), Sun tenía que dar su aprobación sobre las distintas implementaciones de la tecnología.  Algo parecido a lo que vemos hoy con Google sucedió en los ‘90 cuando Microsoft comenzó a crear una versión divergente de Java.  Se trataba de una implementación que generaba una dependencia con Windows, el viejo truco de torcer un estándar para que los las aplicaciones y usuarios quedaran dependientes de una plataforma, convirtiéndose en un estándar de facto.  En esa oportunidad, Sun hizo valer sus licencias y Microsoft tuvo que retirar su implementación de Java y pagar una buena compensación.
Lo que hizo Google no se aleja tanto de lo que hizo Microsoft en su momento, sólo cambia el tipo de licenciamiento establecido para la tecnología Java.  En los tiempos del conflicto con Microsoft, el licenciamiento de Java era bastante restringido, con penas del infierno a quien se alejara de la linea de Sun.  Pero a partir del 2006, Sun cambia el licenciamiento del código de Java a GPLv2, lo que facilitó la inclusión de Java en sistemas operativos de código abierto, pero complicó el entendimiento de los derechos de Sun sobre la tecnología.
El licenciamiento de Software Libre/Código abierto como GPL no significa que el poseedor de los derechos sobre el software los pierda, sólo da libertades de uso suficientes para que el software evolucione y se propague libremente.  No siquiera esto tiene que ver con un tema de precios, de hecho licencias como GPL están pensadas para que se puedan usar comercialmente.  Son varios los productos que hoy utilizan software con licencias GPL, si lo quiere confirmar, revise la documentación incluida con los aparatos que compra.


Google y las patentes sobre Java


Si Google hubiese usado el código de Sun para Android no estaríamos discutiendo este tema, ya que la licencia GPL lo permite.  El problema es que Google utilizó la tecnología de Sun a su propio antojo, se trata de una tecnología propia, compatible con Java pero que en realidad no es Java, o al menos no es lo que Sun establecía como Java, y es ahí donde entramos al terreno de la violación de patentes.  Google no está usando el código de Sun, lo que está haciendo es crear un producto propio que hace cosas similares a lo creado por Sun, en otras palabras está aprovechándose de una invención que Sun ya tiene patentada.
Esto no tiene nada que ver con que Java sea o no de código abierto ¿Entonces por qué Google dice que están atacando al código abierto? Basta darse una vuelta por blogs y foros para ver el efecto de las palabras de Google en la comunidad.
El lío en que está metido Google es complejo, Oracle está pidiendo nada menos que  la destrucción de todo lo que tenga que ver con Android.  El problema es que Google es sólo el creador de la tecnología, y ésta hace rato que traspasó los límites de la compañía.  Para quienes crean que Oracle es malvado, deben saber que este es un tema que Sun ya tenía en sus manos, pero no estaba en una situación de enredarse en un lío judicial con otro gigante.  Una vez traspasada la propiedad a Oracle, los bolsillos son mucho más holgados.
Durante las negociaciones entre Oracle y Sun, uno de los atractivos era justamente la posibilidad de llevar un juicio contra Google, hecho confirmado por James Gosling el creador de Java, por lo que no es de extrañar que sabiendo esto haya dejado la compañía rápidamente tras la adquisición:
"Oracle finalmente inicia una acción legal por patentes contra Google.  No es de sorprender.  Durante las reuniones de fusión entre Sun y Oracle, donde se discutió el tema de la situación de patentes entre Sun y Google, pudimos ver brillar los ojitos de los abogados de Oracle.  Establecer jucios por patentes nunca estuvo en el código genético de Sun."


Las patentes y el código abierto, o no tanto


El problema de las patentes no es menor.  Normalmente no sucede nada porque existen tantas patentes que las grandes empresas tienen un gran arsenal, y la respuesta puede ser igual de contundente.  Se puede decir que cualquier tecnología puede estar violando patentes, ya lo vimos recientemente con el caso de VP8 y los codificadores de video.
Uno de los que seguramente no se sorprendió con este tema es Miguel de Icaza, fundador del proyecto GNOME y Mono, la implementación libre de .NET.  A principios de la década, hubo una gran discusión respecto a la introducción de tecnologías de Microsoft cubiertas por patentes, y uno de los argumentos en contra era que Java estaba libre de este problema.   En ese entonces Miguel básicamente decía que pensar eso era iluso y que el riesgo estaba en todos lados.  Irónicamente Microsoft nunca ha aplicado sus patentes contra Mono, o al menos no en la corte, y fue Oracle quien lanzó la primera bomba.
El código abierto no está en peligro, para eso tendría que morir mucha gente.  El problema está en la confianza o inocencia de Google para jugar con fuego sin sospechar que la propiedad de Java caería en manos poderosas.  Lo que está haciendo Oracle parece ser de matones, pero sólo está reclamando lo que el sistema legal norteamericano le permite.  Por mientras, Oracle sigue usando y produciendo código abierto, inclusodando productos gratuitos aunque sean cerrados, eso contradice cualquier argumento de que el tema está relacionado con el código abierto.

Articulo orginal:

2 comentarios:

BI FACIL dijo...

Pero... ¿Qué patente se ha violado exactamente?

¿Han hecho algo que hace el compilador de Java de una manera diferente a cómo la hace Java?

Y "eso" que Java hace de esa manera, ¿No lo hacen también otros frameworks, antes y después de Java?

No entiendo que se pueda patentar algo así...

Lo único que veo claro en este litigio es que los grandes beneficiados serán los abogados de Google y de Oracle... y no los usuarios o terceras empresas...

Rémi Grossat dijo...

Hola,

Yo no soy programador y menos de java, por lo que intento contestar a tu pregunta de la forma que he entendido.

Java es de Sun, y Google usa Java para su dispositivo Android. Al ser un dispositivo movil, Google modifica la maquina Java para que vaya mas rápido, infringiendo la patente de Java (como el caso microsoft virtual java).

Mientras que hagas un framework usando Java, no hay problema, porque "el compilador" no lo tocas.

Para hacer el símil, es como si instalas un juego en Windows, no modificas Windows, pero si lo usas. Si modificas el código fuente de Windows y lo vendes con tu propio nombre (pepedows), Microsoft te demandaría al minuto 1.
Aquí pasa lo mismo.