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. For ideas from previous years see Category:Google Summer of Code ideas. Also check out Research/Ideas (project ideas related to research or academia), Top Ten Tasks (the main issues OSM developers are concerning themselves with), 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.

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.

libosmscout offline mapping plugin
Suggested By
Summary
Create a QtLocation geoservice plugin based on libosmscout
Skills Required
C++
Difficulty
Medium
Possible Mentors
Notes
Comments
libosmscout is a proven map rendering library capable of using OSM data to render maps. Creating a QtLocation geoservice plugin based on libosmscout would allow to display offline mapping data easily and effectively on a wide range of platforms.
libosrm offline routing plugin
Suggested By
Summary
Create a QtLocation geoservice plugin based on libosrm
Skills Required
C++
Difficulty
Medium
Possible Mentors
Notes
Comments
libosrm, a part of the osrm-backend, is a very fast technology for geocoding, routing and map matching. QtLocation already supports the OSRM protocol and remote OSRM servers. Creating a QtLocation geoservice plugin based on libosrm would allow to use the OSRM support also offline.

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

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