in programación, rant, web 2.0

Ruby on Rails: después del hype

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.

Write a Comment

Comment

24 Comments

  1. Vas a herir mas a la comunidad hispana de RoR con este articulo Sosa.

    Lo cierto es que siempre debemos buscar que se ajusta mas a nuestras necesidades de desarrollo.

  2. has tocado un tema muy importante que se esta dejando un poco de lado. me ha encantado leerte y eso que me acabo de comprar dos libros de rails :) auguro unos 50 comentarios y unos 10 posts de respuesta

  3. @stan: Te refieres a “herir” como diciendo “herir susceptibilidades” o como en “lastimar”? Porque he de aclarar que lo segundo no es mi intención (bueno, tampoco lo primero directamente, pero lo acepto como una consecuencia de expresar una opinión) en verdad respeto mucho lo que es rails y lo que ha aportado a la comunidad, pero esas oscuras tecnicas de marketing mencionadas en el post, son las que han acabado por lastimar a RoR a la larga.

    @rodrigo: Gracias.

    @frank: 50 comentarios y 10 posts de respuesta? de verdad lo dudo :P pero gracias por los buenos deseos.

  4. Algo ya puse en la entrada en planetfrank pero aún así...

    Creo que lo que provocó el problema de RoR es precisamente algo que mencionas: Al insistir en compararse con lenguajes (RoR no es un lenguaje, R es un lenguaje y oR lo integra en un framework) la gente los tomó como tales.

    RoR es un sistema de prototipos rápidos; de aplicaciones menores, cerradas o corporativas. RoR te permite probar muchas cosas muy rápido y te permite tener un sistema preliminar funcional y ver que tal va.

    RoR es como RealBasic en aplicaciones de escritorio. Es super fácil, flexible en cuanto a plataforma, capaz de crear aplicaciones para universos limitados y liberarlas rápidamente. Sufre también de los mismos problemas que RealBasic: No es capaz de sobrevivir en el mundo real por sí mismo.

    En el caso de RB el “mundo real” son aplicaciones actualizables, en red, utilizadas por miles de personas, que se mantengan rápidas con cantidades ingentes de datos, multi-idioma, etc.

    En el caso de RoR el “mundo real” son aplicaciones web que se vuelven virales y que, para colmo, no “caen” de esa viralidad (Desktop Tower Defense es un ejemplo de una aplicación viral que hoy en día no tiene ni la centésima parte del tráfico que llegó a tener, twitter no ha bajado mucho en cuanto a uso). Aplicaciones donde se asume que todas las cantidades (visitas, usuarios, comunicaciones) son en “millones” para simplificar.

    Por supuesto, comparandose con un mercado que no era el suyo el único resultado que pueden tener es caer y darse un batacazo. Si en vez de eso se hubieran posicionado adecuadamente no existirían estas discusiones y la imagen general sería menos de desilusión y más de potencial. Si hoy en día RoR mejora substancialmente y se vuelve capaz de soportar una carga como la de twitter o google reader la noticia será menor, porque apenas estarán llegando a lo que “antes no pudieron hacer”, en vez de anunciarse con bombo y platillo con el mérito que realmente tiene.

  5. Algo super interesante del artículo en O’Reilly es lo que me parece el punto fuerte de RoR: Al obligar a utilizar costumbres sensibles al programar (DRY, MVC, etc.) hace que cuando la versión “en grande” de la aplicación tiene que hacerse en otro lenguaje se utilizan las mismas costumbres.

    RoR no sólo ayuda a hacer la aplicación lo mejor posible en cuanto a usabilidad permitiendo optimizarla sobre la marcha rápidamente sino que cuando haya que transferirla a otro lenguaje ya sabemos que partes son paja, que partes son importantes y ya hemos ahorrado mucho de lo que luego se nos queda estorbando cuando usamos desde el principio PHP (o lo que os apetezca).

  6. Se te olvida mencionar que Twitter sigue corriendo con Rails, y ultimamente no ha tenido problemas de rendimiento, a pesar de seguir creciendo acceleradamente.

    El mismo Alex Payne dijo que sus palabras fueron tomadas fuera de contexto, que los problemas de escala cuando llegas a ese tamaño son problemas de escala que no tienen nada que ver con el rendimiento del framework, y que mas bien Ruby le permitio resolver muchos de esos problemas de forma eficiente.

    Y sobre Derek ya se ha hablado bastante tambien, sobre lo insensato que es reescribir todo desde cero, y sobre lo facil que es volver a atacar el problema con dos años de experiencia encima (y si, se que estas dos cosas son contradictorias entre si, pero es que Derek tomo lo peor de las dos contradicciones).

    Si no te gusta Rails y prefieres PHP, pues bien, sigue escribiendo codigo en el ambiente que mas conoces y mejor dominas. Pero no pierdas el tiempo tratando de justificar tu decision desprestigiando las opciones que rechazaste.

  7. @eduo: tienes razón, comparar RoR con cualquier otro lenguaje siempre fue comparar peras con manzanas pero fueron ellos mismos, empezando por DHH, quienes lo hicieron desde el principio.

    @sebastian: Entonces Alex Payne se desdijo, porque en esa cita dice que aunque los problemas son normales, rails causó que se adelantaran mucho más. Yo solo saqué mis conclusiones suponiendo que quería decir lo que decía y que sabía lo que decía.

    Por otra parte no creo que desprestigie a RoR, solo me molesta un poco el fanatismo irrazonable que luego presentan sus mismos fans y mi post iba en el sentido de qué pasa cuando sus argumentos se desvanecen.

    Bueno, pero tu sabes como se debe hacer propiamente para desprestigiar a las otras opciones

    Ruby rulez!!! Rails rulez!!! Java sux!!! Perl sux!!! Python sux!!! (y Php no es digno de mención)

    Y, de verdad, no hard feelings. Es un honor que hayas venido a comentar aca, soy tu fan.

  8. “Ruby rulez!!! Rails rulez!!! Java sux!!! Perl sux!!! Python sux!!! (y Php no es digno de mención)”

    creo que esa linea tiene sus raices en el humor sobresaturado de ironia de la ciudad donde reside sebas… nyc

    si eres su fan sabes que es una costumbre de sus posts.

    aun asi te quedo buenisimo lo de “pero tu sabes como se debe …”

  9. Buen post! Al final los lenguajes de programación y frameworks no son el problema, sino la toda la fanaticada. Por eso antes solía decir a mis amigos: “Yo no odio las Mac sino a los maqueros”. (obviamente en un tono exagerado)

  10. En la entrada de Frank puse este mismo enlace (aunque no me lo quiere des-moderar). Me parece interesante y dice lo mismo: El problema de escalabilidad era necesitar 1000% y haber usado otro lenguaje les hubiera dado un 10%. Lo que si queda claro es que RoR entonces aún no era capaz de manejar la escalabilidad tan bien como lo hace ahora, después de cambios introducidos para situaciones como la de Twitter, que lo que necesito fue alterar la forma de manejar la red y el hardware.

    http://www.highscalability.com/scaling-twitter-making-twitter-10000-percent-faster

  11. Dos años, dos años esperaste a que salieran esos dos articulos para tirarle tierra a rails, ahi estabas con mala leche esperando justificar tu fanatismo por (cake)php y como rails sux!!

    Al final el problema de twitter se resolvio en menos de dos dias por la misma comunidad y el caso de cdbaby desde el inicio fue un planteamiento no muy bueno, pero al parecer solo ves un lado del cuento.

    El fanatico e irracional al final eres tu, como todo buen pejelagarto.

  12. @demet: Puede ser que sí, que solo conozca un lado de la historia pero ambos artículos me parecieron de fuentes confiables y no recuerdo haber leído nada que los refutara objetivamente en su momento. Con todo y eso, tu me pareces mas desinformado aún porque si te hubieras quitado tu gorra de “Yo amo a DHH” para leer el post objetivamente habrías notado que yo jamas mencione que RoR sux al contrario, creo que RoR rox bastante, probablemente no el 100% de su comunidad y probablemente este muy lejos de ser fan de la personalidad de DHH (me parece un egolatra insoportable, pero eso no le quita meritos). De hecho, le estoy agradecido a RoR por que los conceptos que introdujo hicieron que existieran muchas mas alternativas como CakePHP que resulta que me gusta pero del cual no soy fanatico.

    De hecho, no soy fanatico de nada, los fanaticos siempre me han parecido idiotas.

    Y si me conocieras sabrías que cuando pienso que algo sux no tengo ningun inconveniente en decirlo. Como en este caso, amigo Demet, tu suckeas fuertemente.

  13. Que te atropelle un auto SUCKS!
    Que te manden a la guerra SUCKS!
    Que te sean infiel SUCKS!

    Por favor, muchachos ya no tan muchachos imagino, Demet y Sebastian, a no tomarse todo tan a pecho, despues de todo, es solo un lenguaje de programacion :)

    Saludos, y aguante Assembler! Todos los demas SUCKS! jaja

  14. Las críticas son muy apresuradas para comenzar a hablar de que ror no tiene futuro. En sus inicios todos los lenguajes que recuerde han sido una porquería. Aún así pienso que Rails ha tenido un crecimiento rápido ya que el framework en sí resuelve muchos problemas de una forma simple y bella. esta claro que ahora todos lo sframework quieren o tratan de alguna forma parecerce a Rails.

    Que escale o no depende de la arquitectura. La gente de twitter manejó muy mal la situación, ellos mismos lo reconocen. Tal vez por eso Google no invirtió en ellos y compró Jaiku.

    Pienso también que los problemas de velocidad son debidos a Ruby, un lenguaje que de por sí es más lento, pero que de seguro que en algún momento esto mejorará.

    En conclusión las personas que programan en cualquier lenguaje en algún momento deben afrontar decisiones de arquitectura de las que poco depende el lenguaje que eligan.

    A los que les interese les dejo este link:

    http://www.slideshare.net/Georgio_1999/how-to-scale-v2/

    Saludos!

    José Antonio

  15. realmente buen articulo con su correspondiente debate. Enhorabuena hagan su vida y no se preocupen por los demas , mucho mas de la cuenta!!
    Saludos

  16. la verdad programo en java y hace poco empeze con rails con la intencion de programar unos sites pequeños, me he quedado asombrado con el odio que se le tiene a rails y a quienes lo utilizan, mil veces superior a los comentarios que he escuchado contra java y c#, rails no es una panacea, no es la solucion a todo, es simplemente una herramienta que, estudiando sus virtudes o sus limitaciones ustedes deciden si usarlas o no, lo mismo ocurre con cualquier otro lenguaje, por otro lado se habla de la actitud de los seguidores de rub en lo personal, no he encontrado fanaticos cegados de ruby, o al menos no en comparaciona python, donde hace un tiempo me vi obligado a utilizarlo y me resultaba ridiculo como consideraban a cualquier lenguaje que no fuera python como la peor porqueria, creo que no es conveniente tener actitudes extremistas y analizar las herramientas en virtud de cuan util puede sernos, ruby escala, aunque le cuesta, pero les aseguro que si las paginas blancas (que recibe mas de 20 millones de visitas) implementa rails cualquier sitio creado por nosotros (sin menospreciar) deberia estar en la capacidad de escalar lo ncesario

Webmentions

  • Desde Dupermag: Ruby on Rails | Tzek Blog de Diseño January 2, 2010

    [...] Acceder en: http://www.blog.armandososa.com/2007/09/27/ruby-on-rails-despues-del-hype [...]

  • Planetfrank » Blog Archive » ruby vs php January 2, 2010

    [...] leyendo mis feeds matutinos me encuentro con: “Ruby on Rails: después del hype” toda una [...]