< SoK


Konqi is giving a lesson!


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:


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.


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

Documentation: Improve documentation about how to write Plasma widgets

Project type: Documentation

Brief explanation: The goal of this task is to improve the existing Plasma widgets documentation and move it to develop.kde.org/docs.

Expected results: It will be easier for people to write their own plasmoids :D

Knowledge Prerequisite: A bit of QML and English writing skills :)

Mentor: Carl Schwan, you can join our matrix room in #developer-doc:kde.org

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)


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

ISO Image Writer, Live USB Maker

Project type: Code

Brief explanation: ISO Image Writer was suggested as GSoC project subject by Farid Boudedja, to make live USB booting with NEON distribution. Already good alternative program is also existed, but not based on KDE and not correctly works well. It is needed to be improved with libusb, polkit, syslinux, ISO image file system checker and loader, OpenSSL verifier, etc. In this season, it'll be little bit improved with some functions with volunteers. If you have idea to make system utilities with Qt UI, it'll be good experiences.

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


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


Project type: Code

Brief explanation: Implement global weather alerts system for KWeather using CAP protocol. The weather alerts source is provided by the meteorology institutions around the world, the goal is to include as many countries as possible.

Expected results:

  • Weather alerts daemon that parses the raw data, sends notifications to 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

This page was last edited on 17 October 2020, at 17:47. Content is available under Creative Commons License SA 4.0 unless otherwise noted.