SoK/Ideas/2021

From KDE Community Wiki
Konqi is giving a lesson!

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.

You need to submit your proposal to season.kde.org before the deadline.

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 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.

Expected results: Something you and KDE love

Knowledge Prerequisite: Probably C++ and Qt, but it 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 Media

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. Knowledge of Blender and other open source animation applications (Synfig?) also a plus.

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

Add Sources of Data and Automate their Collection ALREADY ASSIGNED

Project type: Promotion, Data retrieval

Brief explanation: The goal of this task is to seek new sources of data that will help us analyse the current state of KDE software in the world and also to put in place mechanisms that allows for their automatic recollection.

Expected results: Mores sources of data that provide us with more insight. Automatic and periodic recollection of the data.

Knowledge Prerequisite: Scripting and processing of online data.

Mentor: Paul Brown and the rest of the KDE Promo team. Join us IRC: #kde-promo, Matrix: #kde-promo:kde.org or Telegram: https://t.me/joinchat/AEyx-0O8HKlHV7Cg7ZoSyA

Process Data Collected from Social Media and Other Sources ALREADY ASSIGNED

Project type: Promotion, Data analysis, maybe some scripting

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's easier for Promo to gain insight into 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 the rest of the KDE Promo team. Join us IRC: #kde-promo, Matrix: #kde-promo:kde.org or Telegram: https://t.me/joinchat/AEyx-0O8HKlHV7Cg7ZoSyA

Create a Data Visualisation Dashboard ALREADY ASSIGNED

Project type: Promotion, Web Development, Graphs

Brief explanation: The goal of this task is to create a scalable (in that it should be able to accept more data streams) website to visualise data we collect from different sources

Expected results: A website that allows visitors to visualise graphically data collected and processed in the prior two tasks

Knowledge Prerequisite: Knowledge of data processing, web development.

Mentor: Paul Brown and the rest of the KDE Promo team. Join us IRC: #kde-promo, Matrix: #kde-promo:kde.org or Telegram: https://t.me/joinchat/AEyx-0O8HKlHV7Cg7ZoSyA

Create App for Posting and Scheduling Posts for Multiple Social Media Platforms

Project type: Promotion, marketing, coding

Brief explanation: The goal of this task is to create an app with a plugins that allows the promo team to post to several social media platforms simultaneously. It has been suggested to make it a server/client thing. The server could run locally or remotely and would deal with the posting and scheduling itself. The client would be a dumb-ish app, a friendly local interface to the server.

Expected results: A convergent app that can be expanded with plugins that allows the Promo team to post to at least Facebook, Twitter and Mastodon (and maybe LinkedIn, Reddit, and Instagram) all at the same time.

Knowledge Prerequisite: Knowledge of programming using KDE technologies (Qt/QML/Kirigami), servers, web APIs.

Mentor: Paul Brown and the 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)
  • Add schema file for shellprocess configuration (Python, YAML)
  • Expand generic end-user documentation (Markdown)
  • Update website about page with new screenshots (Markdown, needs a VM to get those screenshots)

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.

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, you can contact me in https://webchat.kde.org/#/room/#neochat:kde.org

KQuickImageEditor

Project type: Code

Brief explanation: KQuickImageEditor is a simple image editor intended as being embedded in QML applications. Add image effects implemented as GSGL shaders

Expected results:

  • Making the library more useful

Knowledge Prerequisite: C++ and a bit of OpenGL Mentor: Carl Schwan