SoK/Ideas/2021
Ideas
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, contact the developers and find out more about the particular suggestion you're interested in.
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!
If there is no specific contact given in the idea, you can ask questions on the general KDE development list [email protected]. See the KDE mailing lists page for information on available mailing lists and how to subscribe.
Sample project
Project type: Coding / Web Development / Promo / Translation
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
When adding an idea to this section, please try to include the following data:
- if the application is not widely known, a description of what it does and where its code lives
- a brief explanation
- the expected results
- pre-requisites for working on your project
- if applicable, links to more information or discussions
- mailing list or IRC channel for your application/library/module
- your name and email address for contact (if you're willing to be a mentor)
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.
Ideas
Your Own Idea: Something that you're totally excited about
Project type: Coding / Web Development / Promo / Translation
Brief explanation: Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.
Expected results: Something you and KDE loves
Knowledge Prerequisite: Probably C++ and Qt but depends on your project
Mentor: Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.
Promo: tips and tricks videos for social networks
Project type: Promotion
Brief explanation: The goal of this task is to create promo videos showing off tips and tricks from the list maintained here: T13465. You will be able to choose a few of them and create short videos with some effects applied to them. The amount of videos you will need to do depends on how much time you have.
Expected results: Your short videos will be displayed on social media and viewed by many people. This will help with the promotion of KDE's software as powerful applications.
Knowledge Prerequisite: Knowledge of KDenlive is recommended but not required, but you will need to learn and use KDenlive. The promo team has some KDenlive experts and it is a good occasion to learn how to use it.
Mentor: Paul Brown and rest of the KDE Promo team. Join us IRC: #kde-promo, Matrix: #kde-promo:kde.org or Telegram: https://t.me/joinchat/AEyx-0O8HKlHV7Cg7ZoSyA
Promo: process data collected from social media and other sources
Project type: Promotion, Data analysis
Brief explanation: The goal of this task is to process the different sources Promo collects data from (social media, website stats, distro popcons, mailing lists, etc.) so that it is easier for Promo can gain insight in user behavior and predilections.
Expected results: Standardized and categorized collected data. Set up tools and workflows to process incoming data.
Knowledge Prerequisite: Knowledge of processing of data formats, basic scripting skills.
Mentor: Paul Brown and rest of the KDE Promo team. Join us IRC: #kde-promo, Matrix: #kde-promo:kde.org or Telegram: https://t.me/joinchat/AEyx-0O8HKlHV7Cg7ZoSyA
Documentation: Improve documentation about various part of KDE
Project type: Documentation
Brief explanation: The goal of this task is to improve the various part of the documentation of KDE. There is potential for more than one SoK project in it. The parts to document are for example Kpackage and the plugins infrastructure, Kirigami (the convergent UI toolkit), ... But proposing your own ideas are also welcome, there is many frameworks: https://api.kde.org/frameworks/.
Expected results: It will be easier for people to develop cool applications and utilities with KDE technologies.
Knowledge Prerequisite: A bit of QML/Qt and English writing skills :)
Mentor: Carl Schwan, you can join our matrix room in #developer-doc:kde.org. Please don't PM me or Sir me.
KStars, Coding: Make custom catalogs fast by putting them on a special data structure
Project type: Code
Brief explanation: The goal of this project is to improve the speed at which large custom (user-created / internet-downloaded) catalogs of sky objects (e.g. galaxies etc.) are rendered by KStars. KStars already has adaptations of a space-partitioning data structure (kind of like a k-D tree), the Hierarchical Triangular Mesh, which can be used to create an index based on the region of the sky in which an object lies, which are used elsewhere in KStars. The project would adapt this data structure to work with custom catalogs.
Expected results:
1. Optimize the rendering by only rendering those objects that are in the regions displayed on the screen
2. Optimize the computations by only computing positions for those objects that are in the regions displayed on the screen
3. Stretch Goal: Optimize the loading to only load into memory (from the database) those objects that are in regions displayed on the screen
A merge request with proper code review validation is expected at each step of this project.
The final win for KStars is that we will be able to render catalogs of hundreds of thousands of galaxies (such as the Principal Galaxies Catalog) without impact in performance.
Knowledge Prerequisite: C++, Basic understanding of Object Oriented Programming, Rudimentary familiarity with Qt
Mentor: TBD
Peruse: Expand Peruse or Creator's featureset
Project type: Coding
Brief explanation: Peruse and Peruse Creator are both basic, capable applications, but as all applications, there is more to do to make them really sing. Maybe we want Peruse to be able to make use of the ACBF Jump system to make interactive fiction possible, and for Peruse Creator to be able to create that. Maybe we want Peruse Creator to have more creative management tools to support the creation of books, like a timeline of events, language descriptions. Maybe we want Peruse Creator's translation tools to be more capable, and Peruse itself to be able to display the rich text areas found in ACBF and other advanced formats. In short, have a play, and pitch your ideas.
Expected results: A more capable Peruse and/or Peruse Creator
Knowledge Prerequisite: You should be comfortable with C++, Qt, and QML based application development, as both applications depend heavily on this combination.
Mentor: Dan Leinir Turthra Jensen (catch the person with the screen name leinir anywhere on KDE's infrastructure, and indeed most other places)
Plasma
Project type: Coding
Brief explanation: Write new backend for SessionsModel.
We have some code in libkworkspace that is horrible; kdisplaymanager.cpp. Most of it exists based on assumptions 20 years old and we've kept adding stuff on top. The result is both messy and full of blocking calls.
We have split most of it out, but one part remains; listing active sessions running.
Expected results: We get to throw some horrible code from the 90s in the bin and everything still works.
Knowledge Prerequisite: C++, DBus
Mentor: David Edmundson
Plasma Discover rpm-ostree backend
Project type: Coding
Brief explanation: Write new backend for Discover which supports doing system upgrades using rpm-ostree to support Fedora Kinoite upgrades.
Fedora Kinoite is a variant of Fedora Silverblue with the KDE Desktop Environment. This is currently an unofficial Fedora variant but work is in progress to make it official and this feature is one of the last missing pieces.
Expected results: rpm-ostree based systems can have proper and transparent system upgrades.
Knowledge Prerequisite: C++
Mentor: Aleix Pol and Timothée Ravier
ISO Image Writer, Live USB Maker
Project type: Code
Brief explanation: ISO Image Writer was suggested as a GSoC project by Farid Boudedja, to make live USB booting compatible with the KDE Neon distribution. An alternative program exists, but is not based on KDE and does not work correctly. It needs to be improved with libusb, polkit, syslinux, ISO image file system checker and loader, OpenSSL verifier, etc. In this season, it will be a bit improved with some functions from volunteers. If you have an idea to make system utilities with Qt UI, it will be a good experience.
Expected results:
1. Checking for distribution's check sum
2. Checking image file system corruption and analyse which type of ISO image
3. Adopt well environment with distribution images and use rest space on USB sticks.
Knowledge Prerequisite: C++, syslinux, ISO/FAT/EXT filesystems, libusb, polkit, openssl, Qt
Mentor: Sung Jae Cho
Calamares
Project type: Code, documentation, design
Brief explanation: Calamares is a Linux system installer which is used by a few dozen Linux distributions, including KDE neon. While not strictly a KDE project, it was created by KDE people, is maintained by KDE people, and uses Qt, KDE Frameworks, and KDE's partitionmanager. For political reasons -- Calamares is distro-, desktop- and toolkit-agnostic as to what it installs -- it lives outside of KDE infrastructure, in GitHub.
Calamares has SoK mini-projects for the website, for code, and for documentation. These are organized as issues with specific labels, so that they are easy to find at any moment. Some of the issues have an extensive step-by-step process written out; others are a little more free-form.
Expected Results: look at the individual issues for details. Below is a partial list of the open tasks (as of october 13th, 2020) to give you an idea what is available.
- Send installation log to pastebin (C++, Qt, QNetworkManager)
- Hide back and next buttons during installation step (C++, Qt)
- Read timezone from /etc/timezone file (C++, Qt)
- Add schema file for shellprocess configuration (Python, YAML)
- Update website styling to be less 2010-ish (Markdown, Jekyll, CSS)
- Update website about page with new screenshots (Markdown, needs a VM to get those screenshots)
- Expand generic end-user documentation (Markdown)
Knowledge Prerequisite: Depends on the task, see parenthesis after each. The Calamares code is C++14 with Qt along with some Python. If you want to work in the code, you'll need some experience with that. The configuration is all YAML and the configuration tooling is mostly Python and some shell-script. The documentation and website is Markdown and Jekyll (GitHub pages).
Mentor: Adriaan de Groot
KWeather
Project type: Code
Brief explanation: Implement global weather alert system for KWeather using the CAP protocol. The weather alert source is provided by meteorology institutions around the world. The goal is to include as many countries as possible.
Expected results:
- Weather alert daemon that parses the raw data, sends notifications to the system.
- D-Bus interface for other applications to access the information, ex. KWeather.
Knowledge Prerequisite: C++, Qt, the CAP protocol is XML.
Mentor: Devin Lin, Han Young
Plasma Firewall
Project type: Code
Brief explanation: Implement an interface using KNewStuff to share firewall rules (e.g.: enable only http e https to outside).
Expected results:
- Shareable rules across Plasma firewall users;
- Easy to use interface for non-technical users.
Knowledge Prerequisite: C++, Qt, network knowledge.
Mentor: Tomaz Canabrava, Lucas Biaggi
KClock: Produce default alarm/ringtones
Project type: Music Production
Brief explanation: Produce a set of default alarm sounds for KClock (Plasma Mobile's clock application). The sounds may also be used as ringtones in Plasma Mobile.
https://invent.kde.org/plasma-mobile/kclock/-/issues/8
Expected results:
- Production of a set of original alarm/ringtone sounds
Knowledge Prerequisite: Music Production in a DAW software
Mentor: Devin Lin, Han Young
Elisa
Project type: Coding
Brief explanation: Improve Existing Views
Expected results:
- Current Elisa views do not support multiple selection (by mouse for example). It would be nice to be able to get that.
- Another nice feature requires to add drag'n drop between a view and the playlist.
- Another task would be to test and fix problems for visually impaired people. In particular a focus on the context view is needed. Currently that should not be accessible at all.
Knowledge Prerequisite: qml and maybe c++
Mentor: Matthieu Gallien
Current Elisa views do not support multiple selection (by mouse for example). It would be nice to be able to get that.
Another nice feature requires to add drag'n drop between a view and the playlist.
Another task would be to test and fix problems for visually impaired people. In particular a focus on the context view is needed. Currently that should not be accessible at all.
More ideas welcome.
Kalk
Project type: Code
Brief explanation: Adding more functions to Kalk. Kalk now has basic calculator and unit converter. It'll be nice to have binary calculator and more math functions build into it.
Expected results:
- Binary calculator
- More math functions
Knowledge Prerequisite: C++ Mentor: Devin Lin, Han Young
NeoChat
Project type: Code
Brief explanation: Adding more functions to Neochat. Talk with us to find out the most adapted task for you. It can be around encryption, video call or another cool feature
Expected results:
- NeoChat is more awesome
Knowledge Prerequisite: Depends on your task, but good knowledge in C++ is recommended. Mentor: Carl Schwan