GSoC/2021/Ideas: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2021
m (Project: Add gdb pretty printer support for Qt5 - syntax fix)
 
(16 intermediate revisions by 11 users not shown)
Line 71: Line 71:
* [https://www.linkedin.com/groups/12186015/ LinkedIn Group]
* [https://www.linkedin.com/groups/12186015/ LinkedIn Group]
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]
* [https://webchat.kde.org/#/room/#dk-gsoc20-facesengine:kde.org #dk-gsoc20-facesengine channel on Riot kde webchat]'''
'''


==== Project: Port to Qt6 API ====
==== Project: Port to Qt6 API ====
Line 106: Line 106:
'''Mentors''': Maik Qualmann ([email protected]) and Gilles Caulier ([email protected])
'''Mentors''': Maik Qualmann ([email protected]) and Gilles Caulier ([email protected])


==== Project: Port DNG converter plugin to last Abobe DNG SDK ====
==== Project: Improve Image Quality Sorter algorithms ====


'''Brief Explanation''': digiKam was the first open source project to provide DNG support using open source DNGSDK from Adobe. This converter have been started 10 years ago and currently the DNGSDK version used internally is an older one (2012). The goal of this project is to port the DNG Converted plugins to the last stable DNG SDK, and to link the internal Raw Engine based on libraw with this SDK for a better read-only support of most recent versions of DNG file provided by camera. Files from bugzilla relevant of this project are listed below:
'''Brief Explanation''': digiKam has few algorithm used to sort images by quality and register items with flags in database for future post processing. Analyzed image qualities are noise, focus, exposure, and compression. Algorithms used in background do not give expected results and need improvements or to be re-written. Relevant files for bugzilla:


* https://bugs.kde.org/show_bug.cgi?id=284934
* https://bugs.kde.org/show_bug.cgi?id=426355
* https://bugs.kde.org/show_bug.cgi?id=330920
* https://bugs.kde.org/show_bug.cgi?id=399841
* https://bugs.kde.org/show_bug.cgi?id=381967
* https://bugs.kde.org/show_bug.cgi?id=390700
* https://bugs.kde.org/show_bug.cgi?id=427350
* https://bugs.kde.org/show_bug.cgi?id=429119


'''Expected Results''':  
'''Expected Results''':  


Provide an update of DNGConverter plugin using last version of DNG DSK from Adobe. Write unit-tests, and documentation.
Provide an update of Image Quality processing using better implementation algorithm. Write unit-tests, and documentation.


'''Knowledge Prerequisite''':
'''Knowledge Prerequisite''':
* C++, Qt, DNGSDK, CMake, RAW Image Processing
* C++, Qt, OpenCV, Image Processing


'''Mentors''': Maik Qualmann ([email protected]) and Gilles Caulier ([email protected])
'''Mentors''': Thanh Trung Dinh ([email protected]) and Gilles Caulier ([email protected])
 
==== Project: Faces Engine Improvements ====
 
'''Brief Explanation''': [https://invent.kde.org/graphics/digikam/-/tree/master/core/libs/facesengine Faces engine] is a tool helping users automatically tag faces in photos. With the idea of "let the machine do the hard work", Deep Learning is exploited in the faces engine to learn from manually tagged faces and perform the rest of the job. There has been a lot of work on faces engine during the last GSoCs and the new deep learning tool has been recognized by users. This year, we propose a project to improve the faces engine: to be more efficient on AI core algorithm, and to be more user friendly on UX/UI workflow. More concretely, we expect to see improvements in detection/recognition performance with outlier faces suppression (i.e. new faces should not be counted as untagged faces), the ability to work on large datasets, and an ease-of-use face workflow improvement. In addition, testing and documentation is a MUST to keep maintainability.
 
'''Relevant bugs''':
* https://bugs.kde.org/show_bug.cgi?id=427071
* https://bugs.kde.org/show_bug.cgi?id=432529
* https://bugs.kde.org/show_bug.cgi?id=431797
 
 
'''Expected Results''':
* Implement new ML/DL algorithm to improve face recognition accuracy on noisy data
* Improve face recognition performance on large datasets
* Refactor and cleanup face workflow for ease of use.
* Testing and documentation.
 
 
'''Knowledge Prerequisite''':
* C++, Qt, OpenCV
* Machine Learning, Deep Learning
* Image Processing, Optimization
 
 
'''Level''' Advanced
 
'''Mentors''':  Maik Qualmann ([email protected]), Thanh Trung Dinh ([email protected]), and Gilles Caulier ([email protected])


=== Okular ===
=== Okular ===
Line 184: Line 207:


'''Brief explanation:'''  
'''Brief explanation:'''  
GDB provides a mechanism that allows pretty-printing of values with Python code. It greatly simplifies the representation of complex objects [https://sourceware.org/gdb/current/onlinedocs/gdb/Pretty-Printing.html#Pretty-Printing]. The task of this project is to complete Qt5 support based on [https://codereview.qt-project.org/c/qt/qtbase/+/87052].
GDB provides a mechanism that allows pretty-printing of values with Python code. It greatly simplifies the representation of complex objects [https://sourceware.org/gdb/current/onlinedocs/gdb/Pretty-Printing.html#Pretty-Printing]. The task of this project is to complete Qt5 support based on [https://codereview.qt-project.org/c/qt/qtbase/+/87052]. See also [https://invent.kde.org/office/kmymoney/-/wikis/home#gdb]. Pretty printer for Qt5 are used to debug the [https://sourceforge.net/projects/mingw/ MinGW ports] of KMyMoney.


'''Expected results:''' The Qt5 pretty printer are part of further Qt releases
'''Expected results:''' The Qt5 pretty printer are part of further Qt releases
Line 342: Line 365:


'''Mentors''': Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim), Deepak Kumar (IRC: deepak_)
'''Mentors''': Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim), Deepak Kumar (IRC: deepak_)
=== Kdenlive ===
Get in touch with the team on #kdenlive-dev channel on [irc://chat.freenode.net/kdenlive-dev IRC] or [https://webchat.kde.org/#/room/#kdenlive-dev:kde.org matrix]
All Kdenlive development ideas are in [https://invent.kde.org/multimedia/kdenlive/-/wikis/dev/Ideas Kdenlive Wiki]
Proposed priority (great users interest and seems feasible in the timeframe):


==== Project: Trimming in the timeline ====
==== Project: Trimming in the timeline ====
Line 405: Line 420:
=== NeoChat ===
=== NeoChat ===


the two areas that could accept a student for GSoC are encryptions and voip support. Talk with us in #neochat:kde.org for more information about the scope of your project.
The two areas that could accept a student for GSoC are encryptions and voip support. Talk with us in #neochat:kde.org so that we can discuss together the scope of your project. Also we are open to interesting ideas about improvement in NeoChat.
 
'''Knowledge prerequisite:''' C++, QML (Cryptography or GStreamer)


'''Knowledge prerequisite:''' C++, QML (Cryptographie or GStreamer)
=== Plasma Mobile - Calendar ===
 
Your goal will be to improve a proof of concept of a calendar application using Akonadi. The current proof of concept is able to sucessfully display a month view of all the events in your korganize calendar but, to be really useful, the convergence of the application will need to be improved and the possibility of adding, editing and removing events should be added.
 
'''Knowledge prerequisite:''' C++ and QML
 
'''Contact:'''' @carl:kde.org on Matrix


=== Plasma-nm ===
=== Plasma-nm ===
Line 498: Line 521:
'''Mentor:'''
'''Mentor:'''
Please contact ''Wolthera_laptop'' on IRC: irc.freenode.net, channel #krita
Please contact ''Wolthera_laptop'' on IRC: irc.freenode.net, channel #krita
==== Project: APNG import/export support ====
'''Brief explanation:'''
Implementing a way to export and import APNG animations.
Link to the feature request: https://bugs.kde.org/show_bug.cgi?id=342479
'''Expected results:'''
Krita should be able to export animation to APNG and import frames from APNG.
'''Knowledge Prerequisite:'''
- C++, Qt
'''Mentor:'''
Please contact either ''emmetpdx'' or ''eoinoneill[m]'' on IRC: irc.freenode.net, channel #krita




Line 611: Line 617:
'''Mentor:'''
'''Mentor:'''
Please contact either ''ivanyossi'' on IRC: irc.freenode.net, channel #krita
Please contact either ''ivanyossi'' on IRC: irc.freenode.net, channel #krita
=== KDE Connect ===
==== Project: KDE Connect for iOS ====
'''Brief explanation:'''
KDE Connect has supports for many systems. The missing block of KDE Connect is an iOS app. There were efforts from some developers, which makes it work with the current KDE Connect protocol. However, due to the limited functions in the previous iOS versions, KDE Connect could not do much work. In the recent iOS versions, eg. iOS 14, there are more opening capabilities, such as better file systems and backend support. It can be interesting to maintain an app for iPhone and iPad. The repo is on  [https://invent.kde.org/wxiao/kdeconnect-ios KDE Invent]. A brand-new application written in Swift is also welcomed.
'''Expected results:'''
An iOS application with good user experiences and enhanced functions. Publish the app in App Store if possible. Besides, most iOS apps can run on the latest Mac without much work. It can be nice to have this sandboxed iOS app for macOS at the same time.
'''Knowledge Prerequisite:'''
- Some basic C/C++ knowledges, Objective-C/Swift, iOS
'''Mentor:'''
''Inoki'' ([email protected]), ''Philip Cohn-Cort'' ([email protected]). Feel free to reach us on [https://t.me/joinchat/AOS6gA37orb2dZCLhqbZjg Telegram] or IRC: irc.freenode.net, channel #kdeconnect
=== marK ===
==== Project: Annotation projects support on marK ====
'''Brief explanation:'''
[https://invent.kde.org/education/mark marK] is a machine learning dataset annotation tool which allows users to annotate multiple types of data to help during the training for supervised classification problems. Currently, the  application does not have a project structure. Your job would be to create a custom project file and structure to arrange the imported data in a nice structure. The exported annotation data should follow a similar structure as well. You must create the structure while keeping version control systems like git in mind (that is, small changes should not cause large differences in the project structure)
'''Expected results:'''
A way to create new projects and import existing projects in marK
'''Knowledge Prerequisites:'''
- C++, Qt, machine learning basics
'''Mentors:'''
''Caio Jordão Carvalho'' ([email protected]), ''Pranav Gade'' ([email protected]). Feel free to reach us on [https://t.me/mark_kde Telegram]
=== Alligator ===
==== Podcast Support ====
'''Brief explanation:''' Alligator is an RSS feed reader with very basic podcast playback support. Improve this by adding new features
'''Expected results:''' Some of the following features will be implemented:
- Better UI
- MPRIS Support
- Better playback Management
- Better platform integration
- Content Discovery
- Chapter marks, show notes
- ...
'''Knowledge Prerequisite:''' C++, QML
'''Mentor:''' @tobiasfella:kde.org on Matrix, please contact in #plasmamobile:kde.org

Latest revision as of 19:59, 19 April 2021

Konqi is giving a lesson!

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.

Note

These are all proposals! We are open to new ideas you might have!! 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.


Adding a Proposal

Note

Follow the template of other proposals!


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.

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])

Project: New plugin to process OCR

Brief Explanation: the goal of this project is to implement a new generic DPlugin to process images in batch with Tesseract. It's a C++ framework to make Optical Characters Recognition. This plugin must be able to run over images automatically and record detected text in image metadata for post-processing, as described in this bugzilla file:

https://bugs.kde.org/show_bug.cgi?id=117629

Expected Results:

Provide a new optional Generic Tesseract based DPlugin available in digiKam and Showfoto to run OCR automatically. Write unit-tests, and documentation.

Knowledge Prerequisite:

  • C++, Qt, Tesseract, CMake, OCR Image Processing

Mentors: Maik Qualmann ([email protected]) and Gilles Caulier ([email protected])

Project: Improve Image Quality Sorter algorithms

Brief Explanation: digiKam has few algorithm used to sort images by quality and register items with flags in database for future post processing. Analyzed image qualities are noise, focus, exposure, and compression. Algorithms used in background do not give expected results and need improvements or to be re-written. Relevant files for bugzilla:

Expected Results:

Provide an update of Image Quality processing using better implementation algorithm. Write unit-tests, and documentation.

Knowledge Prerequisite:

  • C++, Qt, OpenCV, Image Processing

Mentors: Thanh Trung Dinh ([email protected]) and Gilles Caulier ([email protected])

Project: Faces Engine Improvements

Brief Explanation: Faces engine is a tool helping users automatically tag faces in photos. With the idea of "let the machine do the hard work", Deep Learning is exploited in the faces engine to learn from manually tagged faces and perform the rest of the job. There has been a lot of work on faces engine during the last GSoCs and the new deep learning tool has been recognized by users. This year, we propose a project to improve the faces engine: to be more efficient on AI core algorithm, and to be more user friendly on UX/UI workflow. More concretely, we expect to see improvements in detection/recognition performance with outlier faces suppression (i.e. new faces should not be counted as untagged faces), the ability to work on large datasets, and an ease-of-use face workflow improvement. In addition, testing and documentation is a MUST to keep maintainability.

Relevant bugs:


Expected Results:

  • Implement new ML/DL algorithm to improve face recognition accuracy on noisy data
  • Improve face recognition performance on large datasets
  • Refactor and cleanup face workflow for ease of use.
  • Testing and documentation.


Knowledge Prerequisite:

  • C++, Qt, OpenCV
  • Machine Learning, Deep Learning
  • Image Processing, Optimization


Level Advanced

Mentors: Maik Qualmann ([email protected]), Thanh Trung Dinh ([email protected]), and Gilles Caulier ([email protected])

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

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


Project: Add gdb pretty printer support for Qt5

Brief explanation: GDB provides a mechanism that allows pretty-printing of values with Python code. It greatly simplifies the representation of complex objects [1]. The task of this project is to complete Qt5 support based on [2]. See also [3]. Pretty printer for Qt5 are used to debug the MinGW ports of KMyMoney.

Expected results: The Qt5 pretty printer are part of further Qt releases

Knowledge Prerequisite: gdb, git, python, Qt

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

Current "New Institution" dialog
Current "Institution" tab of account dialog

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.

According to [4] there is a common structure for generating IBAN e.g. DE2!n8!n10!n, NL2!n4!a10!n, CH2!n5!n12!c and since ktoblzcheck already has functions to verify associated checksums [5], it should be possible to calculate them.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. Noise Calculation: Calculate the overall Signal-to-Noise (SNR) radio for the overall image, or a specific subframe of the image.
  2. 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.
  3. Mask Overlay: Ability to select custom mask over stars to aid in focusing and photometry.
  4. 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)

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_)

Project: Trimming in the timeline

See detailed description.

Brief explanation: currently, editors working in Kdenlive can only move or resize clips they put in the timeline. They are used to other tools like roll, slide etc, the lack of which is sometimes annoying, losing time to change of image keeping the edit synchronized. Several tools should not be too hard to create using Kdenlive existing functions under the hood.

Expected results: all the trimming tools editors are used to should be available in Kdenlive

Knowledge Prerequisite: Qt C++ & QML

Mentor: Vincent Pinon (code), Massimo Stella (editing)

KIO FUSE

KIO FUSE is a bridge between KIO and FUSE. You can find out more on feverfew's blog.

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:

  1. A patch that seems to allow easier support of FUSE filesystems.
  2. 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:

  1. Dokan FUSE
  2. A method similar to what sshfs-win has done (WinFsp and Cygwin).
  • Gitlab Issue: !12

Knowledge prerequisite: C++

NeoChat

The two areas that could accept a student for GSoC are encryptions and voip support. Talk with us in #neochat:kde.org so that we can discuss together the scope of your project. Also we are open to interesting ideas about improvement in NeoChat.

Knowledge prerequisite: C++, QML (Cryptography or GStreamer)

Plasma Mobile - Calendar

Your goal will be to improve a proof of concept of a calendar application using Akonadi. The current proof of concept is able to sucessfully display a month view of all the events in your korganize calendar but, to be really useful, the convergence of the application will need to be improved and the possibility of adding, editing and removing events should be added.

Knowledge prerequisite: C++ and QML

Contact:' @carl:kde.org on Matrix

Plasma-nm

Better firewall support

Brief explanation: Plasma-nm sets default firewall zone for each created connection. While this can be changed in connection settings, it would be nice to add some dialog interaction before a connection gets created and ask the user what firewall zone he wants to use when connecting to a new wireless network.

Expected result: Plasma-nm will ask the user what firewall zone he wants to use when connecting to a new wireless network.

Mentor: Jan Grulich - IRC (freenode): #plasma ping jgrulich.

Knowledge prerequisite: C++, QML


Krita

Please contact us early - the sooner, the better.

You can suggest your own project. Make sure it's correct size for your experience level and the time limit.

Contact:

  1. krita on irc.freenode.net (note that the chat's activeness might vary depending on which time it is)

https://krita-artists.org/c/develop/7

Project: Reference Images Improvements

Brief explanation: This is a set of smaller tasks that can be done independently, all focused on one single tool: Reference Images Tool. - crop/rotate/mirror the image - apply specific filters - possibility of it working like a File Layer (updates when the file is updated on the hard drive) Links: https://bugs.kde.org/show_bug.cgi?id=396155 https://bugs.kde.org/show_bug.cgi?id=405130

Expected results: More feature-complete Reference Images Tool (ultimate goal: no need for external reference images tools like PureRef or the Reference Docker plugin, as expressed by our users)

Knowledge Prerequisite: - C++, Qt, limitations of the current Reference Images

Mentor: Please contact halla on IRC: irc.freenode.net, channel #krita

Project: Modern/high quality scaling algorithm

Brief explanation: Link: https://bugs.kde.org/show_bug.cgi?id=333167 No- or Lo-Halo sampling method for scaling.

Expected results: Good scaling algorithm

Knowledge Prerequisite: - C++, Qt, basic of algorithms

Mentor: Please contact tiar on IRC: irc.freenode.net, channel #krita

Project: Export a document to SVG

Brief explanation: Right now, Krita can only save to SVG one layer at a time. It would be good if Krita was able to save the whole document to SVG: vector layers as groups, and raster layers as bitmaps. To be determined what should happen to other types of layers. Link: https://bugs.kde.org/show_bug.cgi?id=404834

Expected results: File -> Save, File -> Save As, File -> Export should have an option to save to SVG. A file saved into SVG should have all raster and vector content from the document.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact Wotlhera_laptop on IRC: irc.freenode.net, channel #krita

Project: Circle in a square assistant tool

Brief explanation: Implementing a new assistant tool that is basically a readjustable 4 corner polygon that always has a circle inside it which touch the sides (useful for drawing circles in perspective). Link: https://bugs.kde.org/show_bug.cgi?id=405643

Expected results: There is a short video in the bug report, the new assistant should behave just like in the video, plus it should have other features of assistants: it should have the lock/move/hide and change colors. It should interact nicely with Perspective and Vanishing Point assistant tools (since it's for perspective too, it should show a vanishing point just like Perspective assistant does; and the vanishing point, unlike in Perspective assistant, should snap to the Vanishing Point assistant. Moreover the vanishing point of the new assistant should snap to the vanishing point of Perspective tool and the edges should snap to the edges of Perspective assistant tool as well).

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact Wolthera_laptop on IRC: irc.freenode.net, channel #krita


Project: Texture each dab instead of a stroke

Brief explanation: Implementing texturing brush dabs instead of texturing whole stroke. (Just like Opacity is about the whole stroke and Flow is about the opacity of just one brush dab) Link: https://bugs.kde.org/show_bug.cgi?id=375155

Expected results: Texture is applied only on brush dabs. See https://bugsfiles.kde.org/attachment.cgi?id=135342

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact dmitryK|log on IRC: irc.freenode.net, channel #krita


Project: Delete, cut, copy & paste from/to multiple layers/group

Brief explanation: There are several operations that would be good to be applied on multiple layers or a whole group at once: cut, copy, delete and paste. Link: https://bugs.kde.org/show_bug.cgi?id=352519

Expected results: Detailed explanations how each of the operations should behave are in the feature request linked above.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact dmitryK|log on IRC: irc.freenode.net, channel #krita

Project: Add film-like adjustment

Brief explanation: Film-like is a name of a special adjustment curve that allows the user to control the contrast without having hue shifts that often happen when using standard HSV Adjustment curves. Link: https://bugs.kde.org/show_bug.cgi?id=385845

Expected results: A new filter with Film-like adjustment.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact Wolthera_laptop on IRC: irc.freenode.net, channel #krita


Project: Show thumbnails when hovering over a composition

Brief explanation: Compositions docker allows the user to save different sets of visibility for layers. While the user can name them, it would be useful if it could also show a thumbnail of the composition. Link: https://bugs.kde.org/show_bug.cgi?id=428934

Expected results: When the user hovers over the composition, the thumbnail of the composition is shown on top.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact either halla on IRC: irc.freenode.net, channel #krita

Project: Smarter boolean operations on vectors

Brief explanation: Right now, the algorithm for boolean operations on vector shapes creates much more nodes than necessary. This task is about implementing a smarter algorithm that would leave only a handful of the most necessary nodes after the operation. Link: https://bugs.kde.org/show_bug.cgi?id=400521

Expected results: When the user performs a boolean operation on vector shapes, the amount of nodes should be minimal.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact either dmitryK|log on IRC: irc.freenode.net, channel #krita


Project: Pixel-perfect ellipses

Brief explanation: In Krita, there is no way to draw a pixel-perfect ellipse using the Ellipse Tool. Most probably the appropriate solution would be to create a new type of Brush Tip that would behave in a pixel-perfect way. Link: https://bugs.kde.org/show_bug.cgi?id=387242

Expected results: A way to draw a pixel-perfect ellipse using the Ellipse Tool. The new Brush Tip must also behave in a pixel-perfect way creating lines and other shapes.

Knowledge Prerequisite: - C++, Qt

Mentor: Please contact either ivanyossi on IRC: irc.freenode.net, channel #krita

KDE Connect

Project: KDE Connect for iOS

Brief explanation: KDE Connect has supports for many systems. The missing block of KDE Connect is an iOS app. There were efforts from some developers, which makes it work with the current KDE Connect protocol. However, due to the limited functions in the previous iOS versions, KDE Connect could not do much work. In the recent iOS versions, eg. iOS 14, there are more opening capabilities, such as better file systems and backend support. It can be interesting to maintain an app for iPhone and iPad. The repo is on KDE Invent. A brand-new application written in Swift is also welcomed.

Expected results: An iOS application with good user experiences and enhanced functions. Publish the app in App Store if possible. Besides, most iOS apps can run on the latest Mac without much work. It can be nice to have this sandboxed iOS app for macOS at the same time.

Knowledge Prerequisite: - Some basic C/C++ knowledges, Objective-C/Swift, iOS

Mentor: Inoki ([email protected]), Philip Cohn-Cort ([email protected]). Feel free to reach us on Telegram or IRC: irc.freenode.net, channel #kdeconnect

marK

Project: Annotation projects support on marK

Brief explanation: marK is a machine learning dataset annotation tool which allows users to annotate multiple types of data to help during the training for supervised classification problems. Currently, the application does not have a project structure. Your job would be to create a custom project file and structure to arrange the imported data in a nice structure. The exported annotation data should follow a similar structure as well. You must create the structure while keeping version control systems like git in mind (that is, small changes should not cause large differences in the project structure)

Expected results: A way to create new projects and import existing projects in marK

Knowledge Prerequisites: - C++, Qt, machine learning basics

Mentors: Caio Jordão Carvalho ([email protected]), Pranav Gade ([email protected]). Feel free to reach us on Telegram

Alligator

Podcast Support

Brief explanation: Alligator is an RSS feed reader with very basic podcast playback support. Improve this by adding new features

Expected results: Some of the following features will be implemented:

- Better UI
- MPRIS Support
- Better playback Management
- Better platform integration
- Content Discovery
- Chapter marks, show notes
- ...

Knowledge Prerequisite: C++, QML

Mentor: @tobiasfella:kde.org on Matrix, please contact in #plasmamobile:kde.org