Husq: un gestor de tareas pendientes

¡Esta vez en serio! [Puñetazo en la mesa] Ya es hora de aprender C++ y Qt. Para motivarse a estudiar hay que marcarse objetivos, como un pequeño proyecto. Con tal propósito me he inscrito en la quinta edición del Concurso Universitario de Software Libre, con una propuesta llamada Husq.

Husq será un programa gráfico para la gestión de tareas pendientes, organizadas jerárquicamente.
Cada tarea tendrá nombre, descripción, fecha límite y, opcionalmente, prioridad y categoría. Además, y como punto clave y diferencial, podrá ser desglosada en varias subtareas. Así mismo podrá disparar alarmas programadas.

Mi idea inicial es basarme, en la medida de lo posible, en TuDu. Intentaría que tuviera las mismas funcionalidades que esta utilidad (e incluso que sus archivos fueran compatibles). Como TuDu no es demasiado grande (unas 7000 líneas de código), creo que puede ser un proyecto realista y asequible para meterme en harina y aprender.

No obstante también recogeré ideas de hnb, yaGTD, Taskwarrior, gtg, Yokadi y otros, por lo que quizá dicha compatibilidad no sea posible, o precise de aportar parches a TuDu.

Con respecto a TuDu, Husq aportará:

  • Interfaz gráfica: TuDu es un programa ncurses para la terminal Unix, mientras que Husq será un programa gráfico basado en las bibliotecas Qt de Nokia, por lo que tendrá un look’n’feel nativo tanto en GNU/Linux como en Mac OS X y Microsoft Windows.
  • Internacionalización: TuDu sólo está disponible en inglés, pero Husq lo estará en al menos inglés y castellano, y será posible adaptarlo fácilmente a otros idiomas.
  • Robustez del código: en el código de TuDu la interfaz ncurses está íntimamente imbricada en la lógica del programa. Husq seguirá patrones de diseño, como MVC, que lo harán más robusto y flexible.
  • Mejoras a la usabilidad, nuevas funciones útiles y corrección de bugs.

Un efecto colateral de este proyecto es que las bases del concurso exigen que se vaya informando del desarrollo en un blog, lo que me obligará a retomar éste 🙂