JAN
17
2015

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

Hunminjeongeum
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.

OCT
27
2014

Beyond the color pickers

Andy, thanks so much for picking up the topic of color pickers (pun intended).

I'd like to discuss cases when accuracy is not as important at results. In this case there's a problem of abundance of choice. You don't have time to quickly and correctly pick one from the 16777216 colors. Plus alpha value? Come on! Whenever you're confronted with a photoshop/gimp-like color picker you either choose random color, or single color that's globally predefined in a palette. I also understand that very few 'casual' users maintain own palettes for consistency.

SEP
25
2014

2.8.6 → 2.9 → 3.0 → ...

That was my first Akademy after a while, I've been following previous two with kids on my lap. I think Brno turned out to be both a pretty destination and decent host for all KDErs.
A new Kexi contributor Wojtek Kosowicz came with me. You can read about him here and his recent story here. Recently in Kexi there is a trend of new contributors coming from Poland, and specifically from Warsaw. I've heard they're a bit regretting afterwards they didn't join the Akademy too but I trust that will improve next year :)

AUG
16
2014

Konqueror is looking for a maintainer

For quite some time now (OK, many years...) I haven't had time for Konqueror.
KDE Frameworks 5 and Qt 5 have kept me quite busy.

It's time to face the facts: Konqueror needs a new maintainer.

This is a good time to publish the thoughts we had many years ago about a possible new GUI for Konqueror.

JUL
17
2014

Konversation goes Frameworks 5

The Konversation team has started porting the application to Frameworks 5 earlier this month, getting things to build and run on top of KDE's next-generation libraries.

Here's all the info you should need to help out.

At this stage of porting there are still hundreds of low-hanging fruit (porting away from deprecated APIs, porting to slightly changed APIs, etc.) that don't require extensive knowledge of either the codebase or even the problem space to tackle, so if you were looking to get your feet wet on Frameworks 5 or KDE development in general, consider chipping in!

In fact, one of the major risks associated with any porting is lowering the quality of the application by reducing functionality or just plain breaking things, and of course we'd like to avoid both. So you can even help out by just running the port and logging the things that don't work on KDE's bug tracker (handy link is on the wiki) as tasks for others to jump on.

JUL
15
2014

The Birth of Plasma 5

I'll keep things brief, since I'm inbetween KDevelop windows right now: It's out today, and in my mind it took just about nine months to make it. Nine months, now that's a timescale with some cachet.

Back in September, we had this, as best as memory serves:

  • A rough initial ramp-up of the freshly-refactored low-level Plasma libraries on top of Qt 5 / Qt Quick 2.
  • And on top of a similarly rough-and-in-motion Frameworks 5.
  • A Plasma shell application that could render a basic wallpaper (with no config yet).
  • A few "test this library API" widgets.
  • Very broken and very empty panels.
  • And we were still running this inside the old Plasma Desktop 4, since we didn't have kwin yet, or an actual session.

Since then, we:

  • Rewrote about 80% of the core Plasma Desktop components from scratch, with significant improvements in some areas (e.g. the tray and notifications).
  • Ported the rest over from 4.x, often with significant cleanup and non-trivial changes.
  • Created hundreds of new visual assets from scratch.
  • Ported many, many support and system integration bits, such as network management, while continuing to make significant improvements to them.
  • Kept contributing fixes and features to Qt 5 in a major way.
  • Continued porting and modularizing KDE's libraries, and finally shipped them as Frameworks 5.0.
  • Not insignificantly, kept up supporting and releasing KDE 4 in parallel (with a major overhaul of the semantic desktop implementation in 4.13).

Kick-ass. It's been an amazingly productive time in the KDE community lately (not just in Plasma and Frameworks - KF5 porting of apps is going on as well!), and we'll be back in just three months with yet more.

Back to KDevelop.

JUN
3
2014

My part for Randa

I just give it back to KDE at least some in return of all i received in all last 10 years.
Please, if you in some ways had KDE improved your day by day , help to fund Randa meetings.

MAR
16
2014

Konsole new features 2.13

With the KDE SC 4.13 release soon, a few new features made it into Konsole.

FEB
17
2014

A Yakuake update: Frameworks 5, Wayland, More

Things have been rather quiet in Yakuake land for a while. 2014 is going to shake things up, though, so it's time for a brief look at what's been going on and where things are headed next.


Frameworks 5

Not long ago I pushed an initial port of Yakuake to Frameworks 5, the next generation of KDE's platform libraries, to Yakuake's git repository. The new code lives on a branch called frameworks for now.

Yakuake on Frameworks 5 is functional and free of the use of any deprecated APIs. The port is mostly complete, too, missing just a few more touches to the first run dialog and skin handling. Here's a screenshot:

Yakuake on Frameworks 5
Ah yup: Looks no different.


Wayland

One of the broader initatives the community is engaged in this year is enabling our workspaces and applications to use Wayland. Yakuake may just have a small role to play in that.

Historically, Yakuake's relationship with window managers has been plenty interesting. It's managed to crash several of the popular ones at one point or another; it's an unusual application with unusual behavior that exercises window manager code differently from more typical apps. More recently, it was perhaps the first non-workspace process to communicate and collaborate tightly with the compositor, asking KWin to perform the slide-in/out animations on its behalf if available.

The latter is a model for things to come. In Wayland, application windows know intentionally little about the environment they exist in, and instead have to petition and rely on the window manager for things like positioning with no recourse. Yakuake on X11 does this legwork by itself; on Wayland, the comm protocol to the window manager will have to be rich enough to allow for equivalent results.

Having Yakuake ported and ready will allow for it to serve as a useful testcase there.


General feature plans

Yakuake's theming system has been showing its age for a while, so I'm looking to implement a replacement for it. The new system will be based on QML, taking some inspiration from KWin's Aurorae decoration engine. The result should allow themes to support anti-aliased edges and shadows, along with much more flexible control over the placement of Yakuake's UI elements. Existing themes will continue to be supported however (by way of new-format theme that knows how to load and display the old ones -- the config UI will list both types transparently in the same list, though).

The other major feature that's been a long time coming is proper support for session restore. This has mostly been held back by missing functionality in the API of the Konsole component that provides Yakuake with terminal emulation. Unfortunately that situation remains unchanged for now, but I'm still hoping to eventually get around to some Konsole hacking to satisfy Yakuake's needs there.


Schedule thoughts

Frameworks 5 uptake in distributions has been very promising so far, with several distros (I'm aware of Fedora and Kubuntu, but there are no doubt others) packaging the preview releases soon after they were announced. It's still pre-release software, though, and APIs might still change until the stable release this summer. Until it's out, the repo's master branch will therefore continue to contain the KDE 4 codebase, and there will be another maintenance release cut from it sometime soon.

Development of the new theming system will be targeted at Qt 5 and Frameworks 5, however, due to significant API changes in the new Qt Quick and QML generation. As with the next KDE 4-based release there's currently no firm date for this - Aaron makes a good case for not rushing things - except to say it will be some time this year.

FEB
9
2014

KDE Plasma at the movies

For several years, I used to maintain a collection of clippings showing the KDE workspaces in use in interesting settings - popping up on TV shows, on public terminals in odd locations, in articles on leading scientific endeavours. All sorts of cool cases. More recently I haven't been collecting as diligently anymore, though, for perhaps the best possible reason: It's happening so frequently now that individual examples have lost much of their novelty.

But from time to time it still provides me with a (pleasant) shock to the system to see our software help others push the envelope and create amazing things. The latest example occurred just the other day, while I was watching the making-of documentary for Alfonso Cuarón's impressive film Gravity:

KDE workstation at Framestore

KDE workstation at Framestore

Framestore worked for several years to provide the majority of the film's effects shots, and their London-based offices appear filled to the brim with workstations running KDE Plasma. I think I may have even spotted Yakuake on a panel in there.

Interestingly, Framestore isn't the only London-based VFX house using KDE software. I previously collected a snapshot of Doctor Who VFX provider The Mill using Plasma Desktop in their work as well.

One factor driving this adoption is perhaps the synergy between our and the industry's extensive use of and familiarity with Qt - many high-end 3D modelling and video editing/compositing packages now use Qt for their UI, and often provide PyQt as convenient extensibility solution for in-house dev teams at the studios. The same is true of KDE. But I'd like to think providing a damn nice desktop experience also has something to do with it :).

In the thick of competition, or looking purely at market share data, it's sometimes easy to forget just how much real and compelling use the stuff we make is seeing in absolute terms. And the degree to which our software permeates the foundations that big chunks of our culture get built on top of.

It's nice to reflect on that now and then.

Gravity has been nominated for ten Academy Awards recently, including the Best Visual Effects category. I loved it, and have a feeling it has a pretty good chance.

Pages