Post on 03-Jul-2015
description
Alvaro Huarte
Sistemas de Información Territorial
Tracasa (www.tracasa.es)
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE
Agenda
• Introducción.
• Arquitectura y herramientas del desarrollo colaborativo.
– Repositorios de código fuente.
– Issue tracking.
– Mailing lists.
• Ejemplos de desarrollos colaborativos.
– QGIS: Simplificación al vuelo, usabilidad de aplicación.
– GeoWebCache (GWC): Salida caché RESTful.
– GDAL-OGR: Optimización del driver para formato shapefile.
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Introducción
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Issue tracking
Mailing lists
IDE’s de
desarrollo
Herramientas de apoyo al software colaborativo.
Repositorios
código
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Los repositorios son sitios web para alojar proyectos y que utilizan un sistema de
control de versiones.
Los usuarios pueden crear nuevos repositorios, bajarse ficheros agrupados por versiones y publicar nuevas versiones de ellos, o como mínimo, notificarlas para que sean evaluadas y finalmente aceptadas por los administradores del proyecto.
Herramientas: Repositorios (GitHub, Codeplex)
Observa…
Regístrate…
Comparte…
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Gestión de errores y nuevas funcionalidades de las aplicaciones.
Herramientas: Issue tracking
Los usuarios pueden crear nuevas entradas para describir errores detectados o solicitar nuevas funcionalidades. Establece un punto entrada de los recursos asociados a dichos elementos: datos de prueba, debates sobre su resolución,…
Observa…
Colabora…
Comparte…
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Listas de correo agrupadas por roles: desarrollo, documentación, usabilidad,…
Herramientas: Mailing lists
Permite preguntar, y responder, sobre cuestiones no enmarcadas en un determinado “issue” ya activado. Es frecuente que nuevas peticiones o ideas se incuben previamente en debates de las listas de correo y finalmente generen una nueva petición “oficial”.
Observa…Comparte…
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
El entorno de desarrollo integrado (integrated development environment), es el conjunto de
herramientas de programación que nos permite la implementación del código.
Herramientas: IDE’s de desarrollo
Eclipse IDE
Visual Studio
“pull request”
El fin último del desarrollo es publicar o proponer un “pull request” (que implemente una funcionalidad o corrija un error), para que sea mergeado al repositorio principal del código fuente de la aplicación.
Desarolla…
Comparte…
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos:
• Optional output folder for cache.
• Output RESTful cache.
GDAL-OGR• Speed improvement for OGR provider.
• Add OGR_G_SetPoints to GDAL API-C.
GeoWebCache
• Set the canvas color in 'qgsprojectproperties::apply()' before refresh.
• New keybindings, Del-key should delete feature.
• On the fly feature generalisation, fast rendering of features.
QGIS
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos
QGIS• Set the canvas color in 'qgsprojectproperties::apply()' before refresh.
https://github.com/qgis/QGIS/commit/b2ad0a9bb914c67309b0e4c486b3493086b04a73
Este simple “commit” corrige un error en QGIS por el que no se reflejaba correctamente en el mapa el cambio del “backcolor” configurado por el usuario de la aplicación.
Es interesante recalcarlo no por su funcionalidad, simple al extremo, sino por demostrar que todos podemos colaborar en lo que nos sintamos cómodos, implementando pequeños parches como éste, o codificando mayores cambios en el “core” si podemos y nos dejan
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos
QGIS• New keybindings, Del-key should delete feature.
https://github.com/qgis/QGIS/pull/1010
http://changelog.linfiniti.com/qgis/version/21/#71
Este “commit” fue implementado como respuesta a una nueva funcionalidad solicitada en la lista de peticiones de QGIS (http://hub.qgis.org/issues/9094). En principio sólo demandaba que la tecla “supr” eliminara las geometrías actualmente seleccionadas en la aplicación pero desembocó, gracias a la aportación de ideas de otros usuarios, en una revisión de varios “shortcuts” de QGIS para darle mayor coherencia al comportamiento de la aplicación y más ágil respuesta a tareas repetitivas en la edición de las capas.
La colaboración de ideas y opiniones de diferentes usuarios y desarrolladores es lo importante a resaltar de este “commit”.
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos
QGIS• On the fly feature generalisation, fast rendering of features.
http://changelog.linfiniti.com/qgis/21/entry/on-fly-feature-generalisation/
https://github.com/qgis/QGIS/pull/980
https://github.com/qgis/QGIS/pull/1053
QGIS en versiones previas a la 2.2 pinta geometrías con rendimientos tres o cuatro veces inferiores a otras aplicaciones equivalentes. Este “commit” implementa un conjunto de componentes para simplificar las geometrías a pintar sin pérdida perceptible de calidad visual. La simplificación se aplica a las entidades recuperadas desde los proveedores de datos, o se ejecuta directamente a nivel de proveedor como es el caso del driver de acceso a datos “postgis”.
Lo importante de este “commit”, aparte de la funcionalidad obtenida, es demostrar que también es posible colaborar en “profundos” cambios en las aplicaciones.
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos
GeoWebCache (GWC)
• Optional output folder for cache.https://github.com/GeoWebCache/geowebcache/pull/200
• Output RESTful cache.https://github.com/GeoWebCache/geowebcache/pull/201
El nuevo desarrollo posibilita generar en GeoWebCache (integrado o no en GeoServer) una caché en formato RESTful. Añade también la posibilidad de establecer un directorio de salida para paralelizar el proceso en diferentes máquinas y evitar el costoso trasiego de millones de ficheros típico de las cachés.
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
Ejemplos de desarrollos
GDAL-OGR
• Speed improvement for OGR provider.https://trac.osgeo.org/gdal/ticket/5272
• Add OGR_G_SetPoints to GDAL API-C.https://trac.osgeo.org/gdal/ticket/5357
Los cambios propuestos en este paquete fueron consecuencia de la necesidad de mejora de funcionalidad para los desarrollos de QGIS
Los dos “commits” de las GDAL-OGR están relacionados con el proveedor de datos del formato shapefile cuando se usa en peticiones masivas de datos y críticas en rendimiento como son la visualización o renderización de vectores en un mapa. Con estos cambios ya aceptados en el producto, se consigue una mejora apreciable en la carga de las geometrías que redunda en el rendimiento del pintado masivo de datos que un desktop como QGIS debe ejecutar.
Estos desarrollos evidencian la posibilidad de integración entre distintos paquetes de software, distintas comunidades de desarrollo, etc
Experiencia de colaboración en el desarrollo de GIS opensource
VIII JORNADAS DE SIG LIBRE (SIGTE 2.014)
¿ Preguntas ?
Muchas graciasAlvaro Huarte Sanzahuarte@tracasa.es