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
Medium(Easy 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.
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.