How to contribute to GRASS GIS development: Guidance for new developers in the GRASS GIS Project.
The GRASS GIS 8.4.0 release provides more than 520 improvements and fixes with respect to the release 8.3.2.
The GRASS GIS 8.4.0RC1 release provides more than 515 improvements and fixes with respect to the release 8.3.2. Please support us in testing this release candidate.
The GRASS GIS Annual Report for 2023 highlights a year of significant achievements and developments in the GRASS GIS project, which celebrated its 40th anniversary.
Here’s a summary of the report:
- Community Meeting: The GRASS GIS Community Meeting was held in June at the Czech Technical University in Prague, bringing together a diverse group of participants from various countries. Additionally, community members participated in the OSGeo Community Sprint in Vienna in November.
- Development Activity: The year saw the release of the GRASS GIS 8.3.0 feature release and three maintenance releases. There were 418 pull requests created, 387 merged, and 103 issues resolved. Nine new addons were added by several contributors. The top five contributors were acknowledged, and a new core contributor was welcomed. Also a GRASS Student Grant was awarded.
- Conferences in 2023: GRASS GIS was represented at several conferences, including the North Carolina GIS conference, FOSS4G in Kosovo and North America, and the OpenGeoHub Summer School. Topics covered ranged from parallelization in GRASS GIS to computational notebooks for geospatial computation.
- GRASS GIS in Industry: OpenPlains Inc., a startup utilizing GRASS GIS, was founded. Additionally, a subaward was granted to research software engineers at North Carolina State University to enhance GRASS GIS, funded by an NSF grant awarded to Natrx.
- GRASS GIS in Academia: A significant NSF grant was awarded to a team from four U.S. universities to support the GRASS GIS community. Various academic activities, including workshops, courses, and lectures, were conducted throughout the year, emphasizing the application of GRASS GIS in different fields.
- GRASS GIS in Government: The U.S. Geological Survey released a training video on using GRASS GIS with 3D Elevation Program data. The NC State University team received research support from the US Department of Agriculture for developing GRASS modules for surface water modeling.
Congratulations to all contributors!
The full report is available at https://grass.osgeo.org/news/2023_12_19_annual_report/
Open source software projects thrive on the contributions of the community, not only for the code, but also for making the software accessible to a global audience. One of the critical aspects of this accessibility is the localization or translation of the software’s messages and interfaces. In this context, Weblate (https://weblate.org/) has proven to be a powerful tool for managing these translations, especially for projects such as GRASS GIS, which is part of OSGeo (Open Source Geospatial Foundation).
What is Weblate?
Weblate is an open source translation management system designed to simplify the translation process of software projects. It provides an intuitive web interface that allows translators to work without deep technical knowledge. This ease of use combined with robust integration capabilities makes Weblate a popular choice for open source projects.
GRASS GIS and Localization
GRASS GIS (https://grass.osgeo.org/), a software suite for managing and analyzing geospatial data, is used worldwide and therefore needs to be available in many languages. The project uses Weblate, hosted by OSGeo, to manage and facilitate its translation work (see OSGeo-Weblate portal).
Marking messages for translation
Before translation work can begin, the messages to be translated must be marked for translation in the GRASS GIS source code. This is done with the gettext macro _(“…”). GNU gettext is a GNU library for the internationalization of software. Here is a simplified overview of the process:
- Identify the strings to be translated: The developers identify the strings in the source code that need to be translated. These are usually user messages, while debug messages are not marked for translation.
- Use the gettext macro: The identified strings are packed into a gettext macro. For example, a string “Welcome to GRASS GIS” in the source code would be changed to _(“Welcome to GRASS GIS”). This change indicates that the string should be used for translation.
- Extraction and template generation: Tools such as xgettext are used to extract these marked strings from the source code and create a POT (Portable Object Template) file. This file is used as a template for all translations. In the GRASS GIS project the template language is English.
There are three template files in the GRASS GIS project: one with the graphical user interface (GUI) messages, one with the library functions (libs) and one with the modules (mods).
Connecting the software project to Weblate
While the POT files could be transferred to Weblate manually, we chose the automated option. The OSGeo Weblate instance is directly connected to the GRASS GIS project via git (GitHub) using the Weblate version control integration.
How it works in practice:
- Developer makes a commit to the GRASS GIS repo on GitHub
- A GitHub webhook makes a call to weblate.osgeo.org – note that it has it’s own local git repo for GRASS GIS, as it does for other OSGeo projects, with translations being managed in this Weblate instance. This local git repo is updated when the webhook is fired.
- As messages are translated in OSGeo-Weblate, they are eventually pushed to the Weblate Github fork of GRASS GIS (the push frequency is set to 24 hours by default, i.e., new translations are collected over a day), and Weblate then triggers a pull request to the main GRASS GIS repo on GitHub.
For technical background on the OSGeo Weblate installation, see the related OSGeo-SAC Weblate page.
Translation process in Weblate
Here is how the typical translation process looks like:
- Translator registration: Registration (via OSGeo-ID) and login to the Weblate instance.
- Language selection: Select the language to be translated. If a language does not exist yet, it can be added with the approval of the project managers.
- Translation interface: Weblate provides an easy-to-use web interface where translators can view the original texts and enter their translations. If activated, machine translation can also be used here (DeepL, Google Translate, etc.). The Weblate translation memory helps to quickly translate identical and similar sentences.
- Together we are better: translators can discuss translations, resolve conflicts and suggest improvements. Weblate also offers quality checks to ensure consistency and accuracy. Translations in different languages can be compared in tabular form.
- Integration with source code: Once translations are completed and checked, they are written back into the GRASS GIS source code (see above). Weblate supports automatic synchronization with source code repositories.
- Continuous updates: As the source code evolves, new strings can be marked for translation and Weblate is automatically updated to reflect these changes.
Benefits for the GRASS GIS project
By using Weblate, GRASS GIS benefits from the following advantages:
- Streamlined translation workflow: The process from tagging strings to integrating translations is efficient and manageable.
- Community engagement: Weblate’s ease of use encourages more community members to participate in the translation process.
- Quality and Consistency: Weblate ensures high quality translations through integrated quality checks and collaboration tools.
- Up-to-date localization: Continuous synchronization with the source code repository ensures that translations are always up-to-date.
Conclusion
The integration of Weblate into the GRASS GIS development workflow underlines the importance of localization in open source software. By using tools such as gettext for message tagging and Weblate for translation management, GRASS GIS ensures that it remains accessible and usable for a global community, embodying the true spirit of open source software.
Thanks
Thanks to Regina Obe from OSGeo-SAC for her support in setting up and maintaining the OSGeo-Weblate instance and for her explanations of how things work in terms of Weblate/GitHub server communication.
What’s new in a nutshell
The GRASS GIS 8.3.1 maintenance release provides more than 60 changes compared to 8.3.0. This new patch release brings in important fixes and improvements in GRASS GIS modules and the graphical user interface (GUI) which stabilizes the new single window layout active by default.
Some of the most relevant changes include: fixes for r.watershed
which got partially broken in the 8.3.0 release; and a fix for installing addons on MS Windows with g.extension
.
Translations continue in Weblate, which automatically creates pull requests with the translated chunks. We’d like to thank the translators of all languages for their ongoing support!
Full list of changes and contributors
For all 60+ changes, see our detailed announcement with the full list of features and bugs fixed at GitHub / Releases / 8.3.1.
Thanks to all contributors!
Software downloads
Binaries/Installers download
- Windows
- macOS
- Linux
Further binary packages for other platforms and distributions will follow shortly, please check at software downloads.
Source code download
- https://grass.osgeo.org/grass83/source/
- https://grass.osgeo.org/grass83/source/grass-8.3.1.tar.gz
- From GitHub
First time users may explore the first steps tutorial after installation.
About GRASS GIS
The Geographic Resources Analysis Support System (https://grass.osgeo.org/), commonly referred to as GRASS GIS, is an Open Source Geographic Information System providing powerful raster, vector and geospatial processing capabilities. It can be used either as a stand-alone application, as backend for other software packages such as QGIS and R, or in the cloud. It is distributed freely under the terms of the GNU General Public License (GPL). GRASS GIS is a founding member of the Open Source Geospatial Foundation (OSGeo).
The GRASS Dev Team
The 8.2.0 release of GRASS GIS is now available with results from the GSoC 2021 and many other additions. A new grass.jupyter package is now included for interacting with Jupyter notebooks. Single window graphical user interface is available in GUI settings. r.series and three other modules are newly parallelized. Additionally, the release includes a series of scripting, packaging, and reproducibility improvements.
For all 220+ changes, see our detailed announcement with the full contributors and list of features and bugs fixed at GitHub / Releases / 8.2.0. Special thanks to GSoC students, their mentors, and first-time contributors!
Packages and installers are now available for Windows, macOS, Debian, Fedora, and Gentoo with more coming soon.
See more at grass.osgeo.org / News.
Markus Neteler
Open Source Consultancy
Get in touch
E-Mail: markus AT neteler DOT org | contact form