Skip to content

Latest commit

 

History

History
105 lines (78 loc) · 4.4 KB

File metadata and controls

105 lines (78 loc) · 4.4 KB

Contributing

There is more than one way of contributing to GRASS. Here we will focus on contributions centered around the main GRASS source code. You can also report issues, plan new features, or explore https://grass.osgeo.org/get-involved/.

AI use policy

AI tools are part of modern development workflows and contributors may use them. However, all contributions must meet GRASS quality standards regardless of how they were created.

Guidelines

AI-assisted development is acceptable when used responsibly. Contributors must:

  • Test all code thoroughly. Submit only code you have verified works correctly.
  • Understand your contributions. You need to be able to explain the code changes you submit.
  • Write clear, concise PR descriptions in your own words.
  • Use your own voice in GitHub issues and PR discussions.
  • Take responsibility for code quality, correctness, and maintainability. Self-review AI-generated code before submitting — question whether each change is justified and remove what is not.

Disclosure

Disclose AI assistance when substantial algorithms or logic were AI-generated, or when uncertain about licensing or copyright implications. Be honest if a reviewer asks about code origins.

Unacceptable submissions

Pull requests may be closed without review if they contain:

  • Untested code
  • Verbose AI-generated descriptions
  • Evidence the contributor doesn't understand the submission

Using AI to assist learning and development is encouraged. Using it to bypass understanding or submit work you cannot explain is not.

Translations

Help make GRASS accessible in more languages! No programming knowledge is needed — all translation work happens through Weblate, a web-based platform.

Getting started with translations

  1. Create an OSGeo UserID
  2. Sign in to OSGeo Weblate with your OSGeo UserID
  3. Browse the GRASS GIS translation project
  4. Select your language (or request a new one if it's not listed)
  5. Start translating! The web interface guides you through each message

Translations are automatically submitted to the GRASS repository as pull requests. For help or questions, join the GRASS user community on Discourse.

See locale/README.md for more technical details about the translation process.

Changing code and documentation

To contribute changes to GRASS GitHub repository, use a "fork and pull request" workflow. This guide leads you through a first time setup and shows how to create a pull request.

To contribute effectively, please familiarize yourself with our Programming Style Guide.

If you use an AI assistant or agent, see AGENTS.md for project-specific instructions and conventions.

To test your changes, you may need to compile the source code. For compilation, see instructions for building with CMake or instructions for GNU Autoools. Further notes for various platforms can be found on a dedicated wiki page.

Before creating a PR, please test your changes. Refer to testing README for details. Once you create a PR, a series of automated checks which will run on your pull request. This is a part of the standard iterative process of integrating changes into the main code, so if that happens, just see the error messages, go back to your code and try again. If you are not sure what to do, let others know in a pull request comment.

In addition to testing, please use pre-commit to apply standardized formatting.

About source code

GRASS is written in more than one programming language, but you need to know only the language relevant to your contribution. While much of the source code is written in C, a significant portion is written in Python. A compiler is needed to convert the C and C++ source code into executable files ("binaries"). In contrast, Python is an interpreted language that can only be executed with Python software. There is also documentation in HTML files and other files in the GRASS source code.