Skip to content

Wednesday, 8 March 2023

Call for proposal ends Thursday the 30th of March


There's still a few weeks, but time is really running out.

 

I'm sure there's lots of interesting things you have to talk about Qt, KDE, C++, Community Management or other million things so head over to https://akademy.kde.org/2023/cfp/ or over to https://conf.kde.org/event/5/abstracts/ if you want to skip the nicely worded page that encourages you to submit a talk :)

Screenshot of version 0.5.3 with gradients

We're excited to announce the release of Glaxnimate 0.5.3! This update includes a number of new features, bug fixes, and improvements to the user experience.

Editing

Glaxnimate 0.5.3 introduces several new editing features:

There's a new keyframe preset called "Fast" that basically has the reverse effect of "Ease".

Additionally, this release adds support for conical gradients.

Users can now select the first Bezier node from the node's context menu.

Version 0.5.2 introduced the ability to animate along a path, 0.5.3 makes this easier as now there's a new context menu entry for position properties showing a dialog to select a shape to follow.

User experience

In addition to editing improvements, Glaxnimate 0.5.3 includes several UI enhancements. We've made color values in tree views more visually appealing, and removed extra items from the "Move To" dialog.

Changing fill, stroke, and gradient properties now applies to the whole selection rather than the last selected object.

We've also revamped the context menu for properties, making them consistent between the timeline and the canvas.

Editing tools are more forgiving now when you release modifier keys before finishing the shape.

Users can now choose whether the timeline scrolls vertically or horizontally without modifiers, and we've added new layout presets to better accommodate a variety of screen sizes.

File Formats

This release also includes updates to Glaxnimate's import and export functionality.

The main new feature here is the ability to import and export Android Vector Drawables, the animation format used when making animated icons for Android.

We've also fixed various issues with the SVG parser, improving support for animated paths.

Opening raster images now uses the file basename as layer name, and we've resolved a bug affecting plugin export.

Bug Fixes

Finally, Glaxnimate 0.5.3 includes a number of bug fixes. We've addressed an issue with layers created by drawing tools not having an end frame, and fixed several other small bugs affecting the user experience.

We encourage all users to upgrade to Glaxnimate 0.5.3 to take advantage of these new features and improvements. You can download the latest version of Glaxnimate from the download page.

Tuesday, 7 March 2023

It has been many years that I have provided up-to-date builds of KDE/Plasma for Debian stable, testing, unstable. It is now more than a year that I don’t use Debian anymore. Time to send this off.

As already mentioned in some comments to various blog posts here, I will not invest more work into the current repositories. I invite anyone with interest in continuing the work to contact me. I will also write up a short howto guide on what I generally did and how I worked with this amount of packages.

I feel sad about leaving this behind, but also relieved from the amount of work, not to speak of the insults (“You are a Nazi” etc) I often get from the Debian side. I also feel sorry for all of you who have relied on these packages for long time, have given valuable feedback and helpful comments.

It was a nice and long run.

So long, and thanks for all the fish.

Monday, 6 March 2023

Precisely one month ago I joined KDE e.V., the non-profit organization behind KDE, as Software Platform Engineer. This is part of three positions in KDE’s “Make a living” initiative.

The exact scope of this position is a bit vague. I like to describe it as “Taking care of everything needed so that people can build and enjoy awesome software”. A large part of that is taking care of foundational libraries such as Qt and KDE Frameworks, but it can be really anything that helps people do awesome things. This is pretty much what I’ve been doing as a volunteer for the last couple of years anyway.

So what have I been up to this past month? A lot, but also not a lot that’s worth mentioning individually right now. As you probably know we are heading full steam towards using Qt6 for all our products. This is something that started almost four years ago (and I’ve been involved from the start) and is growing ever more closely to being finished. Last week we switched Plasma master to use Qt6 exclusively, completing an important milestone for the whole transition. This involved a ton of small to medium-sized changes and fixes across the stack.

Instead of listing all the changes I have done as part of that let’s focus on the outcome instead: I’m typing this post running on a full Plasma session running against Qt6. There are still some rough edges, but overall it’s quite usable already. Definitely enough to get involved and hack on it. I’d show you a screenshot, but that would be pretty boring, it looks exactly the same as before!

So what does the future hold? The transition towards Qt6/KF6 is going to stay my focus for a while, but once that settles down I’m going to focus on other areas of our software platform eventually. If you have ideas for what it would make sense for me to focus on please get in touch.

This position is enabled and financed by KDE e.V.. To allow me to keep this position in the long term (and perhaps even hire additional people) please consider donating to KDE e.V.

Sunday, 5 March 2023

I was first introduced to Linux when my outdated computer could not run Windows anymore. I had previously heard some information about LINUX while surfing the internet, but my initial impression was that it was highly sophisticated and exclusively for programmers or mainly hackers :). I finally started using Linux Mint, and was moved by how quick and configurable it was 🤩.

After a few distro-hopps, I finally settled for KDE Neon being amazed by how easily customizable it was ❣️

Motivation for applying to sok’23

I was very much content with KDE plasma but I always found some minor annoying bugs here and there, it was also around this time I got started with programming and was looking into ways to get better at it, so I decided that I would contribute to KDE 😇, and like every other beginner, I didn’t know how to navigate through such large repositories of KDE. I also learned about the Season of KDE program, which assists in onboarding new contributors for KDE, so I decided to apply.

My Project

My project for SOK’23 is improving the accessibility of Tokodon by writing appium tests. My project involves two parts: the first one is making Tokodon work without internet connection so that it is ready for tests and then the second part is writing GUI tests to improve accessibility. You can find my full project proposal SoK Proposal for Tokodon.

Work done so far🤗

Week 1-2:

In my first week, I researched how I would run Tokodon without network connectivity. I tried to reverse engineer the existing unit-tests, and created a new start file offline-main.cpp, and by the end of the second week, I could start Tokodon without network connectivity with some broken UI.

offline-tokodon

Week 3-4:

The next step was writing appium test for the search functionality. For this, I first fixed the broken search UI by reversing the already written unit-test for search and following which I wrote my first test for testing the GUI of search. The final result is shown in the gif below:

searchboxtest

Week 5-6:

In these weeks I, with the help of the maintainers of Tokodon, fixed the breaking pipelines of tokodon-offline and also wrote another appium test for testing different types of timeline statuses.

What I will be doing in the upcoming weeks

In the upcoming weeks I plan to add more appium tests and fix broken UI elements in tokodon-offline.

Friday, 3 March 2023

Let’s go for my web review for the week 2023-09.


Godot 4.0 sets sail: All aboard for new horizons

Tags: tech, 3d, gaming, godot

This is a huge release. Lots of very strong and needed feature to be a competitive engine. Congrats!

https://godotengine.org/article/godot-4-0-sets-sail/


Nokia launches DIY repairable budget Android phone | Nokia | The Guardian

Tags: tech, mobile, nokia, ecology

Coming from Zombie Nokia, still I think we need more options like this. It is the number one solution to reduce ecological footprints of computing.

https://www.theguardian.com/technology/2023/feb/25/nokia-launches-diy-repairable-budget-android-phone


OpenAI Is Now Everything It Promised Not to Be: Corporate, Closed-Source, and For-Profit

Tags: tech, ai, gpt, ethics, business

When they changed their statutes it was the first sign… now it’s clear all ethics went through the window. It’s about fueling the hype to drive money home.

https://www.vice.com/en/article/5d3naz/openai-is-now-everything-it-promised-not-to-be-corporate-closed-source-and-for-profit


Keep your AI claims in check | Federal Trade Commission

Tags: tech, ai, criticism

That’s a good set of questions to ask ourselves when in contact with a product claiming the use of “AI”.

https://www.ftc.gov/business-guidance/blog/2023/02/keep-your-ai-claims-check


New C++23 features I’m excited about - twdev.blog

Tags: tech, c++

This newer standard brings up interesting features again. I’m especially interested in std:expected myself.

https://twdev.blog/2022/10/cpp23/


SymPy makes math fun again

Tags: tech, mathematics, python

This really looks like a nice library for symbolic maths. Keep in mind it’s python based but it goes all the way to generating solutions to the given problem in various languages.

https://wordsandbuttons.online/sympy_makes_math_fun_again.html


Game Asset Storage, Loading, Compression and Caching | PH3 Blog

Tags: tech, gaming, compression, tests

Interesting new compression format around the corner. Might turn out useful in some cases. I could definitely have used it last year for a test harness with very large reference data (so no, not gaming).

https://ph3at.github.io/posts/Asset-Compression/


The Great Gaslighting of the JavaScript Era | The Spicy Web

Tags: tech, web, frontend, react, complexity

A bit of a rant so brace yourselves. Still, it’s very much aligned with the current backslash against “everything must be an SPA” trend and makes very good points on how it happened. This indeed turned into a popularity contest based on false premises. Meanwhile… complexity increased dramatically on the web frontend side and the performances are bad for most users.

https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/


Visual design rules you can safely follow every time

Tags: tech, gui, design, ux

Very nice set of rules. They are very simple to apply individually. The art is in respecting it all of course.

https://anthonyhobday.com/sideprojects/saferules/


Clever Code Considered Harmful

Tags: tech, complexity, maintenance, craftsmanship

Good musing about simple code and complexity. We definitely should avoid unwarranted complexity in our code, or at least try to prevent it’s spreading.

https://www.joshwcomeau.com/career/clever-code-considered-harmful/


Stop saying “technical debt” - Stack Overflow Blog

Tags: tech, technical-debt, maintenance, craftsmanship

Definitely this. I think this could have turned into a good term until it was used for everything under the sun. It’s about maintainability first, not just about what you like or not.

https://stackoverflow.blog/2023/02/27/stop-saying-technical-debt/


The lone developer problem

Tags: tech, programming, craftsmanship, team

Development is and has to be a team sport indeed.

https://evanhahn.com/the-lone-developer-problem/


A thorough team guide to RFCs. A reference guide to implement RFCs as… | by Juan Pablo Buriticá | Feb, 2023 | Juan’s And Zeroes

Tags: tech, decision-making, product-management

They’re definitely a powerful tool. I see them used in a few places but definitely not enough.

https://buriti.ca/a-thorough-team-guide-to-rfcs-8aa14f8e757c


6 qualities that make a great engineer | Inside Intercom

Tags: tech, quality, culture

A bit too much written in superlatives for my taste. Still, this is an interesting set of qualities indeed. Definitely things to aim for.

https://www.intercom.com/blog/traits-of-exceptional-engineers/


The Missing Semester of Your CS Education

Tags: tech, university, craftsmanship, tools

Having taught quite a bit at the university, having interviewed quite a few junior developers… I have to agree what’s proposed here is missing from most curricula. I wish this would be taught more systematically. If not at least students everywhere should know this online course exists.

https://missing.csail.mit.edu/


Improving Students’ Learning With Effective Learning Techniques: Promising Directions From Cognitive and Educational Psychology - John Dunlosky, Katherine A. Rawson, Elizabeth J. Marsh, Mitchell J. Nathan, Daniel T. Willingham, 2013

Tags: teaching, learning

Very interesting but long state of the art and evaluation of learning techniques. This is definitely something students should look at to pick better techniques. The way I design my trainings and coaching session seem to be mostly aligned with the findings, they tend to foster the right learning techniques… Still that’s up to the students to pick up the opportunity instead of repeating usual inefficient patterns.

https://journals.sagepub.com/stoken/rbtfl/Z10jaVH/60XQM/full



Bye for now!

Thursday, 2 March 2023

This Monday, I was in Brussels to attend a stakeholder workshop for the Digital Market Act (DMA) organized by the European Commission. For those who don’t know that is the DMA, it’s a new law that the European Parliament voted on recently and one of its goals of it is to force some interoperability between messaging services by allowing small players to able to communicate with users from the so-called Gatekeepers (e.g., WhatsApp).

I attended this meeting as a representative of KDE and NeoChat. NeoChat is a client for the Matrix protocol (a decentralized and end-to-end encrypted chat protocol). I started developing it with Tobias Fella a few years ago during the covid lockdown.

I learned about this workshop thanks to NLNet, who funded previous work on NeoChat (end-to-end encryption). They put Tobias Fella and me in contact with Jean-Luc Dorel, the program officer for NGI0 for the European Commission. I would never have imagined sitting in a conference room in Brussels, thanks to my contribution to open-source projects,

Visitor pass
Visitor pass

Regarding the workshop itself, this was quite enlighting for me, who is just a minor player there and only work on NeoChat and many other KDE application in my free time as a volunteer. I expected a room full of lawyers and lobbyists, which was partially true. A considerable part of the room was people who were silent during the entire workshop, representing big companies and mostly taking notes.

Fortunately, a few good folks with more technical knowledge were also in the room. With, for example, people from Element/Matrix.org, XMPP, OpenMLS, Open Source Initiative (OSI), NlNet, European Digital Rights (EDRi), and consumer protection associations.

Photo of the room
Photo of the room

The workshop consisted of three panels. The first was more general, and the latter two more technical.

In the first panel, the topic was the scope, the trade-offs, and the potential challenges of the Article 7 of the DMA. This panel was particularly well represented by a consumer protection organization, European Digital Rights, and a university professor, who were all in favor of the DMA and the interoperability part of it. Regarding the scope, one topic of discussion started by Simon Phipps was if gatekeepers like Meta should be forced to also interop with small self-hosted XMPP or Matrix instances or if this would only be about relatively big players. Unfortunately, I also learned that, while it was once part of the draft of the DMA, social networks are not required to interop. If Elon had bought Twitter earlier, this would have probably been part of the final text too. From this panel, I particularly appreciated the remarks of Jan Penfrat from the EDRi, who mentionned that this is not a technical or standardization problem and pointed out that some possible solutions like XMPP or Matrix already exist for a long time. There were also some questions left unanswered, like how to force gatekeepers to cooperate, as some people in the audience fear that they would make it needlessly difficult to interoperate.

After this panel, we had a short lunch, and this was the occasion for me to connect a bit with the Matrix, XMPP and NlNet folks in the room.

The second panel was more technical and was about end-to-end encryption. This panel had people from both sides of the debate. Paul Rösler, a cryptography researcher, tried to explain how end-to-end encryption works for the non-technical people in the audience, which I think was done quite well. Next, we had Eric Rescorla, the CTO of Mozilla, who also gave some additional insight into end-to-end encryption.

Cisco was also there, and they presented their relative success integrating other platforms with Webex (e.g. Teams and Slack) with for example, the possibility of creating Webex calls from Slack. This ‘interoperability’ between big players is definitively different from the direction of interoperability I want to see. But this is also a good example showing that when two big corporations want to integrate togethers, there are suddenly no technical difficulties anymore. They are also working on a new messaging standard (with reminds me a bit of xkcd 927) as part of the MIMI working group of the IETF and they already deployed that in production.

Afterward, it was the turn of Matrix, and Matthew Hodgson, the CEO/CTO at Element. Matthew showed a live demo of client-side bridging. This is their proposed solution to bridging end-to-end-encrypted messages across protocols without having to unencrypt the content inside a third-party server. This solution would be a temporary solution; ideally, services would converge to an open standard protocol like Matrix, XMPP, or something new. He pointed out that Apple was already doing that with iMessage and SMS. I found this particularly clever.

Last, Meta sent a lawyer to represent them. The lawyer was reading a piece of paper in a very blank tone. He spent the entirety of his allocated time, telling the commission that interoperability represents a very clear risk for their users who trust Meta to keep their data safe and end-to-end encrypted. He ignored Matthew’s previous demo and told us that bridging would break their encryption. He also envisioned a clear opt-in policy to interoperability so that the users are aware that this will weaken their security and express a clear need for consent popups when interacting with users of other networks. It is quite ironic coming from Meta who in the context of the GDPR and data protection, was arguing against an opt-in policy and against consent. And as someone pointed out in the audience, while Whatsapp is end-to-end-encrypted, this isn’t the case for Messengers and Instagram conversations, which are both also products of Meta. The lawyer quickly dismissed that and explained that he only represented Whatsapp here and couldn’t answer this question for other Meta products. As you might have guessed, the audience wasn’t convinced by these arguments. Still, something to note is that Meta had at least the courage to have something in front of the audience, unless other big gatekeepers like Microsoft, Apple and Google who were also in the room but didn’t participate at all in the debate.

Finally, after another small coffee break, the last panel was about abuse prevention, identity management, and discovery. With Meta in the panel again, consent was again a hot subject of discussion. Some argued that each time someone from another server joins a room, each user should consent to this new server can read their messages. This sounds very impractical to me, but I guess this goal is to make interoperability impractical. It also reminds me very much of the GDPR popup, which privacy-invading services try to optimize using dark patterns so that the users click on the “Allow” button, just that in this case, this will try to convince the user to click on the “Don’t connect with this user coming from this untrusted and scary third party server” button.

Slides about efficient design for effective interoperability
Slides about efficient design for effective interoperability

There was also some discussion about whether this was the server’s role in deciding if they allow connection from a third-party server or the user’s role. The former would mean that big providers would only allow access to their service for other big providers and block access to small self-hosted instances, and the latter would give users a choice. Another topic was the identifier, which, as someone from the audience pointed out, phone numbers used by Whatsapp, Signal and Telegram are currently not perfect as they are not unique across services and might require some standardization.

In the end, the European Commission tried to summarize all the information they got today and sounded quite happy that so many technical folks were in the room and active in the conversation.

And finally, after the last panels, I went to a bar next to the conference building with a few people from XMPP, EDRi, NlNet and OpenMLS to get beers and Belgium fries.

Me outside of the building
Me outside of the building

Since I am planning to go on vacations very soonish (actually, just idling the time until I head for the airport…), I think it is good time to wrap-up the recent changes in the KDE Yocto area.

As you might have noticed, 4 weeks ago there finally was an in-person FOSDEM again. It was great event, many interesting people were there and I had really good chats. One of the main topics for me was discussing the next steps for our Yocto efforts, in particular as Volker and Hannah were also around.

Our current state is as follows:

  1. meta-kf5 is updated the the latest KF5 release, 5.103.0. We plan to update that branch further as more KF5 releases appear. But it will stick with KF5 and KF6 is packed separately (see below).
  2. meta-kde also got an update, but a much bigger one than meta-kde: here, you will now find KDE Plasma 5.27.0 as well as support for Yocto Langdale and all needed backports in the Wayland area to make it work with Kirkstone. I expect this layer at some time to switch to Qt6/KF6 support and at latest once I am back, there will appear a kf6-staging branch.
  3. meta-kf6 is probably the most interesting point on the list. Following the Yocto project’s approach to have one repository per layer, there now is a new meta-kf6 repository. In this repository we use branch names that follow the supported Yocto releases to make it easier for device creators to pick compatible versions.
    This meta-kf6 repository now has an initial set of Git master hashes that are known to build regarding Langdale and scripting is prepared such that we can do semi-regular updates of the hashes as long as now official KF6 releases exist. Stressing the meaning of “Git master hashes”, please do not in any way expect that to be stable 😉 The only safeguard at the moment before updating the hashes is that we check that everything is building on Yocto Langdale. Currently, the main purpose is to catch packaging regressions early and support KF6 development with build fixes for more exotic setups.

Talking about “exotic setups”, I was very glad about the interested in our Plasma Bigscreen @ RISC-V/VisionFive2 demo at FOSDEM. All the WIP changes which were needed for this demo are finally landed in the KDE Yocto layers. There is only one remaining (very big) MR pending for meta-riscv which needs to get merged. The overall state of the board image though is quite basic and a lot of things are still to do (if you know Yocto and have such a board, help is welcome 🙂 ) For example, RAM size is reported incorrectly from the Kernel, the screen looks too pink, GStreamer and Kwin does not want to work yet together with the GStreamer-OMX backend from Starfive…
Recreating my setup should be fairly simple, just use this manifest file, add meta-riscv with the branch of the above mentioned MR and do “MACHINE=visionfive2 . ./setup-environment && bitbake kde-demo-image-bigscreen”.

Monday, 27 February 2023

So, 2022 was a successful year for Qt - and we highlight the Qt 6.3 and Qt 6.4 releases, Qt World Summit, and Qt Contributor Summit.

And our community members keep up with the activity by writing diligent bug reports, contributing patches, giving technical advice, or helping out other users in forums and mailing lists.

New Gamepad KCM

The Joystick KCM is pretty bad shape right now, for numerous reasons:

  • What the heck is a joystick?
  • What is the purpose of this KCM if I can’t even configure anything?
  • Why is it telling me about device paths?
  • What’s up with all of the tables?
The current Joystick KCM

So one of my big “Plasma 6” goals is to rewrite the KCM with a few goals in mind:

  • Re-brand it around “Gamepads” and “Game Controllers” instead of “Joystick”. A lot of people have mentioned they didn’t even know it supported regular game controllers.
  • Based on modern APIs and frameworks such as Solid.
  • QML-based, with clear a symbolic gamepad layout which makes it easier to test a controller. No more tables of buttons!
  • Remap buttons for SDL games along with the regular calibration found in the old KCM.

I’ve been collaborating with Jeremy Whiting on this project, and it’s been going through some technical turmoil but it’s making solid progress:

A picture of the work-in-progress KCM, which dynamically gets the correct buttons for the controller thanks to SDL2. This will pave the way to integrating it better into a GUI.

Next month hopefully we’ll be able to get a proper UI working, now that mapping buttons is mostly sorted.

See my merge request and Jeremy’s UI merge request.

Tokodon changes

I landed a bunch of features in Tokodon this month, including some much needed bugfixes for some rough edges of the project.

Web+ap support

[Feature] I landed support for the web+ap url scheme used to open ActivityPub objects in Tokodon! Just like matrix.to links in NeoChat, these allow linking to ActivityPub objects online. Once everything is in place, we will be one of the first clients to support it!

If you can’t wait, it’s also possible to open up regular https linked posts in Tokodon by passing it as an argument, if you want to hook it up somehow in your browser.

See the merge request and the wishlist bug.

Post language support

[Feature] You can now select the language you’re posting in! You can’t view a post’s language or filter them from within Tokodon yet, but it’s a start1. Your preferred languages (chosen through the Languages & Formats KCM if you’re using KDE) is shown at the top of the list.

Screenshot of the language combo box

See the merge request.

Poll support

[Feature] Tokodon has supported viewing polls already, but not posting them. Now you can create polls! All of your usual options are exposed, including some not even shown on Mastodon Web. This is not merged yet, but will be soon.

Screenshot of creating a poll

See the [merge request]https://invent.kde.org/network/tokodon/-/merge_requests/152).

More Changes

  • [Bugfix] A bunch of Android bugs are squashed, including links not working. I just recently got my PinePhone working again too, so expect more mobile-related work soon! :) See the merge request.
  • [Feature] Soon you’ll be able to configure the network proxy on the login page. See the merge request.
  • [Bugfix] Posting is much more reliable in general, and it’s clearer when an error has occurred. Hopefully no more of your toots get eaten. See the merge request.
  • The README finally includes a screenshot! See the merge request.

NeoChat Notification Badge

[Bugfix] One thing that always irked me with NeoChat is the notification badge. The number never feels right, and no matter how many rooms I read it never changes:

NeoChat Badge

Now the badge will actually update based on your current notification count, hurrah! See the merge request.

PulseAudio KCM

[Feature] Last month I redid the Window Decoration KCM, and this month I did the same for the PulseAudio KCM, although the changes needed where much smaller.

The “new” PulseAudio KCM

See the merge request.

Kirigami and QQC2 Desktop Style

[Bugfix] For Kirigami, I tried to focus on fixing up Dialog behavior to mixed results. I wanted to change the dialog closePolicy, but that’s been more complex than expected. I attempted to fix the extra horizontal scrolling bug in Dialogs2, but that has unintended regressions in Discover and I’m not really happy with the solution. I also have a bunch of OverlaySheet fixes that I need to rebase3 :) So a bunch of half-baked things I should start finishing next month!

[Bugfix] I noticed an issue where Breeze Icons on Android wouldn’t work if you had a custom icon theme in your application - which I tried to fix but I’m not happy with the solution. It looks like the built-in icons index.theme is not installed properly, and I want to figure out if we can fix that first.

[Bugfix] For qqc2-desktop-style, I fixed an odd case where you could select text in TextAreas that explicitly disabled it by using the right-click context menu.

Plasma Welcome

Oliver landed the Plasma Welcome redesign for 6.0, which looks wonderful. As with all great features, this has had it’s fair share of technical issues which I had the pleasure of helping with, including fixing this bug:

Broken Plasma Welcome Toolbar

Embedded KCMs create and manage their own QML engine. Objects like Kirigami.ApplicationWindow are separated though, because that exists in Plasma Welcome’s engine and not the KCMs, which breaks a lot of things including the global toolbar. I figured out that you can inject your own QML engine to KDeclarative, which will fix most of the issues. While doing this, I also simplified embedded KCMs in Plasma Welcome which will help developers creating their custom pages.

Fixed Plasma Welcome Toolbar

There’s one lingering issue – KDeclarative get’s a little bit too greedy with the engine we give it and will try to destroy it to due to std::shared_ptr shenanigans, but fixing it will require changes to the framework. Right now we work around the issue by not assigning a parent, but I want to look into changing that soon.

See Oliver’s merge request.

Fun with Doxygen

This month we had a strange incident where api.kde.org fails to generate a page for IconItem, but why?

The IconItem page is missing!

Of course the first thing I tried was running kapidox locally for plasma-framework, but there’s still a doc page for IconItem generated. Huh. So I started looking into what the binary factory actually does to see if there’s some inherent issue with our system. What I ended up with is a bash script which emulates what binary factory does, but locally.

What I noticed is terrifying, the doc page doesn’t show up here! So I had an idea, what if the problem is that the name is colliding? After some quick global code searches using our LXR, I discovered that Maui recently introduced a new type called IconItem which coincidentally fits within the timeline of IconItem disappearing. How can this even happen in the first place?

I’m no expert in doxygen (is anyone?) but there is something called “tags” which is basically an index of every type that doxygen indexes. Doxygen also uses these tags to interlink doc pages together, so what’s going wrong? Well, kapidox actually runs the doc generation twice, once initially and then another time to interlink dependencies. What I theorize is that when it’s plasma-framework’s turn to generate, doxygen sees that “IconItem” is already in Maui’s tagfile and refuses to generate the page again.

With this new caveat in mind, I submitted two MRs to hopefully fix the documentation problems:

… Except that I forgot about the KF5/KF6 split, which makes this harder. Next month will be focusing on rebasing those into KF5, and then creating KF6-specific MRs if needed (but a lot of fat is being cut here, so it might not be).

KDevelop.org

I took the responsibility of converting the bit-rotting kdevelop.org site to Hugo, which should be live soon! Most of the old site content is brought over (and converted to Markdown) while pages are updated where needed. The new site is now live at kdevelop.org!

See the new repository.

Updating go-kde-org

I opened an MR to update the matrix.to redirector hosted at go.kde.org which should include a link to open in NeoChat! Once it’s merged, I plan on replacing the links on the KDE Community Wiki with these instead of the WebChat links we have now.

Changing Notification History Order

This is something that’s been sitting on my backlog, but I’m super annoyed about the ordering of notification history. Whenever I miss a notification4 I scroll through my notification history. However, it’s ordered seemingly randomly, because it’s sorted by “type and urgency”. That’s not too helpful because neither criteria is really exposed in the UI. I propose changing it to “Date” which makes way more sense for a history view of notifications.

The new, much more improved notification order

See the merge request.


  1. If you’re looking for a way to configure the default posting language, it’s unfortunately not exposed in the Mastodon API yet, including some other preferences. Since the issue hasn’t moved much, I want to look into another way to easily access those settings. ↩︎

  2. Ivan looked into this issue recently and is fixing the issue on the Flatpak KCM end, so my fix may not be needed after all. ↩︎

  3. OverlaySheets were recently overhauled, so these fixes only apply to KF5 now. ↩︎

  4. Which happens surprisingly often, despite me using the default notification timeout… ↩︎