Saturday, December 8, 2012

Running gvtools from sources

After some work we are able to share some results, basically a methodology [1] that can be "described" and followed by more than one person. We have created a new empty repository where user interface functionality is added little by little from the old codebase and the old non-GUI calls are replaced to calls to a new, in-progress Geotools-based library.

Some of these functionalities are very easy to include, some require changes to the GT-based library and take more time. In any case, now we can estimate roughly the cost of the integration since we have been tracking the time spent and we know how many functionalities are still to migrate. Anyway, we'll see how many people is interested on it enough to give us a hand and share the effort.

We have created a project on github that contains the work in progress [2]. As it can be seen in the developer guide [3], a "git clone" and a "mvn package" is enough to make it ready to run. You can find some general description of the project here [4].

Best regards!

[1] http://gvsigce.blogspot.de/2012/11/geotools-integration-methodology.html
[2] https://github.com/gvtools/gvtools
[3] https://github.com/gvtools/gvtools/blob/master/doc/source/introduction.rst
[4] https://github.com/gvtools/gvtools/blob/master/doc/source/developer_guide.rst

Tuesday, November 27, 2012

Geotools integration methodology

The Munich codesprint was some time ago and we did not have the opportunity to devote more time to the Geotools integration since then. Finally we have been able to work on it for a week.
As stated from the start, the aim of the 2012 codesprint in Munich was not to finish the Geotools integration but to get an idea of how to tackle the task and estimate the cost of it (see our Release Planning for details on how we want to tie this into the CE release cycle).
First of all, for all that have not dealt with the gvSIG code base before: We have found that this task is not easy at all. The gvSIG 1.x branch (the one CE is based on) has hundreds of thousands of lines of code, organized in ~50 different projects that not only do not completely separate user interface from model but that are also tightly coupled with each other. Little or no documentation, duplicated code, meaningless variable names and 17.000 warnings makes handling the gvSIG source code a really discouraging experience. If you're a developer, I'm sure you get the idea. 
After trying different approaches and restarting from scratch each time, we have finally found a method that has the following advantages:
  • It provides value immediately. We'll be able to produce gvSIG versions working on Geotools very soon. Of course, the initial versions will lack a lot of functionality the current gvSIG CE version has, but:
  1. everybody will be able to see the progress of the integration
  2. at a certain point in time, some people may be content with the status of the integration and start using it
  • It defines several more or less precise steps to follow. This is helpful when dealing with a beast of so many lines of code. The method is explained further down.
  • Can be done in parallel by several people. This is very important since this initiative has received some attention and I would say it is likely that someone will join and share the efforts. The development will take place in a GIT repository in github, so that forks and merges can happen easily. 
This method has been the first one we have considered good enough to make the integration succeed. Of course, suggestions are welcome.
Let's explain the method. In gvSIG, there is a plugin system, called "andami" that hosts about 25 extensions that provide the user interface. These extensions use several libraries to implement their functionalities. Instead of modifying the existing code base, we have created one more extension project called "main" and one more library project called "core".
The main extension will receive one by one every functionality from the old codebase. As the libraries used by the old code are not present in main, there will be some compilation errors. To solve these compilation errors, the code that uses the old libraries will be changed to use the core library, adding the necessary functionality to core if necessary. Of course, core exposes Geotools API, as it was the main aim of the integration. 
So schematically:
  • Move all extensions to main one by one
  • For each extension:
    • Include all classes in the same extension that are necessary to compile. Code can be removed if:
      • Supports old 0.3 version (method name ends with 03)
      • It is not necessary right now and we'll be forced to add it later. For example:
        • Public methods that are not called in main -> Either they will be called with code that will be moved to main and we'll recover the erased method, or they will never be called so it was well removed.
        • Whole classes -> At the end we can compare old and new codebase and we can detect the classes that are missing.
    • Fix the compilation errors of code using old libraries (not accessible anymore from main). This might require adapting the code to the new core library and even adding more functionality to it. In case of new functionality:
      • Discuss in the list the best way to implement
      • Implement
      • Add javadoc
      • Add unit tests 
Some considerations when following the method:
  • Our first priority is integrating Geotools. Please don't try to fix the extension code in main. While following the previous method you will see some things that can easily be fixed. Please don't. You'll realize that there are many of these and fixing them will keep you from the real aim, which is the integration. Let's try to do only minimal changes to the code that goes to main.
  • Do not add TODOs. They are ignored. Assert false:"todo message"; is much more effective. If you don't want to implement a method, try to remove it (following the rules stated before).
  • If you add some comment related to the integration, include the text "gtintegration" in it, so that we can process it later.
  • Please, try to understand core before making changes. Just use the mailing list to agree on some changes before starting to code. 

Wednesday, October 24, 2012

gvSIG CE code sprint summary

The first gvSIG CE Code sprint took place from Monday October 15th to Friday October 19th 2012 in Munich. 100% of the cost of this code sprint have been covered by ArchIV, Benjamin Ducke, CSGIS, Cartolab and Geomati.co. It has been a very intensive and productive week with these participants:

Benjamin Ducke <benducke[at]fastmail.fm>
Fernando González <fernando.gonzalez[at]geomati.co>
Ruth Schönbuchner <ruth.schoenbuchner[at]csgis.de>
Johannes Valenta <office[at]arch-iv.de>
Jose Canalejo <jose.canalejo[at]csgis.de>
Víctor González <victor.gonzalez[at]geomati.co>
Francisco Puga <fpuga[at]cartolab.es>

Benjamin Ducke worked on the integration of GRASS GIS in SEXTANTE 1.0 and managed the gvSIG CE release plan. The next release will be a beta release for gvSIG CE 1.0. We plan to release the first beta version of gvSIG CE 1.0 in November 2012 and the final version 1.0 before the end of that year. It will feature many bug fixes, user interface improvements, and some new/updated extensions (most importantly, a new version of SEXTANTE, OpenCAD and NavTable).

Fernando and Victor Gonzalez were examining a possible Integration of Geotools in gvSIG CE. This is a very important task for gvSIG CE because it will improve hugely the development of gvSIG CE. At this point we would like to say a big thank you! They have invested several days on this work without any sponsor. The first results allow us to estimate a roadmap and evaluate next steps. Surely more investigation and testing will be needed.

Francisco Puga helped us accomplishing the best integration of OpenCadTools and Navtable in gvSIG CE and he also discussed the integration of geotools into the official gvSIG as this task could be also important for the gvSIG development.

Ruth Schönbuchner, Johannes Valenta and José Canalejo were working on updating the project documentation. The website has been updated, a gvSIG CE Quickstart based on OADE Quickstart has been put online. An example project with sample data will be part of the next CE 1.0.

The code sprint is a great opportunity to make decisions about the future of the project. It has been a very good experience for all of us. We are looking forward to the next code sprint! If you like to discuss next steps of the project we would like to hear from you (e.g. add a location for the next code sprint: Toulouse, Girona, Berlin, ?). Join our community list or follow us at twitter.

We're grateful to all the developers for their awesome engagement! See you soon and thank you very much to all participants!

The gvSIG CE Team

Wednesday, October 3, 2012

Integrating GeoTools into gvSIG CE

Fernando and Victor Gonzalez (http://geomati.co/) are working on a possible integration of GeoTools into gvSIG CE.
We will surely keep on discussing this important task at the next gvSIG CE code sprint in Munich.
Congratulations and thank you very much!

Thursday, September 13, 2012

New videos on gvsig ce youtube channel

New videos regarding network analysis were uploaded to gvsig ce youtube channel:
http://www.youtube.com/user/gvSIGCE

The videos refer to the following three topics:
  • how to generate a network
  • how to perform shortest path analysis
  • how to exectute origin-destination matrix
Other functions (Closest facility, Connectivity, Minimum spanning tree) want to be tested and videos will be done in parallel.

Have fun! Ruth

Tuesday, September 4, 2012

gvSIG CE Code Sprint 2012

The first gvSIG CE  Code sprint is planned for Monday October 15th to October 19th 2012 in Munich.
If you are interested in improving any aspects of gvSIG CE development as a documenter, coder, or tester we'd love to have you here even if you can't attend all days. There's something for everyone at this event.
We're particularly looking forward to talking with folks working on GRASS GIS, SAGA, SEXTANTE and Geotools.
Join the gvSIG CE Code sprint and contribute in any way you like. If you are interested in our hack fest, please sign up to our community mailing list. Once there, please introduce yourself and tell us what you are interested in.
More information about this event is available here: http://gvsigce.sourceforge.net/wiki/index.php/GvSIG_CE_Code_Sprint_in_Munich
Please do not hesitate to redistribute this announcement in your respective channels.

Friday, August 10, 2012

gvSIG CE at AGIT 2012


gvSIG CE joined the FOSSGIS booth at AGIT 2012 where many interested visitors dipped into the latest trends in free and open source GIS software (FOSSGIS). Coming from all backgrounds people highly appreciated the friendly co-presenting of FOSSGIS e.V., Open Street Map, QGIS, Mapfish and gvSIG CE.
The Open Source Day at the Expo Forum on Friday yielded lively and fruitful discussions among FOSSGIS experts from all projects and users of all stripes.
Still, future efforts have to be made in disseminating the benefits of FOSSGIS in general besides promoting individual projects.
See you at AGIT 2013!


Wednesday, May 30, 2012

New Committer

Dear all,
we would like to announce a new committer in gvSIG CE: Fernando González. Fernando (Geomati.co) is a developer with a lot of experience in open source. Geomati.co has contributed with several open source projects as gvSIG Desktop, gvSIG CE, gvSIG mini, thredds, geoserver, geoexplorer, GGL2 and Geotools.
He sent patches to our team and developed new functionalities with us. This is a new example to be included in gvSIG CE, made together with Ruth:
- Automatic loading of legends:
Fernando, thank you very much for the great work you are making and welcome to the project.
Best regards!
Jose Canalejo

gvSIG CE Team
www.gvsigce.org

Wednesday, May 2, 2012

gvSIG CE at 2012 Washington GIS Conference

Karsten Vennemann, principal of Terra GIS Ltd. and education contact for the “Cascadia Users of Geospatial Open Source” group, is ready to present a 4 hour workshop at the WAURISA 2012 conference: “Introduction to gvSIG CE and geo-processing with SEXTANTE”. 

The workshop consists of the following three parts (with 15 minutes breaks in between sessions):
1. Introduction to gvSIG CE Desktop GIS
60 minutes, presentation style
Objective: Participants will get a short introduction to free and open source GIS tools,  the desktop GIS gvSIG CE (Community Edition)  and the SEXTANTE library. The overview will include topics such as general GIS functionality in gvSIG CE, supported data formats, editing of GIS data, layout and cartography, accessing spatial databases and available extensions for gvSIG (e.g. 3D, Raster and Remote Sensing, and Network Data Analysis) . A discussion of geo-processing and spatial analysis with native gvSIG and with SEXTANTE tools will close the general overview.
2. “Hands-on” exercises and examples using gvSIG CE
75 minutes, demonstration style, participants can follow the demos “hands-on” on their own (windows based) laptop with gvSIG CE installed.
The exercises will cover the general use of gvSIG: editing of GIS data,  accessing spatial databases, and layout & cartography
Objective: The examples will illustrate how to use gvSIG CE as a general desktop GIS
3. “Hands-on” exercises and examples for Spatial Analysis and Geo-processing with gvSIG CE and SEXTANTE
75 minutes, demonstration style, participants can follow the demos “hands-on” on their own (windows based) laptop with gvSIG CE installed.
The exercises will cover the use of spatial analysis and geo-processing tools in gvSIG CE for raster and vector data: native gvSIG tools, and tools available via the integrated SEXTANTE library (also includes SAGA GIS, GRASS and R (Statistical package) algorithms).
Objective: The examples will illustrate how to use  gvSIG CE and SEXTANTE for Spatial Analysis and Geo-processing in order to learn about the capabilities and functionality available.

Workshop presenters/instructors
Karsten Vennemann, Terra GIS (GIS Analyst and instructor for OS GIS)
GIS Consultant, frequent speaker and OS GIS Instructor
http://terragis.net

Links
gvSIG CE (Community Edition): http://gvsigce.org
SEXTANTE: library http://www.sextantegis.com
Terra GIS: http://terragis.net