Development
The GRASS GIS project is developed under the terms of the GNU General Public License (the GPL) in the open by volunteers the world over.
Resources for Developers
Communication
- You can contact GRASS folks in IRC
- Developers mailing list
Documentation
- GRASS Programming Manual
- GRASS Programming Howto (partially outdated)
- Gis Concepts and how they are implemented in GRASS
- GRASS Debugging
- Code submission standards:
Code
- CVS server | GRASS WebCVS interface browsable source code repository
- GRASS bug and wish tracking system
- GRASS AddOns (User contributions)
Source code quality control
- CIA commit bot for realtime monitoring along with grass-commit mailing list (showing the diff's)
- Code Quality Control System
- GRASS Software Evolution code analysis
- GRASS Test Suite a small test suite for GRASS, the current html output is available here and with memory check here
GRASS and QGIS
GRASS License
Plans
Overview
- Release Roadmap
- Development Roadmap (needs freshening)
- GRASS Module Porting List (check here if you don't find a certain command in GRASS 6.0)
- GRASS ToDo List (overview of GRASS related community projects)
- GRASS 6-CVS Vector TODO
Sandbox (ideas section)
- GRASS 7 ideas collection
- GRASS GUI development
- GRDSS (Geographic Resources Decision Support System)
- Ideas on a replacement raster format specification
- add support (at least storage!) of vertical datum and units
- Discussion on Development Specs for standardized messages
GRASS add-on structure using GEM
(copy from e-mail to dev List)
The following options are a sum-up of ideas so that the GEM add-on structure plus svn(?) can be properly set-up.
Nomenclatur
- main: path to GRASS-main code (restricted to GRASS-main developers)
- add-on: path to additional function (moderated "public" develop.)
- commands: well, single commands ...
- packages: bunch of commands dealing with a certain issues
software constraints
- migration to svn is necessary to have restricted/selective access for main and add-on
add-on manager (person)
- an add-on manager who checks incoming commands/packages for their quality (code, help, man-pages)
- a status for fresh commands would be good (fresh commands vs. "officially" accepted commands) -> how does R deal with it? Automated builds could be done on grass.itc.it along with a status page
GEM
- packages installed via UI or CI via WWW or local
- packages updated via UI or CI
- packages afterwards permanently loaded in certain location/mapset and not in others
- package removal from location/mapset
add-on structure
(I orientate myself on the R structure, because I am familiar with it and like it, if anybody else has different ideas, please feel free to discuss it)
- setup of different packages for different topics (classif., hydro., landscape ecol., spatial model. etc. see below)
- every command is assigned to a package, even the "old" one, just to keep the structure consistent (?) - assigned to package "base"?
- r.*, v.*, i.* commands might be together in one package and installed simultaneously - no splitting between r./v./i. commands in separate packages
- after loading in UI:
raster/package_name->command vector/package_name->command --> no merge inside "base" commands but in separate dir in UI
- broad package topics for starting point; in the future further splitting might be necessary to keep it simple:
- data handling
- Geo-Statistics
- GIS tasks
- image classification
- hydrology
- spatial modelling
- landscape ecology
- fire modelling
- bathymetry
- data enhancement
- ...
I would suggest to list all commands in the man pages with their package affiliation in brackets and not to list them only if package is loaded or in separate directory. An idea could be to assign 5 keywords to each command/man page from a list of key words (semi-automate?)
Linking GRASS to external languages
- GRASS-SWIG interface: generic interface to various languages
- GRASS and PHP
- GRASS and Python
- GRASS and Shell: Starting and running GRASS from a script
- Integration of GRASS with JAVA based agent based modeling (ABM)
- JAVAGRASS
Related projects
- JGrass - Java based frontend for GRASS incuding extended hydrological modelling tools
- KerGIS - BSD-like licensed fork of GRASS 4.1.5
- PROJ.4 - Cartographic Projections Library
- GDAL - Geospatial Data Abstraction Library
- QGIS- Quantum GIS
- OSGeo- The Open Source Geospatial Foundation
- FreeGIS.org - Interactive information base for the GIS Free Software world