¿Dónde están los fuentes de gvSIG Desktop?

Hola a todos,
De nuevo con un pequeño articulo relacionado con el desarrollo con gvSIG Desktop.

En los últimos meses me han preguntado ya varias veces dónde están los fuentes de gvSIG.
La respuesta rápida sería :

http://devel.gvsig.org/svn/gvsig-desktop/

Pero en general esto no es suficiente.

La recomendación general que doy siempre es que no recompiléis gvSIG Desktop. No debería haceros falta para crear vuestros propios plugins.

Tendríais que trabajar contra unos binarios de gvSIG y desarrollar vuestros plugins sin tener que compilar todo gvSIG, cosa que es una tarea cuanto menos laboriosa. Para hacernos una idea, compilar todo gvSIG y crear una distribución viene a costar alrededor de diez horas si no aparece ningún problema. El proceso involucra compilar el núcleo de gvSIG junto con unos sesenta proyectos más que están repartidos en más de cuarenta repositorios distintos. Para al final acabar creando una distribución con el núcleo más todos los plugins que forman la distribución.

Esto, hace, que además de conocer sobre el dominio de vuestro problema, tengáis que tener los conocimientos suficientes para compilar y resolver los problemas que puedan surgir para poner a punto todos y cada uno de los plugins que conforman una distribución.

Y no solo eso… si modificáis los fuentes, los recompiláis y los distribuís a vuestros usuarios, y no revertís esas modificaciones al proyecto, habréis “anclado” a esos usuarios en esa versión de gvSIG. Si intentan actualizarse para acceder a correcciones o mejoras en versiones posteriores perderán vuestros cambios. Los obligareis a elegir entre vuestra personalización o las mejoras que puedan aportar las siguientes versiones de gvSIG. Y a cada versión, tendréis que ir llevando vuestros cambios a ella. Cada vez que salga una nueva versión tendréis que coger vuestros cambios y volverlos a introducir en vuestro fork.

Hay muchos que opinan que bien, vale…¿por qué no ?

En mi opinión particular, a medio plazo eso no suele ser bueno ni para los que realizan esa práctica ni para los usuarios que la sufren. Tarde o temprano los usuario se sentirán decepcionados con ese software que no hace mas que requerir esfuerzos para mantenerlo actualizado. Esfuerzos que van más allá de lo que su personalización requiere, ya que en realidad estaréis cargando vuestro desarrollo con el mantenimiento de una distribución de gvSIG y no solo la solución especifica que precisan vuestros usuarios.

Para evitar esto, en gvSIG hemos ido haciendo un esfuerzo por modularizarlo, e introduciendo los “puntos de extensión” necesarios para que no sea necesario modificar el “núcleo” y podáis realizar lo que preciséis desde vuestros plugins. La idea seria disponer de una distribución estándar de gvSIG Desktop instalada, y sobre ella desplegar vuestros plugins de forma que al final podáis crear vuestra propia distribución a partir de la distribución estándar y los plugins que hayáis confeccionado (ya existen herramientas para poder generar distribuciones personalizadas de gvSIG, podéis leer sobre ello en “Crea tú propio gvSIG (¡¡Nuevo plugin!!)”).

Y si hay alguna cosa que no sabéis hacer desde vuestro plugin y creéis que precisáis tocar el código fuente de gvSIG para hacerla, lo mejor es preguntar por las listas de desarrollo. A veces simplemente lo podéis estar enfocando desde el punto de vista equivocado o podemos añadir algún nuevo punto de extensión para poder hacer lo que necesitáis desde vuestros plugins. O a veces lo que queréis hacer es bueno para otros usuarios y simplemente podemos integrarlo en el código de gvSIG.

En ocasiones me dicen que simplemente quieren ver el código de gvSIG. Bien, pues incluso para eso no hace falta descargarse los fuentes. Normalmente el IDE que usáis se puede descargar los fuentes automáticamente para que podáis verlos ya que para cada jar que se crea de gvSIG se crea otro con sus fuentes, estando disponibles en el repositorio de maven del proyecto.

A pesar de todo esto, entiendo que en un momento dado se quiera saber donde están los fuentes… en ocasiones da cierta seguridad. Los fuentes de gvSIG están siempre disponibles para todo el mundo. Podéis navegar en el enlace que puse al principio y ahí esta todo el “núcleo” de gvSIG. Podéis descargaros los fuentes del trunk, pero no suele ser recomendable usar esos. Esos tienen los cambios sobre los que estamos trabajando desde el equipo de gvSIG y muchas veces son inestables o incluso no compilan. Entonces…

¿ Con qué fuentes debería uno trabajar ?

Con cada distribución que se genera de gvSIG, sea una versión final, RC, de testing o de desarrollo, se crea un tag en el SVN con el número de versión donde podemos encontrar los fuentes de esta. Sin embargo, esos números de versión no siguen el mismo criterio que encontramos en la distribución. La versión y número de build que aparece en una distribución esta orientado al producto. Pueden tener que ser modificados de forma arbitraria para adaptarlos a criterios no técnicos en un momento dado. Desde el punto de vista de desarrollo utilizamos números de versión automáticos, siempre incrementales y únicos, y que pueden no coincidir con los de la distribución. De hecho no coinciden.

Entonces… ¿ Cómo sabemos que numero de versión de “desarrollo” se corresponde con una distribución de gvSIG ?

Empiezo por el fácil… ¿ Cómo puedo saber la versión de desarrollo del núcleo de gvSIG para una distribución dada ?

Bien, pues si tenemos una distribución de gvSIG, podemos mirar en la carpeta “lib” del raíz de la instalación. Allí miramos el fichero :

  org.gvsig.andami-*.jar

Nos encontraremos, por ejemplo:

  • gvSIG 2.2.0-2313 ===> org.gvsig.andami-2.0.100.jar
  • gvSIG 2.1.0-2269 ===> org.gvsig.andami-2.0.84.jar

Eso quiere decir que la versión del proyecto org.gvsig.desktop, que es el núcleo de gvSIG, para la 2.2.0-2313 es la 2.0.100.

Una vez ya tenemos claro cual es la versión del núcleo de gvSIG, podemos ir al SVN del proyecto (la url que puse al principio) y en la carpeta tags encontraremos una entrada:

http://devel.gvsig.org/svn/gvsig-desktop/tags/org.gvsig.desktop-2.0.100

…que contendrá los fuentes de esa versión del núcleo de gvSIG.

Ahora bien, eso son solo los fuentes del núcleo. ¿ Y si quiero descargar los fuentes de un plugin que no está en el núcleo ?

Bueno, tiene su parte oscura, por un lado y otra más simple. Dónde esta el SVN de ese plugin y qué versión es la que usa una distribución dada.

Empecemos por la simple con un ejemplo. ¿ Cuál es la versión de desarrollo del proveedor de datos para PostgreSQL ?

Acudiremos igual que para el núcleo a la instalación de gvSIG. En este caso a la carpeta lib de dentro del plugin:

  gvSIG/extensiones/org.gvsig.postgresql.app.mainplugin/lib

Allí nos fijaremos en el jar:

  org.gvsig.postgresql.app.mainplugin-*.jar

En general el jar tendrá el mismo nombre que la carpeta del plugin seguido del número de versión. Pues bien, ese número de versión será con el que tendremos que ir a buscar a la carpeta tag del SVN del proyecto. En el caso de postgreSQL seria algo así como:

http://devel.gvsig.org/svn/gvsig-postgresql/tags/org.gvsig.postgresql-2.0.30/

Para gvSIG Desktop 2.2.0-2313 .

Lo más complicado es averiguar en que SVN “vive” ese plugin. No hay una lista con esa información. La única recomendación que puedo dar es que vayáis a la página de proyectos del redmine de gvSIG, e intentéis localizar el proyecto del redmine que se corresponde con el plugin del que queréis los fuentes. Por ejemplo, para el de PostgreSQL seria:

https://redmine.gvsig.net/redmine/projects/gvsig-postgresql

Y lo normal es que ahí figure la URL al SVN de ese proyecto.

Si no lo identificáis, pues como siempre, preguntad por las lista de desarrollo.

Espero que os haya sido útil.

Un saludo
Joaquín

About Joaquin del Cerro

Development and software arquitecture manager at gvSIG Team. gvSIG Association
This entry was posted in development, gvSIG Association, gvSIG Desktop, spanish. Bookmark the permalink.

2 Responses to ¿Dónde están los fuentes de gvSIG Desktop?

  1. Pingback: ¿Dónde están los fuentes de gvSIG Desktop? – GeoNe.ws

  2. Ana says:

    Qué bueno el artículo, muchas gracias. Aprovecho desde aquí para agradecer todo el apoyo y la ayuda que se presta desde el equipo de gvSIG a través de las listas de desarrolladores. Gracias al soporte que se da, podemos avanzar con nuestros desarrollos. Espero que tengáis buen año 2016! gracias

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s