Skip to content
Alexander Borsuk edited this page Apr 12, 2022 · 7 revisions

Google Summer of Code 2022 Ideas

Please find below the preliminary list of ideas we would like to explore during this season of Google Summer of Code. The list is not comprehensive. Please feel free to suggest any new ideas and features. GitHub issues with "Enhancement" label can be used for inspiration. Please join the community to ask questions and discuss ideas.

You can apply to the program here.

Android Auto support

Android Auto is a system that integrates an Android device into a car entertainment system. The project is about adding Android Auto support for the Organic Maps app. At the moment, only CarPlay for iOS is supported.

The definition of done:

  • Users can use Organic Maps in Android Auto mode in a car for navigation.

Estimate: hard, 350 hours

Required skills: Java (Android)

Mentors: @rtsisyk, @biodranik

References:

The Track Recorder for Android

The ability to record tracks is one of the most asked features from our community. Previous versions of the app had a background track recorder activated in the Settings menu. This recorder has stopped working on Android 8+ due to new background restrictions introduced in the system. This project is about creating a new, full-featured track recorder that can work in the background and save recorded tracks to Bookmarks.

The definition of done:

  • A user can start and stop the recording of his movements.
  • A track is recorded in the background even when a device is locked.
  • A user can see that the track is recorded, and can always pause/resume/stop it.
  • The battery is not drained quickly, so users can finish their journey.
  • A recorded track is displayed on the map and added to the bookmarks.

Estimate: medium, 175 hours

Required skills: a bit of C++ for the core part, Java (Android) and Swift/Objective C (iOS) for the UI part

Mentors: @rtsisyk, @biodranik

References:

GPX Format Support

Organic Maps already has good interoperability with KML/KMZ formats. Users can export their bookmarks to use in other applications. Bookmarks and tracks created by other applications, such as Google Maps, can be imported into Organic Maps as well. This project is about adding support for another popular format, GPX. GPX is widely used by GPS trackers and the track recording software on Android/iOS.

The definition of done:

  • Users can import and export bookmarks and tracks in GPX format
  • Imported bookmarks and tracks are properly displayed on the map and in the Bookmarks dialog

Estimation: medium, 175 hours

Required skills: C++

Mentors: @vng, @biodranik

References:

Alternative Routes

Organic Maps has turn-by-turn walking, cycling, and car navigation with voice guidance. The primary limitation is that only one route variant is provided by the planner. This project is about adding support for alternate routes.

The definition of done:

  • A user can choose from up to 5 alternative routes during planning the trip by selecting them on the map.
  • Each route uses different criteria: the fastest one, the shortest one, with fewer (left) turns, etc.

Estimate: hard, 350 hours

Required skills: C++

Mentors: @vng, @biodranik

References:

Public Transport Support

Currently, the app only supports subways in major cities. You can finish implementing the experimental feature of GTFS public transport and use it inside the Organic Maps app. It includes all transit types defined by GTFS specification: bus, train, ferry, aerial lifts of different kinds, trolleybus, and much more. This project is about getting a general-available version of the app with the support of all GTFS public transport types.

The definition of done:

  • New kinds of public transport (bus, train, ferry, aerial lifts, etc.) are available at least in one city or region.
  • The public database for that city is constantly updated in an automated manner by using a script.
  • The same approach/architecture can be scaled and used for any other worldwide region or city.

Estimate: hard, 350 hours

Required skills: Python, C++, GTFS

Mentors: @vng, @biodranik

References:

3D terrain and hillshades support in the core

Currently, isolines are stored as linear features. It limits their usage and takes a lot of disk space. A function to get an altitude at any point should be implemented, then it would be possible to draw a beautiful 3D terrain with hillshades, generate dynamic isolines when necessary, and generate an elevation profile for any route in the World.

One of the possible implementations is to store a surface triangulation in mwm map files in a compact format. It can be created from SRTM and other open elevation data (we already have it downloaded).

The definition of done:

  • Existing SRTM and ASTER elevation data should be updated and merged with elevation from OpenStreetMap
  • Elevation data is stored in a compact format, compared in size or less than the current isolines data.
  • The new format is embedded inside mwm files instead of the isolines section
  • It is possible to instantly get an altitude at almost any lat,lon in the World
  • Ideally, an updated dynamic isolines generation/displaying is also implemented
  • Ideally, a hillshades algorithm is also implemented

Estimate: hard, 350 hours

Required skills: C++

Mentors: @vng, @biodranik

References:

Support for navigation and routing along waterways (rivers, lakes, seas)

According to publicly available information, there are more than 2 million kilometers of waterways. Seas, rivers, and lakes are used by kayakers, fishermen, and locals. Before a trip, especially a multi-day trip, it is important to plan a route, taking into account stops for rest and meals, overnight stays, refilling drinking water, refueling a motorboat, etc.

We suggest adding the ability to build routes and navigate waterways to the app. There is already a routing engine implemented in Organic Maps. It should be extended or carefully rewritten to support navigation over waterways.

The definition of done:

  • It is possible to build a route on the water by setting start, end, and optional intermediate points
  • It is possible to navigate on the water and see the current position and the remaining time/distance

Note: A production-ready UI requires Android and/or iOS development skills. It is possible to implement only the core features in C++ and leave all app/UI integration for other contributors.

Estimate: hard, 350 hours

Required skills: C++

Optional skills: Android, iOS

Mentors: @vng, @biodranik

References:

Other Ideas

Please check GitHub Issues with "Enhancement" label.