Archivo de la etiqueta: cms

Respetarte tu mismo debes, (Crítica a Joomla #1)

Mientras trabaja por volver a levantar un sitio que antiguamente usaba joomla 1.0, tuve un pequeña molestia en el panel de control del nuevo 1.5, debido a que me salía un mensaje de error.

Afortunadamente no era fatal, ya que igualmente podía modificar los parámetros del sitio sin mayor inconveniente. Pero es molesto ver que algo no está bien, menos en un sistema grande como lo es Joomla.

El error me indicaba que había un archivo XML que no se estaba “parseando” adecuadamente, pero no me decía cual archivo ni cual error tenía.

Entonces decidí bajar una copia de seguridad del sitio completo, y replicarlo en mi máquina local para averiguar el error. Recordé que en linux existen miles de aplicaciones por consola, lo suficientemente poderosas para parsear y validar los XML’s de mi sitio.

Ya tuve una experiencia grata con el comando find. Pero me faltaba el comando para validar un archivo xml. Buscando encontré que posiblemente el comando xmllint me podría servir. Aunque finalmente no me ayudó, revelé un pequeño detalle que no me esperaba.

xmllint tiene una opción para validar, pero para realizar ese trabajo, requiere que 1) el archivo XML defina un DTD o 2) se le pase por parámetro. Probando sin usar un DTD por parámetro: probé lo siguiente:

find . -name "*.xml" -exec xmllint --noout --valid "{}" \;

Lamentablemente, el resultado no fue lo que esperaba. TODOS los XML salvo uno, eran inválidos, debido a que NO TENÍAN definido el DTD. Gracias a ese archivo que sí lo tenía, descubrí que joomla TIENE en su sitio un archivo DTD para que los desarrolladores lo incluyan en sus XML de configuración. De esta forma, el desarrollador obliga a que sus archivos XML tengan la estructura que el sistema requiere.

Lo peor… ese único archivo válido, era de un plugin de terceros y no de los desarrolladores oficiales. Es decir, los desarrolladores oficiales de joomla NO RESPETAN sus propias reglas al escribir el código.

Finalmente, xmllint no era lo que estaba buscando, ya que solo debía comprobar cual era el o los archivos mal formados (etiquetas mal cerradas, mal anidadas, …). Como no sabía, consulte en una lista de correo (una de las que tengo en la lista de comunidades), donde me dieron la solución: xmlwf.

Simplemente cambié el comando anterior por el siguiente y asunto arreglado:

find . -name "*.xml" -exec xmlwf "{}" \;

Encontré los culpables (eran 2), los corregí y di por terminado el asunto.
Pero me quedé con el sabor amargo de la despreocupación que los desarrolladores de Joomla han tenido en un detalle tan simple. ¿Que confianza me dan para cuando aparezca una nueva actualización del sistema?

Roxydemo!

Ayer no se porque me dió ganas de probar mi código inútil proyecto personal en un hosting gratuito.

Mientras lo hacía, comenté aquello en mi canal de irc favorito. Fue entonces cuando @janitux me comenta que tenia un hosting y un dominio en desuso.

Igualmente planeaba contratar un dominio y hosting más adelante para levantar un demo. Pero gracias a esto puedo adelantarlo.

Para mirarlo (por ahora nada más que un simple home), pueden acceder acá:

Demostración

Y para mirar las fuentes, pueden acceder al repositorio acá:

No esperen mucho, pues muchas características básicas de uso aún no están implementadas. Lo importante es probar como funciona el backend en un “ambiente de producción” . Es muy distinto probar las aplicaciones así que en el “ámbiente de desarrollo”, donde todas las condiciones necesarias son modificables por el desarrollador.

Por el momento, el único módulo o sub-aplicación interesante que puedo mostrar es http://gon.boaboa.org/twitter Espero que les guste. :B

Por el momento va bien. Gracias a ello logré encontrar algunos detalles que no había visto en mi ambiente de desarrollo.

Gracias @janitux, espero poder sacarle provecho 😀 .

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 PSIMAMENTE 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.