Google Summer of Code/2018/Project Ideas

From OpenStreetMap Wiki
Jump to: navigation, search

This page lists a number of ideas for potential Google Summer of Code 2018 projects. Ideas from previous years are often still good and can be used - see Category:Google Summer of Code ideas. Also check out Research/Ideas (project ideas related to research or academia), Top Ten Tasks (some prominent development tasks in the OSM ecosystem), and existing bugs for more problems to solve.

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 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.

Processes

If you are thinking of applying for GSoC, please see our Google Summer of Code/Processes page which describes the way that we manage GSoC within OSM, so you know what we expect of students and mentors.

Project Ideas

This is the list of projects. Please add projects using the GSoC idea template.

API

Matt Amos' Road to API 0.7 is an overview of proposed changes.

cgimap-ruby
Suggested By
Summary
Finish off cgimap-ruby and update OpenStreetMap-Website to use it
Skills Required
Ruby; C++
Difficulty
Medium
Possible Mentors
None yet
Notes
Cgimap-ruby is a project to embed cgimap inside the website. At first this would seem like a strange thing to do, but what it means is that anyone can continue to download and work on the website on their local computer without needing to also run cgimap separately. It's already difficult to get started developing the website, and we don't want to make it any harder.
Comments
Potentially tied with one of the other backend changes
Full cgimap read-only support
Suggested By
Summary
Add more read-only API calls to cgimap
Skills Required
C++, PostgreSQL
Difficulty
Medium(Easy if proficient in Ruby and C++)
Possible Mentors
Paul Norman, Komяpa, Gardster
Notes
At the moment, cgimap supports only a few of the available API calls, and none of the ones which aren't 'geographic' such as user details. The support needs to be added here, so that we can start routing all read-only API calls to cgimap and get some confidence that they're all implemented correctly. There's nothing terribly complicated to do here: It's a matter of looking at the Rails code to see what it's doing, writing tests for cgimap to try and cover all the different conditions, then writing the code.
Comments
Good to tie in with cgimap-ruby or write support
Full cgimap write support
Suggested By
Summary
Add data-modifying API calls to cgimap
Skills Required
C++, PostgreSQL
Difficulty
Hard(Medium if proficient in Ruby and C++)
Possible Mentors
Paul Norman, Komяpa, Gardster
Notes
A read-only API is all very good for taking the load off Rails and spreading it over database replicas, but it's only half of the answer. The other half is being able to support writing new data to the API. This is going to require some major changes to how cgimap works internally, but could bring some major improvements to upload latency which, at the moment, can sometimes feel quite slow (see respective Github issue for a redesign of the upload process using bulk operations in C++)
Comments
Good to tie in with read support
Make the website use the API
Suggested By
Summary
Change the website to rely on API calls instead of directly accessing the database
Skills Required
Javascript, Ruby
Difficulty
Hard
Possible Mentors
Paul Norman, Komяpa
Notes
At the moment, the website directly accesses the same bits of data as the API, via Rails, from the database. This means the website and API are tightly coupled and it's impossible to change one without changing the other.

It also means it's not simple to implement any sort of caching or replication to make the website faster. This is because the read-write connections that the API uses are indistinguishable from the read-only connections to Rails' internals.

This step might be quite difficult, as there are a number of places in the website where it directly interacts with database objects, for example in the "browse" pages. In some cases, the website is using functionality or data which isn't currently available in any API, for example the next and previous objects for pagination.
Comments
This would need scoping to be specific about what parts of the website are targeted

The different cgimap and API projects are related and if a student wants to pick parts from each project, this is an option.

Notification system on the website
Suggested By
Summary
Skills Required
Ruby on Rails, API basics
Difficulty
Medium
Possible Mentors
None yet
Notes
The OpenStreetMap website has a mechanism that sends you emails when people message you or comment on your changeset. The idea is to build this into the app instead of using emails. This will improve how the OSM website offers interaction as well as how other apps like OSMCha leverage the API.
Comments
This is an idea from the openstreetmap-website ticket here  https://github.com/openstreetmap/openstreetmap-website/issues/908 Addition: there should be a way for registered applications to message users. While using OSM OAuth is attractive to 3rd party applications, they always require users email address in addition in order to notify them. With an approved procedure for messaging, users mail address can remain private and they can approve messaging per application. NB: There’s already a lengthy discussion on this topic: https://github.com/openstreetmap/openstreetmap-website/pull/1431


Qt Support

Qt is a FOSS C++/QML framework for developing cross platform applications. It has positioning and location modules for integrating maps into applications. For more information see http://doc.qt.io/qt-5/qtlocation-index.html.

Qt projects are currently reworked on and will be published again soon (See Incubation

JOSM Editor

PT Assistant
Suggested By
Summary
Continued development of Public transport assistant
Skills Required
Java
Difficulty
Hard
Possible Mentors
Polyglot
Notes
The PT_Assistant plugin was developed during 2 previous summers. It can now detect most problems and propose fixes for some of them. If a list of stops is known, it should assist the mapper more with routing from one to the next. Last year detecting problems in bicycle and hiking relations was added, this also needs improvements.
Comments
Extend Wikipedia plugin for Wikidata
Suggested By
Summary
User interface for working with Wikidata
Skills Required
Java
Difficulty
Medium/Hard
Possible Mentors
Polyglot
Notes
The Wikipedia plugin has basic support for wikidata at the moment. I would like a user interface which compares tags/properties. In case the mapper is importing data into OpenStreetMap, it could help create Wikidata entries for these POIs as well, suitably referenced. There is a WDTK Wikidata Toolkit written in Java, which can probably be used and there is this interface: Sophox, which might be useful.
Comments
Suggested demo of coding ability: extend wikipedia plugin or create a separate plugin and add a layer with nodes for wikidata entries which have coordinates. When such 'node' is clicked, show a dialog with the properties of the Wikidata item.

Public Transport

GTFS converter
Suggested By
Summary
Web interface for converting GTFS and DB dumps of public transport operators
Skills Required
Django, Python, Javascript
Difficulty
Medium
Possible Mentors
Polyglot, Dkocich
Notes
Conversion of stops and itineraries data from GTFS to OSM route relations for continued integration. It should allow follow up of stops that move or are renamed. When route variations change (different sequences of stops served) the user should be made aware of this.
Comments
Google_Summer_of_Code/2018/GTFS_to_OSM_Staging Suggested demo of coding ability: Set up GeoDjango (maybe on Heroku) and show some bus stops retrieved using an Overpass Query on a web map.
Web editor for OSM public transport routes - 2nd part
Suggested By
Summary
Improvements of web editor for OSM public transport routes
Skills Required
JavaScript, Leaflet, Node/NPM, XML processing, Angular2+, Webpack, HTML, CSS, OSM data model, possibly Ngrx-Redux
Difficulty
Medium
Possible Mentors
Notes
During the previous year of GSoC, Zverik proposed to create a web editor to increase the number of public transport routes in OSM (2017 application and write-up). The project is currently on Github but there are still things to do to make editing of routes easier for users. Complex but interesting tasks could be automated creation of a relation from its nodes with the use of open routing services and route’s geometry (ways) editing (that would include mainly splitting of roads at intersections or roundabouts). Other tasks include UI/UX polishment and optimization for all web/mobile devices, refactoring the app with Ngrx to better handle the application state and various bug fixing.
Comments

3D and indoor rendering

Simple Indoor Tagging support for OSM2World
Suggested By
Summary
While OpenStreetMap is already used to map the world in three dimensions, this is usually still limited to the outdoors. By making use of Simple Indoor Tagging, the OSM2World renderer would be able to create seamless indoor and outdoor 3D worlds. The goal of this project is to add basic multi-level floor layouts, involving rooms and walls, doors and windows, elevators, staircases and other indoor features, into OSM2World's 3D buildings.
Skills Required
Java, basic understanding of 3D graphics fundamentals
Difficulty
Medium
Possible Mentors
Notes
The application should note any previous experience with 3D APIs (such as OpenGL, DirectX, or WebGL) or engines. This knowledge is not strictly required, but makes the project easier.
Comments


Nominatim

Nominatim is the geo search engine that powers the search box on the main osm.org site. There are a number of enhancements open that fit into the framework of GSoC.

Add Wikidata to Nominatim
Suggested By
Summary
Nominatim already uses page ranking of Wikipedia pages to guess the importance of all the places it indexes. Lately OSM data has also gained a lot of wikidata tags which might provide similar information. The goal of this project is to extend the existing wikipedia extraction scripts to also take into account wikidata. The principal aim is to improve the existing importance ranking. As a secondary goal you should investigate if other data from wiki data might be useful as well in order to improve search result.
Skills Required
PHP, SQL(Postgresql, Postgis)
Difficulty
Medium
Possible Mentors
lonvia
Notes
The existing wikipedia extract script can be found here: https://github.com/openstreetmap/Nominatim/blob/master/utils/importWikipedia.php
Comments
Improve Reverse Geocoding Algorithm for Nominatim
Suggested By
Summary
Reverse geocoding (getting the address for a given location) in Nominatim doesn't really give the best possible information about a requested location. It searches for the closest OpenStreetMap object and returns address information about it. That leads occasionally to surprising results, in particular in areas with sparse data coverage. The goal of this project to develop and implement a new algorithm for reverse geocoding that better covers the actual position.
Skills Required
PHP, some SQL(Postgresql, Postgis)
Difficulty
Medium
Possible Mentors
Notes
Comments
Nominatim API v2
Suggested By
Summary
The current API has a number of shortcomings and errors which cannot be fixed because it would break existing clients. Therefore it is time to start thinking about a new version of the API. The goal of this project would be to implement a new version of the API with the same functionally but where the output of the results is improved. To get an idea where the output needs to be improved, have a look at the Milestone for API v2. Note that the tickets for this milestone are by no means exhaustive. One task of this project would be to analyse which information is easily available and useful to return.
Skills Required
PHP, basic knowledge of SQL
Difficulty
Medium
Possible Mentors
lonvia
Notes
See also
Comments

iD Editor

iD - support for vector tile data
Suggested By
bhousel
Summary
This task is to add support for _vector tiled_ data to the iD editor.
Skills Required
JavaScript, SVG, D3.js, basic knowledge of OpenStreetMap
Difficulty
Medium
Possible Mentors
bhousel
Notes
The iD editor allows anybody to make edits to OpenStreetMap in their web browser. Our primary goal is to make this editor easy and fun for anybody to use.

We currently use publicly available reference data when editing OpenStreetMap. This data is often in the form of _raster tiles_ (aerial imagery published as bitmap, gif, jpeg).

It would also be beneficial to support _vector tiles_, a popular open standard for transferring compressed map geometry and metadata. For example, there exist reference vector tiles that contain Q/A items needing fixing, turn restrictions, road centerlines, hydrology, building footprints, etc.

A vector tile source may contain multiple layers, which should be able to be styled and toggled on or off.
Comments
iD - support for OSM map notes
Suggested By
bhousel
Summary
This task is to add support for _OSM map notes_ to the iD editor.
Skills Required
JavaScript, SVG, D3.js, basic knowledge of OpenStreetMap
Difficulty
Easy
Possible Mentors
bhousel
Notes
The iD editor allows anybody to make edits to OpenStreetMap in their web browser. Our primary goal is to make this editor easy and fun for anybody to use.

Users can currently add notes to OpenStreetMap using the "Add a note to the map" button on openstreetmap.org. This feature allows anybody to report map issues, such as missing streets, closed businesses, or connectivity errors.

We don't currently have the ability to display these notes directly in the iD editor. It would be great to add the following capabilities:

  • Add a "Map Notes" layer that fetches notes in the current user's view from the OSM API.
  • When the "Map Notes" layer is enabled, display the notes as markers that overlay the editable map
  • Include the ability to update the notes: for example, respond with a message and change their status to "closed"
Comments
iD - Improvements for touch/mobile/tablet use
Suggested By
bhousel
Summary
This task is to make iD editor work well touch/mobile/tablet devices
Skills Required
JavaScript, SVG, D3.js, basic knowledge of OpenStreetMap, responsive web design
Difficulty
Hard
Possible Mentors
bhousel
Notes
The iD editor allows anybody to make edits to OpenStreetMap in their web browser. Our primary goal is to make this editor easy and fun for anybody to use.

iD is currently written for desktop users in mind. There are several things that would need to change in order to bring a first-class experience to users on mobile devices:

  • Fixed-width absolutely positioned ui elements, like the sidebar, menus, and really everything
  • Reliance on keyboard for certain features (shift click, alt click, etc)
  • Reliance on mouse events and hover
  • Too small touch targets (viewport should probably be scaled up for big fingers)
  • Testing on mobile, especially consider memory or battery performance
  • Respond to changes in portrait/landscape orientation
  • changes to the walkthrough tutorial (current walkthrough tutorial content expects users to be clicking a mouse)
  • Possibly need ability to toggle in and out of tablet mode
Comments
iD - allow mappers to better use more imagery sources
Suggested By
Summary
iD is limited to using only a single tile-based layer. Mappers in many areas would be able to access better imagery if you helped improve this.
Skills Required
JavaScript, basic knowledge of geographic projections, basic knowledge of OpenStreetMap
Difficulty
Medium
Possible Mentors
bhousel or tyrasd?
Notes
The editor layer index contains imagery sources and their shapes. Currently, iD only shows local tms layers.
  • WMS sources like this one should be shown in the available imagery layers.
  • WMS endpoints like this one could be shown as a folder.
  • Layers could be toggled on or off, reordered, or have their opacity adjusted. See for example how QGIS or JOSM do it.
Comments
WMS support tracked on GitHub here: https://github.com/openstreetmap/iD/issues/1141

Multiple layers (kinda) tracked on GitHub here: https://github.com/openstreetmap/iD/issues/2095

wms_endpoint tracked on GitHub here: https://github.com/openstreetmap/iD/issues/4828

Tegola

Add shapefile support
Suggested By
Summary
OpenStreetMap-based maps normally use shapefiles for data like coastlines, built up areas, and low-zoom rendering. Tegola currently doesn't have shapefile support and requires importing the files into PostGIS
Skills Required
Golang knowledge
Difficulty
medium
Possible Mentors
ARolek
Notes
Tegola has the API for multiple data providers, it is a matter of adding another one. See https://github.com/terranodo/tegola/issues/313 for tracking
Comments

Surveying

ARCore based measurement support
Suggested By
Summary
google has just released its ARCore augmented reality support, replacing its earlier efforts running on special hardware (Tango). When surveying in- and outside using ar technology for measuring can make life a lot easier for our contributors and allow surveying of data that we would otherwise not have collected. See for example the Android wheelmap app that supported Tango. ARCore currently runs on a limited number of phones, but is clearly a lot more accessible than Tango.
Skills Required
Java, Android, interest in exploring new technology
Difficulty
medium
Possible Mentors
Simon
Notes
Due to the nature of ARCore (limited phone support, potential privacy invasion by google etc) the functionality should be provided by a separate app that provides an Intent based measurement API. Deliverables should include integration in a stand alone sample application and in Vespucci. It is clearly possible to extend this to include AR based editing, however that would seem to overreaching for a GSOC project and potentially will end in a toy and not something actually useful.
Comments