Google Summer of Code/2014/Project Ideas
This page lists a number of ideas for potential Google Summer of Code 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), Things To Do (another list which is out of date) and the bug tracker & other 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 programme. 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.
Types of Projects
We have historically struggled to come up with suitably challenging yet achievable project ideas based on the core OSM infrastructure in the past, so the projects that have been selected have tended to be smaller projects based on using OSM data. There has also been a tendency for applicants to propose to start new projects rather than build on previous work.
For this year's Google Summer of Code, it is proposed that we adopt the following order of preference for projects:
- Development of existing OSM infrastructure (main web site, database, editors or rendering tool chain).
- Development of existing OSM related projects (routers, renderers, mobile apps etc.).
- Creation of new OSM related projects (provided the proposed application is new / novel).
It is highly unlikely that we will accept a project to create a new application where a similar one already exists (e.g. android based navigation tool - we would much prefer to see a proposal to develop an existing tool and add new features / user interface style etc.).
Format of Project Ideas
Each project idea should copy and edit the following template:
You type | {{GSoC idea |title=Example - JOSM Plugin to do xxxx |suggestor=OSM User name or email of person making suggestion (so we can contact them if necessary) |summary=Summary of Project Idea (a few sentences) |skills=Skills Required to succeed with the project |mentors=OSM User names or emails of Possible Mentors |notes=Additional explanatory notes |comments=brief comments }} | |
---|---|---|
You get |
|
Project Ideas
Development of Existing OSM Infrastructure
Main Web Site / API Database
Suggested By
Frederik Ramm
Summary
Currently, users upload their changes but any discussion about changesets happens in separate media - either in Forums, in email, via direct messaging, or via someone complaining to the Data Working Group about changesets. This is undesirable; it would be better if it was possible to discuss changesets in-place, by adding messages to it - like a discussion thread originating in a changeset. Also, it would be great if changesets could be rated like answers on help.openstreetmap.org are, and/or if changesets could be flagged ("I believe this is an edit war/an un-discussed mass change/vandalism") for inspection by others.
Skills
OSM editing experience, Rails, and Javascript skills required.
Possible Mentors
Frederik willing to mentor but would need support from someone with more OSM API experience.
Notes
Optionally, further cool things can be built on top of rating/flagging, like total user scores, badges, or live feeds of potentially harmful (flagged) changesets. Also see this lightning talk (from 5:45)
Comments
I believe Serge is already working on this?
|
Editors
Suggested By
Summary
The JOSM plugin public transport is out of sync with the public transport scheme from the wiki.
The JOSM plugin public transport aims to make editing of public transport routes much easier. This GSoC project should
In particular, the plugin should no longer break well-tagged existing structures.
This should also improve stability such that no more crashes happen.
Although bus lines follow most of the time the most direct way, the mapper has still to collect all these segments by hand. This is a really tedious job. A routing engine could suggest a route after the user has clicked starting and ending point. A sufficiently fast textbook implementation of an A* algorithm is present, it needs to be configured to the types of roads suitable for buses. And the big challenge is a proper integration with the way split feature of JOSM.Skills
Java knowledge. Deep understanding of the OSM data model or being curious to learn about. Knowledge of JOSM would help.
Possible Mentors
drolbr
Notes
|
Rendering Toolchain
Suggested By
Kai Krueger
Summary
Currently, the maps on OpenStreetMap.org are static pictures. It would be nice if they were more interactive. I.e. one can click on objects on the map and get additional information about them or interact with them in other ways. One possible way to achieve this is UTFGrid (https://www.mapbox.com/developers/utfgrid/) This defines an object identity for each pixel of a rendered map tile, making it easy to determin the object a user is hovering over and or clicking on. Mapnik (http://mapnik.org/), the underlying rendering library used on OpenStreetMap.org and many other OSM based map site, already supports UTFGrid. However, it is not yet easily exported with the standard tile server toolchain (mod_tile / renderd, https://github.com/openstreetmap/mod_tile). In this project, the student would therefore extend mod_tile/renderd to emit and serve UTFGrid tiles in addition to the normal bitmap tiles. Given most of the components are already available in the various libraries and framework, the base requirement is likely not overly time consuming. So the proposal should also include optional components to integrate the UTFGrid capabilities into the client UI of OpenStreetMap.org to allow for e.g. clickable POIs
Skills
Possible Mentors
Kai Krueger
Notes
|
Development of an Existing OSM Related Project
Routers
Suggested By
Peter aka karussell
Summary
The GraphHopper routing engine already runs on several operating systems including Android. To increase adoption on this platform there are several places to improve GraphHopper.
Skills
Java and Android knowledge. Interests in (routing) algorithms like Dijkstra.
Possible Mentors
karussell
Notes
|
Renderers
Suggested By
Summary
The 3D renderer OSM2World can generate realistic 3D sceneries and export them to static images and files for modelling software. It is, however, not yet able to produce movies and real-time animations, e.g. simulating car driving or a low flight through a city. The student is tasked with the extension of OSM2World's GUI with the functionality to record camera movement, a file format to store it, and the ability to playback the movement either in the GUI itself or by exporting it via POV-Ray or OpenGL to a video file.
Skills
Java, optionally POV-Ray experience
Possible Mentors
Notes
Depending on the student's skills the task can be extended to more complex movements, smooth movements and converters to import GPX files and the like.
|
Mobile Applications
Suggested By
Framstag
Summary
Libosmscout is a C++ library for routing and offline map rendering (see http://libosmscout.sf.net) for mobile devices. While routing and rendering already works, there a number of things that could be improved: See below list of possible tasks. Contact me or the project mailinglist for details.
Skills
C++
Possible Mentors
Notes
|
Data processing
Suggested By
cleanerx
Summary
The openseamap subproject renders seamarks that guide marine navigation worldwide. Seamarks are frequently updated when their position or colouring changes due to navigational needs. The updates are published by the many hydrogaphic organisations worldwide and have various formats. We need to have an update process in place which reads in these documents and update seamarks accordingly. This is particular tricky as not all seamarks have a unique id and some published information does not give sufficient accuracy for the published position. Furthermore some documents are published in PDF which make it hard to analyze the contained information automatically as text must be extracted heuristically. The processing must be designed in a modular fashion so different data sources may be supported.
Skills
Java Programming skills, willingness to get in contact with osm and seamark data structures
Possible Mentors
cleanerx
Notes
The NOAA Notices to Marineers would be a good first source of Seamark data
Comments
Before doing this openseamap should stop being subproject and make tagging sane (at least cases of clear absurd like using harbour:toilets tag) Bulwersator (talk) 16:16, 15 February 2014 (UTC)
|
Suggested By
cleanerx
Summary
The openseamap subproject preprocesses data recorded by ships in order to generate depth contour lines in shallow water regions. This data includes position, time, depth, wind, speed and accelerator measurements. Furthermore it contains systematical errors such as tide or sensor errors and non systematical errors such as signal noise. A widely used filter for the purpose of online error reduction and estimation is the Kalman Filter and its variations such as the Unscented Kalman Filter. The ultimate goal is to have an error corrected track with depth values that minimizes the error and gives estimates about the error bounds. Particular challenges arise as the sensors deliver data at different update rates that the standard filter cannot cope with. Furthermore the underlying physical equations are highly nonlinear. As the data is available after recording it is advisable to use a Kalman smoother instead of the Kalman Filter that does a two step filtering and improves the overall result. As ships carry various sensor setups several filters may be designed to cover the full range of setups.
Skills
Java Programming skills, basics in system theory advisable but not required, basic statics knowledge
Possible Mentors
cleanerx
Notes
|
Suggested By
cleanerx
Summary
The openseamap subproject processes data recorded by ships in order to generate depth contour lines in shallow water regions. This data includes position, time, depth, wind, speed and accelerator measurements. After data correction numerous depth points exists where each data point has a time, position and a depth value with an associated error bound. The goal is to interpolate a digital elevation model from these datapoints OR to generate contour lines directly from the given data points. Various interpolation methods <a href="http://en.wikipedia.org/wiki/Multivariate_interpolation">exist</a> but due to the massive amounts of points to expect two approaches seem favorable. The first approach is to generate a delauney triangulation and the second one is to use bicubic interpolation.
The first method can not cope with multiple points at the same exact position which is why a precleaning must occur. For each single position there needs to be a calculation that accounts for the time the recording has been done, the variance in the exact position and the measured depth. As tidal regions tend to change depth frequently older measured values must have a very reduced weight in the calculation. Once the data has been cleaned it may be triangulated and contour lines may be calculated from this. The second approach is likely to give a more appealing contour line but may not be feasible due to the massive amount of data points that are non uniformly distributed.Skills
Java Programming skills, basics in algorithm techniques
Possible Mentors
cleanerx
Notes
|