OpenStreetMap logo OpenStreetMap

Sarabjeet Sodhi's Diary

Recent diary entries


Hi everyone, this is my final report for my GSoC’23 project: support Vespucci preset extensions in JOSM.

Previous diary entries

Getting started

Project Summary

About the project

Vespucci utilizes the JOSM preset format but has extended the configuration to work better outside of the narrow realm of JOSM. The project aimed at adding these additional extensions in JOSM. These extensions include deprecated, regions, exclude_regions, value_type, and alternative. see Vespucci preset documentation

Work done

The presets can have the additional attribute “regions”, which will contain the ISO codes of the countries to which the preset is applicable. “exclude_regions” will invert the meaning of “regions”, i.e., the preset should not be applied in countries specified under “regions”.

A warning message is displayed before the upload if the preset is applied in the country not defined in the “regions”.

Imgur Imgur

A boolean attribute “deprecated” can be added in the preset source file which indicates that a preset should only be used for matching and not for new uses.

Similar to the “regions” attribute, an error message is shown before uploading if an object is marked with a deprecated tag.

Imgur Imgur

The alternative preset contains the presets which are similar to the current preset being applied.

With this, we have an additional checkbox to filter the deprecated tags.


What next

  • Support for value_type and some testing is left, which I plan to do after the GSoC period.
  • The validation for attribute “regions” is done after the user has applied the preset and therefore some UI element for validation is required.


I am extremely grateful to my mentors, Simon Poole, and Taylor Smock, for their invaluable guidance and support during the entire duration of the program.

I am thankful to Google Summer of Code for providing me with an opportunity to work with OpenStreetMap.


I am Sarabjeet Sodhi, an undergraduate student at Manipal University Jaipur, India. Since my childhood, I have been fascinated by maps and loved map-related stuff like scrolling through the satellite imagery on google maps, watching documentaries like “What on Earth?”, and spending hours to find signs of the Sentinelese tribe on the North Sentinel island through satellite images. Mapping for OpenStreetMap feels like a natural upgrade to me.

I like the idea of free and Open-Source software and this summer, I will be contributing to the JOSM editor.

GSoC Project: Support Vespucci preset extensions in JOSM

The default presets which are used by Vespucci are derived from the JOSM’s preset. Vespucci presets however have evolved to support far greater functionalities than those supported by the JOSM. These additional functionalities act as an extension and the project aims to add these extensions to JOSM. These extensions include:-

  1. deprecated: makes the preset available only for matching purposes and hides it for new use and searches.
  2. regions: stores the list of countries the given preset is applicable for.
  3. exclude_regions: if true, inverts the meaning of regions.
  4. value_type: states the type of value stored in a key like
    • opening_hours
    • website
    • phone

The detailed list of these extensions can be found here

Adding these extensions to the JOSM will provide a consistent experience for users across the editors.

I will also be working on making the existing Java classes Records, which will help in reducing the boilerplate code, making the code concise, and reducing the static memory footprint of JOSM.

I will be using this diary for posting updates on my project and writing its documentation.

Thank you for reading!

Connect with me on LinkedIn GitHub