viernes, 22 de julio de 2011

unga, o como complicarse la vida (I)

¿Alguien recuerda Second Life? Yo todavía estoy por allí, y de vez en cuando cae alguna venta. De hecho hemos llegado a ganar bastante dinero allí dentro. Es un mundo virtual 3D con bastantes posibilidades, si se hubiese explotado bien, no sólo para ver animaciones de muñequitos practicando sexo, sino para educación, representación arquitectónica o incluso juegos.

Pero seguro que muchos no conocen OpenSimulator, que intenta ser algo así como un Second Life open source y añade algunas cosas interesantes y otras realmente horribles. Corre sobre la plataforma .NET/Mono, pero es que nadie es perfecto. Le llamaremos Opensim, porque es un coñazo ir refiriéndose a su nombre oficial todo el rato.

Si algo tienen en común los dos entornos es la evidente falta de buen gusto, al menos visual. No es coña, la mayor parte de lo que allí se ve, construcciones sobre todo, te haría vomitar y arrancarte los ojos si estuvieses en el mundo real. Si el caso es grave en Second Life, mejor no hablemos de Opensimulator, donde el material suele ser creado por... desarrolladores o, en el peor de los casos, por usuarios con ínfulas pero nulo talento.

Que no es que todos los desarrolladores tengan mal gusto; por ejemplo yo tengo un gusto excelente y es una delicia utilizar las aplicaciones que diseño. No tengo abuela, eso no, pero es que ya sería demasiada perfección en una sola persona y no es cuestión de ir humillando al resto de la humanidad. Ante todo uno es humilde y modesto y se compadece de esas pobres mentes inferiores que pululan por este nuestro planeta.

Si quieres conseguir un absoluto fracaso de usabilidad dile a un desarrollador que diseñe el interface gráfico de tu aplicación. Si te gustan las emociones fuertes dile a un desarrollador (que no sea yo, claro) que te diseñe un edificio. Normalmente el resultado es parecido, por su elegancia, a esos engendros mitad orco mitad no se sabe qué que aparecían en el señor de los anillos.

Y me disperso...

Lo que quería explicar es que yo estuve mezclado en el tema de OpenSim. Hace ya mucho tiempo sugerí e hice las primeras pruebas para utilizar NHibernate, alguien lo implementó y un año después fue deshechado por falta de mantenimiento. La verdad no me importa demasiado porque lo que a mí me importa va por otro lado.

OpenSim es una especie de servidor de realidad virtual, es decir, que envía texturas, posiciones de objetos, colisiones... a un cliente visual y se encarga de mantener el contenido (persistirlo). Puede ejecutarse en solitario o pueden unirse varios servidores en lo que se viene a llamar un grid, y ahí empieza lo interesante.

Los servidores de Opensim, cuando se conectan entre sí, utilizan a su vez unos servidores de soporte que se encargan de controlar los usuarios, el inventario de objetos, los objetos en sí y la conectividad entre los servidores. Lo interesante de esta parte es que estos servidores utilizan http para comunicarse, por lo que podría usarse sin problemas cualquier servidor web.

En Opensim como son más chulos que un ocho se han currado sus servidores y se han hecho sus pajas mentales reinventando una arquitectura de plugins, unos servidores dedicados corriendo en .NET y, en mi opinión, es la peor parte del proyecto. Por ejemplo, se ha de usar una consola para realizar cualquier operación (dar de alta usuarios, crear servidores, bloquear usuarios...). O eso o escribes guarramente en la base de datos, que también hay "aplicaciones" que lo hacen... ahí con toda la seguridad.

Claro que ha habido intentos de hacer correr esos servidores de soporte en servidores web y algunos de ellos están funcionando, tanto programados en Perl, como con PHP o Python.

Pero aquí el menda es más chulo que un ocho y no le gustó absolutamente nada de lo que había así que decidió currárselo él solito y, aproximadamente en Marzo o Abril de 2010, presenté unga, mi propuesta de servidores de soporte. El éxito fue tan moderado que sólo lo estoy usando yo, pero el asunto prometía... aunque he de reconocer que me equivoqué en su concepción.

unga, que al principio era una serie inconexa de servicios, programados en PHP, que usaban XML-RPC y ligeramente jquery y algunos plugins bonitos para hacer ventanitas y efectos visuales, ha evolucionado muchísimo en un año. Este sistema, que al principio únicamente quería para conectarse a servidores Opensim se está convirtiendo en todo un framework o una plataforma, más bien, porque estoy rediseñando incluso la filosofía de funcionamiento.

Está programado con PHP, corre sobre el framework Code Igniter (el más rápido y eficiente que he encontrado), usa intensamente REST (sí, el puro, el que usa los comandos http, no esa paja mental que algunos llaman REST y después no es más que un POST mal entendido), Ajax (con jquery, que es de lo mejorcito), es modular (pegar, activar y a trabajar) y lo he usado para otros proyectos ya, entre ellos un gestor de descargas y una aplicación de control de fabricación.

De hecho me estoy pensando hasta en crear un módulo de gestión de contenido para poder usarlo como cualquier Drupal de la vida.

Lo interesante para un desarrollador quizás no sea unga en sí sino todas las tecnologías y metodologías que he usado y estoy aplicando en el proyecto, y de ellas voy a hablar en próximas entradas.

Entre los temas que voy a tratar estarán:
  • Configuración de un entorno de desarrollo para PHP (con debugger).
  • TDD y PHPUnit y ,sobre todo, los problemas de integrarlo con Code Igniter.
  • Construcción automática, deployment, etc. con Phing.
  • REST y cómo implementarlo.
  • Aventuras con jquery o como llevar adelante una arquitectura visual ajax independiente del entorno de servidor.
  • Migración a Python (Django y Tornado Web).
  • Por qué Java es el demonio y huyo como de la peste de ese lenguaje.
  • También programo con C# y todavía no he sido abducido por el lado oscuro de Micro$oft.
  • ¿Tendré huevos para migrar ciertos servicios UDP a Node.js?
Y todo esto amenizado con comentarios sobre cómo configurar servidores Linux, optimizar bases de datos, uso de cache de código, CDNs y demás historias "modelnas" que podrían poner palote a muchos.

Que no es que sea para enseñar a nadie (que realmente dudo que le interese a demasiada gente), es que aquí el amigo escribe y escribe y como soy un figura se me pierden los manuales en el disco duro de no se qué ordenador y no recuerdo nada después. Al menos si lo pongo en internet ya se encargará de buscármelo el señor Google.

Pues nada, que prontito empezaré a guarrear la blogosfera con mi pajerío mental tecnofriki.

Salut!

2 comentarios:

Dirty Affairs dijo...

Si no recuerdo mal había otra alternativa libre que se progamaba en Java llamada OpenWonderland.

Lo escuché en este podcast por si te interesa:

http://www.podgramando.es/2011/04/19/mundos-virtuales-con-jose-dominguez/

Nunca lo he probado :-)

Impalah dijo...

Lo conozco y lo hice funcionar en su día. Es (era) de Sun y lo que era más interesante era que permitía insertar aplicaciones; podías ejecutar por ejemplo Open Office desde dentro del mundo virtual.

El problema es que la representación gráfica era penosa y te dejaba el ordenador con la lengua fuera (Java3D)... aparte de que está hecho en Java, que lo odio profundamente.

Con Java también existía Ogoglio, que este sí era más interesante, al menos en concepto.