=Description=
Being KDE highly based on onboarding of volunteers, each with different ideas and "scratching their own itches", there is often a lack of organization and consistency between the ecosystem as a whole. With lack of consistency I mean code redundancy, implementing the same tool multiple times. This can be seen in multiple places, both within the design of the apps, and within the KDE apps ecosystem. The first example is music applications: currently, KDE features four different music applications: amarok, juk, elisa and vvave. Or video players, there are three of them: dragon, kaffeine, kmplayer. Between these applications, elements are often used inconsistently: tabs is a good example of inconsistent behaviour (they are implemented with different behaviours in falkon, konsole, dolphin, kate and in panels). Another example is applications with list of pages on the left: systemsettings and discover both uses Kirigami-style sidebars, kontact uses a toolbar and kmymoney has a even different implementation, and so on. These are just a couple of examples but, when seen as a whole, the KDE apps often show a lack of consistency and way too much redundancy. This creates multiple problems: the user cannot recognize and learn patterns through KDE apps (the user learns Falkon tabs, but cannot use that knowledge for Konsole ones), and the developer cannot fix a bug for all applications (fixing a bug about Falkon tabs, or improving its look, will not fix it for Konsole), thus fragmentating and slowing down the development process.
Inconsistency in System Settings has been recently addressed, and the result is awesome. But inconsistency problems were not limited only to that applications, as they can easily be found in many others.
=What it will take=
I will list some problem that I found. Please consider that the list is made by examples and that it will probably grow over time. It should be taken as an example to fully understand the scope of the problem.
Inconsistency in app elements:
- Sidebar: some apps want to show a sidebar with many different pages that can be navigated through tabs. This can happen in Dolphin when panels are dropped together by the user and, in fact, the basic concept seem to be a panel with multiple tabs. Calligra has a different implementation: it uses a single panel (with the possibility to move it around) and square tabs inside it, that cannot be collapsed. Okular has a even different implementation, as it uses square tabs which can be collapsed with no panel at all. Ktorrent uses another one, with collapsable tabs as buttons with text. Kate also uses this approach, but the buttons can also be moved using the context menu. Gwenview uses tabs under the content without any panel. Skrooge uses by default multiple panels.
{F6887599}
- Another scenario is where a sidebar is used to help the user navigate through the pages of the application. A possible implementation, used by System Settings and Discover, is the kirigami list-like sidebar. A different implementation can be found in many configuration popups, such as system settings modules, where they appear on the left as rectangles with big icons. Another implementation can be seen in Kontact and Ktorrent, where a simple toolbar with button is used. Another one is kmymoney's, with rectangle on the left. Skrooge also uses rectangles but they are inside a panel, and there's the possibility to add a toolbar to do the same thing. Ksysguard is even different, featuring tabs on the top of the content. See T11153.
{F6887600}
- There's another inconsistency between the use of a menu vs the use of an hamburger button. Falkon prefer to use the latter, and Dolphin also does adding the text "Control". System Settings also features one, but it's on the left without any text. Apper puts it in the right with a separator. On the other hand, most KDE apps prefer to use a menu by default, such as Kate, Gwenview, Okular, Ark, Konsole and many others. It's not clear when an application should or should not use an hamburger button, and when it does, its location is inconsistent.
{F6887601}
- Tabs are also highly inconsistent. Falkon uses breeze-like tabs on the top with whitespace, a close button and a plus button on the right of all tabs to open a new one. Konsole puts tabs on the bottom and removes the whitespace and the plus button. Dolphin puts them on top of the content (instead of on top of the window) still without a button way to open new tabs. Kate uses a totally different one, which in no way resemble other applications, and uses lots of whitespace. On the right of the tabs there are buttons to search tabs and to split view (which is instead in the toolbar in Dolphin). Tabs are on the bottom again when putting panels together. Skrooge uses a button to add new tabs, but it's right aligned and uses a different icon.
{F6887602}
- Dolphin, Partition Manager, and may other applications, use panels that can be closed and moved around, and locked altogether. They are used by many other applications, but in Calligra they are named "dockers" and you also have a button to detach them, one to collapse them, and one to lock a single one. Skrooge does not use a name, but only provides buttons to close and detach them, thus removing any way to lock them. KmPlot removes the option to close a panel. In other applications, panels are not used when you would expect them to be: Gwenview's sidebar feels like panels but they can't be moved around and detached; Ktorrent's groupview could also easily be a panel; and so on. Also, some apps such as Dolphin, Partition Manager and Calligra show panels (/dockers?) in their menu, while some others such as KolourPaint and Skrooge do not. Finally, locking panels is inconsistent: in Dolphin you have to right-click the content, in Calligra there's a button, in Skrooge and Kolourpaint there's simply no way.
- It's not clear which apps should use a splashscreen while loading. Skrooge, Kmymoney, Krita, Karbon and Digikam all do that, while many other do not. Whether an app should have its own splashscreen or rely on the DE loading indicator should be made consistent.
- Generally, Kirigami apps and QWidgets apps feel different in many aspects. Dolphin (example) has panels and toolbars that can be moved around, while Discover is quite locked in place with a list of pages on the left and a single button on the topleft. Kirigami apps do not use the global menu, while most QWidgets apps do. Kirigami uses its own popups appearing from the bottom that takes the whole width, while QWidgets apps uses simple popup windows. There are so many others, these are just a couple of examples.
- The search widget is also different in different applications. In Kate it appears on the bottom, giving you the options to move up, down, match case sensitive and "switch to power search" in icons. On Falkon it also appears in the bottom, but it gives you buttons with text to move up and down, fails to show an icon for the match case sensitive button, and adds a "find..." label in the text input. Konqueror also uses buttons, but puts "Options" instead of match case sensitive. This is similiar to Okular, which also adds a dropdown indicator to "Options". Calligra removes the dropdown button from Option, and also changes the possible options. Dolphin instead puts the bar on the top. Kmail opens a popup.
{F6887603}
- Thank to @cblack: how loading is represented is inconsistent between applications. There's not really any consistency at all, excluding Kirigami applications. Dolphin blanks the view while loading a directory, Kate also remains blank, but sets the cursor to a loading animation, Kirigami applications use a spinning view-refresh icon in their list views when loading (see: Discover and its tendencies to load indefinitely), KMail uses plain loading bars wherever it feels like it, Systemsettings5 freezes the view and sets the cursor to a loading animation, KDE Help uses freezes the view and shows a message in the bottom left corner, the icon selection dialog used in places such as editing application entries freezes the view, shows a loading bar, and sets the cursor to loading.
- Scrollbars are inconsistent between apps, see T9126
- As @davidhurka notices, apps are inconsistent regarding automatic scrolling (that scrolling that happens when you drag something to the edges of a scrollable view).
| Application | Scroll Appearance | Required Action |
| ----------- | ----------------- | --------------- |
| Okular | N pixels per frame, 60 fps | Drag the magnifier or draw a selection rectangle more than 5 pixels beyond the edges, distance determines N |
| Okular | Smooth, with decelerating speed | Drag an annotation against the edges |
| Okular | N pixels per frame, 33 fps or so | Activate auto scrolling with {nav Shift + Down } |
| KMail Folder View | N Items per step | Drag a folder or message on the first/last item in the view and hold, dontknowwhat determines N |
| Konsole | 1 line per step | Draw a selection beyond the edges, distance determines speed. If view edges are screen edges, already starts near the view edges
| Falkon (and many other text views) | Very fast | Draw a selection near the edges, distance determines speed |
| Dolphin | Smooth | Drag an item or draw a selection near the edges, distance determines speed. “Near” can be pretty far for the bottom edge, which often annoys me. |
- KDE products are highly inconsistent regarding their websites / homepages, both because of their always different location and look. Even the division in categories of apps are inconsistent: games use games.kde.org/game.php?game=*, kde use edu.kde.org/*, kontact use kontact.kde.org/components/* , and so on. Lots of applications do not belong to the category they should be in, lots of application should have a website, and lots of applications have their website link broken.
| Website location | Applications that use it |
| ---------------- | ------------------------ |
| Only kde.org/applications/*/org.kde.* | Cervisa, Cuttlefish, KAppTemplate, KCachegrind, KDiff3, KImageMapEditor, Kompare, Plasma Engine Explorer, Plasmoid Viewer, Parley, Rocs, Bomber, Grantier, Kajongg, Kapman, KBlocks, KGoldrunner, Kigo, KJumpingCube, Naval Battle, Knights, Kolf, Konquest, KReversi, KSirk, KSnakeDuel, KSpaceDuel, Potato Guy (uh), Kubrick, LSkat, Palapeli, KColorChooser, KGraphViewer, KRuler, Skanlite, KGet, KRDC, KTorrent, PIM Data Exporter, SieveEditor, Dragon Player, K3b, Kaffeine, KMix, Plasma Camera, KEuroCalc, KHelpCenter, Apper, Discover, KSysGuard, KDE Partition Manager, Yakuake, Ark, Filelight, KBackup, KFind, Kleopatra, KMag, KMouseTool, KMouth, KTeaTime, Spectacle |
| External website: *.org | KDevelop, GCompris, Digikam, Kolourpaint, Kphotoalbum, Krita, Falkon, Kdenlive, Kexi, Kmymoney, Skrooge, Tellico, Kate, krusader, Plasma Mobile |
| Specific link to games.kde.org/game.php?game=* | KAtomic, KBlackbox, Kbounce, KBreakout, KDiamond, KFourInLine, Kiriki, Klickety, KLines, KMahjongg, KNetwalk, KPat, KShisen, KSudoku |
| Page in edu.kde.org/* | Artikulate, Blinken, Cantor, Kalgebra, Kalzium, Kanagram, KBruch, KGeography, Khangman, Kig, Kiten, Klettres, KmPlot, Kstars, Ktouch, Kturtle, Kwordquiz, Step |
| Page in kontact.kde.org/components/* | Akregator, KMail, KAddressBook, Kontact, Korganizer, Knotes |
| Page in calligra.org/* | Flow, Plan, Calligra Sheets, Stage, Words |
| Page in utils.kde.org/projects/* | KDiskFree, KDE Wallet Manager, Kcalc, KCharSelect, KGpg, Ktimer, Sweeper |
| Subdomain: *.kde.org | Umbrello, Labplot, Marble, Minuet, Okular, Choqok, Konversation, Amarok, Juk, Konsole, Zanshin, KDE Neon |
| Phabricator | Heaptrack, Massif-visualizer |
| Userbase | Lokalize, KBibTeX, SymbolEditor, Gwenview, KXStitch, Kopete, Kamoso, Dolphin, KRename, Kronometer, Okteta, RSIBreak |
| Community Wiki | Elisa, KDEConnect |
| Page on kde.org/* | Plasma |
| Link to cgit (?) | Kollision, Picmi |
| Link to sourceforge (?) | KWave, Kile, Smb4K |
| Link to kde.org (???) | Kdesvn, Kirigami Gallery, Kmines, KSquares, Banji, KMPlayer, ISO Image Writer, Info Center, Ksystemlog, Muon package manager, Kfloppy |
| Generic link to games.kde.org (???) | Bovo, Killbots |
| Redirect to digikam | Showfoto (???) |
| Redirect to kate | Kwrite (???) |
| Redirect to page itself (???) | Konqueror |
| Page on astrojar.org.uk (???) | Kalarm |
Inconsistency in Plasma:
- Hover in plasma panels: all widgets implement a different hover effect. The task manager makes the hovered app blue, application launcher makes the icon a bit lighter, while most other widgets do nothing. This is very inconsistent, and the hover effect should be managed the same way for all widgets, like the focus effect is (the blue line on the top).
- There is a very strong inconsistency in plasma icons in panels. Some icons are colorful in both small and big panels, some are always monochrome and some change depending on panel size. The result is mixing colorful and monochrome icons in a very non-pleasant way.
Redundancy in app ecosystem:
- Latte dock and plasma panel (both KDE projects) features clearly overlap. Latte dock is able to support way more features and its development is much more active. On the other hand, plasma panels seem to be more stable and less resource-hungry. KDE should only have one way of having panels and should provide most of Latte features by default. Right now, many options the user might like (such as center aligning widgets or making a panel transparent when not touching any app) are supported by Latte, but do not come by default in plasma.
- Plotting applications: KmPlot, LabPlot and KAlgebra overlap in the feature of plotting functions - KAlgebra and KmPlot especially should probably be the same applications, as they provide very similiar features, but both apps lack features of the other one.
- KRunner, the search widget, and the application launcher are also very similiar in their functionality, and they are expected to behave the same way. They do not, as KRunner has many more features that are not available in the other two, such as spelling and calcolator (and many, many others). This is a problem, as it makes the user have to use different search methods based on what he wants to search, when all the features could be implemented in all methods.
- KPhotoAlbum, Gwenview and Pix all have the job to manage and show pictures. KDE would benefit widely from having a single app with all the features of those three, and it would fragmentate development less.
- Falkon and Konqueror are both KDE Browsers. Konqueror has features that Falkon might make use of, such as being able to see files (such as PDF, text and pictures) directly in the application. Konqueror also needs a lot of love Falkon has, such as Falkon's adress bar being also able to search the web. It's also worth noting that KDE seem to consider both applications so little that it ships Firefox by default in its own distros (Kubuntu / Neon), which is understandable when you consider that both apps are lacking KDE's own features such as Browser Integration, but it looks like KDE does not consider its own applications.
- Music applications. Currently, KDE has four of them: Amarok, Elisa, JuK and Elisa. This fragmentation is terrible for the development of a good application, and it also fragment the user base. Focusing on a single application would speed up development and attract more users.
- Video applications have a similiar situation, with Kaffeine, Dragon Player and KmPlayer. The fragmentation of these apps seems to be actively hurting their development, and it's no wonder that they are not shipped in KDE own distros, preferring VLC. Again, this hurts KDE brand as provider of quality apps.
- Apper and Discover are also highly overlapping in features, and one of them (Apper?) should probably be discontinued.
- Dolphin, Krusader and Index are all file managers. Krusader is quite similiar to Dolphin with split view, but it provides more options that Dolphin could use. Having a single app instead of three would help its development.
- KDE features three simple text editors: Kwrite, Kate and Nota. Again, KDE should avoid this redundancy and only develop one of them.
- KNotes, Nanonote, the notes widget and buho are all notetaking applications. They all have slighly different features, and they would probably benefit from joining together in a single application.
- Kvantum. Ehm. I know there's few people within the KDE devs that like it, but users do use it. It can often be seen in the unofficial Telegram chat for Plasma, and it's pretty much everywhere in r/unixporn. In fact, kvantum made Plasma the second most popular DE in r/unixporn, which is great news for Plasma promo and brand. People use it, and that's because it offers options that KDE itself do not provide. Having multiple ways to configure plasma instead of a single, default, one fragmentates themes: if you look at KDE store, there's a section for Kvantum themes, which cannot be installed normally from System Settings. KDE should offer enough features to theme creators to make it so that this fragmentation does not happen, and avoiding users using hacky third-party apps to get that features.
- Finally, Konsole vs Station and Kontact vs Union, Skrooge vs Kmymoney are some other small redundancies.
Very inconsistent apps:
- Gwenview uses a file viewer that's inconsistent with anything else, as it uses a different colorscheme (grayish?) and is totally different from Dolphin, Krusader and Konqueror. This is a major consistency problem for this application.
{F6887633}
- Latte dock is highly inconsistent in its look, as it uses elements that are not from Breeze at all (such as an on/off switch). Again, this is a major consistency problem. (see http://tipsonubuntu.com/wp-content/uploads/2017/05/latte-settings.jpg)
- Okular's annotation panel is absolutely inconsistent with Breeze. A new one, using toolbars, is in development.
- Kdenlive seem to not be using the default colorscheme, using Breeze Dark where the default is Breeze.
Inconsistency in KDE internal ecosystem:
- Gitlab vs Bugzilla vs Phabricator: currently it's very hard to keep track of development of applications, as there's a very strong redundancy in KDE internal software to manage it. To resolve this, the switch to gitlab would probably be encuraged.
- IRC vs Matrix vs Mailing lists vs Telegram: it's also very hard to keep track of communication, as there are many different chats. There are bridges, but sometimes they work slowly, and sometimes chats are only in a certain platform (such as promovideo being only on matrix). This redundancy makes organization difficult as it makes people miss important pieces of information.
=How we know we succeeded=
- A decrease in the number of KDE apps, but a strong increase in the quality of the remaining ones.
- Less bugs, and easier to fix (fixing a bug for app X should improve all applications using the same elements)
- Users enjoing more the applications, as they understand better how to use them (learning it one time will suffice for all)
- Users tweaking more applications, for they know better how to use the technologies we give them (such as, if okular sidebar will become panels with tabs like in Skrooge, users moving around the panels to find their optimal location)
=Relevant links=
=I am willing to put work into this=
- Niccolo' Venerandi (@niccolove): providing patches, testing apps, finding inconsistencies & smiling
- Nate Graham (@ngraham): submitting patches, coordinating activities, & smiling (😄)
- Noah Davis (@ndavis): patches
- Filip Fila (@filipf ): research, patches
=I am interested=
- Niccolo' Venerandi (@niccolove)
- Björn Feber (@GB_2)
- Carson Black(@cblack)
- Lydia Pintscher (@lydia)