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.
Que fácil es hacer sitios multi-idioma con CakePHP 1.2
La versión 1.2 de CakePHP, que actualmente está en desarrollo, vendrá con una cantidad impresionante de características que seguramente lo confirmará como el rey definitivo de los frameworks para PHP.
Justo hace poco hablabamos de lo bueno que es que la web 2.0 se vaya internacionalizando poco a poco. Una de las más notorias y esperadas es la de la internacionalización integrada en el mismo framework. Si estás haciendo una aplicación web (tal vez en estos momentos estas programando el próximo Google con adsense y todo ;) y quieres tenerla lista para que esté disponible en varios idiomas en un futuro, lo unico que hay que hacer es pasar todas tus salidas de texto por la función __(). Por ejemplo:
<? php __(’Hola mundo’)?>
Así, cuando en un futuro quieras traducir tu aplicación al inglés solo hará falta crear un archivo .po con todas las cadenas traducidas al idioma de shakespeare o a cualquier otro que se te ocurra (¿klingon quizá?). Las instrucciones más exactas de como lograrlo están en el sitio de sanisoft
Haciendo que lacuerda.net apeste menos con jQuery.
Probablemente una de las cosas en las que más disfruto perder el tiempo cuando estoy en mi casa es abrir el repositorio de tablaturas de lacuerda.net (antes atame) e intentar tocar en mi guitarra algunas canciones.
La cuerda es sin duda el sitio de tablaturas en español más popular y es el que tiene más canciones disponibles lo que lo hace la opción defacto para esas tardes de ocio, pero la usabilidad del sitio es—por dejarselas barata—un asco. De entre las cosas más desesperantes que tiene es que en algun momento alguien decidió ponerse retro, regresar a 1999 y remplazar todos los urls de las tablaturas por algo tipo href="javascript:j('alla_en_el_rancho_grande',2)" que llama a una función que redirige al usuario a la url correcta.
Imagino que lo hicieron porque quieren asegurarse de que ningún listillo ande por ahí viendo tablaturas con el javascript deshabilitado ya que entonces no habría manera de obligarlos a ver esos molestosy obtrusivos pop-ups de mercado libre.
Pero bueno, hay que combatir fuego con fuego y javascript con javascript.
Gracias a un tutorial de John Resig y a la super-increíble recién-descubierta-por-mi librería jQuery hice un bookmarklet que regresa todos esos hrefs a urls comunes y corrientes.
Pa instalar el bookmarklet arrastren a su barra de vinculos el siguiente link—> Estúpido Wordpress quien sabe qué hace que no puedo poner el link del bookmarklet. Argh que frustración. Quien lo quiera probar, va a tener que crear un nuevo bookmark y pegar en la dirección el siguiente codigo:
javascript:var%20s=document.createElement('script');s.setAttribute('src',%20'http://jquery.com/src/jquery-latest.js');document.body.appendChild(s);s.onload=function(){$("td a[@href*='javascript']“).each(function(){a=this.href;s=a.substr(14,(a.length-4-14));n=a.substr(a.length-2,1);this.href=((n==1)?location+s+’.shtml’:url=location+s+’-'+n+’.shtml’).replace(’busca.php’,'tabs/’);})};void(s);
No lo he probado, pero debería funcionar en todos los navegadores. Y si tengo tiempo, este fin de semana lo adapto a un script de Greasemonkey que de paso nos libre de los asquerosos pop-ups de mercado libre
Ah y por si a alguien le interesa, aca el codigo de la función pa que vean que bonito es jQuery:
$("td a[@href*='javascript']“).each(
function(){
a=this.href;
sn=a.substr(14,(a.length-4-14));
num=a.substr(a.length-2,1);
if (num==1) url=location+sn+’.shtml’; else url=location+sn+’-'+num+’.shtml’;
this.href=url;
}
)
P.D. No puede ser que me haya tomado más tiempo intentar—sin exito—postear el bookmarklet que crearlo. Ya recordé porque odiaba WP.
Prototype 1.5.0 Liberado
Prototype, mi librería JavaScript favorita ( no sé si por mucho ) acaba de dar un enorme salto evolutivo, pues además de estrenar versión — la 1.5.0, lanza un nuevo sitio ahora si con dominio propio y por fin la esperada documentación oficial.
Además el nuevo sitio cuenta con una sección de tips y tutoriales y un blog escrito por los desarrolladores de la librería. El sitio corre gracias al CMS Mephisto y la mano de Justin Palmer se nota por todos lados.
Ahora que lo veo, en el sitio nuevo no dicen por ningún lado las mejorías que trae esta nueva versión de la librería. Se ve que se vieron apurados con el lanzamiento de la nueva versión de jQuery.
Ahora quiero tiempo libre para jugar con estas librerías… hace mucho que no hago Javascript.
Cake rulz!
International PHP Magazine hizo una encuesta ¿Cual es el mejor framework MVC para PHP? y me da gusto leer que CakePHP le pateó el trasero a todos los demás con un 78% de los votos (y eso que yo no voté). El segundo lugar fue Symfony con un 10.9%.
Ahora, sería interesante poner a Cake contra frameworks de otros lenguajes. En este caso es obvio que RoR es mucho más popular, pero de cualquier forma sería un interesante ejercicio.
Ahora sigo creyendo que lo que le falta a Cake es una killer-app, pero aca hay una pequeña lista de proyectos que están usando el framework.