https://community.kde.org/api.php?action=feedcontributions&user=Jjazeix&feedformat=atomKDE Community Wiki - User contributions [en]2024-03-29T00:37:56ZUser contributionsMediaWiki 1.40.2https://community.kde.org/index.php?title=OSPP&diff=100418OSPP2024-03-26T18:41:25Z<p>Jjazeix: </p>
<hr />
<div>[[Category:Mentoring]]<br />
[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
''[[/2024/Ideas|Ideas for OSPP 2024]]''<br />
<br />
All students and developers are welcome to participate in the Open Source Promotion Plan program with KDE.<br />
<br />
This program differs a bit from GSoC, check the differences in the [https://summer-ospp.ac.cn/help/en/ Program FAQ]. Notably:<br />
<br />
* Mentors are directly paid, it does not go to KDE.<br />
* Mentors cannot guide students to develop code or help debugging.<br />
* Code must be merged for the project to be validated.</div>Jjazeixhttps://community.kde.org/index.php?title=OSPP&diff=100417OSPP2024-03-26T18:38:19Z<p>Jjazeix: </p>
<hr />
<div>[[Category:Mentoring]]<br />
[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
''[[/2024/Ideas|Ideas for OSPP 2024]]''<br />
<br />
All students and developers are welcome to participate in the Open Source Promotion Plan program with KDE.<br />
<br />
This program differs a bit from GSoC, check the differences in the [https://summer-ospp.ac.cn/help/en/ Program FAQ].</div>Jjazeixhttps://community.kde.org/index.php?title=OSPP/2024/Ideas&diff=100416OSPP/2024/Ideas2024-03-26T18:33:22Z<p>Jjazeix: Created page with "[[Konqi is giving a lesson!]] See also: OSPP Instructions == Guidelines == === Information for Students === These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at. Becoming accepted as a Open So..."</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|OSPP Instructions]]<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 Open Source Promotion Plan 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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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.</div>Jjazeixhttps://community.kde.org/index.php?title=OSPP&diff=100415OSPP2024-03-26T18:30:18Z<p>Jjazeix: Basic page from GSoC</p>
<hr />
<div>[[Category:Mentoring]]<br />
[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
''[[/2024/Ideas|Ideas for OSPP 2024]]''<br />
<br />
All students and developers are welcome to participate in the Open Source Promotion Plan program with KDE.</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=100305GSoC/2024/Ideas2024-03-09T08:14:41Z<p>Jjazeix: move some ideas outside lokalize as they are not lokalize at all</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
=Ideas=<br />
== KDE Frameworks ==<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port oss-fuzz tests to Qt6 ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== ISO Image Writer to Qt Quick ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Port ISO Image Writer to Qt Quick<br />
<br />
'''Expected results:''' A more shiney UI<br />
<br />
'''Knowledge Prerequisite:''' C++, QML<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Jonathan Riddell jr @ jriddell.org<br />
<br />
<br />
=== Release Scripts Using invent.kde.org (Gitlab) ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Write release scripts for our apps and libraries which uses the Gitlab infrastructure on invent.kde.org<br />
<br />
'''Expected results:''' Slicker release process<br />
<br />
'''Knowledge Prerequisite:''' Gitlab API using maybe Ruby or something similar<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Jonathan Riddell jr @ jriddell.org Harald Sitter sitter @ kde.org<br />
<br />
<br />
== KDE Connect ==<br />
<br />
The following are ideas for the KDE Connect Android, iOS and desktop apps. Feel free to also take a look at the [https://invent.kde.org/network/kdeconnect-meta/-/issues curated list of tasks in the meta repo].<br />
<br />
=== Update SSH library in the Android app ===<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 />
The Remote File Browser plugin works by running an SFTP server on Android and connecting to it using SSHFS from the desktop.<br />
<br />
The SFTP server implementation we use in Android is from Apache mina-sshd. This is a Java library. However, due to some differences in the way to access the filesystem in Android, the latest version we managed to get working is 0.14 from 2015.<br />
<br />
The goal of this task is to upgrade to a recent version. You can see all the released versions here: https://mvnrepository.com/artifact/org.apache.sshd/sshd-core<br />
<br />
One API that newer versions of Apache Mina use is java.nio.file, which wasn't available in Android until API 26. We currently support down to API 21, but we can bump the requirement to API 26 if required to update this library (maybe nio file can be dessugared, though?). In any case, there probably are more incompatibilities that we need to solve to be able to upgrade.<br />
<br />
'''Expected results:''' We get rid of the old mina sshd library used in the Android app for remote file access, and we use either a new version or something else.<br />
<br />
'''Knowledge Prerequisite:''' This should only require changes to the Android app, which is written in Java & Kotlin.<br />
<br />
'''Mentor:''' Albert Vaca Cintora <albertvaka@gmail.com><br />
<br />
=== Allow sharing non-text clipboard contents ===<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 />
Currently we only sync the clipboard if it contains text. However, the clipboard can contain a variety of data. One of the most common cases besides text are images.<br />
<br />
The APIs we use to read the clipboard let us read and write images:<br />
<br />
* In Qt the clipboard has a mimetype field of type QMimeData which can be asked for hasImage (in addition to hasUrls and hasHtml [1])<br />
<br />
* On the Android side, we can use ClipboardManager's setPrimaryClip to set the different types of clipboard.<br />
<br />
To support this, in addition to the text-only "content" field we will need to send a mime-type field with the mimetype of the clipboard. For image (or any future non-text) mimetypes, an attached payload will contain the image data.<br />
To not transfer huge payloads because of this, we should set an upper size limit (eg: 1 MB, we can change this in a future or even make it configurable).<br />
<br />
[1] We probably don't care about URLs because they can be sent as text and they still work, but in a future it might be interesting to also support HTML so we can sync formatted text.<br />
<br />
'''Expected results:''' We can copy-paste images and formatted text across platforms.<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 />
== Arianna ==<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 />
== GCompris ==<br />
=== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
== sddm-kcm ==<br />
=== 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 />
== Okular ==<br />
<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. Contact the Okular developers. <br />
<br />
=== Improve Forms/Javascript support ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
=== 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 />
'''Difficulty:''' Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
== KStars ==<br />
=== Ekos Imaging Pipeline ===<br />
<br />
'''Brief explanation:''' Implement Ekos node-based Imaging pipeline with multiple concrete nodes to support live stacking of images. Each node takes an image, configuration, and produces an output image along with metadata to pass to the next stage.<br />
<br />
'''Expected results:''' Ability to live stack images in Ekos<br />
<br />
'''Knowledge Prerequisite:''' C++ / Qt<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Hard<br />
<br />
'''Mentors:''' Jasem Mutlaq @jasem:kde.org<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 />
<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 />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Hard<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 />
<br />
'''Expected results''': <br />
* Improved Observation Wizard Tool.<br />
* Proper integration with INDI & Ekos.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Hard<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://webchat.kde.org/#/room/#kstars:kde.org KDE Web Chat]: Jasem)<br />
<br />
== KDE Games ==<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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<br />
<br />
<br />
== LabPlot ==<br />
<br />
LabPlot is a free, open source and cross-platform data visualization and analysis software.<br />
<br />
=== 3D Visualization ===<br />
<br />
'''Brief explanation:''' At the moment LabPlot supports 2D plotting only. The purpose of this project is to extend the current feature set and to provide support for 3D plots. The available 3D frameworks, see for example https://wiki.qt.io/Using_3D_engines_with_Qt, have to be evaluated and we need to decide whether we use an already existing framework or our own implementation of the relevant algorithms.<br />
<br />
'''Expected results:''' For the initial implementation it's expected to support the common 3D visualizations relevant for LabPlot's user base (curves, surfaces, fields, etc.) and it should be possible to edit the most important properties similar to how it's done for 2D plot types.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Duration:''' 350 hours<br />
<br />
'''Difficulty:''' Hard<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
<br />
== Lokalize ==<br />
<br />
Lokalize is a program used to aid in translation, and is often used to translate KDE applications. <br />
<br />
=== Improve translation suggestions ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Improve usability of translation memory in Lokalize. There is scope for creativity, possible ideas include supplementing the rule based approach with other machine learning techniques or allowing for import of translation memories.<br />
<br />
'''Expected results:''' More pleasant and efficient translation experience. Greater consistency between translations of KDE applications.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus.org<br />
<br />
== Kdenlive ==<br />
<br />
Kdenlive is a cross platform, open source, video editing software.<br />
<br />
=== Improved subtitling support ===<br />
<br />
'''Brief explanation:''' Currently, Kdenlive saves its subtitles in the SRT format, which only allows very basic styling features - that means only one style for the complete subtitle file. A more advanced file format like ASS (SubStation Alpha Subtitles) would allow much more powerful styling, for example attributing different styles to different speakers, proper styling (using bold, italic or colors on words or sentences only), etc. Currently, Kdenlive can already read basic ASS files (without styling support).<br />
<br />
'''Expected results:''' Opening and saving an ASS subtitle and keeping the styling infos, implement a widget allowing to create styles and attribute a style to a subtitle sentence, or add some attributes like bold to selected parts of the text.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Duration:''' ~175 hours<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Jean-Baptiste Mardelle (@j-b-m:matrix.org)</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99987GSoC/2024/Ideas2024-02-11T19:24:54Z<p>Jjazeix: /* Add support for multiple numeral system in GCompris */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
=Ideas=<br />
== KDE Frameworks ==<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port oss-fuzz tests to Qt6 ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
== Arianna ==<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 />
== GCompris ==<br />
=== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
== sddm-kcm ==<br />
=== 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 />
== Okular ==<br />
<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. Contact the Okular developers. <br />
<br />
=== Improve Forms/Javascript support ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
== KDE Games ==<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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<br />
<br />
== Lokalize ==<br />
<br />
Lokalize is a program used to aid in translation, and is often used to translate KDE applications. <br />
<br />
=== Improve translation suggestions ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Improve usability of translation memory in Lokalize. There is scope for creativity, possible ideas include supplementing the rule based approach with other machine learning techniques or allowing for import of translation memories.<br />
<br />
'''Expected results:''' More pleasant and efficient translation experience. Greater consistency between translations of KDE applications.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus.org</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99986GSoC/2024/Ideas2024-02-11T19:23:43Z<p>Jjazeix: Remove KDE Connect idea as it was too generic and not under GSoC guidelines</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
=Ideas=<br />
== KDE Frameworks ==<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port oss-fuzz tests to Qt6 ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
== Arianna ==<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 />
== GCompris ==<br />
=== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
== sddm-kcm ==<br />
=== 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 />
== Okular ==<br />
<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. Contact the Okular developers. <br />
<br />
=== Improve Forms/Javascript support ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
== KDE Games ==<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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<br />
<br />
== Lokalize ==<br />
<br />
Lokalize is a program used to aid in translation, and is often used to translate KDE applications. <br />
<br />
=== Improve translation suggestions ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Improve usability of translation memory in Lokalize. There is scope for creativity, possible ideas include supplementing the rule based approach with other machine learning techniques or allowing for import of translation memories.<br />
<br />
'''Expected results:''' More pleasant and efficient translation experience. Greater consistency between translations of KDE applications.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Benson Muite - benson_muite at emailplus.org</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99903GSoC/2024/Ideas2024-02-04T21:48:25Z<p>Jjazeix: remove extra : in difficulties</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
=Ideas=<br />
== KDE Frameworks ==<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''' Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port oss-fuzz tests to Qt6 ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
== Arianna ==<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 />
== GCompris ==<br />
=== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
== KDE Connect ==<br />
=== Work on one or more KDE Connect tasks (to be refined) ===<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 />
== sddm-kcm ==<br />
=== 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 />
== Okular ==<br />
<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. Contact the Okular developers. <br />
<br />
=== Improve Forms/Javascript support ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''' Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Medium<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 />
<br />
=== 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 />
'''Difficulty:''' Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
=== 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 />
'''Difficulty:''' Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
== KDE Games ==<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99902GSoC/2024/Ideas2024-02-04T21:45:17Z<p>Jjazeix: /* 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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
=Ideas=<br />
== KDE Frameworks ==<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
=== Port oss-fuzz tests to Qt6 ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
== Arianna ==<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 />
== GCompris ==<br />
=== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
== KDE Connect ==<br />
=== Work on one or more KDE Connect tasks (to be refined) ===<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 />
== sddm-kcm ==<br />
=== 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 />
== Okular ==<br />
<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. Contact the Okular developers. <br />
<br />
=== Improve Forms/Javascript support ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<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 />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<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 />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<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 />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Medium<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 />
<br />
=== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
=== 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 />
'''Difficulty:''': Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
== KDE Games ==<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99901GSoC/2024/Ideas2024-02-04T21:36:13Z<p>Jjazeix: </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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
----<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99900GSoC/2024/Ideas2024-02-04T20:25:14Z<p>Jjazeix: more spacing between 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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99899GSoC/2024/Ideas2024-02-04T20:22:54Z<p>Jjazeix: /* Krita */ add difficulties</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Duration:''' ~90h<br />
<br />
'''Mentor''': Tiar, backup: Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=363315<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=376943<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Tiar<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=380141<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet, Wolthera or Tiar<br />
<br />
'''Link''': https://krita-artists.org/t/selection-action-bar/48767<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=393140<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Emmet<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=437026<br />
<br />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': TBD<br />
<br />
==== 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 />
'''Difficulty:''': Medium<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 />
==== 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 />
'''Difficulty:''': Medium<br />
<br />
'''Mentor''': Wolthera<br />
<br />
'''Link''': https://bugs.kde.org/show_bug.cgi?id=338002<br />
<br />
<br />
==== 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 />
'''Difficulty:''': Hard<br />
<br />
'''Mentor''': TBD<br />
<br />
'''Link''': https://krita-artists.org/t/ribbon-brush/31346<br />
<br />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99898GSoC/2024/Ideas2024-02-04T20:21:21Z<p>Jjazeix: /* 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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== 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 />
==== (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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99897GSoC/2024/Ideas2024-02-04T20:20:22Z<p>Jjazeix: /* Project: Improve Forms/Javascript support */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99896GSoC/2024/Ideas2024-02-04T20:20:15Z<p>Jjazeix: /* Project: Harden sddm-kcm */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<br />
==== 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 />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99895GSoC/2024/Ideas2024-02-04T20:19:50Z<p>Jjazeix: /* Project: Work on one or more KDE Connect tasks (to be refined) */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99894GSoC/2024/Ideas2024-02-04T20:19:40Z<p>Jjazeix: /* Project: Port oss-fuzz tests to Qt6 */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99893GSoC/2024/Ideas2024-02-04T20:19:21Z<p>Jjazeix: /* Project: Adding support for multiple numeral system in GCompris */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Project: Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<br />
==== Add 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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99892GSoC/2024/Ideas2024-02-04T20:17:32Z<p>Jjazeix: /* Project: Port oss-fuzz tests to Qt6 */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Project: Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://github.com/google/oss-fuzz oss-fuzz] is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is ([https://github.com/google/oss-fuzz/tree/master/projects/kimageformats kimageformats] or [https://github.com/google/oss-fuzz/tree/master/projects/kcodecs kcodecs] examples).<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
=== Arianna ===<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 />
=== GCompris ===<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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99891GSoC/2024/Ideas2024-02-04T20:09:56Z<p>Jjazeix: /* Python bindings for KDE Frameworks */</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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 (175 or 350 hours).<br />
<br />
'''Difficulty:''': Medium<br />
<br />
'''Mentor:''' Carl Schwan - @carl:kde.org on matrix<br />
<br />
==== Project: Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' oss-fuzz is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is.<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Arianna ===<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 />
=== GCompris ===<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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99890GSoC/2024/Ideas2024-02-04T20:05:27Z<p>Jjazeix: </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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 />
==== Project: Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' oss-fuzz is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is.<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Arianna ===<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 />
=== GCompris ===<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 / Harsh Kumar @hadron43:kde.org / Johnny Jazeix @johnnyj:kde.org. But please join #gcompris:kde.org to discuss with the team.<br />
<br />
<br />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99889GSoC/2024/Ideas2024-02-04T20:04:38Z<p>Jjazeix: </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. Neither generating a proposal with ChatGPT or equivalent!''' 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 />
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 />
{{Note|Follow this template!}}<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 />
==Ideas==<br />
=== KDE Frameworks ===<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 />
==== Project: Port oss-fuzz tests to Qt6 ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' oss-fuzz is a fuzzying tool that runs continuously trying to find security issues in our software. Currently the oss-fuzz tests on KDE Frameworks are run using Qt5 which is not optimal since Qt6 is where our main development focus is.<br />
<br />
'''Expected results:''' oss-fuzz tests run with Qt6 instead of Qt5. If extra time allows it, add more KDE Frameworks testing to oss-fuzz<br />
<br />
'''Knowledge Prerequisite:''' cmake/compiling/static libraries<br />
<br />
'''Duration:''' 175 hours<br />
<br />
'''Difficulty:''': Medium/Hard<br />
<br />
'''Mentor:''' Albert Astals Cid <aacid@kde.org><br />
<br />
<br />
=== Arianna ===<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 />
=== GCompris ===<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 />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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 />
<br />
<br />
=== Okular ===<br />
<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. Contact the Okular developers. <br />
<br />
==== Project: Improve Forms/Javascript support ====<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Okular supports PDF files with Forms, many of those use Javascript to make the Forms functionality nicer to users. We only support some of the Javascript features, the aim of this project is to improve the support for it.<br />
<br />
'''Expected results:''' Most/All of the issues identified are fixed.<br />
<br />
'''Knowledge Prerequisite:''' C++/Javascript<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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 [https://naml.us/paper/kalah/ Kalah has been solved] 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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99882GSoC/2024/Ideas2024-02-03T10:59:08Z<p>Jjazeix: /* KDE Connect */</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 />
=== KDE Frameworks ===<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 />
=== Arianna ===<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 />
=== GCompris ===<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 />
=== KDE Connect ===<br />
==== Project: Work on one or more KDE Connect tasks (to be refined) ====<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 />
=== sddm-kcm ===<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99880GSoC/2024/Ideas2024-02-03T10:37:18Z<p>Jjazeix: add project for each idea</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 />
=== KDE Frameworks ===<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 />
=== Arianna ===<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 />
=== GCompris ===<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 />
=== KDE Connect ===<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 />
=== sddm-kcm ===<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. Even if there are a lot of ideas, only 3 contributors maximum will be selected for Krita this year.<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: 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 />
==== => 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 />
==== => 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 />
=== KDE Games ===<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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99813GSoC/2024/Ideas2024-01-24T18:53:28Z<p>Jjazeix: GCompris - numeral system additions</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.</div>Jjazeixhttps://community.kde.org/index.php?title=KDE_Localization/fr/dictionnaire&diff=99802KDE Localization/fr/dictionnaire2024-01-23T20:28:22Z<p>Jjazeix: completion se traduit complétion</p>
<hr />
<div>=Locutions courantes=<br />
<br />
{{Remember|1=!!! AVERTISSEMENT !!!<br />
Il subsiste encore des termes à discuter par l'équipe KDE-Francophone.<br />
Ils sont indiqués par la mention « à discuter / valider par KDE-fr ». }} <br />
<br />
{{Note|TODO :<br />
* supprimer les « à discuter / valider par KDE-fr » (il en reste 10)<br />
* ajouter (si ça vaut le coup et après discussion sur KDE-fr) : - writable -> non/pas accessible en écriture ?<br />
* (to) parse -> analyser / lire / interpréter ?}}<br />
<br />
==Introduction==<br />
===Présentation===<br />
<br />
Bienvenue dans '''Dico''' !<br />
<br />
Dico est le répertoire des '''choix de traduction''' du projet de traduction francophone de KDE. Dico évolue régulièrement au gré des discussions sur la meilleure façon de traduire tel ou tel terme. De plus, il arrive parfois qu'un choix de traduction soit remis en cause et modifié ;).<br />
<br />
Vous pouvez '''naviguer''' dans ce document grâce au sommaire ci-dessus (classement des termes par catégorie, puis généralement par ordre alphabétique). Vous pouvez aussi '''rechercher''' un mot dans ce document (par exemple via le menu Édition > Rechercher de votre navigateur web). Gardez à l'esprit, lors de vos recherches, que la traduction d'un terme dépend fortement du contexte dans lequel il est employé !<br />
<br />
N'hésitez pas à remonter toute '''suggestion d'amélioration''' ou tout problème, si minime vous semble-t-il, au mainteneur actuel, dont les coordonnées sont indiquées en bas de page. Alternativement, vous pouvez faire vos remarques sur la liste de discussion dont vous trouverez les coordonnées sur le site du projet de traduction francophone de KDE.<br />
<br />
Si vous souhaitez consulter '''Dico hors ligne''', vous pouvez effectuer une sauvegarde de cette page avec à votre navigateur. Attention cependant, la version en ligne évolue et votre version risque d'être rapidement périmée. La date de mise à jour de Dico est indiquée en bas de page.<br />
<br />
===Compléments===<br />
<br />
La fonction <code>check_spell</code> de Pology sera très utile pour les traducteurs de tous les jours. De même, l'utilisation du dictionnaire des exceptions dans tout KDE (notamment dans Lokalize) est un avantage indéniable pour des traductions de plus grande qualité.<br />
<br />
Parallèlement à Dico, voici quelques liens intéressants pour vos recherches de traduction :<br />
<br />
* Outils de centralisation de connaissances de traducteurs :<br />
** [http://glossaire.traduc.org/ glossaire.traduc.org] : glossaire inter-projets créé en commun par l'association Traduc.org, l'équipe francophone d'OpenOffice.org, le groupe de travail de traduction de GNOME en français et le projet KDE en français.<br />
* [http://www.cnrtl.fr/lexicographie/ Centre National de Ressources Textuelles et Lexicales].<br />
* [http://www.culture.gouv.fr/culture/dglf/cogeter/publications-jo.htm Liste des termes, expressions et définitions adoptés et publiés au Journal officiel de la République française].<br />
Chaque liste de termes et de définitions est suivie d'une table d'équivalence des termes français et étrangers.<br />
Source : Ministère de la culture et de la communication / DGLFLF (Direction Générale à la Langue Française et aux Langues de France) / COGETER (Commission Générale de Terminologie et de néologie).<br />
Ci-dessous, nous vous indiquons quelques domaines disponibles. Pour en obtenir une liste exhaustive ainsi que les liens afférents, veuillez utiliser le lien général indiqué ci-dessus.<br />
** Courrier électronique : JO du [http://www.culture.gouv.fr/culture/dglf/cogeter/20-06-03-courriel.htm 20 juin 2003]<br />
** Informatique : plusieurs dates de publication au JO, dont [http://www.culture.fr/culture/dglf/cogeter/10-10-98-3.htm 10 octobre 1998], [http://www.culture.gouv.fr/culture/dglf/cogeter/20-04-07-informatique.htm 20 avril 2007], [http://www.culture.gouv.fr/culture/dglf/cogeter/02-05-07-informatique.htm 2 mai 2007].<br />
** Informatique et Internet : plusieurs dates de publication au JO, dont [http://www.culture.gouv.fr/culture/dglf/cogeter/16-03-99-internet.html 16 mars 1999], 1er septembre 2000, 8 décembre 2002, 20 mai 2005, 7 juin 2007.<br />
<br />
==Menus des applications==<br />
<br />
===Menu Fichier (''file'')===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| New / New file || Nouveau<br />
Remarque : pour certain programmes (comme les jeux) il est possible de devoir traduire par « Nouvelle » (sous entendu : partie, carte...).<br />
<br />
|-<br />
| From template / New from template || Créer à partir d'un modèle<br />
|-<br />
| Open... || Ouvrir...<br />
|-<br />
| Open file || Ouvrir un fichier<br />
|-<br />
| Close || Fermer<br />
|-<br />
| Close file || Fermer le fichier<br />
|-<br />
| Save / Save as... || Enregistrer / Enregistrer sous...<br />
Remarque : ne pas utiliser « sauvegarder ».<br />
<br />
|-<br />
| Save all || Tout enregistrer (mais pas « enregistrer tout »)<br />
|-<br />
| Recent / Open recent || Récemment ouvert(s)<br />
|-<br />
| Import || Importer<br />
|-<br />
| Export || Exporter<br />
|-<br />
| Print || Imprimer<br />
|-<br />
| Print setup... || Configuration de l'impression...<br />
|-<br />
| Print preview... || Aperçu avant impression...<br />
view -> « afficheur » plutôt que « visualiseur » (ou ses dérivés), mais essayer de trouver une tournure utilisant « affichage » à la place.<br />
<br />
|-<br />
| Exit / Quit || Quitter<br />
|}<br />
<br />
===Menu Édition (''edit'')===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Clear || Effacer<br />
|-<br />
| Cut / Copy / Paste || Couper / Copier / Coller<br />
|-<br />
| Go to line... || Aller à la ligne...<br />
|-<br />
| Indent / Unindent || Indenter / Désindenter<br />
|-<br />
| Insert file || Insérer un fichier<br />
|-<br />
| Invert selection || Inverser la sélection<br />
|-<br />
| Replace || Remplacer<br />
|-<br />
| Search || Chercher<br />
|-<br />
| Search again || Poursuivre la recherche<br />
|-<br />
| Select / Unselect || Sélectionner / Désélectionner<br />
|-<br />
| Select all / Unselect all || Tout sélectionner / Tout désélectionner<br />
|-<br />
| Spellchecker || Vérificateur orthographique<br />
|-<br />
| Undo / Redo || Annuler / Refaire ou Recommencer<br />
|}<br />
<br />
===Menu Affichage (''view'')===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Collapse tree view || Réduire la vue arborescente<br />
|-<br />
| Show / Hide || Afficher / Cacher<br />
<blockquote> Remarque : on fait de rares exceptions si le contexte nous y pousse (masquer possède une connotation de tromperie que cacher n'a pas). Dans le cas de masques réseau (ou de saisie), « masque » doit être compris comme un « cache » en papier qui cache une partie de l'adresse.</blockquote><br />
<br />
|}<br />
<br />
=== Menu Configuration (''settings'') ou Options (''options'')===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Default, Defaults || Par défaut<br />
|-<br />
| Edit options || Configuration, Modifier les options<br />
|-<br />
| Keys, Key bindings || Raccourcis clavier<br />
|-<br />
| Preferences || Préférences<br />
|-<br />
| Remove / Delete || Supprimer, Enlever (selon le contexte)<br />
|-<br />
| Save options || Enregistrer les options<br />
|-<br />
| Settings || <br />
Configuration ; par exemple le menu « Configuration ».<br />
Pour certaines personnes de la liste de diffusion, « paramètres (de configuration) » ou « paramétrer » est plus approprié que « configuration » dans certains cas. On peut aussi penser à « réglages » (ajuster les réglages...). Pour la barre de menu, « Configuration » est très répandu et convient très bien.<br />
<br />
|-<br />
| Setup || Configuration<br />
|}<br />
<br />
===Menu Aide (''help'')===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Contents / Help || Contenu<br />
|-<br />
| Manual / Handbook || Manuel<br />
User Manual -> manuel de l'utilisateur<br />
XXX User Manual | XXX User's Manual -> manuel utilisateur de XXX (ex. : manuel utilisateur de Gwenview). [suite à discussion sur KDE-fr (02 juil. 2009)].<br />
<br />
<br />
|-<br />
| Tip of the day / Hint || Astuce du jour<br />
|-<br />
| Credit(s) || Remerciement(s)<br />
|}<br />
<br />
===Divers===<br />
<br />
====Fenêtres et messages====<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Enter (ex. : please enter...) || saisissez / saisir<br />
Remarque : ne pas utiliser « entrer » (elle est où la porte ?! ;) ).<br />
<br />
|-<br />
| item || élément, objet (le tout est de rester cohérent dans toute la traduction).<br />
Remarque : ne pas laisser « item » !<br />
<br />
|-<br />
| Note: || Remarque :<br />
Remarque : choix du 25 mars 2008 de ne plus utiliser « Note » ou « P.-S. » (Post Scriptum).<br />
<br />
|-<br />
| ok, Ok, OK || Ok (pour l'homogénéité, ne pas utiliser OK / ok / O.K. / okay).<br />
|-<br />
| please... || veuillez...<br />
|-<br />
| percent || pourcentage (ou utiliser une forme du type « 5 % ».<br />
Remarque : « pourcent » ne semble pas valable (wikipedia).<br />
<br />
|-<br />
| unable... / can't... / cannot... (ex: « Cannot open image file... ») / not found || impossible de... (trouver, etc.)<br />
|-<br />
| Untitled || Sans titre<br />
|-<br />
| valid / unvalid || valable / non valable (au lieu de valide / non valide)<br />
|-<br />
| verbosity || verbosité<br />
|}<br />
<br />
====Barres de titre====<br />
Le format retenu pour les barres de titre est le suivant : "application - message". Par exemple : "Ark - Avertissement".<br />
Le message peut être un des messages standards :<br />
* Erreur<br />
* Avertissement<br />
* Information<br />
<br />
Ou un autre message spécifique souhaité par le programmeur. <br />
<br />
====Menus des applications à onglets et à vues séparables====<br />
Il s'agit ici de lister des éléments de menus et fenêtres que l'on retrouve souvent dans les applications à onglets et à vues séparables (par exemple Konqueror). <br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Split View Left/Right || Scinder la vue gauche / droite<br />
|-<br />
| Split View Top/Bottom || Scinder la vue haut / bas<br />
|-<br />
| Close Active View || Fermer la vue active<br />
|-<br />
| New window || Nouvelle fenêtre<br />
|-<br />
| Duplicate Windows || Dupliquer la fenêtre<br />
|-<br />
| New tab || Nouvel onglet<br />
|-<br />
| Duplicate (Current) Tab || Dupliquer l'onglet (courant)<br />
|-<br />
| Detach (Current) Tab || Détacher l'onglet (courant)<br />
|-<br />
| Close (Current) Tab || Fermer l'onglet (courant)<br />
|-<br />
| Move Tab Left/Right || Déplacer l'onglet à gauche / droite<br />
|}<br />
<br />
==Informatique (terminologie)==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| ACPI (Advanced Configuration and Power Interface) || ne pas traduire le sigle<br />
Traduction des états globaux (renseigné à l'occasion de la traduction de klaptopdaemon.po) :<br />
- S1 (Power On Standby ou POS) -> veille<br />
- S3 (Sleep, connu comme STR (suspend to ram)) -> veille (en mémoire)<br />
- S4 (Hibernation, connu comme STD (suspend to disk)) -> veille prolongée (sur disque)<br />
<br />
|-<br />
| APM (Advanced Power Management) || ne pas traduire le sigle (sinon : gestion avancée de l'alimentation)<br />
Traduction des états globaux (renseigné à l'occasion de la traduction de klaptopdaemon.po) :<br />
- Standby -> veille<br />
- Suspended -> veille (en mémoire)<br />
- Hibernation -> veille prolongée (sur disque)<br />
<br />
<br />
|-<br />
| add-ons || modules complémentaires<br />
|-<br />
| applet || applet (ne pas traduire, utiliser le genre féminin)<br />
Remarque : le genre masculin est normalement recommandé, mais KDE-fr utilise le genre féminin.<br />
<br />
|-<br />
| authentication || authentification<br />
Remarque : allez aussi voir l'élément « login ».<br />
<br />
|-<br />
| backend || <br />
[à discuter / valider par KDE-fr]<br />
moteur ? programme fondamental ? système de... (printer backend -> système d'impression) ?<br />
<br />
|-<br />
| background color / background || <br />
background color -> couleur de fond<br />
background -> fond d'écran (dans le contexte de bureau) ou arrière-plan<br />
<br />
|-<br />
| backup || verbe : sauvegarde(r) (attention à ce que ce ne soit pas dans le sens de « to save »)<br />
nom : copie de sécurité, copie de secours, copie<br />
<br />
|-<br />
| bug / debugger || bogue / débogueur<br />
send a bug report -> signaler un bogue<br />
report a bug -> rapport de bogue, signaler un bogue (rapporter, ce n'est pas bien ;) )<br />
<br />
<br />
|-<br />
| built-in || module interne<br />
|-<br />
| byte || octet<br />
En anglais le symbole est « B » (et pas « b »). En français le symbole est « o »<br />
<br />
|-<br />
| kb, kbyte || ko (« k » minuscule), kilooctet<br />
1000 (ou 10^3) octets, mais l'usage néglige les normes et « ko » est souvent employé pour signifier 1024 (ou 2^10) octets.<br />
ko ou Ko ? [à discuter / valider] D'après http://fr.wikipedia.org/wiki/kilooctet et http://fr.wikipedia.org/wiki/kilo, on devrait utiliser « Ko » en informatique, alors que dans le système international « k » doit être utilisé pour « kilo » (10^3). Quid ?<br />
<br />
|-<br />
| kiB, kibibyte || Kio (« k » majuscule), kibioctet<br />
1024 (ou 2^10) octets. En revanche ce n'est pas une unité du système international.<br />
<br />
|-<br />
| library || bibliothèque<br />
|-<br />
| Mb, Mbyte || Mo (« m » majuscule), mégaoctet<br />
1 000 000 (ou 10^6) octets, mais l'usage néglige les normes et « Mo » est souvent employé pour signifier 1 048 576 (ou 2^20) octets.<br />
<br />
|-<br />
| MiB, mebibyte || Mio (« m » majuscule), mébioctet<br />
1024 (ou 2^10) kibioctets, soit 1 048 576 (ou 2^20) octets. En revanche ce n'est pas une unité SI.<br />
<br />
|-<br />
| charset || jeu de caractères, table de caractères<br />
|-<br />
| cipher || « chiffrement » ou plus rarement « algorithme de chiffrement ». Dans certains cas : « chiffre » (selon la définition, « a cipher is a cryptographic algorithm used for encryption or decryption »).<br />
|-<br />
| (to) compact / (to) compress || compresser<br />
Remarque : « compacter » peut être utilisé dans le cas où on supprime les « trous » d'un fichier, par exemple pour un fichier de base de données ou une boîte de courriel (par ex. dans KMail).<br />
<br />
|-<br />
| (auto)completion || (auto-)complétion<br />
complétion, auto-complétion (cf. http://www.cnrtl.fr/lexicographie/compl%C3%A9tion, http://glossaire.traduc.org)<br />
[https://mail.kde.org/pipermail/kde-francophone/2024-January/001614.html Discussion en Janvier 2024]<br />
|-<br />
| credentials || identifiants (de connexion dans une phrase complète)<br />
|-<br />
| (to) crypt, encrypted, encryption || (to) crypt -> chiffrer<br />
(to) uncrypt -> déchiffrer<br />
encrypted -> chiffré<br />
encryption -> chiffrement<br />
Remarques :<br />
- utiliser « décrypter » uniquement lorsque l'on tente de « traduire, mettre en clair un texte chiffré dont on ne possède pas la clef ou le code » (extrait du dictionnaire de l'Académie française).<br />
- il vaut mieux ne pas utiliser le terme « crypter ».<br />
<br />
<br />
|-<br />
| daemon || démon (au sens d'un service du système)<br />
|-<br />
| digest || empreinte<br />
Remarque : MD5 (« Message Digest function 5 ») est une fonction de hachage retournant une empreinte MD5.<br />
<br />
|-<br />
| directory / folder || dossier<br />
home directory -> dossier personnel<br />
Remarque : dans le contexte de système d'exploitation / gestion de fichiers, ne pas utiliser « répertoire » qui peut porter à confusion (on peut penser au répertoire téléphonique).<br />
<br />
|-<br />
| display || affichage<br />
|-<br />
| download / upload || download -> télécharger, upload -> envoyer [5 mai 2008].<br />
Choix non retenu pour upload : téléverser.<br />
<br />
|-<br />
| drag and drop, drag'n drop || glisser-déposer (préféré à glisser / déposer ?)<br />
|-<br />
| driver || pilote<br />
|-<br />
| duplex printing || impression recto / verso<br />
|-<br />
| edit || éditer (dans le contexte d'un éditeur de texte, de courrier, ou d'autre chose).<br />
modifier, dans le reste des cas.<br />
Remarque : pour l'entrée de menu « Edition », on laisse tomber, c'est « Édition ». Stupide mais l'habitude est là.<br />
<br />
|-<br />
| embedded part || inclusion<br />
|-<br />
| encapsulation || encapsulation<br />
|-<br />
| (to) encode / encoding || (to) encode -> encoder<br />
[à discuter / valider par KDE-fr]<br />
encoding -> encodage ? codage ? <br />
De souvenir, la discussion sur la liste ne s'est pas soldée par un choix...<br />
<br />
Eric B. : "encodage" selon le dico Robert : Processus de production d'un message selon un système de signes (codes) susceptible de transmettre de l'information. Production de messages (énoncés, phrases), dans une langue naturelle. Contraire : decodage<br />
Gérard D. : L'encodage, c'est l'action de faire un codage.<br />
<br />
<br />
|-<br />
| file || fichier<br />
|-<br />
| firewall || pare-feu<br />
|-<br />
| groupware || collaboration<br />
Traduisez « groupware » par « logiciel de collaboration » lorsque c'est un nom ou « collaboration » dans le contexte d'un adjectif. La partie « logiciel de » est optionnelle car il y a des cas où cela ne s'applique pas, surtout quand « groupware » est utilisé comme adjectif. Exemples : « groupware folder », « groupware invitations ».<br />
Remarque : validé par la liste KDE-fr le 7 sept. 2010. <br />
<br />
|-<br />
| HTML || <br />
HTML (ne pas traduire)<br />
Remarque : s'il fallait expliciter le sigle, mettre « langage de balisage hypertexte » ou « langage de marquage hypertexte ».<br />
<br />
|-<br />
| hall of fame || panthéon<br />
|-<br />
| handler || gestionnaire<br />
|-<br />
| header / footer || en-tête (genre masculin) / pied de page<br />
|-<br />
| high scores || meilleurs scores<br />
|-<br />
| host || hôte ou machine (selon le contexte) [23 avr. 2008].<br />
|-<br />
| icon || icône (genre féminin)<br />
Remarque : écrire ce mot avec un genre masculin est considéré comme une erreur, car c'est un anglicisme.<br />
<br />
|-<br />
| input/output, I/O || entrée / sortie (ou entrées / sorties, cf. la remarque ci-dessous), E/S<br />
Remarque : La règle est d'exiger d'avoir « entrée » et « sortie » accordés identiquement (singulier ou pluriel mais pas les deux) et de toujours demander le pluriel, sauf après « une » ou « l' ». De plus, KDE-fr a décidé le 27 mars 2008 de ne pas mettre de pluriel après « d' » (par exemple : une paire d'entrée / sortie, un module d'entrée / sortie).<br />
<br />
|-<br />
| joystick || joystick (ne pas traduire)<br />
Remarque : « manette de jeu » serait un bon candidat mais le choix de KDE-fr, au 01 avr. 2008, est de ne pas traduire le terme.<br />
<br />
|-<br />
| login || identifiant<br />
Remarque : identifier c'est connaître l'identité, authentifier c'est la vérifier.<br />
Remarque : ne pas utiliser « nom de connexion ».<br />
<br />
|-<br />
| monitor || moniteur<br />
|-<br />
| mouse || souris<br />
Remarque : « bouton central de la souris » est préféré à « bouton du milieu ».<br />
<br />
|-<br />
| a package/to package || a package -> un paquetage<br />
to package-> empaqueter (ou « mettre en paquet », « mis en paquet »)<br />
|-<br />
| passphrase || mot de passe, phrase de passe (semble un peu curieux aux yeux de certains)<br />
Remarque : la passphrase protège une clé mais n'en est pas une.<br />
<br />
|-<br />
| path || emplacement<br />
full path -> emplacement absolu, relative path -> emplacement relatif [19 avr. 2008].<br />
Remarque : ne pas utiliser « chemin » sauf dans le contexte d'une application de dessin.<br />
<br />
|-<br />
| plugin || module externe (« externe » n'est pas obligatoire dans certains cas, afin de ne pas alourdir la phrase)<br />
Remarque : ne pas traduire par « additif » ou « greffon ».<br />
<br />
|-<br />
| plain text || texte simple<br />
Remarque : « texte en clair » est souvent utilisé, et n'a de sens qu'en comparaison avec des fichiers binaires [19 avr. 2008].<br />
<br />
|-<br />
| popup || <br />
[à discuter / valider par KDE-fr]<br />
menu contextuel ?<br />
Remarque : ne pas utiliser « fenêtre|menu surgissant » ?!<br />
<br />
|-<br />
| proxy || Utiliser « serveur mandataire » au lieu de « serveur de proximité » ou « proxy ».<br />
|-<br />
| regular expresion || expression rationnelle<br />
Remarque : avant févr. 2008, le choix était « expression régulière ».<br />
<br />
|-<br />
| repository || dépôt (dans le sens des solutions logicielles de suivi de versions)<br />
<br />
|-<br />
| root || Contexte d'être humain : utiliser « superutilisateur » (au lieu d' « administrateur ») ; d'après Seb. R. le 17 mars 2008, ça aurait été validé il y a longtemps sur la liste.<br />
Contexte de nom d'utilisateur : utiliser « root » ou « utilisateur root ».<br />
<br />
|-<br />
| scan || verbe « to scan » -> numériser, numérisation<br />
appareil de nom « scanner » -> scanner (ne pas traduire, décision KDE-fr du 04 avr. 2008)<br />
<br />
|-<br />
| scheme || modèle<br />
|-<br />
| screenshot || <br />
[à discuter / valider par KDE-fr]<br />
capture d'écran, copie d'écran (si ce dernier choix est validé, il va falloir changer beaucoup de passages dans les docs « graphiques », ex. : KSnapshot qui utilise « capture d'écran »).<br />
<br />
|-<br />
| script || script<br />
|-<br />
| slideshow || diaporama<br />
suite à une remarque de Anne-Marie M. le 20 juil. 2009<br />
<br />
|-<br />
| socket || socket (ne pas traduire, genre masculin « un socket »)<br />
|-<br />
| spam || courrier indésirable<br />
Remarque : « pourriel » (traduction québécoise) n'a pas été retenu, mais il est possible de l'utiliser quand la chaîne traduite doit être courte (nom de colonne, de dossier, etc.).<br />
<br />
|-<br />
| swap || espace d'échange (dans un contexte de système d'exploitation)<br />
Remarque : le « swap » peut être constitué d'une ou plusieurs partitions et / ou d'un ou plusieurs fichiers.<br />
<br />
|-<br />
| syntax highlighting || coloration syntaxique<br />
|-<br />
| system tray || boîte à miniatures<br />
(system) tray icon -> icône de|dans la boîte à miniatures<br />
<br />
|-<br />
| tag (et markup ?) || balise<br />
|-<br />
| template || modèle<br />
|-<br />
| thread || fil de discussion (dans un contexte de courrier)<br />
fil d'exécution (dans un contexte de processus / programmation). Dans le cas d'une application de développement comme KDevelop, laisser le mot « thread » ne choque pas.<br />
<br />
|-<br />
| tutorial || tutoriel<br />
<br />
|-<br />
| umount, unmount || libérer<br />
Contexte : il s'agit de la commande pour libérer un système de fichiers.<br />
Remarque : ne pas utiliser « démonter » ou « désinitialiser ».<br />
<br />
|-<br />
| eject || retirer<br />
Contexte : il s'agit de pourvoir retirer le média (ou périphérique) en toute sécurité.<br />
Remarque : ne pas utiliser « déconnecter » (qui fait trop « débranchement physique ») ou « débrancher ».<br />
<br />
|-<br />
| update / refresh || actualiser / rafraîchir<br />
|-<br />
| wrapper || <br />
Pour un contexte de programmation : adaptateur (ex. : « Un adaptateur pour composant graphique Plasma KCharSelect ») [21 juil. 2008].<br />
Autres choix ayant été proposés : enveloppe pour (programme enveloppant l'exécution d'un autre programme), couche d'enrobage autour de, couche d'encapsulation, encapsuleur, conteneur<br />
<br />
|}<br />
<br />
==KDE==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| activity || Traduisez « activity » par « agencement » dans le contexte du bureau Plasma. Ex. de fichiers concernés : libplasma.po, desktop_kdebase et plasma-desktop.po<br />
<br />
|-<br />
| application development framework || <br />
[à discuter / valider par KDE-fr]<br />
infrastructure de développement d'applications (semble mieux convenir dans bien des cas)<br />
Choix précédent : environnement de développement d'applications.<br />
<br />
|-<br />
| dock / undock || dock -> placer (sur le tableau de bord)<br />
undock -> retirer (du tableau de bord)<br />
<br />
|-<br />
| documentation browser || navigateur de documentation<br />
Choix précédent : visualiseur de documentation.<br />
<br />
|-<br />
| frontend || interface utilisateur<br />
|-<br />
| GUI (graphical user interface) || GUI (ne pas traduire)<br />
Remarque : « graphical user interface » se traduit par « interface graphique ».<br />
<br />
|-<br />
| KDE ;) || Environnement de Bureau KDE, ou KDE (tout simplement)<br />
Info : KDE signifie « Kool Desktop Environment ».<br />
<br />
|-<br />
| kioslave, ioslave || module d'entrée / sortie (pas de « s »), module d'E/S<br />
Choix précédent : un gestionnaire de protocole réseau, un module de protocole réseau (mais il ne s'agit pas forcément d'un protocole réseau).<br />
<br />
|-<br />
| office application suite || suite bureautique<br />
Choix précédent : suite d'applications de bureautique<br />
<br />
|-<br />
| panel || <br />
<br />
« control panel » : Centre de Configuration<br />
panneau : on y met des composants graphiques Plasma, le « bidule » qui est à droite dans Dolphin ou toute autre « zone » d'une application (dans ce cas « tableau de bord » n'est pas approprié)<br />
tableau de bord : le « machin » par défaut en bas de l'écran qui accueille les composants graphiques plasma de tâches, l'heure... (le « panneau » principal est appelé « tableau de bord »)<br />
<br />
Choix non retenu (?) : zone de notification<br />
<br />
|-<br />
| profile || profil (utilisateur)<br />
|-<br />
| runner || lanceur<br />
|-<br />
| [..] service menus || menus contextuels de [..] (exemple : Konqueror Service Menus)<br />
<br />
|-<br />
| show tooltips || afficher les infobulles<br />
Choix précédent : tooltips -> bulles d'aide<br />
<br />
|-<br />
| taskbar || barre des tâches (et pas « barre de tâches » ;) )<br />
|-<br />
| toggle... || (dés)activer...<br />
|-<br />
| virtual desktop || bureau virtuel<br />
|}<br />
<br />
==Widgets==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| button || bouton<br />
|-<br />
| caption || légende (plutôt que sous-titre)<br />
<br />
|-<br />
| check || coche (contexte : dans un menu)<br />
|-<br />
| checkbox || case à cocher<br />
|-<br />
| child window || fenêtre fille<br />
|-<br />
| to click / a click || cliquer / un clic<br />
|-<br />
| combo box, combo, drop-down menu || liste déroulante<br />
|-<br />
| cursor || pointeur<br />
|-<br />
| desktop || bureau<br />
|-<br />
| dialog || boîte de dialogue<br />
|-<br />
| Discover || Discover (le nom de l'installeur d'applications/modules externes de KDE)<br />
|-<br />
| group box || ???<br />
|-<br />
| iconify / deiconify || icônifier / dé(s)icônifier (bien que ce dernier puisse sembler bizarre)<br />
|-<br />
| label || zone de texte, étiquette, texte fixe<br />
|-<br />
| listbox || liste de choix<br />
|-<br />
| look 'n feel || apparence (et comportement graphique)<br />
|-<br />
| maximise, maximize (anglais US) || [à discuter / valider par KDE-fr]<br />
agrandir, maximiser (c'est du moins traduit ainsi dans KDE 3.5 dans le contexte d'une fenêtre). « Agrandir » serait peut-être plus élégant ? [stable KDE 4.0.2 : maximise apparaît 29 fois, agrandir 8 fois ; trunk KDE4.1 : maximise apparaît 27 fois, agrandir 12 fois]<br />
|-<br />
| menu || menu<br />
|-<br />
| menu item || élément de menu<br />
|-<br />
| menubar || barre de menus<br />
|-<br />
| open/save file dialog || boîte de dialogue d'ouverture / enregistrement de fichier<br />
|-<br />
| parent window || fenêtre mère<br />
|-<br />
| progressbar || barre de progression, d'avancement<br />
|-<br />
| radiobutton || bouton radio<br />
|-<br />
| root window || fenêtre fond d'écran<br />
|-<br />
| scrollbar || barre de défilement, ascenseur<br />
|-<br />
| sidebar || panneau latéral<br />
|-<br />
| slider || curseur<br />
Remarque : validé sur la liste KDE-fr le 2010-07-19 suite à une discussion initiée le 2010-01-20. Précédente traduction : barre de défilement.<br />
<br />
|-<br />
| spinbox / spin box || ??? compteur ?<br />
Remarque : il s'agit d'un champ texte avec de petits boutons en forme de flèche vers le haut et le bas, situés généralement à l'extrémité droite du champ, et qui permettent d'augmenter ou de diminuer la valeur spécifiée dans le champ.<br />
<br />
|-<br />
| splitter, spacer, separator || séparateur [31 déc. 2008].<br />
Remarque : « splitter » représente le composant graphique permettant de redimensionner une boîte de dialogue aux dépens d'une autre.<br />
Choix précédent : splitter -> barre de séparation.<br />
<br />
|-<br />
| statusbar || barre d'état<br />
|-<br />
| tab || onglet<br />
|-<br />
| textfield (QLineEdit) || zone de saisie<br />
|-<br />
| timer || minuterie, minuteur<br />
Remarque : c'est différent d'un chronomètre qui, lui, compte, alors qu'un minuteur fait un compte à rebours / décompte le temps.<br />
<br />
|-<br />
| titlebar || barre de titre<br />
|-<br />
| toolbar || barre d'outils<br />
Remarque : traduisez « xxx toolbar » par « barre de xxx » (ex : main toolbar -> barre principale).<br />
<br />
|-<br />
| widget || composant graphique, composant graphique Plasma, composant d'interface dans le cas d'une IHM <br />
<br />
|-<br />
| window || fenêtre<br />
|-<br />
| wizard / helper || assistant<br />
|}<br />
<br />
==Bureautique==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Free/Busy list, Free/Busy || informations de disponibilité, disponibilités (forme courte)<br />
Remarque : le contexte est KDE PIM. Free/Busy est décrit dans le RFC 2445 sur le format ical, c'est donc utilisé aussi bien par Outlook que Lotus Notes ou Kontact.<br />
<br />
|}<br />
<br />
==Internet==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| bookmark || signet<br />
|-<br />
| FAQ, Frequently Asked Questions || Foire Aux Questions<br />
|-<br />
| frame || cadre (souvent traduit ainsi)<br />
|-<br />
| homepage, web site || site web (pas de majuscule à « web », car ce n'est pas un nom propre), page d'accueil (éventuellement).<br />
Remarque : site Internet, bien que très employé, est un abus de langage, Internet désignant un réseau.<br />
<br />
|}<br />
<br />
==Réseau==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Download || Vitesse de réception (« Réception » lorsque la place est limitée)<br />
|-<br />
| Upload || Vitesse d'émission (« Émission » lorsque la place est limitée)<br />
|-<br />
<br />
|}<br />
<br />
<br />
<br />
===Courrier électronique===<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| account || compte<br />
|-<br />
| attach || joindre<br />
|-<br />
| attachment || pièce jointe<br />
|-<br />
| (to) fetch, (to) retrieve || récupérer ou télécharger<br />
|-<br />
| CC, Carbon Copy || CC, copie conforme<br />
Remarque : ne pas utiliser « copie carbone », qui fait trop rétro ;).<br />
<br />
|-<br />
| BCC, Blind Carbon Copy || copie cachée<br />
|-<br />
| Reply-To || répondre à<br />
|-<br />
| subject || sujet<br />
|-<br />
| mail, e-mail, email (electronic mail) || « courrier électronique » ou tout simplement « courriel » quand il n'y a pas la place [juil. 2008].<br />
Remarque [http://www.culture.gouv.fr/culture/dglf/cogeter/20-06-03-courriel.htm] : pour l'Académie française, on envoie un courrier électronique (ou message électronique ou courriel) à une adresse (de courrier) électronique, via une messagerie électronique (un système de...).<br />
Dans le sens de « messagerie électronique », on trouve aussi les termes « courriel » et « courrier électronique ».<br />
« Mél. » est toléré comme abréviation, sur le modèle de « Tél. ».<br />
<br />
|-<br />
| mail composer || éditeur de courrier<br />
|-<br />
| mailbox || boîte aux lettres<br />
|-<br />
| mailing-list || liste de discussion<br />
liste de diffusion pour une liste en lecture seule (c.-à-d. sur laquelle on n'envoit pas de courriel)<br />
<br />
|}<br />
<br />
==Multimédia==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| || ===>> Termes généraux du multimédia (son, image, etc.) <<=== <br />
|-<br />
| audio || audio, sonore<br />
|-<br />
| bright || clair<br />
|-<br />
| CD || CD<br />
|-<br />
| CDDB || CDDB<br />
|-<br />
| channel || canal<br />
|-<br />
| colorset || palette<br />
|-<br />
| fade in / fade out || ouverture / fermeture en fondu. Amarok utilise respectivement « fondu » et « fondu de fin ». Qui dit mieux ?<br />
to fade : (s')estomper<br />
<br />
|-<br />
| FX || Effet<br />
|-<br />
| fuzzy || flou<br />
|-<br />
| (General) Midi || (General) Midi<br />
|-<br />
| karaoke || karaoké<br />
|-<br />
| keep ratio || conserver l'échelle, respecter l'échelle<br />
|-<br />
| media || média<br />
Remarque : le mot est invariant (un média, des média).<br />
Remarque : ne pas traduire par « support », car on est déjà habitué au terme « média », par exemple dans les logiciels de gravure : « insérez le média ».<br />
|-<br />
| mixer || table de mixage<br />
|-<br />
| noise || bruit, souffle<br />
|-<br />
| panoramic || panoramique ? [à discuter / valider par KDE-fr]<br />
Il y a eu une discussion sur la liste avec des considérations intéressantes de spécialistes du son -> rechercher dans les archives.<br />
<br />
|-<br />
| player || lecteur<br />
Remarque : on dit « jouer un son ».<br />
<br />
|-<br />
| switch || commutateur<br />
|-<br />
| thumbnails || aperçu (ou miniature ?) (aperçu, et pas vignette, car 200 traductions en aperçu contre 16 en vignette dans KDE au 06 janv. 2008).<br />
|-<br />
| || ===>> Termes ayant trait à l'interface d'un lecteur multimédia (contrôles de lecture d'un lecteur multimédia) <<=== <br />
|-<br />
| Backward || Reculer, (Retour) Arrière<br />
|-<br />
| Eject || éjection, éjecter<br />
|-<br />
| (Fast) Forward || Avancer, Avance (rapide)<br />
|-<br />
| Loop || Boucle, En boucle<br />
|-<br />
| Mute / muted || Mettre en sourdine / muet (contraire : non muet), mis en sourdine, sourd, bouché<br />
|-<br />
| Pause / Paused || Pause / En pause<br />
|-<br />
| Play || Lecture<br />
|-<br />
| Random play / Shuffle || Lecture aléatoire / Mélanger<br />
|-<br />
| (to) Record / recorder || Enregistrer / enregistreur<br />
|-<br />
| (to) Seek || Aller à la position<br />
|-<br />
| Stop(ped) || arrêter, arrêté, (à l') arrêt (nous préférons « arrêt » à « stop »)<br />
|-<br />
| || ===>> Termes ayant trait à l'interface d'un lecteur multimédia (autres que les contrôles de lecture), l'affichage à l'écran (OSD) <<=== <br />
|-<br />
| Playing || En lecture<br />
|-<br />
| Playlist || Liste de lecture<br />
|-<br />
| secs || s (la seconde, unité du système international)<br />
|-<br />
| skin || thème, habillage, apparence<br />
Remarque : ne pas utiliser revêtement<br />
<br />
|-<br />
| Time || Temps<br />
|-<br />
| Vol(ume) || Vol(ume)<br />
|-<br />
| || ===>> Termes ayant trait aux propriétés d'un fichier multimédia <<=== <br />
|-<br />
| Album || Album<br />
|-<br />
| Artist || Artiste<br />
|-<br />
| Collection || Collection<br />
|-<br />
| Disc, Disk || Disque<br />
|-<br />
| Lyrics || Paroles<br />
|-<br />
| Music || Musique<br />
|-<br />
| Song || Chanson<br />
|-<br />
| Title || Titre<br />
|-<br />
| Track || Piste<br />
|-<br />
| || ===>> Instruments, etc. <<=== <br />
|-<br />
| Acoustic || (instrument non synthétique)<br />
|-<br />
| Bass || Basse<br />
|-<br />
| Brass || Cuivres<br />
|-<br />
| Choir || Choeur, Chorale<br />
|-<br />
| Drum || (une des innombrables percussions)<br />
|-<br />
| Elec(tric) || Elec(trique)<br />
|-<br />
| Guitar || Guitare<br />
|-<br />
| Lead(er) || Fondamental<br />
|-<br />
| Organ || Orgue<br />
|-<br />
| Pad || Bloc<br />
|-<br />
| Piano || Piano<br />
|-<br />
| Sax || Saxophone<br />
|-<br />
| Strings || Cordes<br />
|-<br />
| Synth(etic) || Electron(ique)<br />
|-<br />
| Voice || Voix<br />
|-<br />
| Woodwind || Bois ou instrument à vent<br />
|}<br />
<br />
==Graphisme==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| (to) colorize || colorer (transitif) ; ex. : « l’art de colorer le verre » (wikipedia).<br />
colorier (dans certains contextes, par ex. un logiciel de dessin pour enfants) : appliquer des couleurs sur quelque chose, notamment en utilisant des crayons de couleur ; ex. : « il a colorié son dessin » (wikipedia).<br />
validé par la liste KDE-fr le 16 sept. 2008.<br />
Remarque : ne pas traduire par « coloriser » (anglicisme).<br />
<br />
|-<br />
| frame || image<br />
Pas la peine de mettre « image individuelle ».<br />
<br />
|-<br />
| pixmap || image (pixmap)<br />
|-<br />
| sprite || animation ou composant graphique selon le contexte<br />
Un sprite est une animation, une suite de frames mises dans un certain ordre.<br />
<br />
|}<br />
<br />
==Jeux==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| move || coup (dans le sens coup à jouer, coup possible, coup suivant ou précédent)<br />
<br />
|}<br />
<br />
==Développement==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| delete || supprimer<br />
|-<br />
| implementation || implémentation<br />
|-<br />
| invoke || exécuter<br />
|}<br />
<br />
==Documentations==<br />
<br />
{| class="wikitable"<br />
! Original (en anglais) !! Choix de traduction de KDE-fr<br />
|-<br />
| Onscreen fundamentals || Utilisation de l'interface<br />
|}</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99724GSoC/2024/Ideas2024-01-11T17:23:43Z<p>Jjazeix: /* Project: Something that you're totally excited about */</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.</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99723GSoC/2024/Ideas2024-01-11T17:20:22Z<p>Jjazeix: more info about what to add in the 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 />
'''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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024/Ideas&diff=99682GSoC/2024/Ideas2024-01-08T13:03:37Z<p>Jjazeix: Created page with "[[Konqi is giving a lesson!]] See also: GSoC Instructions, Last year ideas == Guidelines == === Information for Students === These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looki..."</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 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 />
==== 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 />
'''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>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2024&diff=99681GSoC/20242024-01-08T13:01:12Z<p>Jjazeix: Created page with "<br> See the page with the original ideas: GSoC 2024 Ideas And the preliminary status reports from students: GSoC 2024 Status Reports Category:Mentoring"</p>
<hr />
<div><br><br />
See the page with the original ideas: [[/Ideas|GSoC 2024 Ideas]]<br />
<br />
And the preliminary status reports from students: [[/StatusReports|GSoC 2024 Status Reports]]<br />
<br />
[[Category:Mentoring]]</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC&diff=99680GSoC2024-01-08T13:00:49Z<p>Jjazeix: add 2024</p>
<hr />
<div>[[Category:Mentoring]]<br />
[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
''[[/2024/Ideas|Ideas for GSoC 2024]]''<br />
<br />
See also: [[/2023/]], [[/2022/]], [[/2021/]], [[/2020/]], [[/2019/]], [[/2018/]], [[/2017/]], [[/2016/]], [[/2015/]], [[/2014/]], [[/2013/]], [[/2012/]], [[/2011/]], [[/2010/]], [http://techbase.kde.org/Projects/Summer_of_Code previous GSoCs]<br />
<br />
All students and developers are welcome to participate in the Summer of Code program with KDE. Here's how.<br />
<br />
== All participants ==<br />
<br />
Mentors, administrators and students: read [https://developers.google.com/open-source/gsoc/ Summer of Code] occasionally. Also read the [https://developers.google.com/open-source/gsoc/faq Summer of Code FAQ].<br />
<br />
All participants will need a Google account in order to join the program. So, save time and create one now. In addition, all KDE students need to join the [https://mail.kde.org/mailman/listinfo/kde-soc KDE student list, KDE-Soc]. In addition, if you do not yet have a [https://identity.kde.org KDE account]; set that up now.<br />
<br />
=== Programming Language ===<br />
<br />
While the main KDE development occurs in C++, we do have bindings for many other languages, including (but not limited to) Python, Ruby and C#. Some bindings are more stable and more mature than others. Some may not be suitable yet for serious development; be sure to take that into account before making your choice.<br />
<br />
C++ will be accepted for any project. Submissions and ideas for projects in any other language should specifically mention the choice.<br />
<br />
== Instructions for potential contributors ==<br />
<br />
People wishing to participate in Summer of Code must realise this is an important professional opportunity. You will be required to produce code for KDE during the coding period. Your mentors, KDE developers, will dedicate a portion of their time to mentoring you. Therefore, we seek candidates who are committed to helping KDE long-term and are willing to both do quality work, and be proactive in communicating with your mentor(s).<br />
<br />
You don't have to be a proven developer -- in fact, this whole program is meant to facilitate joining KDE and other Open Source communities. However, experience in coding and/or experience with KDE/Qt libraries and applications is welcome. The KDE community maintains a separate wiki page with general information about [[Getinvolved/development|getting started]] with KDE development. '''You are required to fix some bugs and link that work on your proposal'''. '''Proposals with no previous work with the KDE community will not be considered'''. '''Proposals related to the current KDE goals are warmly welcomed'''.<br />
<br />
You should start learning the components that you plan on working on before the start date. KDE developers are available on mailing lists and on Matrix/IRC for help. The timeline from Google reserves a lot of time for bonding periods; use that time wisely. Good communication is key. You should plan to communicate with your team at least daily, and formally report progress and plans weekly. '''Contributors who neglect active communication will be failed'''.<br />
<br />
=== General instructions ===<br />
<br />
First of all, please read the [[#All_participants|instructions common to all participants]] and the [https://developers.google.com/open-source/gsoc/faq GSoC FAQ]. Pay special attention to the '''Eligibility''' section of the FAQ.<br />
<br />
=== Recommended steps ===<br />
<br />
# Join the [https://mail.kde.org/mailman/listinfo/kde-devel KDE-devel list] and [https://userbase.kde.org/IRC_Channels #kde-devel IRC channel], introduce yourself, and meet your fellow developers<br />
# Read [https://developers.google.com/open-source/gsoc/ Google's instructions for participating] and the [https://google.github.io/gsocguides/student/ GSoC Student Manual]<br />
# Take a look at the [[/2022/Ideas|list of ideas]]<br />
# Come up with project that you're interested in<br />
# Write a first draft [[#Student proposal guidelines|proposal]] and get someone to review it<br />
# Remember: you must link to work such as commits in your proposal<br />
# Remember to explain your interest in KDE as an organization as well as the project<br />
# Read [https://teom.wordpress.com/2012/03/01/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/ How to write a kickass proposal for GSoC]<br />
# Submit your proposal using [https://summerofcode.withgoogle.com/ Google's web interface] ahead of the deadline<br />
# Submit proof of [https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation eligibility] well ahead of the deadline<br />
<br />
Coming up with an interesting idea is probably the most difficult part. It should be something interesting for KDE, for Open Source in general and for you. And it must be something that you can realistically achieve in the time available to you.<br />
<br />
A good start is finding out what the most pressing issues are in the projects in which you are interested. Join the mailing lists for that project or go into its IRC channel: meet developers and your potential mentor, as well as start learning the codebase. We recommend strongly getting involved in advance of the beginning of GSoC, and we will look favorably on applications from students who have already started to act like Open Source developers.<br />
<br />
=== Potential contributor proposal guidelines ===<br />
<br />
A project proposal is what you will be judged upon. Write a clear proposal on what you plan to do, the scope of your project, and why we should choose you to do it. Proposals are the basis of the GSoC projects and therefore one of the most important things to do well. Proposals are ranked by project, so be sure to examine all suggested projects to increase your chances of selection. The proposal is not only the basis of KDE's decision of which student to choose, it has also an effect on Google's decision as to how many student slots are assigned to KDE. <br />
<br />
Below is the application template.<br />
<br />
'''Introduction'''<br />
<br />
Every software project should solve a problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. Include links to discussions, features, or bugs that describe the problem further if necessary.<br />
<br />
'''Project goals'''<br />
<br />
Be short and to the point, and perhaps format it as a list. Propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the Google Summer of Code term is what counts.<br />
<br />
'''Implementation'''<br />
<br />
Be detailed. Describe what you plan to do as a solution for the problem you defined above. Include technical details, showing that you understand the technology. Illustrate key technical elements of your proposed solution in reasonable detail. Include writing unit tests throughout the coding period, as well as code documentation. These critical elements cannot be left to the last few weeks of the program. If user documentation will be required, or apidox, etc. these should be written during each week, not at the end.<br />
<br />
'''Timeline'''<br />
<br />
Show that you understand the problem, have a solution, have broken it down into manageable parts, and that you have a realistic plan on how to accomplish your goal. Here you set expectations, so don’t make promises you can’t keep. A modest, realistic and detailed timeline is better than promising the impossible. Your timeline should be detailed; week by week, precisely what you plan to do each week.<br />
<br />
If you have other commitments during GSoC, such as a job, vacation, exams, internship, seminars, or papers to write, disclose them here. GSoC should be treated like a full-time job, and we will expect approximately 40 hours of work per week for half the coding period, or 20 hours over the duration. ''If you have conflicts, explain how you will work around them.'' If you are found to have conflicts which you did not disclose, you may be failed. <br />
<br />
Open and clear communication is of utmost importance. '''Include your plans for communication in your proposal; daily if possible.''' You will need to initiate weekly formal communication such as a blog post on the KDE Planet or detailed email to the team mail list. Lack of communication will result in you being failed.<br />
<br />
'''About me'''<br />
<br />
Provide your contact information (IRC nick, email, IM, phone) and write a few sentences about you and why you think you are the best for this job. '''Prior contributions to KDE are required; list your commits.''' Name people (other developers, students, professors) who can act as a reference for you. Mention your field of study if necessary. Now is the time to join the relevant Matrix/IRC channels, mail lists and blog feeds. We want you to be a part of our community, not just contribute your code.<br />
<br />
''Tell us if you are submitting proposals to other organizations, and whether or not you would choose KDE if given the choice.''<br />
<br />
''Other things to think about:''<br />
<br />
* Are you comfortable working independently under a supervisor or mentor who is several thousand miles away, and perhaps 12 time zones away? How will you work with your mentor to track your work? Have you worked in this style before?<br />
<br />
* If your native language is not English, are you comfortable working closely with a supervisor whose native language is English? What is your native language, as that may help us find a mentor who has the same native language?<br />
<br />
* After you have written your proposal, you should get it reviewed. Do not rely on the KDE mentors to do it for you via the web interface, although we will try to comment on every proposal. It is wise to ask a colleague or a developer to critique your proposal. Clarity and completeness are important.<br />
<br />
=== Hints ===<br />
<br />
'''Submit your proposal early''': early submissions get more attention from developers because that they have more time to read them. The more people see your proposal, the more it will be discussed.<br />
<br />
'''Do not leave it all to the last minute''': while it is Google that is operating the webserver, it would be wise to expect a last-minute overload on the server. So, be sure you send your application and proof of enrollment before the final rush. Also, applications submitted very late will get the least attention from mentors, so you may get a lower vote because of that. Submitting a draft early will give time for feedback from prospective mentors.<br />
<br />
'''Keep it simple''': Be concise and precise. Provide a clear, descriptive title. "My Project" is the worst possible title!<br />
<br />
'''Know what you are talking about''': Do not submit proposals that cannot be accomplished over a summer or that are not related to KDE. If your idea is unusual, be sure to explain why you have chosen KDE to be your mentoring organisation.<br />
<br />
'''Aim wide''': submit more than one proposal, in different areas of KDE. You are allowed to submit to another organisation as well. If you do submit more than one proposal, tell us that and which proposal you would choose, if both were selected. Former students would advise you to do one or two kick-ass proposals rather than trying to do three.<br />
<br />
=== Accepted Contributors ===<br />
<br />
Your primary responsibility is finishing your project under the guidance of your mentors. To do that, you must submit code regularly and stay in frequent and effective communication with your mentors and team. To pass the evaluations, you must do both the communication '''and''' the coding plus documentation. <br />
<br />
All contributors will create a report page linked from here: [https://community.kde.org/GSoC/2022/StatusReports Status Reports]. Keep this up-to-date, as this is one of our primary evaluation tools. Ensure that your blogs are on the [https://planetkde.org/ KDE Planet] and linked on the status page.<br />
<br />
== Instructions for mentors ==<br />
<br />
=== Ideas ===<br />
If you're a KDE developer and you wish to participate in Summer of Code, make a proposal in the [[GSoC/2023/Ideas|ideas page]], based what your KDE project needs.<br />
<br />
If you wish to mentor, please read the [[#All_participants|instructions common to all participants]] and the [https://developers.google.com/open-source/gsoc/faq#general Summer of Code FAQ]. Also, please contact the maintainer for your application or module and get the go-ahead from hir before editing the ideas page, adding your idea.<br />
<br />
Your idea proposal should be a brief description of what the project is, what the desired goals would be, what the student should know and an email address for contact. Students are not required to follow your idea to the letter, so regard your proposal as inspiration for the students.<br />
<br />
=== Mentoring ===<br />
Any KDE developer can be a mentor if you meet the GSoC eligibility requirements. We will potentially assign a student to you who has never worked on such a large project and will need some help. Make sure you're up for the task. Mentoring takes time, and lots and lots of communication.<br />
<br />
Before subscribing yourself as a mentor, please make sure that your application or module maintainer is aware of that. Ask them to send the Summer of Code KDE Administrators an email confirming your involvement in the team. This is just a formality to make sure you are a real person we can trust; the administrators cannot know all active developers by their Google account ID. Then ping us in IRC #kde-soc, Matrix #kde-soc:kde.org or [mailto:kde-soc-management@kde.org mail].<br />
<br />
Prospective mentors should read the [http://www.booki.cc/gsoc-mentoring mentoring guide]. Also, Federico Mena-Quintero has written some helpful information based on his experiences in previous years. [https://people.gnome.org/~federico/docs/summer-of-code-mentoring-howto/index.html His HOWTO] has some useful suggestions for anyone planning to mentor this year.<br />
<br />
You will subscribe to the [https://mail.kde.org/mailman/listinfo/kde-soc-mentor KDE-Soc-Mentor] mailing list to discuss ideas. You will need to read the proposals as they come in, and vote on the proposals, according to guidelines discussed on KDE-Soc-Mentor. Daily communication is required with your student during the Community Bonding period, and multiple times per week during the coding period.<br />
<br />
Finally, know that we will never assign you to a project you do not want to work on. We will not assign you more projects than you can/want to take on either. And you will have a backup mentor, just in case something unforeseen takes place.<br />
<br />
=== Signing up as a mentor ===<br />
<br />
To become a mentor:<br />
<br />
:# Contact the administrators in #kde-soc on Freenode to let them know for which project you want to mentor and give us your google-connected account email<br />
:# Log in to [https://summerofcode.withgoogle.com GSoC webapp] after being added as a mentor by one of the admins<br />
:# Subscribe to [https://mail.kde.org/mailman/listinfo/kde-soc-mentor KDE-soc-mentor mail list]<br />
<br />
== Instructions for module/application maintainers ==<br />
<br />
If you are a maintainer of a particular sub-project within KDE, you may be contacted by developers in your project about an idea they want to submit. This step is here only to make sure the developers are legitimate people involved in the project; KDE has become too big for the Summer of Code administrators to know each and every developer. Therefore, we rely on you.<br />
<br />
Judge whether the idea being proposed coincides with the general goals for your application/module. If you feel that is not the case, you should reply to your developer and suggest that they modify the proposal.<br />
<br />
Also, please contact the administrators with your module/application name. If we receive an application in the Google web interface regarding your module, we'll need your input to decide whether the application makes sense or not, whether it should be improved or not, etc. We will also contact you for recruiting mentors if your application turns out to be very popular.<br />
<br />
You do not need yourself to be a mentor, but we would like you to help us out.<br />
<br />
To reach the KDE administrators for Summer of Code, please write kde-soc-management@kde.org.<br />
<br />
== See also ==<br />
<br />
[[SoK|Season of KDE]]<br />
<br />
== External links ==<br />
<br />
[https://developers.google.com/open-source/gsoc/ Google Summer of Code]<br />
<br />
[https://developers.google.com/open-source/gsoc/faq Google Summer of Code FAQ]<br />
<br />
[https://mail.kde.org/mailman/listinfo/kde-soc KDE-Soc (KDE student mailing list)]<br />
<br />
[https://mentorship.kde.org/ KDE's Mentorship Website]</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Ideas/2024&diff=99440SoK/Ideas/20242023-12-06T07:16:54Z<p>Jjazeix: Remove idea with no mentor</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
<br />
==Ideas==<br />
<br />
=== General information ===<br />
<br />
All community members can submit an idea for a Season of KDE project. If you have an idea, reach out to the different people on the team to see if at least one core member would like to mentor and ask if you can add their contact info to the idea below.<br />
<br />
'''Do not add SoK ideas with no mentor and no contact info.'''<br />
<br />
=== Information for mentees ===<br />
<br />
These ideas were contributed by our KDE developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, contact the developers and find out more about the particular suggestion you are interested in.<br />
<br />
When writing your proposal or asking for help from the general KDE community do not assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given in the idea, 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 />
You need to submit your proposal to [https://invent.kde.org/teams/season-of-kde/2024 https://invent.kde.org/teams/season-of-kde/2024] before the deadline. Instructions for how to submit are included there.<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 />
=== Your Own Idea: Something that you're totally excited about ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but it isn't 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 love<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt, but it 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 />
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 />
<br />
<br />
=== Sustainability 1: Testing and development of "KEcoLab" ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' [https://community.kde.org/Goals/Sustainable_Software Sustainability] is one of KDE's goals for the next two years. One aspect of this goal is to measure the energy consumption of KDE software. To do this, it is necessary to access the lab in KDAB, Berlin, which can now be done remotely using [https://invent.kde.org/teams/eco/remote-eco-lab/-/issues "KEcoLab"]. A list of to-dos can be found at the repository's [https://invent.kde.org/teams/eco/feep/-/issues Issues], including testing and integration into KDE software repositories. For the project, please put together a plan for resolving the issues you would be interested in working on and check with mentors before submitting a proposal. <br />
<br />
'''Expected results:''' At the end of the project several of the to-dos in the above list should be resolved (while new ones may be added).<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of Git and Gitlab CI/CD, scripting (possibly including R), and a willingness to learn<br />
<br />
'''Mentors:''' Karanjot Singh @drquark:kde.org, Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix<br />
<br />
=== Sustainability 2: Improve "KdeEcoTest" emulation tool ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Measuring the energy consumption of KDE software is part of the [https://community.kde.org/Goals/Sustainable_Software Sustainable Software] goal for KDE, as mentioned above. To achieve this goal it is necessary to use an emulation tool to create Standard Usage Scenario scripts. [https://invent.kde.org/teams/eco/feep/-/blob/master/tools/KdeEcoTest/ "KdeEcoTest"] is one such tool, but it needs some fixes. A list of to-dos can be found at the FEEP repository's [https://invent.kde.org/teams/eco/feep/-/issues Issues] for "KdeEcoTest".<br />
<br />
'''Expected results:''' At the end of the project several of the to-dos in the above list should be resolved (while new ones may be added).<br />
<br />
'''Knowledge Prerequisite:''' Coding in Python, basic knowledge of git and automation tools<br />
<br />
'''Mentors:''' Emmanuel Charruau @allon:kde.org, Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix<br />
<br />
=== Sustainability 3: Selenium automation of energy measurement / accessibility tests for KDE applications ===<br />
<br />
'''Project type:''' Coding<br />
<br />
'''Brief explanation:''' Both the [https://community.kde.org/Goals/Sustainable_Software Sustainable Software] and the [https://community.kde.org/Goals/KDE_For_All Accessibility "KDE For All"] goals require automated testing -- which, in fact, is itself also fulfills the goal to [https://community.kde.org/Goals/Automate_and_systematize_internal_processes "Automate and Systematize Internal Processes"]. [https://invent.kde.org/sdk/selenium-webdriver-at-spi "Selenium Webdriver AT-SPI"] is just such a tool for achieving this (see Harald Sitter's [https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/ blog post]). The tooling is still in development, but we can already begin writing automated tests for several KDE applications and documenting the process for other developers. <br />
<br />
'''Expected results:''' At the end of the project this and other issues should be addressed, while new ones may be added (see also the [https://invent.kde.org/sdk/selenium-webdriver-at-spi/-/issues Issues] at the repo):<br />
<br />
* Automating the setup of Selenium Webdriver AT-SPI (see KDE Eco Selenium guide below for current setup procedure)<br />
* Automating tests for a subset of KDE apps<br />
* Bringing the [https://invent.kde.org/teams/eco/be4foss/-/merge_requests/79 KDE Eco Selenium guide] up-to-date<br />
<br />
'''Knowledge Prerequisite:''' Selenium<br />
<br />
'''Mentors:''' Nitin Tejuja @nitin.tejuja12:matrix.org, Emmanuel Charruau @allon:kde.org<br />
<br />
== External links ==<br />
<br />
[https://invent.kde.org/teams/season-of-kde/2024 Season of KDE 2024] at Invent, with information how mentees can submit SoK proposals.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Ideas/2024&diff=99264SoK/Ideas/20242023-11-19T15:32:44Z<p>Jjazeix: initial page</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
<br />
==Ideas==<br />
<br />
=== Information for mentees ===<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, contact the developers and find out more about the particular suggestion you're interested in.<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 in the idea, 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 />
You need to submit your proposal to [https://season.kde.org/profile season.kde.org] before the deadline.<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 />
=== Your Own Idea: Something that you're totally excited about ===<br />
<br />
'''Project type:''' Coding / Web Development / Promo / Translation<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but it isn't 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 love<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt, but it 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 />
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.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK&diff=99263SoK2023-11-19T15:31:44Z<p>Jjazeix: add SoK 2024</p>
<hr />
<div>[[Category:Mentoring]]<br />
[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
<br />
The Season of KDE (SoK) provides an opportunity for people to do mentored projects for KDE. There is a time limit and a certificate of completion, plus some goodies/swag for completed projects. For more details see the [[SoK/About|About Season of KDE]] article.<br />
<br />
If you want to be a mentee in Season of KDE, please subscribe to the kde-soc list: https://mail.kde.org/mailman/listinfo/kde-soc. The is the official channel where KDE contacts mentees in programs like SoK, among others (e.g., Google Summer of Code). Consider also subscribing to the Matrix room: https://webchat.kde.org/#/room/#kde-soc:kde.org.<br />
<br />
if you want to be a mentor, please subscribe to kde-soc-mentor list: https://mail.kde.org/mailman/listinfo/kde-soc-mentor<br />
<br />
For more information, see some previous announcements related to SoK on the Dot:<br />
<br />
* [https://dot.kde.org/2023/05/04/season-kde-2023-conclusion Season of KDE 2023: Conclusion (2023-05-04)]<br />
* [https://dot.kde.org/2023/01/23/season-kde-2023-mentees-and-projects Season of KDE 2023: Mentees and Projects (2023-01-23)]<br />
* [https://dot.kde.org/2022/12/14/join-season-kde-2023 Join Season of KDE 2023 (2022-12-14)]<br />
<br />
Also, check out this article from Heise Online (in German) about Season of KDE 2023:<br />
<br />
* [https://www.heise.de/news/Season-of-KDE-2023-Weitere-Schritte-zur-nachhaltigen-Desktop-Umgebung-8989974.html Season of KDE 2023: Weitere Schritte zur nachhaltigen Desktop-Umgebung (2023-05-08)]<br />
<br />
=== [https://season.kde.org Season of Kde Timeline] ===<br />
<br />
=== Current year: (WIP, not yet announced) ===<br />
<br />
'''SoK 2024'''<br />
:'''&rarr; [[/Ideas/2024|Ideas]]'''<br />
:'''&rarr; [[/2024/StatusReport|Status Reports]]'''<br />
<br />
=== Previous years: ===<br />
<br />
'''SoK 2023'''<br />
:'''&rarr; [[/Ideas/2023|Ideas]]'''<br />
:'''&rarr; [[/2023/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2022'''<br />
:'''&rarr; [[/Ideas/2022|Ideas]]'''<br />
:'''&rarr; [[/2022/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2021'''<br />
:'''&rarr; [[/Ideas/2021|Ideas]]'''<br />
:'''&rarr; [[/2021/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2020'''<br />
:'''&rarr; [[/Ideas/2020|Ideas]]'''<br />
:'''&rarr; [[/2020/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2018'''<br />
:'''&rarr; [[/Ideas/2018/|Ideas]]'''<br />
:'''&rarr; [[/2018/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2017'''<br />
'''&rarr; [[/Ideas/2017/|Ideas for SoK 2017]]'''<br />
<br />
'''SoK 2016'''<br />
'''&rarr; [[/Ideas/2016/|Ideas for SoK 2016]]'''<br />
<br />
'''SoK 2015'''<br />
'''&rarr; [[/Ideas/2015/|Ideas for SoK 2015]]'''<br />
<br />
'''SoK 2014'''<br />
:'''&rarr; [[/Ideas/2014/|Ideas]]'''<br />
:'''&rarr; [[/2014/StatusReport|Status Reports]]'''<br />
<br />
'''SoK 2013'''<br />
'''&rarr; [[/Ideas/2013/|Ideas for SoK 2013]]'''<br />
<br />
'''SoK 2012'''<br />
'''&rarr;''' [[Digikam/SoK2012/WallpaperPlugin|Digikam Wallpaper]], [[Digikam/SoK2012/AutoNR|Digikam Numbering]]<br />
<br />
'''SoK 2011'''<br />
'''&rarr;''' [[SoK/2011/Strigi|Strigi]], [[SoK/2011/Calligra/Words/ReferencesTool|Calligra]] , [[SoK/2011/digikam/presentation_view|Digikam]], [[KDEEdu/KLettres/SoC2011|KLettres]]<br />
<br />
'''[[/Administer the SoK|Administer the SoK]]'''<br />
<br />
== See also ==<br />
<br />
[https://community.kde.org/GSoC Google Summer of Code]<br />
<br />
== External links ==<br />
<br />
[https://season.kde.org Official website] (including timeline, login)</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98602Video Subtitles2023-10-11T06:05:18Z<p>Jjazeix: fix link</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read [[#How_to_create_a_new_project_directory|''How to create a new project directory'']] carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [[#Example|example]] below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the ''channels'' (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [https://kate-editor.org/ her favorite text editor] and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes.<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98601Video Subtitles2023-10-11T06:04:39Z<p>Jjazeix: fix link</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [[#Example|example]] below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the ''channels'' (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [https://kate-editor.org/ her favorite text editor] and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes.<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98600Video Subtitles2023-10-11T06:00:12Z<p>Jjazeix: fix link display</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [example](#example) below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the ''channels'' (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [https://kate-editor.org/ her favorite text editor] and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes.<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98599Video Subtitles2023-10-11T05:59:24Z<p>Jjazeix: /* Example */</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [example](#example) below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the ''channels'' (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [her favorite text editor](https://kate-editor.org/) and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes.<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98598Video Subtitles2023-10-11T05:59:02Z<p>Jjazeix: /* How to create a new project directory */</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [example](#example) below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the ''channels'' (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [her favorite text editor](https://kate-editor.org/) and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98597Video Subtitles2023-10-11T05:58:40Z<p>Jjazeix: /* Uploading */</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file ''dep5'' which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [example](#example) below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the *channels* (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [her favorite text editor](https://kate-editor.org/) and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=Video_Subtitles&diff=98596Video Subtitles2023-10-11T05:56:48Z<p>Jjazeix: convert missing bold/italics from markdown</p>
<hr />
<div>==HOWTO add Multiple Subtitles to your Videos==<br />
<br />
This document explains how you can use the power of KDE community's i18n volunteers to translate subtitles or closed captions for your videos.<br />
<br />
[[File:PeerTubeSubtitles.png|center|alt=A screenshot of a video on PeerTube showing multiple different languages subtitles in a list.]]<br />
<br />
With closed captions and translated subtitles, you will make your videos more accessible to more people. The default should be to always include them.<br />
<br />
===Creating your Subtitles===<br />
<br />
* You can create a subtitles file in [https://kdenlive.org Kdenlive], either by using the different voice recognition plugins Kdenlive supports, or be pasting and copying from your script.<br />
<br />
'''Note''' that it is best to start with a base subtitle file in English, as this is the language most translators will be able to translate from. We will assume from now on your original subtitle file is in English.<br />
* Saving the Kdenlive project will create an SRT file you can then pass on to the translators later.<br />
* When rendering, '''turn off''' the visibility of the subtitles track, otherwise Kdenlive will be hardcode the subtitles into your video and make subtitles in other languages, superimposed during playback, difficult to read.<br />
<br />
[[File:KdenliveSubs.png|center|alt=A screenshot of Kdenlive showing the subtitle track.]]<br />
<br />
===Checking your Subtitles===<br />
<br />
* It is a good idea to revise your subtitles in [https://subtitlecomposer.kde.org/ Subtitle Composer], as it offers a very intuitive and easy-to-use interface that will help you do that.<br />
<br />
[[File:SubtitleComposer.png|frame|center|alt=A screenshot of Subtitle Composer, a useful app for editing subtitles]]<br />
<br />
* When you are done, save your subtitles. We recommend you use the same name as the video file it will be used for, but with the ''.srt'' extension. For example, if your video file is called ''gcompris_tutorial_04.mp4'', make your subtitle file ''gcompris_tutorial_04.srt''.<br />
* Although underscores (_) are fine, make sure your subtitle filename does not contains spaces, dashes (-), commas, colons, or other characters that could make the scripts choke.<br />
<br />
===Uploading===<br />
<br />
* Make sure you have already uploaded your video to PeerTube and YouTube and you have the links to both.<br />
* Upload your SRT file to the correct project folder at https://invent.kde.org/websites/video-subtitles. If you are starting a new project for a new channel, create a new folder, but first '''read ''How to create a new project directory'' carefully''' below.<br />
* For each new SRT file, you will have to create a JSON file. This file will have the same name as the SRT file, but with the ''.json'' extension. Hence, the JSON file for ''gcompris_tutorial_04.srt'' will be ''gcompris_tutorial_04.json''.<br />
* The JSON file will contain the unique identifier for the video on PeerTube and YouTube. You can find the identifier in the videos' URLs.<br />
<br />
For example, for a video hosted at https://tube.kockatoo.org/w/symxHCzUj9TA7LZoZagD9c on PeerTube, the identifier is ''symxHCzUj9TA7LZoZagD9c''. For the same video on YouTube located at https://www.youtube.com/watch?v=W2iyYU1ZeKI, the identifier is ''W2iyYU1ZeKI''.<br />
<br />
Add these lines to ''gcompris_tutorial_04.json'':<br />
<br />
{<br />
"pt_id": "symxHCzUj9TA7LZoZagD9c",<br />
"yt_id": "W2iyYU1ZeKI"<br />
}<br />
<br />
* You will also need to modify the license file *dep5* which you will find in the https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse folder and add the following for your new video:<br />
<br />
<br />
Files: gcompris/compris_tutorial_04.srt gcompris/compris_tutorial_04.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 John Doe <john.doe@kde.org><br />
<br />
# The first line indicates the two files you just uploaded/created.<br />
# The second line indicates the license for the subtitles -- check the [https://invent.kde.org/websites/video-subtitles/-/tree/master/LICENSES ''LICENSE''] folder to see what is available.<br />
# The last line is for the name of the author/copyright holder (you?) and their email.<br />
<br />
'''Check out the [example](#example) below to see how all this would work in real life.'''<br />
<br />
=== How to create a new project directory ===<br />
<br />
* PeerTube distinguishes between ''accounts'', ''channels'' and ''playlists'': <br />
** An ''account'' is what allows you access your PeerTube instance and upload, edit or remove videos, start live stream sessions, etc. [https://tube.kockatoo.org/a/kde_community/video-channels This is KDE's account on the PeerTube network].<br />
** You can organise your videos uploaded to your account into ''channels''. Each channel can have distinctive look and has its own address. The KDE Community channel contains four channels, ''KDE'', ''Akademy'', ''LabPlot'' and ''GCompris''. For example, [https://tube.kockatoo.org/c/gcompris/videos this is the location for the GCompris channel].<br />
** ''PlayLists'' further allow you to categorise your videos or add videos from other accounts, but you can ignore them for the purpose of subtitling.<br />
* At the moment of writing, the subtitle project has two project directories, [https://invent.kde.org/websites/video-subtitles/-/tree/master/kde ''kde''], and [https://invent.kde.org/websites/video-subtitles/-/tree/master/gcompris ''gcompris'']. The names correspond to the *channels* (NOT accounts or a playlists) the video will be uploaded to.<br />
* If you need to create a directory for your own project, make sure you name the directory exactly the same as the ''channel'' the videos will live in.<br />
<br />
=== Example ===<br />
<br />
Jane Bloggs has created a starter video tutorial for her ''Kinder'' project, a KDE mobile app that helps parents arrange play-dates for their young children.<br />
<br />
During the video-editing process, Jane writes and checks her subtitles and saves them in ''kinder: getting-started.srt''.<br />
<br />
As she has read this document carefully, she changes all the problematic characters in the name of her file to underscores. The final name of her subtitle file ends up being ''kinder_getting_started.srt''.<br />
<br />
With the help of the Promo team, she uploads her video to a new channel, ''kinder'', on [https://tube.kockatoo.org/a/kde_community/video-channels KDE's PeerTube account]. Once the video is uploaded, Jane makes a note of the link to the video: ''https://tube.kockatoo.org/w/sje7HHe3734ytfdedweuhr73''.<br />
<br />
Again assisted by the Promo team, she puts the video on [https://www.youtube.com/channel/UCF3I1gf7GcbmAb0mR6vxkZQ YouTube], and again grabs the link from there: ''https://www.youtube.com/watch?v=Heury437SIJ237hdeu''.<br />
<br />
Jane creates a JSON file called ''kinder_getting_started.json''. She opens it in [her favorite text editor](https://kate-editor.org/) and adds the following content:<br />
<br />
{<br />
"pt_id": "sje7HHe3734ytfdedweuhr73",<br />
"yt_id": "Heury437SIJ237hdeu"<br />
}<br />
<br />
She closes and saves the file.<br />
<br />
Jane then visits https://invent.kde.org/websites/video-subtitles/-/tree/master. As this is a new project, she creates a new directory called ''kinder'' there.<br />
<br />
She enters the ''kinder'' directory she just created and uploads the ''kinder_getting_started.srt'' and ''kinder_getting_started.json'' files she created earlier.<br />
<br />
Jane then moves back up to the main directory and visits the [https://invent.kde.org/websites/video-subtitles/-/tree/master/.reuse ''.reuse/''] folder.<br />
<br />
She locates and opens the ''dep5'' file and adds the following lines at the end of the file:<br />
<br />
# Kinder files<br />
Files: kinder/kinder_getting_started.srt kinder/kinder_getting_started.json<br />
License: CC-BY-SA-4.0<br />
Copyright: 2024 Jane Blogss <jane.bloggs@kde.org><br />
<br />
<br />
and closes and commits the changes<br />
<br />
Jane is more or less finished, but there is one final thing to do: She opens her email client and [mailto:kde-i18n-doc@kde.org sends a thank you note to the incredible translators] expressing her heartfelt appreciation for their work.<br />
<br />
The translators will pick up Jane's subtitle file and start creating versions in their own languages which will gradually be added to her videos online over the next days.</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2023/StatusReports&diff=97773GSoC/2023/StatusReports2023-08-10T08:54:48Z<p>Jjazeix: /* Students list */</p>
<hr />
<div>== Status reports for GSoC 2023 ==<br />
<br />
'''''Remember to submit this link to Google Summer of Code; creating your report here is not enough.'''''<br />
<br />
A good status report will include:<br />
<br />
# Design documents the student created<br />
# Short video of the work, or screenshots as appropriate<br />
# Link to a list of commits ([https://developers.google.com/open-source/gsoc/help/work-product example])<br />
# Link to blog posts (on [https://planetkde.org/ KDE Planet], at least monthly)<br />
<br />
=== This is your summary of the GSoC project for your final submission to Google ===<br />
<br />
== Students list == <br />
<br />
[[GSoC/2019/StatusReports/JohnDoe|John Doe (Template )]]<br />
<br />
'''Please keep the list sorted.'''<br />
<br />
[[GSoC/2019/StatusReports/JohnDoe|John Doe (Template )]]<br />
...<br />
<br />
[[GSoc/2023/StatusReports/AnantVerma|Anant Verma]]<br />
<br />
[[GSoc/2023/StatusReports/AakarshMJ|Aakarsh MJ]]<br />
<br />
[[GSoc/2023/StatusReports/RishiKumar|Rishi Kumar]]<br />
<br />
[[GSoC/2023/StatusReports/ShivoditGill|Shivodit Gill]]<br />
<br />
[[GSoc/2023/StatusReports/SrirupaDatta|Srirupa Datta]]<br />
<br />
[[GSoc/2023/StatusReports/QuocHungTran|TRAN Quoc Hung]]<br />
<br />
[[GSoc/2023/StatusReports/UTKARSHKUMAR|UTKARSH KUMAR]]</div>Jjazeixhttps://community.kde.org/index.php?title=GSoC/2023/StatusReports&diff=96445GSoC/2023/StatusReports2023-05-04T15:03:01Z<p>Jjazeix: Create GSoC report page for 2023</p>
<hr />
<div>== Status reports for GSoC 2023 ==<br />
<br />
'''''Remember to submit this link to Google Summer of Code; creating your report here is not enough.'''''<br />
<br />
A good status report will include:<br />
<br />
# Design documents the student created<br />
# Short video of the work, or screenshots as appropriate<br />
# Link to a list of commits ([https://developers.google.com/open-source/gsoc/help/work-product example])<br />
# Link to blog posts (on [https://planetkde.org/ KDE Planet], at least monthly)<br />
<br />
=== This is your summary of the GSoC project for your final submission to Google ===<br />
<br />
== Students list == <br />
<br />
[[GSoC/2019/StatusReports/JohnDoe|John Doe (Template )]]<br />
<br />
'''Please keep the list sorted.'''<br />
<br />
[[GSoC/2019/StatusReports/JohnDoe|John Doe (Template )]]<br />
...</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/2023/StatusReport/Nitin_Tejuja&diff=96411SoK/2023/StatusReport/Nitin Tejuja2023-04-22T09:31:25Z<p>Jjazeix: /* Community Bonding (SoK’23) */</p>
<hr />
<div>== Measurement of energy consumption with Selenium ==<br />
<br />
'''Project Type:''' Coding<br />
<br />
'''Introduction and Abstract:'''<br />
In this project, we are setting up Selenium using Selenium AT-SPI and replicating an existing unit test written with KdeEcoTest to test the educational software suite GCompris, which provides a number of activities for children aged 2 to 10. By measuring then comparing the energy needed by KdeEcoTest and Selenium we will be able to decide if and how we can use Selenium to run energy consumption scenarios. Selenium AT-SPI for QT is still in an early stage but it is relevant to KDE as a unit testing tool and could become a great tool for energy consumption measurement. In this project, I will be writing guide for installation of selenium-webdriver-at-spi and GCompris application scripts using selenium-webdriver-at-spi. The aim is to provide assistance to developers to create their own KDE application tests, either as a system testing tool or a energy measurement tool.<br />
<br />
'''Mentors:''' Emmanuel Charruau, Harald Sitter<br />
<br />
'''Blog Posts: '''<br />
<br />
[https://eco.kde.org/blog/2023-03-06-sok23-kde-eco/ Season of KDE 2023 With KDE Eco: Setting Up Selenium For Energy Consumption Measurements]<br />
<br />
[https://eco.kde.org/blog/2023-04-05-sok23-kde-eco-selenium-project/ Season Of KDE 2023 With KDE Eco: Writing Scripts In Selenium To Reproduce KdeEcoTest Script]<br />
<br />
'''Files:'''<br />
<br />
[https://invent.kde.org/nitintejuja/feep/-/blob/selenium/tools/KdeEcoTestSelenium/setup.txt Installation Guide]<br />
<br />
===== Weekly Progress =====<br />
<br />
''' WEEK 1 - 2 : ''' For the first two weeks, I was working on understanding `KdeEcoTest` and exploring `selenium-webdriver-at-spi` before writing the unit test scripts.<br />
In the first week, I set up GCompris and explored the application's activities.In next week, I started writing unit test scripts using selenium-webdriver-at-spi and written an installation guide of selenium-webdriver-at-spi.<br />
I wrote about my experience and findings in the first two weeks on the blog post [https://eco.kde.org/blog/2023-03-06-sok23-kde-eco/]<br />
<br />
''' WEEK 3 - 4 : ''' In these weeks, I learnt to write scripts for GCompris application activities in python using selenium-at-spi. I wrote a selenium script for "baby keyboard" activity and added accessiblity code to activity QML elements. I have also replicated the one behaviour of KdeEcoTestScript.<br />
<br />
''' WEEK 5 - 6 : ''' In these weeks, I have updated the documentation guide for installation of `selenium-webdriver-at-spi`. I wrote a selenium script for "Explore Farm Animals" activity and added accessiblity code to activity QML elements. I wrote blog post about my experience with writing scripts in selenium and can be found here[https://eco.kde.org/blog/2023-03-06-sok23-kde-eco/]<br />
<br />
''' WEEK 7 - 8 : ''' In these weeks, I have added accessibility code to some generic elements like "cancelbutton", "applybutton". I wrote a selenium script for testing the "Explore World Music" activity and added accessiblity code to activity QML elements.<br />
<br />
''' WEEK 9 - 10 : ''' In these weeks, I wrote a selenium script for "Baby Word Processor" activity and added accessiblity code to activity QML elements.<br />
<br />
''' WEEK 11- 12 : ''' In these weeks, I merged all activities code in one script file like KdeEcoTestGCompris Script and added logs to script in OSCAR format. I have also started the writing step by step guide for how to write selenium scripts.<br />
<br />
===== Community Bonding (SoK’23) =====<br />
<br />
I want to thank everybody who makes Season of KDE possible, especially my mentors.<br />
<br />
I am very thankful to Harald Sitter for enhancing [https://invent.kde.org/sdk/selenium-webdriver-at-spi selenium-webdriver-at-spi] whenever I encountered a problem that required a new functionality.<br />
<br />
''' CONTACT ME : ''' I am available on Matrix : @nitin.tejuja12:matrix.org</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Administer_the_SoK&diff=96310SoK/Administer the SoK2023-04-12T18:25:40Z<p>Jjazeix: </p>
<hr />
<div>Administer an event can seem complicated even more when there is no guide about it.<br />
This page tries to be an informal guide on helping you discover what are the necessary steps to admin a SoK based on SoK 2022 experience.<br />
<br />
== Creation of the event (around 1 or 2 months before the event) ==<br />
* Gather admins (at least 2) and send a mail to [mailto:kde-community@kde.org KDE community] (something like https://mail.kde.org/pipermail/kde-community/2021q4/007116.html).<br />
<br />
== Preparation of the event ==<br />
* Create https://community.kde.org/SoK ideas page for this year (copy the previous one, clean the ideas).<br />
* Subscribe to https://mail.kde.org/mailman/listinfo/kde-soc-management.<br />
* Ask admin access to https://season.kde.org/ to kde-soc-management mailing list.<br />
* Create a new season for your year once you have access.<br />
* Make a MR to update the season of kde website ideas page in the introduction: https://invent.kde.org/websites/season-kde-org/-/commit/d6551083864241c34d4fc35807b84007f42915ed.<br />
* Update the timeline with something like:<br />
<pre><br />
T0: announcement date of SoK<br />
T1 = T0 + 1 month mentor/contributor applications deadline<br />
T2 = T1 + 1 week: announce the projects<br />
T3 = T2 + 2 days: start of work<br />
T4 = T3 + 3 months; end of work<br />
T5 = T4 + 3 days: results announcements<br />
T6 = T5 + 1 month: certificates issued + shipping of the swag/merchandise<br />
</pre><br />
<br />
== Gathering of the ideas ==<br />
* Send a mail for the potential mentors to write the ideas in the wiki. A mail example is https://mail.kde.org/pipermail/kde-community/2021q4/007141.html and needs to be send to the [mailto:kde-soc-mentor@kde.org,kde-community@kde.org,kde-devel@kde.org,kde-core-devel@kde.org,kde-edu@mail.kde.org,kde-games-devel@kde.org,kde-soc@kde.org KDE soc mentors, community, devel, core-devel, edu, games, soc mailing lists].<br />
* Also communicate it in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] where potential contributors should be.<br />
<br />
== Promote the event ==<br />
* As soon as we know the SoK will take place, we need to prepare a blog post and communication to ensure we reach as much as good potential contributors as we can. Ask Promo (https://webchat.kde.org/#/room/#kde-promo:kde.org) to promote the event! Something like [https://dot.kde.org/2017/11/19/announcing-season-kde-2018 2018], [https://dot.kde.org/2019/11/29/announcing-season-kde-2020 2020] announcements.<br />
<br />
== Inform on how to register ==<br />
=== As a contributor ===<br />
* Send a mail to all potential contributors to enter their application with the subject: "The contributors are supposed to create the project themselves after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page."<br />
* Send a kind reminder two weeks before the deadline ([https://mail.kde.org/pipermail/kde-community/2021q4/007143.html example] and [https://mail.kde.org/pipermail/kde-community/2021q4/007144.html a fix of a mistake] in the previous mail).<br />
* It is up to the contributors to create the project themselves in the website after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page.<br />
<br />
=== As a mentor ===<br />
Check [https://mail.kde.org/mailman/private/kde-soc-mentor/2023-January/005125.html this email] as reference:<br />
* Send the mail to tell to register to the app, and select the project they want to mentor.<br />
* As admin, go to the mentor application page from time to time to approve mentors only if they are listed on the SoK ideas list or if you are sure they are "long-term" contributors (do not accept anyone if you are not sure they are a mentor).<br />
* Do not assign mentors to a project, it is up to the mentors to do it.<br />
<br />
== Once applications deadline is passed ==<br />
* Ask mentors to mentor for the projects they are willing to mentor and that they don't wait the last moment to do it.<br />
<br />
== The day of accepted projects ==<br />
* Accept the proposals which have mentors.<br />
* Create the status report page for this year if it does not exist yet: https://community.kde.org/SoK/2022/StatusReport.<br />
* Send a welcome mail including to ask for reports from contributors: https://mail.kde.org/pipermail/kde-soc/2022-January/001594.html and ask promo if they can do an article on dot.kde.org with selected projects (it is best to help them by providing the content with all selected projects).<br />
* Don't forget to also send a mail to all contributors that were not accepted to explain that they can still contribute outside SoK and it does not have to be the end their journey within KDE.<br />
<br />
== During the SoK ==<br />
* Ask willing contributors to write blog posts about their progress and publish it in the [https://planet.kde.org/ planet.kde.org feed]([https://invent.kde.org/websites/planet-kde-org/ Git project]). In all cases, they have to write regularly their status reports.<br />
* There is no mid-term evaluations but if mentors/contributors need to, they can stop at anytime but they need to inform the kde-soc-management team.<br />
* Be present in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] in case there are questions.<br />
<br />
== End of work ==<br />
* Once the end of work target is reached, the mentors will have around one week to mark the projects as completed. The mentors have to go to the project page and check the box "Completed".<br />
<br />
== After results announced ==<br />
* Generate the certificates for each contributor: [https://invent.kde.org/apol/sok-certificates Git repository].<br />
* Optionally, you can update the background image when it's become "too" old (or ask in [https://krita-artists.org/t/new-certificate-background-for-season-of-kde/39623 krita-artists] if anyone is willing to help create a new one).<br />
* Usually, we go with [https://www.freewear.org/ FreeWear] ([mailto:admin@freewear.org contact]) for customising the goodies. Feel free to contact the [mailto:visual-design@kde.org Visual Design Group] if you need help with the design!<br />
* With the KDE e.V., discuss the budget for the SoK goodies to be sure we ask a quotation that fits.<br />
* Gather information for every contributor who wants to get the swag. Namely:<br />
<pre><br />
- Project name<br />
- Real name<br />
- email<br />
- Phone number<br />
- Postal Address<br />
- T-Shirt size and fit<br />
</pre><br />
<br />
* Write a conclusion blog post about the different projects and their status (https://dot.kde.org/2022/05/03/season-kde-2022-conclusion).<br />
<br />
== Improvement ideas/questions ==<br />
Some suggestion/feedback from SoK 2022/2023.<br />
<br />
''Communication''<br />
* ''More communication and sooner'': SoK 2022 felt a bit rushed for everybody, mentors didn't have the time to polish their ideas, promo didn't have the time to promote the event before it started, contributors didn't have enough time to prepare their proposals as the SoK was announced late.<br />
* ''Deadlines'': Have deadlines for mentor proposals come first, with the deadline for contributor proposals later. Or have only one deadline renamed "Deadline for SoK proposals". The way it is currently presented in the timeline is confusing. <br />
* ''Announcement'': Make clear that SoK is not only for developers, but also for graphic artists, translators(?), documentation writers, etc.<br />
* ''Terminology'': Be consistent in terms used (e.g., students or mentees). <br />
* ''Promotion'': Contact or interview former SoK mentees to collect materials for attracting potential new contributors.<br />
* ''Contributor development'': Position SoK as a possible first step in contributor development, something like: Step 1 SoK mentee -> Step 2 submit GSoC application -> Step 3 mentor an SoK project. <br />
<br />
''For mentors''<br />
* ''Attracting mentors'': Provide information about why mentoring can be interesting and valuable for a project.<br />
* ''Training'': Hold a "mentor-the-mentors" workshop with old and new mentors to share strategies and brainstorm ideas for the coming year. This will also clarify expectations and align mentors across projects. Additionally, this also be a time to decide who does what and when (e.g., issuing the certificates, organizing swag, writing the final summary post).<br />
<br />
''For mentees''<br />
* ''Defining success'': Clarify what will result in passing/failing SoK.<br />
* ''Defining expectations'': Provide information early on about what is expected during SoK (e.g., status reports, blog posts, etc.)<br />
<br />
== FAQ ==<br />
===Is there a hardcoded limit for postuling, editing proposals...?===<br />
Nothing limits anything in the code but it is better to stick to the deadlines.<br />
<br />
===What's the difference between "Accepted" and "Mentors"?===<br />
Mentors need to put themselves as mentors before the announcement of the selected projects. The project will be accepted when it is announced.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Administer_the_SoK&diff=96309SoK/Administer the SoK2023-04-12T18:17:59Z<p>Jjazeix: /* After results announced */</p>
<hr />
<div>Administer an event can seem complicated even more when there is no guide about it.<br />
This page tries to be an informal guide on helping you discover what are the necessary steps to admin a SoK based on SoK 2022 experience.<br />
<br />
== Creation of the event (around 1 or 2 months before the event) ==<br />
* Gather admins (at least 2) and send a mail to [mailto:kde-community@kde.org KDE community] (something like https://mail.kde.org/pipermail/kde-community/2021q4/007116.html).<br />
<br />
== Preparation of the event ==<br />
* Create https://community.kde.org/SoK ideas page for this year (copy the previous one, clean the ideas).<br />
* Subscribe to https://mail.kde.org/mailman/listinfo/kde-soc-management.<br />
* Ask admin access to https://season.kde.org/ to kde-soc-management mailing list.<br />
* Create a new season for your year once you have access.<br />
* Make a MR to update the season of kde website ideas page in the introduction: https://invent.kde.org/websites/season-kde-org/-/commit/d6551083864241c34d4fc35807b84007f42915ed.<br />
* Update the timeline with something like:<br />
<pre><br />
T0: announcement date of SoK<br />
T1 = T0 + 1 month mentor/contributor applications deadline<br />
T2 = T1 + 1 week: announce the projects<br />
T3 = T2 + 2 days: start of work<br />
T4 = T3 + 3 months; end of work<br />
T5 = T4 + 3 days: results announcements<br />
T6 = T5 + 1 month: certificates issued + shipping of the swag/merchandise<br />
</pre><br />
<br />
== Gathering of the ideas ==<br />
* Send a mail for the potential mentors to write the ideas in the wiki. A mail example is https://mail.kde.org/pipermail/kde-community/2021q4/007141.html and needs to be send to the [mailto:kde-soc-mentor@kde.org,kde-community@kde.org,kde-devel@kde.org,kde-core-devel@kde.org,kde-edu@mail.kde.org,kde-games-devel@kde.org,kde-soc@kde.org KDE soc mentors, community, devel, core-devel, edu, games, soc mailing lists].<br />
* Also communicate it in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] where potential contributors should be.<br />
<br />
== Promote the event ==<br />
* As soon as we know the SoK will take place, we need to prepare a blog post and communication to ensure we reach as much as good potential contributors as we can. Ask Promo (https://webchat.kde.org/#/room/#kde-promo:kde.org) to promote the event! Something like [https://dot.kde.org/2017/11/19/announcing-season-kde-2018 2018], [https://dot.kde.org/2019/11/29/announcing-season-kde-2020 2020] announcements.<br />
<br />
== Inform on how to register ==<br />
=== As a contributor ===<br />
* Send a mail to all potential contributors to enter their application with the subject: "The contributors are supposed to create the project themselves after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page."<br />
* Send a kind reminder two weeks before the deadline ([https://mail.kde.org/pipermail/kde-community/2021q4/007143.html example] and [https://mail.kde.org/pipermail/kde-community/2021q4/007144.html a fix of a mistake] in the previous mail).<br />
* It is up to the contributors to create the project themselves in the website after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page.<br />
<br />
=== As a mentor ===<br />
Check [https://mail.kde.org/mailman/private/kde-soc-mentor/2023-January/005125.html this email] as reference:<br />
* Send the mail to tell to register to the app, and select the project they want to mentor.<br />
* As admin, go to the mentor application page from time to time to approve mentors only if they are listed on the SoK ideas list or if you are sure they are "long-term" contributors (do not accept anyone if you are not sure they are a mentor).<br />
* Do not assign mentors to a project, it is up to the mentors to do it.<br />
<br />
== Once applications deadline is passed ==<br />
* Ask mentors to mentor for the projects they are willing to mentor and that they don't wait the last moment to do it.<br />
<br />
== The day of accepted projects ==<br />
* Accept the proposals which have mentors.<br />
* Create the status report page for this year if it does not exist yet: https://community.kde.org/SoK/2022/StatusReport.<br />
* Send a welcome mail including to ask for reports from contributors: https://mail.kde.org/pipermail/kde-soc/2022-January/001594.html and ask promo if they can do an article on dot.kde.org with selected projects (it is best to help them by providing the content with all selected projects).<br />
* Don't forget to also send a mail to all contributors that were not accepted to explain that they can still contribute outside SoK and it does not have to be the end their journey within KDE.<br />
<br />
== During the SoK ==<br />
* Ask willing contributors to write blog posts about their progress and publish it in the [https://planet.kde.org/ planet.kde.org feed]([https://invent.kde.org/websites/planet-kde-org/ Git project]). In all cases, they have to write regularly their status reports.<br />
* There is no mid-term evaluations but if mentors/contributors need to, they can stop at anytime but they need to inform the kde-soc-management team.<br />
* Be present in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] in case there are questions.<br />
<br />
== After results announced ==<br />
* Generate the certificates for each contributor: [https://invent.kde.org/apol/sok-certificates Git repository].<br />
* Optionally, you can update the background image when it's become "too" old (or ask in [https://krita-artists.org/t/new-certificate-background-for-season-of-kde/39623 krita-artists] if anyone is willing to help create a new one).<br />
* Usually, we go with [https://www.freewear.org/ FreeWear] ([mailto:admin@freewear.org contact]) for customising the goodies. Feel free to contact the [mailto:visual-design@kde.org Visual Design Group] if you need help with the design!<br />
* With the KDE e.V., discuss the budget for the SoK goodies to be sure we ask a quotation that fits.<br />
* Gather information for every contributor who wants to get the swag. Namely:<br />
<pre><br />
- Project name<br />
- Real name<br />
- email<br />
- Phone number<br />
- Postal Address<br />
- T-Shirt size and fit<br />
</pre><br />
<br />
* Write a conclusion blog post about the different projects and their status (https://dot.kde.org/2022/05/03/season-kde-2022-conclusion).<br />
<br />
== Improvement ideas/questions ==<br />
Some suggestion/feedback from SoK 2022/2023.<br />
<br />
''Communication''<br />
* ''More communication and sooner'': SoK 2022 felt a bit rushed for everybody, mentors didn't have the time to polish their ideas, promo didn't have the time to promote the event before it started, contributors didn't have enough time to prepare their proposals as the SoK was announced late.<br />
* ''Deadlines'': Have deadlines for mentor proposals come first, with the deadline for contributor proposals later. Or have only one deadline renamed "Deadline for SoK proposals". The way it is currently presented in the timeline is confusing. <br />
* ''Announcement'': Make clear that SoK is not only for developers, but also for graphic artists, translators(?), documentation writers, etc.<br />
* ''Terminology'': Be consistent in terms used (e.g., students or mentees). <br />
* ''Promotion'': Contact or interview former SoK mentees to collect materials for attracting potential new contributors.<br />
* ''Contributor development'': Position SoK as a possible first step in contributor development, something like: Step 1 SoK mentee -> Step 2 submit GSoC application -> Step 3 mentor an SoK project. <br />
<br />
''For mentors''<br />
* ''Attracting mentors'': Provide information about why mentoring can be interesting and valuable for a project.<br />
* ''Training'': Hold a "mentor-the-mentors" workshop with old and new mentors to share strategies and brainstorm ideas for the coming year. This will also clarify expectations and align mentors across projects. Additionally, this also be a time to decide who does what and when (e.g., issuing the certificates, organizing swag, writing the final summary post).<br />
<br />
''For mentees''<br />
* ''Defining success'': Clarify what will result in passing/failing SoK.<br />
* ''Defining expectations'': Provide information early on about what is expected during SoK (e.g., status reports, blog posts, etc.)<br />
<br />
== FAQ ==<br />
===Is there a hardcoded limit for postuling, editing proposals...?===<br />
Nothing limits anything in the code but it is better to stick to the deadlines.<br />
<br />
===What's the difference between "Accepted" and "Mentors"?===<br />
Mentors need to put themselves as mentors before the announcement of the selected projects. The project will be accepted when it is announced.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/2023/StatusReport/Mohamed_Ibrahim&diff=95957SoK/2023/StatusReport/Mohamed Ibrahim2023-03-17T16:13:06Z<p>Jjazeix: fix link</p>
<hr />
<div>== Improve "KDE Eco Test" emulation tool ==<br />
<br />
'''Project type:'''<br />
Coding<br />
<br />
'''Introduction and Abstract:'''<br />
[https://community.kde.org/Goals/Sustainable_Software Sustainability] is one of KDE's goals for the next two years. One aspect of this goal is to measure the energy consumption of KDE software. To do this, it is necessary to use an emulation tool to create usage scenario scripts. [https://invent.kde.org/teams/eco/feep/-/blob/master/tools/KdeEcoTest/ "KDE Eco Test"] is one such tool, but it needs some fixes. A list of to-dos can be found at the repository's [https://invent.kde.org/teams/eco/feep/-/blob/master/tools/KdeEcoTest/README.md README].<br />
<br />
'''Mentor:'''<br />
Karanjot Singh @drquark:kde.org, Emmanuel Charruau @allon:kde.org, and Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix <br />
<br />
'''Blog Posts:'''<br />
<br />
(IN PROGRESS)<br />
<br />
===== Weekly Progress =====<br />
<br />
'''WEEKS 1 - 2''': I familiarized myself with using the KDE Eco Tester tool by testing some applications and creating small scripts, reading and understanding the code base in more detail before starting to refactor it. I also started working on maintainability issues by adding the support of a modern dependency manager for python [https://pipenv.pypa.io/en/latest/index.html (Pipenv)]. I also added a code formatter to make the code consistent by using [https://black.readthedocs.io/en/stable/ (Black)].<br />
<br />
'''WEEKS 3 - 4''': I worked on redesign the current code base to make it more organized and maintainable. By fixing all the the warnings to follow [https://pep8.org/ PEP8], adding more encapsulation for the core parts (parser, runner, cli, creator, actions) by using classes, making the code fully typed with python type hints which makes developing experience better and reduces error, created a new rich CLI interface for the tool using [https://typer.tiangolo.com/ typer] and finally created a support for running testing multiple times with “repeatFunction” action.<br />
<br />
'''WEEKS 5 - 6''': I started exploring and learning the [https://python-prompt-toolkit.readthedocs.io/en/master/ python-prompt-toolkit] and InquirerPy packages to add support for an interactive script creator. The [http://Inquirerpy.readthedocs.io/ InquirerPy] package was limited and should be used as a standalone cli app instead of being added to a bigger full-screen app. I also worked in formatting the log files that are produced while running test scripts to follow the [https://eco.kde.org/handbook/#log-file-of-actions OSCAR] format .<br />
<br />
'''WEEKS 7 - 8''': (IN PROGRESS)<br />
<br />
'''WEEKS 9 - 10''':<br />
<br />
'''WEEKS 11 - 12''': <br />
<br />
===== Merge Requests =====<br />
* [https://invent.kde.org/teams/eco/feep/-/merge_requests/23 Docs: Updated installation instructions]<br />
* [https://invent.kde.org/teams/eco/feep/-/merge_requests/26 Maintenance & Code Redesign]<br />
* [https://invent.kde.org/teams/eco/feep/-/merge_requests/29 Support of Modal Windows]<br />
<br />
<br />
'''CONTACT ME:'''<br />
I am available on Matrix: @hemasonus01:matrix.org</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Administer_the_SoK&diff=95659SoK/Administer the SoK2023-01-24T07:34:12Z<p>Jjazeix: /* During the SoK */</p>
<hr />
<div>Administer an event can seem complicated even more when there is no guide about it.<br />
This page tries to be an informal guide on helping you discover what are the necessary steps to admin a SoK based on SoK 2022 experience.<br />
<br />
== Creation of the event (around 1 or 2 months before the event) ==<br />
* Gather admins (at least 2) and send a mail to [mailto:kde-community@kde.org KDE community] (something like https://mail.kde.org/pipermail/kde-community/2021q4/007116.html).<br />
<br />
== Preparation of the event ==<br />
* Create https://community.kde.org/SoK ideas page for this year (copy the previous one, clean the ideas).<br />
* Subscribe to https://mail.kde.org/mailman/listinfo/kde-soc-management.<br />
* Ask admin access to https://season.kde.org/ to kde-soc-management mailing list.<br />
* Create a new season for your year once you have access.<br />
* Make a MR to update the season of kde website ideas page in the introduction: https://invent.kde.org/websites/season-kde-org/-/commit/d6551083864241c34d4fc35807b84007f42915ed.<br />
* Update the timeline with something like:<br />
<pre><br />
T0: announcement date of SoK<br />
T1 = T0 + 1 month mentor/contributor applications deadline<br />
T2 = T1 + 1 week: announce the projects<br />
T3 = T2 + 2 days: start of work<br />
T4 = T3 + 3 months; end of work<br />
T5 = T4 + 3 days: results announcements<br />
T6 = T5 + 1 month: certificates issued + shipping of the swag/merchandise<br />
</pre><br />
<br />
== Gathering of the ideas ==<br />
* Send a mail for the potential mentors to write the ideas in the wiki. A mail example is https://mail.kde.org/pipermail/kde-community/2021q4/007141.html and needs to be send to the [mailto:kde-soc-mentor@kde.org,kde-community@kde.org,kde-devel@kde.org,kde-core-devel@kde.org,kde-edu@mail.kde.org,kde-games-devel@kde.org,kde-soc@kde.org KDE soc mentors, community, devel, core-devel, edu, games, soc mailing lists].<br />
* Also communicate it in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] where potential contributors should be.<br />
<br />
== Promote the event ==<br />
* As soon as we know the SoK will take place, we need to prepare a blog post and communication to ensure we reach as much as good potential contributors as we can. Ask Promo (https://webchat.kde.org/#/room/#kde-promo:kde.org) to promote the event! Something like [https://dot.kde.org/2017/11/19/announcing-season-kde-2018 2018], [https://dot.kde.org/2019/11/29/announcing-season-kde-2020 2020] announcements.<br />
<br />
== Inform on how to register ==<br />
=== As a contributor ===<br />
* Send a mail to all potential contributors to enter their application with the subject: "The contributors are supposed to create the project themselves after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page."<br />
* Send a kind reminder two weeks before the deadline ([https://mail.kde.org/pipermail/kde-community/2021q4/007143.html example] and [https://mail.kde.org/pipermail/kde-community/2021q4/007144.html a fix of a mistake] in the previous mail).<br />
* It is up to the contributors to create the project themselves in the website after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page.<br />
<br />
=== As a mentor ===<br />
Check [https://mail.kde.org/mailman/private/kde-soc-mentor/2023-January/005125.html this email] as reference:<br />
* Send the mail to tell to register to the app, and select the project they want to mentor.<br />
* As admin, go to the mentor application page from time to time to approve mentors only if they are listed on the SoK ideas list or if you are sure they are "long-term" contributors (do not accept anyone if you are not sure they are a mentor).<br />
* Do not assign mentors to a project, it is up to the mentors to do it.<br />
<br />
== Once applications deadline is passed ==<br />
* Ask mentors to mentor for the projects they are willing to mentor and that they don't wait the last moment to do it.<br />
<br />
== The day of accepted projects ==<br />
* Accept the proposals which have mentors.<br />
* Create the status report page for this year if it does not exist yet: https://community.kde.org/SoK/2022/StatusReport.<br />
* Send a welcome mail including to ask for reports from contributors: https://mail.kde.org/pipermail/kde-soc/2022-January/001594.html and ask promo if they can do an article on dot.kde.org with selected projects (it is best to help them by providing the content with all selected projects).<br />
* Don't forget to also send a mail to all contributors that were not accepted to explain that they can still contribute outside SoK and it does not have to be the end their journey within KDE.<br />
<br />
== During the SoK ==<br />
* Ask willing contributors to write blog posts about their progress and publish it in the [https://planet.kde.org/ planet.kde.org feed]([https://invent.kde.org/websites/planet-kde-org/ Git project]). In all cases, they have to write regularly their status reports.<br />
* There is no mid-term evaluations but if mentors/contributors need to, they can stop at anytime but they need to inform the kde-soc-management team.<br />
* Be present in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] in case there are questions.<br />
<br />
== After results announced ==<br />
* Generate the certificates for each contributor: [https://invent.kde.org/apol/sok-certificates Git repository].<br />
* Optionally, you can update the background image when it's become "too" old (or ask in [https://krita-artists.org/t/new-certificate-background-for-season-of-kde/39623 krita-artists] if anyone is willing to help create a new one).<br />
* Usually, we go with [https://www.freewear.org/ FreeWear] ([mailto:admin@freewear.org contact]) for customising the goodies. Feel free to contact the [visual-design@kde.org Visual Design Group] if you need help with the design!<br />
* With the KDE e.V., discuss the budget for the SoK goodies to be sure we ask a quotation that fits.<br />
* Gather information for every contributor who wants to get the swag. Namely:<br />
<pre><br />
- Project name<br />
- Real name<br />
- email<br />
- Phone number<br />
- Postal Address<br />
- T-Shirt size and fit<br />
</pre><br />
<br />
* Write a conclusion blog post about the different projects and their status (https://dot.kde.org/2022/05/03/season-kde-2022-conclusion).<br />
<br />
== Improvement ideas ==<br />
Some suggestion/feedback from 2022 SoK:<br />
* More communication and sooner. It felt a bit rushed for everybody, mentors didn't have the time to polish their ideas, promo didn't have the time to promote the event before it started, contributors didn't have enough time to prepare their proposals as the SoK was announced late.<br />
* In the future it might be nice to have the deadlines for mentor proposals come first, with the deadline for contributor proposals later. Just a thought.<br />
<br />
== FAQ ==<br />
===Is there a hardcoded limit for postuling, editing proposals...?===<br />
Nothing limits anything in the code but it is better to stick to the deadlines.<br />
<br />
===What's the difference between "Accepted" and "Mentors"?===<br />
Mentors need to put themselves as mentors before the announcement of the selected projects. The project will be accepted when it is announced.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Administer_the_SoK&diff=95658SoK/Administer the SoK2023-01-24T07:34:01Z<p>Jjazeix: /* During the SoK */</p>
<hr />
<div>Administer an event can seem complicated even more when there is no guide about it.<br />
This page tries to be an informal guide on helping you discover what are the necessary steps to admin a SoK based on SoK 2022 experience.<br />
<br />
== Creation of the event (around 1 or 2 months before the event) ==<br />
* Gather admins (at least 2) and send a mail to [mailto:kde-community@kde.org KDE community] (something like https://mail.kde.org/pipermail/kde-community/2021q4/007116.html).<br />
<br />
== Preparation of the event ==<br />
* Create https://community.kde.org/SoK ideas page for this year (copy the previous one, clean the ideas).<br />
* Subscribe to https://mail.kde.org/mailman/listinfo/kde-soc-management.<br />
* Ask admin access to https://season.kde.org/ to kde-soc-management mailing list.<br />
* Create a new season for your year once you have access.<br />
* Make a MR to update the season of kde website ideas page in the introduction: https://invent.kde.org/websites/season-kde-org/-/commit/d6551083864241c34d4fc35807b84007f42915ed.<br />
* Update the timeline with something like:<br />
<pre><br />
T0: announcement date of SoK<br />
T1 = T0 + 1 month mentor/contributor applications deadline<br />
T2 = T1 + 1 week: announce the projects<br />
T3 = T2 + 2 days: start of work<br />
T4 = T3 + 3 months; end of work<br />
T5 = T4 + 3 days: results announcements<br />
T6 = T5 + 1 month: certificates issued + shipping of the swag/merchandise<br />
</pre><br />
<br />
== Gathering of the ideas ==<br />
* Send a mail for the potential mentors to write the ideas in the wiki. A mail example is https://mail.kde.org/pipermail/kde-community/2021q4/007141.html and needs to be send to the [mailto:kde-soc-mentor@kde.org,kde-community@kde.org,kde-devel@kde.org,kde-core-devel@kde.org,kde-edu@mail.kde.org,kde-games-devel@kde.org,kde-soc@kde.org KDE soc mentors, community, devel, core-devel, edu, games, soc mailing lists].<br />
* Also communicate it in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] where potential contributors should be.<br />
<br />
== Promote the event ==<br />
* As soon as we know the SoK will take place, we need to prepare a blog post and communication to ensure we reach as much as good potential contributors as we can. Ask Promo (https://webchat.kde.org/#/room/#kde-promo:kde.org) to promote the event! Something like [https://dot.kde.org/2017/11/19/announcing-season-kde-2018 2018], [https://dot.kde.org/2019/11/29/announcing-season-kde-2020 2020] announcements.<br />
<br />
== Inform on how to register ==<br />
=== As a contributor ===<br />
* Send a mail to all potential contributors to enter their application with the subject: "The contributors are supposed to create the project themselves after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page."<br />
* Send a kind reminder two weeks before the deadline ([https://mail.kde.org/pipermail/kde-community/2021q4/007143.html example] and [https://mail.kde.org/pipermail/kde-community/2021q4/007144.html a fix of a mistake] in the previous mail).<br />
* It is up to the contributors to create the project themselves in the website after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page.<br />
<br />
=== As a mentor ===<br />
Check [https://mail.kde.org/mailman/private/kde-soc-mentor/2023-January/005125.html this email] as reference:<br />
* Send the mail to tell to register to the app, and select the project they want to mentor.<br />
* As admin, go to the mentor application page from time to time to approve mentors only if they are listed on the SoK ideas list or if you are sure they are "long-term" contributors (do not accept anyone if you are not sure they are a mentor).<br />
* Do not assign mentors to a project, it is up to the mentors to do it.<br />
<br />
== Once applications deadline is passed ==<br />
* Ask mentors to mentor for the projects they are willing to mentor and that they don't wait the last moment to do it.<br />
<br />
== The day of accepted projects ==<br />
* Accept the proposals which have mentors.<br />
* Create the status report page for this year if it does not exist yet: https://community.kde.org/SoK/2022/StatusReport.<br />
* Send a welcome mail including to ask for reports from contributors: https://mail.kde.org/pipermail/kde-soc/2022-January/001594.html and ask promo if they can do an article on dot.kde.org with selected projects (it is best to help them by providing the content with all selected projects).<br />
* Don't forget to also send a mail to all contributors that were not accepted to explain that they can still contribute outside SoK and it does not have to be the end their journey within KDE.<br />
<br />
== During the SoK ==<br />
* Ask willing contributors to write blog posts about their progress and publish it in the [planet.kde.org/ planet.kde.org feed]([https://invent.kde.org/websites/planet-kde-org/ Git project]). In all cases, they have to write regularly their status reports.<br />
* There is no mid-term evaluations but if mentors/contributors need to, they can stop at anytime but they need to inform the kde-soc-management team.<br />
* Be present in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] in case there are questions.<br />
<br />
== After results announced ==<br />
* Generate the certificates for each contributor: [https://invent.kde.org/apol/sok-certificates Git repository].<br />
* Optionally, you can update the background image when it's become "too" old (or ask in [https://krita-artists.org/t/new-certificate-background-for-season-of-kde/39623 krita-artists] if anyone is willing to help create a new one).<br />
* Usually, we go with [https://www.freewear.org/ FreeWear] ([mailto:admin@freewear.org contact]) for customising the goodies. Feel free to contact the [visual-design@kde.org Visual Design Group] if you need help with the design!<br />
* With the KDE e.V., discuss the budget for the SoK goodies to be sure we ask a quotation that fits.<br />
* Gather information for every contributor who wants to get the swag. Namely:<br />
<pre><br />
- Project name<br />
- Real name<br />
- email<br />
- Phone number<br />
- Postal Address<br />
- T-Shirt size and fit<br />
</pre><br />
<br />
* Write a conclusion blog post about the different projects and their status (https://dot.kde.org/2022/05/03/season-kde-2022-conclusion).<br />
<br />
== Improvement ideas ==<br />
Some suggestion/feedback from 2022 SoK:<br />
* More communication and sooner. It felt a bit rushed for everybody, mentors didn't have the time to polish their ideas, promo didn't have the time to promote the event before it started, contributors didn't have enough time to prepare their proposals as the SoK was announced late.<br />
* In the future it might be nice to have the deadlines for mentor proposals come first, with the deadline for contributor proposals later. Just a thought.<br />
<br />
== FAQ ==<br />
===Is there a hardcoded limit for postuling, editing proposals...?===<br />
Nothing limits anything in the code but it is better to stick to the deadlines.<br />
<br />
===What's the difference between "Accepted" and "Mentors"?===<br />
Mentors need to put themselves as mentors before the announcement of the selected projects. The project will be accepted when it is announced.</div>Jjazeixhttps://community.kde.org/index.php?title=SoK/Administer_the_SoK&diff=95657SoK/Administer the SoK2023-01-24T07:33:40Z<p>Jjazeix: /* During the SoK */</p>
<hr />
<div>Administer an event can seem complicated even more when there is no guide about it.<br />
This page tries to be an informal guide on helping you discover what are the necessary steps to admin a SoK based on SoK 2022 experience.<br />
<br />
== Creation of the event (around 1 or 2 months before the event) ==<br />
* Gather admins (at least 2) and send a mail to [mailto:kde-community@kde.org KDE community] (something like https://mail.kde.org/pipermail/kde-community/2021q4/007116.html).<br />
<br />
== Preparation of the event ==<br />
* Create https://community.kde.org/SoK ideas page for this year (copy the previous one, clean the ideas).<br />
* Subscribe to https://mail.kde.org/mailman/listinfo/kde-soc-management.<br />
* Ask admin access to https://season.kde.org/ to kde-soc-management mailing list.<br />
* Create a new season for your year once you have access.<br />
* Make a MR to update the season of kde website ideas page in the introduction: https://invent.kde.org/websites/season-kde-org/-/commit/d6551083864241c34d4fc35807b84007f42915ed.<br />
* Update the timeline with something like:<br />
<pre><br />
T0: announcement date of SoK<br />
T1 = T0 + 1 month mentor/contributor applications deadline<br />
T2 = T1 + 1 week: announce the projects<br />
T3 = T2 + 2 days: start of work<br />
T4 = T3 + 3 months; end of work<br />
T5 = T4 + 3 days: results announcements<br />
T6 = T5 + 1 month: certificates issued + shipping of the swag/merchandise<br />
</pre><br />
<br />
== Gathering of the ideas ==<br />
* Send a mail for the potential mentors to write the ideas in the wiki. A mail example is https://mail.kde.org/pipermail/kde-community/2021q4/007141.html and needs to be send to the [mailto:kde-soc-mentor@kde.org,kde-community@kde.org,kde-devel@kde.org,kde-core-devel@kde.org,kde-edu@mail.kde.org,kde-games-devel@kde.org,kde-soc@kde.org KDE soc mentors, community, devel, core-devel, edu, games, soc mailing lists].<br />
* Also communicate it in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] where potential contributors should be.<br />
<br />
== Promote the event ==<br />
* As soon as we know the SoK will take place, we need to prepare a blog post and communication to ensure we reach as much as good potential contributors as we can. Ask Promo (https://webchat.kde.org/#/room/#kde-promo:kde.org) to promote the event! Something like [https://dot.kde.org/2017/11/19/announcing-season-kde-2018 2018], [https://dot.kde.org/2019/11/29/announcing-season-kde-2020 2020] announcements.<br />
<br />
== Inform on how to register ==<br />
=== As a contributor ===<br />
* Send a mail to all potential contributors to enter their application with the subject: "The contributors are supposed to create the project themselves after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page."<br />
* Send a kind reminder two weeks before the deadline ([https://mail.kde.org/pipermail/kde-community/2021q4/007143.html example] and [https://mail.kde.org/pipermail/kde-community/2021q4/007144.html a fix of a mistake] in the previous mail).<br />
* It is up to the contributors to create the project themselves in the website after contacting their potential mentors and discussing with them. Generally we also expect from the contributor to write a bigger text than the one in the idea page.<br />
<br />
=== As a mentor ===<br />
Check [https://mail.kde.org/mailman/private/kde-soc-mentor/2023-January/005125.html this email] as reference:<br />
* Send the mail to tell to register to the app, and select the project they want to mentor.<br />
* As admin, go to the mentor application page from time to time to approve mentors only if they are listed on the SoK ideas list or if you are sure they are "long-term" contributors (do not accept anyone if you are not sure they are a mentor).<br />
* Do not assign mentors to a project, it is up to the mentors to do it.<br />
<br />
== Once applications deadline is passed ==<br />
* Ask mentors to mentor for the projects they are willing to mentor and that they don't wait the last moment to do it.<br />
<br />
== The day of accepted projects ==<br />
* Accept the proposals which have mentors.<br />
* Create the status report page for this year if it does not exist yet: https://community.kde.org/SoK/2022/StatusReport.<br />
* Send a welcome mail including to ask for reports from contributors: https://mail.kde.org/pipermail/kde-soc/2022-January/001594.html and ask promo if they can do an article on dot.kde.org with selected projects (it is best to help them by providing the content with all selected projects).<br />
* Don't forget to also send a mail to all contributors that were not accepted to explain that they can still contribute outside SoK and it does not have to be the end their journey within KDE.<br />
<br />
== During the SoK ==<br />
* Ask willing contributors to write blog posts about their progress and publish it in the [planet.kde.org feed planet.kde.org]([https://invent.kde.org/websites/planet-kde-org/ Git project]). In all cases, they have to write regularly their status reports.<br />
* There is no mid-term evaluations but if mentors/contributors need to, they can stop at anytime but they need to inform the kde-soc-management team.<br />
* Be present in the [https://webchat.kde.org/#/room/%23kde-soc:kde.org kde-soc Matrix channel] in case there are questions.<br />
<br />
== After results announced ==<br />
* Generate the certificates for each contributor: [https://invent.kde.org/apol/sok-certificates Git repository].<br />
* Optionally, you can update the background image when it's become "too" old (or ask in [https://krita-artists.org/t/new-certificate-background-for-season-of-kde/39623 krita-artists] if anyone is willing to help create a new one).<br />
* Usually, we go with [https://www.freewear.org/ FreeWear] ([mailto:admin@freewear.org contact]) for customising the goodies. Feel free to contact the [visual-design@kde.org Visual Design Group] if you need help with the design!<br />
* With the KDE e.V., discuss the budget for the SoK goodies to be sure we ask a quotation that fits.<br />
* Gather information for every contributor who wants to get the swag. Namely:<br />
<pre><br />
- Project name<br />
- Real name<br />
- email<br />
- Phone number<br />
- Postal Address<br />
- T-Shirt size and fit<br />
</pre><br />
<br />
* Write a conclusion blog post about the different projects and their status (https://dot.kde.org/2022/05/03/season-kde-2022-conclusion).<br />
<br />
== Improvement ideas ==<br />
Some suggestion/feedback from 2022 SoK:<br />
* More communication and sooner. It felt a bit rushed for everybody, mentors didn't have the time to polish their ideas, promo didn't have the time to promote the event before it started, contributors didn't have enough time to prepare their proposals as the SoK was announced late.<br />
* In the future it might be nice to have the deadlines for mentor proposals come first, with the deadline for contributor proposals later. Just a thought.<br />
<br />
== FAQ ==<br />
===Is there a hardcoded limit for postuling, editing proposals...?===<br />
Nothing limits anything in the code but it is better to stick to the deadlines.<br />
<br />
===What's the difference between "Accepted" and "Mentors"?===<br />
Mentors need to put themselves as mentors before the announcement of the selected projects. The project will be accepted when it is announced.</div>Jjazeix