Google Summer of Code/2023/Project ideas
This page lists a number of ideas for potential Google Summer of Code 2023 projects. This page's primary purpose is to help to give potential applicants ideas that they can build on to turn into applications for the program. Members of the OSM developer community are encouraged to identify ideas for projects, and indicate whether they would be willing to act as a mentor for a GSoC contributor attempting the project, using the GSoC idea template.
Participant project ideas
GSoC contributors can base their application on one of the ideas below, but we also encourage potential GSOC contributors to come up with their own ideas for projects around OpenStreetMap software. Do you have a pet annoyance you want fixed? A feature you think should be implemented? If you believe you are capable of implementing it and it fits within the time constraints and the GSOC eligibility criteria feel free to bring the idea forward.
Please get in touch with the organizers (at gsoc-orga@openstreetmap.org) as soon as possible if you want to work on something not listed here, so that we can make sure you get the best support possible. We would suggest supplying the same information as in the templates below, if you don't have a potential mentor it may be possible for us to find one for you.
Searching
Suggested By
Summary
When users search places, they often like to use category words ("hotels in Berlin", "Eiffel tower bus stop", ...). Nominatim has limited support for such category searches. It defines Nominatim/Special_Phrases which are detected in the search query and then used to filter the results. The manually curated lists in the wiki are rather tedious to keep and duplicate other community-maintained lists. For this project, you should explore the tagging presets of the ID editor. The presets contain an extensive list of category names for OSM tags with many translations. The goal of this project is to make these terms searchable with Nominatim. Given that the editors and search engines have very different goals, this will not be a straightforward translation. You will have to experiment and research how category words are used in search, which may include thinking about into simple linguistic problems in a multi-lingual setting.
Mandatory skills
basic understanding of OSM tagging including some experience with editing OSM data, basic Python
Useful skills
SQL(Postgresql, Postgis)
Required experience
intermediate
Length
175 or 350 hours
Difficulty
medium to advanced
Possible Mentors
Notes
This idea can be either done as a shorter 175h project concentrating on extracting and using simple category words from ID's presets. This would be of medium difficulty. At a length of 350h, students can dive more deeply into the search algorithms for categories and improve them to also find subcategories ("vegan restaurants").
Comments
Original issue at [1]. Please also see the general hints for contributing to Nominatim for GSOC at User:Lonvia/GSoC_2021_Nominatim_Projects.
|
General
Suggested By
Christian Beiwinkel, Nils Nolde
Summary
There are many open improvement suggestions, which would make this frontend a lot more usable and attractive: https://github.com/gis-ops/valhalla-app/issues. We appreciate this is not a single, tightly-knit project idea, but would very much welcome someone to improve the UX with our guidance and also bring in her/his own ideas.
Mandatory skills
beginner ReactJS
Useful skills
intermediate React/JS
Required experience
beginner/intermediate
Length
175 hours
Difficulty
beginner/intermediate
Possible Mentors
Christian Beiwinkel
Notes
Further information about our process for this year's GSoC can be found here: https://github.com/gis-ops/valhalla-app/wiki/GSoC-2023, including how to contact us and express your interest.
Comments
This web app is officially hosted by FOSSGIS e.V. and is used by a lot of people worldwide for route planning: https://valhalla.openstreetmap.de/.
It also helps tremendously to communicate issues/problems on the Valhalla upstream project.
|
iD editor
Suggested By
Summary
Mandatory skills
JavaScript
Useful skills
Experience with the D3.js framework, OSM tagging/mapping workflows, and iD development
Length
350 hours
Difficulty
medium
Possible Mentors
Notes
Mapping certain attributes such as access restrictions can be quite difficult in iD. Currently, the mapping of access restrictions on roads, barriers, and similar map features can be quite difficult, especially when Conditional restrictions come into play. The goal of this project would be to implement a user interface widget which should a) provide a better visual interpretation of already mapped access restrictions (for example in the form of icons similar to road signs for various situations) and b) allow to more easily add or modify such access restriction situations. The widget should also be able to take regional differences into account, such as differences in real world road signage and/or mapping practices.
Comments
If feasible, this widget should be implemented in a way that can be flexibly applied to other complex mapping situations. This would need to be considered in the planning phases of the project.
|
JOSM editor
Suggested By
Summary
https://vespucci.io utilizes the JOSM preset format, however has extended the configuration to work better outside of the narrow realm of JOSM see Vespucci preset documentation. The work should add support to JOSM for these extensions (that includes utilizing them in the UI).
Mandatory skills
Java
Useful skills
Experience with OSM mapping workflows and specifically with JOSM
Length
175 hours
Difficulty
Easy
Possible Mentors
SimonPoole
Notes
At least the deprecated attribute to indicate deprecated preset items, regions and exclude_regions for localisation, the value_type attribute to indicate the type of the value and the alternative attribute should be supported.
|
Routing
Suggested By
Siarhei Fedartsou, Nils Nolde
Summary
Develop Python bindings to the OSRM C++ framework: https://github.com/Project-OSRM/osrm-backend in a new repository under the Project-OSRM Github organization, and potentially publish them on PyPI for all platforms and supported Python versions.
The bindings' API should mirror the HTTP API's interface. The main advantage of bindings is avoiding the HTTP round trip and the integration into apps as a Python library.
Mandatory skills
minimum beginner C++
Useful skills
intermediate C++, pybind11, Python packaging
Required experience
beginner/intermediate
Length
175 or 350 hours(This project can be done in 2 settings: 175 hours for only developing the Python bindings and make sure it can be installed from source with at least Python 3.10. 350 hours for packaging the bindings and publishing them to PyPI for all platforms & supported Python versions.)
Difficulty
intermediate
Possible Mentors
Siarhei Fedartsou, Nils Nolde
Notes
More information on this project can be found here: https://github.com/Project-OSRM/osrm-backend/wiki/GSoC-2023-Guidelines, including a way to contact us to express your interest.
Comments
There are many great geospatial C++ projects which offer Python bindings (GDAL, QGIS, osmium, Valhalla) and there's lots of ways to make that happen. However, we'd prefer to use pybind11 which is possibly the easiest way in our opinion, as it purely relies on C++, not another meta-language like Cython.
|
Suggested By
NilsNolde
Summary
Enable "landmark"-based navigation/narration for Valhalla's route guidance, based on OSM's POIs, such that e.g. pedestrians can be instructed to "turn right in front of Tesco supermarket", which provides a much more natural pedestrian/bike guidance than (often not readily accessible) street names.
Mandatory skills
intermediate C++
Useful skills
OSM analysis skills
Required experience
intermediate
Length
350
Difficulty
Intermediate
Possible Mentors
Kevin Kreiser, Nils Nolde
Notes
More information on this project can be found here: https://github.com/valhalla/valhalla/wiki/GSoC-2023-Guidelines, including a way to contact us to express your interest.
Comments
The high level discussion of the project goals and layout can be found here: https://github.com/valhalla/valhalla/issues/4037.
There's also 2017 summary paper about the topic, from the HeiGIT group: https://www.mdpi.com/2220-9964/6/3/64.
|