Luego de instalar Diaspora y dedicarle un buen tiempo a analizar sus características y como había sido programado, una de las cosas que no me gustó es que estuviera desarrollado en Ruby On Rails, no me tomen a mal, RoR puede ser genial y permitir un desarrollo rápido pero Ruby no es uno de los lenguajes más populares acutalmente y hay que recordar que uno de los principales problemas de la escalabilidad de Twitter puede tener su explicación en el uso de RoR.
Por otro lado una de las características que me parecieron interesantes del proyecto fue que utilizara MongoDB, un sistema de base de datos noSQL que tiene muchas de las características que los sistemas RDBMS. Como sabrán los que siguen este blog regularmente el framework PHP que yo creo más características ofrece y que trato de promover es CodeIgniter, tanto por su sencillez y rapidez. Por lo tanto me puse a buscar una librería que añadiera el manejo de MongoDB a este framework y la encontré en un proyecto hospedado en bitbucket llamado CodeIgniter Mongo Library. Aún es un trabajo en desarrollo y su autor Alex Biblie reconoce que aún hay varias cosas que mejorar.
Hasta aquí me parecía todo claro, usar CodeIgniter con esta librería para proveer una alternativa en Diaspora en PHP, pero hay un detalle necesario en el proceso de desarrollo que es la posibilidad de administrar, es decir crear/modificar/borrar tablas y registros de la base de datos de forma sencilla, buscaba algo parecido al PHPMyAdmin, es así como encontré PHPMoAdmin.
PHPMoAdmin, permite administrar una base de datos MongoDB de forma tan sencilla lo interesante de este proyecto es que dice que esta basado en un framwork PHP de alta-perfomance llamado Vork, nunca lo había escuchado y despertó mi curiosidad averiguar que tenía para ofrecer este framework PHP.
Lo primero que descubrí de Vork es que es un framwork que sigue la filosofía VMC, que está basado en PHP 5.0 o superiores, que soporta en su versión más basica como base de datos a MySQL, MongoDB y Amazon RDS, aunque puede trabajar añadiendo las librerias apropiadas con cualquier DB. Permite además importar módulos de otros framworks PHP como CodeIgniter, CakePHP o Zend. Además de entre sus muchas extensiones disponibles estan las que permiten integración con Google Maps, Charts, Analytics, Sitemap, Checkout y Translation, algo que es muy difícil de encontrar en los frameworks PHP.
Leer estas características fabulosas me animaron a probarlo y debo decir que estoy gratamente sorprendido, es rápido como afirman en su documentación y además es tan sencillo de usar como CodeIgniter, es más podríamos decir que es un CodeIgniter mejorado. Aclaro que no lo he podido usar extensamente pero por lo pronto puedo decir que estoy gratamente sorprendido por este framework y planeo usarlo en mis futuros proyectos, ya les daré más detalles conforme vaya familiarizandome con el mismo.
Esto de los frameworks que surgen como setas, no se donde nos va a llevar.
Cuando le heche el ojo a CI, me gustó bastante. Incluso de llegue a plantear convertirlo en mi framework de uso principal, pero buscando funcionalidades que hechaba en falta, descubri «yii», auqnue no he tenido tiempo de profundizar.
Ahora tras leerte, me pica la cusiosidad esas funcionalidades de APIs de google.
¿No crees que seria de mas utilidad que todos estos frameworks hubiesen apoyado a CI ampliandolo, que cada uno montar su «clon»?
En cierta forma el tener un sólo proyecto que centralice todos los esfuerzos de desarrollos es más eficiente y parece tentadora, ya no se repiten esfuerzos reinventando la pólvora, pero por otro lado la diversidad también tiene sus ventajas, uno de ellos es la robustez.
Sobre esto el filósofo, matemático y trader Nassim Taleb explica claramente en la segunda edición de su libro «El sisne negro», en un ensayo que añadió al mismo llamado «On Robustness and Fragility», que a mayor eficiencia el riesgo de un evento catastrófico que pude destruir todo el sistema aumenta de una manera racionalmente intolerable.
Taleb dice que debemos tomar como ejemplo a la naturaleza que crea sistemas redundantes, que pueden sobrevivir incluso si una parte importante del sistema colapsa. Imaginate que tengamos un sólo gran framework con todo lo que podamos desear en él, a la primera que alguién descubre un fallo grave de seguridad, todo aquello que se ha construído sobre él colapsaría, por el contrario múltiples framworks, tienen el efecto negativo de la repetición de esfuerzos y un progreso lento, pero la gran ventaja de que el fallo grave de uno de ellos, no afecta a todos los demás y sirve de ejemplo de como no hacer las cosas.
Me parece chevere el esquema MVC que se parece a muchos que lo plantean de la misma manera, lo cual es bueno. Pero lo que no me gusta para nada es la parte de la Vista, meter código en esta parte no es bueno, se deberían usar algún de los tantos modelos de plantallas. Es muy chistos ver sus ejemplos de uso de jQuery o DOJO ver como hacen un echo del JS lo cual es de muy mal gusto.
Hace mucho que no toco PHP pero pensé que el uso de templates había queda como la moejor forma de mantern la vista, lo cual es muy buena práctica.