The All About the Apps goal recognized the importance of high-quality applications in our ecosystem and resulted in many improvements in their delivery and presentation. However it didn't focus much on the application development itself. By improving and streamlining our application development story we will gain more and better applications for our users, both first-party and third-party.
To achieve this we need work in these areas:
Application Design
The Consistency goal, while having the right intentions, focused overly on Plasma and didn't end up having a huge impact on application design. There are many cases where our application design is inconsistent, either because no unified idea has been established or older applications have not been updated to new design ideas. The introduction of convergent design as a goal introduced new complexity to this. We tried many ideas and approaches, but often didn't converge (pun intended) on a common design.
To address this we first need to establish a design vision we want to work towards. Once we have such a vision we need to work towards a library set that allows application developers to implement that vision with as little effort as possible while maintaining flexibility and future-proofness.
Our Human Interface Guidelines and other design documentation needs to be updated/extended accordingly.
Application Development
Currently we have an odd fragmentation between QtWidgets- and QtQuick-based stacks (as well as hybrids). Neither are going away any time soon, so we need to plan with both for the forseable future. The trend however is clearly biased in favor of QtQuick for many reasons. There are however some things QtWidgets does better. To address this we need to:
- Create and roll out QML equivalents for functionality found in QtWidgets apps (e.g. dock widgets, command bar, etc)
- Address issues currently found in QtQuick "desktop" support, e.g. lack of proper popup windows or menu bar support
- Modernize and improve tooling compatibility of our QML code
Furthermore, in terms of general application development we should:
- Avoid/reduce redundant APIs and API fragmentation
- Fix issues with running KDE apps outside of Plasma/Linux
- Improve the integration with IDE tooling
- Enable building KDE apps with languages other than C++, e.g. Rust or Python
Development documentation
The tools, APIs, and processes for creating applications need to be documented well
- Do something about the bad state of API documentation for Kirigami and other QML modules
- Improve and extend tutorial documentation around creating new apps as well as specific functionality topics
- Establish quality guidelines for applications
- Improve, finalize, and document deployment processes for Windows, Android etc.
Community
Good apps need a whole community behind them.
- Establish a culture of continuous review and improvement, similar to KDE Review but not as a one-time-only thing
- Strengthen QA and bug triaging community
We also should look into how we can make it easier to develop KDE-aligned applications outside of the KDE umbrella and have good KDE integration for apps that don't primarily identify as KDE-aligned
- Make sure our libraries are available in popular dependency management solutions (vcpkg, conan, etc)
- Document how to achive KDE integration without tight dependencies on our libraries
- Work with collaborative upstreams like Wayland, Freedesktop, and xdg portals to improve shared building blocks
Champions
The team is:
I am willing to put work into this
- @oahshtsua - no experience with C++ and Qt but willing to learn (preferably not C++), can help organize workshops at my university
- @ognarb
- @ngraham
- @tfella
- @akselmo
- @merritt
- @hamedmasafi
- @bam
- @manueljlin
- @aakarshmj
- @tusooaw
- @bcooksley
- @gabrielbarrantes
- @gcb