https://community.kde.org/api.php?action=feedcontributions&user=Tiar&feedformat=atomKDE Community Wiki - User contributions [en]2024-03-19T11:31:52ZUser contributionsMediaWiki 1.40.2https://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99876GSoC/2024/Ideas2024-02-03T01:27:18Z<p>Tiar: /* Krita ~ 175h ~ */ Filling up info</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
=== Project: Harden sddm-kcm ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' Some C++/Unix/polkit knowledge is welcome.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
'''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).<br />
<br />
'''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).<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
===== => Project: Saving curves =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, UI<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''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]<br />
<br />
===== => Project: Precision and new units in guides =====<br />
'''Brief explanation''': Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.<br />
<br />
'''Expected results''': Ditto.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
===== => Project: Merging masks =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
'''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.<br />
<br />
'''Expected results''': Usable "shift & trace" mechanic (with rotation as well, not just moving/panning). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': [https://krita-artists.org/t/animation-onion-skin-shift-trace-move-rotate/55652 Krita Artists feature request] [https://bugs.kde.org/show_bug.cgi?id=395928 Bug report link]<br />
<br />
<br />
===== => Project: Selection Action Bar =====<br />
'''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.<br />
<br />
'''Expected results''': Floating bar fully implemented and usable.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
===== => Project: New option in Color Sampler =====<br />
'''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.<br />
<br />
'''Expected results''': At least two of the modes, PLUS the two actions/shortcuts.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Tiar, Emmet or Wolthera<br />
<br />
'''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].<br />
<br />
===== => Project: Waveform in animation track =====<br />
'''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.<br />
<br />
'''Expected results''': Easily accessible or constantly visible waveform in the Animation Timeline docker<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
===== => Project: Summary frames on groups =====<br />
'''Brief explanation''': Animation related project. Contact Emmet for more details.<br />
<br />
'''Expected results''': Summary frames on group layers<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
'''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. <br />
<br />
'''Expected results''': A feature in the Pixel Engine working as described<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': Emmet, backup: Tiar<br />
<br />
'''Feature request link''': https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629<br />
<br />
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
===== => Project (Advanced): Ribbon Brush =====<br />
<br />
'''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]<br />
<br />
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).<br />
<br />
'''Expected results''': Fully usable brush tip or brush engine<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== Implement a Computer Opponent for a Mancala Game ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A good computerized opponent<br />
<br />
'''Knowledge Prerequisite:''' Some programming background in a compiled language such as C, C++, Java, Kotlin, Rust but not limited to these.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus dot org</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99875GSoC/2024/Ideas2024-02-03T00:52:00Z<p>Tiar: /* ~ 90h ~ */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
=== Project: Harden sddm-kcm ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' Some C++/Unix/polkit knowledge is welcome.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
'''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).<br />
<br />
'''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).<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
===== => Project: Saving curves =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, UI<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''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]<br />
<br />
===== => Project: Precision and new units in guides =====<br />
'''Brief explanation''': Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.<br />
<br />
'''Expected results''': Ditto.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
===== => Project: Merging masks =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Selection Action Bar =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: New option in Color Sampler: =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Waveform in animation track =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Summary frames on groups =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': <br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
'''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. <br />
<br />
'''Expected results''': A feature in the Pixel Engine working as described<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Feature request link''': https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629<br />
<br />
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html<br />
<br />
<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
===== => Project (Advanced): Ribbon Brush =====<br />
<br />
'''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]<br />
<br />
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).<br />
<br />
'''Expected results''': Fully usable brush tip or brush engine<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== Implement a Computer Opponent for a Mancala Game ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A good computerized opponent<br />
<br />
'''Knowledge Prerequisite:''' Some programming background in a compiled language such as C, C++, Java, Kotlin, Rust but not limited to these.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus dot org</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99874GSoC/2024/Ideas2024-02-03T00:47:58Z<p>Tiar: /* Krita ~ 90h ~ */ Fill in information about 90h projects in Krita</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
=== Project: Harden sddm-kcm ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' Some C++/Unix/polkit knowledge is welcome.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
'''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).<br />
<br />
'''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).<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
===== => Project: Saving curves =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, UI<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''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]<br />
<br />
===== => Project: Precision and new units in guides =====<br />
'''Brief explanation''': Users should be able to edit guides by entering the new value, and they should allow more units than just pixels.<br />
<br />
'''Expected results''': Ditto.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': [https://bugs.kde.org/show_bug.cgi?id=376943]<br />
<br />
===== => Project: Merging masks =====<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': [https://bugs.kde.org/show_bug.cgi?id=380141 ]<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Selection Action Bar =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: New option in Color Sampler: =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Waveform in animation track =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Summary frames on groups =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': <br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
'''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. <br />
<br />
'''Expected results''': A feature in the Pixel Engine working as described<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Feature request link''': https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629<br />
<br />
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html<br />
<br />
<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
===== => Project (Advanced): Ribbon Brush =====<br />
<br />
'''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]<br />
<br />
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).<br />
<br />
'''Expected results''': Fully usable brush tip or brush engine<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== Implement a Computer Opponent for a Mancala Game ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A good computerized opponent<br />
<br />
'''Knowledge Prerequisite:''' Some programming background in a compiled language such as C, C++, Java, Kotlin, Rust but not limited to these.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus dot org</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99873GSoC/2024/Ideas2024-02-02T23:40:27Z<p>Tiar: /* ~ 90h ~ */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
=== Project: Harden sddm-kcm ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' Some C++/Unix/polkit knowledge is welcome.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
'''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).<br />
<br />
'''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).<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
===== => Project: Saving curves =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Precision and new units in guides =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Merging masks =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Selection Action Bar =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: New option in Color Sampler: =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Waveform in animation track =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Summary frames on groups =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': <br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
'''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. <br />
<br />
'''Expected results''': A feature in the Pixel Engine working as described<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Feature request link''': https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629<br />
<br />
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html<br />
<br />
<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
===== => Project (Advanced): Ribbon Brush =====<br />
<br />
'''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]<br />
<br />
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).<br />
<br />
'''Expected results''': Fully usable brush tip or brush engine<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== Implement a Computer Opponent for a Mancala Game ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A good computerized opponent<br />
<br />
'''Knowledge Prerequisite:''' Some programming background in a compiled language such as C, C++, Java, Kotlin, Rust but not limited to these.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus dot org</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99860GSoC/2024/Ideas2024-01-31T22:22:05Z<p>Tiar: /* Krita */ Filling in details about the projects</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Saving curves =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Precision and new units in guides =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Merging masks =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': TBD<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Selection Action Bar =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: New option in Color Sampler: =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Waveform in animation track =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Summary frames on groups =====<br />
'''Brief explanation''': <br />
<br />
'''Expected results''': <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': <br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
'''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. <br />
<br />
'''Expected results''': A feature in the Pixel Engine working as described<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Duration:''' ~175h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Feature request link''': https://krita-artists.org/t/pixel-perfect-line-setting-for-pixel-art-brushes/42629<br />
<br />
'''Technical details link''': https://rickyhan.com/jekyll/update/2018/11/22/pixel-art-algorithm-pixel-perfect.html<br />
<br />
<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
===== => Project (Advanced): Ribbon Brush =====<br />
<br />
'''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]<br />
<br />
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).<br />
<br />
'''Expected results''': Fully usable brush tip or brush engine<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, math<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99859GSoC/2024/Ideas2024-01-31T21:06:21Z<p>Tiar: Foundation for Krita GSOC ideas</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2023/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation (2-5 sentences)<br />
:*the expected size of the project (small-90 hours, medium-175 hours or large-350 hours)<br />
:*the expected results<br />
:*pre-requisites for working on your project (skills required/preferred)<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
:*if possible, an easy, medium or hard rating of the project<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
=== Project: Something that you're totally excited about ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
'''Difficulty:''': Easy, medium or difficult project<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
=== Python bindings for KDE Frameworks ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Make it easier to build Python apps with Qt<br />
<br />
'''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<br />
<br />
'''Duration:''' Flexible depending on the amount of frameworks we want to cover during this GSoC.<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
=== Port Arianna to Foliate-js ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' A nice and modern epub renderer for Arianna<br />
<br />
'''Knowledge Prerequisite:''' Javascript knowledge and minimal C++ knowledge to build the project<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
=== Project: Adding support for multiple numeral system in GCompris ===<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Ability to change numeral system and change it on all the code.<br />
<br />
'''Knowledge Prerequisite:''' Basics on Javascript and C++<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''': Easy<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== Project: Work on one or more KDE Connect tasks ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' KDE Connect is a desktop and phone app that lets you devices communicate. https://kdeconnect.kde.org/<br />
<br />
'''Expected results:''' Work on some of the tasks detailed here: https://invent.kde.org/network/kdeconnect-meta/-/issues<br />
<br />
'''Knowledge Prerequisite:''' The desktop app is written in C++/Qt, the Android app in Java & Kotlin, and the iOS app in Swift.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
<br />
<br />
==== ~ 90h ~ ====<br />
===== => Project: Averaged/Mixed Color Selector =====<br />
<br />
===== => Project: Saving curves =====<br />
<br />
===== => Project: Precision and new units in guides =====<br />
<br />
===== => Project: Merging masks =====<br />
<br />
==== ~ 175h ~ ====<br />
<br />
===== => Project: Onion Skin Shift & Trace =====<br />
<br />
===== => Project: Selection Action Bar =====<br />
<br />
===== => Project: New option in Color Sampler: =====<br />
<br />
===== => Project: Waveform in animation track =====<br />
<br />
===== => Project: Summary frames on groups =====<br />
<br />
===== => Project: Improve Compositions Docker's Batch Export Features =====<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': <br />
<br />
<br />
===== Project: Pixel Perfect Hand-drawn Lines =====<br />
<br />
<br />
==== ~ 350h ~ ====<br />
<br />
===== => Project: Extend Arrange Docker for layers plus snapping =====<br />
'''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.<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350h<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
===== Project (Advanced): Ribbon Brush =====</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2023/Ideas&diff=95764GSoC/2023/Ideas2023-02-08T04:07:53Z<p>Tiar: /* Ideas */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2022/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
=== Sample project ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
<br />
===Kalendar===<br />
<br />
==== Project: Calendar Invitation ====<br />
<br />
'''Brief explanation:''' The goal is to make it possible to send calendar invitation from Kalendar and also handle incoming invitations. This includes showing the free busy information from the attendees. Part of this features are already implemented in the C++ core but needs to be hooked up in the UI and others will require more work. <br />
<br />
'''Expected results:''' Being able to manage all your meetings with Kalendar and make sure this is unit tested :)<br />
<br />
'''Duration:''' ~350 hours<br />
<br />
'''Knowledge Prerequisite:''' C++ is highly recommended, this is a complex code base<br />
<br />
'''Mentor:''' Carl Schwan and Claudio Cambra (contact us in #kalendar:kde.org on Matrix)<br />
<br />
==== Project: Improved multiplatform support ====<br />
<br />
'''Brief explanation:''' Kalendar works great on Linux, but due to our dependency tree it is tricky to get it to build on Windows, and we do not have any current builds for macOS. For this project you will work on improving our support for either or both of these platforms and helping them become first class citizens for Kalendar. This will likely involve working on related projects like Akonadi.<br />
<br />
'''Expected results:''' Working daily builds of Kalendar on Windows and/or macOS, depending on chosen project duration.<br />
<br />
'''Duration:''' ~175 hours for one platform or ~350 hours for both platforms<br />
<br />
'''Knowledge Prerequisite:''' C++ and CMake will be used extensively<br />
<br />
'''Mentor:''' Claudio Cambra and Carl Schwan (contact us in #kalendar:kde.org on Matrix)<br />
<br />
==== Project: Mail integration ====<br />
<br />
'''Brief explanation:''' The goal is to make Kalendar not just a great calendaring application, but also a great mail application. We have basic email lists and a basic viewer working, but there is a huge amount of work still to do here: threading, editing, sending, and a lot more. A lot of this will not have to be done from scratch thanks to Akonadi (i.e. email retrieval and sending), but a lot of it will (i.e. threading).<br />
<br />
'''Expected results:''' Kalendar should be a nice mail app :)<br />
<br />
'''Duration:''' ~350 hours<br />
<br />
'''Knowledge Prerequisite:''' C++ is required, QML will be needed but can be learned on the go if one has some JS experience<br />
<br />
'''Mentor:''' Carl Schwan and Claudio Cambra (contact us in #kalendar:kde.org on Matrix)<br />
<br />
==== Project: Implement calendar availability ====<br />
<br />
'''Brief explanation:''' The short version is that you will need to implement [https://www.rfc-editor.org/rfc/rfc7953 RFC 7953] in Kalendar. The long version is that this availability extension definde by this RFC allows to define available and unavailable time periods. This is then helpful when trying to schedule a meeting with someone (see above tasks) as you will then be able to see then and avoid scheduling a meeting at that time. Implementation you will first need to add support for this in KCalendarCore for it and then expose this to the user interface so that user can modify their availability.<br />
<br />
'''Expected results:''' Being able to configure my availability in Kalendar<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Knowledge Prerequisite:''' C++ and QML is recommended<br />
<br />
'''Mentor:''' Carl Schwan and Claudio Cambra (contact us in #kalendar:kde.org on Matrix)<br />
<br />
==== Project: Accessibility improvements ====<br />
<br />
'''Brief explanation:''' It is a general KDE goal to make our applications accessible to everyone, including those who may require using their computers with keyboard navigation and screen readers. Kalendar needs a lot of work in this regard, particularly regarding navigation within the calendar views and around the application. <br />
<br />
'''Expected results:''' Keyboard navigation throughout the entirety of Kalendar is expected, as well as use with screen readers. Further ideas for accessibility-related improvements are a big plus.<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Knowledge Prerequisite:''' QML will be required for this task, and you will likely need to use some C++ too.<br />
<br />
'''Mentor:''' Claudio Cambra (contact me in #kalendar:kde.org on Matrix)<br />
<br />
<br />
=== Okular ===<br />
'''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. [mailto:okular-devel@kde.org Contact] the Okular developers.'''<br />
<br />
==== Project: Okular user interface for e-ink tables (PineNote) ====<br />
<br />
'''Brief explanation:''' e-ink tables are special given their "low" refresh rate.<br />
<br />
We would need to create a new Okular user interface (based either in the mobile or the dekstop one) to accommodate for the unique features of those kind of displays.<br />
<br />
We will probably arrange to get a device loaned if someone gets selected for this project.<br />
<br />
'''Expected results:''' A new Okular user interface that works well with e-ink tablets.<br />
<br />
'''Knowledge prerequisite:''' C++, probably QML.<br />
<br />
'''Duration:''' 350 hours.<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
<br />
==== Project: Improve Okular for Android ====<br />
<br />
'''Brief explanation:''' Okular has an Android version it needs some improvements.<br />
<br />
Poppler, the library that Okular uses for PDF rendering is missing a "find me a font given a font name" backend for Android. We should use new new Font API introduced in Android API 29 to do that.<br />
<br />
The Icons in Okular-Android are not being rendered, there is something in KDE Frameworks interfering.<br />
<br />
You should have an Android device with Android >= 10 for testing<br />
<br />
'''Expected results:''' New Font API in poppler and icon rendering fixed.<br />
<br />
'''Knowledge prerequisite:''' C++<br />
<br />
'''Duration:''' 175 hours.<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
===Sustainability===<br />
<br />
==== Project: Measuring Energy Usage Remotely with Online Portal ====<br />
<br />
'''Brief explanation:''' The goal of this project is to create an online portal that allows developers to remotely access and control the energy measurement lab at KDAB Berlin, enabling them to upload Standard Usage Scenario scripts and obtain data from the power meter.<br />
<br />
The related issue to this project : https://invent.kde.org/teams/eco/sustainable-software-goal/-/issues/3<br />
<br />
'''Expected results:''' Developers can upload Standard Usage Scenario scripts and obtain data from the power meter remotely.<br />
<br />
'''Knowledge Prerequisite:''' React/Django(Any web framework), Networking/Knowledge of tunneling, Task scheduling and Energy Measurement process.<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Mentor:''' Joseph P. De Veaugh-Geiss (@joseph:kde.org<br />
), Volker Krause(@vkrause:kde.org)<br />
<br />
<br />
===digiKam===<br />
<br />
'''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.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://docs.digikam.org/en/index.html digikam Documentation]<br />
'''<br />
<br />
==== Project: Improve Items Properties Management ====<br />
<br />
'''Brief Explanation''': the goal of this project is to improve the Items properties management. digiKam Properties (as Tags, Color Labels, Rating, Pick Labels, etc.) and Metadata entries (as Exif, Iptc, and Xmp tags) must be copiable between one item to other ones. Drag and drop and clipboard key features must be supported to make these operations. For the copiable Metadata entries, a preferred list of tags must be configurable to simplify workflow users.<br />
<br />
'''Expected Results''': <br />
<br />
Provide new options to copy digiKam properties or metadata entries between items. Write unit-tests, and documentation.<br />
<br />
'''Bugzilla Entries''': <br />
<br />
* [https://bugs.kde.org/show_bug.cgi?id=412343 Allow to apply the previously assigned tag to a new image]<br />
* [https://bugs.kde.org/show_bug.cgi?id=155384 Easily copy properties from one image to another one]<br />
<br />
'''Duration''':<br />
175 hours<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt API, GUI, CMake, metadata, database<br />
<br />
'''Mentors''': Thanh Trung Dinh (dinhthanhtrung1996@gmail.com), Maik Qualmann (metzpinguin@gmail.com), and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
<br />
==== Project: Add Automatic Tags Assignment ====<br />
<br />
'''Brief Explanation''': the goal of this project is to assign automatically a tags to items by contents analysis using deep learning. Places, Animals, Plants, Scene Type, Events, etx, must be recognized and corresponding keywords must be generated to be be stored in database and assigned to items. This kind of feature must be available as Maintenance tool, Batch Queue Manager tool, or from Captions sidebar.<br />
<br />
'''Expected Results''': <br />
<br />
Provide new tool for auto assignment of Tags to items. Write unit-tests, and documentation.<br />
<br />
'''Bugzilla Entries''': <br />
<br />
* [https://bugs.kde.org/show_bug.cgi?id=440582 Detecting black & white image]<br />
* [https://bugs.kde.org/show_bug.cgi?id=416988 Objects / Forms / Monuments / Context detection and recognition using Deep Learning]<br />
<br />
'''Duration''':<br />
175 hours<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Depp Learning, OpenCV, Qt API, GUI, CMake, metadata, database<br />
<br />
'''Mentors''': Thanh Trung Dinh (dinhthanhtrung1996@gmail.com), Maik Qualmann (metzpinguin@gmail.com), and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
==== Project: Add Benchmarks to the Krita executable ====<br />
<br />
'''Brief explanation:''' currently, to run benchmarks, people have to have a build from source. To see whether particular hardware gives a problem, we should add a function that generates a benchmark file complete with all hardware and OS info as well as what is being done. This should be separate both from the debug output and the krita log.<br />
<br />
<br />
'''Expected results''': integration of all benchmarks that currently run standalone from the command line into Krita. A dialog to select which benchmarks to run, and the output available after running the benchmark as a file and shown inside the benchmark dialog.<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
<br />
==== Project: Texture Each Dab instead of the whole Stroke ====<br />
<br />
'''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<br />
<br />
<br />
'''Expected results''': Texture is applied only on brush dabs. See https://bugsfiles.kde.org/attachment.cgi?id=135342<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
<br />
==== Project: Add film-like adjustment ====<br />
<br />
'''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. Note: you will need to do quite a bit of research first. Link: https://bugs.kde.org/show_bug.cgi?id=385845<br />
<br />
<br />
'''Expected results''': A new filter with Film-like adjustment.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Wolthera van Hövell<br />
<br />
==== Project: Adding support for high-channel depth brush tips ====<br />
<br />
'''Brief explanation''': Currently, brush tips are 8 bits and based on QImage objects. With the advent of 16 bit/channel and 32 bit/channel support in QImage, we can start supporting higher bit depth brush tips. The 16 bit/channel GBR format from Cinepaint is not so relevant: we should support EXR and PNG for predefined brush tips and extend the autogenerated brush tips to support higher channel depths as well.<br />
<br />
'''Expected results''': A gui to select the channel depth when creating brush tips, Loading of high-channel depth brush tips, Support for high-channel depth brush tips when painting<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Halla rempt<br />
<br />
==== Project: Extend Arrange Docker to support alignment and distribution of Layers ====<br />
<br />
'''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.<br />
<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': TBD<br />
<br />
==== Project: "Enter Group" and "Vector Pattern" GUI functionality for Krita vectors ====<br />
<br />
'''Brief explanation''': Currently, to modify grouped shapes the user have to always ungroup them. The goal of the project is to implement a UIX for modifying the shapes inside the group without ungrouping them (see Inkscape). The user should be able to "enter" a group, which would limit his actions only to the shapes inside a selected group (perhaps, shapes outside the group should also be grayed-out?). <br />
<br />
The feature is tightly related to the "SVG Vector Patterns" functionality. Krita can already render vector patterns perfectly fine, but there is no GUI for creating/modifying them. Pattern fills should be editable from the shape editor tool option widget.<br />
<br />
<br />
'''Expected results''':<br />
* The user can Enter/Leave group and modify shapes inside it without ungrouping<br />
* Shapes outside the currently entered group are grayed-out (disputable?)<br />
* The user can create/modify vector patterns using Tool Options docker of DefaultTool (see KoFillConfigWidget)<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Improve texture editing pipeline and add DDS file format ====<br />
<br />
'''Brief explanation''': It would be nice to have support for DDS textures file format, which is rather popular among game developers. There are also a lot of nice small features which could improve texture creator's workflow a lot: https://phabricator.kde.org/T12767<br />
<br />
'''Expected results''':<br />
* Krita can load and save DDS textures<br />
* Mipmap generation GUI<br />
* cubemaps, 3D-textures, texture arrays editing GUI <br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Wolthera van Hövell<br />
<br />
==== Project: Per-document resources docker ====<br />
<br />
'''Brief explanation''': Since Krita 5, Krita files can contain resources (brushes, gradients, palettes, etc.) that are specific for a certain document. This project entails creating a new docker that shows those resources and that allows adding and removing those resources from a document. If time permits, the document information dialog should also show the per-document resources.<br />
<br />
'''Expected results''': A new docker that shows the document's resources<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Halla Rempt<br />
<br />
==== Project: Clipping Masks ====<br />
<br />
'''Brief explanation''': Users are asking for clipping mask functionality that is compatible with Photoshop. This project entails implementing loading and saving clipping masks to and from PSD files and KRA files, adding a tool to create and edit clipping masks and writing documentation for the manual. See https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/<br />
<br />
'''Expected results''': Photoshop-compatible clipping masks<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Action Recorder ====<br />
<br />
'''Brief explanation''': Krita used to have an action recorder: a system that would record all the user's actions, like painting, applying a filter and so on into a macro file that could be replayed. This system was disabled many years ago. You would need to design a generic system that integrates with Krita's 'strokes' framework and that would save all the user's actions to such a macro file, and then be able to replay this, both at native speed and at slowed-down speed. Note that this is different from the existing recorder which writes frames from the image's state to to an animation file.<br />
<br />
'''Expected results''': a working recorder and playback functionality<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Generic Layer Tagging====<br />
<br />
'''Brief explanation''': The layer properties dialog and layer docker should be extended with support for tagging. There should be a number of default tags, but the set of tags should be extensible. There should also be defined a number of default operational meanings for tags, like "do not render this layer to an exported image" for a "Draft" tag.<br />
<br />
'''Expected results: A tagging system for layers'''<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor:''' Halla Rempt<br />
<br />
==== Project: Improve Compositions Docker's Batch Export Features ====<br />
<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Eoin O'Neill<br />
<br />
<br />
===Community Health===<br />
<br />
==== Project: Improve Mining Workflow and/or Create A Qt Application for Monitoring Open Source Project Community Health ====<br />
<br />
'''Brief explanation:''' Community health has featured in a number of presentations related to KDE including a [https://carlschwan.eu/2021/04/29/health-of-the-kde-community/ blog post] and an [https://ervin.ipsquad.net/blog/2020/01/28/christelle-zouein-current-state-of-comdaan/ Akademy presentation]. There are a number of tools for monitoring community health including [https://framagit.org/ervin/ComDaAn ComDaAn] and [https://github.com/gotec/git2net Git2net]. Most of these tools do network analysis on repository information. Related tools include [https://apps.kde.org/kgraphviewer/ KGraphViewer] and [https://snap.stanford.edu/snap/index.html SNAP]. [https://rkward.kde.org/ RKward] could also be helpful.<br />
<br />
'''Expected results:''' Easier monitoring of KDE projects and open source projects KDE depends on.<br />
<br />
'''Duration:''' ~350 hours<br />
<br />
'''Knowledge Prerequisite:''' C++ is highly recommended, but other languages welcome. Interest in data mining, reproducible workflows<br />
<br />
'''Mentor:''' Benson Muite benson_muite@emailplus.org<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Duration:''' Mention one of ~175 or ~350 hours of effort necessary to finish the project. Use only one of these two project classes and don't come up with other numbers here.<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2022/Ideas&diff=93940GSoC/2022/Ideas2022-04-16T12:34:17Z<p>Tiar: /* Project: A Comic Book Frame Layer Type */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2021/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*expected effort to finish the project (either ~175 or ~350 hrs)<br />
:*your name and email address for contact (if you're willing to be a mentor) <br />
<br />
'''**Ideas with no mentors listed and their contact info will be removed**'''<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Duration:''' Mention one of ~175 or ~350 hours of effort necessary to finish the project. Use only one of these two project classes and don't come up with other numbers here.<br />
<br />
'''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 [https://matrix.to/#/#kde-soc:kde.org #kde-soc:kde.org] on matrix.<br />
<br />
===digiKam===<br />
<br />
'''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.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://www.linkedin.com/groups/12186015/ LinkedIn Group]<br />
* [https://web.libera.chat/ #digikam IRC channel on irc.libera.chat]<br />
'''<br />
<br />
==== Project: New plugin to process OCR ====<br />
<br />
'''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:<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=117629<br />
<br />
'''Expected Results''': <br />
<br />
Provide a new optional Generic Tesseract based DPlugin available in digiKam and Showfoto to run OCR automatically. Write unit-tests, and documentation.<br />
<br />
'''Duration''':<br />
175 hours<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt5 and Qt6 API, Tesseract, CMake, OCR Image Processing<br />
<br />
'''Mentors''': Thanh Trung Dinh (dinhthanhtrung1996@gmail.com), Minh Nghĩa Dương (minhnghiaduong997@gmail.com), Maik Qualmann (metzpinguin@gmail.com), and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
==== Project: Improve Image Quality Sorter with Neural Network ====<br />
<br />
'''Brief Explanation''': digiKam has powerful feature 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 are revised in 2021 and give good enough result but we can add new criteria of quality based on Neural Network analysis, as for ex to detect the composition of image.<br />
<br />
'''Expected Results''': <br />
<br />
Provide an update of Image Quality processing using OpenCV DNN engine. Write unit-tests, and documentation.<br />
<br />
'''Duration''':<br />
175 hours<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt5 and Qt6, DNN, OpenCV, Image Processing<br />
<br />
'''Mentors''': Thanh Trung Dinh (dinhthanhtrung1996@gmail.com), Minh Nghĩa Dương (minhnghiaduong997@gmail.com), Maik Qualmann (metzpinguin@gmail.com), and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
==== Project: Port Continuous Integration/Deployment to Gitlab/Craft DevOp Infrastructure and Notarize Bundles for Stores ====<br />
<br />
'''Brief Explanation''': digiKam use KDE/Jenkins to process Continuous Integration for Linux/BSD target. Windows and MacOS target do not work. With the recent migration to Gitlab, DevOps gain simplicity and become more powerful. The goal of this project is:<br />
<br />
* Prepare Craft infrastructure to handle digiKam and all required dependencies (this is more and less already done as other application as Krita already build with Craft).<br />
* Setup Continuous Integration and Continuous Deployment authorizations with Gitlab/Craft.<br />
* Compile digiKam from MacOS and Windows using CI.<br />
* Fix compilation with XCode and VisualC++ if necessary using CI.<br />
* Configure the signature of bundles.<br />
* Configure the application rights under MacOS and Windows (access to camera device, access to disks).<br />
* Construct the bundles.<br />
* Test if all is fine at run time on target computers.<br />
* Deploy the bundles to the Windows and MacOS stores (Kate editor do it already).<br />
<br />
Relevant bugzilla entries are listed below:<br />
<br />
* https://bugs.kde.org/show_bug.cgi?id=398582<br />
* https://bugs.kde.org/show_bug.cgi?id=120192<br />
<br />
Link to Craft DevOps toolkit:<br />
<br />
https://community.kde.org/Craft<br />
<br />
Mail from KDE admin about CI/CD changes with Gitlab:<br />
<br />
https://mail.kde.org/pipermail/kde-core-devel/2022-January/091542.html<br />
<br />
'''Expected Results''': <br />
<br />
Using modern Gitlab/Craft DevOps infrastructure to compile digiKam. <br />
Provide notarized bundles for Apple and Microsoft stores.<br />
<br />
'''Duration''':<br />
175 hours<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, CMake, Qt5 and Qt6, Gitlab, DevOps, Craft.<br />
<br />
'''Mentors''': Thanh Trung Dinh (dinhthanhtrung1996@gmail.com), Minh Nghĩa Dương (minhnghiaduong997@gmail.com), Maik Qualmann (metzpinguin@gmail.com), and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
=== Okular ===<br />
'''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. [mailto:okular-devel@kde.org Contact] the Okular developers.'''<br />
<br />
==== Project: Okular user interface for e-ink tables (PineNote) ====<br />
<br />
'''Brief explanation:''' e-ink tables are special given their "low" refresh rate.<br />
<br />
We would need to create a new Okular user interface (based either in the mobile or the dekstop one) to accommodate for the unique features of those kind of displays.<br />
<br />
We will probably arrange to get a device loaned if someone gets selected for this project.<br />
<br />
'''Expected results:''' A new Okular user interface that works well with e-ink tablets.<br />
<br />
'''Knowledge prerequisite:''' C++, probably QML.<br />
<br />
'''Duration:''' 350 hours.<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
<br />
==== Project: Improve Okular for Android ====<br />
<br />
'''Brief explanation:''' Okular has an Android version it needs some improvements.<br />
<br />
Poppler, the library that Okular uses for PDF rendering is missing a "find me a font given a font name" backend for Android. We should use new new Font API introduced in Android API 29 to do that.<br />
<br />
The Icons in Okular-Android are not being rendered, there is something in KDE Frameworks interfering.<br />
<br />
You should have an Android device with Android >= 10 for testing<br />
<br />
'''Expected results:''' New Font API in poppler and icon rendering fixed.<br />
<br />
'''Knowledge prerequisite:''' C++<br />
<br />
'''Duration:''' 175 hours.<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
=== KStars ===<br />
'''[https://edu.kde.org/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.'''<br />
<br />
==== Project: Observation Wizard Improvements ====<br />
'''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:<br />
# '''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.<br />
# '''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.<br />
# '''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.<br />
# '''Export''': Export the list of object to an external file or source in CSV and JSON formats.<br />
'''Expected results''': <br />
* Improved Observation Wizard Tool.<br />
* Proper integration with INDI & Ekos.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
==== Project: FITSViewer & Photometry Improvements ====<br />
'''Brief explanation''': The FITSViewer is used to display [https://fits.gsfc.nasa.gov/fits_standard.html 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:<br />
# '''Noise Calculation''': Calculate the overall Signal-to-Noise (SNR) radio for the overall image, or a specific subframe of the image.<br />
# '''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.<br />
# '''Mask Overlay''': Ability to select custom mask over stars to aid in focusing and photometry.<br />
# '''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.<br />
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.<br />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
<br />
==== Project: KStars Testing ====<br />
<br />
'''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. <br />
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.<br />
<br />
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.<br />
<br />
'''Expected results:'''<br />
* 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.<br />
* 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.<br />
* 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.<br />
* Consolidate test reports and code coverage, and automate the execution of the test plan when building.<br />
Bonus: generate videos of use cases for end-users automatically.<br />
<br />
'''Level''': beginner to intermediate<br />
<br />
'''Knowledge prerequisites''': C++, Qt, software testing and verification fundamentals<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
=== Plasma Mobile Dialer ===<br />
'''Plasma Mobile Dialer is a part of the [https://plasma-mobile.org/ Plasma Mobile] project developed by KDE. Additional details could also be found in the [https://develop.kde.org/docs/build/plasma-mobile/ developer documentation].'''<br />
<br />
==== Project: Visual voicemail support ====<br />
<br />
'''Brief explanation:''' [https://invent.kde.org/plasma-mobile/plasma-dialer/-/issues/26 KDE Gitlab issue]<br />
<br />
As described in the KDE GitLab, it is possible to reuse the so-called [https://gitlab.com/kop316/vvmd vvmd] daemon that retrieves Visual voicemail. It provides environment-agnostic [https://doc.qt.io/qt-5/qtdbus-index.html D-Bus] interfaces. The draft for the Qt wrappers is also there.<br />
The integration could be implemented as part of the [https://invent.kde.org/plasma-mobile/plasma-dialer/-/tree/master/kde-telephony-plugin-declarative org.kde.telephony] QML plugin or as a separate QML plugin. After that, the user interface could be written in QML with [https://develop.kde.org/frameworks/kirigami/ Kirigami] components library for the plasma-dialer side.<br />
The task is mostly to propose and implement an appropriate graphical user interface.<br />
<br />
'''Expected results:''' An additional tab/page for the dialer where you could listen to voicemail messages<br />
<br />
'''Knowledge prerequisites''': QML, Kirigami (mostly), C++, Qt, D-Bus IPC (to interact with the existing daemon), CMake (project build system)<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Mentor''': Alexey ([https://webchat.kde.org/#/room/#plasmamobile:kde.org KDE Web Chat]: aa13q)<br />
<br />
<br />
=== Plasma ===<br />
<br />
==== Plasma modernise system settings modules ====<br />
<br />
'''Brief explanation''': KDE is an extremely old project which has built up a lot of configuration modules (KCMs) for settings and hardware which you can see in systemsettings. Many of these have been ported to QtQuick our modern UI toolkit along with a visual refresh, but many have not. A full list can be found here: https://phabricator.kde.org/tag/plasma_kcm_redesign/ <br />
The applicant is free to choose 1-4 modules (depending on module size and complexity) to make up a full GSOC. <br />
<br />
'''Expected results'''<br />
Modules of the applicants choosing ported to QtQuick with a modern UX working flawlessly with similar feature parity.<br />
<br />
'''Duration''': 175 hours<br />
<br />
==== Plasma form factor integration of system dialogs ====<br />
<br />
'''Brief explanation''': On this project you will be improving the integration of different Plasma components into different form factors. By adopting the SystemDialog component, we will be able to integrate them visually on mobile, Big Screen and others.<br />
<br />
'''Expected results''': The SIM PIN, PolKit (i.e. admin password prompt), KWallet and Network Manager will appear native on Plasma Mobile. As a stretch goal we could work out how to also benefit from this work on Plasma Big Screen which targets TV UXs.<br />
<br />
'''Knowledge Prerequisite''': QML and C++. Knowledge of Kirigami will come in handy.<br />
<br />
'''Duration''': 175 hours<br />
<br />
Mentor: Aleix Pol Gonzalez, @apol:kde.org<br />
<br />
<br />
==== Hardware based navigation of Maliit On-screen keyboard ====<br />
<br />
'''Brief explanation''': On this project you will be improving the [https://github.com/maliit/keyboard Maliit] on-screen keyboard to allow selection of keys and other keyboard elements, via hardware input such as gamepads, analog joysticks, or arrow keys, for use in Bigscreen and similar situations.<br />
<br />
'''Expected results''': Keys, word completion, and other core features of the keyboard should be controllable from hardware input. There should be clear visual indication of what key is currently selected, selection of word suggestions, and what action pressing hardware buttons (x, y, b, a, triggers, etc…) will result in. The OSK should detect what hardware configurations are currently in use, and display or not display hints as appropriate.<br />
<br />
'''Knowledge Prerequisite''': QML and C++<br />
<br />
'''Duration''': 175 hours<br />
<br />
Mentor: Rodney Dawes [https://webchat.kde.org/#/room/#maliit:matrix.org KDE Web Chat]: dobey)<br />
<br />
=== NeoChat ===<br />
<br />
==== Spaces Support in NeoChat ====<br />
<br />
'''Brief explanation''': Spaces are used to group matrix rooms together, for example all rooms belonging to the KDE Community. The project's goal is to enable NeoChat to support spaces.<br />
<br />
'''Expected results''': NeoChat can show spaces and ideally also create and edit them<br />
<br />
'''Knowledge Prerequisite''': QML and C++<br />
<br />
'''Duration''': 350 Hours<br />
<br />
Mentor: Tobias Fella and Carl Schwan, https://matrix.to/#/#neochat:kde.org<br />
<br />
=== Kalendar ===<br />
<br />
==== Meeting management in Kalendar ====<br />
<br />
'''Brief explanation''': Kalendar currently doesn't handle many aspects of the wonderful corporate life full of meetings. We currently don't handle showing the free busy time of the participants to a meeting, we also can't let user edit their availability.<br />
<br />
'''Expected results''': Kalendar can be used to manage your meetings<br />
<br />
'''Knowledge Prerequisite''': QML and C++<br />
<br />
'''Duration''': 350 Hours<br />
<br />
Mentor: Carl Schwan and Clau Cambra, https://matrix.to/#/#kalendar:kde.org<br />
<br />
=== Krita ===<br />
<br />
'''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.<br />
<br />
* [http://www.krita.org Krita project web site]<br />
* [https://mail.kde.org/mailman/listinfo/kimageshop Mailinglist]<br />
* [https://web.libera.chat/ #krita IRC channel on irc.libera.chat]<br />
'''<br />
<br />
==== Project: Export an Image to SVG ====<br />
<br />
'''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<br />
<br />
'''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, but not the filter/fill layers.'''<br />
<br />
'''Knowledge Prerequisite''': C++. Qt. CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor:''' Wolthera van Hövell<br />
<br />
==== Project: Add Benchmarks to the Krita executable ====<br />
<br />
'''Brief explanation:''' currently, to run benchmarks, people have to have a build from source. To see whether particular hardware gives a problem, we should add a function that generates a benchmark file complete with all hardware and OS info as well as what is being done. This should be separate both from the debug output and the krita log.<br />
<br />
<br />
'''Expected results''': integration of all benchmarks that currently run standalone from the command line into Krita. A dialog to select which benchmarks to run, and the output available after running the benchmark as a file and shown inside the benchmark dialog.<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
<br />
==== Project: Texture Each Dab instead of the whole Stroke ====<br />
<br />
'''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<br />
<br />
<br />
'''Expected results''': Texture is applied only on brush dabs. See https://bugsfiles.kde.org/attachment.cgi?id=135342<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
<br />
==== Project: Add film-like adjustment ====<br />
<br />
'''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. Note: you will need to do quite a bit of research first. Link: https://bugs.kde.org/show_bug.cgi?id=385845<br />
<br />
<br />
'''Expected results''': A new filter with Film-like adjustment.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Wolthera van Hövell<br />
<br />
==== Project: Pixel-perfect ellipses ====<br />
<br />
'''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 Engine that would behave in a pixel-perfect way. Note: this is more complicated than you might think at first. Link: https://bugs.kde.org/show_bug.cgi?id=387242<br />
<br />
<br />
'''Expected results''': A way to draw a pixel-perfect ellipse using the Ellipse Tool. The new Brush Engine must also behave in a pixel-perfect way creating lines and other shapes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Ivan Yossi<br />
<br />
==== Project: Adding support for high-channel depth brush tips ====<br />
<br />
'''Brief explanation''': Currently, brush tips are 8 bits and based on QImage objects. With the advent of 16 bit/channel and 32 bit/channel support in QImage, we can start supporting higher bit depth brush tips. The 16 bit/channel GBR format from Cinepaint is not so relevant: we should support EXR and PNG for predefined brush tips and extend the autogenerated brush tips to support higher channel depths as well.<br />
<br />
'''Expected results''': A gui to select the channel depth when creating brush tips, Loading of high-channel depth brush tips, Support for high-channel depth brush tips when painting<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Halla rempt<br />
<br />
==== Project: Extend Arrange Docker to support alignment and distribution of Layers ====<br />
<br />
'''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.<br />
<br />
<br />
'''Expected results''': All the current operations available in Arrange docker could be done with the layers.<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr or ~350 hour (use only one)<br />
<br />
'''Mentor''': Agata Cacko<br />
<br />
==== Project: "Enter Group" and "Vector Pattern" GUI functionality for Krita vectors ====<br />
<br />
'''Brief explanation''': Currently, to modify grouped shapes the user have to always ungroup them. The goal of the project is to implement a UIX for modifying the shapes inside the group without ungrouping them (see Inkscape). The user should be able to "enter" a group, which would limit his actions only to the shapes inside a selected group (perhaps, shapes outside the group should also be grayed-out?). <br />
<br />
The feature is tightly related to the "SVG Vector Patterns" functionality. Krita can already render vector patterns perfectly fine, but there is no GUI for creating/modifying them. Pattern fills should be editable from the shape editor tool option widget.<br />
<br />
<br />
'''Expected results''':<br />
* The user can Enter/Leave group and modify shapes inside it without ungrouping<br />
* Shapes outside the currently entered group are grayed-out (disputable?)<br />
* The user can create/modify vector patterns using Tool Options docker of DefaultTool (see KoFillConfigWidget)<br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Improve texture editing pipeline and add DDS file format ====<br />
<br />
'''Brief explanation''': It would be nice to have support for DDS textures file format, which is rather popular among game developers. There are also a lot of nice small features which could improve texture creator's workflow a lot: https://phabricator.kde.org/T12767<br />
<br />
'''Expected results''':<br />
* Krita can load and save DDS textures<br />
* Mipmap generation GUI<br />
* cubemaps, 3D-textures, texture arrays editing GUI <br />
<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Wolthera van Hövell<br />
<br />
==== Project: Per-document resources docker ====<br />
<br />
'''Brief explanation''': Since Krita 5, Krita files can contain resources (brushes, gradients, palettes, etc.) that are specific for a certain document. This project entails creating a new docker that shows those resources and that allows adding and removing those resources from a document. If time permits, the document information dialog should also show the per-document resources.<br />
<br />
'''Expected results''': A new docker that shows the document's resources<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Halla Rempt<br />
<br />
==== Project: Clipping Masks ====<br />
<br />
'''Brief explanation''': Users are asking for clipping mask functionality that is compatible with Photoshop. This project entails implementing loading and saving clipping masks to and from PSD files and KRA files, adding a tool to create and edit clipping masks and writing documentation for the manual. See https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/<br />
<br />
'''Expected results''': Photoshop-compatible clipping masks<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Action Recorder ====<br />
<br />
'''Brief explanation''': Krita used to have an action recorder: a system that would record all the user's actions, like painting, applying a filter and so on into a macro file that could be replayed. This system was disabled many years ago. You would need to design a generic system that integrates with Krita's 'strokes' framework and that would save all the user's actions to such a macro file, and then be able to replay this, both at native speed and at slowed-down speed. Note that this is different from the existing recorder which writes frames from the image's state to to an animation file.<br />
<br />
'''Expected results''': a working recorder and playback functionality<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor''': Dmitry Kazakov<br />
<br />
==== Project: Generic Layer Tagging====<br />
<br />
'''Brief explanation''': The layer properties dialog and layer docker should be extended with support for tagging. There should be a number of default tags, but the set of tags should be extensible. There should also be defined a number of default operational meanings for tags, like "do not render this layer to an exported image" for a "Draft" tag.<br />
<br />
'''Expected results: A tagging system for layers'''<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~350 hour<br />
<br />
'''Mentor:''' Halla Rempt<br />
<br />
==== Project: Improve Compositions Docker's Batch Export Features ====<br />
<br />
'''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. <br />
<br />
'''Expected results''': Configurable export settings for the composition docker, and API improvements to allow for reuse of existing export GUI window(s). <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, CMake<br />
<br />
'''Duration:''' ~175 hr<br />
<br />
'''Mentor''': Eoin O'Neill<br />
<br />
=== KDE Connect ===<br />
<br />
'''KDE Connect is a series of apps for a wide range of platforms that provides inter-device integration such as file and clipboard sharing, remote control, battery status sharing, and more.<br />
<br />
* [https://kdeconnect.kde.org KDE Connect project web site]<br />
* [https://t.me/joinchat/AOS6gA37orb2dZCLhqbZjg KDE Connect Development Telegram Channel]<br />
* [https://community.kde.org/KDEConnect KDE Connect Community Wiki]<br />
* [https://userbase.kde.org/KDEConnect KDE Connect Userbase Wiki]<br />
* [https://invent.kde.org/network/kdeconnect-kde KDE Connect Qt/Desktop client repository]<br />
* [https://invent.kde.org/network/kdeconnect-android KDE Connect Android client repository]<br />
* [https://invent.kde.org/network/kdeconnect-ios KDE Connect iOS client repository]<br />
* [https://mail.kde.org/mailman/listinfo/kdeconnect KDE Connect mailing list]<br />
* IRC: #kdeconnect:kde.org & #kdeconnect:libera.chat<br />
'''<br />
<br />
==== Project: Porting the KDE Connect iOS app to macOS ====<br />
<br />
'''Brief explanation''': KDE Connect iOS is one of the KDE Connect client apps, written in Swift (and some Objective-C) using native Apple development frameworks. Since the frontend of the app is written in SwiftUI, it is fairly modular for the iOS codebase to be altered to also include a macOS build target, turning it into a macOS native application.<br />
<br />
The current version of KDE Connect for macOS is based on the Qt codebase, shared by the Linux, macOS, and Windows clients. However, the macOS version has remained in the “early beta” development stage since its initial development in 2018, and has seen a continuous stream of challenges:<br />
<br />
* The KDE Connect Qt client is currently written in the Qt 5 framework, which does not and likely has no plans to support the arm64 architecture on macOS, which will soon be the only architecture for new Macs going forward.<br />
* macOS updates have, on many occasions, introduced breaking changes to the D-Bus interface, breaking the app completely.<br />
* The Qt client’s interface and design language adhere much closer to the KDE Plasma desktop than the macOS design.<br />
* The Qt client uses the D-Bus, and is therefore not sandboxed, which the Mac App Store does not allow.<br />
<br />
For the reasons above (and more), this project aims to adapt the current KDE Connect iOS codebase as the de-facto KDE Connect macOS client. The project would contain the following major portions under the overarching goal of modifying the existing KDE Connect iOS codebase to add macOS as a new native target:<br />
<br />
* Test and modify existing backend APIs calls (CocoaAsyncSocket, Security, OpenSSL, background activity and general LAN capabilities, etc.) to be compatible with macOS.<br />
* Investigation is needed for the Security framework as it might have different function calls on macOS<br />
* Investigation is needed for the CocoaAsyncSocket API as its behavior with background activity and resource usage is currently untested on macOS.<br />
* Design and modify the frontend SwiftUI codebase to adhere to macOS interface design elements and conventions.<br />
* Adapt the iOS app for widescreen and window behavior support<br />
* Implement file-browser support (secondary-click menu through Finder Sync Extension, directory access, etc.)<br />
* Implement features specific to the desktop clients of KDE Connect<br />
* Use macOS accessibility API for keyboard and mouse control (implement the Remote Input Plugin)<br />
* Run Command Plugin to execute macOS actions (command line, maybe Shortcuts?)<br />
<br />
Prior to submitting your GSoC proposal, please take a thorough look around the KDE Connect iOS codebase and have some discussions with us (via the "contact" section below)!<br />
<br />
'''Expected results''': An optimized KDE Connect macOS client app, based on the KDE Connect iOS codebase<br />
<br />
'''Knowledge Prerequisite''': Swift, Objective-C, SwiftUI, Xcode, iOS, macOS<br />
<br />
'''Duration:''' Exact commitment time depends on the scope of the project and how many Plugins the project wishes to cover. Estimated to be ≈175 hours for UI + backend + non lower-level Plugins, ≈300 hours if lower-level Plugins such as remote input, presenter pointer, notification sync, etc. are included on top of the ≈175 hours project.<br />
<br />
'''Mentor:''' Lucas Wang. Reach out via the [https://t.me/joinchat/AOS6gA37orb2dZCLhqbZjg KDE Connect Development Telegram] or [https://matrix.to/#/#kdeconnect:kde.org KDE Connect Development Matrix] (bridged with Telegram).<br />
<br />
==== Project: Make KDE Connect iOS more inclusive ====<br />
<br />
'''Brief explanation''': KDE Connect is “Made for people like you. Open Source. Free to use. For any purpose. Forever.” But we’d like to extend the actively developing KDE Connect iOS client to be “for anyone” as well through the adoption of internationalization, localization, and accessibility best practices:<br />
<br />
* Other KDE Connect clients support multiple languages, but the iOS app is only available in U.S. English. Built with SwiftUI, KDE Connect iOS should be relatively easy to internationalize, but we need a way to export and send things needing translation to the KDE translation team, and import the translated material when ready. You might find [https://invent.kde.org/network/kdeconnect-ios/-/wikis/Localization this note] helpful.<br />
* iOS provides the users with a lot of configuration options and ways to interact with their devices, such as larger font sizes, VoiceOver, full keyboard navigation, and more. We have been gradually adding small changes to different parts of the app to make it support different device configurations, but it’s far from perfect or complete. A full accessibility audit and dedicated effort to make the app equally easy to use will make KDE Connect iOS better for everyone—including those who don’t use assistive technologies regularly.<br />
<br />
To learn more about accessibility and inclusion, see Apple’s resources on these subjects:<br />
<br />
* [https://developer.apple.com/videos/accessibility-inclusion/ WWDC Videos on Accessibility & Inclusion]<br />
* [https://developer.apple.com/design/human-interface-guidelines/accessibility Human Interface Guidelines on Accessibility]<br />
* [https://developer.apple.com/localization/ Developer Documentation on Localization and Internationalization]<br />
<br />
'''Expected results''': Make KDE Connect iOS more accessible to people using assistive technologies like VoiceOver and more. Internationalize KDE Connect iOS to be fully localizable into other languages and set up a workflow to import and export localizations. Note that:<br />
<br />
* You are not required to localize the app yourself, but it can be helpful to think about how we can ensure localizers have all the information/context they need.<br />
* You should be regularly communicating with KDE Connect (iOS) users to identify barriers preventing them from having a great experience with the app, check up with them to measure the effectiveness of the changes implemented and make revisions with the additional feedback received.<br />
<br />
'''Knowledge Prerequisite''': git, Swift, SwiftUI, Xcode, iOS and its accessibility technologies. Familiarity with Objective-C and SVN can be helpful but is not required.<br />
<br />
'''Duration:''' about 175 hours.<br />
<br />
'''Mentor:''' Lucas Wang. Reach out via the [https://t.me/joinchat/AOS6gA37orb2dZCLhqbZjg KDE Connect Development Telegram] or [https://matrix.to/#/#kdeconnect:kde.org KDE Connect Development Matrix] (bridged with Telegram).<br />
<br />
=== GCompris ===<br />
<br />
[https://gcompris.net/ GCompris] is a high quality educational software suite, including a large number of activities for children aged 2 to 10.<br />
<br />
==== Project: Adding new activities to GCompris ==== <br />
GCompris has recently launched its version 1.0 with multiple datasets feature. Moving forward we are looking to add more new activities to GCompris.<br />
<br />
'''Expected results''':<br />
This year we aim to add some new activities to GCompris. For example, we lack activities in the science domain (chemistry, biology) which can be proposed.<br />
We have a few ideas to propose but these are just ideas.<br />
<br />
You can have a look at our GCompris board to get some ideas about port of activities too.<br />
<br />
Programming turtle: https://phabricator.kde.org/T15272<br />
<br />
Find a number corresponding to a position on a graduated bar: https://phabricator.kde.org/T15274<br />
<br />
Adding using 10's complements to add numbers: https://phabricator.kde.org/T15276<br />
<br />
Grammatical analyses: https://phabricator.kde.org/T15277<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education.<br />
<br />
Be familiar with GCompris concept and content.<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough).<br />
<br />
Basic knowledge of QML, JavaScript would be a plus.<br />
<br />
Be able to build the Qt Quick version of GCompris.<br />
<br />
'''Application guide''':<br />
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<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on [https://webchat.kde.org/#/room/#gcompris:kde.org irc] or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Duration:''' 175 hours.<br />
<br />
'''Mentors''': Emmanuel Charruau (IRC: allon), Harsh Kumar (IRC: hadron), Deepak Kumar (IRC: deepak)<br />
<br />
==== Project: Launch activities directly in command line ==== <br />
<br />
This project aims to implement new command line tools to Gcompris.<br />
<br />
'''Expected results''': This project aims to implement functionality to launch any Gcompris activity from the command line. The users should be able to launch activities with its name from the command line. If any activity has multiple datasets they should be able to choose the settings for the multiple dataset before launching the activities.<br />
<br />
You can check more about the project details over here: https://phabricator.kde.org/T13899<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education.<br />
<br />
Be familiar with GCompris concept and content.<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough).<br />
<br />
Basic knowledge of QML, JavaScript would be a plus.<br />
<br />
Good knowledge of C++ would be required. <br />
<br />
Be able to build the Qt Quick version of GCompris.<br />
<br />
'''Application guide''':<br />
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<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on [https://webchat.kde.org/#/room/#gcompris:kde.org irc] or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Duration:''' 175 hours.<br />
<br />
'''Mentors''': Emmanuel Charruau (IRC: allon), Harsh Kumar (IRC: hadron), Deepak Kumar (IRC: deepak)</div>Tiarhttps://community.kde.org/index.php?title=GSoC/2021/Ideas&diff=91037GSoC/2021/Ideas2021-02-01T13:57:33Z<p>Tiar: /* Ideas */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2020/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
{{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.}}<br />
<br />
__TOC__<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor) <br />
<br />
** '''Ideas with no mentors listed and their contact info will be removed''' **<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
==Ideas==<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''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.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''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.<br />
<br />
<br />
<br />
===digiKam===<br />
<br />
'''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.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://www.linkedin.com/groups/12186015/ LinkedIn Group]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
* [https://webchat.kde.org/#/room/#dk-gsoc20-facesengine:kde.org #dk-gsoc20-facesengine channel on Riot kde webchat]'''<br />
<br />
==== Project: Port to Qt6 API ====<br />
<br />
'''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:<br />
* Migrate libo2 dependency to the new QtNetworkAuth framework for WebService plugins.<br />
* Port internal DImg framework to use new QImage 16 bits colors depth format.<br />
* Fix deprecated QXmlPatterns API uses.<br />
* Port AppImage builder to Qt6 with suitable ICU support. <br />
* Fix all Qt 5 Core Compatibility C++ Classes Uses (https://doc-snapshots.qt.io/qt6-dev/qtcore5compat-module.html)<br />
<br />
'''Expected Results''': <br />
<br />
Port to new API, replace deprecated, and make digiKam ready for Qt6. Write unit-tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Oauth2, CMake<br />
<br />
'''Mentors''': Maik Qualmann (metzpinguin@gmail.com) and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
==== Project: New plugin to process OCR ====<br />
<br />
'''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:<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=117629<br />
<br />
'''Expected Results''': <br />
<br />
Provide a new optional Generic Tesseract based DPlugin available in digiKam and Showfoto to run OCR automatically. Write unit-tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Tesseract, CMake, OCR Image Processing<br />
<br />
'''Mentors''': Maik Qualmann (metzpinguin@gmail.com) and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
==== Project: Port DNG converter plugin to last Abobe DNG SDK ====<br />
<br />
'''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:<br />
<br />
* https://bugs.kde.org/show_bug.cgi?id=284934<br />
* https://bugs.kde.org/show_bug.cgi?id=330920<br />
* https://bugs.kde.org/show_bug.cgi?id=381967<br />
* https://bugs.kde.org/show_bug.cgi?id=390700<br />
* https://bugs.kde.org/show_bug.cgi?id=427350<br />
* https://bugs.kde.org/show_bug.cgi?id=429119<br />
<br />
'''Expected Results''': <br />
<br />
Provide an update of DNGConverter plugin using last version of DNG DSK from Adobe. Write unit-tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, DNGSDK, CMake, RAW Image Processing<br />
<br />
'''Mentors''': Maik Qualmann (metzpinguin@gmail.com) and Gilles Caulier (caulier.gilles@gmail.com)<br />
<br />
===Kirogi===<br />
<br />
'''A Ground Control Station (GSC) application for drones with a modern mindset and codebase philosophy, the project is one of the newest one under KDE organization and we would like your help to make it the best open source GCS around!<br />
<br />
'''We are also open for new ideas, be free to send your own plan for Kirogi.<br />
<br />
'''For more information, take a look in our website: https://kirogi.org/<br />
<br />
Be in touch with:<br />
* IRC (freenode): [irc://chat.freenode.net/kde-kirogi #kde-kirogi]<br />
* Telegram: [https://t.me/kde_kirogi @kde_kirogi]<br />
* Matrix: [https://webchat.kde.org/#/room/#kirigami:kde.org #kde-kirogi:kde.org]<br />
<br />
<br />
=== Okular ===<br />
'''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. [mailto:okular-devel@kde.org Contact] the Okular developers.'''<br />
<br />
==== Project: Improve custom stamp annotation handling ====<br />
<br />
'''Brief explanation:''' Okular does display stamp annotations, but the support<br />
is somewhat incomplete. This particularly shows when trying to use stamp<br />
annotations with a custom image. For example, such annotations can be<br />
added in Okular, but they cannot be saved to the pdf file in a way<br />
that any other pdf viewer can read. Also, they will not appear on print-outs.<br />
<br />
The underlying reason for this is that Okular renders these stamps itself,<br />
rather than relying on the poppler library, which does all other pdf<br />
rendering. Goal of this project is therefore to teach poppler how to<br />
render stamp annotations, and then make Okular use that new functionality.<br />
More details can be found in the bug report [0].<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=383651<br />
<br />
'''Expected results:''' Poppler should render stamp annotations. Annotations<br />
should be printable from Okular. Custom stamps inserted via the Okular GUI<br />
should be visible in other pdf readers.<br />
<br />
'''Knowledge prerequisite:''' C++, and a bit about the pdf format.<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
<br />
=== KMyMoney ===<br />
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. <br />
<br />
==== Project: Integration of the new functionalities from the Alkimia library ====<br />
<gallery><br />
Kmymoney-alkimia-alkonlinequotewidget.png|Extended online quote support in KMyMoney 4.8<br />
Kmymoney-online-quote-addon-installer.png|Dialog for adding/updating online quote sources<br />
</gallery><br />
<br />
'''Brief explanation:''' <br />
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.<br />
<br />
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. <br />
<br />
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 [https://invent.kde.org/office/kmymoney/-/commit/6da0badcc33e756aedb524d62f49f3818efcafb6 4.8 branch]).<br />
<br />
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 [https://bugs.kde.org/show_bug.cgi?id=381517#c1|Bug 381517]).<br />
<br />
'''Expected results:''' KMyMoney 5 will have the extended support of online quotes<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, KDE programming<br />
<br />
'''Level:''' intermediate level<br />
<br />
'''Mentor:''' contact [https://mail.kde.org/mailman/listinfo/kde-finance-apps kde-finance-apps] mailing list<br />
<br />
=== KtoBlzCheck ===<br />
<br />
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.<br />
<br />
==== Project: Extend the usage of bank data support in KMyMoney ====<br />
<br />
[[File:KMymoney - New Institution Dialog.png|thumb|Current "New Institution" dialog]]<br />
[[File:Kmymoney-account-institution-tab.png|thumb|Current "Institution" tab of account dialog]]<br />
<br />
'''Brief explanation:''' <br />
<br />
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.<br />
<br />
'''Expected results:''' <br />
<br />
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.<br />
<br />
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.<br />
<br />
3. The extension or adaptation of the application documentation with the new functionality is part of this project.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, KDE programming<br />
<br />
'''Level:''' intermediate level<br />
<br />
'''Mentor:''' contact [https://mail.kde.org/mailman/listinfo/kde-finance-apps kde-finance-apps] mailing list<br />
<br />
=== KStars ===<br />
'''[https://edu.kde.org/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.'''<br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* 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.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
==== Project: Observation Wizard Improvements ====<br />
'''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:<br />
# '''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.<br />
# '''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.<br />
# '''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.<br />
# '''Export''': Export the list of object to an external file or source in CSV and JSON formats.<br />
'''Expected results''': <br />
* Improved Observation Wizard Tool.<br />
* Proper integration with INDI & Ekos.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
==== Project: FITSViewer & Photometry Improvements ====<br />
'''Brief explanation''': The FITSViewer is used to display [https://fits.gsfc.nasa.gov/fits_standard.html 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:<br />
# '''Noise Calculation''': Calculate the overall Signal-to-Noise (SNR) radio for the overall image, or a specific subframe of the image.<br />
# '''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.<br />
# '''Mask Overlay''': Ability to select custom mask over stars to aid in focusing and photometry.<br />
# '''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.<br />
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.<br />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
<br />
==== Project: KStars Testing ====<br />
<br />
'''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. <br />
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.<br />
<br />
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.<br />
<br />
'''Expected results:'''<br />
* 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.<br />
* 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.<br />
* 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.<br />
* Consolidate test reports and code coverage, and automate the execution of the test plan when building.<br />
Bonus: generate videos of use cases for end-users automatically.<br />
<br />
'''Level''': beginner to intermediate<br />
<br />
'''Knowledge prerequisites''': C++, Qt, software testing and verification fundamentals<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
===Akonadi ===<br />
<br />
The Akonadi framework is responsible for providing applications with a centralized database to store, index and retrieve the user's personal information. This includes the user's emails, contacts, calendars, events, journals, alarms, notes, etc. <br />
<br />
'''Communication:''' IRC (freenode) [irc://chat.freenode.net/akonadi #akonadi]<br />
<br />
=== GCompris ===<br />
<br />
==== Project: Adding new activities to GCompris ==== <br />
<br />
[https://gcompris.net/ 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.<br />
<br />
'''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.<br />
<br />
'''Expected results''':<br />
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.<br />
We have recently added multiple datasets to many activities so for all other activities having multiple datasets would be nice.<br />
<br />
You can have a look at our GCompris board to get some ideas about port of activities and multiple datasets too.<br />
<br />
https://phabricator.kde.org/project/view/142/<br />
<br />
https://phabricator.kde.org/T12428<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education.<br />
<br />
Be familiar with GCompris concept and content.<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough).<br />
<br />
Basic knowledge of QML, JavaScript would be a plus.<br />
<br />
Be able to build the Qt Quick version of GCompris.<br />
<br />
'''Application guide''':<br />
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<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim), Deepak Kumar (IRC: deepak_)<br />
<br />
=== Falkon ===<br />
<br />
[https://www.falkon.org/ Falkon] is a KDE web browser using QtWebEngine rendering engine, previously known as QupZilla. It aims to be a lightweight web browser available through all major platforms. This project has been originally started only for educational purposes. But from its start, Falkon has grown into a feature-rich browser.<br />
<br />
[mailto:falkon@kde.org Contact the Falkon team]<br />
<br />
=== Cantor ===<br />
'''[https://edu.kde.org/cantor/ Cantor] provides a graphical frontend for different open source computer algebra systems and scientific programming languages. [mailto:kde-edu@kde.org Contact the KDE-Edu team].<br />
<br />
[https://mail.kde.org/mailman/listinfo/kde-edu Subscribe to KDE-Edu mail list]'''<br />
<br />
=== Kdenlive ===<br />
<br />
==== Project: Basic Subtitling Support in Kdenlive ====<br />
<br />
Get in touch with the team at #kdenlive or the developer group in [https://t.me/kdenlive_dev Telegram])<br />
<br />
=== KIO FUSE ===<br />
'''KIO FUSE is a bridge between [https://invent.kde.org/frameworks/kio KIO] and [https://en.wikipedia.org/wiki/Filesystem_in_Userspace FUSE]. You can find out more on feverfew's [https://feverfew.home.blog/ blog].'''<br />
<br />
* IRC (freenode): [irc://chat.freenode.net/kde-fm #kde-fm] ping feverfew or fvogt.<br />
* Matrix: [https://webchat.kde.org/#/room/#kde-fm:kde.org #kde-fm:kde.org] ping feverfew or fvogt.<br />
<br />
==== Project: xfstests Integration ====<br />
<br />
[https://kernel.googlesource.com/pub/scm/fs/ext2/xfstests-bld/+/HEAD/Documentation/what-is-xfstests.md xfstests] is a file system regression test suite. We would like to integrate this with our current test suite.<br />
<br />
Here are some things which will help to establish a good project plan:<br />
<br />
# A [https://patchwork.kernel.org/project/linux-fsdevel/patch/20200108192504.GA893@miu.piliscsaba.redhat.com/ patch] that seems to allow easier support of FUSE filesystems.<br />
# https://github.com/rfjakob/fuse-xfstests<br />
<br />
* Gitlab Issue: [https://invent.kde.org/system/kio-fuse/-/issues/14 !14]<br />
<br />
'''Knowledge prerequisite:''' C++<br />
<br />
==== Project: Port to macOS ====<br />
<br />
Port KIO FUSE to macOS. Dolphin builds on macOS AFAIK so this project should be technically feasible.<br />
The solution is likely to involve [https://osxfuse.github.io/ osxfuse].<br />
<br />
* Gitlab Issue: [https://invent.kde.org/system/kio-fuse/-/issues/13 !13]<br />
<br />
'''Knowledge prerequisite:''' C++<br />
<br />
==== Project: Port to Windows ====<br />
<br />
Port KIO FUSE to Windows. Currently a Dolphin port is in the works, so KIO (our main dependency) is already working.<br />
There are two potential solutions:<br />
<br />
# [https://dokan-dev.github.io/#fuse-api Dokan FUSE]<br />
# A method similar to what [https://github.com/billziss-gh/sshfs-win sshfs-win] has done ([https://github.com/billziss-gh/winfsp WinFsp] and [https://cygwin.com/ Cygwin]).<br />
<br />
* Gitlab Issue: [https://invent.kde.org/system/kio-fuse/-/issues/12 !12]<br />
<br />
'''Knowledge prerequisite:''' C++<br />
<br />
=== Plasma Mobile ===<br />
<br />
=== NeoChat ===<br />
<br />
the two areas that could accept a student for GSoC are encryptions and voip support. Talk with use in #neochat:kde.org for more information about the scope of your project.<br />
<br />
'''Knowledge prerequisite:''' C++, QML (Cryptographie or GStreamer)<br />
<br />
=== Plasma-nm ===<br />
<br />
==== Better firewall support ====<br />
'''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. <br />
<br />
'''Expected result''': Plasma-nm will ask the user what firewall zone he wants to use when connecting to a new wireless network.<br />
<br />
'''Mentor''': Jan Grulich - IRC (freenode): [irc://chat.freenode.net/plasma #plasma] ping jgrulich.<br />
<br />
'''Knowledge prerequisite:''' C++, QML<br />
<br />
<br />
=== Krita ===<br />
<br />
Please contact us early - the sooner, the better.<br />
<br />
You can suggest your own project. Make sure it's correct size for your experience level and the time limit.<br />
<br />
Contact:<br />
#krita on irc.freenode.net (note that the chat's activeness might vary depending on which time it is)<br />
https://krita-artists.org/c/develop/7<br />
<br />
==== Project: Reference Images Improvements ====<br />
<br />
'''Brief explanation:'''<br />
This is a set of smaller tasks that can be done independently, all focused on one single tool: Reference Images Tool.<br />
- crop/rotate/mirror the image<br />
- apply specific filters<br />
- possibility of it working like a File Layer (updates when the file is updated on the hard drive)<br />
Links: <br />
https://bugs.kde.org/show_bug.cgi?id=396155<br />
https://bugs.kde.org/show_bug.cgi?id=405130<br />
<br />
'''Expected results:'''<br />
More feature-complete Reference Images Tool <br />
(ultimate goal: no need for external reference images tools like PureRef or the Reference Docker plugin, as expressed by our users)<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt, limitations of the current Reference Images<br />
<br />
'''Mentor:'''<br />
Please contact ''halla'' on IRC: irc.freenode.net, channel #krita<br />
<br />
==== Project: Modern/high quality scaling algorithm ====<br />
<br />
'''Brief explanation:'''<br />
Link: https://bugs.kde.org/show_bug.cgi?id=333167<br />
No- or Lo-Halo sampling method for scaling.<br />
<br />
'''Expected results:'''<br />
Good scaling algorithm<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt, basic of algorithms<br />
<br />
'''Mentor:'''<br />
Please contact ''tiar'' on IRC: irc.freenode.net, channel #krita<br />
<br />
==== Project: Export a document to SVG ====<br />
<br />
'''Brief explanation:'''<br />
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.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=404834<br />
<br />
'''Expected results:'''<br />
File -> Save, File -> Save As, File -> Export should have an option to save to SVG.<br />
A file saved into SVG should have all raster and vector content from the document.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact ''Wotlhera_laptop'' on IRC: irc.freenode.net, channel #krita<br />
<br />
==== Project: Circle in a square assistant tool ====<br />
<br />
'''Brief explanation:'''<br />
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).<br />
Link: https://bugs.kde.org/show_bug.cgi?id=405643<br />
<br />
'''Expected results:'''<br />
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.<br />
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).<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact ''Wolthera_laptop'' on IRC: irc.freenode.net, channel #krita<br />
<br />
<br />
==== Project: APNG import/export support ====<br />
<br />
'''Brief explanation:'''<br />
Implementing a way to export and import APNG animations.<br />
Link to the feature request: https://bugs.kde.org/show_bug.cgi?id=342479<br />
<br />
'''Expected results:'''<br />
Krita should be able to export animation to APNG and import frames from APNG.<br />
<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact either ''emmetpdx'' or ''eoinoneill[m]'' on IRC: irc.freenode.net, channel #krita<br />
<br />
<br />
==== Project: Texture each dab instead of a stroke ====<br />
<br />
'''Brief explanation:'''<br />
Implementing texturing brush dabs instead of texturing whole stroke.<br />
(Just like Opacity is about the whole stroke and Flow is about the opacity of just one brush dab)<br />
Link: https://bugs.kde.org/show_bug.cgi?id=375155<br />
<br />
'''Expected results:'''<br />
Texture is applied only on brush dabs. See https://bugsfiles.kde.org/attachment.cgi?id=135342<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact ''dmitryK|log'' on IRC: irc.freenode.net, channel #krita<br />
<br />
<br />
==== Project: Delete, cut, copy & paste from/to multiple layers/group ====<br />
<br />
'''Brief explanation:'''<br />
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.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=352519<br />
<br />
'''Expected results:'''<br />
Detailed explanations how each of the operations should behave are in the feature request linked above.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact ''dmitryK|log'' on IRC: irc.freenode.net, channel #krita<br />
<br />
==== Project: Add film-like adjustment ====<br />
<br />
'''Brief explanation:'''<br />
''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.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=385845<br />
<br />
'''Expected results:'''<br />
A new filter with Film-like adjustment.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact ''Wolthera_laptop'' on IRC: irc.freenode.net, channel #krita<br />
<br />
<br />
==== Project: Show thumbnails when hovering over a composition ====<br />
<br />
'''Brief explanation:'''<br />
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.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=428934<br />
<br />
'''Expected results:'''<br />
When the user hovers over the composition, the thumbnail of the composition is shown on top.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact either ''halla'' on IRC: irc.freenode.net, channel #krita<br />
<br />
==== Project: Smarter boolean operations on vectors ====<br />
<br />
'''Brief explanation:'''<br />
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.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=400521<br />
<br />
'''Expected results:'''<br />
When the user performs a boolean operation on vector shapes, the amount of nodes should be minimal.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact either ''dmitryK|log'' on IRC: irc.freenode.net, channel #krita<br />
<br />
<br />
==== Project: Pixel-perfect ellipses ====<br />
<br />
'''Brief explanation:'''<br />
In Krita, there is no way to draw a pixel-perfect ellipse using the Ellipse Tool.<br />
Most probably the appropriate solution would be to create a new type of Brush Tip that would behave in a pixel-perfect way.<br />
Link: https://bugs.kde.org/show_bug.cgi?id=387242<br />
<br />
'''Expected results:'''<br />
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.<br />
<br />
'''Knowledge Prerequisite:'''<br />
- C++, Qt<br />
<br />
'''Mentor:'''<br />
Please contact either ''ivanyossi'' on IRC: irc.freenode.net, channel #krita</div>Tiarhttps://community.kde.org/index.php?title=Krita&diff=88000Krita2020-04-10T14:30:04Z<p>Tiar: Warning about information being outdated</p>
<hr />
<div>'''Warning:''' any and all of the pages and the information below can be outdated. We don't maintain information here any more. The only up-to-date parts are Krita sprints pages which we use to manage who's going and who isn't. As of beginning of 2020, the current places where you can find correct information are:<br />
[https://docs.krita.org/ Krita Manual]<br />
[https://krita.org/ Krita Website]<br />
[https://krita-artists.org/ Krita-Artists forum]<br />
[https://forum.kde.org/viewforum.php?f=136 Krita KDE forum]<br />
#krita IRC channel on freenode (warning: you may need to register with NickServ first to be heard!)<br />
<br />
<br />
"In my 20+ year experience managing projects i learned that tools or systems don't manage anything, people do. and if people need tools they'll get them or make them" (Ton Roosendaal, on #blendercoders)<br />
<br />
== Krita Community Wiki == <br />
This Community Wiki is intended for those who are ''making'' and ''improving'' Krita, such as programmers and designers. Users of Krita can check out [https://docs.krita.org/en/tutorials.html Tutorials] and [https://docs.krita.org/en/ Krita Manual]. If you have questions, you can ask on the [https://forum.kde.org/viewforum.php?f=136 Krita Forums] or [https://krita-artists.org/ Krita-Artists forum], or hop on #krita IRC (on freenode)!<br />
<br />
== Active documents ==<br />
<br />
[https://community.kde.org/Krita/docs https://community.kde.org/Krita/docs]<br />
<br />
== Repository Information ==<br />
<br />
* 3.0: https://phabricator.kde.org/source/krita/<br />
<br />
== Build Instructions ==<br />
<br />
Please check the manual: [https://docs.krita.org/en/untranslatable_pages.html Contributors Manual]<br />
<br />
== Developer guides ==<br />
<br />
* [[Krita/Hacking | Intro to Hacking on Krita]]<br />
* [[Krita/C++11|C++11 usage guidelines for the Krita codebase]]<br />
* [[Guidelines_and_HOWTOs/API_Documentation | API Documentaion Guidelines]]<br />
* [[Guidelines_and_HOWTOs|KDE-wide Guidelines and HOWTOs]]<br />
* [[Krita/GetStartedOn | Interesting tasks to get started on]]<br />
* [[Krita/Optimization|Optimization tips and tools for Krita]]<br />
<br />
=== Procedures for common Developers tasks ===<br />
* [[MakingTarballs|Making a Source Release]]<br />
* [[Krita/MinorReleaseProcedure|Minor Release Procedure]]<br />
* [[Krita/BigMergeProcedure|Big Merge Procedure]]<br />
* [[Krita/FeatureBranchesWorkflow | Feature Branches Workflow]]<br />
<br />
=== Procedures for common Manual Writers tasks ===<br />
* [[Krita/FindingNewFeaturesToAddIntoManual|Finding New Features To Add Into Manual]]<br />
<br />
==Planning==<br />
<br />
* [https://community.kde.org/Krita/Release/Roadmap Krita Roadmap]<br />
<br />
These are goals for Krita we are working toward. <br />
<br />
* [[Krita/Animation/Overview|Krita Animation Project]]<br />
* [[Krita/Gsoc|Krita Summer of Code]]<br />
* [[Krita/Wishlist|Krita Wishlist]]<br />
* [[Krita/Project| Project ideas for student thesis]]<br />
* [[Krita/Dmitry_sponsored_work_TODO_list|Dmitry's sponsored work TODO list]]<br />
* [[Krita/KritaLimeRoadmap | Krita Lime repository Roadmap]]<br />
* [[Krita/IconsRefactoringRoadmap | Icons Refactoring Roadmap]]<br />
* [[Krita/Scripting | Ideas and use-cases for Krita scripting support]]<br />
<br />
* [[Krita/Krita3dot1releasenotes | Krita 3.0 and 3.1 release notes preparation.]]<br />
<br />
==Design documents and discussions==<br />
These are technical notes on the insides of Krita.<br />
<br />
=== Design Notes ===<br />
* [[Krita/QActions | QAction / KisAction Guidelines]]<br />
* [[Krita/OpenGL | OpenGL rendering in Krita]]<br />
* [[Krita/PluginMechanics | How Plugin Loading Works]]<br />
* [[Krita/How_To_Write_Brush_Engines | How to write brush engines]]<br />
* [[Krita/Brushes|Brushes]]<br />
* [[Krita/High_dynamic_range|High dynamic range imaging]]<br />
* [[Krita/redisplay|Redisplay]]<br />
* [[Krita/KisPainter|KisPainter and KisPaintEngine design]]<br />
* [[Krita/Metadata|Metadata framework]]<br />
* [[Krita/Brush_Color_Transformation|Brush Color Transformation]]<br />
* [[Krita/BrushEngine|Brush Engines (aka paintops)]]<br />
* [[Krita/Filter_API_Discussion_Notes|Filter API Discussion Notes]]<br />
* [[Krita/KisCanvas2_Update_Split_Reasoning|KisCanvas2 Update Split Reasoning]]<br />
* [[Krita/Transactions_Design|Transactions Design]]<br />
* [[Krita/Tile_Data_Format|Tile Data Format]]<br />
* [[Krita/KisSelection_Issues|KisSelection Issues]]<br />
* [[Krita/Krita_Shape_Layers_Design|Krita Shape Layers Design]]<br />
* [[Krita/Grayscale_Selections_Discussion_Notes|Grayscale Selections Discussion Notes]]<br />
* [[Krita/Strokes Framework|Strokes Framework]]<br />
* [[Krita/NonTool Actions Implementation|NonTool Actions Implementation]]<br />
* [[Krita/Recording System|Recording System]]<br />
* [[Krita/Undo adapter vs. Undo store|Undo adapter vs. Undo store]]<br />
* [[Krita/SelectionsMasks | KisNode (Selections, masks, layers)]]<br />
* [[Krita/Generator Layers| Generator Layers]]<br />
* [[Color management]]<br />
* [[Concept Naming Guidelines]]<br />
* [[Website Maintenance/Updates]]<br />
* [[Krita/Brush mask vectorization diagram | Brush mask vectorization diagram]]<br />
<br />
=== Guidelines ===<br />
* [[Krita/Use_Cases| Use Cases]]<br />
* [[Krita/Artists_Requirements | Artists Requirements]]<br />
* [[Krita/Usability|Usability discussion notes]]<br />
* [[Krita/Quick_sketch_Pallete|Quick-sketch Preference Palette]]<br />
* [[Krita/Community_Mockups_and_Wishlist|Community Mockups and Wishlist]]<br />
<br />
==Troubleshooting==<br />
* [[Krita/Known_problem_with_packages|Known problems with Krita in distributions]]<br />
* [[Krita/Hardware_support|Hardware support]]<br />
<br />
<br />
== Other ==<br />
<br />
* [[Krita/Inspiration|Inspiration]]<br />
* [[Krita/Photoshop_Mapping_Table | Importing of Photoshop Brushes]]<br />
<br />
== Sponsored Work ==<br />
This is an index of work sponsored by the Krita community and the Krita Foundation. Note that the Krita Foundation (Stichting Krita) has been instrumental in fundraiser efforts around Krita. The first program, executed during the 2009-2010 timeframe, allowed Lukáš Tvrdý to work full-time on Krita for 24 weeks. This made a massive difference for Krita, solving hundreds of bugs and improving performance and usability of the canvas and many brushes to the level where Krita first became ready for (semi) professional use. Find more details [[Krita/Lukas|here]].<br />
<br />
Subsequent fundraisers supported [[Krita/Dmitry|Dmitry Kazakov]] who brought openGL support to a new level and introduced advanced canvas operations like panning, mirroring and rotation and independent artist [[Krita/Animtim|Timothee Giet]] who developed the "Comics with Krita" training DVD as well as a host of other [http://krita.org/resources video tutorials on Youtube].<br />
<br />
* [[Krita/Lukas| Lukas Tvrdy]]<br />
*[[Krita/Animtim| Timothee Giet]]<br />
*[[Krita/Dmitry| Dmitry Kazakov]]<br />
*[[Krita/Ramon|Ramon Miranda]]<br />
<br />
<br />
==Meetings==<br />
* [[Krita/Sprint2019]]<br />
* [[Krita/OctoberSprint2018]]<br />
* [[Krita/Sprint2018]]<br />
* [[Krita/MiniSprint2017]]<br />
* [[Krita/Sprint2014]]<br />
* [[Krita/Sprint2011]]<br />
* [[Meetings/February 2010 Krita meeting]]<br />
* [[Meetings/Mid_2009_meeting/Krita_Notes]]<br />
* [[Krita/Akademy_2007_Meeting]]<br />
<br />
==Hardware==<br />
<br />
The Krita team has two Wacom intuos tablets, two stylusses and two art pens. They are currently with:<br />
<br />
* Lukas Tvrdy: one tablet<br />
* Sven Langkamp: one tablet<br />
* Cyrille Berger: stylus art pen<br />
<br />
==Wiki Archive==<br />
Contributors should feel free to post whatever they like here. However, documents show their age after a few years. Please keep the main page clean by copying old links into this archive section.<br />
<br />
* [[Krita/Archive | Archive]]</div>Tiarhttps://community.kde.org/index.php?title=Krita/Sprint2020&diff=87427Krita/Sprint20202020-02-02T08:00:26Z<p>Tiar: /* Attendance */</p>
<hr />
<div>= 2020 Krita Sprint =<br />
<br />
The 2020 Krita Sprint (or KritaCon) will be held in Rennes, France, in the venue of ActivDesign, 11, bis rue Jean le Hô, Rennes. The sprint will take place right after the [https://libregraphicsmeeting.org/2020/en/index.html Libre Graphics Meeting].<br />
<br />
<br />
= Blogs =<br />
<br />
= Dates = <br />
<br />
LGM: 26-29 May<br />
Sprint: 30 May to 5 June (that is the departure day, not a work day)<br />
<br />
== Reimbursements ==<br />
<br />
As soon as possible, go to:<br />
<br />
https://reimbursements.kde.org/<br />
<br />
* You only need to ask for reimbursment for your travel costs. Accomodation will be handled by Boudewijn.<br />
* KDE e.V. reimburses, not pre-imburses. If that is a problem, the Krita Foundation can help out.<br />
<br />
Use LGM for the reimbursement event.<br />
<br />
== Agenda==<br />
*<br />
<br />
==Attendance==<br />
<br />
Please put your name below if you're coming along with arrival and leave dates<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name<br />
! Arrival<br />
! Leaving<br />
!EstimatedTravel Costs<br />
!tee size<br />
!Notes<br />
|-<br />
| Boudewijn Rempt<br />
| May 25<br />
| June 5<br />
| .<br />
| XL<br />
| Will travel by train<br />
|-<br />
|-<br />
| Irina Rempt<br />
| May 29<br />
| June 5<br />
| .<br />
| XL<br />
| Will travel by train<br />
|-<br />
|-<br />
| Kuntal Majumder<br />
| May 24<br />
| June 5<br />
| 700 EUR<br />
| XS<br />
| Will visit deventer first<br />
|-<br />
|-<br />
| Rebecca Breu<br />
| May 25<br />
| June 5<br />
| -<br />
| M<br />
| -<br />
|-<br />
| Wolthera<br />
| May 25<br />
| June 5<br />
| 50~<br />
| M<br />
| Will also visit deventer first.<br />
|-<br />
|-<br />
| David Revoy<br />
| May 28<br />
| May 31<br />
| 200 EUR<br />
| XXL<br />
| -<br />
|-<br />
| Timothée Giet<br />
| -<br />
| -<br />
| -<br />
| XXL<br />
| Already in Rennes (accomodation not needed)<br />
|-<br />
|-<br />
| Emmet O'Neill<br />
| May 25<br />
| June 5<br />
| ~1400 EUR<br />
| XXL<br />
| -<br />
|-<br />
|-<br />
| Eoin O'Neill<br />
| May 25<br />
| June 5<br />
| ~1400 EUR<br />
| XL<br />
| -<br />
|-<br />
| Dmitry Kazakov<br />
| May 25<br />
| June 5<br />
| ~600 EUR<br />
| XL<br />
| -<br />
|-<br />
| Tiar<br />
| May 25<br />
| June 5<br />
| ~400 EUR<br />
| S female<br />
| -<br />
|-}</div>Tiarhttps://community.kde.org/index.php?title=Krita/High_dynamic_range&diff=83798Krita/High dynamic range2019-04-24T09:09:13Z<p>Tiar: </p>
<hr />
<div>'''Warning!'''<br />
<br />
This page is heavily outdated. To read about real HDR features that are new in Krita 4.2.0, please go to https://krita.org/en/item/krita-4-2-0-the-first-painting-application-to-bring-hdr-support-to-windows/ and learn more on https://docs.krita.org/en/<br />
<br />
----<br />
= Introduction =<br />
<br />
This page is about ideas on improving the HDR capabilities of Krita. One of the reference bug on the subject is [http://bugs.kde.org/show_bug.cgi?id=125543 #125543]. There are three issues to solve for now in Krita : Color management, LDR to HDR and tone mapping. <br />
<br />
<br />
= Color management =<br />
[[Color management]] in krita and koffice is managed by the [[pigment]] library.<br />
== File format and color spaces ==<br />
<br />
* [http://www.openexr.org openexr] is allready supported, except that the chromacity is ignored (chromacity describes a transformation between RGB and XYZ<br />
* [http://www.cineon.com cineon] is not supported, it's a logarithmic color spaces, it requires a lut wich gives the transformation between the transmitance values and rgb (see [http://www.rendernan.com rendernan] for some examples)<br />
<br />
== Color profiles ==<br />
There is currently no specification which support floating point profiles, the [http://www.color.org International Color Consortium] has just released a [http://www.color.org/ICCSpecRevision_02_11_06_Float.pdf proposition] about a revision of the specification.<br />
<br />
== How it is done in other software ?==<br />
* [http://www.openexr.com/OpenEXRColorManagement.pdf OpenEXR Color Management] is a proposal from ILM which explain their workflow. It's a proposition for importing and exporting, it's rather weak on exactly how to do this<br />
* cinepaint use icc profile for display<br />
* Adobe After Effects use icc profile internaly, for After effects there are a serie of [http://www.fxguide.com/fxtips-315.html tutorials] on the subject<br />
<br />
== Color conversion ==<br />
* color convertion should be done taking into account the exposure, that way when it would be possible to draw in the current range of exposure instead of the generic 0.0-1.0<br />
<br />
= LDR to HDR =<br />
This is the process for creating HDR image from a serie of Low Dynamic Range images, usually a scene taken with the bracketing capabilities of a digital camera:<br />
<br />
* [http://www.mpi-sb.mpg.de/resources/hdr/calibration/pfs.html pfscalibration]<br />
* [http://people.freenet.de/hsbosny/HDR_Tutorial/HDR_Tutorial-en.html LDR to HDR in cinepaint]<br />
<br />
= Tone mapping =<br />
<br />
== Automated Processes ==<br />
We should provide one or more HDR tone mapping filters a la at least pfstools, possibly other algorithms that seem useful.<br />
<br />
* [http://www.mpi-inf.mpg.de/resources/tmo/ pfstmo]<br />
* [http://www.umsl.edu/~sj550/myweb/downloads.htm gsoc 2007 about tonemapping]<br />
<br />
== Manual Process ==<br />
This is a suggested process for manual HDR mapping that would be nice to support. This process involves importing multiple exposures as separate layers into Krita. These can be "true" exposures, or different non-HDR tone-mappings of a single (usually RAW) exposure. We'll assume the latter case as the required tools are more complicated. (Multiple true exposures may require alignment, but we already have these tools.)<br />
<br />
# Begin by importing the single RAW. See [[Krita/Direct_RAW_Editing| Direct RAW editing]].<br />
# Create a clone of the layer stack after debayerisation (and probably after white balancing).<br />
#* This requires the ability to clone the layer stack at a point, so that different operations (filters, paint layers) can be applied and the results later blended together.<br />
# Apply tone-mapping to get multiple exposures. This consists of curves and hue/saturation filter layers. We have these already.<br />
# Add a channel-to-alpha filter to one exposure to convert Luma to Alpha.<br />
#* This requires a filter that can take input in an arbitrary color space, perform an implicitly color space conversion, and dump the result as an Alpha channel. Ideally this should blend that with any previous alpha channel in the stack according to the blend mode (the default "Normal" mode would simply replace any previous alpha channel). Also ideally, this filter could map to any channel; for example, copy Red to Green.<br />
# Apply filters or painting to the alpha channel as desired.<br />
#* This requires that filters can be told to operate on a single channel, in this case Alpha. That said, operations such as blur acting only on Hue (again, with implicit color space conversion being performed), sharpen acting only on Luma, etc, would be another extremely useful option. In fact this might even obviate the need for otherwise-important filters such as chromatic reduction.<br />
<br />
The end result is a composited image with fine control over the tone mapping process.<br />
<br />
An example would be a landscape. Typically, the sky will be very bright compared to the other elements. One might create two tone mappings to work with; one that maximizes the detail in the sky (which will typically produce a very dark foreground), and one that maximizes the visibility of the other elements (which will typically produce a heavily washed-out sky). These would be combined by mapping the sky-exposure Luma to alpha, and applying a curve to cut the dark (foreground) areas to full transparency while boosting the sky, including darker parts thereof, to high opacity. Because foreground elements tend to be extremely bright around the edges which have sky behind them, applying some blur may be desired to prevent fine details (such as leaves on trees) from being lost. In order to achieve this, we need the three operations bullet-pointed above.<br />
<br />
= Painting/Drawing/Editing in HDR =<br />
<br />
* [http://graphics.cs.ucf.edu/HDRPaint/index.php HDR Paint]<br />
* [http://www.cs.toronto.edu/~hasinoff/aperture/ Variable-Aperture Photography]<br />
<br />
= Various other things related to HDR or image blending =<br />
* [http://www.guillermoluijk.com/article/nonoise/index_en.htm zero noise]</div>Tiarhttps://community.kde.org/index.php?title=Krita/Dmitry_sponsored_work_TODO_list&diff=83797Krita/Dmitry sponsored work TODO list2019-04-24T08:42:52Z<p>Tiar: Added warning</p>
<hr />
<div>'''Warning!'''<br />
<br />
This page is outdated. To learn what Krita deveropers are doing now, go to https://phabricator.kde.org/project/profile/8/ or use one of the contact methods explained here: https://docs.krita.org/en/contributors_manual/community.html<br />
<br />
== TODO List ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Notes<br />
|-<br />
{{FeatureDone|Bounded pooler implementation|}}<br />
{{FeatureTodo|Move the stress tests to a separate folder. Make them run on cruncher1 regularily|}}<br />
{{FeatureTodo|Optimize mask generation code with some complex maths|}}<br />
{{FeatureTodo|ROI for the scheduler|}}<br />
{{FeatureTodo|Multithreading subsystem for tools|}}<br />
{{FeatureTodo|Remove mutexes from KisTile. Try to avoid all the writes to the shared memory areas to reduce contestion|}}<br />
{{FeatureTodo|Fix KisWeakSharedPointer to return null, instead of wrong pointer in Release mode|needs discussion}}<br />
{{FeatureTodo|New API for paintops to be able to save some data between stokes|}}<br />
{{FeatureDone|Avoid creation of big QImages|}}<br />
{{FeatureDone| bug 266687|in selections branch}}<br />
{{FeatureDone| bug 265528|}}<br />
{{FeatureDone| clean up KisLayerBox|}}<br />
{{FeatureDone| KisSelection refactoring|in selections branch}}<br />
{{FeatureDone| KisSelectionManager clean up and fixes|in selections branch, needs review}}<br />
<br />
|}</div>Tiarhttps://community.kde.org/index.php?title=Krita/Wishlist&diff=83796Krita/Wishlist2019-04-24T08:42:13Z<p>Tiar: Added warning</p>
<hr />
<div>'''Warning!'''<br />
<br />
This page is outdated. To learn what Krita deveropers are doing now, go to https://phabricator.kde.org/project/profile/8/ or use one of the contact methods explained here: https://docs.krita.org/en/contributors_manual/community.html<br />
<br />
== Improve stamp-based brushes ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|Predefined Brushes should be resizable (in pixels).|}}<br />
{{FeatureTodo|Resurrect the Custom Brush dialog : The user should be able to select a part of the image and add it to Predefined Brushes. He should also be able to organize, delete, load and save brush dabs easily [1].|}}<br />
{{FeatureInProgress|Photoshop brush import (there is a dolphin plugin that shows .abr brush previews, maybe it could be useful ?[2]).|LukasT|}}<br />
|}<br />
<br />
== Improve basic tools/features ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureDone|Display a gradient preset that use foreground/background, and foreground/alpha 0.|slangkamp}}<br />
{{FeatureTodo|Make it easier to create new gradients (ideally it would use the same docker as the vector gradients).|}}<br />
{{FeatureTodo|Allow to move selections.|}}<br />
{{FeatureInProgress|Improve the transform tool (when you drawn something bad, the transform tool is often the last solution before redrawing everything).|mpeg}}<br />
{{FeatureDone|Remove the "hidden" layer property change from the undo stack (if you just want to compare a new version to an old version, you will have to undo several times).|}}<br />
|}<br />
<br />
== Faster workflow ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureDone|- Modifier key need to be used more<br />
* for selection tools : to switch easily between add/replace/intersect modes.<br />
* for paint tools : pan, color pick, change the brush diameter.|}}<br />
{{FeatureDone|Features that are tools in other apps are composite mode or paintops in Krita[3]. We should make sure that it is as easy and as fast to select them than in others apps. For example, if I want to erase with the current brush:<br />
*in krita I must click the mode combobox, go down in the drop down menu, and select "Erase" (3 clicks).<br />
*in photoshop, I would just click the erase tool or hit the "e" key.<br />
I suggest to make it possible to assign a shortcut to composite modes.|}}<br />
{{FeatureTodo|'''Junior Job:''' use more sliders in brush settings.|}}<br />
{{FeatureTodo|'''Junior Job:''' remove a selection by a single click outside the selection.|}}<br />
{{FeatureDone|'''Junior Job:''' Call the Edit>Clear action when the Del. key is pressed.|}}<br />
{{FeatureTodo|'''Junior Job:''' move along an axis with modifiers.|}}<br />
|}<br />
<br />
== Backward compatibility ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|With brush presets, the user will expect than his brush work the same between two versions. If it's not garanteed, the brush engine should be labeled as experimental or unstable.|}}<br />
|}<br />
<br />
== better koffice integration ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|Use the same dockers for flake and pixel tool when possible : gradient creation, color selector...|}}<br />
|}<br />
<br />
==learning curve ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|show units in spinbox and curve widgets.|}}<br />
{{FeatureTodo|'''Junior Job:''' show help about tool and paintops in the status bar.|}}<br />
{{FeatureTodo|'''Junior Job:''' rename some features with better names (scale to new size -> scale image, etc..).|}}<br />
{{FeatureTodo|add a search input box. It would highlight every menu items or docker that contain the text.|}}<br />
{{FeatureTodo|write documentation about the Krita "spirit" (why the line tool is a tool, what is the difference between a generator and a filter, etc...and why it is better :) )|}}<br />
|}<br />
<br />
== stylus/tablet pc ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|With a stylus, it's hard to click, but easy to drag&drop. We could keep existing widgets, but add a feature that increment or decrement the value depending on how much the button is dragged.|}}<br />
|}<br />
<br />
== to gain space ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|replace radio buttons by combo box.|}}<br />
{{FeatureTodo|replace some label+checkbox by button+icons.|}}<br />
{{FeatureTodo|use icons instead of label in docker tabs, don't display two labels when docker are tabbed (take a look at Gimp's dockers).|}}<br />
{{FeatureTodo|make dockers reduce into a pop-up-button (good for tablet PC users, or to use krita as sketch app).|}}<br />
{{FeatureTodo|make item of the Brush and Stuff toolbar a docker. (that allows users to remove the toolbar completely, and make the brush dialog contextual to the tool like other features).|}}<br />
|}<br />
<br />
== layer stack ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|improve drag&drop (if the "dragged" layer can't be made a child<br />
of the hoovered layer, then drop it between the current layer and the<br />
previous/next one).|}}<br />
{{FeatureTodo|replace some label+checkbox by button+icons.|}}<br />
{{FeatureTodo|global selection <--> alpha mask.|}}<br />
{{FeatureTodo|layer transparency --> global selection (Idealy, ctrl+click on the layer preview would trigger it).|}}<br />
{{FeatureTodo|applying/dropping a mask to its parent.|}}<br />
{{FeatureTodo|shape layer <--> vector selection --> raster selection and mask.|}}<br />
{{FeatureTodo|shape layer --> raster layer.|}}<br />
{{FeatureTodo|Ability to select multiple layers, then transform them together|Oskar Świerad}}<br />
{{FeatureTodo|Drag to trash bin to delete (PS-like)|Oskar Świerad}}<br />
{{FeatureTodo|[Del] on keyboard (while hovering cursor over Layers) to delete|Oskar Świerad}}<br />
{{FeatureTodo|Grouping multiple layers with [Ctrl][G]|Oskar Świerad}}<br />
{{FeatureTodo|UI proposal - fit Blending Mode and Opacity slider in single line|Oskar Świerad}}<br />
|}<br />
<br />
== mask ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|improve drag&drop (if the "dragged" layer can't be made a child of the hoovered layer, then drop it between the current layer and the previous/next one).|}}<br />
{{FeatureTodo|fix inconsistencies in masks by switching to a mask-selection-greyscale image paradigm. Then, masks and local selections would be the same thing, the user would just change the view mode by clicking a button. It'll make the workflow simpler, and allow powerful features<br />
* gradient, paint tool and filters could be used to edit a selection (in mask or image mode).<br />
* painting in a mask would be the same than painting in a paint layer.<br />
* no need to show a selection in filter/generators layers, etc |}}<br />
{{FeatureTodo|Isolate mask with [Alt]click on it (PS-like)|Oskar Świerad}}<br />
{{FeatureTodo|Temporarily disable mask with [Shift]click on it (PS-like)|Oskar Świerad}}<br />
{{FeatureTodo|Ability to "Create clipping mask" (PS-like, [Alt]click between 2 layers). Important for typical texture workflow for modern games - see "Keeping albedo, roughness synchronized in PS" on polycount.com/forum |Oskar Świerad}}<br />
|}<br />
<br />
== paintops ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|bring back the automatic preview, or at least a single dab, like in autobrush, so that it's possible to set-up static settings like angle and softness. The dab could be reused later for smaller preset preview (like in Custom Brushes).|}}<br />
{{FeatureTodo|merge pixel, eraser, pencil, mix and soft paintops (Better break presets now, than when we'll have millions of users :p) |}}<br />
|}<br />
<br />
== abr missing features ==<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Description<br />
! width=120 | Contact<br />
|-<br />
{{FeatureTodo|Stack the sensors - e.g. be able to use fuzzy for size and also some other controller as pressure, tilt etc. Needed for size, angle|}}<br />
{{FeatureTodo|Roundness sensor - hardness/softness controlled by sensors|}}<br />
{{FeatureTodo|Dual brush + implement some new composition modes|}}<br />
{{FeatureTodo|Texture|}}<br />
{{FeatureDone|Flip X, Flip Y - it mirrors the brush randomly (for each dab, there is 50% of chance that the brush is mirrorred, it seems), mirroring of the brush mask |LukasT|}} <br />
|}<br />
<br />
<br />
[1]In the long run, maybe a "resource manager" would be a good idea. It would be used to organize everything : brush presets, gradients, patterns, colors palettes, curve presets, vector shapes, filter effects, text styles... Koffice-wide.<br />
<br />
[2]http://www.kde-apps.org/content/show.php/GimpBrushThumbs?content=107128<br />
<br />
[3]blur, desaturate = filter paintop, dodge/burn tool = dodge/Burn composite mode, eraser tool = eraser mode, duplicate tool = duplicate paintop, ...</div>Tiarhttps://community.kde.org/index.php?title=Krita/High_dynamic_range&diff=83795Krita/High dynamic range2019-04-24T08:39:13Z<p>Tiar: </p>
<hr />
<div>'''Warning!'''<br />
<br />
This page is heavily outdated. To read about real HDR feartures that are new in Krita 4.2.0, please go to https://krita.org/en/item/krita-4-2-0-the-first-painting-application-to-bring-hdr-support-to-windows/ and learn more on https://docs.krita.org/en/<br />
<br />
----<br />
= Introduction =<br />
<br />
This page is about ideas on improving the HDR capabilities of Krita. One of the reference bug on the subject is [http://bugs.kde.org/show_bug.cgi?id=125543 #125543]. There are three issues to solve for now in Krita : Color management, LDR to HDR and tone mapping. <br />
<br />
<br />
= Color management =<br />
[[Color management]] in krita and koffice is managed by the [[pigment]] library.<br />
== File format and color spaces ==<br />
<br />
* [http://www.openexr.org openexr] is allready supported, except that the chromacity is ignored (chromacity describes a transformation between RGB and XYZ<br />
* [http://www.cineon.com cineon] is not supported, it's a logarithmic color spaces, it requires a lut wich gives the transformation between the transmitance values and rgb (see [http://www.rendernan.com rendernan] for some examples)<br />
<br />
== Color profiles ==<br />
There is currently no specification which support floating point profiles, the [http://www.color.org International Color Consortium] has just released a [http://www.color.org/ICCSpecRevision_02_11_06_Float.pdf proposition] about a revision of the specification.<br />
<br />
== How it is done in other software ?==<br />
* [http://www.openexr.com/OpenEXRColorManagement.pdf OpenEXR Color Management] is a proposal from ILM which explain their workflow. It's a proposition for importing and exporting, it's rather weak on exactly how to do this<br />
* cinepaint use icc profile for display<br />
* Adobe After Effects use icc profile internaly, for After effects there are a serie of [http://www.fxguide.com/fxtips-315.html tutorials] on the subject<br />
<br />
== Color convertion ==<br />
* color convertion should be done taking into account the exposure, that way when it would be possible to draw in the current range of exposure instead of the generic 0.0-1.0<br />
<br />
= LDR to HDR =<br />
This is the process for creating HDR image from a serie of Low Dynamic Range images, usually a scene taken with the bracketing capabilities of a digital camera:<br />
<br />
* [http://www.mpi-sb.mpg.de/resources/hdr/calibration/pfs.html pfscalibration]<br />
* [http://people.freenet.de/hsbosny/HDR_Tutorial/HDR_Tutorial-en.html LDR to HDR in cinepaint]<br />
<br />
= Tone mapping =<br />
<br />
== Automated Processes ==<br />
We should provide one or more HDR tone mapping filters a la at least pfstools, possibly other algorithms that seem useful.<br />
<br />
* [http://www.mpi-inf.mpg.de/resources/tmo/ pfstmo]<br />
* [http://www.umsl.edu/~sj550/myweb/downloads.htm gsoc 2007 about tonemapping]<br />
<br />
== Manual Process ==<br />
This is a suggested process for manual HDR mapping that would be nice to support. This process involves importing multiple exposures as separate layers into Krita. These can be "true" exposures, or different non-HDR tone-mappings of a single (usually RAW) exposure. We'll assume the latter case as the required tools are more complicated. (Multiple true exposures may require alignment, but we already have these tools.)<br />
<br />
# Begin by importing the single RAW. See [[Krita/Direct_RAW_Editing| Direct RAW editing]].<br />
# Create a clone of the layer stack after debayerisation (and probably after white balancing).<br />
#* This requires the ability to clone the layer stack at a point, so that different operations (filters, paint layers) can be applied and the results later blended together.<br />
# Apply tone-mapping to get multiple exposures. This consists of curves and hue/saturation filter layers. We have these already.<br />
# Add a channel-to-alpha filter to one exposure to convert Luma to Alpha.<br />
#* This requires a filter that can take input in an arbitrary color space, perform an implicitly color space conversion, and dump the result as an Alpha channel. Ideally this should blend that with any previous alpha channel in the stack according to the blend mode (the default "Normal" mode would simply replace any previous alpha channel). Also ideally, this filter could map to any channel; for example, copy Red to Green.<br />
# Apply filters or painting to the alpha channel as desired.<br />
#* This requires that filters can be told to operate on a single channel, in this case Alpha. That said, operations such as blur acting only on Hue (again, with implicit color space conversion being performed), sharpen acting only on Luma, etc, would be another extremely useful option. In fact this might even obviate the need for otherwise-important filters such as chromatic reduction.<br />
<br />
The end result is a composited image with fine control over the tone mapping process.<br />
<br />
An example would be a landscape. Typically, the sky will be very bright compared to the other elements. One might create two tone mappings to work with; one that maximizes the detail in the sky (which will typically produce a very dark foreground), and one that maximizes the visibility of the other elements (which will typically produce a heavily washed-out sky). These would be combined by mapping the sky-exposure Luma to alpha, and applying a curve to cut the dark (foreground) areas to full transparency while boosting the sky, including darker parts thereof, to high opacity. Because foreground elements tend to be extremely bright around the edges which have sky behind them, applying some blur may be desired to prevent fine details (such as leaves on trees) from being lost. In order to achieve this, we need the three operations bullet-pointed above.<br />
<br />
= Painting/Drawing/Editing in HDR =<br />
<br />
* [http://graphics.cs.ucf.edu/HDRPaint/index.php HDR Paint]<br />
* [http://www.cs.toronto.edu/~hasinoff/aperture/ Variable-Aperture Photography]<br />
<br />
= Various other things related to HDR or image blending =<br />
* [http://www.guillermoluijk.com/article/nonoise/index_en.htm zero noise]</div>Tiarhttps://community.kde.org/index.php?title=Krita/Sprint2019&diff=83653Krita/Sprint20192019-04-08T23:15:23Z<p>Tiar: </p>
<hr />
<div>= 2019 Krita Sprint =<br />
<br />
Proposed dates: August 6 to 9 (note: arriving a day early and leaving a day late is fine, there's room for flexibility, but these are the core dates).<br />
<br />
This is a general meet-up, not like the October 2018 sprint focused on only bug fixing.<br />
<br />
Location: Korte Assenstraat 11, Deventer<br />
<br />
== Reimbursements ==<br />
<br />
As soon as possible, go to:<br />
<br />
https://reimbursements.kde.org/<br />
<br />
* You only need to ask for reimbursment for your travel costs. Accomodation will be handled by Boudewijn.<br />
* KDE e.V. reimburses, not pre-imburses. If that is a problem, the Krita Foundation can help out.<br />
<br />
== Agenda==<br />
<br />
* Fundraising<br />
* Steam:<br />
==Attendance==<br />
<br />
Please put your name below if you're coming along with arrival and leave dates<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name<br />
! Arrival<br />
! Leaving<br />
!EstimatedTravel Costs<br />
!Notes about diet<br />
|-<br />
| Boudewijn Rempt<br />
| <br />
| <br />
|<br />
|<br />
|-<br />
| Irina Rempt<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Rebecca Breu<br />
| 5.8. evening<br />
| 9.8. <br />
| —<br />
| No cilantro<br />
|-<br />
| Jouni Pentikäinen<br />
|<br />
|<br />
|<br />
| No dairy or fish<br />
|-<br />
| Noemie Scherer<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Agata Cacko<br />
| 5th <br />
| 9th <br />
| probably ~150 euro<br />
| will come with another person<br />
|-<br />
| Wolthera van Hövell<br />
|asume me to be there for the full length<br />
|<br />
|50 euro<br />
|<br />
|-<br />
| Scott Petrovic<br />
|probably coming in a day early<br />
|leaving a day after<br />
| ~1000 euros (flight + train)<br />
|<br />
|-<br />
| David Revoy<br />
|6 Aug. (probably end afternoon)<br />
|9 Aug. (probably early)<br />
|300 euro<br />
|<br />
|-<br />
| Alberto Eleuterio Flores Guerrero<br />
|Probably coming in a day early<br />
|Probably leaving a day after<br />
|1000 euro<br />
|I can help to cook <br />
|-<br />
|Kuntal Majumder<br />
|5 Aug<br />
|10 Aug<br />
|probably 700 - 800 euro<br />
|<br />
|-<br />
|Emmet D O'Neill<br />
|August 5th<br />
|August 9th<br />
|TDB - I'll find out ASAP.<br />
|<br />
|-<br />
|Eoin P O'Neill<br />
|August 5th<br />
|August 9th<br />
|TDB - I'll also find out ASAP.<br />
|I avoid seafood and shellfish, but don't change plans around me.<br />
|-<br />
|Raghavendra Kamath<br />
|5th August<br />
|10th August<br />
|800 euro approx.<br />
|Okay with anything<br />
|-<br />
|Dmitry Kazakov<br />
|5th August<br />
|10th August<br />
| 400 euro approx.<br />
|<br />
|-<br />
|Owly Owlet<br />
|5th August<br />
|10th August<br />
| 450 euro approx.<br />
|(need two-person bedroom)<br />
|-<br />
|Victor W<br />
|<br />
|<br />
|<br />
|Might attend. (Pescetarian)<br />
|-<br />
|Sharaf Zaman<br />
|5th August<br />
|10th August<br />
|800 euro approx.<br />
|<br />
|-<br />
}</div>Tiarhttps://community.kde.org/index.php?title=Krita/Sprint2019&diff=83093Krita/Sprint20192019-02-25T17:10:55Z<p>Tiar: /* Attendance */</p>
<hr />
<div>= 2019 Krita Sprint =<br />
<br />
Proposed dates: August 6 to 9 (note: arriving a day early and leaving a day late is fine, there's room for flexibility, but these are the core dates).<br />
<br />
This is a general meet-up, not like the October 2018 sprint focused on only bug fixing.<br />
<br />
Location: Korte Assenstraat 11, Deventer<br />
<br />
== Reimbursements ==<br />
<br />
As soon as possible, go to:<br />
<br />
https://reimbursements.kde.org/<br />
<br />
* You only need to ask for reimbursment for your travel costs. Accomodation will be handled by Boudewijn.<br />
* KDE e.V. reimburses, not pre-imburses. If that is a problem, the Krita Foundation can help out.<br />
<br />
== Agenda==<br />
<br />
* Fundraising<br />
* Steam:<br />
==Attendance==<br />
<br />
Please put your name below if you're coming along with arrival and leave dates<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name<br />
! Arrival<br />
! Leaving<br />
!EstimatedTravel Costs<br />
!Notes about diet<br />
|-<br />
| Boudewijn Rempt<br />
| <br />
| <br />
|<br />
|<br />
|-<br />
| Irina Rempt<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Rebecca Breu<br />
| 5.8. evening<br />
| 9.8. <br />
| —<br />
| No cilantro<br />
|-<br />
| Jouni Pentikäinen<br />
|<br />
|<br />
|<br />
| No dairy or fish<br />
|-<br />
| Noemie Scherer<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Agata Cacko<br />
|<br />
|<br />
| probably ~150 euro<br />
|<br />
|-<br />
| Wolthera van Hövell<br />
|asume me to be there for the full length<br />
|<br />
|50 euro<br />
|<br />
|-<br />
| Scott Petrovic<br />
|probably coming in a day early. and leaving day after<br />
|<br />
|<br />
|<br />
|-<br />
| David Revoy<br />
|6 Aug. (probably end afternoon)<br />
|9 Aug. (probably early)<br />
|300 euro<br />
|<br />
|}</div>Tiarhttps://community.kde.org/index.php?title=Krita/Sprint2019&diff=83069Krita/Sprint20192019-02-22T13:21:26Z<p>Tiar: </p>
<hr />
<div>= 2019 Krita Sprint =<br />
<br />
Proposed dates: August 6 to 9 (note: arriving a day early and leaving a day late is fine, there's room for flexibility, but these are the core dates).<br />
<br />
This is a general meet-up, not like the October 2018 sprint focused on only bug fixing.<br />
<br />
Location: Korte Assenstraat 11, Deventer<br />
<br />
== Reimbursements ==<br />
<br />
As soon as possible, go to:<br />
<br />
https://reimbursements.kde.org/<br />
<br />
* You only need to ask for reimbursment for your travel costs. Accomodation will be handled by Boudewijn.<br />
* KDE e.V. reimburses, not pre-imburses. If that is a problem, the Krita Foundation can help out.<br />
<br />
== Agenda==<br />
<br />
* Fundraising<br />
* Steam:<br />
==Attendance==<br />
<br />
Please put your name below if you're coming along with arrival and leave dates<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name<br />
! Arrival<br />
! Leaving<br />
!EstimatedTravel Costs<br />
!Notes about diet<br />
|-<br />
| Boudewijn Rempt<br />
| <br />
| <br />
|<br />
|<br />
|-<br />
| Irina Rempt<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Rebecca Breu<br />
| 5.8. evening<br />
| 9.8. <br />
| —<br />
| No cilantro<br />
|-<br />
| Jouni Pentikäinen<br />
|<br />
|<br />
|<br />
| No dairy or fish<br />
|-<br />
| Noemie Scherer<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Agata Cacko<br />
|<br />
|<br />
|<br />
|<br />
|}</div>Tiar