M3 Framework

Posted by

Actualización: El framework ahora se llama «Vendimia»

TL;DR: Para ir al cau cau de este post, haz clic aquí.

Un poco de historia.

Todo empezó con el servidor web Xitami a finales del milenio pasado, por allá en el lejano 2000. Jaime y yo la pasábamos de lo lindo haciendo programas en Pascal para usarlo de filtro HTML en el Xitami, y colocar un contador de visitas en la web, y otras monadas. Oh, las gratas memorias…

Por esas épocas, Jaime (como siempre ha sucedido) me presentó la nueva tecnología de moda: PHP. Y empezó un romance con el desarrollo web que aún no acaba.

Con el tiempo, empezamos a desarrollar librerías para manejar cosas comunes, como acceso a la base de datos o validación de formularios. Yo hice una clase para un motor de plantillas llamado ‘keadoo’, entre otros juguetes más. Con el tiempo, tenia varias librerías que me ayudaban con el desarrollo web, y les puse de nombre ‘Matrix’.

Pero pronto PHP empezó a quedar obsoleto. Su falta de especificación formal (y por lo tanto, de orden), numerosos problemas de inconsistencia en sus nombre de funciones, y sus clases/objetos que dejaban que desear, alentaban indirectamente a malas prácticas de programación.

Nuevos y novedosos lenguajes empezaron a emerger, y con ellos nuevas formas de hacer aplicaciones Web. Recuerdo el Dynamic Programming Day del 2008: Un evento sobre lenguajes de programación dinámicos. Nunca nadie mencionó a PHP. Me sentí un tanto excluido, y quizás algo avergonzado.

Pasaron los años, y decidí dejar PHP. Revisé Django y Rails, ámbos con dos filosofías de programación muy diferenciadas, y muy buenas ideas. Pero ámbos tuvieron ciertos detalles que no me permitieron ser felices con ellos.

Por una ironía del destino, cerca a esa época fui invitado a enseñar PHP en un instituto local 🙂 Al prepararme para el curso, y releer toda su documentación, me di cuenta que PHP estaba menos feo 😀 así que decidí darle una nueva oportunidad.

Actualicé todas las librerías, la mayoría las convertí en objetos, y empecé a unir todo como una gran sola unidad. Implementé un ActiveRecord y un preprocesador de CSS. Eliminé el ‘keadoo’, para usar PHP simple en las vistas (ya que regresaron el tag corto <?= ) Esta nueva versión se llamó ‘Matrix 2’, obviamente.

Y hace unos dos años atrás (por el 2014), viendo la proliferación de nuevos frameworks de desarrollo web, decidí también preparar el mío para publicarlo como OpenSource. Le construí los scripts de administración, y tapé varios huecos que quedaban en la implementación. Se supone que debió haberse llamado ‘Matrix 3’, pero ‘matrix’ ya es un nombre con otros significados (y reusarlo sería muy huachafo), así que renombré todo el proyecto a ‘M3’. Versión 0.0.0.1 😀

El año pasado, por motivos laborales, Jaime (Jaime, Jaime… siempre Jaime. Gracias, Jaimito 😀 ) también regresó al PHP. Y en su re-preparación, aprendió mucho más de programación, conocimientos que me los ha estado pasando de a pocos, desde entonces. Y a raíz de ello, le dí el último gran overhauling a todo el M3, y buscando los ánimos para publicarlo, ya que pasará buen tiempo antes que llegue a la primera versión estable. Incluso a la primera beta.

Y el momento llegó.

Hoy fue el Software Freedom Day, celebrado también en Ica por los chicos de Icanux. Y como ya había estado mostrando el M3 a varios amigos, me pidieron que lo exponga en una charla.

Así que sin más preámbulo, les presento la version 0.0.1 del Framework de desarrollo en PHP M3:

https://github.com/M3framework/m3

Super alfa. Lejos aún para ser considerado óptimo para producción. Pero si no estás avergonzado de tu primera versión de tu producto… Aunque, la verdad, esta versión está bonita 🙂 Me gusta cómo está quedado, pero el camino a recorrer es largo aún.

Aun no hay documentación 😛 Estoy en proceso de creación. Pero por hoy, es suficiente. Hace 2 días que no duermo bien por la gripe, después escribiré, para empezar, un tutorial sobre cómo crear un proyecto en M3.

5 comments

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *