[Python-es] Dudas para la publicación (GPL) de una herramienta python de reporting

Alberto Curro bertothunder en gmail.com
Jue Dic 16 12:26:48 CET 2010


Hola a todos,

  Antes de todo, disculpad por el tocho, pero creo que esto puede ser de
interés...

  Allá por el 2005 tenía una pequeña consultora freelance con un compañero,
y por necesidades de algunos clientes decidimos diseñar una herramienta de
generación e impresión de informes. Fue nuestro primer desarrollo en este
lenguaje (de hecho aprendimos python con ella :)), para python 2.3, creo
recordar, y dadas esas circunstancias, como comprendereis, la calidad y
limpieza del código ni su diseño no eran ninguna maravilla :)

  La estuve manteniendo, depurando cosillas y mejoras hasta aproximadamente
principios del 2007, que se abandonó porque estos clientes implementaron
otro software que ya traía su propio gestor de informes; por simple tema de
falta de tiempo, y pese a que la solución tenía muchísimas posibilidades, la
abandoné y ha quedado almacenada en mi SVN todo este tiempo, hasta hace un
par de semanas que, haciendo limpieza de mis servidores personales, me
encontré el código, y como creo que tiene muchas posibilidades con un poco
de trabajo en ella, he hablado con mi antiguo compañero para publicarlo como
GPL, con él como coautor, claro, y no ha puesto mayor problema al respecto.

  Me surgen entonces las siguientes dudas:

  - Licencia: ¿qué problemas pueden surgir? Estoy desconectado desde hace un
tiempo del mundillo del software libre, y ya no me acuerdo si alguno de los
módulos usados (4Suite, Reportlab) podría afectar en la publicación de la
solución en GPL.
  - Tecnología: ¿hay soluciones mejores, o más eficientes, para el
procesamiento de los XML, XSLT, o mejores que reportlab?
  - Repositorio: ¿qué forja debería usar para publicarlo?

  A nivel técnico, el programa habría que revisarlo, dándole posibilidades
en cuanto a parámetros de entrada, posibles salidas, una buena
refactorización y puesta al día del código (os recuerdo que fue nuestro
primer software python, aprendimos python con él...) etc., dado que ahora
mismo lo que hace es un proceso de 1 única vía: coge xml -> transforma XSL
-> genera RML -> convierte con reportlab -> almacena / imprime.


  La solución en sí es muy sencilla: coge un fichero XML con datos, lo
procesa mediante XSLT, genera un documento RML y lo procesa con Reportlab
para generar el PDF final (y enviarlo a impresora o guardarlo). Aparte de
reportlab, se usaba 4Suite para el procesado de XML, el motor XSLT y, por
supuesto, Reportlab.

  Sin embargo, a nivel características era muy potente gracias a Reportlab:
se podían generar auténticas "virguerías" a nivel de informes, con la
complejidad que se requiriese; sólo deciros que fuimos capaces de conseguir
generar, punto por punto, línea por línea, imagen por imagen, todos los
tipos de informes usados por 3 empresas de distintos tamaños (hablamos de
facturas, informes internos, albaranes, etiquetado para logística, etc.)
eliminando el uso de los formularios pre-impresos que venían usando, sin que
se notase el cambio.

  Eso sí, el mayor problema (y donde se consumía el tiempo) era en la parte
del diseño de las plantillas XSL y RML, que no habíamos escrito un software
de diseño de las plantillas, y se hacía a mano :)  Por otro lado, no era una
maravilla en velocidad: un informe normal tardaba alrededor de 1-1.5
segundos en estar en pantalla, un informe muy largo (más de 20 páginas) o
muy complejo... pues imaginaos. La parte más lenta era la de transformación
XML/XSLT (incluido el parseo y validación del XML); después de esto iba
bastante bien, aunque reportlab en aquel momento no eran tampoco la panacea
en velocidad.

   Bueno, creo que ya me he explayado bastante por ahora, para lo que eran
unas simples preguntas; cualquier recomendación, consejo, interés en el
proyecto, o preguntas, aquí me tenéis. No os cortéis :)

  Saludos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101216/572dfc8a/attachment.html>


Más información sobre la lista de distribución Python-es