Skip to content
Alexander Borsuk edited this page Mar 30, 2023 · 7 revisions

Google Summer of Code 2023 Ideas

Please find below the preliminary list of ideas we would like to explore during this season of Google Summer of Code 2023. 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.

Please check all documentation and try to fix some Good first issues to get the project feeling before applying to GSoC. We are looking for motivated developers who can get complex but interesting tasks done.

Proposals

  • We expect students to deeply understand the task and all related issues.
  • We're a small team working on Organic Maps in our free time. We expect that you can work and do your own research independently, and we are ready to provide help and feedback on any uncertainties or discovered issues.
  • Your proposal should have as much information about you, as possible. Please send us your CV, link to your LinkedIn, or other portfolios.
  • The proposal should show us that you understood the task correctly, and estimated/mentioned all related subtasks and issues.
  • Two out of three students did not finish their tasks last year. We favor those who can get things done.
  • Any contributions outside of the GSoC scope are welcome. We plan to grow and build the best maps in the world. And we rely on you, on our community to reach this goal.

Wikipedia Parser Revamp

Organic Maps can display Wikipedia articles for popular places offline, without an active Internet connection. This feature is especially useful for users who may not have access to the internet while they are traveling or exploring new areas.

The current “quick-and-dirty” implementation crawls Wikipedia webpages directly from the Wikipedia.org website. Crawling webpages can be slow and time-consuming, especially if a large amount of data is needed to be retrieved. Wikipedia's servers also often ban our crawling robot because it creates a strain on their servers.

This project aims to rework the Wikipedia implementation to download a dump of all Wiki articles for the given languages and extract summaries from the dump directly from Wikipedia dumps.

Estimation: medium, 175 hours

Required skills: Rust (preferred) / Python / JavaScript / GoLang

Mentors: @biodranik

References:

Consolidate and normalize Planet's elevation data

This task is a pre-requisite to the refactoring of the elevation data in Organic Maps that will allow moving forward with the 3D terrain model. Detailed elevation data is required to implement hillshades and better-quality isolines for hiking and cycling.

There are many sources of elevation data of different quality: SRTM (that is used now in OM), some countries have published their data, and there are also many points and tracks with precise elevation from GPS in OpenStreetMap.org and in other sources.

This project aims to consolidate and normalize the elevation data, to create a quality and detailed enough base for the next steps. The expected results are:

  • Appropriately chosen base/normalized format for the data with fast-read access
  • A number of scripts/tools/binaries to extract and normalize elevation data from different sources (see references below)
  • Appropriate documentation

Estimation: medium, 175 hours

Required skills: Large data processing

Mentors: @biodranik, @vng

References:

Satellite imagery support (1) - Prepare imagery data

There are many sources of satellite imagery data of different quality with different licenses. This task is about researching these sources, documenting them, creating necessary tools/toolchains to get/update the data, and normalizing/preparing the data to be served to our worldwide users.

Estimation: medium, 175 hours

Required skills: Large data processing

Mentors: @biodranik

References:

Satellite imagery support (2) - Render satellite imagery layer

This task is about downloading, caching, and rendering existing satellite imagery tiles in Organic Maps iOS/Android application. As a result, a user can optionally enable or disable the satellite imagery layer in Organic Maps while seeing other map objects on top of it.

Estimation: large, 350 hours

Required skills: C++, ideally also some OpenGL/Metal/Vulkan and networking experience

Mentors: @biodranik @vng

References:

The Track Recorder for Android

The ability to record tracks is one of the most asked features of 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

References:

GPX and GeoJSON 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 aims to add support for two other popular formats, GPX and GeoJSON. GPX is widely used by GPS trackers and track recording software on Android/iOS. GeoJSON has been widely adopted by modern tools and platforms, such as uMap, which is a popular online companion for Organic Maps.

The definition of done:

  • Users can import and export bookmarks and tracks in GPX and GeoJSON 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:

Geo Links Unshortener

Organic Maps can open location links from other applications and services, like Google and Apple Maps. However, the recent changes in third-party applications have affected the format, structure, and semantics of such short links. Almost all applications now create short links that require Internet access to remote services to “unshorten” them. Returned location information is often obfuscated, making it difficult for Organic Maps to open and use them.

The project aims to implement a web service that will “unshorten” location URIs from proprietary formats into a geo: the format that is supported by almost all apps. This web service should support popular map providers such as Google Maps, OpenStreetMap, Baidu Map, QQ Map, Nokia HERE, Yandex Maps, 2GIS, and others. This work should improve compatibility and interoperability between different mapping applications, making it easier for users to open and use short links in Organic Maps, and other mapping applications that support the geo: format.

The definition of done:

  • Organic Maps can open all actual formats of Google Maps, OpenStreetMap, Baidu Map, QQ Map, Nokia HERE, Yandex Maps, and 2GIS short links.

Estimation: medium, 175 hours

Required skills: JavaScript (NodeJS)

Mentors: @biodranik, @rtsisyk

References:

Android Auto Support (Phase 2)

Android Auto is a platform developed by Google that allows drivers to access apps, music, and other features of their Android smartphone on their car's dashboard screen. It integrates the smartphone into the car's entertainment system, allowing for a safe and convenient driving experience.

The initial research on Android Auto in Organic Maps was done as part of the GSoC 2022 program, followed by contributions from the community. This phase of the project aims to deliver a production-ready quality version of Android Auto support for Organic Maps.

The definition of done:

  • Android Auto feature is fully integrated and available to all users of Organic Maps for Android.

Estimate: hard, 350 hours

Required skills: Java (Android)

Mentors: @rtsisyk

References:

Previous work:

Waterways Navigation and Routing (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

References:

Convergent UI for (Mobile) Linux (and other desktop platforms) with Qt Quick or Kirigami

The current Qt Widgets-based UI used on Linux is clunky and doesn't suit mobile touch-based devices. This is a pity because there is a lack of good navigation apps for Mobile Linux platforms, and Organic Maps could fill the gap. Having proper UI, Organic Maps could suit well for Pine64, Librem5, and other Linux-based mobile devices, and their communities would benefit a lot.

Furthermore, the same interface can be in theory applied to other desktop platforms, including Windows, Linux, and Mac OS X.

The idea is to implement QML/Qt Quick or Kirigami-based UI for Linux, capable to work equally well for mobile touch-based devices and desktops.

The UI is going to be portable, so it could supersede UI implementations for other platforms in the future (at least on desktops). Ideally, the UI should resemble current UIs for Android or iOS platforms, as these are usable and look quite good. But also take into account our ideas (see existing issues) about improving it.

The definition of done:

  • the new QML/Qt Quick or Kirigami-based UI concept is used for Mobile Linux devices and merged to the upstream Organic Maps project
  • the UI should be opt-in and selectable at build time
  • the UI should NOT break the existing development UI that helps us to debug and test Organic Maps on desktops

Estimate: hard, 350 hours

Required skills: C++, QML, CMake, Qt

Mentors: @biodranik, @bam80

References:

Other Ideas

Please check GitHub Issues with "Enhancement" label.