GPL

No pasaría de una mera anécdota si no fuera porque la liaron bien gorda. Todos conocemos a Atari, la otrora empresa de videojuegos líder del sector que hoy es casi una mera distribuidora de videojuegos para móviles (y que den gracias, que el anuncio de bancarrota de principios de año lo siguen arrastrando…). Seguramente no sea esta la razón de sus malos tiempos, pero sí que les ayudó a llegar a donde están hoy. Esto ocurrió hace unos 4 años, pero siempre está bien recordar que no todo es gratis en internet.

Preámbulo

Hace un tiempo, allá por 1999, Atari (bueno, Infogrames por aquella época) compró la empresa “Humongous Entertainment”, creadora de algunos juegos tipo “aventuras gráficas” para niños. Esa empresa era responsable de juegos como “Freddi fish”, “SPY Fox” o “Pajama Sam”, y en 2009 Atari decidió  reeditarlos para Wii. No pasaría de ser un “port” más de otros tantos, si no fuera porque las cosas no se hicieron bien. Es más, todo lo que se pudo hacer mal se hizo.

Los juegos llegaron a las tiendas, y gracias a algunas herramientas algunos curiosos pudieron  sacar el ejecutable de dentro del DVD. La sorpresa fue que se encontraron con código perteneciente al proyecto “ScummVM”, conocido por muchos de nosotros por emular gran parte de las aventuras gráficas de antaño, entre las que se encuentran los juegos indicados al inicio. Ya está mal coger algo sin avisar, pero en este caso es código que está bajo licencia GPL (ojo, será gratis, pero no puedes hacer lo que te de la gana), que choca  con las licencias de Nintendo (bueno, se da de hostias con ella). Para los que queráis ver el artículo original, aquí tenéis el enlace al blog de Sev, uno de los componentes de ScummVM:

Blog de Sev

Como dijo descartes vayamos por partes:

¿Qué es la GPL?

Esta parte va para los que nunca hayan oído hablar de licencias GPL (y algunos estudiantes de publicidad a los que les cayó en el examen y suspendieron….). Seguramente hayáis oído de ella al mirar algún readme de emuladores o si estáis metidos en el mundillo de Linux. La GNU GPL (GNU General Public License , o Licencia Pública General de GNU ), es una licencia que se creó para proteger los derechos de libre distribución, modificación y uso del software libre.  A grandes rasgos, la licencia GPL protege los derechos anteriores de la siguiente manera:

– Obliga a que cualquier proyecto basado en un código existente bajo la licencia GPL, sea a su vez GPL
– Obliga a distribuir el código fuente modificado junto con el binario (bueno, aquí hay varias opciones, la idea es que esté disponible de alguna forma)
– Obliga a mantener la lista de todos los que han participado en el proyecto hasta ese momento. Es decir, si modificas algo y creas una nueva versión, deben aparecer los anteriores participantes.

Eso es un resumen centrado para licencias software, podréis encontrar variantes dirigidas a documentos, hardware… A grandes rasgos, la idea de la GPL es compartir y mantener la lista de los participantes de un proyecto, protegiendo sus derechos como autores. No he puesto todo, ya que algunas partes dependen de la versión de GPL que estemos tratando, y que la licencia es un poco larga. En este caso, ScummVM está bajo la GPLv2, aquí tenéis el enlace a la licencia que viene junto con él:

Licencia

¿Qué hizo Atari?

Atari contrató a Majesco Entertainment, para que creara el port de su juego original. Majesco Entertainment, a su vez subcontrató a la empresa Mistic Soft, que fue la que hizo el trabajo final. Bueno, no exactamente. A ellos les suministraron el código fuente de los juegos originales, gráficos, etc… para que pudieran reproducir su trabajo sobre wii. Sin embargo ellos prefirieron tomar otro rumbo.

La Wii lleva un procesador PowerPc, y eso suele dar problemas a la hora de portar código de PC (normalmente X86). Según parece, el intérprete original podría tener problemas con eso, así que en vez de lidiar y resolver los problemas (hacer el port del juego, que era lo que les estaban pidiendo) decidieron que era más fácil coger el código de ScummVM (funciona perfectamente en powerpc). Hacer eso es relativamente más fácil, teniendo en cuenta que:

– Ya hay un port de ScummVM para wii
– El código de ScummVM es bastante fácil de configurar para otras plataformas
– Ellos contaban con el SDK de Nintendo
– Se les estaba pagando para ese trabajo, así que le podían dar una dedicación a tiempo completo

Según Sev les debería haber llevado 2 semanas si le dedicaban todo el tiempo a eso.

¿Cómo los descubrieron?

Como ya os he comentado, es posible sacar el ejecutable de un juego de Wii, así que algunos desarrolladores curiosos decidieron ver qué había en ese ejecutable. La sorpresa fue que se encontraron muchas partes del código de ScummVM. La verdad es que demostrar que un código ha sido robado es una tarea difícil. Tened en cuenta que lo más normal es encontrarse con “código máquina” dentro del ejecutable. Para que lo veáis más claro, os pongo los pasos para crear el ejecutable:

– Primero los programadores escriben el código fuente del programa en cuestión. Ese código es una serie de líneas de texto escritas en el lenguaje de programación que se desee usar (en este caso C o C++).

– Después se traduce a código máquina. Ese paso se llama “compilar el código”, y se usa un programa llamado compilador. Ese compilador es el encargado de leer una linea de texto del programa escrito por el programador, y traducirlo al “idioma” que hablan las máquinas. Ese idioma consiste en una serie de instrucciones del lenguaje ensamblador (el de más bajo nivel para la máquina) ya traducidas al código que use el procesador en cuestión. Si no lo habéis entendido, dejadlo en que está en código binario.

Se puede recuperar el código fuente original en texto (más o menos) usando desensambladores. Esos programas se encargan de coger el código máquina y traducirlo a código ensamblador, algo más o menos entendible por el ser humano. Eso permitiría averiguar si un código está basado en otro anterior. Cuando se pusieron manos a la obra, encontraron suficientes pruebas:

– Cadenas de texto haciendo referencia al equipo ScummVM (que curiosamente estaba vacío)
– Cadenas de texto de debug, que hacían referencia a miembros del equipo de ScummVM. En concreto “This might be broken — please report where you encountered this to Fingolfin” (Esto puede estar roto, por favor dile a Fingolfin donde lo encontraste), o “Tell sev how to reproduce it” (Dile a Sev como reproducirlo).

Además, encontraron un bug que pertenece a las versiones 0.9.0 de ScummVM (las actuales lo tienen arreglado), en las que se puede ver una mancha en el ojo del pez Freddi en una de las escenas del juego. Con todo esto tenían pruebas suficientes para demostrar que habían usado su código fuente, y que además no habían sido muy cuidadosos para ocultarlo.

Medidas legales

Esto lo podéis encontrar en el blog de Sev, aquí os pongo un resumen. Primeramente el grupo de ScummVM se puso en contacto con sus abogados, y luego le mandó una carta a Atari-Alemania para ponerles en conocimiento de los hechos. La respuesta de Atari no fue demasiado buena, al principio lo negaron todo, seguramente debido a que ni se darían cuenta. Los que de verdad trabajaron con el juego fueron los del equipo de Mistic Soft, así que las vías intermedias hasta llegar a atari únicamente se dedicaron a testear si el juego funcionaba y ver si habría algún error grave.

Atari pensaba que les iban a demandar por violación de derechos de autor, lo que significaría desembolsar una gran suma de dinero. Lo cierto es que el equipo de ScummVM solo quería que se les reconociera su trabajo, y que añadieran lo necesario para cumplir la GPL (publicar código fuente, logos de GPL, logos de ScummVM, reconocimiento de los colaboradores que hubieran participado …). Aunque se trate de software libre, no hay nada que impida que se venda (ScummVM ya se vende de forma legal a través de páginas de descarga de juegos antiguos, como gog.com). En ese momento, las cosas se relajaron, ya que parecía que para Atari esa era una solución fácil y rápida… hasta que se encontraron con una de las normas de las licencias de uso del SDK de Nintendo:

  • Prohibido usar código código libre junto con su software. Es decir, que si aceptaban el acuerdo anterior, darían la voz de alarma en Nintendo, donde sí que les podrían sacar bastante dinero.

Atari estaba vendida, y el siguiente paso fue hacer chantaje  al equipo de ScummVM. La parte de ScummVM que se encarga de hacer funcionar los juegos de “Humongous Entertainment” fue creada mediante ingeniería inversa sobre el ejecutable de los juegos. Como os conté unos párrafos más arriba, se puede sacar el código fuente a partir del código máquina. Hay muchas técnicas de ingeniería inversa, unas son más legales que otras, y en caso de demostrar que se ha violado alguna licencia al crear ScummVM mediante ingeniería inversa no legal podría crear un gran problema dentro del proyecto.

En este aspecto hay que decir que hay varios documentos que enseñan las «buenas prácticas» de ingeniería inversa. Más claro aún, te enseñan a aprender a hacer tu mismo algo sin robar (algo que podrían haber intentado hacer en Mistic Soft…). Sev confiaba en que sus métodos de ingeniería inversa habían sido los más correctos, así que se plantearon seguir con las demandas. Lo malo es que hay que pagar los costes de juicios, abogados, etc… aunque se gane y se reintegren los gastos es un tiempo que nadie va a recuperar.

Resumiendo:

– Atari violó la licencia GPL
– Atari no podía acatar la licencia GPL, debido a la licencia del SDK de Nintendo
– Atari no podía ignorar al equipo de ScummVM
– ScummVM no puede relicenciarse (al menos la parte del motor usado)
– Y el equipo de ScummVM no aceptaba “dinero por callarse”

Finalmente hubo que transigir. Los juicios podían extenderse mucho y había que adelantar dinero, así que aceptaron una de las ofertas de Atari:

  • Atari realizaría una “donación” de dinero a la fundación de Software Libre
  • Cesaron la producción de esos juegos (los que llevan el software de Scummvm).
  • Se permitió un margen de tiempo para que se vendiera el stock de las copias que se encontraban en tiendas, y destruyó el resto que hubiera en los almacenes de la empresa.
  • Atari pagó con los gastos de abogados.

Así que para aquellos que busquen rarezas, aquí tienen una tirada de juegos que tienen bastante más historia de la que cuentan, y que quizás lleguen a ser uno de esos “most wanted” del catálogo de wii (no lo creo, pero tampoco me estrañaría ver en unos años un «very rare» en ebay).

Moraleja

Como en todo en esa vida, si vas protegido mucho mejor. A veces hablo con alumnos que se toman a broma las licencias GPL, parece algo de frikis que no lleva a ningún lado. Este es uno de los ejemplos más claros donde se ve que funciona, pero hay muchos más. Profesores que «asimilan» el trabajo de alumnos sin el menor miramiento los hay a patadas, con cuatro líneas se pueden proteger perfectamente y poner un poco de orden.

Espero que os haya resultado interesante, aquí tenéis algunos enlaces para ampliar detalles:

Anuncios desde la página de ScummVM:

http://www.scummvm.org/news/20090623/

http://www.scummvm.org/news/20090616/

Blog de Sev:

http://sev-notes.blogspot.com/2009/06/gpl-scummvm-and-violations.html

Por Marcos

7 comentarios en «El día que Atari violó la licencia GPL»
  1. Los riesgos de tantas capas de subcontratación y tanta externalización: tienes a un equipo de gente que no trabaja directamente para ti, a la que le pones unos plazos de entrega absurdos y les pagas cuatro duros, pues…

    1. Si tio, antes se tenía un mínimo de control de la gente que estaba participando y lo que se hacía. Ahora subcontratas al subcontratado del subcontratado, las normas de calidad se las pasan por el forro y encima se sorprenden si pasan cosas como esta.

  2. Tema controvertido este de las licencias de software. Últimamente parece que hay una especie de movimiento en el mundo del software abierto y libre, en contra de las licencias GPL, y en favor de otras como BSD, porque muchos consideran las GPL demasiado restrictivas. De hecho muchos las llaman despectivamente «licencias virales», en el sentido de que una GPL convierte en GPL todo el código «que toca». Pero lo cierto es que las GPL son las únicas que permiten evitar una larga lista de abusos que las grandes empresas gustan de practicar. Ejemplos de esto, son el citado de Atari, el de Steve Jobs cuando intentó usar el back-end de GCC para su compilador de ObjetiveC «by the face», todo el tema de la «tivoización» que se evita con la GPLv3, cambios de rumbo de proyectos de código abierto por intereses de alguna empresa (como MySQL ahora en poder de la malvada Oracle), etc…

    Lo cierto es que te gusten estas licencias o no, lo que es seguro es que sus logros son indiscutibles. A día de hoy no podríamos disfrutar de GNU/Linux si esta licencia no existiese. Ni siquiera los fans de BSD podrían disfrutar de este SO, ya que gran parte del software que suelen usar las distros de BSD sigue siendo GNU (por lo que estas distros deberían llamarse GNU/BSD).

    1. A mi a veces me parece que hay bastante desconocimiento de la GPL, lo que hace que se genere miedo a usarlo. Hay versiones menos virales que otras, para mí la menos restrictiva de todas es la LGPL, que te permite evitar relicenciar si lo único que haces es linkar dinámicamente. Solo es buscar la librería con la licencia adecuada.
      Luego está el caso contrario, gente que se la pela todo y coge librerías y aplicaciones enteras sin leerse ni una sola línea de las licencias que las protegen. Ahí puedes buscar ejemplos en android, la mitad de las aplicaciones que hay en la store ha violado alguna licencia GPL, por no decir que directamente han robado código.
      Lo que comentas de las distros con programas bajo licencia GNU, ahí ya entran otras discusiones. Incluir un programa con licencia GNU/GPL no implica que la distribución completa sea GNU, están redistribuyendo la aplicación pero no es un trabajo derivado (a no ser que la distro original también hubiera sido licenciada bajo alguna GPL), así que solo deberían de poner a disposición el código de las aplicaciones usadas con esa licencia. Hay distros privadas con aplicaciones cerradas e incluso drivers privados para un kernel open source, mezclan todo tipo de licencias y aun así conviven… el que ve problemas es que no tiene abogado XD.
      Un ejemplo de cómo puede convivir GPL con otras licencias es el del driver de NVIDIA para linux, no es un trabajo derivado por lo que no tiene que ser opensource, pero usa las cabeceras del kernel para poder compilar.

      1. Ostras, éste es el último sitio donde me esperaba ver una discusión sobre licencias libres xD
        Una cosa que querría aclarar, es que cuando se habla de que la GPL es «viral» no se hace en torno peyorativo, ya que la GPL realmente «infecta» todo lo que toca.
        El kernel Linux tiene muchas partes con código «no libre». Son los llamados blobs binarios: el driver de NVIDIA es un ejemplo de ello, de hecho, cuando instalas dicho driver, no se compila, si no que se enlaza utilizando las cabeceras del kernel.

        1. Aqui la cosa es discutir por todo,si no es una de sonic vs mario entoces es sobre Gpl XD. Como dices, «viral» es solo un adjetivo,cada cual decidira si es bueno o malo para sus intereses. Es como decir que es verde,a muchos les encantara y a otros les parecera el peor invento del mundo. Solo hay que leerse las «instrucciones» y ver que cosas se pueden hacer y cuales no.

Responder a Los Recomendados de Otakufreaks (10) | Otakufreaks Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *