Google Summer of Code/2017/Project Ideas

From OpenStreetMap Wiki
Jump to: navigation, search

This page lists a number of ideas for potential Google Summer of Code 2017 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 (Deadline March 25th????? See GSoC timeline)

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.

Website

Groups
Suggested By
Summary
Add 'Groups' functionality to openstreetmap.org, providing a way for mapping communities to organise and communicate
Skills Required
Rails; OSM community knowledge
Difficulty
Medium/High
Possible Mentors
tbc
Notes
Long-desired improvement to OSM; some prior work has been done but code would be best approached from scratch. Will require good Rails knowledge but most of all an understanding of OSM and a willingness to work within the community.
Comments

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
tbd
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
Finish off cgimap-ruby and update OpenStreetMap-Website to use it
Skills Required
C++, PostgreSQL
Difficulty
Easy/medium
Possible Mentors
Paul Norman, tbd
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
Finish off cgimap-ruby and update OpenStreetMap-Website to use it
Skills Required
C++, PostgreSQL
Difficulty
Easy/medium
Possible Mentors
Paul Norman, tbd
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
Finish off cgimap-ruby and update OpenStreetMap-Website to use it
Skills Required
C++, PostgreSQL
Difficulty
Easy/Medium/Hard
Possible Mentors
Paul Norman, tbd
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.

3D

Web application for sharing 3D-Models to use in OSM-related 3D-Applications
Suggested By
Summary
3D rendering and modelling gets more and more attention in the OSM ecosystem. However, not everything can and should be modelled in OSM itself, when dedicated 3D modelling applications are a better choice. The student is tasked to write a web application that allows uploading and managing 3D models for buildings and street furniture but also for textures to use in OSM. Ideally the website also features comments, a JS based live view of the models and so on.
Skills Required
Web-Engineering
Difficulty
Medium
Possible Mentors
Notes
Applicants should note which language and technology they would use, they should also contact the possible mentors before they apply
Comments
There will be a more detailed description at the 3D Model Repository subpage soon

GPS improvement

DGPS@home
Suggested By
Summary
Improve your GPS signal by correcting it with information from a GPS fixed to your balcony and share information online. See [1] (German)
Skills Required
Web, Database, Mobile Phone/Android
Difficulty
Medium (maybe Hard concerning GPS receiver programming on Android)
Possible Mentors
Notes
Applicants should contact the possible mentors before they apply
Comments


JOSM

JOSM: New main menu
Suggested By
Summary
Structure the JOSM main menu and make it easier for plugins to add their entries in the right place. See [2].
Skills Required
Java
Difficulty
Medium
Possible Mentors
michael2402 (or someone else on the JOSM team)
Notes
Comments
If you include the time to adjust plugins, this will be enough for a GSoC.
JOSM: Change build system to gradle
Suggested By
Summary
Currently, JOSM and it's plugins are built using an ANT script. Dependency handling would be simplified a lot if we switch to gradle.
Skills Required
Java, Groovy, Gradle
Difficulty
Hard
Possible Mentors
Notes
Comments
Do not underestimate this. JOSM has a lot of special build steps that need to be re-written and tested. Fixing the dependencies and changing the plugins is not an easy task.
libosmscout: Implementation of a OpenGL ES renderer
Suggested By
Summary
libosmscout already has implemented renderer based libagg, cairo, DirectX, Qt. An OpenGL (ES) renderer is badly missing as a fast render engine targeting desktop and mobile devices
Skills Required
C++, OpenGL, OpenGL ES
Difficulty
Hard
Possible Mentors
Notes
Comments
libosmscout already offers all the code required to load tile data and get notified if loading of these data has been finished. It also offers Style sheets to get information about the (currently 2D) visualisation of the retrieved objects. What is missing is the actual OpenGL (ES) code to fill the render pipeline and render the resulting stage and code for simple interaction (moving, zooming).