Fue a principios del año 2014 cuando la idea de reescribir OpenClinic en un framework de programación empezó a retumbar con más fuerza en mi cabeza. Por aquel entonces, estaba dedicando mucho tiempo a aprender Django para el proyecto migasfree y quería explorar otros aspectos de esta herramienta. Una vez más, eché mano de mi antiguo proyecto para que me sirviera de conejillo de indias en mis experimentos.
Esos experimentos duraron alrededor de un mes, lo necesario para indagar sobre las clases de vistas genéricas de Django, y volví a meter el juguete en el cajón de los recuerdos. Sólo llegué a terminar muy por encima el bosquejo del nuevo modelo de datos y las operaciones básicas sobre uno de los modelos. También me entretuve en descubrir componentes de terceros para simplificar algunas de las tareas (como paginaciones de elementos, construcción de formularios y un nuevo interfaz de administración).
El tiempo ha vuelto a pasar, más rápido de lo que a uno le gustaría... y me paré a pensar sobre algo que escribí hace ya un par de años. Sobre la idea de renovar OpenClinic en otro lenguaje, con un framework que ayudara a concentrarse en la lógica de negocio... pero sobre todas las cosas, en publicar en abierto un proyecto desde el inicio. Tengo que reconocer que sigue siendo una de mis asignaturas pendientes y que he vuelto a caer en la falacia de querer que estuviera mínimamente decente antes de subirlo a un repositorio público. Si sirve alguna excusa, ni siquiera tenía claro el nombre del proyecto, por lo que estas dos últimas semanas, con energías renovadas (y gracias al tiempo libre extra), me he concentrado en construir la funcionalidad básica y dejar la elección del nombre para última hora.
Sí, habéis leído bien el tiempo que me ha costado realizar la tarea: dos semanas. Eso ha sido gracias a dos elementos cruciales:
- la experiencia acumulada en Django
- la facilidad que otorga este framework para realizar tareas básicas
Pero, aunque el resultado final está casi a la altura del proyecto original, esto no significa un nuevo resurgir de la aplicación. Simplemente he sacado de mi cabeza una tarea pendiente, he sentado los mimbres de lo que podría ser la evolución de la idea (si alguien contribuye con código adicional al repositorio, lo revisaré encantado) y he constatado la importancia de integrar nuevo código a partir de librerías y proyectos de terceros. Como dije en su día, al no tener colaboración directa de profesionales de la medicina, no se puede probar la eficacia de la idea, ni ampliarla en la dirección adecuada (pese a las más de 34.500 descargas del original, el feedback obtenido no es significativo).
Quito de mi mente esa idea que resurgía cada poco de reorientar el proyecto, con el objetivo de dejar sitio libre para otros nuevos planes. Y la quito definitivamente, volcando el código en un repositorio público. Como dijo Linus Torvalds, no hay mejor copia de seguridad que publicar las cosas para todo el mundo.
He cambiado el lenguaje de programación a Python, el cual me parece mucho más boyante y con mejores cimientos que PHP. Y me he decantado por Django por ser un proyecto con mucho recorrido y en el que ya tenía muchas horas de vuelo. Gracias a esta herramienta, se ha eliminado mucho código repetido y no ha hecho falta (casi nunca hace falta si se busca lo suficiente) reinventar el fuego ni la rueda.
Django tiene una comunidad muy activa y esto también se demuestra en la cantidad de aplicaciones que existen. Para cada funcionalidad que quería añadir, he buscado una aplicación ya existente que la cubriera. Alguna de ellas es tan reciente que aún tiene errores en el código. Otra, al no estar demasiado actualizada, no me he permitido usar la última versión liberada de Django (la 1.9). Es el precio que se debe pagar por código que en principio no controlas, pero las ventajas, para mí, son más importantes que estos inconvenientes. Decía que en un principio no controlas ese código... pero en realidad no es así. Al apoyarte en otros programas que también son software libre, puedes mandar las mejoras pertinentes para que todos nos beneficiemos. Además, el currículum personal no sólo se alimenta de contribuciones propias sino que también son muy importantes las colaboraciones se que hacen en proyectos de otros. Diría que enriquecen todavía más.
Resumiendo, el "nuevo" OpenClinic sigue manteniendo la esencia de la simplicidad (incluso se han recortado elementos superfluos respecto al original), pero no está recomendado para su uso en producción. No se ha pensado en cómo facilitar la instalación para el público en general, por ejemplo. Es sólo una pieza de código para que sirva de ejemplo para otros. Y lo mejor es que si lo probáis, sea a través de un entorno virtual para que no cause problemas con otras cosas que tengáis instaladas.