GSoC/2021/Ideas: Difference between revisions
mNo edit summary |
m (Project: Add gdb pretty printer support for Qt5 - syntax fix) |
||
(15 intermediate revisions by 10 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] | ||
''' | |||
==== 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: | ==== Project: Improve Image Quality Sorter algorithms ==== | ||
'''Brief Explanation''': digiKam | '''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= | * https://bugs.kde.org/show_bug.cgi?id=426355 | ||
* https://bugs.kde.org/show_bug.cgi?id= | * https://bugs.kde.org/show_bug.cgi?id=399841 | ||
'''Expected Results''': | '''Expected Results''': | ||
Provide an update of | Provide an update of Image Quality processing using better implementation algorithm. Write unit-tests, and documentation. | ||
'''Knowledge Prerequisite''': | '''Knowledge Prerequisite''': | ||
* C++, Qt, | * 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_) | ||
==== Project: Trimming in the timeline ==== | ==== Project: Trimming in the timeline ==== | ||
Line 407: | Line 422: | ||
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. | 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 ( | '''Knowledge prerequisite:''' C++, QML (Cryptography or GStreamer) | ||
=== Plasma Mobile - Calendar === | === 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 | 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 | '''Knowledge prerequisite:''' C++ and QML | ||
Line 506: | 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 | ||
Line 619: | 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
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.
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:
- 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 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
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
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:
- 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)
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.
- 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++
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:
- 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