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