Hace unos días publicaron Trac-0.12RC1 y es grato comprobar que han incluido mejoras que la comunidad venía demandando desde hace tiempo. Las más destacadas son:
- Integración de babel. Otra estupenda librería en python que facilita la internacionalización de aplicaciones. Con ella resultará sencillo adaptar Trac a múltiples lenguas, tipos de moneda, formato de fechas, etc…
- Soporte de múltiples repositorios. Aunque sea una mejora muy solicitada, siempre hubo formas se suplir su carencia con svn:externals
- Mejoras en la edición de páginas wiki, más cerca de WYSIWYG
- Por fin se pueden editar los comentarios asociados a un ticket!
- Mejoras de usabilidad en el navegador de repositorios. Ahora recuerda los directorios expandidos.
Esto es una prueba de que el proyecto sigue realmente activo pese a lo que algunos piensan. Desde @klicap pensamos que el diseño de su API es realmente bueno. Probaremos CMIS Trac Plugin con esta nueva versión.
A finales de agosto del año pasado comencé un nuevo proyecto, un plugin para Trac que permitiese su integración con Alfresco. Desde entonces mucho ha llovido, especialmente este año. Cuando comencé no encontré ninguna librería que facilitase el trabajo con el Restful API que proporciona Alfresco y comencé un pequeño cliente para este proyecto. Más adelante pensé que si el cliente maduraba, quizás me convendría liberarlo de forma independiente al plugin para que otros pudieran evolucionarlo y mejorarlo. Yo sólo quería implementar los métodos más básicos.
Los momentos de standby son realmente malos para cualquier proyecto, pero lo son especialmente para proyectos en los que sólo hay una persona y su planificación no se extiende más allá de tres meses para la primera versión. Con el nacimiento de klicap, decidimos impulsar este plugin y en ello estamos. Antes de retomarlo, analicé el trabajo realizado y me cuestioné algunas decisiones previas. Durante esos días, descubrí cmislib. Según he pedido comprobar, su primer commit tiene fecha de mediados de diciembre de 2009. Su autor es Jeff Potts, presidente y CEO en Metaversant Group, Inc., donde parece que es el único empleado. Esta librería, escrita en python, forma parte del proyecto (en incubación) Apache Chemistry. Éste último tiene como objetivo proporcionar librerías cliente para trabajar con soluciones que implementen la especificación CMIS. La librería no está completa, aun quedan funcionalidades por implementar, pero desde luego su última versión 0.3 publicada es estable y cubre gran parte de la especificación. Teniendo en cuenta que la versión 1.0 de la especificación de CMIS tiene fecha 1 de mayo de 2010, sólo me queda agradecer el excelente trabajo de Jeff.
Esto se traduce en que he dejado de implementar mi propio cliente, y he comenzado a usar esta librería. Esto hace incluso que me planté el nombre del plugin, porque ahora podemos integrar Trac con Alfresco, Nuxeo y otros ECM que implementen CMIS. Desde @klicap haremos lo posible por colaborar en este proyecto.
Así de rimbombante es el nombre del nuevo proyecto en el que estoy dedicando esos ratos, que sumados, pueden dar como resultado una versión de algo. Como se puede deducir es un plugin para Trac (0.11.x o superior) que tiene como principal objetivo mejorar la gestión de los documentos en aquellos ecosistemas que usan Trac.
Por ahora no hay nada que enseñar. Nunca había desarrollado con python y menos aun, plugins para Trac. Por lo tanto, los primeros ratos los estoy dedicando a conocer el lenguaje, ver código de otros y configurar un entorno de desarrollo aceptable. A continuación algunas ideas para este plugin:
- Que permita navegar por los documentos de un proyecto de forma similar a como lo hacemos por el repositorio de subversion u utros SCM.
- Búsqueda de documentos teniendo en cuenta sus metadatos
- Posibilidad de referenciar a los documentos al igual que se hacen con tickets, milestones, etc…
- Explotar el versionado que proporciona Alfresco
- Incorporar nuevos documentos
Cualquier sugerencia será bienvenida. Para ello sólo tenéis que dar de alta un nuevo ticket.
El otro día comencé a configurar el entorno de desarrollo local. Se me olvidó comentar que para desarrollar plugins de Trac la mejor opción es ejecutarlo en modo standalone. El porqué viene justificado por uno de los pros de este modo:
Automatic reloading: For development, Tracd can be used in auto_reload mode, which will automatically restart the server whenever you make a change to the code (in Trac itself or in a plugin).
Toda la configuración está perfectamente explicada en el sitio web de Trac. En mi caso me he creado un pequeño script (start_trac.sh):
tracd -p 8000 --basic-auth=AlfrescoTracIntegration,/home/recena/Documentos/trac-users.conf,/home/recena/Documentos/trac-projects/AlfrescoTracIntegration /home/recena/Documentos/trac-projects/AlfrescoTracIntegration
Si por el contrario lo que queremos es ejecutarlo desde Eclipse, también podemos encontrar las correspondientes instrucciones. La intención era haber publicado esta pequeña entrada el pasado jueves, 13 de agosto. Pero he estado sin acceso a Internet desde entonces. Algunas notas que a mi me están viniendo muy bien para comenzar a desarrollar un plugin de Trac sin tener experiencia en Python:
- Configurar un buen entorno de desarrollo local que nos permita trabajar cómodamente y como no, depurar.
- Conocer las características del lenguaje de programación. Me he leído “Python para todos“, y sólo agradecer a Raúl González Duque el excelente trabajo realizado.
- Guías:
- Style Guide for Python Code
- Docstring Conventions
- Estudiar otros plugins
- Instalar TracDeveloper, un plugin de Trac muy útil para desarrollar.
Desde que era muy pequeño mis padres me inculcaron que las vacaciones (especialmente los veranos) no son para “no hacer nada”. Son una época en la que uno dispone de mayor tiempo y por tanto mayor posibilidad de hacer cosas. Recuerdo aquellos veranos en los que la TV estaba prácticamente prohibida durante el día, las mañanas eran para hacer cuadernillos Rubio y las tardes para hacer deporte, pescar o campamentos, pero lo más deseado por mi, pasar tiempo con mi Amstrad 1512 y posteriormente con mi 80486 con el que conocí la demoscene.
Durante estos días me gustaría acercarme al desarrollo de plugins en Trac. Lo primero que he hecho es leer un poco y conocer qué necesito para configurar un entorno de desarrollo local que me permita trabajar cómodamente. A continuación una descripción del entorno:
- Mandriva 2009
- Aptana Studio 1.5.1 (con PyDev)
- Python 2.6 (paquetes)
- MySQL Server 5.1
- Genshi 0.5.1 (paquetes)
- Setuptools 0.6c9 (paquetes)
- Subversion 1.6.4 (paquetes)
- SWIG 1.3.38 (paquetes)
- Subversion SWIG Python bindings (paquetes, subversion-devel)
- MySQLDB (Ojo! no ZMySQLDA)
- Descargamos los fuentes correspondientes a la versión 1.2.2
- Descomprimimos el tar.gz
- Asegurarse de que están disponibles de los fuentes de MySQL porque MySQLDB los necesita para su instalación
- Seguimos las instrucciones que vienen en archivo README
- Trac 0.11.5
Os podéis ahorrar muchos de estos pasos porque en varias distribuciones de Linux ya existe un paquete con Trac (con soporte para MySQL y Subversion). Por ejemplo, en Mandriva existe ese paquete. En nuestro ecosistema software usamos Trac con SQLite y todo va muy bien, sin embargo, he querido aprovechar esta ocasión para conocer de primera mano el soporte de MySQL que tiene Trac. Si los resultados son positivos, probablemente, nos planteemos la migración a medio plazo.
Recent Comments