El día que Atari violó la licencia GPL

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

Perfil del redactor

Nací en el 83, desde entonces he ido descubriendo que los errores se acumulan y los aciertos desaparecen rápidamente. Mi primera consola fué una NES clónica con el galaga, luego pasé a supernintendo, PC y otros sistemas con dos mandos y muchos bits. Informático de profesión, se me conoce como "el que trabaja ordenadores" y "el destructor de consolas".