{"id":81,"date":"2016-09-04T01:03:21","date_gmt":"2016-09-04T06:03:21","guid":{"rendered":"http:\/\/drmad.org\/blog\/?p=81"},"modified":"2017-05-09T23:08:47","modified_gmt":"2017-05-10T04:08:47","slug":"m3-framework","status":"publish","type":"post","link":"https:\/\/drmad.org\/blog\/m3-framework.html","title":{"rendered":"M3 Framework"},"content":{"rendered":"<p><b>Actualizaci\u00f3n: <\/b>El <i>framework <\/i>ahora se llama \u00ab<a href=\"https:\/\/drmad.org\/blog\/vendimia-framework.html\/\">Vendimia<\/a>\u00bb<\/p>\n<p><strong>TL;DR<\/strong>: Para ir al <em>cau cau<\/em> de este post, <a href=\"#tldr\">haz clic aqu\u00ed<\/a>.<\/p>\n<h1>Un poco de historia.<\/h1>\n<p>Todo empez\u00f3 con el servidor web <a href=\"http:\/\/www.xitami.com\/\">Xitami<\/a> a finales del milenio pasado, por all\u00e1 en el lejano 2000. <a href=\"http:\/\/jgwong.org\">Jaime<\/a> y yo la pas\u00e1bamos 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&#8230;<\/p>\n<p><!--more--><\/p>\n<p>Por esas \u00e9pocas, Jaime (como siempre ha sucedido) me present\u00f3 la nueva tecnolog\u00eda de moda: <a href=\"http:\/\/php.net\">PHP<\/a>. Y empez\u00f3 un romance con el desarrollo web que a\u00fan no acaba.<\/p>\n<p>Con el tiempo, empezamos a desarrollar librer\u00edas para manejar cosas comunes, como acceso a la base de datos o validaci\u00f3n de formularios. Yo hice una clase para un motor de plantillas llamado &#8216;keadoo&#8217;, entre otros juguetes m\u00e1s. Con el tiempo, tenia varias librer\u00edas que me ayudaban con el desarrollo web, y les puse de nombre &#8216;Matrix&#8217;.<\/p>\n<p>Pero pronto PHP empez\u00f3 a quedar obsoleto. Su falta de especificaci\u00f3n formal (y por lo tanto, de orden), numerosos problemas de <a href=\"http:\/\/programmers.stackexchange.com\/questions\/32541\/why-are-php-function-signatures-so-inconsistent\">inconsistencia<\/a> en sus nombre de funciones, y sus clases\/objetos que <a href=\"http:\/\/php.net\/manual\/en\/oop4.php\">dejaban que desear<\/a>, alentaban indirectamente a malas pr\u00e1cticas de programaci\u00f3n.<\/p>\n<p>Nuevos y novedosos lenguajes empezaron a emerger, y con ellos nuevas formas de hacer aplicaciones Web. Recuerdo el <em>Dynamic Programming Day<\/em> del 2008: Un evento sobre lenguajes de programaci\u00f3n din\u00e1micos. Nunca nadie mencion\u00f3 a PHP. Me sent\u00ed un tanto excluido, y quiz\u00e1s algo avergonzado.<\/p>\n<p>Pasaron los a\u00f1os, y decid\u00ed dejar PHP. Revis\u00e9 <a href=\"https:\/\/www.djangoproject.com\/\">Django<\/a> y <a href=\"http:\/\/rubyonrails.org\/\">Rails<\/a>, \u00e1mbos con dos filosof\u00edas de programaci\u00f3n muy diferenciadas, y muy buenas ideas. Pero \u00e1mbos tuvieron ciertos detalles que no me permitieron ser felices con ellos.<\/p>\n<p>Por una iron\u00eda del destino, cerca a esa \u00e9poca fui invitado a ense\u00f1ar PHP en un instituto local \ud83d\ude42 Al prepararme para el curso, y releer toda su documentaci\u00f3n, me di cuenta que PHP estaba <em><a href=\"https:\/\/drmad.org\/blog\/10-cosas-que-probablemente-no-sabias-de-php.html\">menos feo<\/a> <\/em>\ud83d\ude00 as\u00ed que decid\u00ed darle una nueva oportunidad.<\/p>\n<p>Actualic\u00e9 todas las librer\u00edas, la mayor\u00eda las convert\u00ed en objetos, y empec\u00e9 a unir todo como una gran sola unidad. Implement\u00e9 un <em>ActiveRecord<\/em> y un preprocesador de CSS. Elimin\u00e9 el &#8216;keadoo&#8217;, para usar PHP simple en las vistas (ya que regresaron el tag corto <code>&lt;?=<\/code> ) Esta nueva versi\u00f3n se llam\u00f3 &#8216;Matrix 2&#8217;, obviamente.<\/p>\n<p>Y hace unos dos a\u00f1os atr\u00e1s (por el 2014), viendo la proliferaci\u00f3n de nuevos frameworks de desarrollo web, decid\u00ed tambi\u00e9n preparar el m\u00edo para publicarlo como <em>OpenSource. <\/em>Le constru\u00ed los scripts de administraci\u00f3n, y tap\u00e9 varios huecos que quedaban en la implementaci\u00f3n. Se supone que debi\u00f3 haberse llamado &#8216;Matrix 3&#8217;, pero &#8216;matrix&#8217; ya es un nombre con otros significados (y reusarlo ser\u00eda muy <em>huachafo<\/em>), as\u00ed que renombr\u00e9 todo el proyecto a &#8216;M3&#8217;. Versi\u00f3n 0.0.0.1 \ud83d\ude00<\/p>\n<p>El a\u00f1o pasado, por motivos laborales, Jaime (Jaime, Jaime&#8230; siempre Jaime. Gracias, Jaimito \ud83d\ude00 ) tambi\u00e9n regres\u00f3 al PHP. Y en su re-preparaci\u00f3n, aprendi\u00f3 mucho m\u00e1s de programaci\u00f3n, conocimientos que me los ha estado pasando de a pocos, desde entonces. Y a ra\u00edz de ello, le d\u00ed el \u00faltimo gran <em>overhauling<\/em> a todo el M3, y buscando los \u00e1nimos para publicarlo, ya que pasar\u00e1 buen tiempo antes que llegue a la primera versi\u00f3n estable. Incluso a la primera beta.<\/p>\n<p><a name=\"tldr\"><\/a><\/p>\n<h1>Y el momento lleg\u00f3.<\/h1>\n<p>Hoy fue el <a href=\"http:\/\/www.softwarefreedomday.org\/\">Software Freedom Day<\/a>, celebrado tambi\u00e9n en Ica por los chicos de Icanux. Y como ya hab\u00eda estado mostrando el M3 a varios amigos, me pidieron que lo exponga en una charla.<\/p>\n<p>As\u00ed que sin m\u00e1s pre\u00e1mbulo, les presento la version 0.0.1 del Framework de desarrollo en PHP M3:<\/p>\n<p><a href=\"https:\/\/github.com\/vendimia\/vendimia\">https:\/\/github.com\/M3framework\/m3<\/a><\/p>\n<p><em>Super alfa<\/em>. Lejos a\u00fan para ser considerado \u00f3ptimo para producci\u00f3n. Pero <a href=\"http:\/\/www.businessinsider.com\/the-iterate-fast-and-release-often-philosophy-of-entrepreneurship-2009-11\">si no est\u00e1s avergonzado de tu primera versi\u00f3n de tu producto<\/a>&#8230; Aunque, la verdad, esta versi\u00f3n est\u00e1 bonita \ud83d\ude42 Me gusta c\u00f3mo est\u00e1 quedado, pero el camino a recorrer es largo a\u00fan.<\/p>\n<p>Aun no hay documentaci\u00f3n \ud83d\ude1b Estoy en proceso de creaci\u00f3n. Pero por hoy, es suficiente. Hace 2 d\u00edas que no duermo bien por la gripe, despu\u00e9s escribir\u00e9, para empezar, un tutorial sobre c\u00f3mo crear un proyecto en M3.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualizaci\u00f3n: El framework ahora se llama \u00abVendimia\u00bb TL;DR: Para ir al cau cau de este post, haz clic aqu\u00ed. Un<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[14,15],"tags":[],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-php","category-vendimia_framework"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6p3z1-1j","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":20,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/81\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}