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!