GSoC/2019/Ideas
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 may wish to contact the developers and find out more about the particular suggestion you're looking at.
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 is unlikely to work out.
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 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.
Adding a Proposal
Project:
If appropriate, screenshot or another image
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)
- Ideas with no mentors listed and their contact info will be removed **
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
Project: Something that you're totally excited about
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.
digiKam
digiKam is an advanced digital photo management application for Linux, Windows, and MacOS.
Krita
Krita: digital painting for artists. It supports creating images from scratch from beginning to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.
Krita is a widely used digital painting application for professional artists. Last year, Krita gained the ability to create hand-drawn 2D animations, among other new features. For this year, projects that the Krita team would be interested in include the following ideas.
Note that we're always open to ideas you bring in yourself: if you're passionate about something you've come up with yourself, that you want for Krita, that's a big plus for us.
We also expect prospective students to submit at least three patches for bugs or wishes or small features. We want to know how good you are! See https://phabricator.kde.org/T7724 for some smaller tasks that you could work on that are not bugs.
Project: Integrating the MyPaint Brush Engine
Brief Explanation: The MyPaint brush engine has been separated from the MyPaint application and has been completely rewritten. Artists still like the mypaint brush engine a lot and it would be great to have the engine integrated in Krita as a new brush engine. Libmypaint can be found here: https://github.com/mypaint/libmypaint and the brush set here: https://github.com/mypaint/mypaint-brushes . The first goal is to integreate libmypaint in a Krita brushengine and make it load the brushes. The second goal is to expose the MyPaint brush options in Krita's brush editor and allow the modification and creation of MyPaint brushes in Krita. GIMP is an example of an application that has already integrated the MyPaint brush engine.
Expected Results:
Artists should be able to effectively paint with MyPaint brushes in Krita.
Knowledge Prerequisite:
- C, C++, Qt, Krita
Mentor: Boudewijn Rempt (IRC: boud)
Project: Supporting Vertical Text and SVG2 Text in the Text Shape
Brief Explanation: Krita's Text Shape was rewritten for Krita 4.0. It is now SVG based, instead of ODF. There are many things lacking, though. The original goal was to support SVG2. Currently the text shape only supports SVG1. There is no automatic wordwrap and vertical text (e.g. Chinese and Japanese) is not supported either. The goal of this project is to support wordwrap and vertical text layout. Other improvements to the text shape can be proposed as well. The level of this project is advanced.
Expected Results:
Artists should be able to create and edit vertical text. Text shapes should be able to automatically wrap text to the bounding box.
Knowledge Prerequisite:
- C, C++, Qt, Krita, SVG, Typography, Text Layout
Level Advanced
Mentor: Boudewijn Rempt (IRC: boud)
Project: Add New Fill Layer Types
Brief Explanation: Fill layers are layers that automatically generate content. Krita currently has two types of fill layers: Color and Pattern. There used to be another type that generated content dynamically using the OpenShiva scripting language. However, that language hasn't been maintained for a long time. The goal of this project is to add a new dynamic fill layer types that could fill an area with different effects such as perlin and other types of noise, clouds, hatching, fractals.
Expected Results:
Several new fill layer types that allow the user to add dynamically generated content as a layer in the layer stack
Knowledge Prerequisite:
- C, C++, Qt, Krita
Level Medium
Mentor: Boudewijn Rempt (IRC: boud)
Project: Port Krita to Android OR iOS
Brief Explanation: Krita is currently only available on Windows, macOS and Linux. The goal of this project is to port the desktop version of Krita to one mobile operating system, either Android or iOS. This involves making sure all (or a viable subset of) Krita's dependencies are available on the target platform, as well as Krita itself.
Expected Results:
A build of Krita that starts on either mobile OS and shows an image. Further integration with either mobile OS would be nice, but is an extra. Furthermore, the build system and build scripts need to be documented, complete and maintainable.
Knowledge Prerequisite:
- C, C++, Qt, Krita, CMake, Android or iOS. You also need to have access to test hardware.
Level Advanced
Mentor: Boudewijn Rempt (IRC: boud)
Project: Improve Krita for Touch Systems
Brief Explanation: Krita Gemini/Krita Sketch were version of Krita based on QtQuick 1 that provided a decent touch-only experience. Because of the technical limitations of QtQuick 2, the approach used in Gemini and Sketch is no longer viable. Since Krita 4, there is a QtQuick2 based touch docker that mimics the button bar found on some wacom devices. This is not configurable, and quite limited. This project involves working with Krita's UX designers and users to define a new approach to supporting touch devices, then implementing that support.
Expected Results:
Artists should be able to work with Krita on a touch-only device such as a Surface Pro or Wacom Mobile Studio without wanting to chop their devices in two.
Knowledge Prerequisite:
- C, C++, Qt, Krita
Level Medium
Mentor: Boudewijn Rempt (IRC: boud)
Project: SVG Mesh Gradients
Brief Explanation: Even though Mesh Gradients are not officially part of the truncated SVG2 specification anymore, having a second implementation next to Inkscape would help improving the standard. Plus, mesh gradients are very useful for artists. This project entails implementing a new gradient type. Whether this should be based on QGradient or not is up for discussion. The gradients should render exactly the same as in inkscape. See https://svgwg.org/svg-next/pservers.html#MeshGradientElement.
Expected Results:
A new gradient type, UI to create and edit these gradients and apply them. Gradients should work both on vector objects as well as on paint layers.
Knowledge Prerequisite:
- C, C++, Qt, Krita, SVG, Inkscape
Level Advanced
Mentor: Boudewijn Rempt (IRC: boud)
Project: Extending Animation Support for curves
Brief Explanation: In Krita, you can already add curves that could be applied to some properties of a layer, like opacity, animating those properties. We want the animation support extended by allowing users to place masks (filter masks, transformation masks, transparency masks) on the timeline and animate their properties using curves. Every property of a layer or mask placed on the timeline should be animatable.
Expected results:
- Implementation of a gui for applying the curve settings to one or more properties of a mask or layer
- Implementation of the actual rendering of the properties in the frames
- Saving of these settings
Knowledge Prerequisite:
- C++ and Qt
Level Advanced
Mentor: Jouni Pentikainen (tyyppi on IRC)
Project: Taking the Shape Brush to the next level
Brief Explanation: Krita has a number of interesting brush engines. One of them is the Shape Brush engine. Inspired by Alchemy, the shape brush "throws" shapes on the canvas. The current implementation is limited to geometric shapes. We want the brush engine to be extended to make it possible to load vector shapes defined as PDF or SVG and use those to draw on the canvas as well. Other improvements are the addition of Feathering, an outline mode, edge sharpening and background textures.
Expected Results: A revamped and exciting shapes brush
Knowledge Prerequisite:
- C++, Qt, Krita
Level Medium
Mentor: Boudewijn Rempt (IRC: boud)
GCompris
KDE Partition Manager
Kopete
LabPlot
LabPlot is a KDE-application for interactive graphing and analysis of scientific data. LabPlot provides an easy way to create, manage and edit plots and to perform data analysis.
Kdenlive
Kdenlive is a KDE-application for professional video editors. It supports hundreds of video formats and all the features you can expect from a non-linear video editor, including some advanced features like timeline preview rendering, proxy clips and more.
Choqok
Get in touch on IRC (#choqok).
KStars
KStars is free, open source, cross-platform Astronomy Software. It provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time.
Project: Deep Sky Object Overhaul
Brief explanation: KStars supports many deep sky objects (DSOs) including galaxies, nebulae, supernovae, clusters and more. Currently, some deep sky catalogs are stored in simple space separated text format where they are parsed into KStars directly or into KStars Deep Sky Component SQLite3 database which is then loaded in KStars. However, since all DSOs are loaded at once into memory, this limits the size of catalogs within KStars. A solution similar to how dynamic stars are cached in and out of memory must be developed for DSOs. Furthermore, all catalog entries should have their trixels indexed so that they can be efficiently drawn unto the sky map. Another issue is that catalogs can overlap since there is no cross-identification of various catalogs. For example, Andromeda galaxy exists in Messier catalog as M31, and exists in NGC catalog as NGC 224. The database should support an ability to cross-identify objects from all supported and future catalogs.
Expected results:
- Convert all text-format catalogs to SQLite3 database.
- Develop master DSO database where cross-identification of objects is supported. Master database can support addon downloadable catalogs where they can be merged once downloaded by the user.
- Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.
- Caching and drawing optimizations for large catalogs.
- Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN
- Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.
- All necessary updates within KStars maps, tools and dialogs to reflect the above changes.
Knowledge Prerequisite: C++, Qt, Data Structures
Mentor: Jasem Mutlaq (Matrix: Jasem)
Project: FITSViewer & Photometry Improvements
Brief explanation: The FITSViewer is used to display 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:
- Histogram Adjustments: Controls for Shadow, Midtones, and Highlights. White / Black points controls.
- Noise Calculation: Calculate the overall Signal-to-Noise (SNR) radio for the overall image, or a specific subframe of the image.
- 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.
- Mask Overlay: Ability to select custom mask over stars to aid in focusing and photometry.
- 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.
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. Expected results:
- Improved Histogram Tool.
- New controls for histogram.
- SNR, Sky Glow, and Photometry calculations.
- Photometric reductions. Aperture photometry.
Knowledge Prerequisite: C++, Qt, Threading, Data Structures
Mentor: Jasem Mutlaq (Matrix: Jasem)
Project: Implement Qt3D backend for KStars
Brief explanation: The Skymap in KStars desktop version is currently built using QPainter and 2D drawing primitives. In order to take advantage of advances in modern GPU hardware and to present a stunning visual view of the night sky, a 3D backend is desired. Qt 3D provides functionality for near-realtime simulation systems with support for 2D and 3D rendering in both Qt C++ and Qt Quick applications. Within KStars, SkyPainter provides a backend-agnostic class for drawing object unto the skymap regardless of the backend. Previously, an experimental OpenGL backend was developed but was later deprecated due to drawing issues. Since Qt3D provides an abstraction to the backend framework (OpenGL/Vulkan/DirectX), it presents a very flexible framework for building future-proof 3D applications.
Expected results:
- Create Qt3D based backend to draw all objects currently implemented by QPainter backend.
- Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.
- Create animations for meteor shows, comet tails, stars twinkle..etc
Knowledge Prerequisite: C++, Qt, Prior experience working with 3D applications/games.
Mentor: Jasem Mutlaq (Matrix: Jasem)
Peruse
Peruse is a comic book reader application by KDE, which is designed to work both on touch based devices, and on the traditional desktop. Additionally, it has a tool called Peruse Creator which is designed to create comic books for use with Peruse and any other CBZ capable comic book reader. It has rudimentary support for the Advanced Comic Book Format, which is a metadata container for comic book archives (CBR, CBZ and so on).
See the Peruse website for more detailed information: https://peruse.kde.org/
KGpg
KGpg is a frontend for GnuPG key management.
KWin
Plasma
Okular
WikiToLearn
You can find all of the WikiToLearn community on chat.wikitolearn.org. We have many other ideas: get in touch with us to discuss them further!
Falkon
Falkon is a web browser previously known as QupZilla.
Cantor
Cantor provides a graphical frontend for different open source computer algebra systems and scientific programming languages [1].
Plasma Mobile
Plasma Mobile is KDE's software stack for mobile devices that includes Plasma phone components, Kirigami and a set of mobile-friendly applications.
KDevelop
Xdg-desktop-portal-kde
KDE Connect
KDE Connect for Windows port
We want to improve the integration of KDE Connect with the Windows system. As of now, KDE Connect builds on Windows (using Craft) and some plugins have been ported, but it's still unstable and incomplete. This project should aim to implement all the missing plugins, plus provide full integration with the OS: Send-to integration from the right-click menu, making the notifications appear in the Windows 10 notifications bar, etc. By the end of the project, we should have a releaseable installer for KDE Connect on Windows and/or KDE Connect published on the Windows app store.
Areas of knowledge: Experience writing Windows applications, C++ and Qt5 is required.
Mentor: Get in touch with us in the kdeconnect mailing list.