[[TOC]] Contributions to GRASS are most welcome. There are a number of ways that you can contribute to help make GRASS a better GIS system. Perhaps the most important way to contribute is to write high-quality code for solving old and new problems, and to make your code freely available for others to use. But not everybody is able to program. Still you can help! == (Power) Users == '''Documentation:''' If you see manual pages or other documents which are outdated, grammatically incorrect, too short, lacking examples, etc. please don't hesitate to send revised text segments (preferably in HTML) to one of the developers or the related mailing list. Please also contribute to the wiki, improving documentation, providing examples... '''GRASS Usage:''' Subscribe to the [http://lists.osgeo.org/mailman/listinfo/grass-dev mailing list] and answer questions where you have gained some knowledge (and everybody knows something!). == Developers == For inspiration, we have a wish-list of [report:1 projects and feature requests]. Just pick a task from the list. It may be a good idea to send a small posting to the [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list] to announce your activities (maybe someone will join you!). Please read [wiki:HowToProgram how to write source code]. We appreciate if you can fix [http://trac.osgeo.org/grass/query?status=%21closed&type=defect&order=id&desc=1 bugs] etc. Using the Ticket system is the best way to submit code contributions if you don't have write access to SVN. See for example #33. '''Code quality:''' Check your code according to GRASS "BestPractise" guide list. What else: see [http://grass.gdf-hannover.de/wiki/Development development collection] (to be moved here) === Procedure to request GRASS-SVN write access === To avoid security and code quality issues, a procedure has been established to control and grant GRASS-SVN write access. In general, write access must be requested and is not automatically assigned. Any code submission must be compliant with the GRASS submission rules. * Write access to the '''Main GRASS-SVN repository:''' * In general, the [http://grass.gdf-hannover.de/wiki/PSC GRASS Project Steering Committee] is responsible for granting SVN write access to contributors (as defined in [http://download.osgeo.org/grass/grass6_progman/rfc/rfc1_psc.html RFC1]). * The requester has to '''read and abide by''' the document [http://download.osgeo.org/grass/grass6_progman/rfc/rfc2_psc.html Legal aspects of code contributions] (RFC2). * The request has to be sent to the GRASS-PSC [http://lists.osgeo.org/mailman/listinfo/grass-psc mailing list], stating that RFC2 was read and accepted. This requires [http://lists.osgeo.org/mailman/listinfo/grass-psc subscription] to the PSC mailing list. After a period of evaluation, SVN write access may be granted and is set up in the OSGeo authentication system (see below). * Write access to the '''GRASS-Addons-SVN repository:''' * We invite and encourage users who write GRASS add-on code to host it in our grass-addons SVN. We do so because: * Community building: It gets people involved and educated - contributing to the main GRASS code uses the exact same website, software, and commands. Thus the trip from contributer to full developer requires a minimum of training. * Archival: After some years it is common that people move on, then private websites fade away and the code is lost. The code will be widely backed up and if the main source code ever moves, all the addons will move with it in parallel. * Guaranteed license: From the start all code there is licensed under the GPL (or compatible), so all can use the content there without worry, and mature modules may be promoted into the main GRASS code as needed. * Caretaking: In years to come others may easily contribute bug fixes and upgrades if a flaw is found or the GRASS API changes. * Infrastructure: Ability to take advantage of the svn history and trac system integration, including bug tracker. (these are really quite good things) * [http://trac.osgeo.org/grass/browser/grass/trunk/AUTHORS GRASS developers] with write access can grant SVN write access to contributors (you may contact an active developer, see grass-dev mailing list archive). The selected developer is a sort of "sponsor/mentor" for the requester. Procedure: * The requester has to '''read and abide by''' the document [http://download.osgeo.org/grass/grass6_progman/rfc/rfc2_psc.html Legal aspects of code contributions] (RFC2). * The request has to be send to a GRASS developer or the GRASS-PSC chair, stating that RFC2 was read and accepted (locate a mentor). The request then has to be sent to the GRASS-PSC [http://lists.osgeo.org/mailman/listinfo/grass-psc mailing list], stating that RFC2 was read and accepted. As only subscribers are allowed to post to OSGeo mailing lists, this requires [http://lists.osgeo.org/mailman/listinfo/grass-psc subscription] to the PSC mailing list for that time. For fast service you should provide your OSGeo ID in this email. (see below) * After a period of evaluation, SVN write access may be granted and is set up in the OSGeo authentication system (see below). * New commands stored in the GRASS-Addons-SVN repository should be also added as link to the [http://grass.osgeo.org/wiki/GRASS_AddOns Wiki list of tools] and placed in the appropriate directory hierarchy. === Setting up the new SVN write access === Once SVN access is granted, the requester needs to obtain an "osgeo_id" at http://www.osgeo.org/osgeo_userid If s/he already have an "osgeo_id" but forgot it, it can be searched at http://www.osgeo.org/cgi-bin/ldap_web_search.py The GRASS-PSC chair (currently Markus Neteler) and other developers can add this "osgeo_id" to the list of enabled accounts in the OSGeo LDAP authentication system ([https://www.osgeo.org/cgi-bin/auth/ldap_group.py?group=grass here] for GRASS-SVN and [https://www.osgeo.org/cgi-bin/auth/ldap_group.py?group=grass_addons here] for GRASS-Addons-SVN; requires authentication). Contributions have to follow the [wiki:BestPractise] rules (see also SUBMITTING* files in the source code). === Then what? === [wiki:DownloadSource Get the source code] and Happy hacking :) The requester should subscribe to the [http://lists.osgeo.org/mailman/listinfo/grass-commit grass-commit] mailing list which distributes GRASS-SVN commit differences for real-time code review.