Cualquiera que este involucrado en desarrollo web y/o esté interesado en la web 2.0 y no haya escuchado hablar de Ruby on Rails es porque tal vez estaba muy ocupado desarrollando applets de java para netscape 4 o anidando tablas en frontpage. De cualquier forma, aunque no me voy adetener a explicar en detalle qué es Ruby on Rails (en adelante. RoR) les resumiré que es un framework de desarrollo rápido de aplicaciones web que David Heinemeier Hansson extrajo de su propio código tras programar Basecamp para la compañía que probablemente es la startup 2.0 por excelencia: 37 Signals. Y que liberó bajo licencia de código abierto en 2004.
La salida de RoR marcó un parteaguas para todos los que programamos para web (especialmente para los que somos un poco desordenados y perezosos) por la facilidad de uso que presentaba y la introducción de conceptos de arquitectura de software como MVC, DRY, y la famosa filosofía de convención sobre configuración. Además, RoR también inició la moda de los screencasts con aquel famoso video donde demostraban que se podía desarrollar un sistema de blogs en apenas 15 minutos (creo que eran 15 minutos, ya no lo pude encontrar en el sitio oficial) que basto para que muchos nos volcasemos por completo ante la promesa del desarrollo sin dolor y de un lenguaje (Ruby) que ademas de bonito era perfecto.
Los menos impresionables inmediatamente lanzaron la pregunta: Will it scale? (La traducción literal sería ¿Escalará? y, como todas las traducciones literales, it sucks) y 37 Signals se tomo la molestia de escribir un libro completo para responder a esa pregunta: Sean realistas, no nos importa.
Hace poco, cuando por primera vez una aplicación escrita en RoR tuvo verdadero éxito masivo ( Así es, ninguna de las aplicaciones de 37 Signals puede considerarse un éxito verdaderamente masivo) obtuvimos la respuesta a esa vieja pregunta y ésta es: No, RoR no escala. Y si lo presionas de más se tropesará y se quedará catatónico… O como dijera mejor el mismo Alex Payne ( desarrollador de Twitter) :
Correr sobre Rails nos ha forzado a lidiar con problemas de escalado — Problemas que cualquier sitio en crecimiento eventualmente afronta— creo que mucho antes de lo que hubieramos tenido que hacerlo con otro framework
[…]
Asi que no se trata solo de costo, es tiempo, y tiempo que es muy precioso cuando la gente no puede entrar a tu sitio. Ninguno de estas soluciones de escalado son tan fáciles y divertidas como desarrollar.
Estas declaraciones, naturalmente, hicieron que la comunidad railera se enfureciera. Y digo naturalmente porque la comunidad de RoR es muy parecida a la de los fans de Apple, a la de los hinchas del Atlas y a los seguidores de AMLO, es decir, su fidelidad es tanta que raya en la irracionalidad. Para un verdadero Railero, RoR es la panacea, Ruby es el lenguaje perfecto, DHH es un dios que los vino a liberar de los lenguajes inferiores.
Será por que hay un apartado completo en el libro de Getting Real llamado Ten un enemigo pero como estrategia de marketing a RoR siempre le funcionó bien compararse con otros lenguajes. Es cosa común en casi toda la literatura pro-rails encontrar mofas de el pesado y lento monstruo corporativo que es Java frente a RoR y el asquerosamente feo, ineficiente y retrograda lenguaje que es PHP frente a Ruby. De hecho, hay una especie de leyenda muy famosa en este submundillo que cuenta que la primera intención de DHH fue programar Rails en PHP pero que llego a la conclusión de que era imposible y que tal proeza solo podía ser llevada a cabo con Ruby.
Ahora imaginen lo que sintió la comunidad cuando la semana pasada, Derek Sivers de CDBaby (una compañia que es la mayor distribuidora de musica verdaderamente independiente por internet) escribió un articulo llamado Siete razones por las que regresé a PHP despues de dos años en Rails articulo en el que, despues de haber dado una entrevista que casi era texto canónico para los raileros, hace una declaración que raya en la blasfemia:
“¿Hay algo que Rails pueda hacer y que PHP no pueda?”
La respuesta es no.
Tiré 2 años de código de Rails y abrí un nuevo repositorio de Subversion.
Luego en tan solo DOS MESES, yo solo, sin ni siquiera decirle a nadie que lo estaba haciendo, usando nada mas que vi, y ningún framework, reescribí CD Baby desde cero en PHP. ¡Listo! ¡Liberado! Y funciona sorprendentemente bien.
¿Como han cambiado las cosas en dos años no? ¿Que va a pasar ahora que sabemos que, efectivamente, rails no escala y que esta muy lejos de ser la perfección que nos vendían? Personalmente, hace mucho que me decidí por CakePHP que tiene muchas de las características que hicieron famoso a RoR pero con la confianza de que es PHP por dentro, ese versatil lenguaje que he aprendido a querer.
Ojala esto sirva para que de una vez entendamos lo estúpido que es apasionarse con las herramientas al nivel de hacer menos las otras herramientas y a aquellos a quienes las usan.