Mi nuevo proyecto: Gonium

Tal vez se vea como una tremenda reinvención de rueda.

¿Por qué?

Hay un dicho muy cierto: si quieres las cosas bien hechas, hazlas tu mismo.

Gonium
Captura de pantalla de Gonium

Hay una infinidad de CMS’s a lo largo y ancho de la web. Realmente la fauna es inmensa. Hay CMS’s fáciles de instalar, otros fáciles de administrar, fáciles de extender, fáciles de modificar, etc…

Mi propia reinvención partirá siendo Gonium. Espero poder agregar lo bueno y evitar lo malo de los otros CMS’s. Pero para que no sea una reinvención total, decidí ocupar un Framework PHP: Zend Framework. ¿Por qué ZF? Básicamente porque ya lo conocía. Cuenta con documentación bastante buena, ciclos de desarrollo ágiles, es libre, tiene buena comunidad, etc…

No esperen mucho, está en una etapa embrionaria muy temprana aún. Prácticamente TODO se debe hacer a mano, incluyendo instalación, configuración de la base de datos, crear/instalar módulos, etc…

Además es una buena oportunidad para probar Google Code como repositorio del proyecto.

Inspiración

Lamentablemente ninguno de los CMS’s que he ocupado me ha logrado satisfacer del todo. Generalmente cumplen con su objetivo, pero siempre hay algo que le falta a alguno que sí tiene el otro. O algo que le sobra… Así que pretendo juntar lo bueno y evitar lo malo de aquellos que he probado.

Por ejemplo, admiro y me inspiro en los siguientes:

  • Joomla
    • Ventajas
      • Facil de instalar. Además el instalador da datos precisos y recomendaciones de ajustes del servidor.
      • Permite usar URL optimizadas para los motores de búsqueda (SEO)
      • Tiene miles de extensiones, el sistema de instalación de extensiones es NOTABLEMENTE sencillo y fácil de ocupar.
      • Muchas partes internas se puede modificar con extensiones (por ejemplo el editor enriquecido)
      • Existen muchas extensiones de terceros bastante útiles. A veces permiten hacer cosas bastante complejas.
      • Los temas, aun cuando mezclan html y php, son fáciles de editar. Generalmente son el esquema completo (layout) de header a body. El css también es fácil de editar. Incluso se pueden editar vía web.
  • Joomla
    • Desventajas
      • La programación es algo enredada. No es dificil, pero a veces no es fácil entender “de donde viene” alguna cosa.
      • Muchas extensiones son sucias, tanto en su HTML (no w3c-estándar), javascript semifuncional (funciona bien en 1 o 2 navegadores) lleno de errores o excepciones.
      • No es fácil traducirlo completamente, sobre todo las extensiones.
      • Ocasionalmente, el motor rompe compatibilidad con las extensiones o viceversa.
      • javascript funcional, pero para usos muy simples. Se hechan de menos algunos detalles de otros CMS’s, como por ejemplo un editor enriquecido.
  • Phpbb3
    • Ventajas
      • Amplísima documentación.
      • Permite uno de varios motores de base de datos.
      • Comunidad de usuarios enorme.
      • Manejo de permisos con una precisión tremenda. Se pueden establecer permisos realmente complejos.
  • Phpbb3
    • Desventajas
      • Como CMS, es buen foro.
      • NO TRAE RSS. Error fatal para los tiempos actuales.
      • NO TIENE URL’S OPTIMIZADAS PARA SEO.
      • Los temas son muy complejos de escribir.
      • Sus extensiones se basan en “mods”, que se deben implementar a mano (editando archivos, y base de datos). Más conviene encontrar un phpbb-enchulado que intentar implementar mod’s. En este caso, la mayoría de las veces conviene solo usar Mysql como base de datos.
  • WordPress
    • Ventajas
      • Muchísimo más fácil de adminstrar que joomla o phpbb
      • Fácil de traducir.
      • Incorpora de fabrica varios detalles que lo hacen agradable de usar, por ejemplo: rss, ajax, un diseño css/javascript agradable. Por lo general, usa javascript no-intrusivo, lo que lo hace más accesible.
  • WordPress
    • Deventajas
      • Dependiente de Mysql
      • Como CMS, es un grandioso blog.
      • Su sistema de extensiones (plugins) es muy simple. Hacer efectivo algun cambio generalmente consiste también en editar el tema.
      • Los temas están PÉSIMAMENTE mal escritos. Son como un espagueti pegoteado.
      • Lamentablemente la traducción es muy “monolítica” (1 archivo traduce TODO el sitio).
      • Como sistema, se siente igualmente “monolítico”. Se siente, en el sentido de que hacer cualquier modificación mayor a veces significa intervenir archivos del motor, después de actualizas el motor, pierdes los cambios, o se rompe compatibilidad, etc… Por ejemplo: me paso que al instalar un plugin para widgets en una versión antigua, luego de una actualización, el plugin venía preinstalado, pero no se podía deshabilitar, por lo tanto tuvo un choque con mi plugin anterior.

Metas

Lo que me interesa conciliar de todo esto en Gonium es:

  • Opensource. Libre, código abierto, blablablah…
  • Bien programado desde el principio. Usando el patrón de diseño MVC. A medida que crezca, se incorporarán librerías que ocupen otros patrones de diseño.
  • Compatible con los estándares W3C. Siempre.
  • Usar URL’s Optimizadas SÍ o SÍ.
  • Temas fáciles de editar (el trabajo del diseñador no es programar).
  • Estructura fácilmente extensible. Un buen sistema de instalación de paquetes.
  • Permita incorporar Ajax. Javascript no-intrusivo, compatible y estándar (aunque no descarto la necesidad de hacks raros para IE, ya saben…).
  • Fácil de traducir (el trabajo del traductor no es programar). Pienso ocupar gettext (.po) por lo rápido, permite usar plantillas (.pot), y además porque existe Poedit que permite obtener las claves del texto traducible desde el código fuente.
  • Incorporar extensiones de primera necesidad (blog, galería, ¿foro?, lector rss, descargas, …)
  • Evitar romper compatibilidad hacia atrás. Lamentablemente no puedo dar garantía de esto mientras no libere una versión “1.0”, pero intentaré todo lo posible.

Y además agregar a futuro Implementar novedades de la web 2.0 como por ejemplo

  • Cuadros, menúes, bontoncitos y efectos Ajax, …
  • Extensiones que usen API’s de servicios externos (mashups).

Si lo pruebas, te gusta, no te gusta, cualquier crítica, idea, ayuda, bienvenida sea.

12 comentarios sobre “Mi nuevo proyecto: Gonium”

  1. Wow, se ve un gran proyecto !!!

    felicitaciones, espero que todo te resulte increíblemente bien, eres inteligente y tienes muchas capacidades, estoy seguro que lograrás todos tus objetivos.

    Siempre es un gran aporte este tipo de proyectos.

    EXITO !!!!

  2. Que notable idea. Te deseo la mejor de las suertes! Hace tiempo que quería aprender a programar y me recomendaste php, tengo un libro por ahí (es avanzado eso sí :P). ¿Se te ocurre por donde empezar? ¿Algún buen libro? ¿Algún IDE?

    Si me llego a manejar, quizá te doy una mano, pero creo que será cuando saques gonium 2 :P.

  3. Aps… otra cosa, no sé si leíste bien los términos y las condiciones… en SourceForge dice unas cosas escandalosas:

    “By submitting, posting or displaying Content on or through SourceForge.net, you grant Company a worldwide, non-exclusive, irrevocable, perpetual, fully sublicensable, royalty-free license to use, reproduce, adapt, modify, translate, create derivative works from, publish, perform, display, rent, resell and distribute such Content (in whole or part) on SourceForge.net and incorporate Content in other works, in any form, media, or technology developed by Company, though Company is not required to incorporate Feedback into any Company products or services. Company reserves the right to syndicate Content submitted, posted or displayed by you on or through SourceForge.net and use that Content in connection with any service offered by Company.”

    No sé que onda la de Google Code, pero para que tengas cuidado :).

  4. de hecho, me dio susto algo de Google Code.

    El año pasado cree un proyecto para coordinar una tarea en la U. Luego que acabo la tarea lo borre.

    Ahora que inscribí este proyecto, me apareció el nombre de mi antiguo proyecto y una opcion de “undelete”. Lo cual me deja la sospecha de que Google guarda una copia del código SIN EL CONCENTIMIENTO de los autores :S

    En este caso no me importa, pero para lo anterior si :B!

  5. Yo con un pequeño manual de lo que has hecho hasta ahora sería FELIZ, acabo de empezar con ZF y ando algo perdido, y mi problema es que no se ingles para poder seguir la documentación oficial del Framework…

    Lo que he visto de tu cms me gusta. ánimo. 😉

  6. Amigo, no es necesario que me dejes información personal en un comentario público. Igualmente un anónimo puede hacer checkout al código fuente 😀

    Si quieres enviarme un mensaje privado, usa mi formulario de contacto http://blog.gon.cl/contacto/

    Estoy viendo tu aplicación. En todo caso, tu app no está hecha “un poco mal”, solo que hay cosas que a lo mejor no era necesario introducir.

    Por ejemplo, no tiene estructura modular, pero como tenías solo 1 propósito, tal vez no era necesario.

    Tu Bootstrap es más simple, lo cual no quiere decir que esté malo.

    Y en mi caso, separé varias cosas del Bootstrap, y las dejé en Controller_Plugins app/library/Rox/Controller/Plugin

    Sobre la ACL, he recibido varias ideas (que no me convencen) y se me han ocurrido varias otras (pero muy complejas). Debe ser porque no es fácil calcular “mentalmente” los permisos para saber como implementarlos.

    Pero ahora que lo noto, la verdad es que es un punto importantísimo que debería desarrollar.

    Para que tengas una idea, vengo construyendo Gonium desde Febrero (y ya tenía una precaria implementación de ACL), en el código aún mantengo esos archivos, pero me falta aún una manera de “estandarizar” los modelos. Por eso decía que tenía ganas de integrar un “Load Model Action Helper”.

    Yo pensé en 2 tipos de módulo. Los app/core/modules y los app/usr/modules. Los primeros serían parte básica del sitio y controlarían las acciones principales, como el ErrorHandler, el Auth, etc… Los “usr” serían módulos instalados por el usuario.

    Mi idea era dejar las carpetas con una estructura “limpia” para poder hacer un “instalador” como el que tiene joomla, onda subir un paquete, descomprimirlo e instalarlo en el server, a puros clicks.


    Además tengo preparado un módulo (usr), que no quiero subir aún, porque no tengo clara la estructura del repositorio.

    No quiero ensuciar el repositorio con módulos usr que no todos usarían. Tenía intensión de hacer una rama gonium-extras parecida a la organización del repositorio de Amsn :D. Veré que puedo hacer para dejarlo todo lo más limpio posible.

    Por cierto “Al”, ¿puedes contactarte conmigo en el formulario de Contacto por favor? En una de esas podemos compartir ideas 😀 .

    Salu2

  7. Today good day 🙂
    The interesting name of a site – blog.gon.cl
    I recently 0 hours
    has spent to the Internet So I have found your site 🙂
    The interesting site but does not suffice several sections!
    However this section is very necessary!
    I have added you in elected!
    Forgive I is drunk :))

Deja un comentario

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