Download ReporteEtapa1

Document related concepts
no text concepts found
Transcript
Proyecto Salamandra
Reporte de la Primera Etapa
15 de julio de 2003
Cuatro meses después de haber abandonado la seguridad del territorio conocido e
internarse en la noche oscura y preñada de posibilidades, es tiempo de que el equipo de
exploradores haga un primer alto en el camino y considere lo que se ha logrado hasta el
momento, así como el rumbo que ha de seguir ahora en pos de la meta establecida.
En este sentido y conforme al plan de trabajo propuesto originalmente, podemos confirmar
que la primera etapa del viaje ha concluido satisfactoriamente, y que se han conseguido los
siguientes objetivos preliminares:
1 Implementación de un visualizador con capacidad de desplegar datos geográficos en
forma de vector, en dos dimensiones.
2 Dicho visualizador posee la capacidad de importar archivos en formato SHP.
Además se cuenta con algunos beneficios adicionales, como son:
1 Inicio de una relación con una comunidad sólida de software libre, que trabaja en
torno a un proyecto compartido de SIG en código abierto (Thuban)
2 Implementación de un programa instalador de uso intuitivo y sencillo.
3 Documentación del proyecto, orientada a futuros desarrolladores.
A continuación detallamos el método utilizado para la consecución de estos logros:
El Camino Avanzado
Hasta el momento se han logrado cuatro puntos fundamentales que permiten la elaboración
y distribución de un programa funcional, útil y directamente ejecutable por prácticamente
cualquier usuario sin ninguna preparación especializada. Estos puntos se describen en
seguida:
1.- La Comunidad Thuban.Sin lugar a dudas el paso fundamental dado en el avance del proyecto ha sido la integración
con un grupo de trabajo bien establecido, en torno al proyecto de software libre llamado
Thuban (www.thuban.intevation.org). Los líderes de este proyecto son Jan-Oliver Wagner y
Bernhard Herzog, quienes trabajan amparados por la organización Intevation GmbH
(www.intevation.de) con sede en Alemania.
La comunidad cuenta con decenas de programadores alrededor del mundo comprometidos
con el desarrollo del proyecto, que desde sus inicios ha sido concebido bajo el marco del
software libre y código abierto, y ha sido programado en su totalidad en Python y C.
Después de un par de años de trabajo en equipo Thuban es un programa de alta
complejidad, formado por una serie de módulos interconectados y con posibilidad de
expansión en distintas direcciones. Actualmente el grupo de trabajo continúa desarrollando
código y explorando nuevas posibilidades para el sistema.
Hemos entrado en contacto con este grupo, y realizado un esfuerzo de acercamiento
directo a la estructura del código de Thuban (especialmente en torno a la estructura de
organización de archivos, y el manejo de cadenas de texto, áreas que fueron
particularmente importantes para lograr una implementación utilizable en el menor tiempo
posible).
Existe una lista de correo dedicada exclusivamente a discutir los avances y problemas del
proyecto, así como un sistema CVS (“concurrent version system”) en línea, mismos que
facilitan la labor de entender y eventualmente contribuir a la construcción de la estructura
medular del programa.
2.- Implementación del Instalador.Normalmente para instalar thuban es necesario instalar previamente Python y wxPython,
con el fin de facilitar
el acceso al visualizador por parte de los usuarios finales en quien se pensó al inicio del
proyecto, hemos preparado
un programa auto-ejecutable llamado salamandra.exe que reúne todos los pasos de
instalación en uno solo.
Para lograr esto se necesita:
1. Generar WxWindows
2. Generar WxPython
3. Generar Proj(Cartographic Projections Library)
4. Generar Thuban
5. Hacer el scipt para inno setup que contenga python, wxPython y thuban
WxWindows
wxWindows es un api que contiene las clases necesarias para programar interfaces graficas,
el codigo se puede obtener en http://www.wxwindows.org/
wxwindows esta escrito en C, y hay varias formas de generarlo, la que se utilizo fue asi:
1. crear las variables de entorno wx y wxwin y darles la ruta de el directorio base de
wxwindows.
2. Editar setup.h que esta que la subcarpeta include/wx/msw
WXWIN_COMPATIBILITY_2_2
wxDIALOG_UNIT_COMPATIBILITY
wxUSE_DEBUG_CONTEXT
1
wxUSE_MEMORY_TRACING
wxUSE_CMDLINE_PARSER
wxUSE_FSVOLUME
wxUSE_DIALUP_MANAGER
wxUSE_DYNAMIC_LOADER
wxUSE_TREELAYOUT
wxUSE_MS_HTML_HELP
wxUSE_POSTSCRIPT
0
0
1
0
0
0
0
0
0
1
3. y en la línea de comando en la subcarpeta src\msw teclear la línea:
nmake -f makefile.vc dll pch final=1
WxPython
WxPython es la implementación de wxWindows para python, para generar wxPython es
necesario generar wxWindows.
el codigo se puede bajar de http://www.wxpython.org/
Al generar wxWindows se crea una librería que se llama wxmsw240.lib, el nombre puede
variar con la versión y las opciones
escogidas en la generacion de wxWindows, es por eso que, en setup.py hay que editar las
variables:
WXDLLVER
includes
wxdll
para que encuentre esa librería.
Ademas hay que editar el mismo setup.py esta línea
BUILD_GLCANVAS = 0
Y por ultimo en la linea de comando correr esta línea:
python setup.py install
Para correr esta ultima linea es necesario tener instalado python, el código se puede obtener
en http://www.python.org
Proj.4
Proj.4 es una librería de proyecciones cartográficas y el código se puede obtener en
http://remotesensing.org/proj/
Para generar proj hay que editar el archivo makefile.vc para direccionar la carpeta NAD de
proj.
Y en la línea de comando ejecutar la línea:
nmake -f makefile.vc all
Thuban
Ahora estamos en condiciones de generar thuban, thuban es el visualizador en si y su código
se puede encontrar en
http://thuban.intevation.org/
Para generar thuban hay que hacer los siguientes cambios en setup.py
1. Direccionar la carpeta Proj\src editando la variable proj4_prefix
2. Direccionar la carpeta de wxWindows editando la variable wx_prefix
3. Direccionar la carpeta del .lib de wxWindows editando la variable wx_inc
4. Editar la variabe wx_libs escribiendo el nombre del .lib de wxWindows sin la
extensión
Además
- Crear una carpeta Lib en la raíz de thuban y poner ahí proj.dll que se creo al generar
proj.4
- En la linea de comandos escrbir esta linea
python setup.py bdist_inno
Python
Python solo se genera porque esto crea un python.iss que será de utilidad mas adelante
python es un lenguaje de programación que esta hecho en C, y su código se puede bajar en
http://www.python.org/
Inno setup
Inno setup es un programa que permite crear instaladores para windows, es software libre
como todo lo demás que se ha
utilizado en salamandra, y se puede bajar en http://www.jrsoftware.org/
Inno setup genera un .exe a partir de un script que tiene extensión .iss , al generar thuban y
python se crean
automáticamente thuban.iss y python.iss de donde se puede copiar y pegar a un nuevo .iss
que contenga las líneas de
estos dos y además las correspondientes a wxPython, wxPython puede compilar su código
durante la instalación para
que sea mas rápido al usarlo por primera vez, para eso se agrega esta línea en la sección
[Run]:
Filename: "C:\Salamandra\Python22\python.exe"; Parameters:
"C:\Salamandra\Python22\Lib\compileall.py {app}\Python22\Lib\site-packages\wxPython";
Description: "Compile Python .py files to .pyc"; Flags: postinstall; Components: core
Se agregan en la sección [Files], las líneas correspondientes a los dlls que requiere wxPython,
estas líneas
se ven así:
Source: "C:\WINDOWS\system32\MSVCRT.dll";
DestDir: "{sys}"; CopyMode:
alwaysskipifsameorolder; Flags: sharedfile uninsneveruninstall restartreplace; Components:
core
Source: "C:\WINDOWS\system32\MSVCIRT.dll";
DestDir: "{sys}"; CopyMode:
alwaysskipifsameorolder; Flags: sharedfile uninsneveruninstall restartreplace; Components:
core
Source: "C:\WINDOWS\system32\MSVCP60.dll";
DestDir: "{sys}"; CopyMode:
alwaysskipifsameorolder; Flags: sharedfile uninsneveruninstall restartreplace; Components:
core
Se agregan tambien las líneas correspondientes a los archivos que contienen el código de
wxPython,
aquí se deben poner todos los archivos de wxPython para poner un archivo se escribe así:
Source: "C:\wxPythonSrc-2.4.0.7\wxPython\build\lib.win32-2.2\wxPython\wxc.pyd";
DestDir: "{app}\Python22\Lib\site-packages\wxPython"; Components: core
Con las rutas especificas de los archivos en la computadora que generara el instalador
Para que el instalador se despliegue en español, se agrega esta línea en la sección [Setup] :
MessagesFile=compiler:Spanish-3-3.0.0.isl
Esta línea dirrecciona un script que contiene las traducciones de los textos que aparecen en
el instalador,
este script se puede bajar de la pagina de inno setup.
3.- Modificaciones al Visualizador.Hasta el momento las únicas modificaciones sustanciales realizadas al código del
visualizador han sido la identificación y traducción de las cadenas de texto que en un
momento dado son desplegadas en pantalla. Por supuesto esto ha sido una tarea mecánica
y relativamente sencilla, que sin embargo ha permitido adquirir una cierta familiaridad con
la estructura del código, según mencionamos anteriormente.
4.- Documentación.Además de los planes y reportes en torno al Proyecto Salamandra, de los cuales este
documento forma parte y que están pensados principalmente en personas que estén
involucradas de alguna forma en el desarrollo actual y futuro del proyecto o de sistemas
semejantes, existen otros rubros de importancia donde hemos preparado algún texto
auxiliar.
Uno de estos temas es la documentación de ayuda destinada al usuario final, con el fin de
facilitarle el uso del visualizador. Hasta el momento esta documentación consta solamente
de algunos textos básicos en formato DOC distribuidos en forma independiente, junto con el
programa instalador.
Asimismo se ha preparado una licencia basada en el formato de software libre (GPL)
respetando los derechos de autor de las componentes del sistema (Python, WxPython y
Thuban).
La Decisión en la Encrucijada
Hay una serie de decisiones que deben ser tomadas en este momento con el fin de orientar
el desarrollo del Proyecto Salamandra en el futuro inmediato. En forma temporal se cuenta
ya con la segunda etapa del plan de trabajo propuesto originalmente, y conforme al cual se
seguirá avanzando en una dirección determinada. Sin embargo es un hecho que dicho plan
debe ser modificado a partir de los avances logrados y de la problemática que se ha ido
desarrollando hasta la fecha, con el fin de perseguir una implementación plenamente viable
y funcional del SIG que eventualmente deseamos entregar. A continuación detallamos
algunos puntos importantes de decisión.
1. ¿Hasta qué punto avanzaremos junto con Thuban?
Los desarrolladores del proyecto estamos convencidos que uno de los puntos más fuertes de
la Salamandra, que ha permitido la elaboración de un sistema propio y funcional en un
tiempo relativamente corto, ha sido la integración de la Comunidad Thuban, con toda su
experiencia y capacidad de trabajo colectiva.
Esta reunión de esfuerzos permitirá seguir caminando de manera mucho más rápida y eficaz
que si se contará únicamente con los recursos locales, por lo que se plantea de forma
importante el problema de el alcance de la colaboración con esta comunidad.
Por un lado es evidente que sujetare en forma estricta a los lineamientos de este grupo de
trabajo implicará una modificación a la prioridad de los casos de uso que se vayan
implementando y la forma cómo se llevará a cabo.
Sin embargo, esta subordinación es inevitable únicamente en las primeras fases de
desarrollo, mientras se va adquiriendo la capacidad de contribuir de forma sustancial a la
Comunidad Thuban en sí. Ya desde este momento es perfectamente factible participar en
los diferentes grupos de discusión y sugerir posibles rutas de desarrollo para todo Thuban.
En vista de lo anterior se sugiere que la máxima prioridad del Proyecto Salamandra en este
momento debe ser la integración con la Comunidad Thuban al mayor grado posible, lo cual
implica conseguir un entendimiento profundo del código del sistema y la contribución
sustancial a las líneas de desarrollo existentes ahora.
Por supuesto que esperamos contar con la ayuda y experiencia de los especialistas del
Centro GEO para buscar casos de uso que se relacionen directamente con las necesidades
de la comunidad local, pero que también se ajusten a la visión de Thuban, y que a la vez su
implementación sea compatible con la organización del proyecto de software libre,
evitando así la ramificación del proyecto y la pérdida sustancial de capacidad de trabajo que
esto implicaría.
2. Hay que definir direcciones concretas de avance.De acuerdo con el párrafo anterior convendría realizar un esfuerzo conjunto por determinar
de la manera más explícita posible los puntos en que sería deseable lograr un desarrollo
inmediato, buscando combinar los objetivos y metas del Proyecto Salamandra y de la
Comunidad Thuban. Esto implicará refinar y modificar de forma específica el plan de trabajo
original.
3. Continuar la labor de documentación.Además de continuar realizando reportes periódicos del avance del proyecto, se considera
de gran importancia ir aumentando la profundidad y alcance de la documentación de apoyo
disponible para el usuario final, que le permita utilizar el sistema de la manera más
productiva posible.
Esto debe incluir la categoría de usuarios más avanzados y con mayor disponibilidad de
recursos a su alcance, que estén dispuestos a realizar modificaciones al código en sí.
4. Impulsar la formación de una Comunidad Salamndra.Este es uno de los puntos fundamentales considerados desde la concepción del proyecto y
puede comenzarse a buscar en forma activa desde este momento, mediante la distribución
de la implementación salamandra.exe al mayor número de usuarios posibles, y solicitando la
retroalimentación en línea, mediante un lista de correos u otros métodos de formación de
comunidad.
¡Seguimos Adelante!
Pues sencillamente no hay más que recoger nuestros utensilios y herramientas, calzarse las
botas y continuar avanzando con paso firme y decidido.
Hay que recordar lo aprendido hasta el momento, considerar en su justa medida los logros
obtenidos y lanzarse adelante con ánimos renovados, preparados para las futuras decisiones
y retos que haya que afrontar, y sabiendo que el camino tiene un sentido, para los
aventureros, así como para la tribu que aguarda su regreso.
Édgar J Becerra III, Fidel Serrano Candela y Francisco S G Jáuregui