Google Summer of Code/2013/Project Ideas

From OpenStreetMap Wiki
Jump to: navigation, search

Introduction

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:

  1. Development of existing OSM infrastructure (main web site, database, editors or rendering tool chain).
  2. Development of existing OSM related projects (routers, renderers, mobile apps etc.).
  3. 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
Example - JOSM Plugin to do xxxx
Suggested By
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 Required
Skills Required to succeed with the project
Difficulty
Possible Mentors
OSM User names or emails of Possible Mentors
Notes
Additional explanatory notes
Comments
brief comments

Project Ideas

Development of Existing OSM Infrastructure

Main Web Site / API Database

Allow Adding New Layers to osm.org
Suggested By
jremillard
Summary
Add support for adding new map layers to the osm main site by editing page on the wiki.
Skills Required
Code in Java script, ruby, ruby on rails.
Difficulty
Possible Mentors
Notes
Allow the community to define additional map layers that show up on the main osm web site. The idea is to make it conceptually the same as adding image layer to JOSM. Edit a wiki, and everybody that wants it can see. It will be tricky to get the design balanced between keeping the osm site simple while at the same time supporting many more layers.
Comments
Students should be aware that there would be significant political/design issues with this being deployed and consider whether it may be the best use of their time (note added by Richard (talk) 20:02, 17 April 2013 (UTC))
Visual Display Of Change Sets
Suggested By
jremillard
Summary
Created an animation that shows the contents of a change set on the osm.org setup.
Skills Required
Difficulty
Possible Mentors
Notes
Understanding a change set from the textual display on osm.org is very challenging. Make a rendering that animates the change set and display it on osm org in the change set page.
Comments

Editors

Rendering Toolchain

Development of an Existing OSM Related Project

Routers

Renderers

Improve Mapnik
Mapnik New visual test framework
Suggested By
springmeyer
Summary
The amount of styling options demanded by high performance and high quality cartography is bewildering. By having a visual test frame work it would allow the Mapnik to move forward faster - fixing bugs, adding features, and refactoring without needing to just hope that regressions don't appear. The faster bugs/regressions are found, the easier they are to fix. The easier tests are to create and update, the more tests there will be. Having a strong testing framework is important to the Mapnik project.
Skills Required
Difficulty
Possible Mentors
springmeyer
Notes
Things to look at for inspiration:
  • our existing tests. Note there are not just visual tests, but 'traditional' algorithm/code/performance unit tests as well.
  • what test frameworks exist for video encoders/decoders and image processing libraries? (think ffmpeg, videolan, imagemagick, OpenCV, PIL, node-blend, etc) Which do it really well?
  • what test frameworks exist for software with 1000s of combinations?
  • how can we optimise test creation/running/reporting/updates for developer efficiency?
  • how could we run it on distributed infrastructure via TravisCI/Jenkins/etc?
Comments
Student would learn: How a modern map rendering framework works. How test frameworks catering to 1000s of possible combinations of options/inputs/outputs can work (because you'll build one!). All about image and geodata formats and their structures and internals. How to optimise testing for developer happiness and developer speed.
Improve kothic-js
Improvements to kothic-js
Suggested By
Nick Whitelegg, nickw
Summary
kothic-js see here is a promising JavaScript technology for client-side data rendering, reducing the need for computationally expensive and demanding server side rendering technology and thus minimising both hardware and software requirements server-side. A kothic-js application works essentially by requesting GeoJSON from the server and parsing and rendering, using HTML5 canvas, the GeoJSON returned. It is typically used in conjunction with Leaflet. An example of a site using kothic-js is Freemap. Thus, the only server-side software requirements to run a kothic-based mapping site are a database of some kind (typically PostGIS) and server-side scripts to generate GeoJSON from that database.

There are a number of ways in which kothic-js could be improved. Performance could be improved and crucially, client-side caching of GeoJSON data, using technologies such as local storage or IndexedDB, could further improve performance. Addition of the ability to save the current map view as a PNG image would be useful too.

Furthermore, if the underlying map data was stored in a client-side database it would allow kothic-js maps to be fully interactive (e.g. you could click on a POI or a road to get its details, annotate it or even edit it).

Other ideas (from a student possibly interested) include: improving the performance so it works better in mobile devices, and improving the usability, such as rendering the text in a different layer, so you can adjust the position of the labels and which labels are visible (hide labels that are partially outside of the viewport, adjust the position of a label in a street to the currently visible part of the street) without needing to discard cached tiles of the map.
Skills Required
JavaScript
Difficulty
Possible Mentors
Notes
Comments

Mobile Applications

Support for working with relations on Vespucci

Especially route relations for walking, cycling and public transport and possible also associatedStreet relations.

Last year Jan Schejbal's GSoC contributions made Vespucci's usability leap forward

Polyglot (talk) 05:31, 12 February 2013 (UTC)

Improvement of OpenTripPlanner android client.
Suggested By
vreixo
Summary
Fix bugs that make app totally unusable in some cases and add features. Real-time information, trip updates, accessibility information (wheelchair), favorite routes, explore stops and lines, etc. Now UI it’s really basic, and doesn’t use all of the backend capabilities.
Skills Required
Android/Java development skills
Difficulty
Possible Mentors
Notes
Part of the project will be to deploy an OpenTripPlanner server on A Coruña (Galicia, Spain), adding necessary OSM data to make it work properly. For example as part of the process of deployment, complete information of transit feed (bus and train lines) and OSM data will be merged and will be contributed to OSM.
Comments
http://wiki.openstreetmap.org/wiki/OpenTripPlanner

https://github.com/CUTR-at-USF/OpenTripPlanner-for-Android/wiki Deployed server will use OSM for provide needed information for routing besides transit feed.

Android client uses tiles from OSM for visualization.

Data processing

Add lua support to osm2pgsql
Suggested By
Summary
Give osm2pgsql support for transforming tags via lua plugins
Skills Required
C and C++; some light familiarity with the OSM datamodel and with lua. (See [1] for background info.)
Difficulty
Possible Mentors
(osm2pgsql contributors?); Richard (talk) can advise on desired functionality though not on the code.
Notes
The complexity/inconsistency of the OSM tagging system makes it exceptionally difficult to write map rendering rules that properly address the richness of the community's data. For example, path rendering can involve many combinations of the highway=, access=, bicycle/foot/horse/etc.=, designation, and surface= tags. Processing all these combinations in the renderer's stylesheet is inefficient of both CPU and developer time. OSRM, the leading router, has demonstrated that lua 'plugin' code is a sensible and fast way of remapping tags on import. The same capability should be added to osm2pgsql, which is part of most rendering toolchains.
Comments
OSM to OSM matching
Suggested By
jremillard
Summary
Write a library that given two osm files, and a feature type (start with roads), generate matches based on position, shape, orientation, length, name, etc.
Skills Required
Completion of a semester of linear algebra. Interest in Machine Learning Algorithms.
Difficulty
Possible Mentors
jremillard
Notes
This library will form the foundation for synchronizing OSM data to external data sources. In the US, updating the tiger import. The library will require transforming the OSM geo data to an graph, coding a set of feature vectors, figuring out how to weigh them with a machine learning algorithm, and then driving a bipartite graph matching algorithm.
Comments

Editing Coordination

Make the HOT Tasking Manager More Social
Suggested By
wonderchook
Summary
The HOT Tasking manager allows coordination of editing efforts. Currently it does not have very good ways for contributors to coordinate areas they are working or ask questions. This project would allow a discussion interface and other ways that those mapping with a task can better help each other.
Skills Required
Python and JavaScript
Difficulty
Possible Mentors
wonderchook/pgiraud
Notes
Comments
HOT Tasking Manager User Interface and back-end redesign
Suggested By
pgiraud
Summary
The HOT Tasking Manager allows coordination of editing efforts. It has evolved a lot since its creation. A lot of feedback is available. This its user interface needs to be improved. It also needs code redesign to support several feature requests such as translations, messaging, workflow changes etc...
Skills Required
Javascript, Python (or any other server-side programming language), Interaction design
Difficulty
Possible Mentors
wonderchook/pgiraud
Notes
Comments

Creation of a new OSM Related Project

sentiment analysis of an area
Suggested By
pdutt111@gmail.com
Summary
sentiment analysis of diaries from an area and to decide the sentiment of that area out of 10
Skills Required
javascript
Difficulty
Possible Mentors
Notes
we can do sentiment analysis of diaries of people in any given radius and find out the mood ranging from sad to happy on a scale of 10 of that area and have a overlay depicting the mood we can also research most popular things going on in an area.
Comments
this is a great new feature that i would want to see in any map. this would take the maps to a whole new level.
JOSM Plugin to show review/apply/edit change sets
Suggested By
jremillard
Summary
Write a JOSM plugin that will load up a change set file, download data from OSM database, make a list of differences. It should allow the user to visually view the changes in JOSM and step through each change to apply it, skip it, or manually repair.
Skills Required
Java Programming
Difficulty
Possible Mentors
Notes
The JOSM conflation plugin does some of this but it would be useful to have this functionality attached to a change set.
Comments

GPS

GPS to OSM Conversion
Suggested By
jremillard
Summary
Process OSM GPS Data emit an OSM file with average track.
Skills Required
Completion of a semester of linear algebra. Interest in Clustering Machine Learning Algorithms.
Difficulty
Possible Mentors
jremillard
Notes
Use OSM GPS data to extract “average” highway and position uncertainty. This code could be used in QA tools and/or to make a GPS map layer for JOSM.
Comments



Geography worksheet based on OSM

Geography worksheet based on OSM
Suggested By
Summary
A new way to explore and learn OSM data would be the (automated) usage for geographic worksheets. Based on OSM data a worksheet is generated that can be used either for printouts or even as an online questionnaire.
Skills Required
HTML, Javascript, vector graphics (e.g. SVG, RafaelJS, ...),
Difficulty
Possible Mentors
?
Notes
A use case would be to select a country and then the geographic features to be shown as blanks that can be filled out on the map. E.g. all states in Germany. Or an enhanced version with "Name-that-country-and-capital". An example image can be found at [2].
Comments
The work could range from developing a black and white style for educational purposes to a fully-fledged online questionnaire.

Use Mozilla OpenBadges for verifying OSM achievments

Use Mozilla OpenBadges for verifying OSM achievements
Suggested By
Summary
Use the ideas that are provided on the Badges page and implement a solution with Mozilla OpenBadges. This allows people who have done work on OSM to be shown to the outside and to be rewarded with an open badge approach.
Skills Required
?
Difficulty
Possible Mentors
?
Notes
Comments

Cleanup-related tools

Revert tools
Suggested By
Summary
Write a tool for reverting changesets that is faster and easier to use than the Revert scripts
Skills Required
Knowledge of some language with an XML library (likely Python or Perl)
Difficulty
Possible Mentors
Notes
The Revert scripts run extremely slowly and deal badly with conflicts. A more advanced solution would be welcome, with options which can be set from the command line. As an example, if foo=bar is added to an existing object in changeset 1 and baz=1 is added in changeset 2 then changeset 1 is reverted with the existing tools, they will either error or remove baz=1. The logic The scripts also do a single-threaded object by object upload which is extremely slow.
Comments
If Pnorman (talk) is mentoring, Python is preferred.

This project will require developing a good knowledge of the changeset upload model and upload API.

Reverts will always require some knowledge of changesets and the API, this tool will not eliminate that need but require less manual intervention than the current tools and be faster.

Note that the core of [3] might be of interest or use, as it implements an algorithm for handling tags (and way-nodes and relation-members) and retaining as much data as possible while removing some specific changes. Which seems to be relevant to this project. --Matt (talk) 16:57, 25 February 2014 (UTC)

Surveying application

Surveying application for Android
Suggested By
Summary
An application to gather notes for OSM mapping. It sould include some kind of walking papers, including photo and audio recording, road surveying (advanced amalgam of NanoLog and surveyor JOSM plugin) and, obviously, track recording even in background. It should be able to upload surveying result to a server in a specific format (TBD).
Skills Required
Android programming and design experience, and willingness to contribute to OSM by going out and gathering data by hand.
Difficulty
Possible Mentors
Notes
This is a project to build a foundation for the ultimate mobile surveying tool. The applicant should be ready to test it themselves, collecting data for OSM in their local area. Ilya Zverev is to write a JOSM plugin for using the surveyed data.
Comments