GSoC/2021/Ideas
See also: GSoC Instructions, Last year ideas
Guidelines
Information for Students
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at.
Becoming accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors rarely works.
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!
If there is no specific contact given you can ask questions on the general KDE development list [email protected]. See the KDE mailing lists page for information on available mailing lists and how to subscribe.
Adding a Proposal
Project:
If appropriate, screenshot or another image
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
When adding an idea to this section, please try to include the following data:
- if the application is not widely known, a description of what it does and where its code lives
- a brief explanation
- the expected results
- pre-requisites for working on your project
- if applicable, links to more information or discussions
- mailing list or IRC channel for your application/library/module
- your name and email address for contact (if you're willing to be a mentor)
- Ideas with no mentors listed and their contact info will be removed **
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.
Ideas
Your Own Idea
Project: Something that you're totally excited about
Brief explanation: Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.
Expected results: Something you and KDE loves
Knowledge Prerequisite: Probably C++ and Qt but depends on your project
Mentor: Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.
digiKam
digiKam is an advanced open-source digital photo management application that runs on Linux, Windows, and MacOS. The application provides a comprehensive set of tools for importing, managing, editing, and sharing photos and raw files.
- digiKam project web site
- Mailinglist
- LinkedIn Group
- #digikam IRC channel on Freenode
- #dk-gsoc20-facesengine channel on Riot kde webchat
Project: Port to Qt6 API
Brief Explanation: current digiKam 7.x implementation if fully compatible with Qt5.13.x under macOS, Windows, and Linux, but we need to port implementations to new Qt6, where API has changed, become deprecated, or have been improved. This require non trivial changes in digiKam with plenty of regression tests to do. Identified changes to include in this project are:
- Migrate libo2 dependency to the new QtNetworkAuth framework for WebService plugins.
- Port internal DImg framework to use new QImage 16 bits colors depth format.
- Fix deprecated QXmlPatterns API uses.
- Port AppImage builder to Qt6 with suitable ICU support.
- Fix all Qt 5 Core Compatibility C++ Classes Uses (https://doc-snapshots.qt.io/qt6-dev/qtcore5compat-module.html)
Expected Results:
Port to new API, replace deprecated, and make digiKam ready for Qt6. Write unit-tests, and documentation.
Knowledge Prerequisite:
- C++, Qt, Oauth2, Cmake
Mentors: Maik Qualmann ([email protected]) and Gilles Caulier ([email protected])
Kirogi
A Ground Control Station (GSC) application for drones with a modern mindset and codebase philosophy, the project is one of the newest one under KDE organization and we would like your help to make it the best open source GCS around!
We are also open for new ideas, be free to send your own plan for Kirogi.
For more information, take a look in our website: https://kirogi.org/
Be in touch with:
- IRC (freenode): #kde-kirogi
- Telegram: @kde_kirogi
- Matrix: #kde-kirogi:kde.org
Okular
Okular is a universal document viewer developed by KDE. Okular works on multiple platforms, including but not limited to Linux, Windows, Mac OS X, *BSD. Contact the Okular developers.
Project: Improve custom stamp annotation handling
Brief explanation: Okular does display stamp annotations, but the support is somewhat incomplete. This particularly shows when trying to use stamp annotations with a custom image. For example, such annotations can be added in Okular, but they cannot be saved to the pdf file in a way that any other pdf viewer can read. Also, they will not appear on print-outs.
The underlying reason for this is that Okular renders these stamps itself, rather than relying on the poppler library, which does all other pdf rendering. Goal of this project is therefore to teach poppler how to render stamp annotations, and then make Okular use that new functionality. More details can be found in the bug report [0].
[0] https://bugs.kde.org/show_bug.cgi?id=383651
Expected results: Poppler should render stamp annotations. Annotations should be printable from Okular. Custom stamps inserted via the Okular GUI should be visible in other pdf readers.
Knowledge prerequisite: C++, and a bit about the pdf format.
Mentor: Albert Astals Cid [email protected]
KMyMoney
KMyMoney is a cross-platform personal finance manager build on KDE frameworks technologies for your desktop and notebook environment. It enables users to keep careful track of their personal finances by providing a broad array of financial features and tools.
Project: Integration of the new functionalities from the Alkimia library
-
Extended online quote support in KMyMoney 4.8
-
Dialog for adding/updating online quote sources
Brief explanation: With Alkimia version 8.0 the online quote support of KMyMoney was taken over, equipped with debug functions and extended by an online update of the quote sources.
The task is to add this support to version 5 of KMyMoney, either as a replacement for existing functionality in KMyMoney (as was done with version 4.8) or as an optional KMyMoney plugin.
In the former case, the WebPriceQuote class would need to be replaced with the associated AlkOnlineQuotesWidget class from the Alkimia library (see the associated Git commit for the 4.8 branch).
For the second variant, the WebPriceQuote class would have to be converted to a KMyMoney plugin to make it optional. Based on this, another plugin can be added that uses the corresponding classes from Alkimia and can be used alternatively (From 381517).
Expected results: KMyMoney 5 will have the extended support of online quotes
Knowledge Prerequisite: C++, Qt, KDE programming
Level: intermediate level
Mentor: contact kde-finance-apps mailing list
KtoBlzCheck
KtoBLZCheck is a library for checking account numbers and bank codes of banks from different countries like Germany, Holland and Switzerland. The basic data used by the library is also used by other financial management applications such as KMyMoney, AqBanking and GnuCash.
Project: Extend the usage of bank data support in KMyMoney
Brief explanation:
KMyMoney provides dialogs to create and edit institutions and accounts, the latter having a link to an institution. This project is about extending these dialogs with the databases and functionalities provided by ktoblzcheck to simplify the input.
Expected results:
1. When adding new institutions, it should be possible to search for a bank in the corresponding dialog and take over existing bank data such as city and BIC for simplified setup.
2. After entering an account number in the "Institution" tab of the account processing dialog, the IBAN should be calculated automatically if an institution has been selected before.
3. The extension or adaptation of the application documentation with the new functionality is part of this project.
Knowledge Prerequisite: C++, Qt, KDE programming
Level: intermediate level
Mentor: contact kde-finance-apps mailing list
KStars
KStars is free, open source, cross-platform Astronomy Software. It provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time.
Project: Deep Sky Object Overhaul
Brief explanation: KStars supports many deep sky objects (DSOs) including galaxies, nebulae, supernovae, clusters and more. Currently, some deep sky catalogs are stored in simple space separated text format where they are parsed into KStars directly or into KStars Deep Sky Component SQLite3 database which is then loaded in KStars. However, since all DSOs are loaded at once into memory, this limits the size of catalogs within KStars. A solution similar to how dynamic stars are cached in and out of memory must be developed for DSOs. Furthermore, all catalog entries should have their trixels indexed so that they can be efficiently drawn unto the sky map. Another issue is that catalogs can overlap since there is no cross-identification of various catalogs. For example, Andromeda galaxy exists in Messier catalog as M31, and exists in NGC catalog as NGC 224. The database should support an ability to cross-identify objects from all supported and future catalogs.
Expected results:
- Convert all text-format catalogs to SQLite3 database.
- Develop master DSO database where cross-identification of objects is supported. Master database can support addon downloadable catalogs where they can be merged once downloaded by the user.
- Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.
- Caching and drawing optimizations for large catalogs.
- Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN
- Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.
- All necessary updates within KStars maps, tools and dialogs to reflect the above changes.
Knowledge Prerequisite: C++, Qt, Data Structures
Mentor: Jasem Mutlaq (KDE Web Chat: Jasem)
Project: Observation Wizard Improvements
Brief explanation: The Observation Wizard enables users to select and filter objects of interest to them . Currently, the selection is done by object type, location, and magnitude in the sky. Further, the user can filter objects based on altitude and time-range when they are available. This tool can be further improved by providing the following features:
- INDI Integration: Filter and sort by object size for Deep Sky Objects that have a physical width and height, unlike point-like sources like stars. Limit objects to fall within a particular percentage of the sensor. For example, M31 galaxy is very large and spans almost 3 degrees in the night sky. It would not fit inside the camera's 1x1 degree field of view (as calculated from INDI). Similarly, an object spanning on 5'x5' arcmins is too small in the camera.
- Image Integration: The way the final list of objects are displayed should be modernized. Each object should have an image and also an Altitude-vs-Time plot next to it so that the user can quick identify what is the best time to observe this object. For large lists, this can be very CPU intensive and should be optimized accordingly.
- Save/Load: Ability to save and load the wizard search parameters for future use so that the user does not always have to start from scratch every time they need to search for objects.
- Export: Export the list of object to an external file or source in CSV and JSON formats.
Expected results:
- Improved Observation Wizard Tool.
- Proper integration with INDI & Ekos.
Knowledge Prerequisite: C++, Qt, Data Structures
Mentor: Jasem Mutlaq (KDE Web Chat: Jasem)
Project: FITSViewer & Photometry Improvements
Brief explanation: The FITSViewer is used to display FITS images as captured by cameras or opened by the user. It supports 8, 16, 32, and 64bit formats with either a single channel (Mono or Bayer) or RGB cube. The goal for this project is to provide efficient and intuitive controls for:
- Noise Calculation: Calculate the overall Signal-to-Noise (SNR) radio for the overall image, or a specific subframe of the image.
- Sky Glow Computation: Estimation of Sky Glow component in image of various exposures. Each captured image is affected by multiple sources of noise, only of which is the sky glow which in turn is affected by the atmosphere, pollution, and artificial sources (e.g. light). The objective is to propose to the user the optimum exposure time given the sky glow contribution to the image.
- Mask Overlay: Ability to select custom mask over stars to aid in focusing and photometry.
- Photometry: KStars includes SEP which can be used to extract sources from stellar images and also performs aperture photometry. A new tool should be developed to aid the users to perform photometric work with the images including reduction of images (darks & flats) with various optimization/algorithmic settings. Additionally, the tool provides means for aperture photometry calculations as well.
Since FITSViews typically deals with very high-resolution images, such calculations can be very computationally expensive. It is expected that a very efficient multi-threaded code to be developed to take advantage of all the available cores on the system and any hardware or instruction set optimizations to achieve the smoothest user experience. Expected results:
- Improved Histogram Tool.
- SNR, Sky Glow, and Photometry calculations.
- Photometric reductions. Aperture photometry.
Knowledge Prerequisite: C++, Qt, Threading, Data Structures
Mentor: Jasem Mutlaq (KDE Web Chat: Jasem)
Project: Implement Qt3D backend for KStars
Brief explanation: The Skymap in KStars desktop version is currently built using QPainter and 2D drawing primitives. In order to take advantage of advances in modern GPU hardware and to present a stunning visual view of the night sky, a 3D backend is desired. Qt 3D provides functionality for near-realtime simulation systems with support for 2D and 3D rendering in both Qt C++ and Qt Quick applications. Within KStars, SkyPainter provides a backend-agnostic class for drawing object unto the skymap regardless of the backend. Previously, an experimental OpenGL backend was developed but was later deprecated due to drawing issues. Since Qt3D provides an abstraction to the backend framework (OpenGL/Vulkan/DirectX), it presents a very flexible framework for building future-proof 3D applications.
Expected results:
- Create Qt3D based backend to draw all objects currently implemented by QPainter backend.
- Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.
- Create animations for meteor shows, comet tails, stars twinkle..etc
Knowledge Prerequisite: C++, Qt, Prior experience working with 3D applications/games.
Mentor: Jasem Mutlaq (KDE Web Chat: Jasem)
Project: KStars Testing
Brief explanation: KStars is built on a relatively large number of C++ classes, grouped in the following categories: sky objects and components, projection algorithms, graphics, timekeeping, widgets, Ekos automation, INDI client, FITS viewing, accessories and several library interfaces. Most of these constituting classes remain untested in terms of systematic and automatic verification. The objective of this project is to verify the code written in those classes at three levels: API, functionality and UI-based use case. In order to achieve this, the existing test code will have to extend its code coverage, report validation results and integrate seamlessly to the build recipe of the project.
The difficulty of this project is the requirement to create tests on legacy code and consolidate a test plan that reflects how the software is working instead of how we expect it to work.
Expected results:
- Verify APIs: call each public class member using arbitrary test fixtures, control side effects by stubbing interfaces. This verifies code is executing in the data domain we expect, or fails for known reasons. As an example, the report will reveal how classes managing coordinates accept or reject numerical input.
- Verify functionalities: ensure specific class interfaces return an expected result given a controlled set of input parameters. This verifies code is behaving as expected, or isolates known issues. As an example, the report will reveal which value of the Julian time classes managing timekeeping produce given different input objects embedding the same UTC time.
- Verify use cases: ensure specific scenarios can be executed in the interface as presented in their documentation. This verifies procedures achieving useful results for the end-user remain stable, and controls how they evolve and improve during development.
- Consolidate test reports and code coverage, and automate the execution of the test plan when building.
Bonus: generate videos of use cases for end-users automatically.
Level: beginner to intermediate
Knowledge prerequisites: C++, Qt, software testing and verification fundamentals
Mentor: Jasem Mutlaq (KDE Web Chat: Jasem)
Akonadi
The Akonadi framework is responsible for providing applications with a centralized database to store, index and retrieve the user's personal information. This includes the user's emails, contacts, calendars, events, journals, alarms, notes, etc.
Communication: IRC (freenode) #akonadi
GCompris
Project: Adding new activities to GCompris
GCompris is a high quality educational software suite, including a large number of activities for children aged 2 to 10. We have recently launched our version 1.0 with multiple datasets feature. Moving forward we are looking to add more new activities to GCompris.
Brief explanation: Originally written in Gtk+ the development team started to rewrite it from scratch in Qt Quick and almost finished the port. Also, we have recently work on the multiple datasets feature.
Expected results: This year we aim to add some new activities to GCompris. The activities can be port of the GTK+ version or you can propose new activities too. For example, we lack activities in the science domain(chemistry, biology) which can be proposed. We have recently added multiple datasets to many activities so for all other activities having multiple datasets would be nice.
You can have a look at our GCompris board to get some ideas about port of activities and multiple datasets too.
https://phabricator.kde.org/project/view/142/
https://phabricator.kde.org/T12428
Knowledge Prerequisite:
Be interested in children’s education.
Be familiar with GCompris concept and content.
Basic knowledge in a programming language (a 1 year school course is enough).
Basic knowledge of QML, JavaScript would be a plus.
Be able to build the Qt Quick version of GCompris.
Application guide: Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.
Feel free to contact us either on irc or by mail ([email protected])
Mentors: Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim), Deepak Kumar (IRC: deepak_)
Falkon
Falkon is a KDE web browser using QtWebEngine rendering engine, previously known as QupZilla. It aims to be a lightweight web browser available through all major platforms. This project has been originally started only for educational purposes. But from its start, Falkon has grown into a feature-rich browser.
Cantor
Cantor provides a graphical frontend for different open source computer algebra systems and scientific programming languages. Contact the KDE-Edu team.
Subscribe to KDE-Edu mail list
Kdenlive
Project: Basic Subtitling Support in Kdenlive
Get in touch with the team at #kdenlive or the developer group in Telegram)
KIO FUSE
KIO FUSE is a bridge between KIO and FUSE. You can find out more on feverfew's blog.
- IRC (freenode): #kde-fm ping feverfew or fvogt.
- Matrix: #kde-fm:kde.org ping feverfew or fvogt.
Project: xfstests Integration
xfstests is a file system regression test suite. We would like to integrate this with our current test suite.
Here are some things which will help to establish a good project plan:
- A patch that seems to allow easier support of FUSE filesystems.
- https://github.com/rfjakob/fuse-xfstests
- Gitlab Issue: !14
Knowledge prerequisite: C++
Project: Port to macOS
Port KIO FUSE to macOS. Dolphin builds on macOS AFAIK so this project should be technically feasible. The solution is likely to involve osxfuse.
- Gitlab Issue: !13
Knowledge prerequisite: C++
Project: Port to Windows
Port KIO FUSE to Windows. Currently a Dolphin port is in the works, so KIO (our main dependency) is already working. There are two potential solutions:
- Dokan FUSE
- A method similar to what sshfs-win has done (WinFsp and Cygwin).
- Gitlab Issue: !12
Knowledge prerequisite: C++
Plasma Mobile
NeoChat
the two areas that could accept a student for GSoC are encryptions and voip support. Talk with use in #neochat:kde.org for more information about the scope of your project.
Knowledge prerequisite: C++, QML (Cryptographie or GStreamer)