Dos gigantes del software se enfrentan en los juzgados desde hace dos semanas: Oracle ha demandado a Google por infringir algunas de las patentes relacionadas con la plataforma Java, de la que la primera es propietaria. El sistema operativo Android de Google está construido en base a dicho lenguaje, que es inherentemente libre. Sin embargo, determinadas características de la plataforma están sujetas a licencias que supuestamente Google ha obviado durante el desarrollo de Android. Como consecuencia, Oracle pide a Google indenmizaciones por valor de (atención) 1 billón de dólares por los perjuicios causados. Este interesante y palomitero caso puede sentar un horrible precedente para el mundo del desarrollo de software y la innovación en general. Por eso muchos medios siguen día a día el litigio, y resulta un escenario tan complejo que todavía es muy pronto para decidir hacia qué lado se inclinará la balanza.
Pero empezemos por el principio...
Java es un lenguaje de programación creado originalmente por Sun Microsystems a principios de los 90. Una de las características principales es que es multiplataforma, es decir, el software escrito en Java puede funcionar en cualquier dispositivo sea cual sea su arquitectura. Sin duda, uno de los lenguajes más utilizados en la actualidad. Entre diciembre de 2006 y mayo de 2007 Sun liberó la mayor parte de su tecnología Java con una licencia GNU GPL:
" La Licencia Pública General de GNU es una licencia creada por la Free Software Foundation orientada principalmente a proteger la libre distribución, modificación y uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios. "
Sun también fue la responsable de la creación de otras tecnologías libres usadas ampliamente como el sistema gestor de bases de datos MySQL o la suite ofimática OpenOffice. Una empresa cuyo fin era la innovación y que confiaba en que la monetización llegaría con la implantación y uso extendido de dichas tecnologías y de la necesidad de continuo soporte. Debido a la naturaleza de esta filosofía combinada con una mala estrategia comercial, Sun Microsystems es finalmente adquirida por Oracle en 2009 en una operación de aproximadamente 7.400 millones de dólares.
Por otro lado, Oracle Corporation es una de las mayores compañías de software del mundo. Hasta tal punto que se la considera el proveedor mundial líder de software para administración de información. Su filosofía es totalmente opuesta a la de Sun: su estrategia comercial reside en la exclusividad, las patentes y el software cerrado y propietario. Es una compañía cuya aportación a la innovación tecnológica ha sido siempre en beneficio propio y nunca ha puesto demasiado empeño en la implantación de estándares abiertos y libres. Y este mismo camino es por el que quieren llevar también a Java. Curioso, ya que Java siempre se ha sustentado en las aportaciones de terceros y de la propia comunidad, en lo que se conoce como el Java Community Process, ayudando a mejorar y adaptar el lenguaje.
Sin ir más lejos, el pasado año, Oracle retiraba la licencia DLJ (Operating System Distributor License for Java) la cual permitía, desde 2006, integrar Java con cualquier distribución de Linux. La comunidad respondió al ataque mejorando y perfeccionando su propia implementación: OpenJDK, ya en su versión 6, siendo suficientemente madura para poder prescindir, casi por completo, de la dependecia de Oracle.
Más cosas: Android, es un sistema operativo móvil basado en Linux creado por Google. Su código fue liberado en gran parte bajo la licencia Apache, una licencia libre y de código abierto. El sistema se ha vuelto tan popular que actualmente es el más utilizado en telefonía móvil inteligente, estando disponible en multitud de soportes de diferentes fabricantes. Todas las aplicaciones Android están escritas en Java y Google pone a disposición de los desarrolladores el API del sistema con el que los mismos pueden construir sus propias aplicaciones para Android sin ningún tipo de restricciones.
Un API (Application Programming Interface) es una especificación que permite la comunicación entre componentes software. Los desarrolladores utilizan las APIs como herramientas para crear aplicaciones sin tener por qué conocer la tecnología, lenguaje o arquitectura existente detrás de un sistema. Intentaré poner un ejemplo en el mundo real:
- Un cliente de una panadería no tiene por qué saber cual es el proceso de fabricación del pan (de hecho, ni siquiera lo ve), va a la panadería, lo compra y siempre resulta ser el mismo producto. Si un día cambian el horno o la máquina que prepara los ingredientes, el cliente no tiene por qué saberlo. El API (en este caso el panadero) es siempre la misma persona y el tipo de comunicación que se establece entre ambos también lo es.
Como decía, la capa de aplicación de Android está escrita en Java y utiliza APIs del lenguaje que al parecer sí estarían sujetas a algún tipo de licencia según su nuevo propietario. Debido al espectacular éxito de Android, Oracle ve una jugosa oportunidad para quedarse con un buen pedazo del pastel. Y es más sangrante pensar que la supercompañía no ha tenido absolutamente nada que ver en ni en el desarrollo de Java ni en el de Android y puede empezar a lucrarse de dos proyectos pensados desde un princpio como libres.
Jonhatan Schwarts, ex CEO de Sun ha afirmado, en calidad de testigo de la defensa, que nunca le pidieron a Google que pagara las licencias de las diferentes APIs de Java ya que no estaban protegidas. La situación cambió cuando la compañía fue comprada por Oracle. Google empezó a verle las orejas al lobo y creó una serie de librerías, clases y funciones que emulaban el comportamiento de las APIs de Java (Apache Harmony) pero con la seguridad de que estas últimas fuesen totalmente open-source (código abierto). Oracle, ofendida, arrancó una demanda en 2010 acusando a Google de que habían estado copiando la "estructura, secuencia y organización" de 37 de las mismas y los de Mountain View se defienden sosteniendo que las APIs no deberían ser objeto de copyright.
¿Y qué es lo que ha pasado con esa licencia GPL libre de Java? Pues se supone que la sigue conservando, y además dice que lo que se distribuya bajo dichas reglas debe ser tratado como un todo, y que solamente las partes que se ofrezcan de manera separada y que razonablemente no tengan conexión directa con el resto de la funcionalidad básica pueden ofrecerse bajo otro tipo de licencias propietarias. Los programas Java no pueden funcionar sin hacer uso de librerías y especificaciones de interfaces (APIs), entonces es evidente que esas especificaciones pertenecen al mismo conjunto y no se pueden patentar.
Independientemente de las posibles sanciones a Google, la situación ha trascendido tanto que el juez instructor William Alsup se ha reservado el derecho a decidir si un API es objeto de copyright o no, respaldado por la fascinante ley que permite patentar ideas en EEUU. Esto es así porque en el fondo, las APIs no son trozos de código, sino una especificación, una manera de hacer las cosas. Más cercano al concepto de estándar que a un producto en sí mismo. Recordemos que hace cosa de un año, la Oficina de Patentes concedía a Apple los derechos reservados sobre el "slide unlock", que representa el gesto táctil que hacemos en nuestro iPhone/iPod/iPad si queremos desbloquear la pantalla. Consiste básicamente en pulsar un punto de la pantalla y desplazar el dedo hacia la derecha. Es decir, que cualquier dispositivo en el que la pantalla se desbloquee con el mismo gesto podrá ser objeto de demanda. Esto es una cosa tan disparatada como si a Henry Ford le hubiesen concedido la patente sobre el uso de la rueda en los automóviles.
Establecer el precedente de que un API de un lenguaje de programación se pueda patentar podría cambiar todo el ecosistema legal en el desarrollo de software. Los lenguajes de programación dejarían de ser herramientas de uso general para convertirse en productos sujetos a los designios de sus propietarios, propiciando que tanto plataformas, sistemas y soportes tengan que pagar por determinadas licencias.
Temblando nos tienes, Oracle.