I Tried Plasma 6 as of now

I Tried Plasma 6 as of now

The development of Plasma 6 has started. Quite some time ago, actually, but of course we're just at the beginning and there's not much of interest to see, but nonetherless I had to try out the current state of the Plasma 6 branch anyway - since I'm, you know, a KDE dev and all -, so I thought that I'd share with you how it went.

However, it's a journey, both for me and for you. And, you will only get to finally se Plasma 6 when I do. And believe me, there's a lot of things to do before that.

Let's start: today I tried to build Plasma 6. Now, how does this work. Usually, KDE projects, hosted on gitlab, have a branch called 'master' that is, you know, the very latest. However, with the switch to Qt6, some KDE projects have split their development branches into the Qt5 branch, called 'kf5' or similar, and the Qt6 branch, actually called 'master' or similar. This hasn't happened for all projects, but it started with the KDE Frameworks, where the 6 work started, and only somewhat recently it got to Plasma projects as well.

So what did I do, back when this happened? Well, there's a script called kdesrc-build which builds KDE projects, and I went to its config settings and I added "use the branch called kf5-qt5" which basically forced the script to always use the Qt5 branch whenever there was one. So, I've been basically missing out from anything with a 6.

Until today: I created a new folder, called kde6, where to build Plasma 6. I created a new config file, in that folder, which was basically the same one but with 6 instead of 5 everywhere, and then I told kdesrc-build: hey sexy, you can start building.

The poor thing actually tried to do something, before screaming at me - through error logs - that I had forgotted to install Qt6. Fair enough, I installed Qt6 dev packages. I try again, the the poor thing starts screaming again that I installed Qt6.2 instead of Qt6.4, which is required. And here's the issue. I'm using Ubuntu Studio 22.04. The latest Qt packages are only on Ubunut 23.04, called Lunar Lobster, which hasn't released yet. So I did something.

I did something bad, that you should never, ever do. I opened the /etc/apt/sources.list file, and I added one line with the lunar package repositories. This basically allows me to install Lunar packages on a non-lunar system; however, mixing packages from different major version of Ubuntu is basically asking for problems, but sometimes it works, so I gave it a shot. I had to figure out the correct packages to install, but it kind-of work, I managed to start building stuff.

I then spent the last couple of hours fixing little missing dependencies and such, until one of the projects asked to install the latest version of some kind of kde frameworks library that for some reason is not on KDE's gitlab? I mean, I thought, no big deal, I can just install it through the package manager, again, of Lunar. Aaaand apt told me that it was going to download half a gigabyte of Lunar packages. Which is wayy more than I'd like to mix with my non-Lunar packages. But whatever, we only live once I guess, so I went with it and everything broke. Boom.

I spent the following half an hour where any command that required apt would just end in a giant wall of text of errors saying "you held broken packages", I know, apt, thanks. Worst thing, using apt --fix-missing install, which is what you're supposed to do, gave me an error because of OBS. Somehow trying to upgrade that one package forced OBS to also upgrade and that did not work. So I removed OBS. Because I'm such a professional developer. That worked, kind-of. It also removed the Telegram Desktop client from my system. I do not know why. It just happened.

Ok, I go on on building packages until I get another error. I'm missing some files related to qt6 wayland. I reinstall every single qt6 wayland package, and yet nothing happens. It's almost as if the qt6-wayland package was broken itself, which obviously can't happen, because it was shipped by Ubuntu, and they know more than I know. So I went to the KDE development chat and I kindly asked everybody: hey, what's up with this? Aaand apparently Ubuntu is refusing to package that some files of the qt6-wayland packages. Because of reasons. Kindly enough, a fellow developer sent me on Telegram - which I had just re-installed as a snap - the missing files, which I just copypasted. Meaning that now my packages are a mix of 22.04 packages, 23.04 packages, and "copypasted from Telegram" packages.

Now; I don't want to say that Ubuntu is a bad operating system at all. After all, there hasn't been a single time where I hadn't issues with apt. But I had been using, I don't know, Fedora, probably this would've been so much easier. But it's on me, lol. At this point of the story, it has already been three hours and I decided to go to sleep. Yep.

Day 2

Day 2 of my "trying to even just build" KDE Plasma 6 challenge, and yes, I manage to. As you might've guess, yesterday I recorded the first part of the video before actually being oble to build Plasma 6. Today, I managed to. But it wasn't at the press of a button, because there has been one last big issue that has stomped me for hours.

Today I wake up, I tell kdesrc-build to build everything, and it fails on kwallet, the kinda password manager of KDE. I go check the error logs, and apparently I am missing a library called qca which is necessary for kwallet. Which is weird, because qca is made by KDE, and I had just built qca. And qca did build successfully. So I had no idea what was up with kwallet and I just said, you know what, forget about it. I ignored it and told kdesrc-build to just build kde plasma desktop. And that also failed, because plasma desktop depends on kwallet. So, if I want kde plasma desktop, I need kwallet, which needs qca, which I do have, weirdly enough.

Now, here's the thing. It's failing on qca-qt6, whereas I normally build qca-qt5, obviously. However, as I explained, I did tell kdesrc-build to please use qt6, so I don't know what was up with that. I search in the documentation of Plasma 6 for qca-qt6 and - YES! - the documentation does tell me to install qca-qt6 as a package, from the package manager ... on Arch Linux. I'm not on Arch Linux, I'm on Ubuntu. Which does not have any qca-qt6 package.

So I did the best thing I could do, which is to send a private message to the KDE developer who wrote the documentation talking about my problem. And I gave up, I started working on other stuff.

After, I don't know, six hours, I told myself: Niccolo, you have to solve the qca-qt6 problem, or you won't be able to record no youtube video, which would be terrible. So I had an idea: I went to Arch linux repository.

Now, this story could now end terribly, because as you know, my system is a mix of old Ubuntu, new Ubuntu, telegram, and the only way to make this worse is to somehow use the Arch repositories on Ubuntu, but no: I had a better idea. Arch linux has the source files of their packages, which do include a file showing how they were built. By looking at them, I do see that they're building qca with the option kf6-qt6, just like I'm doing, but nonetherless I try to do it manually, and I see that something is going wrong. The files being generated, even though I specifically asked kf6-qt6, are still qt5. So I look again at the Arch linux building script, I look again at what I'm doing, I wait ten seconds, and I realise that I'm kind-of an idiot.

In the various building options that I ignored, simply because they weren't relevant to me, there's one that's quite important: "-DQT6=ON". Try to guess what it does. Seriously, just try to guess what on earth an option called "Qt6=ON" is going to do. So yeah, I copypasted that, and it just worked. The mistery is not yet fully solved, because in theory kdesrc-build should've done it for me, so I went back to the documentation about building Plasma 6. And I noticed that I'm a double idiot. Kinda. So, I had set up kdesrc-build by using the template for Qt6 on the documentation. But there was actually another way to do that, which is manually. And, if you do it manually, you have this little instruction that tells you to enable the cmake flag -DBUILD_WITH_QT6=ON. Somehow, this flag is instead missing in the template that I was given, and - just by adding that flag to the template - everything worked. So maybe who wrote that template just ... missed it. Happens.

Just fifteen minutes later, I finally build Plasma 6, and now is the moment of thruth: will it run? Yes, it does. And here it is. This ... is Plasma 6, built by me. Please, take a moment to appreciate the fact that you've been listening to - I don't know - ten minutes of rambling about building something that looks exactly like Plasma 5.

Or, at least, that should look exactly like Plasma 5. There are some bugs, which is quite obvious, given that this is early early work in progress. However, some of them are pretty funny. As an example, my panel now has three kickoff icons. The one on the left is actually kickoff, whereas the two on the right, if clicked, will immediately crash Plasma. Look, I told you, it's still work in progress.

What else? Well, all context menus look like this, which is not Breeze, and as soon as I open any window it looks like this, which is also not Breeze. This makes me think that I somehow messed up building breeze and that the system is falling back to Oxygen, which is pretty funny. I'll take some time to fix that, just, not today. So, what else? Is everything working?

The add widgets sidebar is missing icons, ok; and the activity switcher is also missing desktop previews which I think it should have. Note that this is NOT my way of reporting bugs, I'm just talking about these things for fun, I will also make sure to raise my issues - if I can confirm that they're not my fault - in the appropriate places, don't worry. And don't take this video as how Plasma 6 is going to be, not at all, it's more of a "yes, development has started".

You might ask: "Niccolo, if Plasma 6 right now looks exactly like Plasma 5 but with more bugs... why did you spend two days building it? There's nothing to try out". Now, as I told you, the code repositories of KDE currently have qt6 and qt5 branches (some of them, I mean). The thing is that the qt5 branches are technically in feature freeze, meaning you cannot add anything new to them. But I do want to add features, and to do that, I have to make merge requests to the qt6 branches - which does not require actually running Plasma 6, unless I also want to try out the features and I'm proposing, wihch is, huh, essential.

There's also other people proposing new features that require me to work on the master branch. Before today, I just couldn't test those ones, I was only able to look at the code. But now I can actually build those proposals and try them out, in Plasma 6. So, the simple answer is that, yes, Plasma 6 development has started, and thus I have to start using Plasma 6 sometimes, because I'm a KDE developer. I want to be, at least.

You might have another - final - question: "Niccolo, if Plasma 6 right now is so boring, why did you make an entire video about it with a clickbaity title and everything?". And here's the thing, I don't actually get paid by KDE, I'm doing all of this in my free time. And the only way for me to, you know, have money to eat and everything whilst still having lots of time for KDE is to receive donations and ad renvenue. If you watched an ad to see this video, you are contributing to Plasma 6 development, does that feel good? If not, turn off the lights please if not, you can directly donate to also contribute, in a more direct way, to my involvement in Plasma 6. Because, yes, right now it looks like like Plasma 5, but hey, that's gonna change, and I'm trying to do my part, and I need your help to.

So thanks everybody who's helping out and following my journey and, see you soon with new and exciting - hopefully - devlogs.