Luego de mas de un año sin poder dedicarme a este proyecto personal, he podido liberar la versión 3.0 de jQuery Archive List un widget de WordPress para mostrar el historial de sitio de una mejor manera y con efectos de jQuery. El salto a la versión 3, es debido a grandes cambios en el código de Javascript y en algunas cosas internas de plugin.

Entre las mejoras de esta nueva versión podrán encontrar:

  • Re-escritura completa del código Javascript, ahora ocupa menos espacio, código mas entendible y debería funcionar mas rápido.
  • Finalmente he agregado soporte para tipos de entradas personalizadas, así que puedes usar este widget si tienes tipos de contenido personalizados.
  • Agregué la clase active a los elementos que enlazan a la página actual.
  • Agregué el atributo de título a los enlaces para generar código HTML validado por la W3C.
  • Se agregó traducción al Holadés (gracias a Patrick Schreibing).
  • Se migró la selección de categorías al API de WordPress.
  • Se solucionó errores de exclusión de categorías.
  • Se solucionó el error de la ausencia de la clase expanded en los meses (gracias to pjarts).
  • Se solucionó el error de no expandirse los meses al seleccionar algunas opciones.

Descárgalo desde el gestor de Plugins de WordPress o desde el sitio oficial de jQuery Archive List Widget. Y cualquier reporte o duda, no te olvides de reportarla en los foros de soporte de WordPress.

Este artículo cuenta mi experiencia luego de tres años, al desarrollar un proyecto de software libre (licencia GPL) y motivarlos a crear sus propios proyectos o colaborar en los existentes. Si no te gusta leer mucho, básicamente quiero compartir que al crear y mantener un proyecto de software libre logras: aprender a ser mejor programador al recibir correcciones de otras personas,  conoces gente de varias partes del mundo interesadas en tu programa, ves correr el programa en lugares no pensados, recibes código programado por otras personas, puedes recibir dinero sin previo aviso y sin nada a cambio, consigues futuros clientes y recibes felicitaciones por resolver un problema de otra persona.

Inicio

Como mi blog hecho con WordPress empezó a acumular años, el historial de artículos se hizo grande y ocupaba mucho espacio para mostrarlo. La solución por defecto es mostrar los años en una caja desplegable pero lucía muy feo y conseguí un sencillo plugin que los mostraba en un menú desplegable con animación hecha en Javascript. El plugin dejó de soportarse al poco tiempo y no siguió funcionando con WordPress, por ello, decidí hacer uno similar y como estaba aprendiendo jQuery (estaba de moda) lo utilicé para la implementación y nombre. Escribirlo fue fácil pues WordPress ofrece una excelente documentación, además, utilicé el plugin que usaba como base.

¿Ofrecerlo como software libre o usar una licencia cerrada y venderlo?

Una vez terminado, pense en 3 posibilidades: usarlo para mi mismo, venderlo por un precio muy barato y ganar algo de dinero por él, liberarlo como software libre porque le podría servir a alguien con la misma necesidad que yo. Decidí ésta última porque por primera vez tenía algo que surgía de una necesidad y estaba seguro de servirle a mucha gente en la misma situación que yo. Lo subí a WordPress y mi sorpresa es que tuvo bastantes descargas los primeros días (creo que como 300).

Por novatada, empecé a recibir peticiones (no quejas) de gente que deseaba mejor código porque no me entendían, soporte para otros días (me decían que si hablaba español por qué no había menús en este lenguaje), soporte para cambiar el formato del mes, etc. Aproveché un tiempo libre y lancé una segunda versión con el código mas sencillo y limpio, documentado, soporte para multi-idioma (en ese momento inglés y español) e implementé la funcionalidad del mes.

Primeras contribuciones

Luego de esos cambios pensé que el plugin estaba listo y no era necesario hacer mas cosas, para mi sorpresa empecé a recibir ideas de nuevas funcionalidades, código de personas para añadir compatibilidad de características de WordPress desconocidas para mi, por ejemplo, para ese entonces no conocida de WordPress MU, shortcodes, filtros, etc. Recibí parches para mejorar el código SQL porque había una persona con miles de posts, etc.

Mi sorpresa es ver como gente desconocida, se tomó el tiempo para estudiar el código elaborado por mí, modificarlo para soportar sus necesidades y compartirlo conmigo para incluirlo en la rama oficial, permitiendo al resto de usuarios disfrutar de estas funcionalidades. Además, las funcionalidades implementadas eran interesantes y muy variadas, yo sólo no hubiese podido hacerlas porque eran situaciones muy distintas en cada caso. Otra cosa interesante, fue que uno de los primeros programadores en enviarme código, tradujo el plugin a Checo y Esloveno, dos idiomas que jamás pensé contar en mi plugin.

Mantenimiento

Una vez con una base de funcionalidades generales, gente empieza a pedir características  mas complejas, a veces fuera de las funcionalidades o el objetivo del plugin, generalmente algunas se resolvían con otro plugin y otras tuve que agregarlas. Una de las mas solicitadas era la posibilidad de excluir tareas pero fallé, sin embargo, otro de los primeros programadores  en contribuir lo implementó sin que le pidiera ayuda y pude ofrecerlo al resto.

Al momento de estabilizarse el proyecto: buena base de usuarios, programadores voluntarios contribuyendo en el proyecto. Noté un incremento en el soporte, la gente al ver que el plugin funciona bien desean expandir sus posibilidades y empiezan a contactarte para ver como realizar ciertas cosas o dar nuevas idea.  Comencé a recibir donaciones simplemente por realizar el plugin, motivandome a realizar nuevas funcionalidades (como soportar muchas instancias que requería casi re-escritura total).

En otras palabras, una vez que el proyecto se mantiene, el mantenimiento consiste en arreglar bugs, dar soporte a las personas y dependiendo de la frecuencia de solicitudes, agregar funcionalidades nuevas. En este punto es bien porque ya vez el fruto del esfuerzo realizado anteriormente, sin embargo, me parece delicado descuidarlo porque se puede ir todo para atrás. Pues aquí la gente confía mas en tí y espera respuestas rápidas, tal vez algunas sean incómodas al exigir como si estuviesen pagando altas sumas por ello, pero otras son buenas al agradecerte por el esfuerzo realizado.

Conclusiones

Después de este tiempo, puedo decir que es uno de los proyectos mas satisfactorios a nivel profesional y pesonal, en el primer ámbito porque me permite mejorar mis capacidades de programación, conseguir nuevos clientes (mi mayor cliente lo conseguí al solucionarle un problema con este plugin), mejora el currículo (puedo demostrar capacidad de liderar un proyecto, experiencia con PHP y WordPress, Javascript, etc) y mas. Respecto a la parte personal, cada vez que recibo un correo de una persona agradeciendome por el trabajo, por el tiempo ahorrado al utilizar este programa, al ver ejecútandose en sitios conocidos o muy extraños. Me alegra saber que he ayudado a otra persona sin nada a cambio, además cuando recibo donaciones pues también es bien saber que se recibe una recompensa monetaria extra por un trabajo que muchas veces es para mí (para mi blog).

Si alguno tiene una idea o programa en mente, es sencillo y sienten que pueden ayudar a otro, liberelenlo bajo una licencia de código abierto, publiquen el repositorio y con el tiempo verás como crece con la ayuda de otros programadores. Realmente es una buena experiencia.

Si alguno desea conocer o probar mis 2 plugins, pueden hacerlo en las siguientes direcciones:

Happy Hacking!

Este es mi segundo plugin para WordPress, creado por solicitud de varios usuarios quienes pidieron tener un plugin similar a jQuery Archive List pero para mostrar las categorías de un blog. Básicamente es el mismo plugin a diferencia que muestra las categorías y la configuración es un poco distinta. Entre las características que ofrece son:

  • Incluye un Widget para mostrar las categorías, con opciones para desplegar en caso de la existencia de subcategorías.
  • Filtro para llamar mostrar el listado usando [ jQuery Categories List ]
  • Utiliza la librería de jQuery incluida en WordPress.
  • Código JS separado en un archivo para mejorar el rendimiento.
  • Opciones para mostrar cantidad de entradas, seleccionar como se ordenan las categorías, simbolos a usar, etc.
  • Soporte para i18n, aunque actualmente solo esta disponible en: Español, Inglés.

Si quieren ver como lucen, simplemente miren como ésta página muestra las categorías y chequeen la compatibilidad del mismo. Si les gustó, voten por 5 estrellas, voten por la compatibilidad y donen para seguir trabajando en estos plugin.

Actualizacion v1.1

  • Soporte para excluir categorías de la lista.

Para descargalo, utilicen el gestor de plugins incluido en su instalación WordPress o desde la página oficial.

Contribuye con la creación de este plugin

Secrets of the JavaScript Ninja, es un libro escrito por el famoso John Resig, (Si eres un desarrollador web deberías saber quien es) creador de jQuery, la grandiosa librería Javascript que facilita enormemente el desarrollo con Javascript.

Hace unos días lo terminé de leer y me gustó mucho, me parece un libro recomendado para todo desarrollador que trabaje con Javascript (recordemos que jQuery no es lo mismo que Javascript), los ejemplos y temas estan dirigidos a programadores con experiencia media o avanzada en el lenguaje, en mi caso, me considero un novato en este lenguaje y logré aprender mucho pero varios temas no los pude entender bien o tenía que leerlo varias veces para captar la idea, sin embargo, si son nuevos con este lenguaje también es bueno leerlo, porque enseña a ver las cosas distintas y como aprovechar la resolución de algunas cosas desde un punto de vista donde se toma ventaja de las características únicas de Javascript, o bien sea problemas existente pero como adaptarlo a las posibilidades de JS.

Los principales temas abarcados por el libro son: tips para mejor desarrollo de scripts, como crear una libería JS, funciones para facilitar ciertas operaciones, ejecuciones de pruebas, creación de código compatible con varios navegadores y muchos mas. Así que, si trabajan con este lenguaje, desean aprender y les gusta leer, compren esten libro que les será muy útil.

Para los lectores / amigos que me leen, saben que siempre en las vacaciones suelo programar algo por diversión como: el resolvedor de sudokus, el cheater para Word Challenge, el Skate or Dice para el PSP. Pues esta vez realicé un widget para WordPress utilizando la librerí­a jQuery, el cual consiste en mostrar los archivos de los artí­culos en una lista contraida, al hacer clic en cada uno de los items se despliega el contenido con un efecto de acordeón o de desvanecimiento tal como se puede observar en la sección de Archivos en la parte izquierda de esta página.

Entre las principales caracterí­sticas que posee son:

  • Utiliza el script de jQuery de WordPress por lo que no sobrecarga las páginas.
  • Sencillo y fácil de configurar.
  • Permite mostrar o no la cantidad de artí­culos por año o mes.
  • Permite mostrar o no los artí­culos que hay en cada mes.
  • Permite seleccionar el formato del mes a mostrar.
  • Se puede utilizar dentro de páginas o artículos.
  • Seleccionar efectos de jQuery.
  • Carga el script en un archivo separado para mejor ejecución y permitir guardarlo en caché.
  • Permite seleccionar el sí­mbolo de la viñeta.

Sé que es sencillo y no ofrece mucho, pero dependiendo del uso y si pueden colaborar con donaciones podré dedicarle mas tiempo con el fin de agregar mas caracterí­sticas configurables. Por ahora, pues descárguenlo e instálenlo, cualquier sugerencia o corrección pueden hacerlo por mensaje privado y/o un comentario en esta entrada.

La licencia del mismo es GPL2 y pueden descargarlo desde el siguiente enlace:

http://wordpress.org/extend/plugins/jquery-archive-list-widget/

Si les gustó mucho el widget y desean colaborar con el desarrollo de futuras versiones pueden ayudar con una donación libre usando el siguiente botón.

Cambios en las versiones: Leer los cambios de esta versión

Contribuye con la creación de este plugin