Development and releases
From gvSIG CE Wiki
As an open source project, gvSIG CE depends on contributions from its community to prosper. This section provides information for everyone who wants to get actively involved in developing, growing and improving our software. This includes developers with Java programming skills, but also advanced users who want to report bugs, help improve our web pages or simply learn how to make better use of our Internet resources.
This is a complex development project and it is hard work to keep all documentation accurate and up-to-date. If you find any of the information here lacking or erroneous, please report your suggestions to the developers mailing list. Or better yet: get an account for this wiki and work in your improvements directly!
Terms and philosophy of development
The gvSIG CE project is open source and developed under the terms of the GNU General Public License (GPL).
As a community-driven project, we aim to follow a development model that is:
- Everyone is welcome to join and contribute. Both short (e.g. inclusion of small patches) and long term (e.g. design of new features) issues are discussed openly and all interested parties will have a voice in the decision making process.
- New developers are always welcome, regardless of their skill level. We consider this project a learning experience for all involved.
- Contributions will be included without much fuzz. Peer review is done by the entire community. We all value thorough and well-documented work -- but we value useful and working software even more!
- Zero bureaucracy, frequent releases, learning-by-doing.
Some important things to keep in mind: As an open source project that produces completely free software, nobody on this project owes anything to anybody else. Unless a developer is hired to work under specific contract terms, there is no obligation to produce anything, fix any bugs or stick to any time table. As a developer working in this project, you are expected to keep this in mind and to be willing to make an effort of your own first, before you ask others to solve technical problems. This includes using all available project resources and the willingness to go through the same time-consuming self-teaching process that all open source developers have to go through.
Please see our Guidelines for good software for some general advice on designing new features or improving existing ones.
Resources for developers/contributors
This project, including its source code and all web pages, is generously hosted by Sourceforge.net (SF.net). In order to get started with gvSIG CE development, you will first need to know some basic facts about the SF.net services we use. The information below is also valuable to other contributors, such as advanced users who wish to report bugs or content contributors to the web sites.
Some pointers to get you on your way:
- Getting started with SF.net (essential reading for new developers)
- How to report bugs (for everyone who wishes to help improving gvSIG CE)
- Customizing gvSIG CE (for direct access to configuration and GUI settings)
- How to make patches (for new developers and sporadic contributors)
- Synchronizing gvSIG CE (working in changes from other versions of gvSIG)
- (Spanish) Language troubles (help make gvSIG CE international)
- Documenting your work (don't risk losing track of it)
- Programming for gvSIG CE (introduction to the API)
- How to update the EPSG database (keep spatial reference systems up-to-date)
Additional information (for web administrators):
- Working with Project Web (this is were all our web sites are hosted)
- Joomla! installation (the CMS that powers our home page)
- MediaWiki installation (the Wiki you're on right now)
- phpBB forums installation (forums for discussions) [NOTE: Forums now closed due to spamming!]
- Mantis bug tracker installation (our tracker for bugs and improvements)
The gvSIG CE project site on SF.net is here.
If there are any problems with the SF.net services (downtime, slow web sites, etc.), then chances are the reasons will be reported on the Site Status page.
We also have continuously updated Javadoc API pages.
Compiling and running gvSIG CE
As a developer or interested advanced user, you will probably want to know how to compile the source code (and run the resulting binaries on your system). Most of gvSIG consists of Java (1.6) code. But the support libraries for raster data (GDAL/OGR), as well as the GRASS and SAGA GIS modules (to be used with SEXTANTE) are written in C/C++. Thus, the entire compilation procedure is lengthy and can be hard to set up. We have tried our best to document all of its aspects on these pages.
Please work through the following from top to bottom, as listed on this page, so that you can build up on previously completed work in the most efficient way.
- Setting up Eclipse (essential first steps)
- Compiling the Java sources (including SEXTANTE and other external projects)
If you also want to produce your own set of native binaries (raster drivers, GRASS and SAGA), for 32 or 64 bit systems, then you must additionally work through all of the below.
- Setting up the GNU Compiler Collection (for producing native binaries in 32 and 64 bit)
- Getting started with MSYS (for Windows users and those with little command line knowledge)
- Compiling the C/C++ support libraries (native binaries; GDAL/OGR; GRASS and SAGA)
- Compiling GRASS GIS (to run under SEXTANTE)
- Compiling SAGA GIS (to run under SEXTANTE)
Once you have compiled the Java source code (and perhaps created native binaries), read on below to learn how to create a working gvSIG CE installation (distribution):
- Running gvSIG CE (creating a binary distribution)
And last not least, some tips for fine-tuning an existing gvSIG CE installation
- Java VM Tuning (how to get the best run-time experience)
This section complements the bug tracker by doing something that is difficult to do in a ticket system: It provides a context (both technical and conceptual) for a group of tickets that all relate to a large topic/issue (i.e. a more coherent view on a programming task). Typically, entries represent tasks to restructure, fix and substantially improve existing functionality.
- View navigation (tools for panning and zooming in different contexts)
- Annotation (single labels) (Improving the existing UI and workflow for placing and modifying annotations)
- PostGIS 2.x update (improving driver, capabilities and GUI)
- 3D data support (pseudo and real 3D concepts)
This section lists a number of advanced topics to be taken into consideration and/or worked on for future releases.
- Java Advanced Imaging (JAI) and 64 bit (how to get JAI to work with a 64 bit JDK)
- Updating the JTS (Java Topology Suite) JARs (used by gvSIG and SEXTANTE)
- Modifying the parser for vector feature label and filter expressions (extSymbology)
- Guidelines for designing GUI elements (creating usable dialogs and other widgets)
- Performance: Multi-threaded operations (multi-core CPU and GPU support)
- Survey device protocols (list of devices that can send coordinates, such as total stations, and their protocols)
The diagram (click thumbnail image to enlarge) shows the planned development and release paths for gvSIG CE. Every stable version, suitable for use in a production environment, has an even minor version (including "0"). So 1.0, 1.2, etc. will be stable versions, with the revision number indicating updates (e.g. 1.0.1). Odd minor versions (e.g. 1.1) indicate branches that are under heavy development. These are intended for developers and testers only. Following the GvSIG CE Code Sprint in Munich, there will be only two branches: 1.0 and 1.1.
The next release will be a beta release for 1.0. Shortly after this, we plan to release version 1.0. It will feature many bug fixes, user interface improvements, and some new/updated extensions (most importantly, a new version of SEXTANTE, OpenCAD and NavTable).
All heavy refactoring of the code and all elimination of unmaintained extensions, drivers, etc. ("clean-ups") will happen in the unstable 1.1 branch. That branch will also serve as the basis for integration of the GeoTools libraries, which will allow us to "outsource" much functionality to external projects. While under development, version 1.1 will lack some features and drivers that have to be dropped due to unclear ownership and/or unfeasible costs of maintenance, such as the native DXF and DWG drivers. By the time 1.2 gets released, there will be alternatives based on GeoTools and/or other 3rd party libraries. We will only carry those interface translations into 1.2 that are actively maintained by the community.
Critical bug fixes and useful improvements will be applied to the stable and unstable branches, to keep them sychronized as much as possible.
At some point, we will concentrate our development efforts on the 1.1 branch, in order to produce the first stable 1.2 release. From that point on, only critical bug fixes will be applied to the 1.0.x branch.
GvSIG CE 1.0.0 will be released soon, as can be seen on the roadmap: http://gvsigce.sourceforge.net/mantis/roadmap_page.php
- Release preparation (important chores before a new release)
gvSIG CE 1.0.0 (Berlin) Beta 1
- Next release announcement (the announcement text/notes to ship with the next release)