Building on new pillars: Activities and KPeople in Plasma 5.3

With the release of Plasma 5.3 only days away, it's time to start talking about some of the new features users of Plasma Desktop will get their hands on in the new version.


Many Plasma Desktop users are already familiar with Activities as a toolbox to divide and organize their personal computing environment into shards: You can set up and name activities, distribute application windows across them, associate relevant files with them, switch between, start and stop them to your heart's content.

A previously less explored side to the Activities story is what the technology can offer while working inside any one of your activities - thus even if you don't bother with setting up more than one and just stick to the default activity created for you the first time you log into Plasma.

This changes with Plasma 5.3! New work to make it easier for applications to enter useful data into the activity's knowledge store, as well as run smart queries against it, enable some new and improved functionality in both the Application Menu and Task Manager widgets in this release.

In Application Menu, all of the Recent categories (one of which is new) are now powered by Activities. One immediate advantage of this is that their contents now change with the activity you're in, but as promised it also provides several other inherent benefits:

The three Recent categories in Application Menu 5.3
The three Recent categories in Application Menu 5.3

  • Recent Applications used to be only aware of applications launched through Application Menu itself. With launch info now retrieved from the Activities knowledge store and all other launchers (for example KRunner, but also just opening a document from Dolphin is a launch) free to enter data there, this submenu can now gather much more recent system activity in one place. Furthermore, new data sources can be added as time goes on without having to touch Application Menu itself.
  • Recent Documents benefits in a similar way. Over the older KRecentDocument framework used before, the Activities backend offers access to a longer, richer backlog of document use data. User control over the data is also enhanced - it's now possible to forget about individual documents from the context menu, instead of being forced into a complete wipe.
    But that's not all on the documents front! Activities enable both Application Menu and Task Manager to easily query for recent documents by the application they were opened in, leading to lists of recent docs in the context menus of various types of application launcher buttons:

    Per-application recent documents in Application Menu and Task Manager 5.3
    Per-application recent documents in Application Menu and Task Manager 5.3

  • Recent Contacts is a brand new addition to Application Menu 5.3 showing the people you've been in touch with recently, along with their realtime status information. The first part of this is handled through Activities; dealing in people data, however, is facilitated by a recent addition to KDE Frameworks 5: KPeople.


Application Menu's Recent Contacts category in Plasma 5.3
Recent Contacts in Application Menu 5.3: Powered by Activities and KPeople

The KPeople framework allows applications (including the shell) to retrieve lists of people and information about them (status, contact metadata), as well as perform actions on them - e.g. initiate a chat, as used by Application Menu when you click on an entry in the Recent Contacts category.

The data backing this interface is provided by backend plugins. The first implementer of a fully-featured KPeople backend is of course our very own Telepathy instant messenging suite. In the future, other KDE communication apps will integrate with KPeople, making conversations had e.g. in KDE's IRC client Konversation pop up in Application Menu as well.

Closing thoughts

Both the enhanced Activities backend and KPeople are very fresh. While we work hard to line up everything behind them (implement additional data sources and optimize those implementations, for example), they are still exposed somewhat carefully in Plasma Desktop 5.3. The Recent Contacts category in Application Menu, for example, is disabled in this release by default, because a Telepathy release entering conversation data into the Activities knowledge store is still pending. It can be enabled from the widget's config dialog.

In future releases you can expect us to make more of these pillars as our confidence grows, with additional UI functionality built on them and more prominent placements of it in various areas of the shell. Lots of work ahead!


PyKDE Future: Seeking a New Maintainer

For anyone who has been paying any attention of PyKDE5 over the last year or so, it is no secret that development and maintenance has been at a standstill. I've been very busy with a family and small children, and that eats time like you wouldn't believe. (Unit number 2 is almost 6 months now, healthy and happy I can report.) But another important factor is that my interests have shifted towards web related technologies over the last few years.

So, it is time to put the call out for a new maintainer or maintainers. I would also like to put in a bit of an apology to anyone who has depended on PyKDE5 and has had to put up this wishy-washy state of limbo for the project. And I would also like the thank people for the occassional drive-by commit which has helped keep the existing functionality mostly working.

Anyone interested should contact me. I'm willing to help and advise anyone who wants to learn the ropes, and to facilitate a transition to new management. If you are interested and curious but don't want to stick your hand up immediately and commit yourself, then still email me and I can forward on some information to you which may help explain how PyKDE5 works and is updated. It should give you an idea of the task at hand.


A new year and a whole lot of stuff (part 1 of 2)

It's been an awful while since I last blogged, we all go though periods where things get rather crazy all at once or boring, mine went though both.


Improving KDE's support for Korean (and other CJK languages)

The Hunminjeongeum (or 훈민정음). This 1446 document first introduced the modern Korean writing system to the Korean people and is now listed among the UNESCO Memory of the World. (Photo: Jeon Han, CC BY-SA 2.0)

In addition to my usual work on things like Plasma, I've been hacking away on bugs that pose barriers to the use of the Korean language and writing system in KDE/Qt systems lately (I took up studying Korean as a new hobby). As a bonus, many fixes also tend to help out users of other CJK (Chinese, Japanese, Korean) languages, or even generally of languages other than English.

Localization defects come in many shapes and forms and tend to be fun puzzles to solve, with lots of vertical cross-cutting through the stack. Here's a few examples from my plate in the past half year:

Kate: Input method / IME / ibus support doesn't seem to work well in KF5 version and the resulting Qt: ibus plugin badly maps text attributes to QTextCharFormat

On Linux systems using IBus for complex writing system input (which is most of our desktops), Qt 5 would generate QInputMethodEvents with badly-formed formatting directives, causing pre-edit text (such as incomplete Hangul blocks) to turn invisible in some applications. This fixes text entry in Korean and any other language doing complex in-line composition in KWrite/Kate, KDevelop and other applications built on KDE's KTextEditor framework (and likely others).

Amarok: Podcast save location containing Korean characters are garbled

A fun mess where a chain of QString::arg() calls against a template string would go awry by replacing a URL with percent-encoded Korean into the template, causing subsequent calls to trip up on unexpected % placeholders. Your Korean podcasts will now work nicely again in Amarok.

KCodecs and kdelibs: KCharsets does not support CP949 encoding

Code page 949 is a superset of the EUC-KR character encoding. Introduced by Microsoft, it supports additional Korean characters not supported by EUC-KR and remains in use on some Korean websites and IRC networks (unfortunately - please switch to UTF-8!). QTextCodec gained support for CP949 in the Qt 4.x series, but our KCharsets was never sync'ed up to those enhancements, hiding the codec from selection UIs throughout KDE's products. The effective impact of this is reduced somewhat by Qt 5's support for ICU, which is smart enough to handle CP949 transparently in EUC-KR mode, but the situation was still confusing for users nonetheless (and left broken when running non-ICU builds of Qt).

This last one is interesting because patches to address this were actually supplied by the community in 2010 already, but they sat around unloved until recently despite not being very complicated - developers are often reluctant to engage in tickets like this because they feel out of their depth, or simply struggle with the setup necessary to reproduce a problem. I worry this may cause a bad feedback cycle of bugs not being reported by users who don't have the time or energy to educate developers about the problem space.

If you're a user of Korean (or other CJK languages) and KDE, please do report them. I'll be keeping an eye out. If you're a developer and struggling with Korean or CJK support in your application, you should consider getting in touch, too.


New TODO application that blocks distractions while you work

TL;DR: flow is a sticky TODO manager with support for the pomodoro technique and blocks distractions (cat pictures too) while you're focusing on a task: git, AUR, Windows, OSX

"A good task manager application is one that can beat a .txt file."


Comparing text style support in Calligra, Abiword and LibreOffice

This weekend I spent time on preparing for the ODF Plugfest again. The test software ODFAutoTests now has many more tests. Most new tests are for text styles. I've created tests for each of the possible attributes in <style:text-properties/>.


Table View and Report Barcodes junior jobs

Kexi has improved quite a bit since the last time, especially in Reports. We're close to supplementary 2.8.7 release within Calligra, then 2.9 will follow and Qt5/KF5-based 3.0 with a shiny mask.

We're about to reach the point where it's very very hard to find comparable Free Software reporting tool in terms of usability. If you don't know why reporting software may be useful, try to generate 50 or 500 pages PDF out of structured data with just mouse clicks and no programming. Get the report file generated in 2 seconds or less. Or print the report directly without creating intermediate PDF or ODF or HTML files that will pollute your computer... It's data that matters.


ODFAutoTests gearing up towards the 10th ODF Plugfest in London

In two weeks time, users and developers of OpenDocument Format software will meet up for a two day ODF plugfest in London. In preparation of the plugfest, I have spent last weekend, refreshing ODFAutoTests. ODFAutoTests is a tool for creating test documents for ODF software and running these documents through the different implementations.


Blog Moved

I've moved my developer blog to my vanity domain jriddell.org, which has hosted my personal blog since 1999 (before the word existed). Tags used are Planet KDE and Planet Ubuntu for the developer feeds.

Sorry no DCOP news on jriddell.org.