mOOtion iteration 2 posmortem March 8, 2006
Posted by Iñigo in : Uncategorized , trackback
Ahora que estoy acabando la segunda iteración de mOOtion, voy a hacer un análisis postmortem del proyecto (que sigue vivo).
¿Qué es un análisis postmortem de un software y porqué hacerlo?
El primer análisis postmortem de un proyecto lo ví en la revista Gamasutra. Consiste en hacer que una persona que ha trabajado en un proyecto, lo diseccione una vez terminado o una vez alcanzado un hito (como es mi caso).
Además de hacer memoria, y comprobar qué se ha hecho, el postmortem te permite identificar qué cosas has hecho bien, qué habría que mejorar, y te da una idea de cuál ha sido el camino recorrido.
Qué es mOOtion
mOOtion es un sistema colaborativo de promoción de videos, no de blogs como menéame. Está basado en el mismo software (c) 2005 Ricardo Galli (gallir), liberado con la licencia Affero. Y hasta ahí lo que todo el mundo conoce o intuye.
La idea de lanzar mOOtion surgió en Enero, mientras Eduardo y yo rodábamos los vídeos de vlog.es. Me bajé el código fuente de menéame dos días después, lo imprimí, y me puse a estudiarlo. El día 7 de Febrero registré mootion.com y me puse a tirar líneas… y hasta ahora (un mes de locura).
Qué ha ido mal
Los parches. En éste tiempo he comentado con Ricardo alguna cosa sobre el código por email, pero no le he mandado un parche como dios manda. Y eso es malo para mOOtion: a medida que moldeas el código de un fork de un programa, los dos trozos de software comienzan a dejar de parecerse y eso no es nada bueno.
Imagínate que mañana encuentro un bug en mOOtion que viene de código importado de menéame. Si lo arreglo y no mando un parche a gallir esa corrección no aparecerá en el código fuente de menéame (gallir no puede estar leyendo código de todos los forks todos los días). Supongamos que gallir encuentra el mismo error de forma independiente y lo corrije, pero de forma distinta a la mía. ¿Cuál es el resultado? que los dos programas se han ido por senderos distintos y, a medida que vayan evolucionando cada uno por su lado, será más difícil incorporar código de uno en el otro.
Así que hay que mandar parches a menéame (con diff -u).
Presentación: Otra cosa que ha ido mal es que meneame no separa la presentación y el código de control del programa: a lo largo de buena parte del código se encuentran fragmentos de html que hacen algo, y multitud de cadenas de caracteres que ha habido que buscar una por una para traducirlas al inglés (¿he dicho que mOOtion está en inglés?).
De momento no importa demasiado: la parte importante de meneame está en el análisis de la solución. A gallir le funciona suficientemente bien para gallir como para preocuparse; pero el que quiera darle una vuelta al diseño de meneame, va a sudar tinta (hasta que integre en un sistema de plantillas comosmarty ).
Seguridad: ¡ay! durante la semana pasada hubo un problemilla de seguridad en menéame, que se podía reproducir en mOOtion. Tardé casi 24 horas en aplicar el parche por problemas de tiempo. Por suerte, mOOtion apenas tiene tráfico así que me lo podía permitir. La próxima vez tendré que soltar lo que tenga entre manos para arreglar mOOtion porque no tendré ese márgen de tiempo.
RSS: Todos los betatesters han tratado de suscribirse a un feed RSS de mOOtion sin éxito porque no estaba ejecutando php como un módulo. Tendría que haber eliminado la caja de RSS para que no la vieran antes de tenerla habilitada.
La solución ha sido habilitar un dominio (rss.mootion.com) sólo para ejecutar los feeds RSS. Ventaja: tengo estadísticas de gasto de ancho de banda de ese dominio en concreto. Inconveniente: hay que mover ficheros de un lado a otro.
Promoción del sitio: se me ocurrió bloguear que mOOtion ya estaba aquí (mea culpa) y al verlo, a Eduardo se le ocurrió (con toda la buena intención) anunciar en meneame que había lanzado mOOtion antes de que fuese totalmente funcional (cuando el código es tuyo lleva tiempo, cuando es de otro lleva más tiempo), y violando técnicamente la licencia Affero (el código fuente iba a estar disponible al día siguiente cuando lo medio-estabilizase). Quién entrase en mOOtion aquel día, lo vió sin apenas contenido, a medio traducir al inglés (que queda fatal), y con fallos intermitentes porque estaba tocando directamente el código en el servidor.
La próxima vez no se dice ni media palabra a nadie hasta que no esté todo probado y con contenido suficiente como para estar entre media hora y una hora descubriendo el sitio: la primera impresión es la que cuenta.
Qué ha ido bien
Traducción: Con la excusa de la traducción al inglés, me he conseguido familiarizar con el código. No es muy extenso, pero para hackearlo hay que conocerlo antes o de lo contrario no se podría echar mano a nada. Hay un par de ficheros en los que, me parece, que se podría haber simplificado mucho más el código. Será cuestión de arreglarlo y mandar un parche a gallir.
Frame Votador: La idea principal detrás de mOOtion está en hacer que el usuario votase los vídeos después de verlos. Para esto se ha dividido la ventana en dos frames, uno con la caja de votación, y otro con el vídeo, inspirado por el manejo de los enlaces externos en los foros de Google Dirson. La idea del marco votador no deja indiferente a nadie: o lo odian o les encanta. Eso pretendía.
PHP: No tenía ni idea de PHP. Hará tres o cuatro años me compré un libro de PHP de la editorial Wrox, lo leí por encima, y lo dejé en una estantería (ahora ese libro está metido en una caja a kilómetros de distancia, pero eso es otra historia).
Entorno de desarrollo: Empecé a modificar menéame para dar paso a mOOtion sobre un Linux, directamente en el hosting usando vi. En otras palabras, estaba como en casa, programando como se hacía en los viejos tiempos; sin embargo, éste método tiene un problema: los retardos de red. Puede ser muy frustrante estar escribiendo a velocidad razonable y que de repente se pare el cursor por tres segundos.
Llevo una temporada sin tener en casa ni siquiera un triste OpenBSD (ya uso Linux en el trabajo, OpenBSD es para desconectar un rato), así que me monté un sistema basado en PFE32 (mi editor favorito bajo windows) y WinSCPen modo de mantener sincronizado el directorio remoto. De ésta manera cuando grabo un fichero, se sube inmediatamente al servidor, y puedo probarlo en el sitio.
También he probado los editores Komodo 3.5 de ActiveState, y PHPEd. Creo que acabaré comprando una licencia de Komodo porque con la misma licencia puedo pasarme el sistema de desarrollo actual a Linux o a OSX sin tener que volver a pasar por caja.
Gente: La gente se está portando muy bien. Desde algunos compañeros de trabajo a los que les encanta la página y hasta se la han recomendado a sus amigos, hasta gente como Roger Casas que se ha enterado y ha colgado ya un par de vídeos. Luís Rull y Pepa han tenido demasiada paciecia conmigo y con mi sistema de cerrar betas (que dejamos de lado).
Hacia dónde vamos
La siguiente iteración de mOOtion pasa por mejorar la manera en la que se muestran los vídeos, y cómo se interactúa con weblogs. Esto suena muy abstracto (y lo es :-).
Quiero poder detectar automáticamente contenido de granjas de vídeos como YouTube, o GoogleVideo, analizarlo para publicar más fácilmente, e incrustarlo en una página de mOOtion sin tener que usar el frame votador. El frame votador se debería utilizar sólo cuando estamos enlazando a un videoblog, para no quitarle protagonismo (¡ni visitas!), ni plantarles otra publicidad que no sea la del videoblog.
También quiero darle una vuelta al mecanismo de trackback. Se tiene que poder usar mejor… si se me ocurre cómo.
Después de la tercera iteración, la cuarta consistirá en darle una vuelta a la apariencia del site. Con gráficos y esas cosas que tanto nos gustan a todos
incluyendo el logo definitivo y la mascota de mOOtion (no sólo menéame tiene derecho a mascota, ¿no?).
La quinta iteración está en proyecto… ni siquiera yo sé que habrá allí.
Buenas noches y buena suerte.



Comments»
no comments yet - be the first?