Spare time? Want to give back?

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. For inspiration, we have a wish-list of feature requests. Just pick a task from the list. It may be a good idea to send a small posting to a related GRASS GIS mailing list to announce your activities (maybe someone will join you!).

C and Python Programming

If you've already written a useful function or module for GRASS that you would like to make available for others to use, please post it to the GRASS developers mailing list. GRASS standard code should be written in ANSI-C, as appropriate also in Python. Messages sent to this list will be seen by the GRASS maintainers, and will be considered for inclusion in future releases of GRASS. The messages are also archived, so even if the code is not included in a future release, it will remain available for others to use.

In greater detail:

  • Bug reports: You are kindly requested to report bugs through our bug tracking system. Our system keeps you informed about progress on a detected bug.
  • Testing: We need wide testing on all possible operating systems. Just let us know if stuff doesn't work as expected. Or, you may try out suggested improvements by locally applying patches and reporting back.
  • Bug fixing: Please assist in fixing known bugs from the GRASS bug tracker. If you are unfamiliar with the tracker, please read this page.
  • Implementation of wishes: Wishes are being submitted or accessed under "enhancement" in the tracker, see this page.
  • Wanted algorithm: you can find some ideas here.

Developing new Add-ons

Developing own modules? Great! Please upload your add-ons to the GRASS GIS Addons repository (existing addons). Like this they become available to the community through the extension manager (g.extension or graphical user interface). Further details about how to gain access to our SVN repository you can find in this document.

Starting with GRASS GIS programming

GRASS GIS programming itself does require any special tools except for a C/C++ compiler and/or a Python interpreter. You can develop your own GRASS module (or call GRASS functionality from other software) using C, C++ or Python (alternatively, bindings to some other languages/environments are also available, namely R-stats and Bash or other command line).

Developing under ...

Using an Integrated Development Environment (IDE)

If you would like to use an IDE, for C/C++ development you may use QtCreator which is also fine for GRASS GIS development. Here is the related guide:
http://grasswiki.osgeo.org/wiki/Using_QtCreator_for_GRASS_C_development

For Python development, you just need some Python editor/IDE, we recommend Spyder:
https://code.google.com/p/spyderlib/

Note: you need to execute your Python scripts as well as C/C++ programs from within a GRASS GIS session. There are other possibilities but this is what is commonly used.

Programming References

The API documentation is placed here: http://grass.osgeo.org/programming7/

If you have further questions about programming in GRASS consider joining grass-dev mailing list:
http://lists.osgeo.org/listinfo/grass-dev

Creating binary distributions, packages and installers

Specific pages for the operating system of your choice:

Google Summer of Code (GSoC) - OSGeo

GSoC is a stipend program for students by Google. Check the GRASS GSoC Ideas or propose your own idea.

Writing, Updating, Improving 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.
Also updates to the web pages are welcome. Just use the contact address at the bottom of this page, or use our feature request and bug tracking system. You can request features and report issues with web pages, but if you have the skills and time, please consider sending actual segments of corrected or new text or even HTML code, rather than general statements, to speed up the update process. Tickets for documentation and web pages can be submitted with the trac Component set to "Docs" or "Website". See the bug tracking info page for more information on the OSGeo Trac system.

If you want to suggest changes or a source code patch, please submit the change as "diff" and not the full modified file. See HowToSVN Creating local diffs.

We also welcome mailing list activity and GRASS Wiki maintenance as well.

Translating GRASS: i18N

You would like to see GRASS GIS talking your language? Please help to translate the messages. No programming skills required! For details, see the GRASS GIS messages translation page.

Funding us!

If you find GRASS GIS useful, consider providing additional funding to continue its development. Even a modest amount of additional funding could make a significant difference in the amount of time that GRASS developers can devote to development and support.

Other contributions

If you are not a programmer and cannot provide funding or contribute code, you can still help make GRASS GIS better and more reliable by reporting any bugs you find in the latest version and/or by offering suggestions for ways to improve GRASS GIS. The GRASS Development Team appreciates feedback from you!

Get involved! | Last change: 28-Dec-2016