Google vs. Oracle

En este texto te explicaremos que son las API y por qué son tan  importantes para la interoperabilidad en la tecnología. El caso Google vs. Oracle

El software está protegido por derechos de autor o copyright (hay diferencias entre derechos de autor y copyright pero no relevantes para este caso). Una excepción a los derechos de autor es el fair use, uso justo o uso honesto.

Según la demanda, Google copió interfaces de programación de aplicaciones (API) de su código Java, unas 11.500 líneas, para desarrollar su sistema operativo Android. Esas líneas de código están protegidas por copyright, ¿Pero hubo uso honesto?

“El tribunal explica que Google usó unas 11.500 líneas del código Java de Oracle para la creación de Android, pero que fue un uso legítimo y por ende Oracle no tiene derecho a recibir una compensación. Tras más de 10 años, la máxima autoridad judicial de los Estados Unidos ha concluido en favor de Google”, explica Xataka.

La sentencia, así, ayuda a afirmar una práctica de larga data en el desarrollo de software, detalla CNN. “Pero el Tribunal se negó a opinar sobre la cuestión más amplia de si las API son protegidas por derechos de autor”.

Oracle argumentó que la conducta de Google arruinaría la industria del software al hacer que los desarrolladores no puedan ser pagados por su trabajo, cuando otros usaran su código fuente, los datos del programa.

Análisis de la sentencia y el caso de las API

 

Por Pwn All The Things *

Supongamos que un programador  escribe una buena y rara aplicación para los usuarios, que es un juego que se ejecuta en una PC o notebook con Windows.

El nuevo juego tiene todo tipo de objetos 3D hechos de triángulos chicos. Un problema que quizá tengas es que hay muchos triángulos de tamaño muy chico y por ende vas a necesitar una tarjeta gráfica para ayudarte, por lo que el juego pinta muy bien.

Pero acá encontrarás un problema: hay cientos de tarjetas gráficas diferentes. La interfaz diferente entre todas las tarjetas gráficas serán una pesadilla para la compatibilidad.

Incluso si se pudiera resolver el problema de interactuar con las tarjetas que están en el mercado ahora, eso no le ahorra para las tarjetas gráficas que se lanzarán mañana.

 

Las API como solución para el problema de la interoperabilidad

Deberán implementarse  tarjetas gráficas hipotéticas futuras, y eso es imposible. La solución para este problema de (in)compatibilidad de hardware y software son las API.

En lugar de programar la aplicación para que se comunique con las posibles actuales y futuras GPU, se escribe la aplicación para comunicar con una API, probablemente una establecida por el fabricante del sistema operativo. En este caso probablemente sea DirectX.

En su aplicación, se escribe una solicitud a DirectX. Algo como “Hola, dibujá estos triángulos”. La tarjeta gráfica también se comunicará con DirectX y le dirá “Sé dibujar triángulos”. DirectX simplemente conecta las dos juntas para emparejarlas, para igualarlas.

Solamente le pedimos a DirectX que dibuje triángulos. La lógica de implementación detrás de cómo puede suceder, cambia drásticamente de una tarjeta gráfica a otra.

Pero la solución básica tiene el mismo formato para cada uno. El formato de la solicitud básica es la API. La que soluciona el problema de comunicación.

Las API también asumen un papel completamente nuevo cuando se trata de ingeniería de plataforma y compatibilidad de aplicaciones. Y aquí es donde el caso Google vs. Oracle realmente cambia las reglas del juego.

Supongamos que ya no somos desarrolladores de juegos, sino  desarrolladores de plataformas. Nuestro trabajo es hacer que el juego funcione * en un sistema operativo diferente *. Un buen ejemplo de esto es el proyecto WINE, que le permite ejecutar muchos programas de Windows en sistemas operativos que no son Windows.

Es importante destacar que no tenemos control sobre la aplicación. Ni siquiera tenemos su código fuente. Ese juego es solo una enorme masa binaria de código de máquina que ocasionalmente intenta comunicarse con las API de Windows, como las API de DirectX para “dibujar triángulos”.

Si sos un desarrollador de algo como WINE, si querés que este programa funcione en tu sistema operativo que no sea Windows, tendrás que fingir ser DirectX. Y eso significa que tendrá que responder a las API de DirectX * de la manera que el programa esperaba *.

Por lo tanto, el caso Google vs. Oracle representa una gran victoria para la industria de la tecnología en su conjunto. Pero para la compatibilidad de la plataforma y la interoperabilidad binaria, es incluso más que eso.

El fallo o sentencia codifica que estos productos e industrias pueden seguir existiendo en absoluto. Y esa es una gran victoria para todos. Quizás para aclarar este punto, y por qué esta es sin ambigüedades la decisión correcta.

Supongamos que el juego en cuestión ni siquiera está desarrollado por Microsoft.  En ese caso, WINE no está implementando la API de “dibujar triángulos” de DirectX porque no pueden pensar en una forma diferente de dibujar triángulos.

Lo están implementando porque así es como el juego le pide a la plataforma que dibuje triángulos. En este caso, ni el juego * ni * la capa de interoperabilidad utilizan código de Microsoft.

Sin embargo, bajo el argumento de Oracle, Microsoft podría reclamar un interés de derechos de autor en la forma en que los dos se hablan entre sí / a pesar de / que ni un solo byte de código de Microsoft se ejecute en ninguna parte.

Y observen que ninguna de las partes está usando la API debido a algo único o especial acerca de la API. El desarrollador del juego solo lo usa porque así es como le pides a Windows que dibuje triángulos. Y la capa de interoperabilidad solo la usa porque así es como los juegos piden dibujar triángulos.

El uso de Google de java.lang.Math.max no se debe a que Google no pudo encontrar un ingeniero dispuesto a crear una API google.awesome.max.

Es porque * las aplicaciones Java existentes *, que no son propiedad de Google * u * Oracle, usaron java.lang.Math.max. La implementación de Google simplemente permitió que esos programas se ejecutaran.

Podés leer la sentencia completa en este link.


* Cuenta de twitter: 

Los comentarios están cerrados, pero trackbacks Y pingbacks están abiertos.