https://community.kde.org/api.php?action=feedcontributions&user=Stikonas&feedformat=atomKDE Community Wiki - User contributions [en]2024-03-28T16:59:17ZUser contributionsMediaWiki 1.40.2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Licensing&diff=90341Guidelines and HOWTOs/Licensing2020-10-02T00:12:31Z<p>Stikonas: /* License Statements in Non-Source-Code Files */</p>
<hr />
<div>This document explains how to state license information in KDE projects according to the [[Policies/Licensing_Policy|KDE Licensing Policy]]. Stating licenses correctly is a very important task, because only correctly licensed software can be distributed and delivered to our users.<br />
<br />
== Introduction ==<br />
Every source code file shall contain information about its license to inform the user of the file how it may be used. Such information is usually added in the form of source code comments at the top of the file. Traditionally, those comments were formulated as so-called "license headers", which are either the complete license texts or short texts that explain where to find the license text for the file along with some legal constraints. Nowadays, this system is getting replaced with "SPDX Expressions", which should become the default way to state a license (see [https://reuse.software REUSE.software]).<br />
<br />
=== In a Nutshell ===<br />
Whenever adding new source to a KDE repository, follow this checklist:<br />
<br />
# The file must have a license defined, which shall be one of the licenses in the [[Policies/Licensing_Policy|KDE Licensing Policy]].<br />
# You should '''add yourself to the copyright holders''' whenever you do a non-trivial contribution to a file.<br />
# The copyright and license statements shall follow the REUSE.software specification (see below)<br />
<br />
Thus, your file shall start with a license statement similar to:<br />
<pre><br />
/*<br />
SPDX-FileCopyrightText: [CURRENT YEAR] [YOUR NAME] <[YOUR MAIL ADDRESS]><br />
[FURTHER CONTRIBUTORS]<br />
<br />
SPDX-License-Identifier: [LICENSE IDENTIFIER EXPRESSION FROM POLICY]<br />
*/<br />
</pre><br />
<br />
=== REUSE.software ===<br />
[https://reuse.software REUSE.software] is an initiative by the Free Software Foundation Europe (FSFE), which provides recommendations to make licensing easier. Their guidelines state how to use SPDX identifier to easier license statements in source files. When following their recommendations, the correct statement of license information can be tested by the [[#license-tooling|"reuse" Python tool]], which checks the syntactical correctness of the license statements and the overall conformance with the REUSE specification:<br />
<br />
* https://reuse.software/spec/<br />
<br />
=== SPDX Identifiers and Expressions ===<br />
[https://spdx.org/ Software Package Data Exchange® (SPDX)] is an open standard for communicating software bill of material information. The SPDX specification is developed by the SPDX workgroup, which is hosted by The Linux Foundation. The idea is to have a public registry of all open source licenses and important license exceptions, such that license statements can be reduced to simply stating short license identifiers.<br />
<br />
* https://spdx.org/licenses/index.html<br />
* https://spdx.org/licenses/exceptions-index.html<br />
<br />
==== Complex Expressions ====<br />
Not every source code is licensed under just one license. For example, you might want to state that a file can be used under the terms for the BSD-2-Clause license or under the terms of the GNU Public License version 2 or later. For these cases, the SPDX workgroup also provides a specification how state complex license statements (which we call "SPDX expressions"). The SPDX expression language also allows tooling based syntax checks, which enables us to use tools to check the correctness of license statements.<br />
<br />
* https://spdx.org/specifications<br />
<br />
For SPDX expressions that do not only consist of one SPDX identifier, the following keywords can be used (for details, see [https://spdx.org/specifications SPDX specification]):<br />
<br />
# OR<br />
# AND<br />
# WITH<br />
<br />
The preference order of these operators is as stated above (cf. SPDX Specification, Appendix IV), where a lower order operator is applied before a higher order operator. For example, for <code>GPL-3.0-only OR LGPL-2.1-only_WITH_Qt-LGPL-exception-1.1</code> the Qt-LGPL-exception-1.1 applies only when using the code under the LGPL-2.1 license.<br />
<br />
=== SPDX Expression Examples ===<br />
A REUSE compliant license statement always has the form to first state the copyright holders and then to specify the license or licenses under which the source code can be used. The following example states that both Jane Doe and John Doe hold copyrights of the source code and that it can be used under the Lesser GNU Public License version 2.1 or any later version of this license:<br />
<br />
<pre><br />
/*<br />
SPDX-FileCopyrightText: 2019 Jane Doe <jane@example.com><br />
SPDX-FileCopyrightText: 2019-2020 John Doe <joe@another-example.com><br />
<br />
SPDX-License-Identifier: LGPL-2.1-or-later<br />
*/<br />
</pre><br />
<br />
== License Statements ==<br />
We follow the recommendations from [https://reuse.software/spec/ reuse.software] how to state license and copyright information. You can use the following template and fill it with the missing information:<br />
<br />
<pre><br />
/*<br />
SPDX-FileCopyrightText: <year> <name> <contact-address><br />
SPDX-FileCopyrightText: <year> <name> <contact-address><br />
...<br />
<br />
SPDX-License-Identifier: <SPDX-expression><br />
*/<br />
</pre><br />
<br />
=== SPDX-FileCopyrightText or Copyright Statement ===<br />
A copyright statement shall always contain the name of the copyright holder, the year of publication and a contact address. According to the REUSE specification, there are several ways to state it correct. In KDE we prefer, for simplicity the following kind of statement:<br />
<br />
# <code>SPDX-FileCopyrightText: 2019 Jane Doe <jane@example.com></code><br />
<br />
For copyright statements, please ensure:<br />
<br />
* Prefer "Copyright" or "SPDX-FileCopyrightText:" to state the copyright holders.<br />
* State the copyright information in the order: year, name, contact address.<br />
* Any contact address should be stated in angle brackets.<br />
* The year of publication can be a single year, multiple years, or a span of years.<br />
<br />
=== SPDX-License-Identifier Statement ===<br />
The <code>SPDX-License-Identifier</code> tag must be followed by a valid SPDX License Expression.<br />
<br />
Here are several example statements from the KDE project. For the list of all allowed licenses in the KDE project, please see the [[Policies/Licensing Policy|KDE Licensing Policy]]:<br />
<br />
* <code>SPDX-License-Identifier: LGPL-2.1-or-later</code><br />
* <code>SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL</code><br />
* <code>SPDX-License-Identifier: LGPL-2.1-only WITH Qt-LGPL-exception-1.1</code><br />
* <code>SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL</code><br />
* <code>SPDX-License-Identifier: GPL-2.0-or-later</code><br />
* <code>SPDX-License-Identifier: GPL-3.0-or-later</code><br />
* <code>SPDX-License-Identifier: MIT</code><br />
* <code>SPDX-License-Identifier: BSD-2-Clause</code><br />
<br />
=== License Texts ===<br />
Each repository shall contain a folder <code>LICENSES/</code> in the root of the repository. In this folder, there shall be a license file for all (and only for those!) SPDX Identifiers that are used inside the project. The license file must be in plain text and state the license text.<br />
<br />
For all SPDX identifiers and exception identifiers that are listed in the SPDX registry, use the https://github.com/fsfe/reuse-tool to download the correct license test with:<br />
<br />
* <code>reuse download <IDENTIFIER></code><br />
<br />
For example, in order to download the "LGPL-2.1-or-later" license file use the command <code>reuse download LGPL-2.1-or-later</code>, which places the file into the <code>LICENSES/</code> folder of your project.<br />
<br />
All SPDX identifiers that start with "LicenseRef-" are custom identifiers (cf. SPDX Specification, Section 6), which are not listed in the SPDX registry. The correct license file contents for <br />
<br />
* LicenseRef-KDE-Accepted-LGPL<br />
* LicenseRef-KDE-Accepted-GPL<br />
<br />
are listed in the [[Policies/Licensing Policy|KDE Licensing Policy]].<br />
<br />
For details, check [https://reuse.software/spec/#license-files REUSE.software specification, Section "License Files"].<br />
<br />
=== License Statements in Non-Source-Code Files ===<br />
For source code files, it is simple to add a comment at the top of the file that states the required SPDX tags. For files that do not contain the source code this is slightly more complicated:<br />
<br />
==== XML Files (appdata.xml, *.qrc) ====<br />
Just add an XML comment at the top of the file behind the xml opening tag. This could look like:<br />
<pre><br />
<?xml version="1.0" encoding="utf-8"?><br />
<!--<br />
SPDX-FileCopyrightText: none<br />
SPDX-License-Identifier: CC0-1.0<br />
--><br />
<component type="desktop"><br />
...<br />
</pre><br />
<br />
==== UI Files (*.ui) ====<br />
You can add copyright info inside <author> tag.<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ui version="4.0"><br />
<author><br />
SPDX-FileCopyrightText: none<br />
SPDX-License-Identifier: GPL-3.0-or-later<br />
</author><br />
...<br />
</pre><br />
<br />
== <span id="license-compatibility"></span>License Compatibility ==<br />
Unfortunately not every license can be combined with every other license. This is due to the fact that licenses may contain contradicting requirements that a licensee cannot fulfill at the same time. Thus, it is important to choose licenses that are compatible to each other.<br />
<br />
This topic is [https://www.gnu.org/licenses/license-compatibility.html discussed in depth] e.g. by the Free Software Foundation. For the scope of this howto it is usually enough to remember:<br />
* All source code files that are compiled into a binary artifact must be compatible with each other.<br />
* A binary artifact is a (shared) library, a plugin or an executable.<br />
* If you link an application with any GPL license '''dynamically''' to a library that has any LGPL, BSD or MIT license, then everything will be fine.<br />
* For combination of differently licensed files see an [https://dwheeler.com/essays/floss-license-slide.html Essay by David Wheeler], which is forms the base of the license compatibility matrix in the outbound license check generator.<br />
<br />
== <span id="license-tooling"></span>License Tooling ==<br />
<br />
=== REUSE Compliance Checking ===<br />
As we follow the reuse.software specification, we can use their compliance tool to check the correctness of license statements. The tool is available via https://github.com/fsfe/reuse-tool or can simply be installed via pip:<br />
<br />
<code>pip3 install reuse</code><br />
<br />
For details, see the [https://github.com/fsfe/reuse-tool/blob/master/README.md README.md] file. The most important options are:<br />
<br />
* download : Download the specified license into the LICENSES/ directory.<br />
* lint : Verify the project for REUSE compliance.<br />
<br />
Please note that a positive result from this tool only tells that license statements are added in a reasonable way and not that the licenses that were chosen are reasonable (see license compatibility).<br />
<br />
=== Outbound License Checking ===<br />
The outbound license in this context describes the license a specific binary artifact has (contrary to the inbound license, which is the license of the source code files). In order to check that the individual file licenses are compatible with the desired outbound license, [[#license-compatibility|the compatibility of licenses]] has to be checked.<br />
A way to do this easily is to use the Outbound-License-Check Generator in Extra-Cmake-Modules (not yet released, probably part of KF5 5.75).<br />
<br />
=== Conversion from Traditional License Headers to SPDX Expressions ===<br />
In KDE, we have a tool called [https://invent.kde.org/sdk/licensedigger license-digger], which is prepared specifically for the license headers typically used in KDE projects.<br />
You can simply run it over a repository that you want to convert, review the changes it did and create a merge request.<br />
<br />
For details about usage and extending it for not detected headers, see its [https://invent.kde.org/sdk/licensedigger/-/blob/master/README.md README.md].<br />
<br />
== Frequently Asked Questions ==<br />
<br />
=== Shall I add a COPYING or COPYING.LIB file to my repository? ===<br />
No. Those files shall be replaced completely by files with a standardized naming and canonical license texts in the <code>LICENSES/</code> subfolder of your repository. All files in that folder shall follow the REUSE specification.<br />
[https://phabricator.kde.org/T12730 Discussion took place here.]<br />
<br />
=== Which copyright holder shall I add to a CC0-1.0 file? ===<br />
For a non-copyrightable file there cannot be a copyright holder. However, the REUSE project expects to make a conscious decision about it.<br />
It is absolutely when when you just add a SPDX-FileCopyrightText statement that tells, nobody has copyright on this file, e.g.:<br />
<pre><br />
SPDX-FileCopyrightText: none<br />
SPDX-License-Identifier: CC0-1.0<br />
</pre><br />
The REUSE.software project discusses uncopyrightable software [https://reuse.software/faq/#uncopyrightable in their FAQ].</div>Stikonashttps://community.kde.org/index.php?title=KGet&diff=83778KGet2019-04-22T11:59:57Z<p>Stikonas: /* DragBasket */ typo</p>
<hr />
<div><br />
==Introduction==<br />
<br />
==Design==<br />
<br />
==Roadmap==<br />
===KGet 2.5 (in KDE 4.5)===<br />
* Implement transfersRemoved/Added signals with a QList as parameter (unhack r1064328)<br />
* Better error-handling for transfers, using a setError() method -> discuss this with the whole team<br />
* Something like a filesizechecker, which informs/warns the user if there's no space free on the disk<br />
<br />
==General ToDo==<br />
===Core===<br />
* MultiSource Downloading<br />
* Add Advanced Details support<br />
===User Interface===<br />
====Main View====<br />
* Add advanced details area (show chunk view, peer view, file view, statistics view etc...). Use tabview to display multiple views.<br />
* Add a coloured band over the mainview displaying the currently display items. For example if I select "Downloads" from the sidebar it should display "Downloads". If instead I select a specific group <groupname> it should display "Downloads - <groupname>"<br />
* Add valid download time frame, global or individual.<br />
* Show average transfer speed when finished<br />
====SideBar====<br />
* Re-import the sidebar. Might be a tree-view.<br />
* Add a "Finished" item. This will point to the downloaded files.<br />
* Add a popupmenu to add or delete groups by right-clicking on them.<br />
* Implement the selection of a specific group. In this way selecting a group from the sidebar should display only its transfers.<br />
* Make the sidebar capable of several sizes for its items (16, 22, 32, ...)<br />
====DragBasket====<br />
* Show downloading progress, if multiple downloads are going, show each for 1 or 2 seconds.<br />
<br />
====SysTray====<br />
* Implement progressive filling of the icon in the system tray.<br />
* Use KPassivePopups to notify when all the transfers have been downloaded.<br />
====Plasmoid====<br />
===Usability===<br />
* Ask the user if he/she wants to delete the transfer (or probably if he/she wants to delete the tmp-file)?<br />
* Let the user add new download-sources to a multithreaded transfer manually<br />
* Handle the situation when we remove a group which has transfers.<br />
* If user resume a download and find the disk space is not enough, implement a option which can move and continue the transfer to another user-specified place.<br />
* Add a wizard on the first app execution, where the user can set his download folders and other "vital" settings like the integration with Konqueror. Perhaps we could provide a good default like ~/downloads/.<br />
* Check there is enough space left before downloading file<br />
* Proxy-support, not global, only for kget (we need to wait for kdelibs)<br />
* Right-click menu to change transfer properties (filename, destination directory, url)<br />
* Add option to show newtransferdialog on top, using activiateWindow(). (DONE)<br />
===Optimization===<br />
* Profile kget and look for possible optimizations, done for:<br />
** Removing multiple/single transfers<br />
** adding (== loading) many transfers<br />
** starting/stopping many transfers<br />
** ... further improvements there most likely still possible<br />
* Make KGets handling of many downloads smarter, (maximum number of open connections per server).<br />
* Recursion and other wget features.<br />
===Plugins===<br />
====KIO====<br />
* Save referer page for downloads.<br />
* Preserve timestamp of downloaded files (as option)<br />
====BitTorrent====<br />
* Fix crashes in Advanced-Details<br />
====ContentFetch====<br />
* Fix thread related issues.<br />
* Polish youtube downloader.<br />
* Prepare to write megaupload/rapidshare downloader.<br />
* Write the baidu mp3 downloader (long term).</div>Stikonashttps://community.kde.org/index.php?title=KGet&diff=83777KGet2019-04-22T11:59:31Z<p>Stikonas: /* MLDonkey */ Remove section</p>
<hr />
<div><br />
==Introduction==<br />
<br />
==Design==<br />
<br />
==Roadmap==<br />
===KGet 2.5 (in KDE 4.5)===<br />
* Implement transfersRemoved/Added signals with a QList as parameter (unhack r1064328)<br />
* Better error-handling for transfers, using a setError() method -> discuss this with the whole team<br />
* Something like a filesizechecker, which informs/warns the user if there's no space free on the disk<br />
<br />
==General ToDo==<br />
===Core===<br />
* MultiSource Downloading<br />
* Add Advanced Details support<br />
===User Interface===<br />
====Main View====<br />
* Add advanced details area (show chunk view, peer view, file view, statistics view etc...). Use tabview to display multiple views.<br />
* Add a coloured band over the mainview displaying the currently display items. For example if I select "Downloads" from the sidebar it should display "Downloads". If instead I select a specific group <groupname> it should display "Downloads - <groupname>"<br />
* Add valid download time frame, global or individual.<br />
* Show average transfer speed when finished<br />
====SideBar====<br />
* Re-import the sidebar. Might be a tree-view.<br />
* Add a "Finished" item. This will point to the downloaded files.<br />
* Add a popupmenu to add or delete groups by right-clicking on them.<br />
* Implement the selection of a specific group. In this way selecting a group from the sidebar should display only its transfers.<br />
* Make the sidebar capable of several sizes for its items (16, 22, 32, ...)<br />
====DragBasket====<br />
* Show downloading progress, if multiple downloads are going, show each for 1 or 2 senconds.<br />
====SysTray====<br />
* Implement progressive filling of the icon in the system tray.<br />
* Use KPassivePopups to notify when all the transfers have been downloaded.<br />
====Plasmoid====<br />
===Usability===<br />
* Ask the user if he/she wants to delete the transfer (or probably if he/she wants to delete the tmp-file)?<br />
* Let the user add new download-sources to a multithreaded transfer manually<br />
* Handle the situation when we remove a group which has transfers.<br />
* If user resume a download and find the disk space is not enough, implement a option which can move and continue the transfer to another user-specified place.<br />
* Add a wizard on the first app execution, where the user can set his download folders and other "vital" settings like the integration with Konqueror. Perhaps we could provide a good default like ~/downloads/.<br />
* Check there is enough space left before downloading file<br />
* Proxy-support, not global, only for kget (we need to wait for kdelibs)<br />
* Right-click menu to change transfer properties (filename, destination directory, url)<br />
* Add option to show newtransferdialog on top, using activiateWindow(). (DONE)<br />
===Optimization===<br />
* Profile kget and look for possible optimizations, done for:<br />
** Removing multiple/single transfers<br />
** adding (== loading) many transfers<br />
** starting/stopping many transfers<br />
** ... further improvements there most likely still possible<br />
* Make KGets handling of many downloads smarter, (maximum number of open connections per server).<br />
* Recursion and other wget features.<br />
===Plugins===<br />
====KIO====<br />
* Save referer page for downloads.<br />
* Preserve timestamp of downloaded files (as option)<br />
====BitTorrent====<br />
* Fix crashes in Advanced-Details<br />
====ContentFetch====<br />
* Fix thread related issues.<br />
* Polish youtube downloader.<br />
* Prepare to write megaupload/rapidshare downloader.<br />
* Write the baidu mp3 downloader (long term).</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2019/Ideas&diff=83145GSoC/2019/Ideas2019-03-01T17:58:31Z<p>Stikonas: /* KDE Partition Manager */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2018/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 is 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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<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 />
** '''Ideas with no mentors listed and their contact info will be removed''' **<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 />
===Your Own Idea ===<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 />
'''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 />
=== Cantor ===<br />
[https://edu.kde.org/cantor/ Cantor] provides a graphical frontend for different open source computer algebra systems and scientific programming languages. [mailto:kde-edu@kde.org Contact the KDE-Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Integrated documentation ====<br />
'''Brief explanation''': at the moment the external documentation like for example for Maxima http://maxima.sourceforge.net/docs/manual/en/maxima.html, and similar for Octave, python, etc., is opened in the external browser window. Ideally, we'd show this inside of the application in the help/documentation panel and enable a quick access to the documentation together with some more advanced search capabilities. Integrated search and also the context sensitive help (user marks a keyword in the worksheet, hits e.g. the F1 button and the documentation for the selected keyword is shown) should be possible. Qt Help Framework (http://doc.qt.io/qt-5/qthelp-framework.html) should be utilized for this. For indexing and searching in a unified manner the documentation together with the search index should be available locally. Qt help's qch file should be available for download on store.kde.org. Users of different systems (Maxima, Octave, R, etc.) would download the documentation they need. Ideally, we could also try to get a similar appearance by css-styling the html files for different systems prior to creating those qch files.<br />
<br />
The project consists of the following three major parts:<br />
* implementation in c++ (documentation panel, searching, short cuts for faster navigation, etc.)<br />
* creation of Qt help files for major computer algebra systems and programming languages supported by Cantor<br />
* definition of sections on store.kde.org<br />
<br />
'''Expected results''': integrated documentation in Cantor for the supported CAS and programming languages<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic knowledge about html<br />
<br />
'''Mentor''': Alexander Semke<br />
<br />
===digiKam===<br />
digiKam is an advanced digital photo management application for Linux, Windows, and MacOS.<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://community.kde.org/Digikam/GSoC2019 Digikam KDE GSoC 2019 site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://www.linkedin.com/groups/12186015/ LinkedIn Group]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: AI Face Recognition with OpenCV DNN module ====<br />
<br />
'''Brief Explanation''': With GSoC 2016, we proposed a project to implement an AI extension to the [https://cgit.kde.org/digikam.git/tree/core/libs/facesengine/recognition digiKam core face recognition]. The project used the Dlib C++ API, but we were not satisfied by the results, as the algorithm gave poor performance. This choice also introduced a huge backport of low level codes which we don't want to maintain. So, even though the project proposed a somewhat suitable solution to provide an AI face recognition processor based on deep-learning, this one was not really powerful and functional enough. For now, this section of code about Dlib DNN extension is disabled in digiKam core.<br />
<br />
As digiKam core already depends on OpenCV library to perform complex image processing, and as OpenCV >= 3.3 release provide a new [https://docs.opencv.org/3.4.3/d2/d58/tutorial_table_of_content_dnn.html OpenCV DNN (Deep Neural Network) module], the goal now is to port the current digiKam core face recognition DNN extension to new OpenCV API and write all unit tests to validate the algorithm usability, efficiency, and performance, while learning and recognizing faces automatically.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Face recognition based on DNN OpenCV API, with unit test, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, OpenCV, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
==== Project: Faces Management workflow improvements ====<br />
<br />
'''Brief Explanation''': digiKam provide a Faces detection algorithm which work mostly in 80% of use cases. It detect faces position in image automatically and register these information in database. Event if a lots of tasks can be done in background by digiKam, the end-users needs to adjust, re-organize, rename, delete Face tags in database through the user interface.<br />
<br />
Since many year, a lots of improvements have been identified by digiKam users community to improve the face tags management workflow in graphical use interface. See [https://bugs.kde.org/buglist.cgi?product=digikam&component=Faces-Workflow&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED this list of bugzilla entries] for details<br />
<br />
Note: Face Recognition is another part of Faces management, but this project is concerned by algorithms used while recognition.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a better Face Tags management workflow in user interface, with unit test, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, User interface, digiKam<br />
<br />
'''Mentors''': Gilles Caulier<br />
<br />
==== Project: Zoomable and Resizable Brush for Healing Clone Tool ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we have proposed a project to implement an [https://cgit.kde.org/digikam.git/tree/core/utilities/imageeditor/tools/enhance Healing Clone tool for digiKam image editor] to be able to remove unwanted artifacts from images. The student has implemented the basis without a zoomable canvas and without the resizable brush support. Due to this lack of features, the tools cannot be used in production by end-users.<br />
<br />
This section of code about healing clone tool is currently disabled in digiKam core.<br />
<br />
The goal of this project is to implement the missing feature for the Healing Clone tool in image editor, including the unit-tests and the documentation.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Healing clone tool for image editor, with unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Mohamed Anwer and Gilles Caulier<br />
<br />
==== Project: Factoring all Export Tools with new Export API ====<br />
<br />
'''Brief Explanation''': With GoSC 2018, we proposed a project to implement a huge factorization and improvements with all [https://cgit.kde.org/digikam.git/tree/core/utilities/assistants/webservices digiKam export to web service tools]. Our student fixed plenty of code using OAuth version 2 authentification, has simplified classes, and started to write a new API to factorize all these tools, including a common Wizard dialog. Even if the export tools implementation are now better, they do not use the new API and always run as a stand alone session in digiKam core. Due to this fact, the Web Service tools are not yet usable in digiKam Batch Queue Manager as single step runnable at end of a queue processing. So the section of code about factored export tools API is currently disabled in digiKam core. This year, the project will be to fix that.<br />
<br />
'''Expected Results''': <br />
<br />
Start to use every the new export tools API, use the new Wizard dialog, factoring codes everywhere, and introduce all export tools to BQM. Write unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
=== Falkon ===<br />
[https://www.falkon.org/ Falkon] is a KDE web browser.<br />
<br />
[mailto:falkon@kde.org Contact the Falkon team]<br />
<br />
==== Plasma integration ====<br />
<br />
'''Brief explanation:''' Falkon is Qt application and as such it integrates quite well into Plasma desktop environment. There is also an extension that allows to store passwords in KWallet. Plasma desktop provides some services that could be useful to use from browser, like showing the progress of downloads as jobs in notification applet or searching for bookmarks or open tabs from KRunner.<br />
<br />
There is already existing extension for Chrome that implements these features - [https://cgit.kde.org/plasma-browser-integration.git plasma-browser-integration] that can be used as a base for the Falkon extension.<br />
<br />
'''Expected results:''' Falkon C++ extension and additional helpers improves the integration with Plasma desktop.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, JavaScript basics<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
==== Firefox Sync ====<br />
<br />
'''Brief explanation:''' Firefox Sync is an open API for synchronization of browser data between multiple instances. Falkon doesn't currently have support for any synchronization at all. Instead of creating in-house solution, it would be best to use some existing solution, which Firefox Sync appears to be a great candidate.<br />
<br />
Firefox Sync is not exclusive to Firefox browser, it was already implemented for example in Gnome Epiphany browser (https://github.com/GNOME/epiphany/tree/master/lib/sync).<br />
<br />
'''Expected results:''' Falkon is able to sync bookmarks, passwords, sessions ... over Firefox Sync API.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
=== GCompris ===<br />
[https://gcompris.net/ GCompris] is a high quality educational software suite, including a large number of activities for children aged 2 to 10. [mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
==== Project: Finishing the port of the major activities for version 1.0 ====<br />
'''Brief explanation''': Originally written in Gtk+ the development team started to rewrite it from scratch in Qt Quick and almost finished the port.<br />
<br />
'''Expected results''':<br />
The aim of this year is to work on the most important activities that we are missing to have a complete 1.0, mostly the analog electricity one (https://phabricator.kde.org/T5954, other activities can be proposed too, for example, we lack activities to learn about biology).<br />
First phase is to check how the Gtk+ version was working, what could be improved and then create a proposal with a timeline explaining what you expect to do and the time estimation. It does not need to be a simple clone, improvements should be done when possible.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
==== Project: One step closer to version 1.0 ====<br />
'''Brief explanation''': we had some remarks that the difficulty in an activity can increase too much and target different ages in the same levels. The aim of this project is to add a granularity on the datasets so the child can better target what to learn.<br />
<br />
'''Expected results''':<br />
The aim of this project is to update activities to be able to use json files as datasets so we can have multiple datasets (each targeting a different learning goal) for the same activity.<br />
<br />
You need to choose activities that need this kind of datasets and update their code to use multiple datasets.<br />
<br />
A discussion is opened in https://phabricator.kde.org/T10211 to better know what we want and how to do it (WIP).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
=== KDE Connect ===<br />
[https://community.kde.org/KDEConnect KDE Connect] is a project that enables all your devices to communicate with each other.<br />
<br />
==== KDE Connect for Windows port ====<br />
We want to improve the integration of KDE Connect with the Windows system. As of now, KDE Connect builds on Windows ([https://community.kde.org/KDEConnect/Build_Windows using Craft]) and some plugins have been ported, but it's still unstable and incomplete.<br />
<br />
This project should aim to:<br />
<br />
* Implement all the missing plugins<br />
* Provide full integration with the OS:<br />
** Send-to integration from the right-click menu,<br />
** Make the notifications appear in the Windows 10 notifications bar, etc.<br />
* Improve existing documentation for how to compile (and use) KDE Connect on Windows<br />
** It would also be great if we had the option to use mingw as the compiler instead of depending on the Visual Studio compiler<br />
<br />
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.<br />
<br />
'''Areas of knowledge:''' Experience writing Windows applications, C++ and Qt5 is required.<br />
<br />
'''Mentor:''' Simon Redman (simon@ergotech.com)<br />
<br />
Feel free to reach out to the rest of the team on the [https://mail.kde.org/mailman/listinfo/kdeconnect kdeconnect mailing list], [https://t.me/joinchat/BRUUN0bwMhNfn8FIejA-nw Telegram], or on #kdeconnect on Freenode<br />
<br />
=== KDE neon ===<br />
[https://neon.kde.org KDE neon] compiles KDE software to make it available pronto.<br />
<br />
==== Project: ISO Image Writer ====<br />
<br />
[https://cgit.kde.org/isoimagewriter.git/ ISO Image Writer] copies ISO images onto USB drives. It needs code tidied up and builds made for Snap, FlatPak, Windows, Mac and good old Linux packages. [https://phabricator.kde.org/M113/466/ Design to implement]<br />
<br />
'''Expected Results''': Installable packages<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Build systems, multi-platform<br />
<br />
Mentor: <br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Jonathan Riddell (IRC: Riddell)<br />
<br />
=== Kdenlive ===<br />
[https://kdenlive.org 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.<br />
<br />
==== Project: Evolving Titler tool ====<br />
<br />
'''Brief Explanation''': Kdenlive titler tool allows to draw texts and images to composite over videos.<br />
<br />
Current code is using XML description, drawn by our "kdenlivetitle" MLT module, using old QPainter engine.<br />
This engines has limitations that blocks interesting features.<br />
Few years ago, an upstream module appeared in MLT, named "WebVfx", which uses QML to do similar things with much more flexibility.<br />
<br />
We would like to be able to load current XML titles and convert them automatically to QML format, and generate QML from our current GUI. Then the GUI could evolve to integrate new features, in accordance to our community requests & design group recommendations.<br />
<br />
'''Expected Results''': A titler using QML backend<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, QML<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Vincent Pinon (IRC: vpinon)<br />
<br />
=== KDE Partition Manager ===<br />
<br />
[https://www.kde.org/applications/system/kdepartitionmanager KDE Partition Manager] is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
https://webchat.kde.org/#/room/#partitionmanager:kde.org<br />
<br />
==== Project: Port authentication to Polkit-qt ====<br />
<br />
'''Brief Explanation''': KDE Partition Manager was recently ported to KAuth (which is Tier 2 KDE Framework library). This means that instead of running the whole GUI as root, KDE Partition Manager runs as a normal user, starts a small (non-GUI) helper application which runs as root and executes privileged tasks.<br />
<br />
KAuth itself was not sufficient for this task, so we built a small protocol on top of KAuth. Usually, programs that use KAuth, start a helper, it does its job and exists. In KDE Partition Manager, helper persists, and communicates with KDE Partition Manager using a fairly simple DBus protocol over which GUI application can request two things:<br />
* execute some external program, like sfdisk, btrfs, etc... <br />
* Copy block of data (partition) to another location).<br />
<br />
However, KAuth library itself is a layer built on top of Polkit-Qt (which is a small wrapper around Polkit).<br />
<br />
'''The proposal''' for this project is to port away from KAuth and run our custom protocol between helper and GUI application directly on top of Polkit-Qt.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and basic knowledge of Qt<br />
<br />
You don't need experience of using DBus, you can pick this up during the project.<br />
<br />
'''Mentors''': Andrius Štikonas (IRC: stikonas), Caio Jordão Carvalho (IRC: cjlcarvalho)<br />
<br />
==== Project: Finish mdraid and implement dmraid support ====<br />
<br />
'''Brief Explanation''': KDE Partition Manager got a mdraid (Software RAID) support during the last Google Summer of Code as you can see in the [https://cgit.kde.org/kpmcore.git/?h=raid-support raid-support branch]. It is working with a good number of functionalities such as the display of RAID devices and the manipulation of them. Most of this work is completed, but there are some implementations and fixes to do, solve some udev bugs and include the implementation for resizing mdraid volumes.<br />
<br />
There is another type of RAID available for Linux systems, which is dmraid (FakeRAID). It works along the device mapper to discover and manipulate ATA RAID devices created by controllers BIOS. Our goal in this project is to offer some basic functionalities for it, such as displaying, creating, erasing and manipulating partitions inside of these volumes.<br />
<br />
'''The proposal''' for this project is to finish mdraid support and implement initial dmraid support.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and basic knowledge of Qt<br />
<br />
'''Mentors''': Andrius Štikonas (IRC: stikonas), Caio Jordão Carvalho (IRC: cjlcarvalho)<br />
<br />
=== Krita ===<br />
[http://www.krita.org 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==== Project: Integrating the MyPaint Brush Engine ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to effectively paint with MyPaint brushes in Krita.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
<br />
==== Project: Supporting Vertical Text and SVG2 Text in the Text Shape ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to create and edit vertical text. Text shapes should be able to automatically wrap text to the bounding box.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Typography, Text Layout<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Add New Fill Layer Types ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Several new fill layer types that allow the user to add dynamically generated content as a layer in the layer stack <br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Port Krita to Android OR iOS ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, CMake, Android or iOS. You also need to have access to test hardware.<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) Jayaditya Gupta (IRC: nightmare_unreal/jayssj11)<br />
<br />
<br />
==== Project: Improve Krita for Touch Systems ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: SVG Mesh Gradients ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Inkscape<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Jouni Pentikainen (tyyppi on IRC)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': A revamped and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
=== KStars ===<br />
[https://edu.kde.org/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.<br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* 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.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<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 />
# '''Histogram Adjustments''': Controls for Shadow, Midtones, and Highlights. White / Black points controls.<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 />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* New controls for histogram.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
=== LabPlot ===<br />
[https://labplot.kde.org 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. Labplot is part of the [https://edu.kde.org/ KDE Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Import of educational data sets available on the internet ====<br />
'''Brief explanation''': There are many internet pages providing data sets for educational and study purposes for many different areas (astrophysics, statistics, medicine, etc.). Some tools used in the scientific area provide some "wrappers" for such online sources and allow the user to easily play around with those data sets in the applications whereas the technical details like fetching of data from the server and parsing are done completely transparent for the user. The goal of this project is to add similar functionality to LabPlot. There will be a wizard where the user can select from a thematically grouped list of data sets available online. The internal description of such an online data set should contain the URL with the actual file that needs to be downloaded and the settings for LabPlot's data parser (separator, column names and data types, etc.). The definition of the data sources should be made available on store.kde.org.<br />
<br />
'''Expected results''': We want to be able to easily import the educational data sets available on the internet.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': Fábián Kristóf<br />
<br />
==== Project: Statistical analysis ====<br />
Currently LabPlot has only basic support for statistical data analysis by providing some basic measures of descriptive statistics in the spreadsheet. The goal of the project is to add more statistics relevant features (hypothesis tests, cluster analysis, ets.) to LabPlot.<br />
<br />
'''Expected results''':<br />
* evaluate available statistical open-source libraries which can be used for this project<br />
* determine a reasonable set of features and algorithms that can be added to LabPlot, compare here with other similar projects, and implement them<br />
* for the visualization of results of statistical calculations, implement new kind of reports for this, comparable to other similar projects<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic statistics knowledge<br />
<br />
'''Mentor''': Stefan Gerlach, Alexander Semke<br />
<br />
=== Okular ===<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. [mailto:okular-devel@kde.org Contact] the Okular developers.<br />
<br />
==== Project: Support animated PDF ====<br />
<br />
'''Brief explanation:''' PDF files can support animation via JavaScript. This is one feature that is regularly requested by users and would be nice supporting it in Okular.<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentor:''' Albert Astals Cid aacid@kde.org<br />
<br />
'''Application guide''':<br />
* https://bugs.kde.org/show_bug.cgi?id=403772<br />
* https://bugs.kde.org/show_bug.cgi?id=242617<br />
<br />
<br />
==== Project: Add support for showing and adding replies to sticky notes ====<br />
<br />
'''Brief explanation:''' PDF files can contain replies to certain annotations. In this project, you would need to add support to Okular and possibly to poppler so that they show the same way they do on other PDF readers. Once they are shown and if there is enough time adding the capability to add replies is also welcome.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentor:''' Okular developers https://mail.kde.org/mailman/listinfo/okular-devel<br />
<br />
'''Application guide''':<br />
* https://bugs.kde.org/show_bug.cgi?id=387834<br />
<br />
<br />
==== Project: Improve custom stamp annotation handling ====<br />
<br />
'''Brief explanation:''' Okular does display stamp annotations, but the support<br />
is somewhat incomplete. This particularly shows when trying to use stamp<br />
annotations with a custom image. For example, such annotations can be<br />
added in Okular, but they cannot be saved to the pdf file in a way<br />
that any other pdf viewer can read. Also, they will not appear on print-outs.<br />
<br />
The underlying reason for this is that Okular renders these stamps itself,<br />
rather than relying on the poppler library, which does all other pdf<br />
rendering. Goal of this project is therefore to teach poppler how to<br />
render stamp annotations, and then make Okular use that new functionality.<br />
More details can be found in the bug report [0].<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=383651<br />
<br />
'''Expected results:''' Poppler should render stamp annotations. Annotations<br />
should be printable from Okular. Custom stamps inserted via the Okular GUI<br />
should be visible in other pdf readers.<br />
<br />
'''Knowledge prerequisite:''' C++, and a bit about the pdf format.<br />
<br />
<br />
==== Project: Annotation improvements ====<br />
<br />
'''Brief explanation:''' Okular supports convenient editing of pdf annotations, but quite a number of paper-cut bugs are known. Examples are [0,1,2], but many more can be found in the bugtracker. Goal of this project is to fix as many of these bugs as possible, which should improve the Okular user experience greatly.<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=275371<br />
<br />
[1] https://bugs.freedesktop.org/show_bug.cgi?id=102635<br />
<br />
[2] https://bugs.freedesktop.org/show_bug.cgi?id=52010<br />
<br />
'''Expected results:''' Lots of annotation-related bugs fixed. Annotation rendering and manipulation should be more enjoyable.<br />
<br />
'''Knowledge prerequisite:''' C++ and Qt, and a bit about the pdf format<br />
<br />
=== Plasma Mobile ===<br />
Plasma Mobile is KDE's software stack for mobile devices that includes Plasma phone components, Kirigami and a set of mobile-friendly applications.<br />
<br />
==== SMS App ====<br />
Plasma Mobile currently does not have a functional SMS app. One approach to this would be extending the SMS app that is currently developed for KDE Connect to have a Plasma Mobile backend.<br />
<br />
This includes:<br />
- Develop an approach to make the app support multiple backends<br />
- Develop a backend for the Plasma Mobile SMS stack (ofono)<br />
- Possibly improvements to the Plasma Mobile SMS stack<br />
- Possibly improvements to the SMS app UX<br />
<br />
Goal is to be able to communicate via SMS on a Plasma mobile phone with all basic features (sending, receiving SMS, browsing through conversations).<br />
<br />
This requires access to a Plasma mobile enabled phone, preferably the Nexus 5X. Second-hand phones are available at very low prices.<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5.<br />
<br />
'''Mentors:''' Simon Redman and Nicolas Fella for KDE Connect specific things, Bhushan Shah for Plasma Mobile things. Get in touch with us on #kdeconnect on freenode or the [https://matrix.to/#/%23plasmamobile:matrix.org Plasma Mobile Matrix channel]<br />
<br />
=== Purpose ===<br />
The [https://api.kde.org/frameworks/purpose/html/index.html Purpose] framework offers the possibility to create integrate services and actions on any application without having to implement them specifically. Purpose will offer them mechanisms to list the different alternatives to execute given the requested action type and will facilitate components so that all the plugins can receive all the information they need.<br />
<br />
==== Barcode scanning infrastructure ====<br />
Purpose enables application developers to use features without implementing them themselves. It offers multiple alternatives to achieve a goal. Right now it supports sharing files and URLs.<br />
<br />
An interesting use case for it would be scanning barcodes. An application developer that wants to scan a barcode would ask Purpose for it. Purpose would offer multiple ways of doing it, e.g. from a local file, from the local camera or from a via KDE Connect connected phone. Purpose would then return the data to the application.<br />
<br />
Goal of this task is to have a framework for scanning barcodes as well as multiple implementations. This consists of:<br />
- Adding a new Plugin type to Purpose<br />
- A import from file backend<br />
- A local camera backend<br />
- A KDE Connect backend<br />
- One or more applications using it, e.g. Itinerary or a barcode scan app for Plasma Mobile<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5 is required. Experience with Java/Android for the KDE Connect backend is beneficial.<br />
<br />
'''Mentor:''' Nicolas Fella (nicofee) for KDE Connect parts. Aleix Pol (apol) for Purpose parts. Volker Krause (vkrause) for zxing parts. [https://mail.kde.org/mailman/listinfo/kde-frameworks-devel Devel mail list].<br />
<br />
===KWin===<br />
====Clipboard Management Wayland protocol====<br />
Currently on Wayland functionality like Klipper and clipboard sync via KDE Connect is not working because the programm cannot access the clipboard in the required way. A special wayland protocol for that will be needed. The wl-roots project has a [proposal https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-data-control-unstable-v1.xml] for this. This GSoC project is about implementing support for it in KWin and making use of it in Klipper and KDE Connect.<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++, Knowing what Wayland is.<br />
'''Mentor:''' Roman Gilg (romangg), Nicolas Fella (nicofee)<br />
<br />
==== Wayland graphical tablet input support ==== <br />
<br />
'''Brief Explanation''': Tablets are very different from mice, they have a lot more information about their current state and events. As such there are separate protocols for passing these events from raw hardware to the client. We need to add:<br />
* A protocol in kwayland to wrap the low level protocol<br />
* support in KWin to map libinput to sending wayland events to the right clients.<br />
* support in Qt's wayland client code to map wayland to Qt events that applications can use <br />
(this will mean collaborating not just within KDE code but also Qt)<br />
<br />
'''Expected results''':<br />
Working tablet support in all applications within a kwin wayland session.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt5,<br />
<br />
'''Mentor''': David Edmundson (davidedmundson@kde.org), Vlad Zagorodniy</div>Stikonashttps://community.kde.org/index.php?title=Matrix&diff=83144Matrix2019-03-01T17:57:15Z<p>Stikonas: /* KDE Partition Manager */</p>
<hr />
<div>[https://www.matrix.org Matrix] is an open standard for interoperable, decentralised, real-time communications. KDE is officially using Matrix for collaboration for KDE, superseding more antiquated and closed source services. Matrix is an open protocol and network for decentralized communication, backed by an open standard and open source reference implementations for servers, clients, client SDKs, bridges, bots and more. It provides all the features you’d expect from a modern chat system: infinite scrollback, file transfer, typing notifications, read receipts, presence, search, push notifications, stickers, VoIP calling and conferencing, etc. It even provides end-to-end encryption (based on Signal’s double ratchet algorithm) for when you want some privacy.<br />
<br />
Furthermore, Matrix natively supports bridges to other protocols, such as IRC (the official KDE messaging channel). This means that you can use a Matrix client to join and use IRC channels like if they were Matrix rooms. <br />
<br />
== Clients ==<br />
You can chat using your web browser and visiting [https://webchat.kde.org KDE's webchat] or you can use a desktop or mobile client. [https://matrix.org/docs/projects/clients-matrix Here is a list of clients for your desktop or mobile devices].<br />
<br />
== Registering and Logging in ==<br />
<br />
==== On the web ====<br />
'''THIS IS THE RECOMMENDED WAY OF REGISTERING YOUR ACCOUNT.'''<br />
<br />
Even if you plan on using a desktop or mobile client later, [https://webchat.kde.org/#/welcome register through the web chat] since it uses all the correct defaults to get a :kde.org account.<br />
<br />
# Visit [https://webchat.kde.org KDE's online webchat]<br />
# Locate the ''Create Account'' button. Press it. <br /> [[File:Riot upload 00.png|300px|center]]<br />
# Choose a cool nickname and set your password. You can include an email if you ever need to recover your password, but this is optional. Click ''Register''. <br />[[File:Kde-register.png|300px|center]]<br />
# '''VERY IMPORTANT:''' Carefully read the message System Alerts sends you when you first enter. You will be required to read and accept the Privacy Notice and Terms and Conditions before you can join any rooms. Click the link, read the text, scroll to the bottom and check the checkboxes if you agree.<br />[[File:Web_registration_03.png|300px|center]]<br />On revisiting the webchat, you will be able to participate in the conversation with the rest of the KDE community.<br />
<br /><br />
<br />
That's it! You can start chatting with members of KDE's community.<br />
<br />
==== Using the Riot desktop client ====<br />
<br />
Download the desktop client [https://riot.im/desktop.html from Riot's website]. APT repositories with Debian/Ubuntu packages are provided. Your mileage may vary for other distributions, but just bear in mind the latest stable version at the moment of writing is 1.0. That or higher is the version you should aim for.<br />
<br />
Registration is the same process as the steps above. Make sure you select Premium hosting and input https://kde.modular.im as the Server Name if you would like a Matrix account on KDE's Modular homeserver.<br />
<br />
[[File:Web_registration_01.png|300px|center]]<br />
<br />
==== Using the Riot client for mobile ====<br />
<br />
''Currently Riot only supports having one account''<br />
<br />
In Signin/Register select the ''Use custom server options (Advanced)'' option to set the following<br />
<br />
* Home server: https://kde.modular.im<br />
* Identity server: https://vector.im<br />
<br />
[[File:Screenshot Riot.im kde settings.png|300px|center]]<br />
<br />
===== Android =====<br />
The Riot client is available from [https://play.google.com/store/apps/details?id=im.vector.alpha Google Play] and [https://f-droid.org/en/packages/im.vector.alpha/ F-Droid].<br />
<br />
===== iOS =====<br />
<br />
There is also [https://itunes.apple.com/us/app/vector.im/id1083446067 a client for iOS available from Apple's App Store].<br />
<br />
===== Plasma Mobile =====<br />
Coming soon! ;-)<br />
<br />
== Rooms ==<br />
<br />
Check back often as we will be adding new rooms as we go.<br />
<br />
=== Welcome ===<br />
<br />
New to KDE? [https://webchat.kde.org/#/room/#kde-welcome:kde.org Start here and find out what this is all about].<br />
<br />
=== General KDE channel ===<br />
<br />
Share your experience with [https://webchat.kde.org/#/room/#kde:kde.org the KDE community].<br />
<br />
=== Development ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-devel:kde.org KDE developers discuss technical stuff here].<br />
<br />
=== VDG ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-vdg:kde.org Visual designers and Graphic artists discuss the look and feel of KDE software here].<br />
<br />
=== Promo ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-promo:kde.org The people from the work group that does promotion and communication with the outside world hang out here].<br />
<br />
=== Plasma ===<br />
<br />
[https://webchat.kde.org/#/room/#plasma:kde.org Find out more about KDE's desktop environment here].<br />
<br />
=== Plasma Mobile ===<br />
<br />
[https://webchat.kde.org/#/room/#plasmamobile:kde.org Plasma Mobile developers, users and other interested people]<br />
<br />
=== KDE neon Users ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-neon:kde.org KDE neon user support channel]<br />
<br />
=== KDE Multimedia ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-multimedia:kde.org KDE Multimedia developers]<br />
<br />
=== Applications ===<br />
<br />
Here is a list of individual applications that have their own Matrix rooms:<br />
<br />
==== Kdenlive ====<br />
<br />
[https://webchat.kde.org/#/room/#kdenlive:kde.org The room where we discuss KDE's professional video editor].<br />
<br />
==== KDE Partition Manager ====<br />
<br />
[https://webchat.kde.org/#/room/#partitionmanager:kde.org KDE Partition Manager and KPMcore].<br />
<br />
==== Local communities ====<br />
* [https://webchat.kde.org/#/room/#kde_ru:kde.org KDE Russia]<br />
<br />
== How to Add Your Existing IRC Channel as Room ==<br />
<br />
{{Note|1=This only needs to be done '''once''' by an IRC operator. After that all users may use the more convenient local room name to join.}}<br />
<br />
* /join #freenode_#YOUR_CHANNEL:matrix.org<br />
* On the IRC side you need to OP your matrix user, so either use a temporary nick on Matrix, or add multiple nicks to your IRC identity and use a different one on Matrix and IRC, or have a fellow OP give you OP privileges<br />
* Setup a local alias for kde.org via the matrix room settings<br />
* Leave room again<br />
* Join via local alias e.g. /join #YOUR_CHANNEL<br />
* Everyone can now join your room via the #YOUR_CHANNEL locally and #YOUR_CHANNEL:kde.org in the Matrix<br />
<br />
Where you can setup the alias depends on the client you use. For webchat.kde.org it'll look a bit like this:<br />
<br />
[[File:Riot-room-alias-1.png|300px|center]]<br />
[[File:Riot-room-alias-2.png|300px|center]]<br />
<br />
You may additionally want to mark the room as published in the directory (so one can search for it) and set the KDE flair +kde:kde.org (so a fancy KDE flair will get shown; currently not set up). Both settings on webchat.kde.org are immediately after the room settings where you created the local room alias.<br />
<br />
[[File:Riot-room-flairs.png|300px|center]]<br />
<br />
== Why should I use the Matrix IRC bridge? ==<br />
<br />
Your IRC nickname will be available 24h and other people will be able to ping or contact you even if you are away from your computer. This can also be achieved by using an IRC bouncer, but Matrix has several advantages:<br />
<br />
* Matrix provides unlimited chat history, an IRC bouncer doesn't.<br />
* The Matrix IRC bridge is much easier to setup than an IRC bouncer.<br />
* The Matrix reference client [https://riot.im (Riot)] can be used from smartphones.<br />
<br />
== How does it compare with IrcsomeBot? ==<br />
<br />
IrcsomeBot is a Telegram bot that can bridge a Telegram group with an IRC channel. However there are the following shortcomings:<br />
<br />
* A KDE sysadmin needs to [https://community.kde.org/Infrastructure/IRC#Telegram_Bridge setup the bridge] between each room/channel. Matrix instead supports out of the box any freenode channel (and also other IRC networks).<br />
* IrcsomeBot is the only nickname that joins the IRC channel and forwards the messages sent from Telegram on behalf of their senders. Matrix instead performs a native bridging between the two protocols and creates a real IRC user that joins the IRC channel. Other people will be able to keep the usual IRC workflow with your bridged nickname (<code>/whois</code>, <code>/query</code>, etc.). In fact, they won't even know that you are using the Matrix bridge instead of a classic IRC client.<br />
<br />
== How do I join an IRC channel? ==<br />
<br />
You can search or browse IRC channels from Riot. Just type the name of the channel you want to join and you are done.<br />
<br />
[[File:KDE Riot.png|500px|center]]<br />
<br />
If your favorite matrix client doesn't have a similar feature, you can join any freenode channel by joining the following Matrix room:<br />
<br />
<pre><br />
#freenode_<irc_channel_name>:matrix.org<br />
</pre><br />
<br />
For example, if you want to join the <tt>#kde-devel</tt> IRC channel, just type:<br />
<br />
<pre><br />
/join #freenode_#kde-devel:matrix.org<br />
</pre><br />
<br />
== How do I change my IRC nickname? ==<br />
<br />
By default, the IRC bridge will use your matrix display name to generate an IRC nickname (ending with <tt>[m]</tt>). If you don't like the default nickname, you can change it by sending the following command to the <code>@appservice-irc:matrix.org</code> bot (you will need first to start a private conversation with the bot):<br />
<br />
<pre><br />
!nick <your_favorite_irc_nickname><br />
</pre><br />
<br />
== How do I join an IRC channel that requires registered nicknames? ==<br />
Start by opening a direct chat with NickServ. For freenode, that's <code>@freenode_NickServ:matrix.org</code>. Then send it a message of format:<br />
<pre>identify [<nickname>] <password></pre><br />
— where nickname is optional assuming you are identifying for your current nickname.<br />
<br />
To make the bridge store your credentials and log in automatically, in direct chat with the <code>@appservice-irc</code> you can use the <tt>!storepass <string></tt> command to save a string that is sent in PASS command when your IRC-presence connects.<br />
<br />
With freenode you can use:<br />
<pre><br />
!storepass nickname:password<br />
</pre><br />
<br />
== How do I change my away status? == <br />
<br />
The <code>@appservice-irc:matrix.org</code> bot accepts raw IRC commands. To set the away status use:<br />
<br />
<pre><br />
!cmd AWAY <away_message><br />
</pre><br />
<br />
for example:<br />
<br />
<pre><br />
!cmd AWAY Sleeping<br />
</pre><br />
<br />
To remove the away status just use:<br />
<br />
<pre><br />
!cmd AWAY<br />
</pre><br />
<br />
== Other questions? == <br />
<br />
Check out the FAQ maintained upstream: https://github.com/matrix-org/matrix-appservice-irc/wiki/End-user-FAQ</div>Stikonashttps://community.kde.org/index.php?title=Matrix&diff=83143Matrix2019-03-01T17:56:42Z<p>Stikonas: /* Applications */ KDE Partition Manager</p>
<hr />
<div>[https://www.matrix.org Matrix] is an open standard for interoperable, decentralised, real-time communications. KDE is officially using Matrix for collaboration for KDE, superseding more antiquated and closed source services. Matrix is an open protocol and network for decentralized communication, backed by an open standard and open source reference implementations for servers, clients, client SDKs, bridges, bots and more. It provides all the features you’d expect from a modern chat system: infinite scrollback, file transfer, typing notifications, read receipts, presence, search, push notifications, stickers, VoIP calling and conferencing, etc. It even provides end-to-end encryption (based on Signal’s double ratchet algorithm) for when you want some privacy.<br />
<br />
Furthermore, Matrix natively supports bridges to other protocols, such as IRC (the official KDE messaging channel). This means that you can use a Matrix client to join and use IRC channels like if they were Matrix rooms. <br />
<br />
== Clients ==<br />
You can chat using your web browser and visiting [https://webchat.kde.org KDE's webchat] or you can use a desktop or mobile client. [https://matrix.org/docs/projects/clients-matrix Here is a list of clients for your desktop or mobile devices].<br />
<br />
== Registering and Logging in ==<br />
<br />
==== On the web ====<br />
'''THIS IS THE RECOMMENDED WAY OF REGISTERING YOUR ACCOUNT.'''<br />
<br />
Even if you plan on using a desktop or mobile client later, [https://webchat.kde.org/#/welcome register through the web chat] since it uses all the correct defaults to get a :kde.org account.<br />
<br />
# Visit [https://webchat.kde.org KDE's online webchat]<br />
# Locate the ''Create Account'' button. Press it. <br /> [[File:Riot upload 00.png|300px|center]]<br />
# Choose a cool nickname and set your password. You can include an email if you ever need to recover your password, but this is optional. Click ''Register''. <br />[[File:Kde-register.png|300px|center]]<br />
# '''VERY IMPORTANT:''' Carefully read the message System Alerts sends you when you first enter. You will be required to read and accept the Privacy Notice and Terms and Conditions before you can join any rooms. Click the link, read the text, scroll to the bottom and check the checkboxes if you agree.<br />[[File:Web_registration_03.png|300px|center]]<br />On revisiting the webchat, you will be able to participate in the conversation with the rest of the KDE community.<br />
<br /><br />
<br />
That's it! You can start chatting with members of KDE's community.<br />
<br />
==== Using the Riot desktop client ====<br />
<br />
Download the desktop client [https://riot.im/desktop.html from Riot's website]. APT repositories with Debian/Ubuntu packages are provided. Your mileage may vary for other distributions, but just bear in mind the latest stable version at the moment of writing is 1.0. That or higher is the version you should aim for.<br />
<br />
Registration is the same process as the steps above. Make sure you select Premium hosting and input https://kde.modular.im as the Server Name if you would like a Matrix account on KDE's Modular homeserver.<br />
<br />
[[File:Web_registration_01.png|300px|center]]<br />
<br />
==== Using the Riot client for mobile ====<br />
<br />
''Currently Riot only supports having one account''<br />
<br />
In Signin/Register select the ''Use custom server options (Advanced)'' option to set the following<br />
<br />
* Home server: https://kde.modular.im<br />
* Identity server: https://vector.im<br />
<br />
[[File:Screenshot Riot.im kde settings.png|300px|center]]<br />
<br />
===== Android =====<br />
The Riot client is available from [https://play.google.com/store/apps/details?id=im.vector.alpha Google Play] and [https://f-droid.org/en/packages/im.vector.alpha/ F-Droid].<br />
<br />
===== iOS =====<br />
<br />
There is also [https://itunes.apple.com/us/app/vector.im/id1083446067 a client for iOS available from Apple's App Store].<br />
<br />
===== Plasma Mobile =====<br />
Coming soon! ;-)<br />
<br />
== Rooms ==<br />
<br />
Check back often as we will be adding new rooms as we go.<br />
<br />
=== Welcome ===<br />
<br />
New to KDE? [https://webchat.kde.org/#/room/#kde-welcome:kde.org Start here and find out what this is all about].<br />
<br />
=== General KDE channel ===<br />
<br />
Share your experience with [https://webchat.kde.org/#/room/#kde:kde.org the KDE community].<br />
<br />
=== Development ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-devel:kde.org KDE developers discuss technical stuff here].<br />
<br />
=== VDG ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-vdg:kde.org Visual designers and Graphic artists discuss the look and feel of KDE software here].<br />
<br />
=== Promo ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-promo:kde.org The people from the work group that does promotion and communication with the outside world hang out here].<br />
<br />
=== Plasma ===<br />
<br />
[https://webchat.kde.org/#/room/#plasma:kde.org Find out more about KDE's desktop environment here].<br />
<br />
=== Plasma Mobile ===<br />
<br />
[https://webchat.kde.org/#/room/#plasmamobile:kde.org Plasma Mobile developers, users and other interested people]<br />
<br />
=== KDE neon Users ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-neon:kde.org KDE neon user support channel]<br />
<br />
=== KDE Multimedia ===<br />
<br />
[https://webchat.kde.org/#/room/#kde-multimedia:kde.org KDE Multimedia developers]<br />
<br />
=== Applications ===<br />
<br />
Here is a list of individual applications that have their own Matrix rooms:<br />
<br />
==== Kdenlive ====<br />
<br />
[https://webchat.kde.org/#/room/#kdenlive:kde.org The room where we discuss KDE's professional video editor].<br />
<br />
==== KDE Partition Manager ====<br />
<br />
[https://webchat.kde.org/#/room/#partitionmanager:kde.org].<br />
<br />
==== Local communities ====<br />
* [https://webchat.kde.org/#/room/#kde_ru:kde.org KDE Russia]<br />
<br />
== How to Add Your Existing IRC Channel as Room ==<br />
<br />
{{Note|1=This only needs to be done '''once''' by an IRC operator. After that all users may use the more convenient local room name to join.}}<br />
<br />
* /join #freenode_#YOUR_CHANNEL:matrix.org<br />
* On the IRC side you need to OP your matrix user, so either use a temporary nick on Matrix, or add multiple nicks to your IRC identity and use a different one on Matrix and IRC, or have a fellow OP give you OP privileges<br />
* Setup a local alias for kde.org via the matrix room settings<br />
* Leave room again<br />
* Join via local alias e.g. /join #YOUR_CHANNEL<br />
* Everyone can now join your room via the #YOUR_CHANNEL locally and #YOUR_CHANNEL:kde.org in the Matrix<br />
<br />
Where you can setup the alias depends on the client you use. For webchat.kde.org it'll look a bit like this:<br />
<br />
[[File:Riot-room-alias-1.png|300px|center]]<br />
[[File:Riot-room-alias-2.png|300px|center]]<br />
<br />
You may additionally want to mark the room as published in the directory (so one can search for it) and set the KDE flair +kde:kde.org (so a fancy KDE flair will get shown; currently not set up). Both settings on webchat.kde.org are immediately after the room settings where you created the local room alias.<br />
<br />
[[File:Riot-room-flairs.png|300px|center]]<br />
<br />
== Why should I use the Matrix IRC bridge? ==<br />
<br />
Your IRC nickname will be available 24h and other people will be able to ping or contact you even if you are away from your computer. This can also be achieved by using an IRC bouncer, but Matrix has several advantages:<br />
<br />
* Matrix provides unlimited chat history, an IRC bouncer doesn't.<br />
* The Matrix IRC bridge is much easier to setup than an IRC bouncer.<br />
* The Matrix reference client [https://riot.im (Riot)] can be used from smartphones.<br />
<br />
== How does it compare with IrcsomeBot? ==<br />
<br />
IrcsomeBot is a Telegram bot that can bridge a Telegram group with an IRC channel. However there are the following shortcomings:<br />
<br />
* A KDE sysadmin needs to [https://community.kde.org/Infrastructure/IRC#Telegram_Bridge setup the bridge] between each room/channel. Matrix instead supports out of the box any freenode channel (and also other IRC networks).<br />
* IrcsomeBot is the only nickname that joins the IRC channel and forwards the messages sent from Telegram on behalf of their senders. Matrix instead performs a native bridging between the two protocols and creates a real IRC user that joins the IRC channel. Other people will be able to keep the usual IRC workflow with your bridged nickname (<code>/whois</code>, <code>/query</code>, etc.). In fact, they won't even know that you are using the Matrix bridge instead of a classic IRC client.<br />
<br />
== How do I join an IRC channel? ==<br />
<br />
You can search or browse IRC channels from Riot. Just type the name of the channel you want to join and you are done.<br />
<br />
[[File:KDE Riot.png|500px|center]]<br />
<br />
If your favorite matrix client doesn't have a similar feature, you can join any freenode channel by joining the following Matrix room:<br />
<br />
<pre><br />
#freenode_<irc_channel_name>:matrix.org<br />
</pre><br />
<br />
For example, if you want to join the <tt>#kde-devel</tt> IRC channel, just type:<br />
<br />
<pre><br />
/join #freenode_#kde-devel:matrix.org<br />
</pre><br />
<br />
== How do I change my IRC nickname? ==<br />
<br />
By default, the IRC bridge will use your matrix display name to generate an IRC nickname (ending with <tt>[m]</tt>). If you don't like the default nickname, you can change it by sending the following command to the <code>@appservice-irc:matrix.org</code> bot (you will need first to start a private conversation with the bot):<br />
<br />
<pre><br />
!nick <your_favorite_irc_nickname><br />
</pre><br />
<br />
== How do I join an IRC channel that requires registered nicknames? ==<br />
Start by opening a direct chat with NickServ. For freenode, that's <code>@freenode_NickServ:matrix.org</code>. Then send it a message of format:<br />
<pre>identify [<nickname>] <password></pre><br />
— where nickname is optional assuming you are identifying for your current nickname.<br />
<br />
To make the bridge store your credentials and log in automatically, in direct chat with the <code>@appservice-irc</code> you can use the <tt>!storepass <string></tt> command to save a string that is sent in PASS command when your IRC-presence connects.<br />
<br />
With freenode you can use:<br />
<pre><br />
!storepass nickname:password<br />
</pre><br />
<br />
== How do I change my away status? == <br />
<br />
The <code>@appservice-irc:matrix.org</code> bot accepts raw IRC commands. To set the away status use:<br />
<br />
<pre><br />
!cmd AWAY <away_message><br />
</pre><br />
<br />
for example:<br />
<br />
<pre><br />
!cmd AWAY Sleeping<br />
</pre><br />
<br />
To remove the away status just use:<br />
<br />
<pre><br />
!cmd AWAY<br />
</pre><br />
<br />
== Other questions? == <br />
<br />
Check out the FAQ maintained upstream: https://github.com/matrix-org/matrix-appservice-irc/wiki/End-user-FAQ</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2019/Ideas&diff=82545GSoC/2019/Ideas2019-01-19T20:37:31Z<p>Stikonas: /* Project: Port to Polkit-qt */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2018/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 may wish 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 is unlikely to work out.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<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 />
** '''Ideas with no mentors listed and their contact info will be removed''' **<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 />
===Your Own Idea ===<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 />
'''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 />
===digiKam===<br />
digiKam is an advanced digital photo management application for Linux, Windows, and MacOS.<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: AI Face Recognition with OpenCV DNN module ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we proposed a project to implement an AI extension to the [https://cgit.kde.org/digikam.git/tree/core/libs/facesengine/recognition digiKam core face recognition]. The project used the Dlib C++ API, but we were not satisfied by the results, as the algorithm gave poor performance. This choice also introduced a huge backport of low level codes which we don't want to maintain. So, even though the project proposed a somewhat suitable solution to provide an AI face recognition processor based on deep-learning, this one was not really powerful and functional enough. For now, this section of code about Dlib DNN extension is disabled in digiKam core.<br />
<br />
As digiKam core already depends on OpenCV library to perform complex image processing, and as OpenCV >= 3.3 release provide a new [https://docs.opencv.org/3.4.3/d2/d58/tutorial_table_of_content_dnn.html OpenCV DNN (Deep Neural Network) module], the goal now is to port the current digiKam core face recognition DNN extension to new OpenCV API and write all unit tests to validate the algorithm usability, efficiency, and performance, while learning and recognizing faces automatically.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Face recognition based on DNN OpenCV API, with unit test, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, OpenCV, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
==== Project: Zoomable and Resizable Brush for Healing Clone Tool ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we have proposed a project to implement an [https://cgit.kde.org/digikam.git/tree/core/utilities/imageeditor/tools/enhance Healing Clone tool for digiKam image editor] to be able to remove unwanted artifacts from images. The student has implemented the basis without a zoomable canvas and without the resizable brush support. Due to this lack of features, the tools cannot be used in production by end-users.<br />
<br />
This section of code about healing clone tool is currently disabled in digiKam core.<br />
<br />
The goal of this project is to implement the missing feature for the Healing Clone tool in image editor, including the unit-tests and the documentation.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Healing clone tool for image editor, with unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Mohamed Anwer and Gilles Caulier<br />
<br />
==== Project: Factoring all Export Tools with new Export API ====<br />
<br />
'''Brief Explanation''': With GoSC 2018, we proposed a project to implement a huge factorization and improvements with all [https://cgit.kde.org/digikam.git/tree/core/utilities/assistants/webservices digiKam export to web service tools]. Our student fixed plenty of code using OAuth version 2 authentification, has simplified classes, and started to write a new API to factorize all these tools, including a common Wizard dialog. Even if the export tools implementation are now better, they do not use the new API and always run as a stand alone session in digiKam core. Due to this fact, the Web Service tools are not yet usable in digiKam Batch Queue Manager as single step runnable at end of a queue processing. So the section of code about factored export tools API is currently disabled in digiKam core. This year, the project will be to fix that.<br />
<br />
'''Expected Results''': <br />
<br />
Start to use every the new export tools API, use the new Wizard dialog, factoring codes everywhere, and introduce all export tools to BQM. Write unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
=== Krita ===<br />
[http://www.krita.org 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==== Project: Integrating the MyPaint Brush Engine ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to effectively paint with MyPaint brushes in Krita.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
<br />
==== Project: Supporting Vertical Text and SVG2 Text in the Text Shape ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to create and edit vertical text. Text shapes should be able to automatically wrap text to the bounding box.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Typography, Text Layout<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Add New Fill Layer Types ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Several new fill layer types that allow the user to add dynamically generated content as a layer in the layer stack <br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Port Krita to Android OR iOS ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, CMake, Android or iOS. You also need to have access to test hardware.<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Improve Krita for Touch Systems ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: SVG Mesh Gradients ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Inkscape<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Jouni Pentikainen (tyyppi on IRC)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': A revamped and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
=== GCompris ===<br />
[https://gcompris.net/ GCompris] is a high quality educational software suite, including a large number of activities for children aged 2 to 10.<br />
<br />
==== Project: Finishing the port of the major activities for version 1.0 ====<br />
'''Brief explanation''': Originally written in Gtk+ the development team started to rewrite it from scratch in Qt Quick and almost finished the port.<br />
<br />
'''Expected results''':<br />
The aim of this year is to work on the most important activities that we are missing to have a complete 1.0, mostly the analog electricity one (https://phabricator.kde.org/T5954, other activities can be proposed too, for example, we lack activities to learn about biology).<br />
First phase is to check how the Gtk+ version was working, what could be improved and then create a proposal with a timeline explaining what you expect to do and the time estimation. It does not need to be a simple clone, improvements should be done when possible.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
<br />
==== Project: One step closer to version 1.0 ====<br />
'''Brief explanation''': we had some remarks that the difficulty in an activity can increase too much and target different ages in the same levels. The aim of this project is to add a granularity on the datasets so the child can better target what to learn.<br />
<br />
'''Expected results''':<br />
The aim of this project is to update activities to be able to use json files as datasets so we can have multiple datasets (each targeting a different learning goal) for the same activity.<br />
<br />
You need to choose activities that need this kind of datasets and update their code to use multiple datasets.<br />
<br />
A discussion is opened in https://phabricator.kde.org/T10211 to better know what we want and how to do it (WIP).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
=== KDE neon ===<br />
[https://neon.kde.org KDE neon] compiles KDE software to make it available pronto.<br />
<br />
==== Project: ISO Image Writer ====<br />
<br />
[https://cgit.kde.org/isoimagewriter.git/ ISO Image Writer] copies ISO images onto USB drives. It needs code tidied up and builds made for Snap, FlatPak, Windows, Mac and good old Linux packages. [https://phabricator.kde.org/M113/466/ Design to implement]<br />
<br />
'''Expected Results''': Installable packages<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Build systems, multi-platform<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Jonathan Riddell (IRC: Riddell)<br />
<br />
=== KDE Partition Manager ===<br />
<br />
==== Project: Port to Polkit-qt ====<br />
[https://www.kde.org/applications/system/kdepartitionmanager KDE Partition Manager] is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Brief Explanation''': KDE Partition Manager was recently ported to KAuth (which is Tier 2 KDE Framework library). This means that instead of running the whole GUI as root, KDE Partition Manager runs as a normal user, starts a small (non-GUI) helper application which runs as root and executes privileged tasks.<br />
<br />
KAuth itself was not sufficient for this task, so we built a small protocol on top of KAuth. Usually, programs that use KAuth, start a helper, it does its job and exists. In KDE Partition Manager, helper persists, and communicates with KDE Partition Manager using a fairly simple DBus protocol over which GUI application can request two things:<br />
* execute some external program, like sfdisk, btrfs, etc... <br />
* Copy block of data (partition) to another location).<br />
<br />
However, KAuth library itself is a layer built on top of Polkit-Qt (which is a small wrapper around Polkit).<br />
<br />
'''The proposal''' for this project is to port away from KAuth and run our custom protocol between helper and GUI application directly on top of Polkit-Qt.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and basic knowledge of Qt<br />
<br />
You don't need experience of using DBus, you can pick this up during the project.<br />
<br />
'''Mentor''': Andrius Štikonas (IRC: stikonas)<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org/ Kopete] is a flexible and extendable multiple protocol instant messaging system. [http://mail.kde.org/mailman/listinfo/kopete-devel Developer mail list].<br />
<br />
=== LabPlot ===<br />
[https://labplot.kde.org 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. Labplot is part of the [https://edu.kde.org/ KDE Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Import of educational data sets available on the internet ====<br />
'''Brief explanation''': There are many internet pages providing data sets for educational and study purposes for many different areas (astrophysics, statistics, medicine, etc.). Some tools used in the scientific area provide some "wrappers" for such online sources and allow the user to easily play around with those data sets in the applications whereas the technical details like fetching of data from the server and parsing are done completely transparent for the user. The goal of this project is to add similar functionality to LabPlot. There will be a wizard where the user can select from a thematically grouped list of data sets available online. The internal description of such an online data set should contain the URL with the actual file that needs to be downloaded and the settings for LabPlot's data parser (separator, column names and data types, etc.). The definition of the data sources should be made available on store.kde.org.<br />
<br />
'''Expected results''': We want to be able to easily import the educational data sets available on the internet.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': TBD<br />
<br />
==== Project: Statistical analysis ====<br />
Currently LabPlot has only basic support for statistical data analysis by providing some basic measures of descriptive statistics in the spreadsheet. The goal of the project is to add more statistics relevant features (hypothesis tests, cluster analysis, ets.) to LabPlot.<br />
<br />
'''Expected results''':<br />
* evaluate available statistical open-source libraries which can be used for this project<br />
* determine a reasonable set of features and algorithms that can be added to LabPlot, compare here with other similar projects, and implement them<br />
* for the visualization of results of statistical calculations, implement new kind of reports for this, comparable to other similar projects<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic statistics knowledge<br />
<br />
'''Mentor''': TBD<br />
<br />
=== Kdenlive ===<br />
[https://kdenlive.org 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.<br />
<br />
==== Project: Evolving Titler tool ====<br />
<br />
'''Brief Explanation''': Kdenlive titler tool allows to draw texts and images to composite over videos.<br />
<br />
Current code is using XML description, drawn by our "kdenlivetitle" MLT module, using old QPainter engine.<br />
This engines has limitations that blocks interesting features.<br />
Few years ago, an upstream module appeared in MLT, named "WebVfx", which uses QML to do similar things with much more flexibility.<br />
<br />
We would like to be able to load current XML titles and convert them automatically to QML format, and generate QML from our current GUI. Then the GUI could evolve to integrate new features, in accordance to our community requests & design group recommendations.<br />
<br />
'''Expected Results''': A titler using QML backend<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, QML<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Vincent Pinon (IRC: vpinon)<br />
<br />
=== Choqok ===<br />
Get in touch on IRC (#choqok).<br />
<br />
=== KStars ===<br />
[https://edu.kde.org/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.<br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* 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.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<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 />
# '''Histogram Adjustments''': Controls for Shadow, Midtones, and Highlights. White / Black points controls.<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 />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* New controls for histogram.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
=== Peruse ===<br />
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 [http://acbf.wikia.com/wiki/Specifications Advanced Comic Book Format], which is a metadata container for comic book archives (CBR, CBZ and so on).<br />
<br />
See the Peruse website for more detailed information: https://peruse.kde.org/<br />
<br />
=== KGpg ===<br />
[https://utils.kde.org/projects/kgpg KGpg] is a frontend for GnuPG key management. [mailto:kde-utils-devel@kde.org Contact the KGpg team].<br />
<br />
===KWin===<br />
KWin is the KDE project's default window manager. [https://mail.kde.org/mailman/listinfo/kwin Kwin developer mail list].<br />
<br />
=== Plasma ===<br />
Plasma is KDE's desktop environment; Simple by default, powerful when needed. [https://mail.kde.org/mailman/listinfo/plasma-devel Developer mail list].<br />
<br />
=== Okular ===<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. [mailto:okular-devel@kde.org Contact] the Okular developers.<br />
<br />
==== Project: Add support for showing and adding replies to sticky notes ====<br />
<br />
'''Brief explanation:''' PDF files can contain replies to certain annotations. In this project, you would need to add support to Okular and possibly to poppler so that they show the same way they do on other PDF readers. Once they are shown and if there is enough time adding the capability to add replies is also welcome.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentor:''' Okular developers https://mail.kde.org/mailman/listinfo/okular-devel<br />
<br />
'''Application guide''':<br />
* https://bugs.kde.org/show_bug.cgi?id=387834<br />
<br />
<br />
==== Project: Improve custom stamp annotation handling ====<br />
<br />
'''Brief explanation:''' Okular does display stamp annotations, but the support<br />
is somewhat incomplete. This particularly shows when trying to use stamp<br />
annotations with a custom image. For example, such annotations can be<br />
added in Okular, but they cannot be saved to the pdf file in a way<br />
that any other pdf viewer can read. Also, they will not appear on print-outs.<br />
<br />
The underlying reason for this is that Okular renders these stamps itself,<br />
rather than relying on the poppler library, which does all other pdf<br />
rendering. Goal of this project is therefore to teach poppler how to<br />
render stamp annotations, and then make Okular use that new functionality.<br />
More details can be found in the bug report [0].<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=383651<br />
<br />
'''Expected results:''' Poppler should render stamp annotations. Annotations<br />
should be printable from Okular. Custom stamps inserted via the Okular GUI<br />
should be visible in other pdf readers.<br />
<br />
'''Knowledge prerequisite:''' C++, and a bit about the pdf format.<br />
<br />
<br />
==== Project: Annotation improvements ====<br />
<br />
'''Brief explanation:''' Okular supports convenient editing of pdf annotations, but quite a number of paper-cut bugs are known. Examples are [0,1,2], but many more can be found in the bugtracker. Goal of this project is to fix as many of these bugs as possible, which should improve the Okular user experience greatly.<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=275371<br />
<br />
[1] https://bugs.freedesktop.org/show_bug.cgi?id=102635<br />
<br />
[2] https://bugs.freedesktop.org/show_bug.cgi?id=52010<br />
<br />
'''Expected results:''' Lots of annotation-related bugs fixed. Annotation rendering and manipulation should be more enjoyable.<br />
<br />
'''Knowledge prerequisite:''' C++ and Qt, and a bit about the pdf format<br />
<br />
<br />
=== WikiToLearn ===<br />
WikiToLearn was born as a non-profit community and an open source project, which provides free and collaborative textbooks with the help of students and academia. Knowledge only grows if shared!<br />
<br />
You can find all of the [ https://www.wikitolearn.org/ WikiToLearn] community on [https://chat.wikitolearn.org chat.wikitolearn.org]. We have many other ideas: get in touch with us to discuss them further!<br />
<br />
=== Falkon ===<br />
[https://www.falkon.org/ Falkon] is a KDE web browser.<br />
<br />
[mailto:falkon@kde.org Contact the Falkon team]<br />
<br />
==== Plasma integration ====<br />
<br />
'''Brief explanation:''' Falkon is Qt application and as such it integrates quite well into Plasma desktop environment. There is also an extension that allows to store passwords in KWallet. Plasma desktop provides some services that could be useful to use from browser, like showing the progress of downloads as jobs in notification applet or searching for bookmarks or open tabs from KRunner.<br />
<br />
There is already existing extension for Chrome that implements these features - [https://cgit.kde.org/plasma-browser-integration.git plasma-browser-integration] that can be used as a base for the Falkon extension.<br />
<br />
'''Expected results:''' Falkon C++ extension and additional helpers improves the integration with Plasma desktop.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, JavaScript basics<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
==== Firefox Sync ====<br />
<br />
'''Brief explanation:''' Firefox Sync is an open API for synchronization of browser data between multiple instances. Falkon doesn't currently have support for any synchronization at all. Instead of creating in-house solution, it would be best to use some existing solution, which Firefox Sync appears to be a great candidate.<br />
<br />
Firefox Sync is not exclusive to Firefox browser, it was already implemented for example in Gnome Epiphany browser (https://github.com/GNOME/epiphany/tree/master/lib/sync).<br />
<br />
'''Expected results:''' Falkon is able to sync bookmarks, passwords, sessions ... over Firefox Sync API.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
=== Cantor ===<br />
[https://edu.kde.org/cantor/ Cantor] provides a graphical frontend for different open source computer algebra systems and scientific programming languages. [mailto:kde-edu@kde.org Contact the KDE-Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Integrated documentation ====<br />
'''Brief explanation''': at the moment the external documentation like for example for Maxima http://maxima.sourceforge.net/docs/manual/en/maxima.html, and similar for Octave, python, etc., is opened in the external browser window. Ideally, we'd show this inside of the application in the help/documentation panel and enable a quick access to the documentation together with some more advanced search capabilities. Integrated search and also the context sensitive help (user marks a keyword in the worksheet, hits e.g. the F1 button and the documentation for the selected keyword is shown) should be possible. Qt Help Framework (http://doc.qt.io/qt-5/qthelp-framework.html) should be utilized for this. For indexing and searching in a unified manner the documentation together with the search index should be available locally. Qt help's qch file should be available for download on store.kde.org. Users of different systems (Maxima, Octave, R, etc.) would download the documentation they need. Ideally, we could also try to get a similar appearance by css-styling the html files for different systems prior to creating those qch files.<br />
<br />
The project consists of the following three major parts:<br />
* implementation in c++ (documentation panel, searching, short cuts for faster navigation, etc.)<br />
* creation of Qt help files for major computer algebra systems and programming languages supported by Cantor<br />
* definition of sections on store.kde.org<br />
<br />
'''Expected results''': integrated documentation in Cantor for the supported CAS and programming languages<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic knowledge about html<br />
<br />
'''Mentor''': Alexander Semke<br />
<br />
=== Plasma Mobile ===<br />
Plasma Mobile is KDE's software stack for mobile devices that includes Plasma phone components, Kirigami and a set of mobile-friendly applications.<br />
<br />
==== SMS App ====<br />
Plasma Mobile currently does not have a functional SMS app. One approach to this would be extending the SMS app that is currently developed for KDE Connect to have a Plasma Mobile backend.<br />
<br />
This includes:<br />
- Develop an approach to make the app support multiple backends<br />
- Develop a backend for the Plasma Mobile SMS stack (ofono)<br />
- Possibly improvements to the Plasma Mobile SMS stack<br />
- Possibly improvements to the SMS app UX<br />
<br />
Goal is to be able to communicate via SMS on a Plasma mobile phone with all basic features (sending, receiving SMS, browsing through conversations).<br />
<br />
This requires access to a Plasma mobile enabled phone, preferably the Nexus 5X. Second-hand phones are available at very low prices.<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5.<br />
<br />
'''Mentors:''' Simon Redman and Nicolas Fella for KDE Connect specific things, Bhushan Shah for Plasma Mobile things. Get in touch with us on #kdeconnect on freenode or the [https://matrix.to/#/%23plasmamobile:matrix.org Plasma Mobile Matrix channel]<br />
<br />
=== KDevelop ===<br />
[https://www.kdevelop.org/ Kdevelop] is a cross-platform IDE for C, C++, Python, QML/JavaScript and PHP. [mailto:kdevelop-devel@kde.org Contact the Kdevelop team].<br />
<br />
=== Xdg-desktop-portal-kde ===<br />
<br />
<br />
=== KDE Connect ===<br />
[https://community.kde.org/KDEConnect KDE Connect] is a project that enables all your devices to communicate with each other.<br />
<br />
==== KDE Connect for Windows port ====<br />
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.<br />
<br />
'''Areas of knowledge:''' Experience writing Windows applications, C++ and Qt5 is required.<br />
<br />
'''Mentor:''' Get in touch with us in the [https://mail.kde.org/mailman/listinfo/kdeconnect kdeconnect mailing list] or on #kdeconnect on Freenode<br />
<br />
=== Purpose ===<br />
The [https://api.kde.org/frameworks/purpose/html/index.html Purpose] framework offers the possibility to create integrate services and actions on any application without having to implement them specifically. Purpose will offer them mechanisms to list the different alternatives to execute given the requested action type and will facilitate components so that all the plugins can receive all the information they need.<br />
<br />
==== Barcode scanning infrastructure ====<br />
Purpose enables application developers to use features without implementing them themselves. It offers multiple alternatives to achieve a goal. Right now it supports sharing files and URLs.<br />
<br />
An interesting use case for it would be scanning barcodes. An application developer that wants to scan a barcode would ask Purpose for it. Purpose would offer multiple ways of doing it, e.g. from a local file, from the local camera or from a via KDE Connect connected phone. Purpose would then return the data to the application.<br />
<br />
Goal of this task is to have a framework for scanning barcodes as well as multiple implementations. This consists of:<br />
- Adding a new Plugin type to Purpose<br />
- A import from file backend<br />
- A local camera backend<br />
- A KDE Connect backend<br />
- One or more applications using it, e.g. Itinerary or a barcode scan app for Plasma Mobile<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5 is required. Experience with Java/Android for the KDE Connect backend is beneficial.<br />
<br />
'''Mentor:''' Nicolas Fella (nicofee) for KDE Connect parts. Aleix Pol (apol) for Purpose parts. Volker Krause (vkrause) for zxing parts. [https://mail.kde.org/mailman/listinfo/kde-frameworks-devel Devel mail list].</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2019/Ideas&diff=82544GSoC/2019/Ideas2019-01-19T20:36:47Z<p>Stikonas: /* Project: Port to Polkit-qt */ fix headings</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2018/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 may wish 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 is unlikely to work out.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<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 />
** '''Ideas with no mentors listed and their contact info will be removed''' **<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 />
===Your Own Idea ===<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 />
'''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 />
===digiKam===<br />
digiKam is an advanced digital photo management application for Linux, Windows, and MacOS.<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: AI Face Recognition with OpenCV DNN module ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we proposed a project to implement an AI extension to the [https://cgit.kde.org/digikam.git/tree/core/libs/facesengine/recognition digiKam core face recognition]. The project used the Dlib C++ API, but we were not satisfied by the results, as the algorithm gave poor performance. This choice also introduced a huge backport of low level codes which we don't want to maintain. So, even though the project proposed a somewhat suitable solution to provide an AI face recognition processor based on deep-learning, this one was not really powerful and functional enough. For now, this section of code about Dlib DNN extension is disabled in digiKam core.<br />
<br />
As digiKam core already depends on OpenCV library to perform complex image processing, and as OpenCV >= 3.3 release provide a new [https://docs.opencv.org/3.4.3/d2/d58/tutorial_table_of_content_dnn.html OpenCV DNN (Deep Neural Network) module], the goal now is to port the current digiKam core face recognition DNN extension to new OpenCV API and write all unit tests to validate the algorithm usability, efficiency, and performance, while learning and recognizing faces automatically.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Face recognition based on DNN OpenCV API, with unit test, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, OpenCV, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
==== Project: Zoomable and Resizable Brush for Healing Clone Tool ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we have proposed a project to implement an [https://cgit.kde.org/digikam.git/tree/core/utilities/imageeditor/tools/enhance Healing Clone tool for digiKam image editor] to be able to remove unwanted artifacts from images. The student has implemented the basis without a zoomable canvas and without the resizable brush support. Due to this lack of features, the tools cannot be used in production by end-users.<br />
<br />
This section of code about healing clone tool is currently disabled in digiKam core.<br />
<br />
The goal of this project is to implement the missing feature for the Healing Clone tool in image editor, including the unit-tests and the documentation.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Healing clone tool for image editor, with unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Mohamed Anwer and Gilles Caulier<br />
<br />
==== Project: Factoring all Export Tools with new Export API ====<br />
<br />
'''Brief Explanation''': With GoSC 2018, we proposed a project to implement a huge factorization and improvements with all [https://cgit.kde.org/digikam.git/tree/core/utilities/assistants/webservices digiKam export to web service tools]. Our student fixed plenty of code using OAuth version 2 authentification, has simplified classes, and started to write a new API to factorize all these tools, including a common Wizard dialog. Even if the export tools implementation are now better, they do not use the new API and always run as a stand alone session in digiKam core. Due to this fact, the Web Service tools are not yet usable in digiKam Batch Queue Manager as single step runnable at end of a queue processing. So the section of code about factored export tools API is currently disabled in digiKam core. This year, the project will be to fix that.<br />
<br />
'''Expected Results''': <br />
<br />
Start to use every the new export tools API, use the new Wizard dialog, factoring codes everywhere, and introduce all export tools to BQM. Write unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
=== Krita ===<br />
[http://www.krita.org 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==== Project: Integrating the MyPaint Brush Engine ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to effectively paint with MyPaint brushes in Krita.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
<br />
==== Project: Supporting Vertical Text and SVG2 Text in the Text Shape ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to create and edit vertical text. Text shapes should be able to automatically wrap text to the bounding box.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Typography, Text Layout<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Add New Fill Layer Types ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Several new fill layer types that allow the user to add dynamically generated content as a layer in the layer stack <br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Port Krita to Android OR iOS ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, CMake, Android or iOS. You also need to have access to test hardware.<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Improve Krita for Touch Systems ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: SVG Mesh Gradients ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Inkscape<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Jouni Pentikainen (tyyppi on IRC)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': A revamped and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
=== GCompris ===<br />
[https://gcompris.net/ GCompris] is a high quality educational software suite, including a large number of activities for children aged 2 to 10.<br />
<br />
==== Project: Finishing the port of the major activities for version 1.0 ====<br />
'''Brief explanation''': Originally written in Gtk+ the development team started to rewrite it from scratch in Qt Quick and almost finished the port.<br />
<br />
'''Expected results''':<br />
The aim of this year is to work on the most important activities that we are missing to have a complete 1.0, mostly the analog electricity one (https://phabricator.kde.org/T5954, other activities can be proposed too, for example, we lack activities to learn about biology).<br />
First phase is to check how the Gtk+ version was working, what could be improved and then create a proposal with a timeline explaining what you expect to do and the time estimation. It does not need to be a simple clone, improvements should be done when possible.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
<br />
==== Project: One step closer to version 1.0 ====<br />
'''Brief explanation''': we had some remarks that the difficulty in an activity can increase too much and target different ages in the same levels. The aim of this project is to add a granularity on the datasets so the child can better target what to learn.<br />
<br />
'''Expected results''':<br />
The aim of this project is to update activities to be able to use json files as datasets so we can have multiple datasets (each targeting a different learning goal) for the same activity.<br />
<br />
You need to choose activities that need this kind of datasets and update their code to use multiple datasets.<br />
<br />
A discussion is opened in https://phabricator.kde.org/T10211 to better know what we want and how to do it (WIP).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
=== KDE neon ===<br />
[https://neon.kde.org KDE neon] compiles KDE software to make it available pronto.<br />
<br />
==== Project: ISO Image Writer ====<br />
<br />
[https://cgit.kde.org/isoimagewriter.git/ ISO Image Writer] copies ISO images onto USB drives. It needs code tidied up and builds made for Snap, FlatPak, Windows, Mac and good old Linux packages. [https://phabricator.kde.org/M113/466/ Design to implement]<br />
<br />
'''Expected Results''': Installable packages<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Build systems, multi-platform<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Jonathan Riddell (IRC: Riddell)<br />
<br />
=== KDE Partition Manager ===<br />
<br />
==== Project: Port to Polkit-qt ====<br />
[https://www.kde.org/applications/system/kdepartitionmanager KDE Partition Manager] is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions. [https://mail.kde.org/mailman/listinfo/kde-devel Developer mail list].<br />
<br />
'''Brief Explanation''': KDE Partition Manager was recently ported to KAuth (which is Tier 2 KDE Framework library). This means that instead of running the whole GUI as root, KDE Partition Manager runs as a normal user, starts a small (non-GUI) helper application which runs as root and executes privileged tasks.<br />
<br />
KAuth itself was not sufficient for this task, so we built a small protocol on top of KAuth. Usually, programs that use KAuth, start a helper, it does its job and exists. In KDE Partition Manager, helper persists, and communicates with KDE Partition Manager using a fairly simple DBus protocol over which GUI application can request two things:<br />
* execute some external program, like sfdisk, btrfs, etc... <br />
* Copy block of data (partition) to another location).<br />
<br />
However, KAuth library itself is a layer built on top of Polkit-Qt (which is a small wrapper around Polkit).<br />
<br />
'''The proposal''' for this project is to port away from KAuth and run our custom protocol between helper and GUI application directly on top of Polkit-Qt.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and basic knowledge of Qt<br />
<br />
You don't need experience of using DBus, you can pick this up during the project.<br />
<br />
'''Mentor''': Andrius Štikonas (IRC: stikonas)<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org/ Kopete] is a flexible and extendable multiple protocol instant messaging system. [http://mail.kde.org/mailman/listinfo/kopete-devel Developer mail list].<br />
<br />
=== LabPlot ===<br />
[https://labplot.kde.org 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. Labplot is part of the [https://edu.kde.org/ KDE Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Import of educational data sets available on the internet ====<br />
'''Brief explanation''': There are many internet pages providing data sets for educational and study purposes for many different areas (astrophysics, statistics, medicine, etc.). Some tools used in the scientific area provide some "wrappers" for such online sources and allow the user to easily play around with those data sets in the applications whereas the technical details like fetching of data from the server and parsing are done completely transparent for the user. The goal of this project is to add similar functionality to LabPlot. There will be a wizard where the user can select from a thematically grouped list of data sets available online. The internal description of such an online data set should contain the URL with the actual file that needs to be downloaded and the settings for LabPlot's data parser (separator, column names and data types, etc.). The definition of the data sources should be made available on store.kde.org.<br />
<br />
'''Expected results''': We want to be able to easily import the educational data sets available on the internet.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': TBD<br />
<br />
==== Project: Statistical analysis ====<br />
Currently LabPlot has only basic support for statistical data analysis by providing some basic measures of descriptive statistics in the spreadsheet. The goal of the project is to add more statistics relevant features (hypothesis tests, cluster analysis, ets.) to LabPlot.<br />
<br />
'''Expected results''':<br />
* evaluate available statistical open-source libraries which can be used for this project<br />
* determine a reasonable set of features and algorithms that can be added to LabPlot, compare here with other similar projects, and implement them<br />
* for the visualization of results of statistical calculations, implement new kind of reports for this, comparable to other similar projects<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic statistics knowledge<br />
<br />
'''Mentor''': TBD<br />
<br />
=== Kdenlive ===<br />
[https://kdenlive.org 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.<br />
<br />
==== Project: Evolving Titler tool ====<br />
<br />
'''Brief Explanation''': Kdenlive titler tool allows to draw texts and images to composite over videos.<br />
<br />
Current code is using XML description, drawn by our "kdenlivetitle" MLT module, using old QPainter engine.<br />
This engines has limitations that blocks interesting features.<br />
Few years ago, an upstream module appeared in MLT, named "WebVfx", which uses QML to do similar things with much more flexibility.<br />
<br />
We would like to be able to load current XML titles and convert them automatically to QML format, and generate QML from our current GUI. Then the GUI could evolve to integrate new features, in accordance to our community requests & design group recommendations.<br />
<br />
'''Expected Results''': A titler using QML backend<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, QML<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Vincent Pinon (IRC: vpinon)<br />
<br />
=== Choqok ===<br />
Get in touch on IRC (#choqok).<br />
<br />
=== KStars ===<br />
[https://edu.kde.org/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.<br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* 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.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<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 />
# '''Histogram Adjustments''': Controls for Shadow, Midtones, and Highlights. White / Black points controls.<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 />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* New controls for histogram.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
=== Peruse ===<br />
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 [http://acbf.wikia.com/wiki/Specifications Advanced Comic Book Format], which is a metadata container for comic book archives (CBR, CBZ and so on).<br />
<br />
See the Peruse website for more detailed information: https://peruse.kde.org/<br />
<br />
=== KGpg ===<br />
[https://utils.kde.org/projects/kgpg KGpg] is a frontend for GnuPG key management. [mailto:kde-utils-devel@kde.org Contact the KGpg team].<br />
<br />
===KWin===<br />
KWin is the KDE project's default window manager. [https://mail.kde.org/mailman/listinfo/kwin Kwin developer mail list].<br />
<br />
=== Plasma ===<br />
Plasma is KDE's desktop environment; Simple by default, powerful when needed. [https://mail.kde.org/mailman/listinfo/plasma-devel Developer mail list].<br />
<br />
=== Okular ===<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. [mailto:okular-devel@kde.org Contact] the Okular developers.<br />
<br />
==== Project: Add support for showing and adding replies to sticky notes ====<br />
<br />
'''Brief explanation:''' PDF files can contain replies to certain annotations. In this project, you would need to add support to Okular and possibly to poppler so that they show the same way they do on other PDF readers. Once they are shown and if there is enough time adding the capability to add replies is also welcome.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentor:''' Okular developers https://mail.kde.org/mailman/listinfo/okular-devel<br />
<br />
'''Application guide''':<br />
* https://bugs.kde.org/show_bug.cgi?id=387834<br />
<br />
<br />
==== Project: Improve custom stamp annotation handling ====<br />
<br />
'''Brief explanation:''' Okular does display stamp annotations, but the support<br />
is somewhat incomplete. This particularly shows when trying to use stamp<br />
annotations with a custom image. For example, such annotations can be<br />
added in Okular, but they cannot be saved to the pdf file in a way<br />
that any other pdf viewer can read. Also, they will not appear on print-outs.<br />
<br />
The underlying reason for this is that Okular renders these stamps itself,<br />
rather than relying on the poppler library, which does all other pdf<br />
rendering. Goal of this project is therefore to teach poppler how to<br />
render stamp annotations, and then make Okular use that new functionality.<br />
More details can be found in the bug report [0].<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=383651<br />
<br />
'''Expected results:''' Poppler should render stamp annotations. Annotations<br />
should be printable from Okular. Custom stamps inserted via the Okular GUI<br />
should be visible in other pdf readers.<br />
<br />
'''Knowledge prerequisite:''' C++, and a bit about the pdf format.<br />
<br />
<br />
==== Project: Annotation improvements ====<br />
<br />
'''Brief explanation:''' Okular supports convenient editing of pdf annotations, but quite a number of paper-cut bugs are known. Examples are [0,1,2], but many more can be found in the bugtracker. Goal of this project is to fix as many of these bugs as possible, which should improve the Okular user experience greatly.<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=275371<br />
<br />
[1] https://bugs.freedesktop.org/show_bug.cgi?id=102635<br />
<br />
[2] https://bugs.freedesktop.org/show_bug.cgi?id=52010<br />
<br />
'''Expected results:''' Lots of annotation-related bugs fixed. Annotation rendering and manipulation should be more enjoyable.<br />
<br />
'''Knowledge prerequisite:''' C++ and Qt, and a bit about the pdf format<br />
<br />
<br />
=== WikiToLearn ===<br />
WikiToLearn was born as a non-profit community and an open source project, which provides free and collaborative textbooks with the help of students and academia. Knowledge only grows if shared!<br />
<br />
You can find all of the [ https://www.wikitolearn.org/ WikiToLearn] community on [https://chat.wikitolearn.org chat.wikitolearn.org]. We have many other ideas: get in touch with us to discuss them further!<br />
<br />
=== Falkon ===<br />
[https://www.falkon.org/ Falkon] is a KDE web browser.<br />
<br />
[mailto:falkon@kde.org Contact the Falkon team]<br />
<br />
==== Plasma integration ====<br />
<br />
'''Brief explanation:''' Falkon is Qt application and as such it integrates quite well into Plasma desktop environment. There is also an extension that allows to store passwords in KWallet. Plasma desktop provides some services that could be useful to use from browser, like showing the progress of downloads as jobs in notification applet or searching for bookmarks or open tabs from KRunner.<br />
<br />
There is already existing extension for Chrome that implements these features - [https://cgit.kde.org/plasma-browser-integration.git plasma-browser-integration] that can be used as a base for the Falkon extension.<br />
<br />
'''Expected results:''' Falkon C++ extension and additional helpers improves the integration with Plasma desktop.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, JavaScript basics<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
==== Firefox Sync ====<br />
<br />
'''Brief explanation:''' Firefox Sync is an open API for synchronization of browser data between multiple instances. Falkon doesn't currently have support for any synchronization at all. Instead of creating in-house solution, it would be best to use some existing solution, which Firefox Sync appears to be a great candidate.<br />
<br />
Firefox Sync is not exclusive to Firefox browser, it was already implemented for example in Gnome Epiphany browser (https://github.com/GNOME/epiphany/tree/master/lib/sync).<br />
<br />
'''Expected results:''' Falkon is able to sync bookmarks, passwords, sessions ... over Firefox Sync API.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
=== Cantor ===<br />
[https://edu.kde.org/cantor/ Cantor] provides a graphical frontend for different open source computer algebra systems and scientific programming languages. [mailto:kde-edu@kde.org Contact the KDE-Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Integrated documentation ====<br />
'''Brief explanation''': at the moment the external documentation like for example for Maxima http://maxima.sourceforge.net/docs/manual/en/maxima.html, and similar for Octave, python, etc., is opened in the external browser window. Ideally, we'd show this inside of the application in the help/documentation panel and enable a quick access to the documentation together with some more advanced search capabilities. Integrated search and also the context sensitive help (user marks a keyword in the worksheet, hits e.g. the F1 button and the documentation for the selected keyword is shown) should be possible. Qt Help Framework (http://doc.qt.io/qt-5/qthelp-framework.html) should be utilized for this. For indexing and searching in a unified manner the documentation together with the search index should be available locally. Qt help's qch file should be available for download on store.kde.org. Users of different systems (Maxima, Octave, R, etc.) would download the documentation they need. Ideally, we could also try to get a similar appearance by css-styling the html files for different systems prior to creating those qch files.<br />
<br />
The project consists of the following three major parts:<br />
* implementation in c++ (documentation panel, searching, short cuts for faster navigation, etc.)<br />
* creation of Qt help files for major computer algebra systems and programming languages supported by Cantor<br />
* definition of sections on store.kde.org<br />
<br />
'''Expected results''': integrated documentation in Cantor for the supported CAS and programming languages<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic knowledge about html<br />
<br />
'''Mentor''': Alexander Semke<br />
<br />
=== Plasma Mobile ===<br />
Plasma Mobile is KDE's software stack for mobile devices that includes Plasma phone components, Kirigami and a set of mobile-friendly applications.<br />
<br />
==== SMS App ====<br />
Plasma Mobile currently does not have a functional SMS app. One approach to this would be extending the SMS app that is currently developed for KDE Connect to have a Plasma Mobile backend.<br />
<br />
This includes:<br />
- Develop an approach to make the app support multiple backends<br />
- Develop a backend for the Plasma Mobile SMS stack (ofono)<br />
- Possibly improvements to the Plasma Mobile SMS stack<br />
- Possibly improvements to the SMS app UX<br />
<br />
Goal is to be able to communicate via SMS on a Plasma mobile phone with all basic features (sending, receiving SMS, browsing through conversations).<br />
<br />
This requires access to a Plasma mobile enabled phone, preferably the Nexus 5X. Second-hand phones are available at very low prices.<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5.<br />
<br />
'''Mentors:''' Simon Redman and Nicolas Fella for KDE Connect specific things, Bhushan Shah for Plasma Mobile things. Get in touch with us on #kdeconnect on freenode or the [https://matrix.to/#/%23plasmamobile:matrix.org Plasma Mobile Matrix channel]<br />
<br />
=== KDevelop ===<br />
[https://www.kdevelop.org/ Kdevelop] is a cross-platform IDE for C, C++, Python, QML/JavaScript and PHP. [mailto:kdevelop-devel@kde.org Contact the Kdevelop team].<br />
<br />
=== Xdg-desktop-portal-kde ===<br />
<br />
<br />
=== KDE Connect ===<br />
[https://community.kde.org/KDEConnect KDE Connect] is a project that enables all your devices to communicate with each other.<br />
<br />
==== KDE Connect for Windows port ====<br />
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.<br />
<br />
'''Areas of knowledge:''' Experience writing Windows applications, C++ and Qt5 is required.<br />
<br />
'''Mentor:''' Get in touch with us in the [https://mail.kde.org/mailman/listinfo/kdeconnect kdeconnect mailing list] or on #kdeconnect on Freenode<br />
<br />
=== Purpose ===<br />
The [https://api.kde.org/frameworks/purpose/html/index.html Purpose] framework offers the possibility to create integrate services and actions on any application without having to implement them specifically. Purpose will offer them mechanisms to list the different alternatives to execute given the requested action type and will facilitate components so that all the plugins can receive all the information they need.<br />
<br />
==== Barcode scanning infrastructure ====<br />
Purpose enables application developers to use features without implementing them themselves. It offers multiple alternatives to achieve a goal. Right now it supports sharing files and URLs.<br />
<br />
An interesting use case for it would be scanning barcodes. An application developer that wants to scan a barcode would ask Purpose for it. Purpose would offer multiple ways of doing it, e.g. from a local file, from the local camera or from a via KDE Connect connected phone. Purpose would then return the data to the application.<br />
<br />
Goal of this task is to have a framework for scanning barcodes as well as multiple implementations. This consists of:<br />
- Adding a new Plugin type to Purpose<br />
- A import from file backend<br />
- A local camera backend<br />
- A KDE Connect backend<br />
- One or more applications using it, e.g. Itinerary or a barcode scan app for Plasma Mobile<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5 is required. Experience with Java/Android for the KDE Connect backend is beneficial.<br />
<br />
'''Mentor:''' Nicolas Fella (nicofee) for KDE Connect parts. Aleix Pol (apol) for Purpose parts. Volker Krause (vkrause) for zxing parts. [https://mail.kde.org/mailman/listinfo/kde-frameworks-devel Devel mail list].</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2019/Ideas&diff=82543GSoC/2019/Ideas2019-01-19T20:36:07Z<p>Stikonas: /* KDE Partition Manager */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoC Instructions]], [[../../2018/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 may wish 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 is unlikely to work out.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or another image '''<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 />
** '''Ideas with no mentors listed and their contact info will be removed''' **<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 />
===Your Own Idea ===<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 />
'''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 />
===digiKam===<br />
digiKam is an advanced digital photo management application for Linux, Windows, and MacOS.<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: AI Face Recognition with OpenCV DNN module ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we proposed a project to implement an AI extension to the [https://cgit.kde.org/digikam.git/tree/core/libs/facesengine/recognition digiKam core face recognition]. The project used the Dlib C++ API, but we were not satisfied by the results, as the algorithm gave poor performance. This choice also introduced a huge backport of low level codes which we don't want to maintain. So, even though the project proposed a somewhat suitable solution to provide an AI face recognition processor based on deep-learning, this one was not really powerful and functional enough. For now, this section of code about Dlib DNN extension is disabled in digiKam core.<br />
<br />
As digiKam core already depends on OpenCV library to perform complex image processing, and as OpenCV >= 3.3 release provide a new [https://docs.opencv.org/3.4.3/d2/d58/tutorial_table_of_content_dnn.html OpenCV DNN (Deep Neural Network) module], the goal now is to port the current digiKam core face recognition DNN extension to new OpenCV API and write all unit tests to validate the algorithm usability, efficiency, and performance, while learning and recognizing faces automatically.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Face recognition based on DNN OpenCV API, with unit test, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, OpenCV, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
==== Project: Zoomable and Resizable Brush for Healing Clone Tool ====<br />
<br />
'''Brief Explanation''': With GoSC 2016, we have proposed a project to implement an [https://cgit.kde.org/digikam.git/tree/core/utilities/imageeditor/tools/enhance Healing Clone tool for digiKam image editor] to be able to remove unwanted artifacts from images. The student has implemented the basis without a zoomable canvas and without the resizable brush support. Due to this lack of features, the tools cannot be used in production by end-users.<br />
<br />
This section of code about healing clone tool is currently disabled in digiKam core.<br />
<br />
The goal of this project is to implement the missing feature for the Healing Clone tool in image editor, including the unit-tests and the documentation.<br />
<br />
'''Expected Results''': <br />
<br />
Provide a suitable Healing clone tool for image editor, with unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Mohamed Anwer and Gilles Caulier<br />
<br />
==== Project: Factoring all Export Tools with new Export API ====<br />
<br />
'''Brief Explanation''': With GoSC 2018, we proposed a project to implement a huge factorization and improvements with all [https://cgit.kde.org/digikam.git/tree/core/utilities/assistants/webservices digiKam export to web service tools]. Our student fixed plenty of code using OAuth version 2 authentification, has simplified classes, and started to write a new API to factorize all these tools, including a common Wizard dialog. Even if the export tools implementation are now better, they do not use the new API and always run as a stand alone session in digiKam core. Due to this fact, the Web Service tools are not yet usable in digiKam Batch Queue Manager as single step runnable at end of a queue processing. So the section of code about factored export tools API is currently disabled in digiKam core. This year, the project will be to fix that.<br />
<br />
'''Expected Results''': <br />
<br />
Start to use every the new export tools API, use the new Wizard dialog, factoring codes everywhere, and introduce all export tools to BQM. Write unit tests, and documentation.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, digiKam<br />
<br />
'''Mentors''': Maik Qualmann and Gilles Caulier<br />
<br />
=== Krita ===<br />
[http://www.krita.org 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==== Project: Integrating the MyPaint Brush Engine ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to effectively paint with MyPaint brushes in Krita.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
<br />
==== Project: Supporting Vertical Text and SVG2 Text in the Text Shape ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Artists should be able to create and edit vertical text. Text shapes should be able to automatically wrap text to the bounding box.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Typography, Text Layout<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Add New Fill Layer Types ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
Several new fill layer types that allow the user to add dynamically generated content as a layer in the layer stack <br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Port Krita to Android OR iOS ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, CMake, Android or iOS. You also need to have access to test hardware.<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
<br />
==== Project: Improve Krita for Touch Systems ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: SVG Mesh Gradients ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': <br />
<br />
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.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C, C++, Qt, Krita, SVG, Inkscape<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Level''' Advanced<br />
<br />
'''Mentor''': Jouni Pentikainen (tyyppi on IRC)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
<br />
'''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.<br />
<br />
'''Expected Results''': A revamped and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud)<br />
<br />
=== GCompris ===<br />
[https://gcompris.net/ GCompris] is a high quality educational software suite, including a large number of activities for children aged 2 to 10.<br />
<br />
==== Project: Finishing the port of the major activities for version 1.0 ====<br />
'''Brief explanation''': Originally written in Gtk+ the development team started to rewrite it from scratch in Qt Quick and almost finished the port.<br />
<br />
'''Expected results''':<br />
The aim of this year is to work on the most important activities that we are missing to have a complete 1.0, mostly the analog electricity one (https://phabricator.kde.org/T5954, other activities can be proposed too, for example, we lack activities to learn about biology).<br />
First phase is to check how the Gtk+ version was working, what could be improved and then create a proposal with a timeline explaining what you expect to do and the time estimation. It does not need to be a simple clone, improvements should be done when possible.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
<br />
==== Project: One step closer to version 1.0 ====<br />
'''Brief explanation''': we had some remarks that the difficulty in an activity can increase too much and target different ages in the same levels. The aim of this project is to add a granularity on the datasets so the child can better target what to learn.<br />
<br />
'''Expected results''':<br />
The aim of this project is to update activities to be able to use json files as datasets so we can have multiple datasets (each targeting a different learning goal) for the same activity.<br />
<br />
You need to choose activities that need this kind of datasets and update their code to use multiple datasets.<br />
<br />
A discussion is opened in https://phabricator.kde.org/T10211 to better know what we want and how to do it (WIP).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/GSOC_newcomers, http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Aman Kumar Gupta (IRC: gupta2140[m]), Emmanuel Charruau (IRC: allon), Johnny Jazeix (IRC: JohnnyJ), Timothée Giet (IRC: Animtim)<br />
<br />
[mailto:gcompris-devel@kde.org Contact] the GCompris team.<br />
<br />
=== KDE neon ===<br />
[https://neon.kde.org KDE neon] compiles KDE software to make it available pronto.<br />
<br />
==== Project: ISO Image Writer ====<br />
<br />
[https://cgit.kde.org/isoimagewriter.git/ ISO Image Writer] copies ISO images onto USB drives. It needs code tidied up and builds made for Snap, FlatPak, Windows, Mac and good old Linux packages. [https://phabricator.kde.org/M113/466/ Design to implement]<br />
<br />
'''Expected Results''': Installable packages<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Build systems, multi-platform<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Jonathan Riddell (IRC: Riddell)<br />
<br />
=== KDE Partition Manager ===<br />
<br />
=== Project: Port to Polkit-qt ===<br />
[https://www.kde.org/applications/system/kdepartitionmanager KDE Partition Manager] is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions. [https://mail.kde.org/mailman/listinfo/kde-devel Developer mail list].<br />
<br />
'''Brief Explanation''': KDE Partition Manager was recently ported to KAuth (which is Tier 2 KDE Framework library). This means that instead of running the whole GUI as root, KDE Partition Manager runs as a normal user, starts a small (non-GUI) helper application which runs as root and executes privileged tasks.<br />
<br />
KAuth itself was not sufficient for this task, so we built a small protocol on top of KAuth. Usually, programs that use KAuth, start a helper, it does its job and exists. In KDE Partition Manager, helper persists, and communicates with KDE Partition Manager using a fairly simple DBus protocol over which GUI application can request two things:<br />
* execute some external program, like sfdisk, btrfs, etc... <br />
* Copy block of data (partition) to another location).<br />
<br />
However, KAuth library itself is a layer built on top of Polkit-Qt (which is a small wrapper around Polkit).<br />
<br />
'''The proposal''' for this project is to port away from KAuth and run our custom protocol between helper and GUI application directly on top of Polkit-Qt.<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and basic knowledge of Qt<br />
<br />
You don't need experience of using DBus, you can pick this up during the project.<br />
<br />
'''Mentor''': Andrius Štikonas (IRC: stikonas)<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org/ Kopete] is a flexible and extendable multiple protocol instant messaging system. [http://mail.kde.org/mailman/listinfo/kopete-devel Developer mail list].<br />
<br />
=== LabPlot ===<br />
[https://labplot.kde.org 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. Labplot is part of the [https://edu.kde.org/ KDE Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Import of educational data sets available on the internet ====<br />
'''Brief explanation''': There are many internet pages providing data sets for educational and study purposes for many different areas (astrophysics, statistics, medicine, etc.). Some tools used in the scientific area provide some "wrappers" for such online sources and allow the user to easily play around with those data sets in the applications whereas the technical details like fetching of data from the server and parsing are done completely transparent for the user. The goal of this project is to add similar functionality to LabPlot. There will be a wizard where the user can select from a thematically grouped list of data sets available online. The internal description of such an online data set should contain the URL with the actual file that needs to be downloaded and the settings for LabPlot's data parser (separator, column names and data types, etc.). The definition of the data sources should be made available on store.kde.org.<br />
<br />
'''Expected results''': We want to be able to easily import the educational data sets available on the internet.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': TBD<br />
<br />
==== Project: Statistical analysis ====<br />
Currently LabPlot has only basic support for statistical data analysis by providing some basic measures of descriptive statistics in the spreadsheet. The goal of the project is to add more statistics relevant features (hypothesis tests, cluster analysis, ets.) to LabPlot.<br />
<br />
'''Expected results''':<br />
* evaluate available statistical open-source libraries which can be used for this project<br />
* determine a reasonable set of features and algorithms that can be added to LabPlot, compare here with other similar projects, and implement them<br />
* for the visualization of results of statistical calculations, implement new kind of reports for this, comparable to other similar projects<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic statistics knowledge<br />
<br />
'''Mentor''': TBD<br />
<br />
=== Kdenlive ===<br />
[https://kdenlive.org 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.<br />
<br />
==== Project: Evolving Titler tool ====<br />
<br />
'''Brief Explanation''': Kdenlive titler tool allows to draw texts and images to composite over videos.<br />
<br />
Current code is using XML description, drawn by our "kdenlivetitle" MLT module, using old QPainter engine.<br />
This engines has limitations that blocks interesting features.<br />
Few years ago, an upstream module appeared in MLT, named "WebVfx", which uses QML to do similar things with much more flexibility.<br />
<br />
We would like to be able to load current XML titles and convert them automatically to QML format, and generate QML from our current GUI. Then the GUI could evolve to integrate new features, in accordance to our community requests & design group recommendations.<br />
<br />
'''Expected Results''': A titler using QML backend<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, QML<br />
<br />
'''Level''' Medium<br />
<br />
'''Mentor''': Vincent Pinon (IRC: vpinon)<br />
<br />
=== Choqok ===<br />
Get in touch on IRC (#choqok).<br />
<br />
=== KStars ===<br />
[https://edu.kde.org/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.<br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* 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.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<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 />
# '''Histogram Adjustments''': Controls for Shadow, Midtones, and Highlights. White / Black points controls.<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 />
'''Expected results''': <br />
* Improved Histogram Tool.<br />
* New controls for histogram.<br />
* SNR, Sky Glow, and Photometry calculations.<br />
* Photometric reductions. Aperture photometry.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Threading, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
=== Peruse ===<br />
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 [http://acbf.wikia.com/wiki/Specifications Advanced Comic Book Format], which is a metadata container for comic book archives (CBR, CBZ and so on).<br />
<br />
See the Peruse website for more detailed information: https://peruse.kde.org/<br />
<br />
=== KGpg ===<br />
[https://utils.kde.org/projects/kgpg KGpg] is a frontend for GnuPG key management. [mailto:kde-utils-devel@kde.org Contact the KGpg team].<br />
<br />
===KWin===<br />
KWin is the KDE project's default window manager. [https://mail.kde.org/mailman/listinfo/kwin Kwin developer mail list].<br />
<br />
=== Plasma ===<br />
Plasma is KDE's desktop environment; Simple by default, powerful when needed. [https://mail.kde.org/mailman/listinfo/plasma-devel Developer mail list].<br />
<br />
=== Okular ===<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. [mailto:okular-devel@kde.org Contact] the Okular developers.<br />
<br />
==== Project: Add support for showing and adding replies to sticky notes ====<br />
<br />
'''Brief explanation:''' PDF files can contain replies to certain annotations. In this project, you would need to add support to Okular and possibly to poppler so that they show the same way they do on other PDF readers. Once they are shown and if there is enough time adding the capability to add replies is also welcome.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentor:''' Okular developers https://mail.kde.org/mailman/listinfo/okular-devel<br />
<br />
'''Application guide''':<br />
* https://bugs.kde.org/show_bug.cgi?id=387834<br />
<br />
<br />
==== Project: Improve custom stamp annotation handling ====<br />
<br />
'''Brief explanation:''' Okular does display stamp annotations, but the support<br />
is somewhat incomplete. This particularly shows when trying to use stamp<br />
annotations with a custom image. For example, such annotations can be<br />
added in Okular, but they cannot be saved to the pdf file in a way<br />
that any other pdf viewer can read. Also, they will not appear on print-outs.<br />
<br />
The underlying reason for this is that Okular renders these stamps itself,<br />
rather than relying on the poppler library, which does all other pdf<br />
rendering. Goal of this project is therefore to teach poppler how to<br />
render stamp annotations, and then make Okular use that new functionality.<br />
More details can be found in the bug report [0].<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=383651<br />
<br />
'''Expected results:''' Poppler should render stamp annotations. Annotations<br />
should be printable from Okular. Custom stamps inserted via the Okular GUI<br />
should be visible in other pdf readers.<br />
<br />
'''Knowledge prerequisite:''' C++, and a bit about the pdf format.<br />
<br />
<br />
==== Project: Annotation improvements ====<br />
<br />
'''Brief explanation:''' Okular supports convenient editing of pdf annotations, but quite a number of paper-cut bugs are known. Examples are [0,1,2], but many more can be found in the bugtracker. Goal of this project is to fix as many of these bugs as possible, which should improve the Okular user experience greatly.<br />
<br />
[0] https://bugs.kde.org/show_bug.cgi?id=275371<br />
<br />
[1] https://bugs.freedesktop.org/show_bug.cgi?id=102635<br />
<br />
[2] https://bugs.freedesktop.org/show_bug.cgi?id=52010<br />
<br />
'''Expected results:''' Lots of annotation-related bugs fixed. Annotation rendering and manipulation should be more enjoyable.<br />
<br />
'''Knowledge prerequisite:''' C++ and Qt, and a bit about the pdf format<br />
<br />
<br />
=== WikiToLearn ===<br />
WikiToLearn was born as a non-profit community and an open source project, which provides free and collaborative textbooks with the help of students and academia. Knowledge only grows if shared!<br />
<br />
You can find all of the [ https://www.wikitolearn.org/ WikiToLearn] community on [https://chat.wikitolearn.org chat.wikitolearn.org]. We have many other ideas: get in touch with us to discuss them further!<br />
<br />
=== Falkon ===<br />
[https://www.falkon.org/ Falkon] is a KDE web browser.<br />
<br />
[mailto:falkon@kde.org Contact the Falkon team]<br />
<br />
==== Plasma integration ====<br />
<br />
'''Brief explanation:''' Falkon is Qt application and as such it integrates quite well into Plasma desktop environment. There is also an extension that allows to store passwords in KWallet. Plasma desktop provides some services that could be useful to use from browser, like showing the progress of downloads as jobs in notification applet or searching for bookmarks or open tabs from KRunner.<br />
<br />
There is already existing extension for Chrome that implements these features - [https://cgit.kde.org/plasma-browser-integration.git plasma-browser-integration] that can be used as a base for the Falkon extension.<br />
<br />
'''Expected results:''' Falkon C++ extension and additional helpers improves the integration with Plasma desktop.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, JavaScript basics<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
==== Firefox Sync ====<br />
<br />
'''Brief explanation:''' Firefox Sync is an open API for synchronization of browser data between multiple instances. Falkon doesn't currently have support for any synchronization at all. Instead of creating in-house solution, it would be best to use some existing solution, which Firefox Sync appears to be a great candidate.<br />
<br />
Firefox Sync is not exclusive to Firefox browser, it was already implemented for example in Gnome Epiphany browser (https://github.com/GNOME/epiphany/tree/master/lib/sync).<br />
<br />
'''Expected results:''' Falkon is able to sync bookmarks, passwords, sessions ... over Firefox Sync API.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' David Rosca (nowrep@gmail.com, IRC: nowrep on #falkon)<br />
<br />
=== Cantor ===<br />
[https://edu.kde.org/cantor/ Cantor] provides a graphical frontend for different open source computer algebra systems and scientific programming languages. [mailto:kde-edu@kde.org Contact the KDE-Edu team].<br />
<br />
[mailto:kde-edu@mail.kde.org Contact KDE-Edu]<br />
<br />
==== Project: Integrated documentation ====<br />
'''Brief explanation''': at the moment the external documentation like for example for Maxima http://maxima.sourceforge.net/docs/manual/en/maxima.html, and similar for Octave, python, etc., is opened in the external browser window. Ideally, we'd show this inside of the application in the help/documentation panel and enable a quick access to the documentation together with some more advanced search capabilities. Integrated search and also the context sensitive help (user marks a keyword in the worksheet, hits e.g. the F1 button and the documentation for the selected keyword is shown) should be possible. Qt Help Framework (http://doc.qt.io/qt-5/qthelp-framework.html) should be utilized for this. For indexing and searching in a unified manner the documentation together with the search index should be available locally. Qt help's qch file should be available for download on store.kde.org. Users of different systems (Maxima, Octave, R, etc.) would download the documentation they need. Ideally, we could also try to get a similar appearance by css-styling the html files for different systems prior to creating those qch files.<br />
<br />
The project consists of the following three major parts:<br />
* implementation in c++ (documentation panel, searching, short cuts for faster navigation, etc.)<br />
* creation of Qt help files for major computer algebra systems and programming languages supported by Cantor<br />
* definition of sections on store.kde.org<br />
<br />
'''Expected results''': integrated documentation in Cantor for the supported CAS and programming languages<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, basic knowledge about html<br />
<br />
'''Mentor''': Alexander Semke<br />
<br />
=== Plasma Mobile ===<br />
Plasma Mobile is KDE's software stack for mobile devices that includes Plasma phone components, Kirigami and a set of mobile-friendly applications.<br />
<br />
==== SMS App ====<br />
Plasma Mobile currently does not have a functional SMS app. One approach to this would be extending the SMS app that is currently developed for KDE Connect to have a Plasma Mobile backend.<br />
<br />
This includes:<br />
- Develop an approach to make the app support multiple backends<br />
- Develop a backend for the Plasma Mobile SMS stack (ofono)<br />
- Possibly improvements to the Plasma Mobile SMS stack<br />
- Possibly improvements to the SMS app UX<br />
<br />
Goal is to be able to communicate via SMS on a Plasma mobile phone with all basic features (sending, receiving SMS, browsing through conversations).<br />
<br />
This requires access to a Plasma mobile enabled phone, preferably the Nexus 5X. Second-hand phones are available at very low prices.<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5.<br />
<br />
'''Mentors:''' Simon Redman and Nicolas Fella for KDE Connect specific things, Bhushan Shah for Plasma Mobile things. Get in touch with us on #kdeconnect on freenode or the [https://matrix.to/#/%23plasmamobile:matrix.org Plasma Mobile Matrix channel]<br />
<br />
=== KDevelop ===<br />
[https://www.kdevelop.org/ Kdevelop] is a cross-platform IDE for C, C++, Python, QML/JavaScript and PHP. [mailto:kdevelop-devel@kde.org Contact the Kdevelop team].<br />
<br />
=== Xdg-desktop-portal-kde ===<br />
<br />
<br />
=== KDE Connect ===<br />
[https://community.kde.org/KDEConnect KDE Connect] is a project that enables all your devices to communicate with each other.<br />
<br />
==== KDE Connect for Windows port ====<br />
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.<br />
<br />
'''Areas of knowledge:''' Experience writing Windows applications, C++ and Qt5 is required.<br />
<br />
'''Mentor:''' Get in touch with us in the [https://mail.kde.org/mailman/listinfo/kdeconnect kdeconnect mailing list] or on #kdeconnect on Freenode<br />
<br />
=== Purpose ===<br />
The [https://api.kde.org/frameworks/purpose/html/index.html Purpose] framework offers the possibility to create integrate services and actions on any application without having to implement them specifically. Purpose will offer them mechanisms to list the different alternatives to execute given the requested action type and will facilitate components so that all the plugins can receive all the information they need.<br />
<br />
==== Barcode scanning infrastructure ====<br />
Purpose enables application developers to use features without implementing them themselves. It offers multiple alternatives to achieve a goal. Right now it supports sharing files and URLs.<br />
<br />
An interesting use case for it would be scanning barcodes. An application developer that wants to scan a barcode would ask Purpose for it. Purpose would offer multiple ways of doing it, e.g. from a local file, from the local camera or from a via KDE Connect connected phone. Purpose would then return the data to the application.<br />
<br />
Goal of this task is to have a framework for scanning barcodes as well as multiple implementations. This consists of:<br />
- Adding a new Plugin type to Purpose<br />
- A import from file backend<br />
- A local camera backend<br />
- A KDE Connect backend<br />
- One or more applications using it, e.g. Itinerary or a barcode scan app for Plasma Mobile<br />
<br />
'''Areas of knowledge:''' Basic understanding of C++ and Qt5 is required. Experience with Java/Android for the KDE Connect backend is beneficial.<br />
<br />
'''Mentor:''' Nicolas Fella (nicofee) for KDE Connect parts. Aleix Pol (apol) for Purpose parts. Volker Krause (vkrause) for zxing parts. [https://mail.kde.org/mailman/listinfo/kde-frameworks-devel Devel mail list].</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=79803Applications/17.12 repo drop list kdelibs42018-03-20T18:46:08Z<p>Stikonas: /* kscd */</p>
<hr />
<div>=Repos WITHOUT frameworks branch which CAN be dropped=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==kaccessible==<br />
*Qt5 provides by default a bridge from the Qt accessibility API to At-Spi<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
==kremotecontrol==<br />
*Frontend for remote controls. Unmaintained, no one ported it.<br />
<br />
=Repos WITHOUT frameworks branch=<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*** [tosky] No, there is an open feature request: https://bugzilla.gnome.org/show_bug.cgi?id=348330<br />
*Who do we ask if they want to port it?<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk replacing in files<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
** [tosky] unfortunately [https://mail.kde.org/pipermail/release-team/2017-September/010595.html he can't help with the port right now]<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==juk [DONE]==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne reached out to github.com/KapiX/juk/commits/kf5, imported it as "frameworks" and started cleaning it.<br />
***issues solved, frameworks was merged into master on October 1st<br />
<br />
==kget [DONE]==<br />
*What is the status?<br />
** [mrnhmath] unfinished, some work done<br />
** [wbauer] I spent some time during the last weeks to fix problems I noticed, e.g. opening the transfer history crashed, the bittorrent plugin wasn't built at all and needed some fixes to actually compile, disabled plugins disappeared from the settings, some incorrect QUrl usage that caused file:/xxx destinations being displayed and a folder hierarchy file:/xxx to be created,...<br />I also ported it from KUniqueApplication to QApplication and KDBusService.<br /><br />Review Requests are upcoming, although I assume it's fine to commit minor fixes directly, right?<br /><br />The only remaining major problem I'm still facing is that downloads fail to start if the multiseg plugin is enabled (which it is by default). I'll try to investigate and fix this too, but in the worst case it could just be disabled for the release...<br />Otherwise it seems to work fine here with my local changes (with multiseg disabled and using the normal kio plugin).<br /><br />So can we merge frameworks to master? AIUI this needs to be done before the dependency freeze tomorrow.<br />(my fixes so far don't add any new dependencies anyway)<br />
*** [tosky] discussion, including exceptions, should be discussed on release-team@kde.org; this is a wiki to report the decisions, and the content reported above should go the list instead.<br />
*** [wbauer] Ok, sorry.<br />https://mail.kde.org/pipermail/release-team/2017-November/010675.html<br />
<br />
* [wbauer] I merged the frameworks branch into master today (November 9th).<br />
<br />
==kimagemapeditor [DONE]==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
** [tosky] in the end, even with KDELibs4Support, frameworks was merged into master on November 8th<br />
<br />
==kmouth [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf [DONE]==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
** Heiko Becker tried to use the system Box2D but there are few weird behaviors. Even if kolf still depend on KDELibs4Support, and even with this dependency, the functionality looks on par with the kdelibs 4.x version, so tosky decided to merge frameworks into master on October 22th.<br />
<br />
==kopete [DONE in 18.04]==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
** [asturm] musicbrainz support was bumped to 5 in kf5 branch after making some changes as described above. While that part seems to work fine, kf5 branch needs more polish to fix a lot of warnings, and there are other issues with the package that make it not a big loss if this is dropped for 17.12 - in both master and kf5 branch, I have never got it to play beyond the first track.<br />
**[stikonas] Now KDELibs4Support free and most of the build warnings are fixed.<br />
<br />
==ksirk [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli [DONE]==<br />
*What is the status?<br />
** <s>[tosky] it starts, but tiles are not loaded; debug needed</s><br />
***<s>[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.</s><br />
** <s>[stikonas] It starts now and tiles are loaded.</s><br />
**issues solved, frameworks was merged into master on September 1st<br />
<br />
==sweeper [DONE]==<br />
*What is the status?<br />
<s>One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.</s><br />
**Frameworks branch was merged to master on 26 Aug.<br />
<br />
==zeroconf-ioslave [DONE]==<br />
*What is the status?<br />
** [tosky] Found a way to test thanks to avahi-publish (zeroconf-ioslave recognizes webdav, ssh, sftp, ftp, and nfs).<br />
** frameworks merged into master on August 28th.<br />
<br />
=Weird repos=<br />
==kmix [DONE]==<br />
<s>KF5 is in master but not default</s><br />
*<s>Can we make KF5 default?</s><br />
**<s>[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.</s><br />
**<s>[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.</s><br />
*[tosky]Discussed with Jonathan Marten, frameworks merged into master on September 19th.<br />
<br />
==umbrello [DONE?]==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=79244Applications/17.12 repo drop list kdelibs42018-02-03T18:11:04Z<p>Stikonas: /* kopete */</p>
<hr />
<div>=Repos WITHOUT frameworks branch which CAN be dropped=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==kaccessible==<br />
*Qt5 provides by default a bridge from the Qt accessibility API to At-Spi<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
==kremotecontrol==<br />
*Frontend for remote controls. Unmaintained, no one ported it.<br />
<br />
=Repos WITHOUT frameworks branch=<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*** [tosky] No, there is an open feature request: https://bugzilla.gnome.org/show_bug.cgi?id=348330<br />
*Who do we ask if they want to port it?<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk replacing in files<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
** [tosky] unfortunately [https://mail.kde.org/pipermail/release-team/2017-September/010595.html he can't help with the port right now]<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==juk [DONE]==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne reached out to github.com/KapiX/juk/commits/kf5, imported it as "frameworks" and started cleaning it.<br />
***issues solved, frameworks was merged into master on October 1st<br />
<br />
==kget [DONE]==<br />
*What is the status?<br />
** [mrnhmath] unfinished, some work done<br />
** [wbauer] I spent some time during the last weeks to fix problems I noticed, e.g. opening the transfer history crashed, the bittorrent plugin wasn't built at all and needed some fixes to actually compile, disabled plugins disappeared from the settings, some incorrect QUrl usage that caused file:/xxx destinations being displayed and a folder hierarchy file:/xxx to be created,...<br />I also ported it from KUniqueApplication to QApplication and KDBusService.<br /><br />Review Requests are upcoming, although I assume it's fine to commit minor fixes directly, right?<br /><br />The only remaining major problem I'm still facing is that downloads fail to start if the multiseg plugin is enabled (which it is by default). I'll try to investigate and fix this too, but in the worst case it could just be disabled for the release...<br />Otherwise it seems to work fine here with my local changes (with multiseg disabled and using the normal kio plugin).<br /><br />So can we merge frameworks to master? AIUI this needs to be done before the dependency freeze tomorrow.<br />(my fixes so far don't add any new dependencies anyway)<br />
*** [tosky] discussion, including exceptions, should be discussed on release-team@kde.org; this is a wiki to report the decisions, and the content reported above should go the list instead.<br />
*** [wbauer] Ok, sorry.<br />https://mail.kde.org/pipermail/release-team/2017-November/010675.html<br />
<br />
* [wbauer] I merged the frameworks branch into master today (November 9th).<br />
<br />
==kimagemapeditor [DONE]==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
** [tosky] in the end, even with KDELibs4Support, frameworks was merged into master on November 8th<br />
<br />
==kmouth [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf [DONE]==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
** Heiko Becker tried to use the system Box2D but there are few weird behaviors. Even if kolf still depend on KDELibs4Support, and even with this dependency, the functionality looks on par with the kdelibs 4.x version, so tosky decided to merge frameworks into master on October 22th.<br />
<br />
==kopete [DONE in 18.04]==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
** [asturm] musicbrainz support was bumped to 5 in kf5 branch after making some changes as described above. While that part seems to work fine, kf5 branch needs more polish to fix a lot of warnings, and there are other issues with the package that make it not a big loss if this is dropped for 17.12 - in both master and kf5 branch, I have never got it to play beyond the first track.<br />
<br />
==ksirk [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli [DONE]==<br />
*What is the status?<br />
** <s>[tosky] it starts, but tiles are not loaded; debug needed</s><br />
***<s>[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.</s><br />
** <s>[stikonas] It starts now and tiles are loaded.</s><br />
**issues solved, frameworks was merged into master on September 1st<br />
<br />
==sweeper [DONE]==<br />
*What is the status?<br />
<s>One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.</s><br />
**Frameworks branch was merged to master on 26 Aug.<br />
<br />
==zeroconf-ioslave [DONE]==<br />
*What is the status?<br />
** [tosky] Found a way to test thanks to avahi-publish (zeroconf-ioslave recognizes webdav, ssh, sftp, ftp, and nfs).<br />
** frameworks merged into master on August 28th.<br />
<br />
=Weird repos=<br />
==kmix [DONE]==<br />
<s>KF5 is in master but not default</s><br />
*<s>Can we make KF5 default?</s><br />
**<s>[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.</s><br />
**<s>[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.</s><br />
*[tosky]Discussed with Jonathan Marten, frameworks merged into master on September 19th.<br />
<br />
==umbrello [DONE?]==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2018/Ideas&diff=78950GSoC/2018/Ideas2018-01-02T20:33:45Z<p>Stikonas: /* Project: finishing KAuth support */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoc Instructions]], [[../../2016/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 may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being 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.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or other image'''<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 />
===Your Own Idea ===<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 />
'''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 />
=== Krita ===<br />
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
We also expect prospective students to submit at least three patchs for bugs or wishes or small features. We want to know how good you are!<br />
<br />
==== Project: Implement a Lockfree Hashtable for Krita's Tile Manager ====<br />
<br />
'''Brief explanation''': This is a hard-core project, only suitable for someone with deep knowledge of the problems of designing multi-threaded software. It involves Krita's core datamodel, where the tiles that compose image data are managed. the KisTileHashTable currently uses a QReadWriteLock to manage access to the tiles. This is one of the last bottlenecks when painting and recomposing the image projection. The goal of this project is to remove that lock and replace it with a lockless design. Since this touches the very core of Krita, a thorough test plan is essential.<br />
<br />
'''Expected results''': No bottlenecks anymore! <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, threads, locks.<br />
<br />
'''Mentor''': Dmitry Kazakov (dmkitryK|log on irc)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''Brief Explanation''': In Krita, you can already add curves that could be applied to some properties of a layer, like opactity, 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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
'''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.<br />
<br />
'''Expected Results''': A revampted and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)<br />
<br />
==== Project: Analysis of thoroughput of Krita Blending Modes and porting them to AVX2 ====<br />
<br />
'''Brief Explanation''': Blending modes is the hottest piece of code in Krita. It should process gigabytes of data per second, therefore it should be extremely optimized. Some of its parts are already optimized to use AVX instructions, but some (float16 color spaces) are not. We need to port the rest of the color spaces to AVX and make a research into the possibilities of using AXV2 instructions directly (int16 instructions). It might happen that you will have to extend VC library to get full AVX support. This is another hard-core project only suitable if you have a good deal of experience.<br />
<br />
'''Expected Results''': Ported Float16 color spaces to AVX, extended Vc library to support int16 AVX2 instructions and adopted it in Krita<br />
<br />
'''Knowledge Prerequisite''': C++, SEE/AVX (read [http://www.intel.eu/content/www/eu/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html Intel's manual])<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log)<br />
<br />
==== Project: Partial canvas updates and region of interest (performance optimization for huge (20k+) canvases) ====<br />
<br />
'''Brief Explanation''': We already have an optimization for huge canvases, which is called Instant Preview. But it woks only when the user has the canvas zoomed out to fit the screen. There are some usecases, when the user wants to work with a small "working area" of a huge image and he doesn't care what happens with the rest of the image. This project is targeted to optimize this case.<br />
<br />
'''Expected Results''': By the end of the summer we expect these features to be implemented:<br />
* Partial updates in openGL canvas. Right now we redraw all the image textures in every frame, which is not needed after porting to Qt5.<br />
* Region of Intereset (ROI) in KisImage. Updates should be reordered and the priority should be given to the areas that are currently visible to the user<br />
* Work Area Tool. The user is be able to define the area, where he would like to work in. The updates for other parts of the image are skipped until the user exits this special mode.<br />
* (if there is time) Optimize textures loading to use RIO as well. Theoretically, we can just skip uploading of the tiles that are not visible on the screen at the moment.<br />
<br />
'''Knowledge Prerequisite''': C++, OpenGL<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log), Julian Thijssen (IRC: Nimmy)<br />
<br />
==== Project: Add 3D Painting Assistants ====<br />
<br />
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.<br />
<br />
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp<br />
<br />
'''Mentor''': Julian Thijssen (IRC: Nimmy)<br />
<br />
=== KDE Student Programs ===<br />
<br />
KDE Student Programs is the working group responsible for running Season of KDE and managing KDE's participation in Google Summer of Code, Google Code-In, and other mentorship programmes.<br />
<br />
==== Project: A new Season of KDE Website ====<br />
<br />
'''Brief explanation''': Season of KDE will need a new website to make managing the project easier for us. The core feature set that we're looking to have comprises:<br />
<br />
* Student applications on the website<br />
* Mentors can mark themselves interested in projects during the application phase<br />
* Org admins will create slots and assign projects and mentors to slots<br />
* Manage mid-term evaluations and results<br />
* Bulk data export and import<br />
<br />
For maintainability by the rest of KDE we'd like the app to be in Python (Tornado or a WSGI framework). It would also be nice if the app was an SPA riding on top of a REST API server so we can have command-line tools interacting with the server as well.<br />
<br />
'''Expected results''': Easier project administration for KDE.<br />
<br />
'''Knowledge Prerequisite''': Python, Tornado/WSGI, LDAP, full-stack web development, Single-Page applications.<br />
<br />
'''Mentor''': Boudhayan Gupta <bgupta@kde.org>, BaloneyGeek on IRC<br />
<br />
=== GCompris ===<br />
==== Project: finishing started activities ====<br />
'''Brief explanation''': GCompris is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originally written in Gtk+ it's development team started to rewrite it from scratch in Qt Quick.<br />
<br />
'''Expected results''':<br />
The aim of this year is to complete and getting merged activities that were started but have not been finished. You can find a list of tasks that you can work on at https://phabricator.kde.org/T7498. First phase is to check what is missing to be integrated (on code and graphic side) and then to complete them. You can find at https://cgit.kde.org/gcompris.git/refs/heads the list of the current branches (some of them need to be dropped, so contact us before starting working on one of them).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Continuing an activity already started or rewriting from scratch is something you have to check before writing your application. Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Johnny Jazeix (IRC: JohnnyJ), Divyam Madaan (IRC: dmadaan), Rudra Nil Basu (IRC: rudra)<br />
<br />
=== KDE Partition Manager ===<br />
==== Project: finishing KAuth support [Season of KDE]====<br />
'''Brief explanation''': KDE Partition Manager is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Expected results''':<br />
Last year a lot of work was done to make KDE Partition Manager not to start as root and use KAuth to elevate privileges. The aim of this project is to finish required refactoring and make sure everything still works.<br />
<br />
The two main issues are:<br />
<br />
* SMART support needs to be ported from (unmaitained) libatasmart library to calling smartctl command. This task is likely to be fairly easy.<br />
<br />
* KDE Partition Manager operation runner should be refactored, instead of calling KAuth helper multiple times to run a single command it has to prepare a list of all commands and their inputs and call KAuth helper once. This needs some refactoring in how partition manager reads and writes disk data (e.g. when moving/copying/backing up or restoring partition). In particular we don't want to transfer all the disk data back from the helper to the main application and back to the helper as DBus transport is fairly slow.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be able to build the KPMcore and KDE Partition Manager from source.<br />
<br />
* Knowledge of C++ / Qt (No knowledge of KDE Frameworks is required).<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#kde-devel or #calamares).<br />
<br />
'''Mentors''': Andrius Štikonas (IRC:stikonas)<br />
<br />
=== Kopete ===<br />
<br />
==== Project: Write tests and Improve protocol support ====<br />
<br />
'''Brief explanation''': Kopete is an instant messaging client that has the modular architecture and supports many messaging services with useful plugins to complement them. <br />
<br />
'''Expected results''':<br />
The aim of this project is to fix the bugs due to porting and improve the frontend and the test coverage.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be interested in test-driven development.<br />
<br />
* Be familiar with the codebase of KDE in general.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
<br />
Get in touch with us on mailing-list and start hacking KDE and fix bugs. Teams of two people is preferred for this project as it is a lot of work :)<br />
<br />
You can contact on IRC also but it is better to discuss over mailing list as not many people are in IRC on #kopete channel.<br />
<br />
'''Mentors''': Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC), Kopete Mailing List <kopete-devel@kde.org><br />
<br />
=== Documentation ===<br />
<br />
==== Project [for Season of KDE only]: Verify and update the various documentation ====<br />
<br />
'''Brief explanation:''' If you have been in and around KDE for some time you might have noticed some changes in the documentation, well here is your chance is to improve them. Documentation can always use some iterations and revisits. Your task is to understand the challenges that a beginner might and write advice for them. Your speed will depend on your familiarity with KDE infrastructure.<br />
<br />
'''Expected results:''' Better documentation. <br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt, and good writing skills :)<br />
<br />
'''Mentor:''' Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)<br />
<br />
=== LabPlot ===<br />
[http://www.labplot.kde.org 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.<br />
<br />
==== Project [for Season of KDE only]: Additional documentation for supported functions and constants ====<br />
<br />
'''Brief explanation''': LabPlot allows the user to generate and plot data based on mathematical expressions parameterizing the data. The internal mathematical parser supports the user with syntax highlighting and text completion. In addition to this there is a dialog where the user can navigate through all supported functions (standard mathematical functions, Bessel functions, Fermi-Dirac functions, zeta functions, etc.) and constants (mathematical constants, constants from astrophysics, nuclear physics, etc.) and select the desired expression. To improve the user experience and to further help the selection of the proper mathematical expression, additional documentation in form of the corresponding article on Wikipedia or on mathworld.com should be provided. The idea is to provide a web view in the dialog where the selection of the supported expressions is done and to load their the corresponding web page providing further information. E.g., by selecting the Gegenbauer polynomials, the user can optionally open the additional documentation showing the wiki page in the local language https://de.wikipedia.org/wiki/Gegenbauer-Polynom (maybe the mobile version) with the option to switch to mathworld docu on http://mathworld.wolfram.com/GegenbauerPolynomial.html.<br />
<br />
The task is to systematically go through all supported expressions and to collect the links to the web pages and to implement the optional web view loading those web pages in the dialog mentioned above.<br />
<br />
'''Expected results''': Increased user experience during for the input of mathematical expressions <br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': Fabian Kristof - Szabolcs<br />
<br />
==== Project: Plotting of live MQTT data ====<br />
'''Brief explanation''': LabPlot has already some support for plotting of live-data (http://krajszgsoc.blogspot.de/2017/09/in-finish-line-but-not-in-end.html). To cover more use-cases we want to also support MQTT sources. We need to investigate the available MQTT libraries for Qt:<br />
* https://blog.qt.io/blog/2017/08/14/introducing-qtmqtt-protocol/<br />
* https://github.com/emqtt/qmqtt<br />
and to add some support for MQTT to LabPlot.<br />
<br />
'''Expected results''': Similar to the currently supported data sources (files, sockets, serial port, SQL databases) we want to support the subscription to MQTT brockers and plotting of their data. <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, (optional) knowledge and experience with MQTT<br />
<br />
'''Mentor''': Fábián Kristóf - Szabolcs (mailto:fkristofszabolcs@gmail.com)<br />
<br />
==== Project: Import of educational data sets available on the internet ====<br />
'''Brief explanation''': There are many internet pages providing data sets for educational and study purposes for many different areas (astrophysics, statistics, medicine, etc.). Some tools used in the scientific area provide some "wrappers" for such online sources and allow the user to easily play around with those data sets in the applications whereas the technical details like fetching of data from the server and parsing are done completely transparent for the user. The goal of this project is to add similar functionality to LabPlot. There will be a wizard where the user can select from a thematically grouped list of data sets available online. The internal description of such an online data set should contain the URL with the actual file that needs to be downloaded and the settings for LabPlot's data parser (separator, column names and data types, etc.). The data fetched once should be cached so there is no need to fetch from the web again. Here we can have a look maybe at KStars for how to implement such a caching strategy and maybe even re-use some code from KStars.<br />
In addition to the list of pre-defined online sources, we need to elaborate how the user can add new online data sets (together with all the required parametrization) and publish the settings to make them available for everybody.<br />
<br />
'''Expected results''': We want to be able to easily import the educational data sets available on the internet.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt<br />
<br />
'''Mentor''': tbd<br />
<br />
==== Project: Import of data from web-services ====<br />
'''Brief explanation''': Brief explanation: This goal of this project is to extend the number of supported data sources by adding the possibility to import the data from web services (live and historical financial data, weather, etc.). Most web services expose their data via JSON. We need to add a "JSON filter" to LabPlot capable to connect to a web service, to fetch the data, to parse it and to import into LabPlot's internal data containers. In the GUI the user should be guided through the entry of the service URL, additional services parameters like API token, etc. and through the settings for the actual parsing (which JSON fields to consume and how). Also, it should be possible to refresh the data periodically like it is already possibile for the live data (http://krajszgsoc.blogspot.de/2017/09/in-finish-line-but-not-in-end.html). The goal is also to provide a set of widely known web services so the user can select and import the data from a list of pre-defined services. In addition to this, we need to elaborate the possibility to "publish" the settings for a web-service done by the user and make them publicaly available to every LabPlot user.<br />
<br />
<br />
'''Expected results''': Similar to the currently supported data sources (files, sockets, serial port, SQL databases) we want to import the data from web services and visualize it.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, (optional) JSON support in Qt<br />
<br />
'''Mentor''': tbd<br />
<br />
=== Kdenlive ===<br />
[https://kdenlive.org Kdenlive] is a KDE-application for professionnal 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. <br />
<br />
==== Project [for Season of KDE only]: Improve audio workflow: mixer ====<br />
<br />
'''Brief explanation''': Kdenlive already allows you adjust audio levels for each clip or for an entire track by adding effects. The idea of an audio mixer is to create a new widget that easily allows to control volume and balance for each track without having to search for effects. The core audio components should already be available through our video framework MLT. So this job will require to understand how Kdenlive interacts with MLT. Some details about the audio mixer features can be found in our [https://kdenlive.org/video-editing-applications-handbook/#audio documentation]<br />
<br />
'''Expected results''': Better control of the audio output for users <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, requires some preliminary studies to understand how Kdenlive/MLT work<br />
<br />
'''Mentor''': Jean-Baptiste Mardelle<br />
<br />
==== Project [for Season of KDE only]: Improve on monitor controls for image transformation ====<br />
<br />
'''Brief explanation''': When adding a "Transform" effect to a clip in Kdenlive, you can then resize and move the image directly on the monitor through a Qml overlay. The idea is to also add the possibility to adjust rotation directly on the monitor screen, and improve the general UI of this Qml overlay.<br />
<br />
'''Expected results''': Fluent control of size, position and rotation inside the monitor<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Qml - this does not require much knowledge of Kdenlive, and is mostly a Qml work<br />
<br />
'''Mentor''': Jean-Baptiste Mardelle<br />
<br />
=== Choqok ===<br />
==== Project: Port Choqok to Kirigami ====<br />
<br />
'''Brief explanation:''' Current Choqok UI doesn't make use of QML and creates interfaces in C++ files. The idea is to rewrite the interface in QML. At this point is better doing it with Kirigami since this means it will work on Plasma Mobile too.<br />
<br />
'''Expected results:''' Choqok UI makes use of Kirigami.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, Qml<br />
<br />
'''Mentor:''' Andrea Scarpino (IRC: ilpianista)<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#choqok).<br />
<br />
=== KStars ===<br />
<br />
[https://edu.kde.org/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. <br />
<br />
==== Project: Deep Sky Object Overhaul ====<br />
'''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 ability to cross-identify objects from all supported and future catalogs.<br />
<br />
'''Expected results''': <br />
* Convert all text-format catalogs to SQLite3 database.<br />
* Develop master DSO database where cross-identification of objects is supported. Master database can supported addon downloadable catalogs where they can be merged once downloaded by the user.<br />
* Import of The Principal Galaxy Catalog, 2003 Version (PGC2003) which contains ~1 million galaxies into KStars as a downloadable addon.<br />
* Caching and drawing optimizations for large catalogs.<br />
* Cross-identification for all supported DSO catalogs including, but not limited too: NGC/IC/Messier/Arp/PGC/LDN<br />
* Trixel indexation for all DSOs. Implementation of improved drawing cached routine in KStars for DSOs similar to stars.<br />
* All necessary updates within KStars maps, tools and dialogs to reflect the above changes.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Data Structures<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Ekos Web Client ====<br />
'''Brief explanation''': Ekos is KStars premier tool for observatory control and automation. A web client port of Ekos is desired where it communicates with the underlying INDI servers and drivers without a direct dependency on thick desktop clients. Ekos includes many modules including setup, capture, focus, guide, align, and mount. All functionalities of the desktop Ekos client are expected in the web client version using Python+Ajax or similar framework technologies suitable for online dynamic driven clients.<br />
<br />
'''Expected results''': <br />
* Online Ekos web client with all the thick client feature set.<br />
* Authentication and Registration framework.<br />
* Support for notifications similar to desktop client.<br />
* Ajax dynamic driven interface with near real time updates for framing and captures.<br />
* Multi-user support with granular permissions.<br />
* Web based INDI Control Panel with all the driver controls as in the desktop version.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, Django/Ajax or similar technology framework.<br />
<br />
'''Mentor''': Jasem Mutlaq ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: Jasem)<br />
<br />
==== Project: Implement Qt3D backend for KStars ====<br />
'''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.<br />
<br />
'''Expected results''': <br />
* Create Qt3D based backend to draw all objects currently implemented by QPainter backend.<br />
* Create realistic colors, shares, textures, meshes, lighting for all stars, solar system, and deep sky objects.<br />
* Create animations for meteor shows, comet tails, stars twinkle..etc<br />
'''Knowledge Prerequisite''': C++, Qt, Prior experience working with 3D applications/games.<br />
<br />
'''Mentor''': Akarsh Simha ([https://riot.im/app/#/room/#kstars:matrix.org Matrix]: kstar)</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2018/Ideas&diff=78918GSoC/2018/Ideas2017-12-18T16:36:45Z<p>Stikonas: /* Project: finishing KAuth support */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoc Instructions]], [[../../2016/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 may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being 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.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or other image'''<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 />
===Your Own Idea ===<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 />
'''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 />
=== Krita ===<br />
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
We also expect prospective students to submit at least three patchs for bugs or wishes or small features. We want to know how good you are!<br />
<br />
==== Project: Implement a Lockfree Hashtable for Krita's Tile Manager ====<br />
<br />
'''Brief explanation''': This is a hard-core project, only suitable for someone with deep knowledge of the problems of designing multi-threaded software. It involves Krita's core datamodel, where the tiles that compose image data are managed. the KisTileHashTable currently uses a QReadWriteLock to manage access to the tiles. This is one of the last bottlenecks when painting and recomposing the image projection. The goal of this project is to remove that lock and replace it with a lockless design. Since this touches the very core of Krita, a thorough test plan is essential.<br />
<br />
'''Expected results''': No bottlenecks anymore! <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, threads, locks.<br />
<br />
'''Mentor''': Dmitry Kazakov (dmkitryK|log on irc)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''Brief Explanation''': In Krita, you can already add curves that could be applied to some properties of a layer, like opactity, 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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
'''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.<br />
<br />
'''Expected Results''': A revampted and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)<br />
<br />
==== Project: Analysis of thoroughput of Krita Blending Modes and porting them to AVX2 ====<br />
<br />
'''Brief Explanation''': Blending modes is the hottest piece of code in Krita. It should process gigabytes of data per second, therefore it should be extremely optimized. Some of its parts are already optimized to use AVX instructions, but some (float16 color spaces) are not. We need to port the rest of the color spaces to AVX and make a research into the possibilities of using AXV2 instructions directly (int16 instructions). It might happen that you will have to extend VC library to get full AVX support. This is another hard-core project only suitable if you have a good deal of experience.<br />
<br />
'''Expected Results''': Ported Float16 color spaces to AVX, extended Vc library to support int16 AVX2 instructions and adopted it in Krita<br />
<br />
'''Knowledge Prerequisite''': C++, SEE/AVX (read [http://www.intel.eu/content/www/eu/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html Intel's manual])<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log)<br />
<br />
==== Project: Partial canvas updates and region of interest (performance optimization for huge (20k+) canvases) ====<br />
<br />
'''Brief Explanation''': We already have an optimization for huge canvases, which is called Instant Preview. But it woks only when the user has the canvas zoomed out to fit the screen. There are some usecases, when the user wants to work with a small "working area" of a huge image and he doesn't care what happens with the rest of the image. This project is targeted to optimize this case.<br />
<br />
'''Expected Results''': By the end of the summer we expect these features to be implemented:<br />
* Partial updates in openGL canvas. Right now we redraw all the image textures in every frame, which is not needed after porting to Qt5.<br />
* Region of Intereset (ROI) in KisImage. Updates should be reordered and the priority should be given to the areas that are currently visible to the user<br />
* Work Area Tool. The user is be able to define the area, where he would like to work in. The updates for other parts of the image are skipped until the user exits this special mode.<br />
* (if there is time) Optimize textures loading to use RIO as well. Theoretically, we can just skip uploading of the tiles that are not visible on the screen at the moment.<br />
<br />
'''Knowledge Prerequisite''': C++, OpenGL<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log), Julian Thijssen (IRC: Nimmy)<br />
<br />
==== Project: Add 3D Painting Assistants ====<br />
<br />
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.<br />
<br />
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp<br />
<br />
'''Mentor''': Julian Thijssen (IRC: Nimmy)<br />
<br />
=== KDE Student Programs ===<br />
<br />
KDE Student Programs is the working group responsible for running Season of KDE and managing KDE's participation in Google Summer of Code, Google Code-In, and other mentorship programmes.<br />
<br />
==== Project: A new Season of KDE Website ====<br />
<br />
'''Brief explanation''': Season of KDE will need a new website to make managing the project easier for us. The core feature set that we're looking to have comprises:<br />
<br />
* Student applications on the website<br />
* Mentors can mark themselves interested in projects during the application phase<br />
* Org admins will create slots and assign projects and mentors to slots<br />
* Manage mid-term evaluations and results<br />
* Bulk data export and import<br />
<br />
For maintainability by the rest of KDE we'd like the app to be in Python (Tornado or a WSGI framework). It would also be nice if the app was an SPA riding on top of a REST API server so we can have command-line tools interacting with the server as well.<br />
<br />
'''Expected results''': Easier project administration for KDE.<br />
<br />
'''Knowledge Prerequisite''': Python, Tornado/WSGI, LDAP, full-stack web development, Single-Page applications.<br />
<br />
'''Mentor''': Boudhayan Gupta <bgupta@kde.org>, BaloneyGeek on IRC<br />
<br />
=== GCompris ===<br />
==== Project: finishing started activities ====<br />
'''Brief explanation''': GCompris is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originally written in Gtk+ it's development team started to rewrite it from scratch in Qt Quick.<br />
<br />
'''Expected results''':<br />
The aim of this year is to complete and getting merged activities that were started but have not been finished. You can find a list of tasks that you can work on at https://phabricator.kde.org/T7498. First phase is to check what is missing to be integrated (on code and graphic side) and then to complete them. You can find at https://cgit.kde.org/gcompris.git/refs/heads the list of the current branches (some of them need to be dropped, so contact us before starting working on one of them).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Continuing an activity already started or rewriting from scratch is something you have to check before writing your application. Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Johnny Jazeix (IRC: JohnnyJ), Divyam Madaan (IRC: dmadaan), Rudra Nil Basu (IRC: rudra)<br />
<br />
=== KDE Partition Manager ===<br />
==== Project: finishing KAuth support ====<br />
'''Brief explanation''': KDE Partition Manager is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Expected results''':<br />
Last year a lot of work was done to make KDE Partition Manager not to start as root and use KAuth to elevate privileges. The aim of this project is to finish required refactoring and make sure everything still works.<br />
<br />
The two main issues are:<br />
<br />
* SMART support needs to be ported from (unmaitained) libatasmart library to calling smartctl command. This task is likely to be fairly easy.<br />
<br />
* KDE Partition Manager operation runner should be refactored, instead of calling KAuth helper multiple times to run a single command it has to prepare a list of all commands and their inputs and call KAuth helper once. This needs some refactoring in how partition manager reads and writes disk data (e.g. when moving/copying/backing up or restoring partition). In particular we don't want to transfer all the disk data back from the helper to the main application and back to the helper as DBus transport is fairly slow.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be able to build the KPMcore and KDE Partition Manager from source.<br />
<br />
* Knowledge of C++ / Qt (No knowledge of KDE Frameworks is required).<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#kde-devel or #calamares).<br />
<br />
'''Mentors''': Andrius Štikonas (IRC:stikonas)<br />
<br />
=== Kopete ===<br />
<br />
==== Project: Write tests and Improve protocol support ====<br />
<br />
'''Brief explanation''': Kopete is an instant messaging client that has the modular architecture and supports many messaging services with useful plugins to complement them. <br />
<br />
'''Expected results''':<br />
The aim of this project is to fix the bugs due to porting and improve the frontend and the test coverage.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be interested in test-driven development.<br />
<br />
* Be familiar with the codebase of KDE in general.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
<br />
Get in touch with us on mailing-list and start hacking KDE and fix bugs. Teams of two people is preferred for this project as it is a lot of work :)<br />
<br />
You can contact on IRC also but it is better to discuss over mailing list as not many people are in IRC on #kopete channel.<br />
<br />
'''Mentors''': Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)<br />
<br />
=== Documentation ===<br />
<br />
==== Project [for Season of KDE only]: Verify and update the various documentation ====<br />
<br />
'''Brief explanation:''' If you have been in and around KDE for some time you might have noticed some changes in the documentation, well here is your chance is to improve them. Documentation can always use some iterations and revisits. Your task is to understand the challenges that a beginner might and write advice for them. Your speed will depend on your familiarity with KDE infrastructure.<br />
<br />
'''Expected results:''' Better documentation. <br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt, and good writing skills :)<br />
<br />
'''Mentor:''' Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2018/Ideas&diff=78917GSoC/2018/Ideas2017-12-18T16:36:25Z<p>Stikonas: /* Project: finishing KAuth support */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoc Instructions]], [[../../2016/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 may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being 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.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or other image'''<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 />
===Your Own Idea ===<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 />
'''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 />
=== Krita ===<br />
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
We also expect prospective students to submit at least three patchs for bugs or wishes or small features. We want to know how good you are!<br />
<br />
==== Project: Implement a Lockfree Hashtable for Krita's Tile Manager ====<br />
<br />
'''Brief explanation''': This is a hard-core project, only suitable for someone with deep knowledge of the problems of designing multi-threaded software. It involves Krita's core datamodel, where the tiles that compose image data are managed. the KisTileHashTable currently uses a QReadWriteLock to manage access to the tiles. This is one of the last bottlenecks when painting and recomposing the image projection. The goal of this project is to remove that lock and replace it with a lockless design. Since this touches the very core of Krita, a thorough test plan is essential.<br />
<br />
'''Expected results''': No bottlenecks anymore! <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, threads, locks.<br />
<br />
'''Mentor''': Dmitry Kazakov (dmkitryK|log on irc)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''Brief Explanation''': In Krita, you can already add curves that could be applied to some properties of a layer, like opactity, 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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
'''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.<br />
<br />
'''Expected Results''': A revampted and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)<br />
<br />
==== Project: Analysis of thoroughput of Krita Blending Modes and porting them to AVX2 ====<br />
<br />
'''Brief Explanation''': Blending modes is the hottest piece of code in Krita. It should process gigabytes of data per second, therefore it should be extremely optimized. Some of its parts are already optimized to use AVX instructions, but some (float16 color spaces) are not. We need to port the rest of the color spaces to AVX and make a research into the possibilities of using AXV2 instructions directly (int16 instructions). It might happen that you will have to extend VC library to get full AVX support. This is another hard-core project only suitable if you have a good deal of experience.<br />
<br />
'''Expected Results''': Ported Float16 color spaces to AVX, extended Vc library to support int16 AVX2 instructions and adopted it in Krita<br />
<br />
'''Knowledge Prerequisite''': C++, SEE/AVX (read [http://www.intel.eu/content/www/eu/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html Intel's manual])<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log)<br />
<br />
==== Project: Partial canvas updates and region of interest (performance optimization for huge (20k+) canvases) ====<br />
<br />
'''Brief Explanation''': We already have an optimization for huge canvases, which is called Instant Preview. But it woks only when the user has the canvas zoomed out to fit the screen. There are some usecases, when the user wants to work with a small "working area" of a huge image and he doesn't care what happens with the rest of the image. This project is targeted to optimize this case.<br />
<br />
'''Expected Results''': By the end of the summer we expect these features to be implemented:<br />
* Partial updates in openGL canvas. Right now we redraw all the image textures in every frame, which is not needed after porting to Qt5.<br />
* Region of Intereset (ROI) in KisImage. Updates should be reordered and the priority should be given to the areas that are currently visible to the user<br />
* Work Area Tool. The user is be able to define the area, where he would like to work in. The updates for other parts of the image are skipped until the user exits this special mode.<br />
* (if there is time) Optimize textures loading to use RIO as well. Theoretically, we can just skip uploading of the tiles that are not visible on the screen at the moment.<br />
<br />
'''Knowledge Prerequisite''': C++, OpenGL<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log), Julian Thijssen (IRC: Nimmy)<br />
<br />
==== Project: Add 3D Painting Assistants ====<br />
<br />
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.<br />
<br />
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp<br />
<br />
'''Mentor''': Julian Thijssen (IRC: Nimmy)<br />
<br />
=== KDE Student Programs ===<br />
<br />
KDE Student Programs is the working group responsible for running Season of KDE and managing KDE's participation in Google Summer of Code, Google Code-In, and other mentorship programmes.<br />
<br />
==== Project: A new Season of KDE Website ====<br />
<br />
'''Brief explanation''': Season of KDE will need a new website to make managing the project easier for us. The core feature set that we're looking to have comprises:<br />
<br />
* Student applications on the website<br />
* Mentors can mark themselves interested in projects during the application phase<br />
* Org admins will create slots and assign projects and mentors to slots<br />
* Manage mid-term evaluations and results<br />
* Bulk data export and import<br />
<br />
For maintainability by the rest of KDE we'd like the app to be in Python (Tornado or a WSGI framework). It would also be nice if the app was an SPA riding on top of a REST API server so we can have command-line tools interacting with the server as well.<br />
<br />
'''Expected results''': Easier project administration for KDE.<br />
<br />
'''Knowledge Prerequisite''': Python, Tornado/WSGI, LDAP, full-stack web development, Single-Page applications.<br />
<br />
'''Mentor''': Boudhayan Gupta <bgupta@kde.org>, BaloneyGeek on IRC<br />
<br />
=== GCompris ===<br />
==== Project: finishing started activities ====<br />
'''Brief explanation''': GCompris is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originally written in Gtk+ it's development team started to rewrite it from scratch in Qt Quick.<br />
<br />
'''Expected results''':<br />
The aim of this year is to complete and getting merged activities that were started but have not been finished. You can find a list of tasks that you can work on at https://phabricator.kde.org/T7498. First phase is to check what is missing to be integrated (on code and graphic side) and then to complete them. You can find at https://cgit.kde.org/gcompris.git/refs/heads the list of the current branches (some of them need to be dropped, so contact us before starting working on one of them).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Continuing an activity already started or rewriting from scratch is something you have to check before writing your application. Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Johnny Jazeix (IRC: JohnnyJ), Divyam Madaan (IRC: dmadaan), Rudra Nil Basu (IRC: rudra)<br />
<br />
=== KDE Partition Manager ===<br />
==== Project: finishing KAuth support ====<br />
'''Brief explanation''': KDE Partition Manager is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Expected results''':<br />
Last year a lot of work was done to make KDE Partition Manager not to start as root and use KAuth to elevate privileges. The aim of this project is to finish required refactoring and make sure everything still works.<br />
<br />
The two main issues are:<br />
<br />
SMART support needs to be ported from (unmaitained) libatasmart library to calling smartctl command. This task is likely to be fairly easy.<br />
<br />
KDE Partition Manager operation runner should be refactored, instead of calling KAuth helper multiple times to run a single command it has to prepare a list of all commands and their inputs and call KAuth helper once. This needs some refactoring in how partition manager reads and writes disk data (e.g. when moving/copying/backing up or restoring partition). In particular we don't want to transfer all the disk data back from the helper to the main application and back to the helper as DBus transport is fairly slow.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be able to build the KPMcore and KDE Partition Manager from source.<br />
<br />
* Knowledge of C++ / Qt (No knowledge of KDE Frameworks is required).<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#kde-devel or #calamares).<br />
<br />
'''Mentors''': Andrius Štikonas (IRC:stikonas)<br />
<br />
=== Kopete ===<br />
<br />
==== Project: Write tests and Improve protocol support ====<br />
<br />
'''Brief explanation''': Kopete is an instant messaging client that has the modular architecture and supports many messaging services with useful plugins to complement them. <br />
<br />
'''Expected results''':<br />
The aim of this project is to fix the bugs due to porting and improve the frontend and the test coverage.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be interested in test-driven development.<br />
<br />
* Be familiar with the codebase of KDE in general.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
<br />
Get in touch with us on mailing-list and start hacking KDE and fix bugs. Teams of two people is preferred for this project as it is a lot of work :)<br />
<br />
You can contact on IRC also but it is better to discuss over mailing list as not many people are in IRC on #kopete channel.<br />
<br />
'''Mentors''': Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)<br />
<br />
=== Documentation ===<br />
<br />
==== Project [for Season of KDE only]: Verify and update the various documentation ====<br />
<br />
'''Brief explanation:''' If you have been in and around KDE for some time you might have noticed some changes in the documentation, well here is your chance is to improve them. Documentation can always use some iterations and revisits. Your task is to understand the challenges that a beginner might and write advice for them. Your speed will depend on your familiarity with KDE infrastructure.<br />
<br />
'''Expected results:''' Better documentation. <br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt, and good writing skills :)<br />
<br />
'''Mentor:''' Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2018/Ideas&diff=78901GSoC/2018/Ideas2017-12-14T22:37:25Z<p>Stikonas: /* Project: finishing KAuth support */</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoc Instructions]], [[../../2016/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 may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being 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.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or other image'''<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 />
===Your Own Idea ===<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 />
'''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 />
=== Krita ===<br />
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
We also expect prospective students to submit at least three patchs for bugs or wishes or small features. We want to know how good you are!<br />
<br />
==== Project: Implement a Lockfree Hashtable for Krita's Tile Manager ====<br />
<br />
'''Brief explanation''': This is a hard-core project, only suitable for someone with deep knowledge of the problems of designing multi-threaded software. It involves Krita's core datamodel, where the tiles that compose image data are managed. the KisTileHashTable currently uses a QReadWriteLock to manage access to the tiles. This is one of the last bottlenecks when painting and recomposing the image projection. The goal of this project is to remove that lock and replace it with a lockless design. Since this touches the very core of Krita, a thorough test plan is essential.<br />
<br />
'''Expected results''': No bottlenecks anymore! <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, threads, locks.<br />
<br />
'''Mentor''': Dmitry Kazakov (dmkitryK|log on irc)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''Brief Explanation''': In Krita, you can already add curves that could be applied to some properties of a layer, like opactity, 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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
'''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.<br />
<br />
'''Expected Results''': A revampted and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)<br />
<br />
==== Project: Analysis of thoroughput of Krita Blending Modes and porting them to AVX2 ====<br />
<br />
'''Brief Explanation''': Blending modes is the hottest piece of code in Krita. It should process gigabytes of data per second, therefore it should be extremely optimized. Some of its parts are already optimized to use AVX instructions, but some (float16 color spaces) are not. We need to port the rest of the color spaces to AVX and make a research into the possibilities of using AXV2 instructions directly (int16 instructions). It might happen that you will have to extend VC library to get full AVX support. This is another hard-core project only suitable if you have a good deal of experience.<br />
<br />
'''Expected Results''': Ported Float16 color spaces to AVX, extended Vc library to support int16 AVX2 instructions and adopted it in Krita<br />
<br />
'''Knowledge Prerequisite''': C++, SEE/AVX (read [http://www.intel.eu/content/www/eu/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html Intel's manual])<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log)<br />
<br />
==== Project: Partial canvas updates and region of interest (performance optimization for huge (20k+) canvases) ====<br />
<br />
'''Brief Explanation''': We already have an optimization for huge canvases, which is called Instant Preview. But it woks only when the user has the canvas zoomed out to fit the screen. There are some usecases, when the user wants to work with a small "working area" of a huge image and he doesn't care what happens with the rest of the image. This project is targeted to optimize this case.<br />
<br />
'''Expected Results''': By the end of the summer we expect these features to be implemented:<br />
* Partial updates in openGL canvas. Right now we redraw all the image textures in every frame, which is not needed after porting to Qt5.<br />
* Region of Intereset (ROI) in KisImage. Updates should be reordered and the priority should be given to the areas that are currently visible to the user<br />
* Work Area Tool. The user is be able to define the area, where he would like to work in. The updates for other parts of the image are skipped until the user exits this special mode.<br />
* (if there is time) Optimize textures loading to use RIO as well. Theoretically, we can just skip uploading of the tiles that are not visible on the screen at the moment.<br />
<br />
'''Knowledge Prerequisite''': C++, OpenGL<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log), Julian Thijssen (IRC: Nimmy)<br />
<br />
==== Project: Add 3D Painting Assistants ====<br />
<br />
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.<br />
<br />
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp<br />
<br />
'''Mentor''': Julian Thijssen (IRC: Nimmy)<br />
<br />
=== KDE Student Programs ===<br />
<br />
KDE Student Programs is the working group responsible for running Season of KDE and managing KDE's participation in Google Summer of Code, Google Code-In, and other mentorship programmes.<br />
<br />
==== Project: A new Season of KDE Website ====<br />
<br />
'''Brief explanation''': Season of KDE will need a new website to make managing the project easier for us. The core feature set that we're looking to have comprises:<br />
<br />
* Student applications on the website<br />
* Mentors can mark themselves interested in projects during the application phase<br />
* Org admins will create slots and assign projects and mentors to slots<br />
* Manage mid-term evaluations and results<br />
* Bulk data export and import<br />
<br />
For maintainability by the rest of KDE we'd like the app to be in Python (Tornado or a WSGI framework). It would also be nice if the app was an SPA riding on top of a REST API server so we can have command-line tools interacting with the server as well.<br />
<br />
'''Expected results''': Easier project administration for KDE.<br />
<br />
'''Knowledge Prerequisite''': Python, Tornado/WSGI, LDAP, full-stack web development, Single-Page applications.<br />
<br />
'''Mentor''': Boudhayan Gupta <bgupta@kde.org>, BaloneyGeek on IRC<br />
<br />
=== GCompris ===<br />
==== Project: finishing started activities ====<br />
'''Brief explanation''': GCompris is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originally written in Gtk+ it's development team started to rewrite it from scratch in Qt Quick.<br />
<br />
'''Expected results''':<br />
The aim of this year is to complete and getting merged activities that were started but have not been finished. You can find a list of tasks that you can work on at https://phabricator.kde.org/T7498. First phase is to check what is missing to be integrated (on code and graphic side) and then to complete them. You can find at https://cgit.kde.org/gcompris.git/refs/heads the list of the current branches (some of them need to be dropped, so contact us before starting working on one of them).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Continuing an activity already started or rewriting from scratch is something you have to check before writing your application. Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Johnny Jazeix (IRC: JohnnyJ), Divyam Madaan (IRC: dmadaan), Rudra Nil Basu (IRC: rudra)<br />
<br />
=== KDE Partition Manager ===<br />
==== Project: finishing KAuth support ====<br />
'''Brief explanation''': KDE Partition Manager is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Expected results''':<br />
Last year a lot of work was done to make KDE Partition Manager not to start as root and use KAuth to elevate privileges. The aim of this project is to finish required refactoring and make sure everything still works.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be able to build the KPMcore and KDE Partition Manager from source.<br />
<br />
* Knowledge of C++ / Qt (No knowledge of KDE Frameworks is required).<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#kde-devel or #calamares).<br />
<br />
'''Mentors''': Andrius Štikonas (IRC:stikonas)<br />
<br />
=== Kopete ===<br />
<br />
==== Project: Write tests and Improve protocol support ====<br />
<br />
'''Brief explanation''': Kopete is an instant messaging client that has the modular architecture and supports many messaging services with useful plugins to complement them. <br />
<br />
'''Expected results''':<br />
The aim of this project is to fix the bugs due to porting and improve the frontend and the test coverage.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be interested in test-driven development.<br />
<br />
* Be familiar with the codebase of KDE in general.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
<br />
Get in touch with us on mailing-list and start hacking KDE and fix bugs. Teams of two people is preferred for this project as it is a lot of work :)<br />
<br />
You can contact on IRC also but it is better to discuss over mailing list as not many people are in IRC on #kopete channel.<br />
<br />
'''Mentors''': Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)<br />
<br />
=== Documentation ===<br />
<br />
==== Project [for Season of KDE only]: Verify and update the various documentation ====<br />
<br />
'''Brief explanation:''' If you have been in and around KDE for some time you might have noticed some changes in the documentation, well here is your chance is to improve them. Documentation can always use some iterations and revisits. Your task is to understand the challenges that a beginner might and write advice for them. Your speed will depend on your familiarity with KDE infrastructure.<br />
<br />
'''Expected results:''' Better documentation. <br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt, and good writing skills :)<br />
<br />
'''Mentor:''' Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)</div>Stikonashttps://community.kde.org/index.php?title=GSoC/2018/Ideas&diff=78894GSoC/2018/Ideas2017-12-10T19:00:40Z<p>Stikonas: KPM GSoC idea</p>
<hr />
<div>[[File:Mascot konqi-app-presentation.png|thumbnail|right|[[Konqi]] is giving a lesson!]]<br />
See also: [[../../|GSoc Instructions]], [[../../2016/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 may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being 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.<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 />
==== Project: ====<br />
<br />
'''If appropriate, screenshot or other image'''<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 />
===Your Own Idea ===<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 />
'''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 />
=== Krita ===<br />
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
We also expect prospective students to submit at least three patchs for bugs or wishes or small features. We want to know how good you are!<br />
<br />
==== Project: Implement a Lockfree Hashtable for Krita's Tile Manager ====<br />
<br />
'''Brief explanation''': This is a hard-core project, only suitable for someone with deep knowledge of the problems of designing multi-threaded software. It involves Krita's core datamodel, where the tiles that compose image data are managed. the KisTileHashTable currently uses a QReadWriteLock to manage access to the tiles. This is one of the last bottlenecks when painting and recomposing the image projection. The goal of this project is to remove that lock and replace it with a lockless design. Since this touches the very core of Krita, a thorough test plan is essential.<br />
<br />
'''Expected results''': No bottlenecks anymore! <br />
<br />
'''Knowledge Prerequisite''': C++, Qt, threads, locks.<br />
<br />
'''Mentor''': Dmitry Kazakov (dmkitryK|log on irc)<br />
<br />
==== Project: Extending Animation Support for curves ====<br />
<br />
'''Brief Explanation''': In Krita, you can already add curves that could be applied to some properties of a layer, like opactity, 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.<br />
<br />
'''Expected results''':<br />
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer<br />
* Implementation of the actual rendering of the properties in the frames<br />
* Saving of these settings<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++ and Qt<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)<br />
<br />
==== Project: Taking the Shape Brush to the next level ====<br />
'''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.<br />
<br />
'''Expected Results''': A revampted and exciting shapes brush<br />
<br />
'''Knowledge Prerequisite''':<br />
* C++, Qt, Krita<br />
<br />
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)<br />
<br />
==== Project: Analysis of thoroughput of Krita Blending Modes and porting them to AVX2 ====<br />
<br />
'''Brief Explanation''': Blending modes is the hottest piece of code in Krita. It should process gigabytes of data per second, therefore it should be extremely optimized. Some of its parts are already optimized to use AVX instructions, but some (float16 color spaces) are not. We need to port the rest of the color spaces to AVX and make a research into the possibilities of using AXV2 instructions directly (int16 instructions). It might happen that you will have to extend VC library to get full AVX support. This is another hard-core project only suitable if you have a good deal of experience.<br />
<br />
'''Expected Results''': Ported Float16 color spaces to AVX, extended Vc library to support int16 AVX2 instructions and adopted it in Krita<br />
<br />
'''Knowledge Prerequisite''': C++, SEE/AVX (read [http://www.intel.eu/content/www/eu/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html Intel's manual])<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log)<br />
<br />
==== Project: Partial canvas updates and region of interest (performance optimization for huge (20k+) canvases) ====<br />
<br />
'''Brief Explanation''': We already have an optimization for huge canvases, which is called Instant Preview. But it woks only when the user has the canvas zoomed out to fit the screen. There are some usecases, when the user wants to work with a small "working area" of a huge image and he doesn't care what happens with the rest of the image. This project is targeted to optimize this case.<br />
<br />
'''Expected Results''': By the end of the summer we expect these features to be implemented:<br />
* Partial updates in openGL canvas. Right now we redraw all the image textures in every frame, which is not needed after porting to Qt5.<br />
* Region of Intereset (ROI) in KisImage. Updates should be reordered and the priority should be given to the areas that are currently visible to the user<br />
* Work Area Tool. The user is be able to define the area, where he would like to work in. The updates for other parts of the image are skipped until the user exits this special mode.<br />
* (if there is time) Optimize textures loading to use RIO as well. Theoretically, we can just skip uploading of the tiles that are not visible on the screen at the moment.<br />
<br />
'''Knowledge Prerequisite''': C++, OpenGL<br />
<br />
'''Mentor''': Dmitry Kazakov (IRC: dmitryk|log), Julian Thijssen (IRC: Nimmy)<br />
<br />
==== Project: Add 3D Painting Assistants ====<br />
<br />
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.<br />
<br />
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.<br />
<br />
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp<br />
<br />
'''Mentor''': Julian Thijssen (IRC: Nimmy)<br />
<br />
=== KDE Student Programs ===<br />
<br />
KDE Student Programs is the working group responsible for running Season of KDE and managing KDE's participation in Google Summer of Code, Google Code-In, and other mentorship programmes.<br />
<br />
==== Project: A new Season of KDE Website ====<br />
<br />
'''Brief explanation''': Season of KDE will need a new website to make managing the project easier for us. The core feature set that we're looking to have comprises:<br />
<br />
* Student applications on the website<br />
* Mentors can mark themselves interested in projects during the application phase<br />
* Org admins will create slots and assign projects and mentors to slots<br />
* Manage mid-term evaluations and results<br />
* Bulk data export and import<br />
<br />
For maintainability by the rest of KDE we'd like the app to be in Python (Tornado or a WSGI framework). It would also be nice if the app was an SPA riding on top of a REST API server so we can have command-line tools interacting with the server as well.<br />
<br />
'''Expected results''': Easier project administration for KDE.<br />
<br />
'''Knowledge Prerequisite''': Python, Tornado/WSGI, LDAP, full-stack web development, Single-Page applications.<br />
<br />
'''Mentor''': Boudhayan Gupta <bgupta@kde.org>, BaloneyGeek on IRC<br />
<br />
=== GCompris ===<br />
==== Project: finishing started activities ====<br />
'''Brief explanation''': GCompris is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originally written in Gtk+ it's development team started to rewrite it from scratch in Qt Quick.<br />
<br />
'''Expected results''':<br />
The aim of this year is to complete and getting merged activities that were started but have not been finished. You can find a list of tasks that you can work on at https://phabricator.kde.org/T7498. First phase is to check what is missing to be integrated (on code and graphic side) and then to complete them. You can find at https://cgit.kde.org/gcompris.git/refs/heads the list of the current branches (some of them need to be dropped, so contact us before starting working on one of them).<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
Be interested in children’s education<br />
<br />
Be familiar with GCompris concept and content<br />
<br />
Basic knowledge in a programming language (a 1 year school course is enough)<br />
<br />
Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide''':<br />
Continuing an activity already started or rewriting from scratch is something you have to check before writing your application. Provide a timeline in your application. If you haven't contributed yet please read http://gcompris.net/wiki/An_exercise_for_new_contributors and http://gcompris.net/wiki/Reviewing_an_activity<br />
<br />
There are several info in the wiki: http://gcompris.net/wiki/Developer%27s_corner.<br />
<br />
''Feel free to contact us either on irc or by mail (gcompris-devel@kde.org)''<br />
<br />
'''Mentors''': Johnny Jazeix (IRC: JohnnyJ), Divyam Madaan (IRC: dmadaan), Rudra Nil Basu (IRC: rudra)<br />
<br />
=== KDE Partition Manager ===<br />
==== Project: finishing KAuth support ====<br />
'''Brief explanation''': KDE Partition Manager is a utility program to help you manage the disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, resize without losing data, backup and restore partitions.<br />
<br />
'''Expected results''':<br />
Last year a lot of work was done to make KDE Partition Manager not to start as root and use KAuth to elevate privileges. The aim of this project is to finish required refactoring and make sure everything still works.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be able to build the KPMcore and KDE Partition Manager from source.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
Get in touch on IRC (#kde-devel or #calamares).<br />
<br />
'''Mentors''': Andrius Štikonas (IRC:stikonas)<br />
<br />
<br />
=== Kopete ===<br />
<br />
==== Project: Write tests and Improve protocol support ====<br />
<br />
'''Brief explanation''': Kopete is an instant messaging client that has the modular architecture and supports many messaging services with useful plugins to complement them. <br />
<br />
'''Expected results''':<br />
The aim of this project is to fix the bugs due to porting and improve the frontend and the test coverage.<br />
<br />
'''Knowledge Prerequisite''':<br />
<br />
* Be interested in test-driven development.<br />
<br />
* Be familiar with the codebase of KDE in general.<br />
<br />
* Knowledge of C++ / Qt.<br />
<br />
'''Application guide''':<br />
<br />
Get in touch with us on mailing-list and start hacking KDE and fix bugs. Teams of two people is preferred for this project as it is a lot of work :)<br />
<br />
You can contact on IRC also but it is better to discuss over mailing list as not many people are in IRC on #kopete channel.<br />
<br />
'''Mentors''': Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)<br />
<br />
=== Documentation ===<br />
<br />
==== Project [for Season of KDE only]: Verify and update the various documentation ====<br />
<br />
'''Brief explanation:''' If you have been in and around KDE for some time you might have noticed some changes in the documentation, well here is your chance is to improve them. Documentation can always use some iterations and revisits. Your task is to understand the challenges that a beginner might and write advice for them. Your speed will depend on your familiarity with KDE infrastructure.<br />
<br />
'''Expected results:''' Better documentation. <br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt, and good writing skills :)<br />
<br />
'''Mentor:''' Vijay <vijaykrishnavanshi@gmail.com> (vijay_ on IRC)</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=78609Applications/17.12 repo drop list kdelibs42017-10-01T22:46:48Z<p>Stikonas: /* juk */</p>
<hr />
<div>=Repos WITHOUT frameworks branch which CAN be dropped=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==kaccessible==<br />
*Qt5 provides by default a bridge from the Qt accessibility API to At-Spi<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
=Repos WITHOUT frameworks branch=<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*** [tosky] No, there is an open feature request: https://bugzilla.gnome.org/show_bug.cgi?id=348330<br />
*Who do we ask if they want to port it?<br />
<br />
==kremotecontrol==<br />
Frontend for remote controls<br />
<br />
*Who do we ask if they want to port it?<br />
**kde-devel@kde.org<br />
**kde-utils-devel@kde.org<br />
**Anyone else?<br />
<br />
* There was already a thread on kde-utils-devel (https://mail.kde.org/pipermail/kde-utils-devel/2017-July/004049.html) to move it to unmaintained.<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk replacing in files<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
** [tosky] unfortunately [https://mail.kde.org/pipermail/release-team/2017-September/010595.html he can't help with the port right now]<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==juk [DONE]==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne reached out to github.com/KapiX/juk/commits/kf5, imported it as "frameworks" and started cleaning it.<br />
***issues solved, frameworks was merged into master on October 1st<br />
<br />
==kget==<br />
*What is the status?<br />
** [mrnhmath] unfinished, some work done<br />
<br />
==kimagemapeditor==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
<br />
==kmouth [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
<br />
==kopete==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
<br />
==ksirk [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli [DONE]==<br />
*What is the status?<br />
** <s>[tosky] it starts, but tiles are not loaded; debug needed</s><br />
***<s>[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.</s><br />
** <s>[stikonas] It starts now and tiles are loaded.</s><br />
**issues solved, frameworks was merged into master on September 1st<br />
<br />
==sweeper [DONE]==<br />
*What is the status?<br />
<s>One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.</s><br />
**Frameworks branch was merged to master on 26 Aug.<br />
<br />
==zeroconf-ioslave [DONE]==<br />
*What is the status?<br />
** [tosky] Found a way to test thanks to avahi-publish (zeroconf-ioslave recognizes webdav, ssh, sftp, ftp, and nfs).<br />
** frameworks merged into master on August 28th.<br />
<br />
=Weird repos=<br />
==kmix [DONE]==<br />
<s>KF5 is in master but not default</s><br />
*<s>Can we make KF5 default?</s><br />
**<s>[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.</s><br />
**<s>[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.</s><br />
*[tosky]Discussed with Jonathan Marten, frameworks merged into master on September 19th.<br />
<br />
==umbrello [DONE?]==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=78550Applications/17.12 repo drop list kdelibs42017-09-19T20:55:17Z<p>Stikonas: /* kfilereplace */</p>
<hr />
<div>=Repos WITHOUT frameworks branch which CAN be dropped=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==kaccessible==<br />
*Qt5 provides by default a bridge from the Qt accessibility API to At-Spi<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
=Repos WITHOUT frameworks branch=<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*** [tosky] No, there is an open feature request: https://bugzilla.gnome.org/show_bug.cgi?id=348330<br />
*Who do we ask if they want to port it?<br />
<br />
==kremotecontrol==<br />
Frontend for remote controls<br />
<br />
*Who do we ask if they want to port it?<br />
**kde-devel@kde.org<br />
**kde-utils-devel@kde.org<br />
**Anyone else?<br />
<br />
* There was already a thread on kde-utils-devel (https://mail.kde.org/pipermail/kde-utils-devel/2017-July/004049.html) to move it to unmaintained.<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk replacing in files<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
** [tosky] unfortunately [https://mail.kde.org/pipermail/release-team/2017-September/010595.html he can't help with the port right now]<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==juk==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne reached out to github.com/KapiX/juk/commits/kf5, imported it as "frameworks" and started cleaning it.<br />
<br />
==kget==<br />
*What is the status?<br />
** [mrnhmath] unfinished, some work done<br />
<br />
==kimagemapeditor==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
<br />
==kmouth [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
<br />
==kopete==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
<br />
==ksirk [DONE]==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli [DONE]==<br />
*What is the status?<br />
** <s>[tosky] it starts, but tiles are not loaded; debug needed</s><br />
***<s>[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.</s><br />
** <s>[stikonas] It starts now and tiles are loaded.</s><br />
**issues solved, frameworks was merged into master on September 1st<br />
<br />
==sweeper [DONE]==<br />
*What is the status?<br />
<s>One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.</s><br />
**Frameworks branch was merged to master on 26 Aug.<br />
<br />
==zeroconf-ioslave [DONE]==<br />
*What is the status?<br />
** [tosky] Found a way to test thanks to avahi-publish (zeroconf-ioslave recognizes webdav, ssh, sftp, ftp, and nfs).<br />
** frameworks merged into master on August 28th.<br />
<br />
=Weird repos=<br />
==kmix [DONE]==<br />
<s>KF5 is in master but not default</s><br />
*<s>Can we make KF5 default?</s><br />
**<s>[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.</s><br />
**<s>[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.</s><br />
*[tosky]Discussed with Jonathan Marten, frameworks merged into master on September 19th.<br />
<br />
==umbrello [DONE?]==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=78152Applications/17.12 repo drop list kdelibs42017-08-24T16:51:24Z<p>Stikonas: /* palapeli */</p>
<hr />
<div>=Repos WITHOUT frameworks branch=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==juk==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne<br />
**sandsmark<br />
**kde-multimedia@kde.org<br />
**kde-devel@kde.org<br />
*** [cfeck] There is initial porting work at github.com/KapiX/juk/commits/kf5<br />
***mpyne took a stab at a rewrite approach at https://bitbucket.org/mpyne/jukng<br />
*** [cfeck] Are we able to merge work from github?<br />
**** [mpyne] I'll take a look at the work but there's no reason that we can't take it as long as author is willing and code isn't completely insane.<br />
**** [mpyne] I've taken a look and the work looks reasonable. I had to make a few changes to get it to build for me but it does run and at least startup for me.<br />
*** [tosky] the author came to #kde-devel few weeks ago, so maybe we can reping him<br />
<br />
==kaccessible==<br />
*Question: Do we need this or Qt5 accessibility is all we need in this regard?<br />
<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*Who do we ask if they want to port it?<br />
<br />
==kremotecontrol==<br />
Frontend for remote controls<br />
<br />
*Who do we ask if they want to port it?<br />
**kde-devel@kde.org<br />
**kde-utils-devel@kde.org<br />
**Anyone else?<br />
<br />
* There was already a thread on kde-utils-devel (https://mail.kde.org/pipermail/kde-utils-devel/2017-July/004049.html) to move it to unmaintained.<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk file renaming<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==kget==<br />
*What is the status?<br />
** [mrnhmath] unfinished, dev not active since 2014 https://forum.kde.org/viewtopic.php?t=123484<br />
<br />
==kimagemapeditor==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
<br />
==kmouth==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
<br />
==kopete==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
<br />
==ksirk==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli==<br />
*What is the status?<br />
** [tosky] it starts, but tiles are not loaded; debug needed<br />
***[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.<br />
** [stikonas] It starts now and tiles are loaded.<br />
<br />
==sweeper==<br />
*What is the status?<br />
:- One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.<br />
<br />
==zeroconf-ioslave==<br />
*What is the status?<br />
** [tosky] it starts, but I found it difficult to test zeroconf in general, so I'm not sure if it works or not.<br />
<br />
=Weird repos=<br />
==kmix==<br />
KF5 is in master but not default<br />
*Can we make KF5 default?<br />
**[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.<br />
**[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.<br />
<br />
==umbrello==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=78151Applications/17.12 repo drop list kdelibs42017-08-24T16:51:11Z<p>Stikonas: /* palapeli */</p>
<hr />
<div>=Repos WITHOUT frameworks branch=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==juk==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne<br />
**sandsmark<br />
**kde-multimedia@kde.org<br />
**kde-devel@kde.org<br />
*** [cfeck] There is initial porting work at github.com/KapiX/juk/commits/kf5<br />
***mpyne took a stab at a rewrite approach at https://bitbucket.org/mpyne/jukng<br />
*** [cfeck] Are we able to merge work from github?<br />
**** [mpyne] I'll take a look at the work but there's no reason that we can't take it as long as author is willing and code isn't completely insane.<br />
**** [mpyne] I've taken a look and the work looks reasonable. I had to make a few changes to get it to build for me but it does run and at least startup for me.<br />
*** [tosky] the author came to #kde-devel few weeks ago, so maybe we can reping him<br />
<br />
==kaccessible==<br />
*Question: Do we need this or Qt5 accessibility is all we need in this regard?<br />
<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*Who do we ask if they want to port it?<br />
<br />
==kremotecontrol==<br />
Frontend for remote controls<br />
<br />
*Who do we ask if they want to port it?<br />
**kde-devel@kde.org<br />
**kde-utils-devel@kde.org<br />
**Anyone else?<br />
<br />
* There was already a thread on kde-utils-devel (https://mail.kde.org/pipermail/kde-utils-devel/2017-July/004049.html) to move it to unmaintained.<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk file renaming<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
** [cfeck] As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==kget==<br />
*What is the status?<br />
** [mrnhmath] unfinished, dev not active since 2014 https://forum.kde.org/viewtopic.php?t=123484<br />
<br />
==kimagemapeditor==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
<br />
==kmouth==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
<br />
==kopete==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
<br />
==ksirk==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli==<br />
*What is the status?<br />
** [tosky] it starts, but tiles are not loaded; debug needed<br />
***[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.<br />
<br />
** [stikonas] It starts now and tiles are loaded.<br />
<br />
==sweeper==<br />
*What is the status?<br />
:- One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.<br />
<br />
==zeroconf-ioslave==<br />
*What is the status?<br />
** [tosky] it starts, but I found it difficult to test zeroconf in general, so I'm not sure if it works or not.<br />
<br />
=Weird repos=<br />
==kmix==<br />
KF5 is in master but not default<br />
*Can we make KF5 default?<br />
**[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.<br />
**[asturm] long-term testing (alsa, no pulseaudio) has revealed no issues for me.<br />
<br />
==umbrello==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.12_repo_drop_list_kdelibs4&diff=78035Applications/17.12 repo drop list kdelibs42017-08-17T08:31:17Z<p>Stikonas: /* palapeli */</p>
<hr />
<div>=Repos WITHOUT frameworks branch=<br />
<br />
==jovie==<br />
text to speech daemon<br />
<br />
*Ignore. it is meant to be replaced by QtSpeech; see few blog posts from jpwhiting:<br />
** https://jpwhiting.blogspot.cz/2015/02/qtspeech-progress.html<br />
** https://jpwhiting.blogspot.cz/2014/10/accessibility-is-alive-qtspeech.html<br />
<br />
==juk==<br />
Music player<br />
<br />
*Who do we ask if they want to port it?<br />
**mpyne<br />
**sandsmark<br />
**kde-multimedia@kde.org<br />
**kde-devel@kde.org<br />
***There is initial porting work at github.com/KapiX/juk/commits/kf5<br />
***mpyne took a stab at a rewrite approach at https://bitbucket.org/mpyne/jukng<br />
***Are we able to merge work from github?<br />
**** [mpyne] I'll take a look at the work but there's no reason that we can't take it as long as author is willing and code isn't completely insane.<br />
*** [tosky] the author came to #kde-devel few weeks ago, so maybe we can reping him<br />
<br />
==kaccessible==<br />
*Question: Do we need this or Qt5 accessibility is all we need in this regard?<br />
<br />
<br />
==kppp==<br />
*One user "complained" at Gardening mailing list<br />
**https://mail.kde.org/pipermail/kde-gardening/2017-July/000142.html<br />
**can't Network Manager / Modem Manager do this?<br />
*Who do we ask if they want to port it?<br />
<br />
==kremotecontrol==<br />
Frontend for remote controls<br />
<br />
*Who do we ask if they want to port it?<br />
**kde-devel@kde.org<br />
**kde-utils-devel@kde.org<br />
**Anyone else?<br />
<br />
* There was already a thread on kde-utils-devel (https://mail.kde.org/pipermail/kde-utils-devel/2017-July/004049.html) to move it to unmaintained.<br />
<br />
==ksaneplugin==<br />
*Not important, let it die <br />
**https://mail.kde.org/pipermail/release-team/2017-August/010540.html<br />
<br />
<br />
==kfilereplace==<br />
Utility to assist with bulk file renaming<br />
<br />
*Who do we ask if they want to port it?<br />
** [scarpino] I can do the port if none step up.<br />
<br />
==klinkstatus==<br />
Tool to check the current status of links in a web page<br />
<br />
*Who do we ask if they want to port it?<br />
**As far as I remember, the original author (Paulo) was interested to do (or help with) the port<br />
<br />
=Repos WITH frameworks branch=<br />
<br />
==kget==<br />
*What is the status?<br />
<br />
==kimagemapeditor==<br />
*What is the status?<br />
** [tosky] mostly working, requires some testing from people who used it more than me; a lot of kdelibs4support to be removed, but not a blocker<br />
<br />
==kmouth==<br />
*Master branch is KF5-based as of now, needs testing<br />
** Past discussion about the stability of QtSpeech: discussed on the [https://mail.kde.org/pipermail/distributions/2017-July/000233.html distribution list]; apparently going stable with Qt 5.10.<br />
<br />
==kolf==<br />
*What is the status?<br />
** [tosky] it seems to be working; Frederik Schwarzer expressed some concerns [https://mail.kde.org/pipermail/kde-games-devel/2017-April/013413.html while reviewing kdelibs4-based games] about the embedded copy of Box2D, maybe it can be removed, but maybe it's not a blocker for merging frameworks into master.<br />
<br />
==kopete==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
<br />
==kscd==<br />
*for some reason branch is called kf5<br />
*What is the status?<br />
** [tosky] mostly working, but requires more restesting; there is a pending patch for musicbrainz5 support, which is not strictly a blocker, but it should be cleaned (some cmake files can be rewritten in a simpler way, or reimported from their newer versions, or shared): https://git.reviewboard.kde.org/r/127196/<br />
<br />
==ksirk==<br />
*Master branch is KF5-based as of now, needs testing<br />
<br />
==palapeli==<br />
*What is the status?<br />
** [tosky] it starts, but tiles are not loaded; debug needed<br />
***[stikonas] one of the problems is due to the use of palapeli:// prefixes for file locations. QStandardPaths wouldn't work with it. Unfortunately it doesn't seem to be the only problem, I still wasn't able to get it to slice puzzles after I removed those.<br />
<br />
==sweeper==<br />
*What is the status?<br />
:- One review is open (https://phabricator.kde.org/D5677), after that the frameworks branch should be ready for merging into master.<br />
<br />
==zeroconf-ioslave==<br />
*What is the status?<br />
** [tosky] it starts, but I found it difficult to test zeroconf in general, so I'm not sure if it works or not.<br />
<br />
=Weird repos=<br />
==kmix==<br />
KF5 is in master but not default<br />
*Can we make KF5 default?<br />
**[tosky] a lot of work went into the pure KF5 branch ("frameworks") lately. With the last fixes by Jonathan Marten it should work; testing needed.<br />
<br />
==umbrello==<br />
KF5 is in master, but also has kdelibs4 code<br />
*Can we remove kdelibs4 code?</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.08_Release_Notes&diff=77258Applications/17.08 Release Notes2017-07-11T16:11:54Z<p>Stikonas: /* Tarballs that were based on kdelibs4 and are now KF5 based */ kreversi</p>
<hr />
<div>== Translations ==<br />
Since 17.04, the translations (messages, translated documentation, localized data) are<br />
included in the tarballs but *only* for Frameworks 5 applications.<br />
<br />
Translations for kdelibs4 applications and modules (like kdelibs4 itself and<br />
kde-runtime) are still shipped inside kde-l10n*.<br />
<br />
== Tarballs that join the KDE Applications release ==<br />
*<br />
<br />
== New tarballs ==<br />
*<br />
<br />
== Tarballs that were based on kdelibs4 and are now KF5 based ==<br />
* kmag<br />
* kmousetool<br />
* kgoldrunner<br />
* kigo<br />
* konquest<br />
* kreversi<br />
* ksnakeduel<br />
* kspaceduel<br />
* ksudoku<br />
* kubrick<br />
* lskat<br />
<br />
== Tarballs that we do not ship anymore ==<br />
*<br />
<br />
== Tarballs that have changed contents == <br />
* <br />
<br />
== Known issues ==<br />
*</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.08_Release_Notes&diff=77075Applications/17.08 Release Notes2017-06-24T21:37:22Z<p>Stikonas: kgoldrunner kf5</p>
<hr />
<div>== Translations ==<br />
Since 17.04, the translations (messages, translated documentation, localized data) are<br />
included in the tarballs but *only* for Frameworks 5 applications.<br />
<br />
Translations for kdelibs4 applications and modules (like kdelibs4 itself and<br />
kde-runtime) are still shipped inside kde-l10n*.<br />
<br />
== Tarballs that join the KDE Applications release ==<br />
*<br />
<br />
== New tarballs ==<br />
*<br />
<br />
== Tarballs that were based on kdelibs4 and are now KF5 based ==<br />
* kgoldrunner<br />
* kmag<br />
* kigo<br />
* konquest<br />
* ksnakeduel<br />
* kspaceduel<br />
* ksudoku<br />
* kubrick<br />
* lskat<br />
<br />
== Tarballs that we do not ship anymore ==<br />
*<br />
<br />
== Tarballs that have changed contents == <br />
* <br />
<br />
== Known issues ==<br />
*</div>Stikonashttps://community.kde.org/index.php?title=Applications/17.08_Release_Notes&diff=77042Applications/17.08 Release Notes2017-06-22T20:49:32Z<p>Stikonas: /* Tarballs that were based on kdelibs4 and are now KF5 based */ kubrick</p>
<hr />
<div>== Translations ==<br />
Since 17.04, the translations (messages, translated documentation, localized data) are<br />
included in the tarballs but *only* for Frameworks 5 applications.<br />
<br />
Translations for kdelibs4 applications and modules (like kdelibs4 itself and<br />
kde-runtime) are still shipped inside kde-l10n*.<br />
<br />
== Tarballs that join the KDE Applications release ==<br />
*<br />
<br />
== New tarballs ==<br />
*<br />
<br />
== Tarballs that were based on kdelibs4 and are now KF5 based ==<br />
* kmag<br />
* kigo<br />
* konquest<br />
* ksnakeduel<br />
* kspaceduel<br />
* ksudoku<br />
* kubrick<br />
* lskat<br />
<br />
== Tarballs that we do not ship anymore ==<br />
*<br />
<br />
== Tarballs that have changed contents == <br />
* <br />
<br />
== Known issues ==<br />
*</div>Stikonashttps://community.kde.org/index.php?title=KDEEdu/RouteToKF5&diff=40345KDEEdu/RouteToKF52014-11-17T14:37:05Z<p>Stikonas: </p>
<hr />
<div>* Porting notes available here: [[Frameworks/Porting_Notes|Porting Notes]]<br />
<br />
== Applications and Self-Contained Libraries ==<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|KAlgebra|<br />
* Analitza<br />
* ki18n<br />
* KConfigWidgets<br />
* KIOCore|Tier 3|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkDone|KAlgebra Mobile|<br />
* Analitza<br />
* KDeclarative (for KAlgebra Mobile, in Plasma integration mode)|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KTouch|<br />
* kdeclarative<br />
* plasma-framework (?)|Tier 3|Sebastian Gottfried|see frameworks branch}}<br />
{{FrameworkDone|Rocs|<br />
* Config<br />
* CoreAddons<br />
* Declarative<br />
* DocTools<br />
* I18n<br />
* ItemViews<br />
* TextEditor<br />
* XmlGui<br />
* Service<br />
|Tier 3|Andreas Cord-Landwehr|master branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Artikulate|<br />
* Config<br />
* ConfigWidgets<br />
* CoreAddons<br />
* Declarative<br />
* I18n<br />
* KIO<br />
* NewStuff<br />
* WidgetsAddons<br />
* XmlGui<br />
|Tier 3|Andreas Cord-Landwehr|frameworks branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Pairs|<br />
* KDeclarative<br />
* KArchive<br />
* KCoreAddons<br />
* XmlGui<br />
* Phonon|Tier 3|Marco Calignano|}}<br />
{{FrameworkDone|KHangman|<br />
* I18n<br />
* Crash<br />
* Completion<br />
* ConfigWidgets<br />
* KIO<br />
* NewStuff<br />
* Notifications<br />
* XmlGui<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkDone|Kanagram|<br />
* I18n<br />
* Crash<br />
* Sonnet<br />
* ConfigWidgets<br />
* Declarative<br />
* KIO<br />
* NewStuff<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkDone|Parley|<br />
* Config<br />
* CoreAddons<br />
* Crash<br />
* DocTools <br />
* I18n<br />
* KCMUtils<br />
* KHtml<br />
* KIO<br />
* Kross<br />
* NewStuff<br />
* Notifications<br />
* Sonnet<br />
* XmlGui<br />
|Tier 3|Andreas Xavier|<br />
* Scripts still not working<br />
}}<br />
{{FrameworkDone|Marble||Qt5-only||}}<br />
{{FrameworkDone|KGeography||Tier ?|David Gil|}}<br />
{{FrameworkInProgress|Cantor|<br />
* Archive<br />
* Config<br />
* CoreAddons<br />
* KDELibs4Support<br />
* NewStuff<br />
* Parts<br />
* TextEditor<br />
|Tier 3<br />
|Filipe Saraiva<br />
|Code in frameworks branch - work in progress}}<br />
{{FrameworkTodo|Khipu||Tier ?||}}<br />
{{FrameworkTodo|Kmplot||Tier ?||}}<br />
{{FrameworkTodo|Kalzium||Tier ?||}}<br />
{{FrameworkDone|KBruch|<br />
*Config<br />
*Crash<br />
*DocTools<br />
*I18n<br />
*WidgetsAddons<br />
*XmlGui<br />
|Tier 3||master branch}}<br />
{{FrameworkInProgress|Kig|<br />
* Parts<br />
* DocTools<br />
* I18n<br />
* TextEditor<br />
* IconThemes<br />
* ConfigWidgets<br />
* KDE4Support||David Narvaez|See frameworks branch}}<br />
{{FrameworkDone|Kiten||Tier ?|Reza Fatahilah Shah|See frameworks branch}}<br />
{{FrameworkInProgress|KStars|<br />
* Config<br />
* DocTools<br />
* GuiAddons<br />
* WidgetsAddons<br />
* NewStuff<br />
* DBusAddons<br />
* I18n<br />
* Init<br />
* JobWidgets<br />
* KIO<br />
* WindowSystem<br />
* XmlGui<br />
* Plotting<br />
* TextEditor<br />
* IconThemes|Tier 3|Jasem Mutlaq|See frameworks branch. Moon phase and whatsinteresting require porting}}<br />
{{FrameworkDone|Klettres|<br />
* Completion<br />
* DocTools<br />
* EmotIcons<br />
* ItemModels<br />
* I18n<br />
* KDE4Support<br />
* NewStuff|Tier 3 (4 with KDE4Support)|Laurent Navet|now in master branch}}<br />
{{FrameworkTodo|KTurtle||Tier ?||}}<br />
{{FrameworkInProgress|Step||Tier ?||see frameworks branch, someone did already a lot of porting work; state has to be evaluated}}<br />
{{FrameworkDone|KWordQuiz||Tier ?|<br />
Jeremy Whiting<br />
Inge Wallin|}}<br />
|}<br />
<br />
== Library Porting ==<br />
Porting status for all already self-contained libraries (those that do not require further splitting).<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|Analitza|Qt-only|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KQtQuickCharts|?|?|Sebastian Gottfried|See frameworks branch}}<br />
|}<br />
<br />
== LibKdeEdu Porting ==<br />
Libkdeedu contains different libraries that have to be split after porting.<br />
* Original repository: libkdeedu<br />
* Branch: frameworks<br />
* Developer: Vishesh Handa started, Jeremy Whiting finishing<br />
* Overall state: Done, some more tests could definitely be written though. Code is in libkeduvocdocument git repo.<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|libKdeEduVocDocument|I18n, KIOCore, Archive|Tier 3||}}<br />
<br />
|}</div>Stikonashttps://community.kde.org/index.php?title=KDEEdu/RouteToKF5&diff=40319KDEEdu/RouteToKF52014-11-14T15:00:03Z<p>Stikonas: KBruch</p>
<hr />
<div>* Porting notes available here: [[Frameworks/Porting_Notes|Porting Notes]]<br />
<br />
== Applications and Self-Contained Libraries ==<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|KAlgebra|<br />
* Analitza<br />
* ki18n<br />
* KConfigWidgets<br />
* KIOCore|Tier 3|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkDone|KAlgebra Mobile|<br />
* Analitza<br />
* KDeclarative (for KAlgebra Mobile, in Plasma integration mode)|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KTouch|<br />
* kdeclarative<br />
* plasma-framework (?)|Tier 3|Sebastian Gottfried|see frameworks branch}}<br />
{{FrameworkDone|Rocs|<br />
* Config<br />
* CoreAddons<br />
* Declarative<br />
* DocTools<br />
* I18n<br />
* ItemViews<br />
* TextEditor<br />
* XmlGui<br />
* Service<br />
|Tier 3|Andreas Cord-Landwehr|master branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Artikulate|<br />
* Config<br />
* ConfigWidgets<br />
* CoreAddons<br />
* Declarative<br />
* I18n<br />
* KIO<br />
* NewStuff<br />
* WidgetsAddons<br />
* XmlGui<br />
|Tier 3|Andreas Cord-Landwehr|frameworks branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Pairs|<br />
* KDeclarative<br />
* KArchive<br />
* KCoreAddons<br />
* XmlGui<br />
* Phonon|Tier 3|Marco Calignano|}}<br />
{{FrameworkDone|KHangman|<br />
* I18n<br />
* Crash<br />
* Completion<br />
* ConfigWidgets<br />
* KIO<br />
* NewStuff<br />
* Notifications<br />
* XmlGui<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkDone|Kanagram|<br />
* I18n<br />
* Crash<br />
* Sonnet<br />
* ConfigWidgets<br />
* Declarative<br />
* KIO<br />
* NewStuff<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkDone|Parley|<br />
* Config<br />
* CoreAddons<br />
* Crash<br />
* DocTools <br />
* I18n<br />
* KCMUtils<br />
* KHtml<br />
* KIO<br />
* Kross<br />
* NewStuff<br />
* Notifications<br />
* Sonnet<br />
* XmlGui<br />
|Tier 3|Andreas Xavier|<br />
* Scripts still not working<br />
}}<br />
{{FrameworkDone|Marble||Qt5-only||}}<br />
{{FrameworkDone|KGeography||Tier ?|David Gil|}}<br />
{{FrameworkInProgress|Cantor|<br />
* Archive<br />
* Config<br />
* CoreAddons<br />
* KDELibs4Support<br />
* NewStuff<br />
* Parts<br />
* TextEditor<br />
|Tier 3<br />
|Filipe Saraiva<br />
|Code in frameworks branch - work in progress}}<br />
{{FrameworkTodo|Khipu||Tier ?||}}<br />
{{FrameworkTodo|Kmplot||Tier ?||}}<br />
{{FrameworkTodo|Kalzium||Tier ?||}}<br />
{{FrameworkDone|KBruch|<br />
*Config<br />
*Crash<br />
*DocTools<br />
*I18n<br />
*IconThemes<br />
*WidgetsAddons<br />
*XmlGui<br />
|Tier 3||master branch}}<br />
{{FrameworkInProgress|Kig|<br />
* Parts<br />
* DocTools<br />
* I18n<br />
* TextEditor<br />
* IconThemes<br />
* ConfigWidgets<br />
* KDE4Support||David Narvaez|See frameworks branch}}<br />
{{FrameworkInProgress|Kiten||Tier ?|Reza Fatahilah Shah|See frameworks branch}}<br />
{{FrameworkInProgress|KStars|<br />
* Config<br />
* DocTools<br />
* GuiAddons<br />
* WidgetsAddons<br />
* NewStuff<br />
* DBusAddons<br />
* I18n<br />
* Init<br />
* JobWidgets<br />
* KIO<br />
* WindowSystem<br />
* XmlGui<br />
* Plotting<br />
* TextEditor<br />
* IconThemes|Tier 3|Jasem Mutlaq|See frameworks branch. Moon phase and whatsinteresting require porting}}<br />
{{FrameworkInProgress|Klettres|<br />
* Completion<br />
* DocTools<br />
* EmotIcons<br />
* ItemModels<br />
* I18n<br />
* KDE4Support<br />
* NewStuff|Tier 3 (4 with KDE4Support)|Laurent Navet|https://github.com/mali/klettres/tree/kf5}}<br />
{{FrameworkTodo|KTurtle||Tier ?||}}<br />
{{FrameworkInProgress|Step||Tier ?||see frameworks branch, someone did already a lot of porting work; state has to be evaluated}}<br />
{{FrameworkInProgress|KWordQuiz||Tier ?|<br />
Jeremy Whiting<br />
Inge Wallin|}}<br />
|}<br />
<br />
== Library Porting ==<br />
Porting status for all already self-contained libraries (those that do not require further splitting).<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|Analitza|Qt-only|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KQtQuickCharts|?|?|Sebastian Gottfried|See frameworks branch}}<br />
|}<br />
<br />
== LibKdeEdu Porting ==<br />
Libkdeedu contains different libraries that have to be split after porting.<br />
* Original repository: libkdeedu<br />
* Branch: frameworks<br />
* Developer: Vishesh Handa started, Jeremy Whiting finishing<br />
* Overall state: Done, some more tests could definitely be written though. Code is in libkeduvocdocument git repo.<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|libKdeEduVocDocument|I18n, KIOCore, Archive|Tier 3||}}<br />
<br />
|}</div>Stikonashttps://community.kde.org/index.php?title=KDEEdu/RouteToKF5&diff=40153KDEEdu/RouteToKF52014-11-04T21:05:51Z<p>Stikonas: /* Applications and Self-Contained Libraries */ KBruch</p>
<hr />
<div>* Porting notes available here: [[Frameworks/Porting_Notes|Porting Notes]]<br />
<br />
== Applications and Self-Contained Libraries ==<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|KAlgebra|<br />
* Analitza<br />
* ki18n<br />
* KConfigWidgets<br />
* KIOCore|Tier 3|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkDone|KAlgebra Mobile|<br />
* Analitza<br />
* KDeclarative (for KAlgebra Mobile, in Plasma integration mode)|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KTouch|<br />
* kdeclarative<br />
* plasma-framework (?)|Tier 3|Sebastian Gottfried|see frameworks branch}}<br />
{{FrameworkDone|Rocs|<br />
* Config<br />
* CoreAddons<br />
* Declarative<br />
* DocTools<br />
* I18n<br />
* ItemViews<br />
* TextEditor<br />
* XmlGui<br />
* Service<br />
|Tier 3|Andreas Cord-Landwehr|master branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Artikulate|<br />
* Config<br />
* ConfigWidgets<br />
* CoreAddons<br />
* Declarative<br />
* I18n<br />
* KIO<br />
* NewStuff<br />
* WidgetsAddons<br />
* XmlGui<br />
|Tier 3|Andreas Cord-Landwehr|frameworks branch, planned for spring 2015 release}}<br />
{{FrameworkInProgress|Pairs|<br />
* KDeclarative<br />
* KArchive<br />
* KCoreAddons<br />
* XmlGui<br />
* Phonon|Tier 3|Marco Calignano|}}<br />
{{FrameworkDone|KHangman|<br />
* I18n<br />
* Crash<br />
* Completion<br />
* ConfigWidgets<br />
* KIO<br />
* NewStuff<br />
* Notifications<br />
* XmlGui<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkDone|Kanagram|<br />
* I18n<br />
* Crash<br />
* Sonnet<br />
* ConfigWidgets<br />
* Declarative<br />
* KIO<br />
* NewStuff<br />
|Tier ?|Jeremy Whiting|master branch}}<br />
{{FrameworkInProgress|Parley|<br />
* Config<br />
* CoreAddons<br />
* Crash<br />
* DocTools <br />
* I18n<br />
* KCMUtils<br />
* KHtml<br />
* KIO<br />
* Kross<br />
* NewStuff<br />
* Notifications<br />
* Sonnet<br />
* XmlGui<br />
|Tier 3|Andreas Xavier|<br />
* dashboard, editor, all practice modes and statistics work<br />
* see frameworks branch and grep on 'todo frameworks' to see a list of known minor bugs introduced in the conversion<br />
}}<br />
{{FrameworkDone|Marble||Qt5-only||}}<br />
{{FrameworkDone|KGeography||Tier ?|David Gil|}}<br />
{{FrameworkInProgress|Cantor|<br />
* Archive<br />
* Config<br />
* CoreAddons<br />
* KDELibs4Support<br />
* NewStuff<br />
* Parts<br />
* TextEditor<br />
|Tier 3<br />
|Filipe Saraiva<br />
|Code in frameworks branch - work in progress}}<br />
{{FrameworkTodo|Khipu||Tier ?||}}<br />
{{FrameworkTodo|Kmplot||Tier ?||}}<br />
{{FrameworkTodo|Kalzium||Tier ?||}}<br />
{{FrameworkDone|KBruch|<br />
*Config<br />
*DocTools<br />
*I18n<br />
*IconThemes<br />
*WidgetsAddons<br />
*XmlGui<br />
|Tier 3||master branch}}<br />
{{FrameworkInProgress|Kig|<br />
* Parts<br />
* DocTools<br />
* I18n<br />
* TextEditor<br />
* IconThemes<br />
* ConfigWidgets<br />
* KDE4Support||David Narvaez|See frameworks branch}}<br />
{{FrameworkInProgress|Kiten||Tier ?|Reza Fatahilah Shah|See frameworks branch}}<br />
{{FrameworkInProgress|KStars|<br />
* Config<br />
* DocTools<br />
* GuiAddons<br />
* WidgetsAddons<br />
* NewStuff<br />
* DBusAddons<br />
* I18n<br />
* Init<br />
* JobWidgets<br />
* KIO<br />
* WindowSystem<br />
* XmlGui<br />
* Plotting<br />
* TextEditor<br />
* IconThemes|Tier 3|Jasem Mutlaq|See frameworks branch. Moon phase and whatsinteresting require porting}}<br />
{{FrameworkInProgress|Klettres|<br />
* Completion<br />
* DocTools<br />
* EmotIcons<br />
* ItemModels<br />
* I18n<br />
* KDE4Support<br />
* NewStuff|Tier 3 (4 with KDE4Support)|Laurent Navet|https://github.com/mali/klettres/tree/kf5}}<br />
{{FrameworkTodo|KTurtle||Tier ?||}}<br />
{{FrameworkInProgress|Step||Tier ?||see frameworks branch, someone did already a lot of porting work; state has to be evaluated}}<br />
{{FrameworkTodo|KWordQuiz||Tier ?||}}<br />
|}<br />
<br />
== Library Porting ==<br />
Porting status for all already self-contained libraries (those that do not require further splitting).<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|Analitza|Qt-only|Tier 1|Aleix Pol|In master, ready to be released}}<br />
{{FrameworkInProgress|KQtQuickCharts|?|?|Sebastian Gottfried|See frameworks branch}}<br />
|}<br />
<br />
== LibKdeEdu Porting ==<br />
Libkdeedu contains different libraries that have to be split after porting.<br />
* Original repository: libkdeedu<br />
* Branch: frameworks<br />
* Developer: Vishesh Handa started, Jeremy Whiting finishing<br />
* Overall state: Done, some more tests could definitely be written though. Code is in libkeduvocdocument git repo.<br />
<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status<br />
! Repository<br />
! Dependencies<br />
! Maximum tier<br />
! width=120 | Developer<br />
! Comment<br />
|-<br />
{{FrameworkDone|libKdeEduVocDocument|I18n, KIOCore, Archive|Tier 3||}}<br />
<br />
|}</div>Stikonashttps://community.kde.org/index.php?title=Sysadmin/GitKdeOrgManual&diff=33711Sysadmin/GitKdeOrgManual2013-08-12T08:24:11Z<p>Stikonas: /* Commands to manage personal repositories */ fix more commands</p>
<hr />
<div>== Overview of facilities ==<br />
<br />
* '''[http://identity.kde.org/ KDE Identity]''' (identity.kde.org)<br />
:Account management; notably managing your SSH public keys for read-write developer access.<br />
<br />
* '''git.kde.org'''<br />
The main git server. Should be used only for pushing new commits to a repository over the SSH protocol. <br />
<br />
* '''anongit.kde.org'''<br />
Several servers which allow read-only access to the repositories via the git:// and http:// protocols. They are requested to update when anyone pushes to a repo on git.kde.org, so it can be thought of as being always up-to-date.<br />
<br />
* '''[http://projects.kde.org/ KDE Projects]''' (projects.kde.org)<br />
:Central project hub and primary repository browser.<br />
<br />
* '''[http://quickgit.kde.org/ quickgit.kde.org]'''<br />
:Alternative repository browser. At present the only way to view personal clones of project repositories and personal scratch repositories ([[#Personal repositories|see below]]), however the former are planned to appear in projects.kde.org in the future.<br />
<br />
* '''[http://git.reviewboard.kde.org/ ReviewBoard]''' (git.reviewboard.kde.org)<br />
:Patch review (account sign-up via [http://identity.kde.org/ KDE Identity]). [http://techbase.kde.org/Development/Review_Board|Instructions].<br />
<br />
* '''commits.kde.org'''<br />
:Provides Git commit "short URLs", redirecting to [http://projects.kde.org/ KDE Projects] and [http://gitweb.kde.org/ gitweb.kde.org] pages as appropriate ([http://commits.kde.org/324dd0cd/a8d1175f61e678f61b3643c867f212ad26ce6f44 example]).<br />
<br />
* '''[http://commitfilter.kde.org commitfilter.kde.org]'''<br />
:Sends an email with each commit for the projects you want to watch.<br />
<br />
== How to get read-write developer access ==<br />
<br />
KDE developer accounts are managed through [http://identity.kde.org/ KDE Identity]. If you already have a KDE SVN developer account, it has been imported into KDE Identity and you may use the Password Reset feature to set a password and manage your SSH public keys. If you don't have a developer account yet, you can request Developer Access in the website's menu upon registering and logging into your account.<br />
<br />
== Information For KDE Developers ==<br />
<br />
You can find general information about using Git as a KDE Developer on the [http://techbase.kde.org/Development/Git KDE Git] page on TechBase.<br />
<br />
To configure Git for your KDE Development environment, please see the [http://techbase.kde.org/Development/Git/Configuration KDE Git Configuration] page on TechBase.<br />
<br />
You can find some simple step-by-step recipes for using the KDE Git repositories on the [http://techbase.kde.org/Development/Git/Recipes KDE Git Recipes] page on TechBase.<br />
<br />
== Overview of repository URL schemes ==<br />
<br />
=== URL prefixes ===<br />
<br />
Anonymous read-only access uses the following URL prefix:<br />
<br />
git://anongit.kde.org/<br />
<br />
Read-write developer access uses this prefix instead:<br />
<br />
git@git.kde.org:<br />
<br />
=== Repository paths ===<br />
<br />
Following the prefix, here are the path schemes for different types of repositories:<br />
<br />
* '''<project identifier>'''<br />
:A KDE project repository, be it part of the KDE SC, KDE Extragear or KDE Playground.<br />
<br />
* '''websites/<address sans leading www. and dots replaced by dashes>'''<br />
:A KDE website project, e.g. websites/projects-kde-org.<br />
<br />
* '''sysadmin/<repository name>'''<br />
:Non-public repositories used by KDE's sysadmin team.<br />
<br />
* '''clones/<original repository path>/<KDE Identity user name>/<user-chosen repository name>'''<br />
:Personal clones of project repositories, e.g. <tt>clones/konversation/hein/morecowbell</tt> or <tt>clones/websites/projects-kde-org/hein/pluginwork</tt> ([[#Personal clones of project repositories|more below]]).<br />
<br />
* '''scratch/<KDE identity user name>/<user-chosen repository name>'''<br />
:Personal scratch repositories are a means to start a new project or just to store your favorite .bashrc in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way ([[#Personal scratch repositories|more below]]).<br />
<br />
=== Let Git rewrite URL prefixes ===<br />
<br />
Instead of remembering the above URL prefixes, you can also put the following in your <tt>~/.gitconfig</tt>:<br />
<br />
[url "git://anongit.kde.org/"]<br />
insteadOf = kde:<br />
[url "git@git.kde.org:"]<br />
pushInsteadOf = kde:<br />
<br />
If you are in a corporate environment (e.g. behind a firewall) which only allows Ports 80 (HTTP) and 443 (HTTPS), use the following configuration instead (i.e. substitute git:// for http://):<br />
<br />
[url "http://anongit.kde.org/"]<br />
insteadOf = kde:<br />
<br />
Then, to clone e.&nbsp;g. the Amarok repo, just do<br />
<br />
$ git clone kde:amarok<br />
<br />
By using the <tt>kde:</tt> prefix, read access will automatically happen over Git, and authenticated SSH is only required for pushes. Since commits are mirrored to anongit right when you push them, you will not have to worry about anongit being outdated.<br />
<br />
== Server-side commands ==<br />
<br />
git.kde.org understands several server-side commands that can be used on the command line via SSH in this fashion:<br />
<br />
ssh git@git.kde.org <command> [parameters]<br />
<br />
To simplify the first argument to "kde" (i.e. "<tt>ssh kde <command> [parameters]</tt>"), put the following in ~/.ssh/config:<br />
<br />
Host kde<br />
HostName git.kde.org<br />
User git<br />
<br />
The following is a list of the commands that are currently available, broadly divided into categories according to their purpose.<br />
<br />
===Commands for information retrieval===<br />
<br />
*'''<span id="info">info</span>''' <small>[[#info|(link here)]]</small><br />
:Shows a table of repository paths and path patterns you have the permission to see along with details about your access rights to them.<br />
<br />
:A brief legend for the permission flags shown in the listing:<br />
<br />
:* '''@R''' - Read permissions.<br />
:* '''@W''' - Write permissions.<br />
:* '''@C''' - Create permissions (e.g. the initial push to a newly-created repo).<br />
<br />
:If you want to list actual repositories corresponding to patterns listed by <tt>info</tt>, such as your personal [[#Personal scratch repositories|scratch repositories]], see the <tt>[[#expand|expand]]</tt> command described next.<br />
<br />
*'''<span id="expand">expand [regex]</span>''' <small>[[#expand|(link here)]]</small><br />
:Like <tt>[[#info|info]]</tt> above, but actually walks through the repositories to verify the information. It's much slower as a result, and should be used if <tt>info</tt> doesn't provide enough information. For example, <tt>info</tt> will list your personal [[#Personal scratch repositories|scratch space]] only in the form of a pattern while <tt>expand</tt> can list the actual repositories located there.<br />
<br />
:The output is limited to about 20 rows. The optional regex parameter allows you to filter the listing.<br />
<br />
*'''<span id="who-pushed">who-pushed <repository path> <commit sha1 hash></span>''' <small>[[#who-pushed|(link here)]]</small><br />
<br />
:Shows the KDE Identity user name of the contributor who pushed the specified commit to the specified repository.<br />
<br />
===Commands to manage personal repositories===<br />
<br />
*'''<span id="clone">clone <path to source repository> <clone name></span>''' <small>[[#clone|(link here)]]</small><br />
:Can be used to make a personal clone of a project repository.<br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org clone konversation mykonvi<br />
<br />
:This results in a clone at <tt>clones/konversation/<your KDE Identity user name>/mykonvi</tt>.<br />
<br />
:A second example with a longer source repository path:<br />
<br />
ssh git@git.kde.org clone websites/projects-kde-org newtheme<br />
<br />
:This results in a clone at <tt>clones/websites/projects-kde-org/<your KDE Identity user name>/newtheme</tt>.<br />
<br />
:More on personal clones [[#Personal repositories|here]].<br />
<br />
*'''<span id="rm">D rm <repository path></span>''' <small>[[#destroy|(link here)]]</small><br />
:Used to delete a personal clone of a project repository or a personal scratch repository. Requires the repository to be unlocked first using the <tt>[[#unlock|unlock]]</tt> command and will additionally ask for confirmation. See also the <tt>[[#trash|D trash]]</tt> command as an alternative to outright and irrevocable deletion.<br />
<br />
*'''<span id="lock">D lock <repository path></span>''' <small>[[#lock|(link here)]]</small><br />
<br />
:Locks a repository, causing the <tt>[[#destroy|destroy]]</tt> command to deny deleting it. <br />
<br />
:Newly-created repositories are locked by default.<br />
<br />
*'''<span id="unlock">D unlock <repository path></span>''' <small>[[#unlock|(link here)]]</small><br />
<br />
:Unlocks a repository, making it possible to delete it using the <tt>[[#destroy|destroy]]</tt> command.<br />
<br />
====Commands to manage the personal trash area====<br />
<br />
*'''<span id="trash">D trash <repository path></span>''' <small>[[#trash|(link here)]]</small><br />
<br />
:Moves a repository to the personal trash area, creating an entry in the form <tt><repository path>/<timestamp></tt> there. The timestamps, which have second precision, make it possible to have more than one version of a repository in the trash area at the same time.<br />
<br />
:<span style="color:red">'''Note:'''</span> Entries in the personal trash area are automatically removed after 28 days!<br />
<br />
*'''<span id="restore">D restore <trash area entry></span>''' <small>[[#restore|(link here)]]</small><br />
<br />
:Restores an entry from the personal trash area (see the <tt>[[#list-trash|list-trash]]</tt> command below for how to list the contents of your personal trash area).<br />
<br />
:<tt>restore</tt> will deny restoring an entry if doing so would overwrite an existing repository.<br />
<br />
*'''<span id="list-trash">D list-trash</span>''' <small>[[#list-trash|(link here)]]</small><br />
<br />
:Lists all entries in the personal trash area, in the form <tt><repository path>/<timestamp></tt>.<br />
<br />
===Commands related to repository importing===<br />
*'''<span id="hooks-enable">hooks enable <project repository path></span>''' <small>[[#hooks-enable|(link here)]]</small><br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org hooks enable konversation<br />
<br />
:Available only to repository and system administrators, this command enables several hook scripts that git.kde.org will then execute during a push operation to the specified project repository. Importantly, it also enables write access for non-administrators, which is otherwise disabled along with the hooks scripts. <br />
<br />
:The hook scripts in question are the ones reponsible for forwarding commits to the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list and [http://www.cia.vc/ CIA.vc], and for processing commit message keywords (BUG, CCMAIL, etc.) that may interact with [http://bugs.kde.org/ KDE Bugzilla] or cause further emails to be sent. As these hook scripts are only available to project repositories, and not to [[#Personal repositories|personal repositories]], the command only applies to them.<br />
<br />
:After creating a new, empty project repository for you the system administators will initially disable the hook scripts so you can safely import large numbers of old commits.<br />
<br />
===Commands for system administrators===<br />
<br />
*'''<span id="sudo">sudo <KDE Identity user name> <command></span>''' <small>[[#sudo|(link here)]]</small><br />
:Used by system administrators to run one of the above as another user.<br />
<br />
*'''<span id="able">able <en|dis> <@all|repository path></span>''' <small>[[#able|(link here)]]</small><br />
:Used by system administrators to enable or disable writes to particular repositories or all repositories, for maintenance.<br />
<br />
*'''<span id="hooks-disable">hooks disable <project repository path></span>''' <small>[[#hooks-disable|(link here)]]</small><br />
<br />
:Disables the hook scripts git.kde.org normally executes during a push operation to a project repository. While the hook scripts are disabled only repository administrators can push commits to a repository. Both system and repository administrators have the ability to reenable the hook scripts using the <tt>[[#hooks-enable|hooks enable]]</tt> command.<br />
<br />
*'''<span id="ohnoes">ohnoes <show|recover> <repository path> <gitref></span>''' <small>[[#ohnoes|(link here)]]</small><br />
:Used by system administrators to recover deleted branches or mistaken force pushes (rewinds).<br />
<br />
== Commit hook keywords ==<br />
When you commit changes to Git you will be asked for a description of your commit. There are several special keywords defined that you can use in this description. These keywords are always in uppercase.<br />
<br />
The following keywords are pseudo-headers - they have to appear at the start of a line and be followed by a colon:<br />
<br />
* '''FEATURE:''' [''<bugnumber>'']<br/>Marks the feature as implemented by CC'ing the commit message to <bugnumber>-done@bugs.kde.org. This keyword will also be used to automatically extract entries for the release changelog, so it makes sense to use it for new features even if you don't have a bugnumber for the feature.<br />
<br />
* '''BUG:''' ''<bugnumber>''<br/>Marks the bug as fixed by CC'ing the commit message to <bugnumber>-done@bugs.kde.org. This keyword will also be used to automatically extract entries for the release changelog. To use this feature, you need to create a user on [https://bugs.kde.org kde bugs] with a same email and request for bug edit permission through [https://bugs.kde.org/enter_sysadmin_request.cgi bug report].<br />
<br />
* '''FIXED-IN:''' ''<version>''<br/>If the '''BUG''' keyword is used to close a bug, this keyword will update the bug's ''release version'' (''Version Fixed In'' field) that the fix appears in. You can only select one version, so prefer the lowest release version that will actually have the fix.<br />
<br />
* '''CCBUG:''' ''<bugnumber>''<br/>CC's to the bugreport by sending mail to <bugnumber>@bugs.kde.org. This will '''not''' close the bug.<br />
<br />
* '''CCMAIL:''' ''<email-address>''<br/>CC's to the given e-mail address. Used to notify other developers, usually the maintainers of your commit.<br />
<br />
* '''REVIEW:''' ''<reviewnumber>''<br />Closes the review on KDE Reviewboard and adds a comment which refers to the commit.<br />
<br />
* '''GUI:'''<br/>Indicates a user visible change in the user interface. This is used to make the documentation team aware of such changes.<br />
<br />
* '''DIGEST:'''<br/>Notifies the KDE Commit Digest team of interesting/important commits to look at (for easy collection, summarization and presentation of commits to end-users).<br />
<br />
<br />
These keyword can appear anywhere on a line:<br />
<br/>(should the svn stuff be removed from this article?)--[[User:Sreich|Sreich]] 04:07, 27 December 2011 (UTC)<br />
* '''SVN_SILENT'''<br/>Marks the commit message "silent" by adding "(silent)" to the subject of the mail to allow filtering out trivial commits. Use this tag carefully and only for really uninteresting, uncontroversial commits.<br />
<br />
* '''GIT_SILENT'''<br/> Same as SVN_SILENT<br />
<br />
* '''SVN_MERGE'''<br/>Special keyword for people that use the svnmerge script. Marks the commit message as being a merge commit by adding "(merge)" to the subject of the mail. This way receivers can filter out mails that are caused by merging the same patch from one branch to another branch. Reviews of those mails is usually not needed. This keyword filters out the endless property changes used by this script.<br />
<br />
== Personal repositories ==<br />
<br />
git.kde.org currently offers two types of personal repositories: Personal clones of project repositories and personal scratch repositories.<br />
<br />
=== Personal clones of project repositories ===<br />
<br />
A personal clone of a project repository can be created using the server-side <tt>clone</tt> command on the command line:<br />
<br />
ssh git@git.kde.org clone <path to source repository> <clone name><br />
<br />
This will create a clone of the source repository at <tt>clones/<path to source repository>/<KDE Identity user name>/<clone name></tt>. (See more examples of <tt>clone</tt> in action [[#clone|here]].)<br />
<br />
This scheme makes it very easy to locate all personal clones of a given project and should be preferred over making one in your personal [[#Personal scratch repositories|scratch space]]. (In fact, the server-side <tt>clone</tt> command won't allow you to clone a project repository into your personal scratch space, but nothing technically prevents you from taking the detour of a local clone to achieve this.)<br />
<br />
Personal clones of project repositories currently do not show up on [http://projects.kde.org KDE Projects], but we have plans to change that in the future. Until then, you can use [http://quickgit.kde.org/ quickgit.kde.org] to browse these repositories.<br />
<br />
=== Personal scratch repositories ===<br />
<br />
Personal scratch repositories are a means to start a new project or just to store your favorite <tt>.bashrc</tt> in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way.<br />
<br />
To make pushing to the repository convenient, it is recommended to add a remote to push to first:<br />
<br />
git remote add origin git@git.kde.org:scratch/<your KDE Identity username>/<repository name of your choice><br />
<br />
Afterward, you perform the first push to the repository as follows:<br />
<br />
git push --all origin<br />
<br />
It will take about 30 minutes until the creation of the new repository has propagated to the other tools and is visible there.<br />
<br />
git push --all does not push tags. You can push them in a second step with<br />
<br />
git push --tags ...as above...<br />
<br />
Personal scratch repositories can be browsed on [http://quickgit.kde.org/ quickgit.kde.org].<br />
<br />
You can set a description on your scratch repository by issuing a command<br />
<br />
ssh git@git.kde.org desc scratch/<yourname>/<yourrepository> "Application to do magic"<br />
<br />
If you feel your new project is ready for the wider world and/or wish to signal that it welcomes outside contributors, you may wish to promote it to the status of a KDE Playground project. KDE Playground project repositories are located at the top-level, i.e. the repository will be moved out of your scratch space and may have to be renamed in the event of a collision with an existing repository name. KDE Playground projects are featured on [http://projects.kde.org KDE Projects] and covered by the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list (and thus [http://commitfilter.kde.org CommitFilter]), [http://lxr.kde.org/ LXR], the [http://www.englishbreakfastnetwork.org/ EBN] and [http://cia.vc/ CIA], unlike personal scratch repositories.<br />
<br />
To request your scratch repository be promoted to the status of a KDE Playground project, you currently need to file a [https://sysadmin.kde.org/tickets/index.php?page=tickets&act=add sysadmin repo request]. In the future we plan to provide a fully automated facility on [http://projects.kde.org KDE Projects].<br />
<br />
Note that we have deliberately decided not to allow the direct creation of KDE Playground projects; the path to existence for a KDE Playground repository project always leads through a personal scratch space first. This is to give you the power to decide whether your project is ready, and also to force you to deliberate whether it truly is.<br />
<br />
===Deleting personal repositories===<br />
<br />
A personal repository can either be deleted outright and irrevocably by using the <tt>[[#destroy|destroy]]</tt> command (which requires you to <tt>[[#unlock|unlock]]</tt> it first to avoid accidental deletion), or you may move it to the personal trash area with the <tt>[[#trash|trash]]</tt> command.<br />
<br />
ssh git@git.kde.org D trash scratch/<username>/<project><br />
<br />
'''Entries in the personal trash area are kept for 28 days,''' and can be resurrected at any moment during those 28 days by way of the <tt>[[#restore|restore]]</tt> command. You can list the current contents of your personal trash area with the <tt>[[#list-trash|list-trash]]</tt> command.<br />
<br />
== Using Review Board and post-review ==<br />
<br />
A very comfortable way of posting changes for review is [http://git.reviewboard.kde.org Review Board], where every project repository has its own entry. You can read about how to use Git and Review Board on the [http://techbase.kde.org/Development/Review_Board KDE Review Board] page.<br />
<br />
Here's an [http://ericholscher.com/blog/2011/jan/24/using-reviewboard-git/ insightful blog post] that explains how to use post-review.<br />
<br />
== Requesting project migrations from KDE SVN or Gitorious.org ==<br />
<br />
To get your project moved from KDE SVN or Gitorious.org to git.kde.org, you have to file a [http://sysadmin.kde.org/svnaccount/repo-request.php sysadmin request]. It will ask you for the following information:<br />
<br />
* The name and description of the project.<br />
* The current location of the project.<br />
* Its current or intended module (e.g. playground/utils or extragear/network).<br />
* Which KDE Identity user name(s) should have admin rights to the repository and the entry on [http://projects.kde.org KDE Projects].<br />
* The email address that the [http://git.reviewboard.kde.org/ ReviewBoard] group for the project should send emails to.<br />
* The date and time the migration should take place (can be "asap").<br />
<br />
When we have completed processing your request, there will be an empty repository at the chosen path ([[#Overview of repository URL schemes|more here]]) that the repository administrators can push the data into. (When converting from KDE svn to git this typically involves [[../DeveloperAccessForRuleWriting|writing a rule set]], running svn-all-fast-export, and then pushing the created repository into the new git path.) Once you are done pushing everything to the repository, use the <tt>[[#hooks-enable|hooks enable]]</tt> command to enable the commit hooks and allow write access to non-administrators.</div>Stikonashttps://community.kde.org/index.php?title=Sysadmin/GitKdeOrgManual&diff=33710Sysadmin/GitKdeOrgManual2013-08-12T08:20:40Z<p>Stikonas: /* Commands to manage the personal trash area */ add D to trash commands</p>
<hr />
<div>== Overview of facilities ==<br />
<br />
* '''[http://identity.kde.org/ KDE Identity]''' (identity.kde.org)<br />
:Account management; notably managing your SSH public keys for read-write developer access.<br />
<br />
* '''git.kde.org'''<br />
The main git server. Should be used only for pushing new commits to a repository over the SSH protocol. <br />
<br />
* '''anongit.kde.org'''<br />
Several servers which allow read-only access to the repositories via the git:// and http:// protocols. They are requested to update when anyone pushes to a repo on git.kde.org, so it can be thought of as being always up-to-date.<br />
<br />
* '''[http://projects.kde.org/ KDE Projects]''' (projects.kde.org)<br />
:Central project hub and primary repository browser.<br />
<br />
* '''[http://quickgit.kde.org/ quickgit.kde.org]'''<br />
:Alternative repository browser. At present the only way to view personal clones of project repositories and personal scratch repositories ([[#Personal repositories|see below]]), however the former are planned to appear in projects.kde.org in the future.<br />
<br />
* '''[http://git.reviewboard.kde.org/ ReviewBoard]''' (git.reviewboard.kde.org)<br />
:Patch review (account sign-up via [http://identity.kde.org/ KDE Identity]). [http://techbase.kde.org/Development/Review_Board|Instructions].<br />
<br />
* '''commits.kde.org'''<br />
:Provides Git commit "short URLs", redirecting to [http://projects.kde.org/ KDE Projects] and [http://gitweb.kde.org/ gitweb.kde.org] pages as appropriate ([http://commits.kde.org/324dd0cd/a8d1175f61e678f61b3643c867f212ad26ce6f44 example]).<br />
<br />
* '''[http://commitfilter.kde.org commitfilter.kde.org]'''<br />
:Sends an email with each commit for the projects you want to watch.<br />
<br />
== How to get read-write developer access ==<br />
<br />
KDE developer accounts are managed through [http://identity.kde.org/ KDE Identity]. If you already have a KDE SVN developer account, it has been imported into KDE Identity and you may use the Password Reset feature to set a password and manage your SSH public keys. If you don't have a developer account yet, you can request Developer Access in the website's menu upon registering and logging into your account.<br />
<br />
== Information For KDE Developers ==<br />
<br />
You can find general information about using Git as a KDE Developer on the [http://techbase.kde.org/Development/Git KDE Git] page on TechBase.<br />
<br />
To configure Git for your KDE Development environment, please see the [http://techbase.kde.org/Development/Git/Configuration KDE Git Configuration] page on TechBase.<br />
<br />
You can find some simple step-by-step recipes for using the KDE Git repositories on the [http://techbase.kde.org/Development/Git/Recipes KDE Git Recipes] page on TechBase.<br />
<br />
== Overview of repository URL schemes ==<br />
<br />
=== URL prefixes ===<br />
<br />
Anonymous read-only access uses the following URL prefix:<br />
<br />
git://anongit.kde.org/<br />
<br />
Read-write developer access uses this prefix instead:<br />
<br />
git@git.kde.org:<br />
<br />
=== Repository paths ===<br />
<br />
Following the prefix, here are the path schemes for different types of repositories:<br />
<br />
* '''<project identifier>'''<br />
:A KDE project repository, be it part of the KDE SC, KDE Extragear or KDE Playground.<br />
<br />
* '''websites/<address sans leading www. and dots replaced by dashes>'''<br />
:A KDE website project, e.g. websites/projects-kde-org.<br />
<br />
* '''sysadmin/<repository name>'''<br />
:Non-public repositories used by KDE's sysadmin team.<br />
<br />
* '''clones/<original repository path>/<KDE Identity user name>/<user-chosen repository name>'''<br />
:Personal clones of project repositories, e.g. <tt>clones/konversation/hein/morecowbell</tt> or <tt>clones/websites/projects-kde-org/hein/pluginwork</tt> ([[#Personal clones of project repositories|more below]]).<br />
<br />
* '''scratch/<KDE identity user name>/<user-chosen repository name>'''<br />
:Personal scratch repositories are a means to start a new project or just to store your favorite .bashrc in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way ([[#Personal scratch repositories|more below]]).<br />
<br />
=== Let Git rewrite URL prefixes ===<br />
<br />
Instead of remembering the above URL prefixes, you can also put the following in your <tt>~/.gitconfig</tt>:<br />
<br />
[url "git://anongit.kde.org/"]<br />
insteadOf = kde:<br />
[url "git@git.kde.org:"]<br />
pushInsteadOf = kde:<br />
<br />
If you are in a corporate environment (e.g. behind a firewall) which only allows Ports 80 (HTTP) and 443 (HTTPS), use the following configuration instead (i.e. substitute git:// for http://):<br />
<br />
[url "http://anongit.kde.org/"]<br />
insteadOf = kde:<br />
<br />
Then, to clone e.&nbsp;g. the Amarok repo, just do<br />
<br />
$ git clone kde:amarok<br />
<br />
By using the <tt>kde:</tt> prefix, read access will automatically happen over Git, and authenticated SSH is only required for pushes. Since commits are mirrored to anongit right when you push them, you will not have to worry about anongit being outdated.<br />
<br />
== Server-side commands ==<br />
<br />
git.kde.org understands several server-side commands that can be used on the command line via SSH in this fashion:<br />
<br />
ssh git@git.kde.org <command> [parameters]<br />
<br />
To simplify the first argument to "kde" (i.e. "<tt>ssh kde <command> [parameters]</tt>"), put the following in ~/.ssh/config:<br />
<br />
Host kde<br />
HostName git.kde.org<br />
User git<br />
<br />
The following is a list of the commands that are currently available, broadly divided into categories according to their purpose.<br />
<br />
===Commands for information retrieval===<br />
<br />
*'''<span id="info">info</span>''' <small>[[#info|(link here)]]</small><br />
:Shows a table of repository paths and path patterns you have the permission to see along with details about your access rights to them.<br />
<br />
:A brief legend for the permission flags shown in the listing:<br />
<br />
:* '''@R''' - Read permissions.<br />
:* '''@W''' - Write permissions.<br />
:* '''@C''' - Create permissions (e.g. the initial push to a newly-created repo).<br />
<br />
:If you want to list actual repositories corresponding to patterns listed by <tt>info</tt>, such as your personal [[#Personal scratch repositories|scratch repositories]], see the <tt>[[#expand|expand]]</tt> command described next.<br />
<br />
*'''<span id="expand">expand [regex]</span>''' <small>[[#expand|(link here)]]</small><br />
:Like <tt>[[#info|info]]</tt> above, but actually walks through the repositories to verify the information. It's much slower as a result, and should be used if <tt>info</tt> doesn't provide enough information. For example, <tt>info</tt> will list your personal [[#Personal scratch repositories|scratch space]] only in the form of a pattern while <tt>expand</tt> can list the actual repositories located there.<br />
<br />
:The output is limited to about 20 rows. The optional regex parameter allows you to filter the listing.<br />
<br />
*'''<span id="who-pushed">who-pushed <repository path> <commit sha1 hash></span>''' <small>[[#who-pushed|(link here)]]</small><br />
<br />
:Shows the KDE Identity user name of the contributor who pushed the specified commit to the specified repository.<br />
<br />
===Commands to manage personal repositories===<br />
<br />
*'''<span id="clone">clone <path to source repository> <clone name></span>''' <small>[[#clone|(link here)]]</small><br />
:Can be used to make a personal clone of a project repository.<br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org clone konversation mykonvi<br />
<br />
:This results in a clone at <tt>clones/konversation/<your KDE Identity user name>/mykonvi</tt>.<br />
<br />
:A second example with a longer source repository path:<br />
<br />
ssh git@git.kde.org clone websites/projects-kde-org newtheme<br />
<br />
:This results in a clone at <tt>clones/websites/projects-kde-org/<your KDE Identity user name>/newtheme</tt>.<br />
<br />
:More on personal clones [[#Personal repositories|here]].<br />
<br />
*'''<span id="destroy">destroy <repository path></span>''' <small>[[#destroy|(link here)]]</small><br />
:Used to delete a personal clone of a project repository or a personal scratch repository. Requires the repository to be unlocked first using the <tt>[[#unlock|unlock]]</tt> command and will additionally ask for confirmation. See also the <tt>[[#trash|trash]]</tt> command as an alternative to outright and irrevocable deletion.<br />
<br />
*'''<span id="lock">lock <repository path></span>''' <small>[[#lock|(link here)]]</small><br />
<br />
:Locks a repository, causing the <tt>[[#destroy|destroy]]</tt> command to deny deleting it. <br />
<br />
:Newly-created repositories are locked by default.<br />
<br />
*'''<span id="unlock">unlock <repository path></span>''' <small>[[#unlock|(link here)]]</small><br />
<br />
:Unlocks a repository, making it possible to delete it using the <tt>[[#destroy|destroy]]</tt> command.<br />
<br />
====Commands to manage the personal trash area====<br />
<br />
*'''<span id="trash">D trash <repository path></span>''' <small>[[#trash|(link here)]]</small><br />
<br />
:Moves a repository to the personal trash area, creating an entry in the form <tt><repository path>/<timestamp></tt> there. The timestamps, which have second precision, make it possible to have more than one version of a repository in the trash area at the same time.<br />
<br />
:<span style="color:red">'''Note:'''</span> Entries in the personal trash area are automatically removed after 28 days!<br />
<br />
*'''<span id="restore">D restore <trash area entry></span>''' <small>[[#restore|(link here)]]</small><br />
<br />
:Restores an entry from the personal trash area (see the <tt>[[#list-trash|list-trash]]</tt> command below for how to list the contents of your personal trash area).<br />
<br />
:<tt>restore</tt> will deny restoring an entry if doing so would overwrite an existing repository.<br />
<br />
*'''<span id="list-trash">D list-trash</span>''' <small>[[#list-trash|(link here)]]</small><br />
<br />
:Lists all entries in the personal trash area, in the form <tt><repository path>/<timestamp></tt>.<br />
<br />
===Commands related to repository importing===<br />
*'''<span id="hooks-enable">hooks enable <project repository path></span>''' <small>[[#hooks-enable|(link here)]]</small><br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org hooks enable konversation<br />
<br />
:Available only to repository and system administrators, this command enables several hook scripts that git.kde.org will then execute during a push operation to the specified project repository. Importantly, it also enables write access for non-administrators, which is otherwise disabled along with the hooks scripts. <br />
<br />
:The hook scripts in question are the ones reponsible for forwarding commits to the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list and [http://www.cia.vc/ CIA.vc], and for processing commit message keywords (BUG, CCMAIL, etc.) that may interact with [http://bugs.kde.org/ KDE Bugzilla] or cause further emails to be sent. As these hook scripts are only available to project repositories, and not to [[#Personal repositories|personal repositories]], the command only applies to them.<br />
<br />
:After creating a new, empty project repository for you the system administators will initially disable the hook scripts so you can safely import large numbers of old commits.<br />
<br />
===Commands for system administrators===<br />
<br />
*'''<span id="sudo">sudo <KDE Identity user name> <command></span>''' <small>[[#sudo|(link here)]]</small><br />
:Used by system administrators to run one of the above as another user.<br />
<br />
*'''<span id="able">able <en|dis> <@all|repository path></span>''' <small>[[#able|(link here)]]</small><br />
:Used by system administrators to enable or disable writes to particular repositories or all repositories, for maintenance.<br />
<br />
*'''<span id="hooks-disable">hooks disable <project repository path></span>''' <small>[[#hooks-disable|(link here)]]</small><br />
<br />
:Disables the hook scripts git.kde.org normally executes during a push operation to a project repository. While the hook scripts are disabled only repository administrators can push commits to a repository. Both system and repository administrators have the ability to reenable the hook scripts using the <tt>[[#hooks-enable|hooks enable]]</tt> command.<br />
<br />
*'''<span id="ohnoes">ohnoes <show|recover> <repository path> <gitref></span>''' <small>[[#ohnoes|(link here)]]</small><br />
:Used by system administrators to recover deleted branches or mistaken force pushes (rewinds).<br />
<br />
== Commit hook keywords ==<br />
When you commit changes to Git you will be asked for a description of your commit. There are several special keywords defined that you can use in this description. These keywords are always in uppercase.<br />
<br />
The following keywords are pseudo-headers - they have to appear at the start of a line and be followed by a colon:<br />
<br />
* '''FEATURE:''' [''<bugnumber>'']<br/>Marks the feature as implemented by CC'ing the commit message to <bugnumber>-done@bugs.kde.org. This keyword will also be used to automatically extract entries for the release changelog, so it makes sense to use it for new features even if you don't have a bugnumber for the feature.<br />
<br />
* '''BUG:''' ''<bugnumber>''<br/>Marks the bug as fixed by CC'ing the commit message to <bugnumber>-done@bugs.kde.org. This keyword will also be used to automatically extract entries for the release changelog. To use this feature, you need to create a user on [https://bugs.kde.org kde bugs] with a same email and request for bug edit permission through [https://bugs.kde.org/enter_sysadmin_request.cgi bug report].<br />
<br />
* '''FIXED-IN:''' ''<version>''<br/>If the '''BUG''' keyword is used to close a bug, this keyword will update the bug's ''release version'' (''Version Fixed In'' field) that the fix appears in. You can only select one version, so prefer the lowest release version that will actually have the fix.<br />
<br />
* '''CCBUG:''' ''<bugnumber>''<br/>CC's to the bugreport by sending mail to <bugnumber>@bugs.kde.org. This will '''not''' close the bug.<br />
<br />
* '''CCMAIL:''' ''<email-address>''<br/>CC's to the given e-mail address. Used to notify other developers, usually the maintainers of your commit.<br />
<br />
* '''REVIEW:''' ''<reviewnumber>''<br />Closes the review on KDE Reviewboard and adds a comment which refers to the commit.<br />
<br />
* '''GUI:'''<br/>Indicates a user visible change in the user interface. This is used to make the documentation team aware of such changes.<br />
<br />
* '''DIGEST:'''<br/>Notifies the KDE Commit Digest team of interesting/important commits to look at (for easy collection, summarization and presentation of commits to end-users).<br />
<br />
<br />
These keyword can appear anywhere on a line:<br />
<br/>(should the svn stuff be removed from this article?)--[[User:Sreich|Sreich]] 04:07, 27 December 2011 (UTC)<br />
* '''SVN_SILENT'''<br/>Marks the commit message "silent" by adding "(silent)" to the subject of the mail to allow filtering out trivial commits. Use this tag carefully and only for really uninteresting, uncontroversial commits.<br />
<br />
* '''GIT_SILENT'''<br/> Same as SVN_SILENT<br />
<br />
* '''SVN_MERGE'''<br/>Special keyword for people that use the svnmerge script. Marks the commit message as being a merge commit by adding "(merge)" to the subject of the mail. This way receivers can filter out mails that are caused by merging the same patch from one branch to another branch. Reviews of those mails is usually not needed. This keyword filters out the endless property changes used by this script.<br />
<br />
== Personal repositories ==<br />
<br />
git.kde.org currently offers two types of personal repositories: Personal clones of project repositories and personal scratch repositories.<br />
<br />
=== Personal clones of project repositories ===<br />
<br />
A personal clone of a project repository can be created using the server-side <tt>clone</tt> command on the command line:<br />
<br />
ssh git@git.kde.org clone <path to source repository> <clone name><br />
<br />
This will create a clone of the source repository at <tt>clones/<path to source repository>/<KDE Identity user name>/<clone name></tt>. (See more examples of <tt>clone</tt> in action [[#clone|here]].)<br />
<br />
This scheme makes it very easy to locate all personal clones of a given project and should be preferred over making one in your personal [[#Personal scratch repositories|scratch space]]. (In fact, the server-side <tt>clone</tt> command won't allow you to clone a project repository into your personal scratch space, but nothing technically prevents you from taking the detour of a local clone to achieve this.)<br />
<br />
Personal clones of project repositories currently do not show up on [http://projects.kde.org KDE Projects], but we have plans to change that in the future. Until then, you can use [http://quickgit.kde.org/ quickgit.kde.org] to browse these repositories.<br />
<br />
=== Personal scratch repositories ===<br />
<br />
Personal scratch repositories are a means to start a new project or just to store your favorite <tt>.bashrc</tt> in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way.<br />
<br />
To make pushing to the repository convenient, it is recommended to add a remote to push to first:<br />
<br />
git remote add origin git@git.kde.org:scratch/<your KDE Identity username>/<repository name of your choice><br />
<br />
Afterward, you perform the first push to the repository as follows:<br />
<br />
git push --all origin<br />
<br />
It will take about 30 minutes until the creation of the new repository has propagated to the other tools and is visible there.<br />
<br />
git push --all does not push tags. You can push them in a second step with<br />
<br />
git push --tags ...as above...<br />
<br />
Personal scratch repositories can be browsed on [http://quickgit.kde.org/ quickgit.kde.org].<br />
<br />
You can set a description on your scratch repository by issuing a command<br />
<br />
ssh git@git.kde.org desc scratch/<yourname>/<yourrepository> "Application to do magic"<br />
<br />
If you feel your new project is ready for the wider world and/or wish to signal that it welcomes outside contributors, you may wish to promote it to the status of a KDE Playground project. KDE Playground project repositories are located at the top-level, i.e. the repository will be moved out of your scratch space and may have to be renamed in the event of a collision with an existing repository name. KDE Playground projects are featured on [http://projects.kde.org KDE Projects] and covered by the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list (and thus [http://commitfilter.kde.org CommitFilter]), [http://lxr.kde.org/ LXR], the [http://www.englishbreakfastnetwork.org/ EBN] and [http://cia.vc/ CIA], unlike personal scratch repositories.<br />
<br />
To request your scratch repository be promoted to the status of a KDE Playground project, you currently need to file a [https://sysadmin.kde.org/tickets/index.php?page=tickets&act=add sysadmin repo request]. In the future we plan to provide a fully automated facility on [http://projects.kde.org KDE Projects].<br />
<br />
Note that we have deliberately decided not to allow the direct creation of KDE Playground projects; the path to existence for a KDE Playground repository project always leads through a personal scratch space first. This is to give you the power to decide whether your project is ready, and also to force you to deliberate whether it truly is.<br />
<br />
===Deleting personal repositories===<br />
<br />
A personal repository can either be deleted outright and irrevocably by using the <tt>[[#destroy|destroy]]</tt> command (which requires you to <tt>[[#unlock|unlock]]</tt> it first to avoid accidental deletion), or you may move it to the personal trash area with the <tt>[[#trash|trash]]</tt> command.<br />
<br />
ssh git@git.kde.org D trash scratch/<username>/<project><br />
<br />
'''Entries in the personal trash area are kept for 28 days,''' and can be resurrected at any moment during those 28 days by way of the <tt>[[#restore|restore]]</tt> command. You can list the current contents of your personal trash area with the <tt>[[#list-trash|list-trash]]</tt> command.<br />
<br />
== Using Review Board and post-review ==<br />
<br />
A very comfortable way of posting changes for review is [http://git.reviewboard.kde.org Review Board], where every project repository has its own entry. You can read about how to use Git and Review Board on the [http://techbase.kde.org/Development/Review_Board KDE Review Board] page.<br />
<br />
Here's an [http://ericholscher.com/blog/2011/jan/24/using-reviewboard-git/ insightful blog post] that explains how to use post-review.<br />
<br />
== Requesting project migrations from KDE SVN or Gitorious.org ==<br />
<br />
To get your project moved from KDE SVN or Gitorious.org to git.kde.org, you have to file a [http://sysadmin.kde.org/svnaccount/repo-request.php sysadmin request]. It will ask you for the following information:<br />
<br />
* The name and description of the project.<br />
* The current location of the project.<br />
* Its current or intended module (e.g. playground/utils or extragear/network).<br />
* Which KDE Identity user name(s) should have admin rights to the repository and the entry on [http://projects.kde.org KDE Projects].<br />
* The email address that the [http://git.reviewboard.kde.org/ ReviewBoard] group for the project should send emails to.<br />
* The date and time the migration should take place (can be "asap").<br />
<br />
When we have completed processing your request, there will be an empty repository at the chosen path ([[#Overview of repository URL schemes|more here]]) that the repository administrators can push the data into. (When converting from KDE svn to git this typically involves [[../DeveloperAccessForRuleWriting|writing a rule set]], running svn-all-fast-export, and then pushing the created repository into the new git path.) Once you are done pushing everything to the repository, use the <tt>[[#hooks-enable|hooks enable]]</tt> command to enable the commit hooks and allow write access to non-administrators.</div>Stikonashttps://community.kde.org/index.php?title=KTp/Getting_Set_Up&diff=17176KTp/Getting Set Up2012-01-06T19:56:52Z<p>Stikonas: /* Call window App */</p>
<hr />
<div>These instructions assume that you already know how to build KDE stuff from source. It just provides a list of what you need to checkout and build, and how to run it.<br />
<br />
==Prerequisites==<br />
<br />
You will also need to install several cross-desktop Telepathy components. Packages of the following from your distribution should do fine.<br />
* telepathy-mission-control-5<br />
* telepathy-gabble (for Jabber support)<br />
* other Telepathy connection managers if you want to try out other protocols<br />
<br />
Recently we started using some features of kdelibs 4.7.0, so you need at least '''KDE SC 4.7''' to compile and run KDE-Telepathy.<br />
<br />
We're using some dbus service files and it has been proven that these needs to be in /usr/share/dbus-1/, otherwise you won't be able to connect, start a chat or do other stuff. So if you're using your own install prefix, '''please make sure you have copied/linked these files to /usr/share/dbus-1/* first''' before posting a bugreport. Thanks.<br />
<br />
You will also need to follow the steps 'Let Git rewrite URL prefixes' listed here, if you have not done so already.:<br />
http://community.kde.org/Sysadmin/GitKdeOrgManual#Let_Git_rewrite_URL_prefixes<br />
<br />
==TelepathyQt4==<br />
<br />
The prerequisite for all the Telepathy stuff to build is the TelepathyQt4 library. The source code for this is available [http://cgit.freedesktop.org/telepathy/telepathy-qt4/ here]. Your distribution may package it, in which case you need version >= 0.9. Be careful not to confuse it with the telepathy-qt library which used to be in kdesupport SVN. This is *completely* different and in no way compatible.<br />
<br />
If you are compiling Tp-Qt4 and get a warning about needing a newer glib, simply ignore it. Glib is only needed for some internal Tp-Qt4 tests.<br />
<br />
If you are building your own copy of TelepathyQt4, clone the git repository linked above and use the usual cmake method to build and install it.<br />
<br />
== KTelepathy internals ==<br />
Before the other components, you need to build a library carrying internal components. You can check it out with<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-common-internals<br />
</syntaxhighlight><br />
<br />
== Scripted setup ==<br />
You can find a script to clone and build the initial environment over [http://community.kde.org/Real-Time_Communication_and_Collaboration/Getting_Set_Up/Scripted here]<br />
<br />
==The parts ready for testing==<br />
<br />
Please fetch these, and file bugs on any required missing features or problems. Keep things realistic on the feature requests.<br />
<br />
===Telepathy Accounts KCM===<br />
<br />
The next thing to get set up is the Telepathy Accounts KCM. This is the UI for account management.<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-accounts-kcm KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-accounts-kcm<br />
</syntaxhighlight><br />
<br />
This can be compiled and installed by the usual KDE build procedure.<br />
<br />
===Contact List App===<br />
<br />
This application provides a traditional contact-list, similar to the one provided by Kopete.<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-contact-list KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-contact-list<br />
</syntaxhighlight><br />
<br />
===Chat window App===<br />
<br />
This application provides a text chat window.<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-text-ui KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-text-ui<br />
</syntaxhighlight><br />
<br />
===The approver===<br />
<br />
This notifies you when an incoming message arrives and hangs in the system tray until you're ready to start a chat.<br />
<br />
[https://projects.kde.org/projects/playground/network/telepathy/telepathy-approver/ KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-approver<br />
</syntaxhighlight><br />
<br />
===Workspace Integration Module===<br />
<br />
Sits in KDED and sets your presence automatically to 'Away' after certain amount of time, can set your presence to your current song from an mpris-enabled media player (Amarok and Clementine work great) and also contains an '''error handler''' which is very important if you want to be notified of errors<br />
<br />
[https://projects.kde.org/projects/playground/network/telepathy/telepathy-kded-module/ KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-kded-module<br />
</syntaxhighlight><br />
<br />
===Auth handler===<br />
<br />
Handles kwallet integration, and prompts/sends passwords to connection managers when requested.<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-auth-handler KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-auth-handler<br />
</syntaxhighlight><br />
<br />
===Presence Plasmoid and Dataengine===<br />
<br />
This shows the online-ness of your accounts and allows to bring accounts online/offline<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-presence-applet KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-presence-applet<br />
</syntaxhighlight><br />
<br />
===The File Transfer Handler===<br />
<br />
Does the actual transferring of files between two contacts. Displays progress via KJob<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-filetransfer-handler KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-filetransfer-handler<br />
</syntaxhighlight><br />
<br />
=== Dolphin Integration ===<br />
<br />
Allows you to start a file transfer via a handy shortcut in your file manager.<br />
<br />
[https://projects.kde.org/projects/kdereview/ktp-send-file KDE Project Page]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-send-file<br />
</syntaxhighlight><br />
<br />
==The bits that might work for you, but might not==<br />
<br />
These parts might work for you - it's worth installing but don't start filing bugs yet.<br />
<br />
===QtGstreamer===<br />
<br />
Not part of KDE Telepathy but needed to compile the call window app<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone git://anongit.freedesktop.org/gstreamer/qt-gstreamer<br />
</syntaxhighlight><br />
<br />
===Call window App===<br />
<br />
This application provides a voice/video chat window (optional). Code is in git [https://projects.kde.org/projects/playground/network/telepathy/ktp-call-ui here].<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:ktp-call-ui<br />
</syntaxhighlight><br />
<br />
==The other bits==<br />
<br />
===Shared desktop ontologies===<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone git://oscaf.git.sourceforge.net/gitroot/oscaf/shared-desktop-ontologies<br />
</syntaxhighlight><br />
<br />
===KDE Telepathy library : libktelepathy===<br />
<br />
NOTE: git master probably won't compile.<br />
<br />
Source code is [https://projects.kde.org/projects/playground/network/telepathy/telepathy-kde/repository/ here].<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:telepathy-kde<br />
</syntaxhighlight><br />
<br />
This can be compiled and installed by the usual KDE build procedure.<br />
<br />
===Nepomuk Service===<br />
<br />
NOTE: git master probably won't compile.<br />
<br />
The Nepomuk service obsoletes the daemon and integrates Telepathy with Nepomuk, which is required by the Contact List application. Code is in git [https://projects.kde.org/projects/playground/network/telepathy/telepathy-nepomuk-service here]<br />
<br />
<syntaxhighlight lang="bash"><br />
git clone kde:telepathy-nepomuk-service<br />
</syntaxhighlight></div>Stikonashttps://community.kde.org/index.php?title=Schedules/KDE4/4.4_Feature_Plan&diff=50208Schedules/KDE4/4.4 Feature Plan2009-06-05T12:21:41Z<p>Stikonas: nupomuk->nepomuk</p>
<hr />
<div>This is a list of planned features for the 4.4 release.<br />
<br />
See also:<br />
* [[Schedules/KDE4/4.4 Release Schedule]]<br />
* [[Schedules/KDE4/4.4 Release Goals]]<br />
* [[Schedules/KDE4/4.3 Feature Plan]]<br />
<br />
<br />
Legend:<br />
* todo => not started yet<br />
* in-progress => started, but not completed yet<br />
* done => completed<br />
__TOC__<br />
<br />
= Other =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
|}<br />
<br />
= kdelibs =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
|}<br />
<br />
= kdebase-workspace =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |Non-Plasma, Non-KWin<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |KRunner<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |Plasma - Priority Features<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |Plasma<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |KWin - Core<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |KWin - Desktop Effects<br />
<br />
|- border="1" cellpadding="5" cellspacing="0" style="border<br />
! colspan="4" style="text-align: center" |KDM<br />
|}<br />
<br />
= kdepimlibs =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
|}<br />
<br />
= kdenetwork =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdepim =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdeutils =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Make dialogs for Goto, Search & Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}<br />
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}<br />
{{FeatureTodo|KGpg|Add &quot;caff&quot; mode for keysigning|kde@opensource.sf-tec.de|Rolf Eike Beer}}<br />
{{FeatureTodo|KGpg|Allow searching for trust path in keyring|kde@opensource.sf-tec.de|Rolf Eike Beer}}<br />
{{FeatureTodo|KGpg|Add improved key import result window (with useful summary, filtering, reasonable default size etc.)|kde@opensource.sf-tec.de|Rolf Eike Beer}}<br />
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}<br />
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}<br />
|}<br />
<br />
= kdebindings =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdegames =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
{{FeatureTodo|KDiamond|Intelligent animation pre-caching|majewsky@gmx.net|Stefan Majewsky}}<br />
{{FeatureTodo|KDiamond|Improve time display|majewsky@gmx.net|Stefan Majewsky}}<br />
{{FeatureTodo|KDiamond|Refactor Board and Diamond classes|majewsky@gmx.net|Stefan Majewsky}}<br />
{{FeatureTodo|Kolf|Replace with Kolf 2 (help on coding, artwork and level design desired)|majewsky@gmx.net|Stefan Majewsky}}<br />
|}<br />
<br />
= kdeadmin =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
|}<br />
<br />
= kdesdk =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
{{FeatureTodo|Lokalize|Integrate snowball stemmer for glossary|shafff@NOSPAMukr.net|Nick Shaforostoff}}<br />
{{FeatureTodo|Lokalize|Continue implementing XLIFF spec|shafff@NOSPAMukr.net|Nick Shaforostoff}}<br />
{{FeatureTodo|Lokalize|Segmentation [editing] functionality|shafff@NOSPAMukr.net |Nick Shaforostoff}}<br />
{{FeatureTodo|Lokalize|Remote translation memories|shafff@NOSPAMukr.net|Nick Shaforostoff}}<br />
{{FeatureTodo|Lokalize|Integrate with nepomuk (fast stats retrieval, tag cloud - incl sharing!)|shafff@NOSPAMukr.net|Nick Shaforostoff}}<br />
|}<br />
<br />
= kdeedu =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdemultimedia =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdeaccessibility =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
|}<br />
<br />
= kdegraphics =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdebase-runtime =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdebase-apps =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdeplasma-addons =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}<br />
<br />
= kdeartwork =<br />
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;"<br />
|- style="background: #ececec; white-space:nowrap;"<br />
! Status !! Project !! Description !! Contact<br />
<br />
|}</div>Stikonas