GSoC/2024/Ideas: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2024
(→‎Krita ~ 175h ~: Filling up info)
(add project for each idea)
Line 65: Line 65:




=== Python bindings for KDE Frameworks ===
=== KDE Frameworks ===
==== Python bindings for KDE Frameworks ====


'''Brief explanation:''' While Qt itself, has official bindings to Python, this is not the case for the KDE Frameworks. This project hopes to add python bindings to as many frameworks as possible during the summer.
'''Brief explanation:''' While Qt itself, has official bindings to Python, this is not the case for the KDE Frameworks. This project hopes to add python bindings to as many frameworks as possible during the summer.
Line 79: Line 80:
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix


 
=== Arianna ===
=== Port Arianna to Foliate-js ===
==== Port Arianna to Foliate-js ====


'''Brief explanation:''' Arianna is an ebook reader and currently use epub.js, which is not really maintained anymore. The idea would be to port it https://github.com/johnfactotum/foliate-js which is modern epub renderer used by foliate.
'''Brief explanation:''' Arianna is an ebook reader and currently use epub.js, which is not really maintained anymore. The idea would be to port it https://github.com/johnfactotum/foliate-js which is modern epub renderer used by foliate.
Line 94: Line 95:
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix


 
=== GCompris ===
=== Project: Adding support for multiple numeral system in GCompris ===
==== Project: Adding support for multiple numeral system in GCompris ====


'''Brief explanation:''' For now, GCompris numbers are always displayed as Western Arabic numbers (0, 1, ...). There are several systems in the world and Qt/Javascript provides us ways to select the ones we want. The aim of the task is to add the handling of multiple systems and update all the places we display numbers to use the new system. A bit more details are available in https://phabricator.kde.org/T16332.
'''Brief explanation:''' For now, GCompris numbers are always displayed as Western Arabic numbers (0, 1, ...). There are several systems in the world and Qt/Javascript provides us ways to select the ones we want. The aim of the task is to add the handling of multiple systems and update all the places we display numbers to use the new system. A bit more details are available in https://phabricator.kde.org/T16332.
Line 110: Line 111:




=== Project: Work on one or more KDE Connect tasks ===
=== KDE Connect ===
==== Project: Work on one or more KDE Connect tasks ====


'''Project type:''' Coding
'''Project type:''' Coding
Line 122: Line 124:
'''Mentor:''' Albert Vaca Cintora <[email protected]>
'''Mentor:''' Albert Vaca Cintora <[email protected]>


 
=== sddm-kcm ===
=== Project: Harden sddm-kcm ===
==== Project: Harden sddm-kcm ====


'''Project type:''' Coding
'''Project type:''' Coding
Line 142: Line 144:
=== Krita ===
=== Krita ===


'''Krita is a digital painting application, used by millions of people all over the world. For Google Summer of Code, we expect students to already have contributed to Krita by building the application and submitting merge requests for some bug fixes. Note that some projects also demand a good knowledge of algorithms and skill in doing research.
'''Krita is a digital painting application, used by millions of people all over the world. For Google Summer of Code, we expect students to already have contributed to Krita by building the application and submitting merge requests for some bug fixes. Note that some projects also demand a good knowledge of algorithms and skill in doing research. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.


* [http://www.krita.org Krita project web site]
* [http://www.krita.org Krita project web site]
Line 149: Line 151:
'''
'''


 
==== => Project: Averaged/Mixed Color Selector ====
 
==== ~ 90h ~ ====
===== => Project: Averaged/Mixed Color Selector =====
'''Brief explanation''': Design improvements to Digital Colors Mixer (+ Mixer Slider Docker)  with users feedback (including adding a possibility of a gradient cross all channels for custom colors).
'''Brief explanation''': Design improvements to Digital Colors Mixer (+ Mixer Slider Docker)  with users feedback (including adding a possibility of a gradient cross all channels for custom colors).


Line 165: Line 164:
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315


===== => Project: Saving curves =====
==== => Project: Saving curves ====
'''Brief explanation''': There are several places in Krita where we use a specific type of a curve. There is no way to save them or copy to another part of the interface. This project intends to fill that gap.
'''Brief explanation''': There are several places in Krita where we use a specific type of a curve. There is no way to save them or copy to another part of the interface. This project intends to fill that gap.


Line 178: Line 177:
'''Links''': [https://bugs.kde.org/show%20bug.cgi?id=387352 Color Adjustment curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=391927 Brush editor curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=401496 Brush sensors curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=433947 Pressure curves bug report link]
'''Links''': [https://bugs.kde.org/show%20bug.cgi?id=387352 Color Adjustment curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=391927 Brush editor curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=401496 Brush sensors curves bug report link], [https://bugs.kde.org/show_bug.cgi?id=433947 Pressure curves bug report link]


===== => Project: Precision and new units in guides =====
==== => Project: Precision and new units in guides ====
'''Brief explanation''': Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.
'''Brief explanation''': Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.


Line 191: Line 190:
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943


===== => Project: Merging masks =====
==== => Project: Merging masks ====
'''Brief explanation''': Krita has several types of masks, this is about Transparency Masks, with Local Selections, Filter Masks and Colorize Masks as a stretch goal. The project is to add a way to merge masks together.
'''Brief explanation''': Krita has several types of masks, this is about Transparency Masks, with Local Selections, Filter Masks and Colorize Masks as a stretch goal. The project is to add a way to merge masks together.


Line 204: Line 203:
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141


==== ~ 175h ~ ====
==== => Project: Onion Skin Shift & Trace ====
 
===== => Project: Onion Skin Shift & Trace =====
'''Brief explanation''': It's a feature that is really important for animators. It allows the user to move and rotate onion skins which makes tracing changing objects in motion way easier. It must be designed with professional animators in mind, not just casual users.
'''Brief explanation''': It's a feature that is really important for animators. It allows the user to move and rotate onion skins which makes tracing changing objects in motion way easier. It must be designed with professional animators in mind, not just casual users.


Line 220: Line 217:




===== => Project: Selection Action Bar =====
==== => Project: Selection Action Bar ====
'''Brief explanation''': A floating bar, similar to assistants handles, containing several of the most useful actions. Suggested list of options (can change after discussions with users): Invert selection, crop to selection (layer or image), fill selection with foreground color, copy (or cut?) selected content to new layer, transform selected content, deselect selection, and a move handle for the bar itself.
'''Brief explanation''': A floating bar, similar to assistants handles, containing several of the most useful actions. Suggested list of options (can change after discussions with users): Invert selection, crop to selection (layer or image), fill selection with foreground color, copy (or cut?) selected content to new layer, transform selected content, deselect selection, and a move handle for the bar itself.


Line 233: Line 230:
'''Link''': https://krita-artists.org/t/selection-action-bar/48767
'''Link''': https://krita-artists.org/t/selection-action-bar/48767


===== => Project: New option in Color Sampler =====
==== => Project: New option in Color Sampler ====
'''Brief explanation''': Users often want to sample colors from specific layers. This project should add at least two of the following options: “Current layer and below”, “Current layer and below, without filters”, ”All layers except current one”, “Color Labeled Layers” (selecting and merging color labeled layers is already implemented). In addition to that, it should contain two new actions, one for sampling the foreground color according to the Color Sampler tool options, and another for sampling the background color with those options.
'''Brief explanation''': Users often want to sample colors from specific layers. This project should add at least two of the following options: “Current layer and below”, “Current layer and below, without filters”, ”All layers except current one”, “Color Labeled Layers” (selecting and merging color labeled layers is already implemented). In addition to that, it should contain two new actions, one for sampling the foreground color according to the Color Sampler tool options, and another for sampling the background color with those options.


Line 246: Line 243:
'''Links''': [https://krita-artists.org/t/color-labeled-layers-sample-option-for-color-sampler-tool-feature-request/42653 Feature request on KA about Color Labeled Layers option], [https://bugs.kde.org/show_bug.cgi?id=395231 Bug report about "Current and below" and "Current and below without filter layers" options], [https://bugs.kde.org/show_bug.cgi?id=432847 Bug report about "All layers except the current one" option].
'''Links''': [https://krita-artists.org/t/color-labeled-layers-sample-option-for-color-sampler-tool-feature-request/42653 Feature request on KA about Color Labeled Layers option], [https://bugs.kde.org/show_bug.cgi?id=395231 Bug report about "Current and below" and "Current and below without filter layers" options], [https://bugs.kde.org/show_bug.cgi?id=432847 Bug report about "All layers except the current one" option].


===== => Project: Waveform in animation track =====
==== => Project: Waveform in animation track ====
'''Brief explanation''': Waveform is very useful for animators to sync the animation to the sound (for example lip syncing). Note that waveform generation is already implemented in MLT, the multimedia library Krita is using.
'''Brief explanation''': Waveform is very useful for animators to sync the animation to the sound (for example lip syncing). Note that waveform generation is already implemented in MLT, the multimedia library Krita is using.


Line 259: Line 256:
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140


===== => Project: Summary frames on groups =====
==== => Project: Summary frames on groups ====
'''Brief explanation''': Animation related project. Contact Emmet for more details.
'''Brief explanation''': Animation related project. Contact Emmet for more details.


Line 272: Line 269:
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026


===== => Project: Improve Compositions Docker's Batch Export Features =====
==== => Project: Improve Compositions Docker's Batch Export Features ====
'''Brief explanation''': The current Compositions Docker does feature exporting and batch exporting, but currently lacks configuration for image or animation export settings. It could use more control over how all compositions are exported.  
'''Brief explanation''': The current Compositions Docker does feature exporting and batch exporting, but currently lacks configuration for image or animation export settings. It could use more control over how all compositions are exported.  


Line 284: Line 281:




===== Project: Pixel Perfect Hand-drawn Lines =====
==== Project: Pixel Perfect Hand-drawn Lines ====
'''Brief explanation''': In Pixel Art dedicated programs the line painted by the "pencil" tool (1px solid pixel brush) is not just following the user's mouse/pen's coordinates, but removing duplicate pixels in a smart way, resulting in a so-called "pixel perfect" line. Example: [https://krita-artists.org/uploads/default/original/3X/9/a/9a3e00940e0332112c3da879c916d769a698e6dc.png] The task is to implement such feature in Krita.  
'''Brief explanation''': In Pixel Art dedicated programs the line painted by the "pencil" tool (1px solid pixel brush) is not just following the user's mouse/pen's coordinates, but removing duplicate pixels in a smart way, resulting in a so-called "pixel perfect" line. Example: [https://krita-artists.org/uploads/default/original/3X/9/a/9a3e00940e0332112c3da879c916d769a698e6dc.png] The task is to implement such feature in Krita.  


Line 299: Line 296:
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html


==== ~ 350h ~ ====
==== => Project: Extend Arrange Docker for layers plus snapping ====
 
===== => Project: Extend Arrange Docker for layers plus snapping =====
'''Brief explanation''': Currently, the arrange docker only supports aligning and distributing vector objects of a singlet vector layer. This project aims to extend the arrange docker support for layers and masks too.
'''Brief explanation''': Currently, the arrange docker only supports aligning and distributing vector objects of a singlet vector layer. This project aims to extend the arrange docker support for layers and masks too.


Line 315: Line 310:




===== => Project (Advanced): Ribbon Brush =====
==== => Project (Advanced): Ribbon Brush ====


'''Brief explanation''': In other art programs there is a brush engine/tip that can take a raster image and while painting a stroke, distort copies of that image in a way that they seemlessly fit together. It's most common usages are chains, laces at the end of the clothes, braids, textured strings etc. Few examples: [https://krita-artists.org/uploads/default/original/3X/d/4/d49a8cbab365e61dc9245a1d83beadd8cd481312.png] A picture of technical explanation: [https://krita-artists.org/uploads/default/original/3X/8/f/8f8c2c453f48e6b24198ae28a77dd7014f846210.png]
'''Brief explanation''': In other art programs there is a brush engine/tip that can take a raster image and while painting a stroke, distort copies of that image in a way that they seemlessly fit together. It's most common usages are chains, laces at the end of the clothes, braids, textured strings etc. Few examples: [https://krita-artists.org/uploads/default/original/3X/d/4/d49a8cbab365e61dc9245a1d83beadd8cd481312.png] A picture of technical explanation: [https://krita-artists.org/uploads/default/original/3X/8/f/8f8c2c453f48e6b24198ae28a77dd7014f846210.png]
Line 331: Line 326:
'''Link''': https://krita-artists.org/t/ribbon-brush/31346
'''Link''': https://krita-artists.org/t/ribbon-brush/31346


=== Implement a Computer Opponent for a Mancala Game ===
=== KDE Games ===
==== Implement a Computer Opponent for a Mancala Game ====


'''Brief explanation:''' Mancala games such as Bao, Bohnenspiel, Kalah, Oware, Pallanghuzi and Sungka are strategy games played all over the world. The project would entail creating a KDE application for a Mancala game, with a main focus on a good computerized opponent.  As an example [Kalah has been solved](https://naml.us/paper/kalah/) but only certain board sizes maybe fully implemented to work on a typical desktop or mobile device.
'''Brief explanation:''' Mancala games such as Bao, Bohnenspiel, Kalah, Oware, Pallanghuzi and Sungka are strategy games played all over the world. The project would entail creating a KDE application for a Mancala game, with a main focus on a good computerized opponent.  As an example [Kalah has been solved](https://naml.us/paper/kalah/) but only certain board sizes maybe fully implemented to work on a typical desktop or mobile device.

Revision as of 10:37, 3 February 2024

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!


Sample project

Project type: Coding / Web Development / Promo / Translation

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

When adding an idea to this section, please 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 (2-5 sentences)
  • the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)
  • the expected results
  • pre-requisites for working on your project (skills required/preferred)
  • 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)
  • if possible, an easy, medium or hard rating of the project

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.

Ideas

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

Duration: Mention one of ~90, ~175 or ~350 hours of effort necessary to finish the project. Use only one of these three project classes and don't come up with other numbers here.

Difficulty:: Easy, medium or difficult 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:kde.org on matrix.


KDE Frameworks

Python bindings for KDE Frameworks

Brief explanation: While Qt itself, has official bindings to Python, this is not the case for the KDE Frameworks. This project hopes to add python bindings to as many frameworks as possible during the summer.

Expected results: Make it easier to build Python apps with Qt

Knowledge Prerequisite: C++ and Python knowledge. Having read https://doc.qt.io/qtforpython-6/ https://doc.qt.io/qtforpython-6/shiboken6/index.html and https://www.kdab.com/creating-python-bindings-for-qt-libraries/ is a good start

Duration: Flexible depending on the amount of frameworks we want to cover during this GSoC.

Difficulty:: Medium

Mentor: Carl Schwan - @carl:kde.org on matrix

Arianna

Port Arianna to Foliate-js

Brief explanation: Arianna is an ebook reader and currently use epub.js, which is not really maintained anymore. The idea would be to port it https://github.com/johnfactotum/foliate-js which is modern epub renderer used by foliate.

Expected results: A nice and modern epub renderer for Arianna

Knowledge Prerequisite: Javascript knowledge and minimal C++ knowledge to build the project

Duration: 175 hours

Difficulty:: Medium

Mentor: Carl Schwan - @carl:kde.org on matrix

GCompris

Project: Adding support for multiple numeral system in GCompris

Brief explanation: For now, GCompris numbers are always displayed as Western Arabic numbers (0, 1, ...). There are several systems in the world and Qt/Javascript provides us ways to select the ones we want. The aim of the task is to add the handling of multiple systems and update all the places we display numbers to use the new system. A bit more details are available in https://phabricator.kde.org/T16332.

Expected results: Ability to change numeral system and change it on all the code.

Knowledge Prerequisite: Basics on Javascript and C++

Duration: ~175 hours

Difficulty:: Easy

Mentors: Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.


KDE Connect

Project: Work on one or more KDE Connect tasks

Project type: Coding

Brief explanation: KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/

Expected results: Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues

Knowledge Prerequisite: The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.

Mentor: Albert Vaca Cintora <[email protected]>

sddm-kcm

Project: Harden sddm-kcm

Project type: Coding

Brief explanation: sddm-kcm is a system settings module to setup sddm, the SUSE security team has found some issues that while not immediately exploitable we would ideally fix. It would also include improving KAuth to support passing file descriptors between the main process and the helper instead of paths.

Expected results: Most/All of the issues identified are fixed.

Knowledge Prerequisite: Some C++/Unix/polkit knowledge is welcome.

Duration: 175 hours

Difficulty:: Medium/Hard

Mentor: Albert Astals Cid <[email protected]>


Krita

Krita is a digital painting application, used by millions of people all over the world. For Google Summer of Code, we expect students to already have contributed to Krita by building the application and submitting merge requests for some bug fixes. Note that some projects also demand a good knowledge of algorithms and skill in doing research. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.

=> Project: Averaged/Mixed Color Selector

Brief explanation: Design improvements to Digital Colors Mixer (+ Mixer Slider Docker) with users feedback (including adding a possibility of a gradient cross all channels for custom colors).

Expected results: Gathering user feedback for Digital Colors Mixer and Mixer Slider Docker on Krita-Artists forum. Creating a design based on that feedback (and running through the forum to ensure completeness). Finally, implement the design (this is expected to be a small project with only some changes to UI and underlying logic; if the user feedback proves the dockers need more work than that, we'll adjust by pointing which of the requested features needs to be implemented for the project to be considered finished).

Knowledge Prerequisite: C++, Qt

Duration: ~90h

Mentor: Tiar, backup: Wolthera

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

=> Project: Saving curves

Brief explanation: There are several places in Krita where we use a specific type of a curve. There is no way to save them or copy to another part of the interface. This project intends to fill that gap.

Expected results: Save and load plus copy and paste curves in any place Krita uses curves. It needs to be both nice to use and not getting in a way for users who don't use them. The saving itself (into a string) is done, what's left is UI/UX work to include it everywhere.

Knowledge Prerequisite: C++, Qt, UI

Duration: ~90h

Mentor: Tiar

Links: Color Adjustment curves bug report link, Brush editor curves bug report link, Brush sensors curves bug report link, Pressure curves bug report link

=> Project: Precision and new units in guides

Brief explanation: Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.

Expected results: Ditto.

Knowledge Prerequisite: C++, Qt

Duration: ~90h

Mentor: Wolthera

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

=> Project: Merging masks

Brief explanation: Krita has several types of masks, this is about Transparency Masks, with Local Selections, Filter Masks and Colorize Masks as a stretch goal. The project is to add a way to merge masks together.

Expected results: Add merging of masks in AND and OR modes. Preferably one of those modes (OR, probably) should be more easily accessible/treated as default, but both must be possible.

Knowledge Prerequisite: C++, Qt, math

Duration: ~90h

Mentor: Tiar

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

=> Project: Onion Skin Shift & Trace

Brief explanation: It's a feature that is really important for animators. It allows the user to move and rotate onion skins which makes tracing changing objects in motion way easier. It must be designed with professional animators in mind, not just casual users.

Expected results: Usable "shift & trace" mechanic (with rotation as well, not just moving/panning).

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Emmet

Link: Krita Artists feature request Bug report link


=> Project: Selection Action Bar

Brief explanation: A floating bar, similar to assistants handles, containing several of the most useful actions. Suggested list of options (can change after discussions with users): Invert selection, crop to selection (layer or image), fill selection with foreground color, copy (or cut?) selected content to new layer, transform selected content, deselect selection, and a move handle for the bar itself.

Expected results: Floating bar fully implemented and usable.

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Emmet, Wolthera or Tiar

Link: https://krita-artists.org/t/selection-action-bar/48767

=> Project: New option in Color Sampler

Brief explanation: Users often want to sample colors from specific layers. This project should add at least two of the following options: “Current layer and below”, “Current layer and below, without filters”, ”All layers except current one”, “Color Labeled Layers” (selecting and merging color labeled layers is already implemented). In addition to that, it should contain two new actions, one for sampling the foreground color according to the Color Sampler tool options, and another for sampling the background color with those options.

Expected results: At least two of the modes, PLUS the two actions/shortcuts.

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Tiar, Emmet or Wolthera

Links: Feature request on KA about Color Labeled Layers option, Bug report about "Current and below" and "Current and below without filter layers" options, Bug report about "All layers except the current one" option.

=> Project: Waveform in animation track

Brief explanation: Waveform is very useful for animators to sync the animation to the sound (for example lip syncing). Note that waveform generation is already implemented in MLT, the multimedia library Krita is using.

Expected results: Easily accessible or constantly visible waveform in the Animation Timeline docker

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Emmet

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

=> Project: Summary frames on groups

Brief explanation: Animation related project. Contact Emmet for more details.

Expected results: Summary frames on group layers

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Emmet

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

=> Project: Improve Compositions Docker's Batch Export Features

Brief explanation: The current Compositions Docker does feature exporting and batch exporting, but currently lacks configuration for image or animation export settings. It could use more control over how all compositions are exported.

Expected results: Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s).

Knowledge Prerequisite: C++, Qt, CMake

Duration: ~175h

Mentor: TBD


Project: Pixel Perfect Hand-drawn Lines

Brief explanation: In Pixel Art dedicated programs the line painted by the "pencil" tool (1px solid pixel brush) is not just following the user's mouse/pen's coordinates, but removing duplicate pixels in a smart way, resulting in a so-called "pixel perfect" line. Example: [1] The task is to implement such feature in Krita.

Expected results: A feature in the Pixel Engine working as described

Knowledge Prerequisite: C++, Qt

Duration: ~175h

Mentor: Emmet, backup: Tiar

Feature request link: https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629

Technical details link: https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html

=> Project: Extend Arrange Docker for layers plus snapping

Brief explanation: Currently, the arrange docker only supports aligning and distributing vector objects of a singlet vector layer. This project aims to extend the arrange docker support for layers and masks too.

Expected results: All the current operations available in Arrange docker could be done with the layers.

Knowledge Prerequisite: C++, Qt, CMake

Duration: ~350h

Mentor: Wolthera

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


=> Project (Advanced): Ribbon Brush

Brief explanation: In other art programs there is a brush engine/tip that can take a raster image and while painting a stroke, distort copies of that image in a way that they seemlessly fit together. It's most common usages are chains, laces at the end of the clothes, braids, textured strings etc. Few examples: [2] A picture of technical explanation: [3]

Note that this is an advanced project and you need to be a good student to be able to complete it (you will have help but you need to have a solid foundation beforehand). We also require either some code examples or some kind of proof-of-concept in the proposal. Make sure to contact us early (contact info above).

Expected results: Fully usable brush tip or brush engine

Knowledge Prerequisite: C++, Qt, math

Duration: ~350h

Mentor: TBD

Link: https://krita-artists.org/t/ribbon-brush/31346

KDE Games

Implement a Computer Opponent for a Mancala Game

Brief explanation: Mancala games such as Bao, Bohnenspiel, Kalah, Oware, Pallanghuzi and Sungka are strategy games played all over the world. The project would entail creating a KDE application for a Mancala game, with a main focus on a good computerized opponent. As an example [Kalah has been solved](https://naml.us/paper/kalah/) but only certain board sizes maybe fully implemented to work on a typical desktop or mobile device.

Expected results: A good computerized opponent

Knowledge Prerequisite: Some programming background in a compiled language such as C, C++, Java, Kotlin, Rust but not limited to these.

Duration: 175 hours

Difficulty:: Medium

Mentor: Benson Muite - benson_muite at emailplus dot org