Google Summer of Code/2021/Project ideas

From OpenStreetMap Wiki
Jump to navigation Jump to search

This page lists a number of ideas for potential Google Summer of Code 2021 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 here, and whether they would be willing to act as a mentor for a student attempting the project.

Students can base their application on one of these ideas, or on an idea of their own if they prefer.

Please add projects using the GSoC idea template. This year's GSoC projects will be significantly shorter than in those the past, so the scope of project ideas should reflect that.

Core / API

Searching

Extracting QA reports from Nominatim
Suggested By
Summary
Nominatim contains OSM data in a processed form that allows to discover a lot of inconsistencies. The goal of this project would be to identify possible sources of inconsistencies and write and automatic extraction tool that exports the possible errors to a json file suitable for Osmoscope.
Skills Required
JavaScript, SQL(Postgresql, Postgis), some mapping experience with OSM
Difficulty
Medium
Possible Mentors
lonvia, mtmail
Notes
See [1] for an initial list of QA reports to extract.
Comments
Please note that this year we only accept students for the Nominatim projects that already have proposed a pull request for the Nominatim software. This may be PRs for code, improvements to the documentation or new tests. For more information, see User:Lonvia/GSoC_2021_Nominatim_Projects.
Interface for reporting search bugs for Nominatim
Suggested By
Summary
We'd like to have an interface where people can report search results that they think to be wrong. The website would need to record the relevant parts of the search query and ask the user for the expected results. Reporting should work for forward and reverse geocoding requests. The reports should be collected in a database and then compiled into a test suite, for example using https://github.com/geocoders/geocoder-tester. If there is enough time, the project might also include a facility to regularly run the tests and report results in a dashboard.
Skills Required
JavaScript, Python, basic SQL
Difficulty
Medium
Possible Mentors
lonvia, mtmail
Notes
See https://github.com/osm-search/Nominatim/issues/1847 for details on the requirements of such an interface.
Comments
Please note that this year we only accept students for the Nominatim projects that already have proposed a pull request for the Nominatim software. This may be PRs for code, improvements to the documentation or new tests. For more information, see User:Lonvia/GSoC_2021_Nominatim_Projects.
Clean up Nominatim's Wikipedia importance computation scripts
Suggested By
Summary
Nominatim has scripts to process dumps from wikipedia and wikidata. These scripts do a simple link frequency analysis to determine for each wikipage how important it is. We use this importance than to weigh the importance of search results. The scripts work but are very resource hungry. Processing all the data requires more than 1TB disk space and takes more than a day. There is room for optimisation here. Our main goal is to have a process that can be run regularly on a medium sized machine.
Skills Required
bash, basic SQL, maybe Python
Difficulty
Medium
Possible Mentors
lonvia, mtmail
Notes
Resources:
Comments
Please note that this year we only accept students for the Nominatim projects that already have proposed a pull request for the Nominatim software. This may be PRs for code, improvements to the documentation or new tests. For more information, see User:Lonvia/GSoC_2021_Nominatim_Projects.

General

Opening hours tag evaluator
Suggested By
Summary
https://github.com/simonpoole/OpeningHoursParser is used in a number of projects for parsing OSM opening_hours tags, it is however missing a complete evaluator.
Skills Required
Difficulty
Medium
Possible Mentors
SimonPoole
Notes
There is some work https://github.com/leonardehrenfried/opening-hours-evaluatoron which this might be able to be based on, at least minimal holiday support should be added and location based interpretation of sunrise and sunset values. This will entail finding a suitable licensed source of such data, or creating an own format (note GPL and AGPL sources are off limits).
Comments
Language: Java, use of 3rd party dependencies should be minimal, best none at all.

Mobile

Improve mapsplit offline OSM data updating support
Suggested By
Summary
https://vespucci.io uses https://github.com/simonpoole/mapsplit for offline data. Currently there is no support for updating the data in place, which would allow directly updating the data from edits and potential for keeping a mapsplit file up to date with OSM edits in general.
Skills Required
Difficulty
High
Possible Mentors
SimonPoole
Notes
The likely best way to implement this is to consume Overpass Augmented or a simpler format context diffs (the later however would require developing a mechanism to generate them) format. Updating should be both possible on desktop/Server and on mobile. Support for directly updating from edits in Vespucci (post upload) should be supported too.
Comments
Language: Java, potentially Kotlin for any standalone components on mobile.
Element history widget
Suggested By
Summary
See https://github.com/MarcusWolschon/osmeditor4android/issues/577 the deliverable would be a widget that will display multiple version of an OSM element highlighting the differences.
Skills Required
Difficulty
Medium
Possible Mentors
SimonPoole
Notes
If reasonably possible this should be implemented as a separate component from Vespucci to enable reuse by other apps (there are a couple of gotchas that might make this too much effort for the possible gains).
Comments
Language: Java, some Android experience required.

JOSM editor core

Support Vespucci preset extensions in JOSM
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 . The work should add support to JOSM for these extensions (that includes utilizing them in the UI).
Skills Required
Difficulty
Easy
Possible Mentors
SimonPoole
Notes
See http://vespucci.io/tutorials/presets/#translation At least translation with GNU text, 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. Time permitting some work could be done on the Vespucci side of things to support more features of the JOSM format and further extensions (that might make sense for JOSM too), see https://github.com/MarcusWolschon/osmeditor4android/issues?q=is%3Aopen+is%3Aissue+label%3APresets
Comments
Language: Java.

JOSM editor plugins

Improving usability of indoorhelper Plugin
Suggested By
grait
Summary
https://github.com/JOSM/indoorhelper is a JOSM plugin to support indoor mappers with automatic level tagging, tag presets and validators. Right now, this plugin has a very limited usability and does not support the whole indoor mapping work flow.
Skills Required
Java, Knowledge of JOSM architecture
Difficulty
easy
Possible Mentors
grait
Notes
The plugin supports the Simple Indoor Tagging (https://wiki.openstreetmap.org/wiki/Simple_Indoor_Tagging) scheme and should support the mapper during the complete indoor mapping workflow (building map fitting, creation of levels, mapping of building elements, etc.)
Comments

OSM Website

Centralized Changeset comment manager (merged with messages?)
Suggested By
Summary
Today it's quite cumbersome to follow changesets comments: The only place where one can keep track on them is by using HDYC website, which is not that user friendly. The purpose of this idea would be to add a kind of forum-like or webmail-like interface in a user profile to list all changesets where the user has published a comment and all changesets by the user which have been commented, with a basic read/unread mechanism. I even think that it could be merged with the profile inbox/messages feature to have everything interconnected in one single place.
Skills Required
Ruby, HTML, JS, CSS
Difficulty
High
Possible Mentors
TBD
Notes
Additional explanatory notes
Comments
You should discuss your proposal with the Rails port project maintainers in detail even before applying. Otherwise there's a very high risk that your contribution will not be considered at all for a later merge.
This proposal is similar to https://wiki.openstreetmap.org/wiki/Top_Ten_Tasks#List_of_changeset_discussions_for_a_user, for which an implementation already exists: https://github.com/openstreetmap/openstreetmap-website/pull/1642