Jump to content

SoK/Ideas/2023: Difference between revisions

From KDE Community Wiki
< SoK
 
(14 intermediate revisions by 5 users not shown)
Line 70: Line 70:
'''Brief explanation:'''  
'''Brief explanation:'''  


The idea would be to add some integration/ui testing using the accessibility api in an QML app (Tokodon or Kalendar are preferred, but other KDE QML app might be possible if you prefer working on another app and the maintainer is happy to co-mentor). Harald wrote a great blog post about how it works here https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/ .
The idea would be to add some integration/ui testing using the accessibility api in an QML app (Tokodon or Kalendar are preferred, but other KDE QML app might be possible if you prefer working on another app and the maintainer is happy to co-mentor). Harald wrote a great blog post about how it works here https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/ . This would require both adding test cases and also fix the application so that the test cases can interact with the application correctly.


For Tokodon, the challenge is that for testing we need to not do any network request and mock all the network interaction. Carl already built some integration for that recently as part, but you would need to extend it.
For Tokodon, the challenge is that for testing we need to not do any network request and mock all the network interaction. Carl already built some integration for that recently as part, but you would need to extend it.
Line 82: Line 82:
'''Mentor:''' Carl Schwan #kde-accessibility:kde:org on matrix
'''Mentor:''' Carl Schwan #kde-accessibility:kde:org on matrix


=== Accessibility: Work on improving the accessibility of KDE's websites ===
=== Accessibility: Work on improving the accessibility of KDE's websites (slot filled, do not submit a proposal for it) ===


'''Project type:''' Website maintenance
'''Project type:''' Website maintenance


'''Brief explanation:''' Many of KDE's website lack even the most basic accessibility features, such as alt descriptions for images or the correct rendering on small screens, like thos found on mobile phones. The candidate will be required to comb KDE's mains sites (to start with) and add accessibility features to bring them up to spec according to the accessibility guidelines laid out in the latest versions of [https://www.w3.org/WAI/standards-guidelines/wcag/ WCAG].
'''Brief explanation:''' Many of KDE's website lack even the most basic accessibility features, such as alt descriptions for images or the correct rendering on small screens, like those found on mobile phones. The candidate will be required to comb KDE's mains sites (to start with) and add accessibility features to bring them up to spec according to the accessibility guidelines laid out in the latest versions of [https://www.w3.org/WAI/standards-guidelines/wcag/ WCAG].


'''Expected results:''' Fully accessible websites for our visitors.
'''Expected results:''' Fully accessible websites for our visitors.
Line 94: Line 94:
'''Mentors:''' Paul Brown, Aniqa Khokhar at the [https://matrix.to/#/#kde-promo:kde.org Promo channel] on Matrix.
'''Mentors:''' Paul Brown, Aniqa Khokhar at the [https://matrix.to/#/#kde-promo:kde.org Promo channel] on Matrix.


=== Accessibility: Plasma Accessibility Widget (Slot filled)===
'''Project type:''' Coding
'''Brief explanation:''' On Plasma Desktop, a user has to open System Settings to turn on/off accessibility features. A Plasma widget will help simplify the process by gathering accessibility options in one place.
'''Expected results:''' Create an accessibility widget to let people quickly turn on/off accessibility features (including but not limited to screen reader, sticky keys, contrast themes) on desktop. People can reach the widget by simply clicking an icon in the system tray.
'''Knowledge Prerequisites:''' Knowledge of developing Plasmoids is desirable
'''Mentor:''' Fushan Wen @fusionfuture:kde.org at [https://matrix.to/#/#kde-accessibility:kde:org #kde-accessibility:kde:org on Matrix].


=== Sustainability 1: Preparation of KDE apps for Blue Angel eco-certification ===
=== Sustainability 1: Preparation of KDE apps for Blue Angel eco-certification ===
Line 120: Line 131:


'''Mentors:''' Karanjot Singh @drquark:kde.org, Emmanuel Charruau @allon:kde.org, and Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix
'''Mentors:''' Karanjot Singh @drquark:kde.org, Emmanuel Charruau @allon:kde.org, and Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix
=== Sustainability 3: Measurement of energy consumption with Selenium ===
'''Project type:''' Coding
'''Brief explanation:''' In this project you will set up Selenium using the Selenium AT-SPI and replicate an existing unit test written with KdeEcoTest to test GCompris. By measuring then comparing the energy needed by KdeEcoTest and Selenium we will be able to decide if and how we can use Selenium to run energy consumption scenarios. Selenium AT-SPI for QT is still in an early stage but it is relevant to KDE as a unit testing tool and could become a great tool for energy consumption measurement.
The SoK23 Selenium project has two main objectives:
1. To reproduce the behavior of the KdeEcoTest script for GCompris in order to compare energy consumption results between the two solutions.
2. To write a guide to install the Selenium AT-SPI driver on the test computer and to write a tutorial to explain how the script which will be written works.
Information:
- https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/
- https://invent.kde.org/sdk/selenium-webdriver-at-spi
'''Expected results:''' Reproduce the KdeEcoTest script for GCompris with Selenium / write a guide to using Selenium AT-SPI
'''Knowledge Prerequisite:''' Selenium
'''Mentors:''' Emmanuel Charruau @allon:kde.org and Harald Sitter @sitter:kde.org on Matrix


=== Systematization 1: Automate Flatpak checks in GitLab Invent CI ===
=== Systematization 1: Automate Flatpak checks in GitLab Invent CI ===
Line 132: Line 167:


'''Mentor:''' [https://community.kde.org/User:Ravier Timothée Ravier] and Aleix Pol. Please reach out to [https://matrix.to/#/#flatpak:kde.org #flatpak:kde.org channel on Matrix].
'''Mentor:''' [https://community.kde.org/User:Ravier Timothée Ravier] and Aleix Pol. Please reach out to [https://matrix.to/#/#flatpak:kde.org #flatpak:kde.org channel on Matrix].
=== Spectacle: Improving the annotation tools (Slot filled) ===
'''Project type:''' Coding
'''Brief explanation:'''
Spectacle has a limited annotation tool that allows users to make quick edits to a screenshot. Currently it lacks an eraser tool that can delete pen annotations quickly and is instead relying on the select tool to delete markups which would be especially inconvenient for removing the many strokes in handwriting. It also lacks an option to cancel all annotations should the user change his mind. It could also use a cropping option should the user decide to make additional edits to an already selected region.
Additional improvements that could be implemented include an option to draw splines, polygons, more regular shapes, and perhaps even accuracy options when approximating pen strokes. These features can be modelled after other drawing software like Krita, PaintDotNet, OpenToonz and Window’s Snipping Tool.
'''Expected results:''' A more feature-rich Spectacle for intuitive and convenient screenshotting and annotating comparable to that of Window’s Snipping Tool.
'''Knowledge Prerequisite:''' C++, Qt, QML knowledge (or willingness to learn)
'''Mentor:''' Bharadwaj Raju @bharadwaj-raju:kde.org on Matrix
=== Plasma: Better holiday support in the digital clock widget (Slot filled) ===
'''Project type:''' Coding
'''Brief explanation:''' There is a holiday calendar plug-in and it can show recent holidays in a list. It would be more intuitive if holidays can also be displayed in those day grids in the digital clock widget. You can observe how sub-label works by enabling [https://invent.kde.org/plasma/kdeplasma-addons/-/tree/master/plasmacalendarplugins/alternatecalendar the alternate calendar plugin], and some screenshots are available [https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/112 here].
'''Expected results:''' Utilize [https://invent.kde.org/frameworks/kdeclarative/-/blob/389db3647c6aa119c0fcbf170fbdec3b9a655031/src/calendarevents/calendareventsplugin.h#L193 the existing sub-label feature] and integrate it with [https://invent.kde.org/plasma/plasma-workspace/-/tree/master/plasmacalendarintegration the holiday plug-in] to show holidays under day numbers.
'''Knowledge Prerequisites:''' C++, Qt, QML knowledge (or willingness to learn)
'''Mentor:''' Fushan Wen @fusionfuture:kde.org at [https://matrix.to/#/#plasma:kde.org #plasma:kde.org on Matrix].

Latest revision as of 15:09, 14 January 2023

Konqi is giving a lesson!

Ideas

Information for mentees

These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, contact the developers and find out more about the particular suggestion you're interested in.

When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!

If there is no specific contact given in the idea, you can ask questions on the general KDE development list [email protected]. See the KDE mailing lists page for information on available mailing lists and how to subscribe.

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

Sample project

Project type: Coding / Web Development / Promo / Translation

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

When adding an idea to this section, please try to include the following data:

  • if the application is not widely known, a description of what it does and where its code lives
  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • mailing list or IRC channel for your application/library/module
  • your name and email address for contact (if you're willing to be a mentor)

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.

Ideas

Your Own Idea: Something that you're totally excited about

Project type: Coding / Web Development / Promo / Translation

Brief explanation: Do you have an awesome idea you want to work on with KDE but it isn't among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.

Expected results: Something you and KDE love

Knowledge Prerequisite: Probably C++ and Qt, but it depends on your project

Mentor: Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.

When adding an idea to this section, please try to include the following data:

  • if the application is not widely known, a description of what it does and where its code lives
  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • mailing list or IRC channel for your application/library/module
  • your name and email address for contact (if you're willing to be a mentor)

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.


Accessibility: Work on improving the accessibility of Kalendar or Tokodon

Project type: Coding

Brief explanation:

The idea would be to add some integration/ui testing using the accessibility api in an QML app (Tokodon or Kalendar are preferred, but other KDE QML app might be possible if you prefer working on another app and the maintainer is happy to co-mentor). Harald wrote a great blog post about how it works here https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/ . This would require both adding test cases and also fix the application so that the test cases can interact with the application correctly.

For Tokodon, the challenge is that for testing we need to not do any network request and mock all the network interaction. Carl already built some integration for that recently as part, but you would need to extend it.

For Kalendar, the challenge is that the app is relatively big but you won't need to test everything. Fortunately it is possible to use Kalendar without any network integration, so no need to mock part of the application.

Expected results: More accessibility in some apps and hopefully some great blog posts about that you learned:)

Knowledge Prerequisite: QML knowledge is recommended or willingness to learn . Same with python and general accessibility knowledge.

Mentor: Carl Schwan #kde-accessibility:kde:org on matrix

Accessibility: Work on improving the accessibility of KDE's websites (slot filled, do not submit a proposal for it)

Project type: Website maintenance

Brief explanation: Many of KDE's website lack even the most basic accessibility features, such as alt descriptions for images or the correct rendering on small screens, like those found on mobile phones. The candidate will be required to comb KDE's mains sites (to start with) and add accessibility features to bring them up to spec according to the accessibility guidelines laid out in the latest versions of WCAG.

Expected results: Fully accessible websites for our visitors.

Knowledge Prerequisites: HTML, CSS, Hugo, GitLab.

Mentors: Paul Brown, Aniqa Khokhar at the Promo channel on Matrix.

Accessibility: Plasma Accessibility Widget (Slot filled)

Project type: Coding

Brief explanation: On Plasma Desktop, a user has to open System Settings to turn on/off accessibility features. A Plasma widget will help simplify the process by gathering accessibility options in one place.

Expected results: Create an accessibility widget to let people quickly turn on/off accessibility features (including but not limited to screen reader, sticky keys, contrast themes) on desktop. People can reach the widget by simply clicking an icon in the system tray.

Knowledge Prerequisites: Knowledge of developing Plasmoids is desirable

Mentor: Fushan Wen @fusionfuture:kde.org at #kde-accessibility:kde:org on Matrix.

Sustainability 1: Preparation of KDE apps for Blue Angel eco-certification

Project type: Documentation and script testing

Brief explanation: Currently only one computer program in the Global Ecolabelling Network is certified with the Blue Angel ecolabel: KDE's Okular. As part of the new sustainability goal, we would like to add more KDE apps, in particular GCompris and Kate, to the list.

To obtain the Blue Angel ecolabel, applications must demonstrate compliance with a list of criteria, including energy consumption transparency and user autonomy. KDE has an advantage here, since being Free Software we are already fulfilling many aspects of the criteria. The candidate will be responsible for completing what is needed to submit at least two applications for Blue Angel eco-certification, including (a) updating online documentation for the user autonomy criteria for GCompris and Kate, and (b) testing usage scenario scripts before the software can be measured in the community lab.

Expected results: Documentation of user autonomy criteria for GCompris and Kate, testing usage scenario scripts for these apps.

Knowledge Prerequisites: None ... but familiarity with GitLab, Hugo, Python/xdotool is a plus.

Mentors: Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix.

Sustainability 2: Improve "KDE Eco Test" emulation tool

Project type: Coding

Brief explanation: Sustainability is one of KDE's goals for the next two years. One aspect of this goal is to measure the energy consumption of KDE software. To do this, it is necessary to use an emulation tool to create usage scenario scripts. "KDE Eco Test" is one such tool, but it needs some fixes. A list of to-dos can be found at the repository's README.

Expected results: At the end of the project several of the to-dos in the above list should be resolved (while new ones may be added).

Knowledge Prerequisite: Coding in Python, basic knowledge of git and automation tools

Mentors: Karanjot Singh @drquark:kde.org, Emmanuel Charruau @allon:kde.org, and Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix

Sustainability 3: Measurement of energy consumption with Selenium

Project type: Coding

Brief explanation: In this project you will set up Selenium using the Selenium AT-SPI and replicate an existing unit test written with KdeEcoTest to test GCompris. By measuring then comparing the energy needed by KdeEcoTest and Selenium we will be able to decide if and how we can use Selenium to run energy consumption scenarios. Selenium AT-SPI for QT is still in an early stage but it is relevant to KDE as a unit testing tool and could become a great tool for energy consumption measurement.

The SoK23 Selenium project has two main objectives:

1. To reproduce the behavior of the KdeEcoTest script for GCompris in order to compare energy consumption results between the two solutions.

2. To write a guide to install the Selenium AT-SPI driver on the test computer and to write a tutorial to explain how the script which will be written works.

Information:

- https://apachelog.wordpress.com/2022/12/14/selenium-at-spi-gui-testing/

- https://invent.kde.org/sdk/selenium-webdriver-at-spi

Expected results: Reproduce the KdeEcoTest script for GCompris with Selenium / write a guide to using Selenium AT-SPI

Knowledge Prerequisite: Selenium

Mentors: Emmanuel Charruau @allon:kde.org and Harald Sitter @sitter:kde.org on Matrix

Systematization 1: Automate Flatpak checks in GitLab Invent CI

Project type: Coding / CI

Brief explanation: Flatpak is a new method of packaging and distributing applications that let KDE developers offer them easily for a lot of users via Flathub. Automating build and packaging checks in CI is one of KDE's goals for the next two years (Automate and systematize internal processes). Building on the work from a previous SoK project, you will setup Flatpak builds in KDE's GitLab CI (invent.kde.org) for KDE Applications. See https://invent.kde.org/packaging/flatpak-kde-applications#flatpak-manifests and https://community.kde.org/Guidelines_and_HOWTOs/Flatpak.

Expected results: Flatpak packaging automated in GitLab Invent CI for as many KDE Apps as possible.

Knowledge Prerequisite: Shell scripting, Git basics. Light knowledge in CI systems (GitLab CI, GitHub Actions), build systems (CMake), packaging, Flatpak and C++/Qt will help but not required.

Mentor: Timothée Ravier and Aleix Pol. Please reach out to #flatpak:kde.org channel on Matrix.

Spectacle: Improving the annotation tools (Slot filled)

Project type: Coding

Brief explanation:

Spectacle has a limited annotation tool that allows users to make quick edits to a screenshot. Currently it lacks an eraser tool that can delete pen annotations quickly and is instead relying on the select tool to delete markups which would be especially inconvenient for removing the many strokes in handwriting. It also lacks an option to cancel all annotations should the user change his mind. It could also use a cropping option should the user decide to make additional edits to an already selected region. Additional improvements that could be implemented include an option to draw splines, polygons, more regular shapes, and perhaps even accuracy options when approximating pen strokes. These features can be modelled after other drawing software like Krita, PaintDotNet, OpenToonz and Window’s Snipping Tool.

Expected results: A more feature-rich Spectacle for intuitive and convenient screenshotting and annotating comparable to that of Window’s Snipping Tool.

Knowledge Prerequisite: C++, Qt, QML knowledge (or willingness to learn)

Mentor: Bharadwaj Raju @bharadwaj-raju:kde.org on Matrix

Plasma: Better holiday support in the digital clock widget (Slot filled)

Project type: Coding

Brief explanation: There is a holiday calendar plug-in and it can show recent holidays in a list. It would be more intuitive if holidays can also be displayed in those day grids in the digital clock widget. You can observe how sub-label works by enabling the alternate calendar plugin, and some screenshots are available here.

Expected results: Utilize the existing sub-label feature and integrate it with the holiday plug-in to show holidays under day numbers.

Knowledge Prerequisites: C++, Qt, QML knowledge (or willingness to learn)

Mentor: Fushan Wen @fusionfuture:kde.org at #plasma:kde.org on Matrix.