The Call for Participation is still open for two weeks more, but please make us a favour and send yours *now*.
This way we don't have to panic thinking if we are going to need to go chasing people or not, or if we're going to have too few or too many proposals.
Also if you ask the talks committee for review, we can review your talk early, give you feedback and improve it, so it's a win-win.
So head over to https://akademy.kde.org/2020/cfp, find the submit link in the middle of that wall of text and click it ;)
A blog about random things and sometimes about my work translating and developing KDE and anything
Thursday, May 28, 2020
Send your talks for Akademy 2020 *now*
Etiquetes de comentaris:
akademy,
call for papers
Monday, May 25, 2020
chmk a simple CHM viewer
Okular can view CHM files, to do so it uses KHTML, makes sense CHM is basically HTML with images all compressed into a single file.
This is somewhat problematic since KHTML is largely unmaintained and i doubt it'll get a Qt6 port.
The problem is that the only other Qt based HTML rendering engine is QtWebEngine and while great it doesn't support stuff we would need to use it in Okular, since Okular needs to access to the rendered image of the page and also to the text since it uses the same API for all formats, be it CHM, PDF, epub, wathever.
The easiest plan to move forward is probably drop CHM from Okular, but that means no more chm viewing in KDE software, which would be a bit sad.
So I thought, ok maybe I can do a quick CHM viewer just based in QtWebEngine without trying to fit it into the Okular backend to support different formats.
And ChmK was born https://invent.kde.org/aacid/chmk.
It's still very simple, but the basics work, if you give it a file in the command line, it'll open it and you'll be able to browse it.

As you can see it doesn't have *any* UI yet, so Merge Requests more than welcome.
This is somewhat problematic since KHTML is largely unmaintained and i doubt it'll get a Qt6 port.
The problem is that the only other Qt based HTML rendering engine is QtWebEngine and while great it doesn't support stuff we would need to use it in Okular, since Okular needs to access to the rendered image of the page and also to the text since it uses the same API for all formats, be it CHM, PDF, epub, wathever.
The easiest plan to move forward is probably drop CHM from Okular, but that means no more chm viewing in KDE software, which would be a bit sad.
So I thought, ok maybe I can do a quick CHM viewer just based in QtWebEngine without trying to fit it into the Okular backend to support different formats.
And ChmK was born https://invent.kde.org/aacid/chmk.
It's still very simple, but the basics work, if you give it a file in the command line, it'll open it and you'll be able to browse it.

As you can see it doesn't have *any* UI yet, so Merge Requests more than welcome.
Sunday, May 03, 2020
kwallet-pam >= 5.18.4 and ecryptfs homes
If you are using kwallet-pam to unlock your kwallet wallets *and* have a encryptfs home, the automatic unlocking probably stopped working for you with Plasma 5.18.4 and you are getting a "Wallet failed to get opened by PAM, error code is -9" in the system log.
Why?
kwallet-pam uses something called a salt file.
Before Plasma 5.18.4 the salt file was read (or created if not existing) in the "authenticate" step of pam. Now that happens on the "open_session" step of pam.
This is very important because on the open_session the encrypted home is already mounted while in the authenticate step it is not.
What that means is that before Plasma 5.18.4 there was a /home/youruser/.local/share/kwalletd/kdewallet.salt *outside* your encrypted home (that was created/read on the "authenticate" step).
Now with Plasma >= 5.18.4 the /home/youruser/.local/share/kwalletd/kdewallet.salt is created/read correctly inside your encrypted home like the rest of your files.
This is all nice for new users, but if you have an existing user, the kwallet auto unlocking will stop to work.
Why?
Because your wallet was salted with the file that was outside your encrypted home folder, now since kwallet-pam can no longer read that, it fails.
How to fix it?
* Reboot your system
* Login as root (or as a different user)
* See that there is a /home/youruser/.local/share/kwalletd/kdewallet.salt (FILE_A)
* Copy that file somewhere safe
* Now login as the youruser user
* If you have a /home/youruser/.local/share/kwalletd/kdewallet.salt copy it somewhere else safe too (you shouldn't need it but just in case)
* Copy the FILE_A you stashed somewhere safe to /home/youruser/.local/share/kwalletd/kdewallet.salt
* Reboot your system and now everything should work
Why?
kwallet-pam uses something called a salt file.
Before Plasma 5.18.4 the salt file was read (or created if not existing) in the "authenticate" step of pam. Now that happens on the "open_session" step of pam.
This is very important because on the open_session the encrypted home is already mounted while in the authenticate step it is not.
What that means is that before Plasma 5.18.4 there was a /home/youruser/.local/share/kwalletd/kdewallet.salt *outside* your encrypted home (that was created/read on the "authenticate" step).
Now with Plasma >= 5.18.4 the /home/youruser/.local/share/kwalletd/kdewallet.salt is created/read correctly inside your encrypted home like the rest of your files.
This is all nice for new users, but if you have an existing user, the kwallet auto unlocking will stop to work.
Why?
Because your wallet was salted with the file that was outside your encrypted home folder, now since kwallet-pam can no longer read that, it fails.
How to fix it?
* Reboot your system
* Login as root (or as a different user)
* See that there is a /home/youruser/.local/share/kwalletd/kdewallet.salt (FILE_A)
* Copy that file somewhere safe
* Now login as the youruser user
* If you have a /home/youruser/.local/share/kwalletd/kdewallet.salt copy it somewhere else safe too (you shouldn't need it but just in case)
* Copy the FILE_A you stashed somewhere safe to /home/youruser/.local/share/kwalletd/kdewallet.salt
* Reboot your system and now everything should work
Friday, April 17, 2020
Should KDE fork CHMLib?
CHMLib is a library to handle CHM files.
It is used by Okular and other applications to show those files.
It hasn't had a release in 11 years.
It is packaged by all major distributions.
A few weeks ago I got annoyed because we need to carry a patch in Okular flathub because the code is not great and it defines it's own int types.
I tried contacting the upstream author, but unsurprisingly after 11 years he doesn't seem to care much and got no answer.
Then i looked saw that various distributions carry different random set of patches, not great.
So I said, OK, maybe we should just fork it, and emailed 14 people listed at repology as package maintainers for CHMLib saying how they would react to KDE forking CHMLib in an effort to do some basic maintenance, i.e. get it to compile without need for patches, make sure all the patches different distributions has are in the same place, etc.
1 packager answered saying "great"
1 packager answered "nah we want to follow upstream" (... which part of upstream is dead did they not understand?)
1 person answered saying "i haven't been packaging for $DISTRO for ages" (makes sense given how old the package is)
1 person answered saying "not a maintainer anymore but i think you should not break API/ABI of CHMLib" (which makes sense, never said that was planned)
And that's it, so only 4 out of 14 answers and only one of them encouraging.
So I'm asking *YOU*, should we push for a fork or I should stop this crazyness and do something more productive?
It is used by Okular and other applications to show those files.
It hasn't had a release in 11 years.
It is packaged by all major distributions.
A few weeks ago I got annoyed because we need to carry a patch in Okular flathub because the code is not great and it defines it's own int types.
I tried contacting the upstream author, but unsurprisingly after 11 years he doesn't seem to care much and got no answer.
Then i looked saw that various distributions carry different random set of patches, not great.
So I said, OK, maybe we should just fork it, and emailed 14 people listed at repology as package maintainers for CHMLib saying how they would react to KDE forking CHMLib in an effort to do some basic maintenance, i.e. get it to compile without need for patches, make sure all the patches different distributions has are in the same place, etc.
1 packager answered saying "great"
1 packager answered "nah we want to follow upstream" (... which part of upstream is dead did they not understand?)
1 person answered saying "i haven't been packaging for $DISTRO for ages" (makes sense given how old the package is)
1 person answered saying "not a maintainer anymore but i think you should not break API/ABI of CHMLib" (which makes sense, never said that was planned)
And that's it, so only 4 out of 14 answers and only one of them encouraging.
So I'm asking *YOU*, should we push for a fork or I should stop this crazyness and do something more productive?
Sunday, March 29, 2020
RSIBreak 0.12.12 released!
All of you that are in using a computer for a long time should use it!
https://userbase.kde.org/RSIBreak
Changes from 0.12.11:
* Don't reset pause counter on very short inputs that can just be accidental.
* Improve high dpi support
* Translation improvements
* Compile with Qt 5.15 beta
* Minor code cleanup
http://download.kde.org/stable/rsibreak/0.12/rsibreak-0.12.12.tar.xz
https://userbase.kde.org/RSIBreak
Changes from 0.12.11:
* Don't reset pause counter on very short inputs that can just be accidental.
* Improve high dpi support
* Translation improvements
* Compile with Qt 5.15 beta
* Minor code cleanup
http://download.kde.org/stable/rsibreak/0.12/rsibreak-0.12.12.tar.xz
Sunday, March 15, 2020
20.04 releases branches created
Make sure you commit anything you want to end up in the 20.04 releases to them
We're already past the dependency freeze.
The Feature Freeze and Beta is this Thursday 19 of March.
More interesting dates
April 2: 20.04 RC (20.03.90) Tagging and Release
April 16: 20.04 Tagging
April 23: 20.04 Release
https://community.kde.org/Schedules/Applications/20.04_Release_Schedule
We're already past the dependency freeze.
The Feature Freeze and Beta is this Thursday 19 of March.
More interesting dates
April 2: 20.04 RC (20.03.90) Tagging and Release
April 16: 20.04 Tagging
April 23: 20.04 Release
https://community.kde.org/Schedules/Applications/20.04_Release_Schedule
Monday, March 09, 2020
20.04 releases dependency freeze this thursday
Next interesting dates:
March 12: 20.04 Dependency Freeze
March 19: 20.04 Freeze and Beta (20.03.80) tag & release
March 12: 20.04 Dependency Freeze
March 19: 20.04 Freeze and Beta (20.03.80) tag & release
Monday, February 10, 2020
Working with different remotes in git
One of the things that is typical when working with gitlab/github is work with different git remotes.
This is sometimes because you don't have commit access to the original repository so you fork it into your own repository and work over there, but you still want to have the original repository around so you can rebase your changes over it.
In this blog we will see how to do that with the okular repository.
First off, we start by cloning the original repository
Since we don't know the URL by memory, we go to https://invent.kde.org/kde/okular/ and press the Clone button to get a hint, if we have commit access we can use both urls, otherwise we have to use the https one, for the sake of this let's assume we do not have commit access.
Ok, at this point we have clone the upstream Okular repository, we can see we only have one remote, called origin
Now we want to do some fixes, since we can't commit into the main repository, we need to fork, for that we press the fork button in https://invent.kde.org/kde/okular/. Once done we end up in the fork of Okular under our name, e.g. https://invent.kde.org/aacid/okular.
Now what we want is to add our remote to the existing one, so we press the blue button (here we use the git@ one since we can always commit to our fork)
So now we have a remote called aacid_fork that points to url fork, aacid_fork is the name i chose because it's easy to remember, but we could have used any name we wanted there.
Now there's several things one may want to do
After doing the changes and doing the typical
What this does is push the local branch master to the branch named adding_since_to_function of the aacid_fork remote
and then change to work on that branch
After doing the changes and doing the typical
What this does is push the local branch adding_since_to_function to a branch with the same name of the aacid_fork
Sometimes some people say "hey let's work on my branch together", so you need to push not to origin, not to your fork but to someone else's fork.
Let's say you want to work on joliveira's gsoc2019_numberFormat branch, so you would need to add his remote
Then we would need to tell git, hey listen, please go and read the branches that remote i just added has
Next we have to tell git to actually give us the gsoc2019_numberFormat branch, there's lots of ways to do that, one that works is
This will create a local gsoc2019_numberFormat from the contents of the remote branch joliveira_fork/gsoc2019_numberFormat and that also "tracks" it, that means that if someone else does changes to it and you do
After doing the changes and doing the typical
Every time you want to get changes from a remote, remember to
When git pushing the syntax is
You can simply do
This is sometimes because you don't have commit access to the original repository so you fork it into your own repository and work over there, but you still want to have the original repository around so you can rebase your changes over it.
In this blog we will see how to do that with the okular repository.
First off, we start by cloning the original repository
Since we don't know the URL by memory, we go to https://invent.kde.org/kde/okular/ and press the Clone button to get a hint, if we have commit access we can use both urls, otherwise we have to use the https one, for the sake of this let's assume we do not have commit access.
$ git clone https://invent.kde.org/kde/okular.git
$ cd okular
Ok, at this point we have clone the upstream Okular repository, we can see we only have one remote, called origin
$ git remote -v
origin https://invent.kde.org/kde/okular.git (fetch)
origin https://invent.kde.org/kde/okular.git (push)
Now we want to do some fixes, since we can't commit into the main repository, we need to fork, for that we press the fork button in https://invent.kde.org/kde/okular/. Once done we end up in the fork of Okular under our name, e.g. https://invent.kde.org/aacid/okular.
Now what we want is to add our remote to the existing one, so we press the blue button (here we use the git@ one since we can always commit to our fork)
$ git remote add aacid_fork git@invent.kde.org:aacid/okular.git
$ git remote -v
aacid_fork git@invent.kde.org:aacid/okular.git (fetch)
aacid_fork git@invent.kde.org:aacid/okular.git (push)
origin https://invent.kde.org/kde/okular.git (fetch)
origin https://invent.kde.org/kde/okular.git (push)
So now we have a remote called aacid_fork that points to url fork, aacid_fork is the name i chose because it's easy to remember, but we could have used any name we wanted there.
Now there's several things one may want to do
Do changes in master and push them to your fork
This is really not the recommended way but since it's what i do and it'll explain how to push from one branch name to another i'll explain it.After doing the changes and doing the typical
git commit now we have to push the changes to our aacid_fork, so we do git push aacid_fork master:adding_since_to_functionWhat this does is push the local branch master to the branch named adding_since_to_function of the aacid_fork remote
Create a branch and then push that to your fork
This is what you should be doing, so what you should do isgit branch adding_since_to_functionand then change to work on that branch
git switch adding_since_to_functionAfter doing the changes and doing the typical
git commit now we have to push the changes to our aacid_fork, so we dogit push aacid_fork adding_since_to_functionWhat this does is push the local branch adding_since_to_function to a branch with the same name of the aacid_fork
Get a branch from someone else's remote and push to it
Sometimes some people say "hey let's work on my branch together", so you need to push not to origin, not to your fork but to someone else's fork.
Let's say you want to work on joliveira's gsoc2019_numberFormat branch, so you would need to add his remote
$ git remote add joliveira_fork git@invent.kde.org:joliveira/okular.git
$ git remote -v
aacid_fork git@invent.kde.org:aacid/okular.git (fetch)
aacid_fork git@invent.kde.org:aacid/okular.git (push)
joliveira_fork git@invent.kde.org:joliveira/okular.git (fetch)
joliveira_fork git@invent.kde.org:joliveira/okular.git (push)
origin https://invent.kde.org/kde/okular.git (fetch)
origin https://invent.kde.org/kde/okular.git (push)
Then we would need to tell git, hey listen, please go and read the branches that remote i just added has
git fetch joliveira_forkNext we have to tell git to actually give us the gsoc2019_numberFormat branch, there's lots of ways to do that, one that works is
git checkout --track joliveira_fork/gsoc2019_numberFormatThis will create a local gsoc2019_numberFormat from the contents of the remote branch joliveira_fork/gsoc2019_numberFormat and that also "tracks" it, that means that if someone else does changes to it and you do
git pull --rebase while on your local gsoc2019_numberFormat, you'll get them.After doing the changes and doing the typical
git commit now we have to push the changes to the joliveira_fork, so we dogit push joliveira_fork gsoc2019_numberFormatWhat you don't want to do
Don't push to the master branch of your remote, it's weird, some people do, but it's note really recommended.Things to remember
A git remote is another repository, it just so happens that it has "similar" code, but it's a fork, so you can push to it, checkout branches from it, etc.Every time you want to get changes from a remote, remember to
git fetch remote_name otherwise you're still on the "old" snapshot form your last fetch.When git pushing the syntax is
git push remote_name local_branch_name:remote_branch_nameBonus track: Using git mr
As shown in my previous blog post you can use git mr to easy download the code of a mr. Let's use as example Okular's MR #20 https://invent.kde.org/kde/okular/merge_requests/20.You can simply do
git mr 20 and it will create a local branch named mr/20 with the contents of that MR. Unfortunately, if you want to commit changes to it, you still need to use the original remote and branch name name, so if you do some changes, after the git commit you should dogit push joliveira_fork mr/20:gsoc2019_percentFormat
Sunday, February 09, 2020
20.04 releases schedule finalized
It is available at the usual place https://community.kde.org/Schedules/release_service/20.04_Release_Schedule
Dependency freeze is in ~five weeks (March12) and Feature Freeze a week after that, make sure you start finishing your stuff!
Dependency freeze is in ~five weeks (March12) and Feature Freeze a week after that, make sure you start finishing your stuff!
Thursday, February 06, 2020
New help porting to Go >= 1.12
At KDE we have a GitHub mirror. One of the problems about having a mirror is that people routinely try to propose Pull Requests over there, but no one is watching, so they would go stale, which is not good for anyone.
What no one? Actually no, we have kdeclose, a bot that will go over all Pull Requests and gracefully close them suggesting people to move the patch over to KDE infrastructure where we are watching.
The problem is that I'm running that code on Google AppEngine and they are cutting support for the old Go version that it's using, so I would need someone help me port the code to a newer Go version.
Anyone can help me?
P.S: No, I'm not the original author of the code, it's a fork of something else, but that has not been updated either.
Update: This is now done, thanks to Daniele (see first comment). Mega fast, thanks community!
What no one? Actually no, we have kdeclose, a bot that will go over all Pull Requests and gracefully close them suggesting people to move the patch over to KDE infrastructure where we are watching.
The problem is that I'm running that code on Google AppEngine and they are cutting support for the old Go version that it's using, so I would need someone help me port the code to a newer Go version.
Anyone can help me?
P.S: No, I'm not the original author of the code, it's a fork of something else, but that has not been updated either.
Update: This is now done, thanks to Daniele (see first comment). Mega fast, thanks community!
Sunday, February 02, 2020
QCA cleanup spree
The last few weeks I've done quite a bit of QCA cleanup.
Bit of a summary:
* Moved to KDE's gitlab and enable clazy and clang-tidy continuous integration checks
* Fixed lots of crashes when copying some of the classes, it's not a normal use case, but it's supported by the API so make it work :)
* Fixed lots of crashes because we were assuming some of the backend libraries had more features than they actually do (e.g. we thought botan would support always support a given crypto algorithm, but some versions don't, now we check if the algorithm it's supported before saying it is)
* Made all the tests succeed :)
* Dropped Qt4 support
* Use override, nullptr (Laurent), various of the "sanity" QT_* defines, etc.
* botan backend now requires botan2
* Fixed most of the compile warnings
What I probably also did is maybe break the OSX and Windows builds, so if you're using QCA there you should start testing it and propose Merge Requests.
Note: My original idea was to actually kill QCA because i started looking at it and lot of the code looked a bit fishy, and no one wants crypto fishy code, but then i realized we use it in too many places in KDE and i'd rather have "fishy crypto code" in one place than in lots of different places, at least this way it's easier to eventually fix it.
Bit of a summary:
* Moved to KDE's gitlab and enable clazy and clang-tidy continuous integration checks
* Fixed lots of crashes when copying some of the classes, it's not a normal use case, but it's supported by the API so make it work :)
* Fixed lots of crashes because we were assuming some of the backend libraries had more features than they actually do (e.g. we thought botan would support always support a given crypto algorithm, but some versions don't, now we check if the algorithm it's supported before saying it is)
* Made all the tests succeed :)
* Dropped Qt4 support
* Use override, nullptr (Laurent), various of the "sanity" QT_* defines, etc.
* botan backend now requires botan2
* Fixed most of the compile warnings
What I probably also did is maybe break the OSX and Windows builds, so if you're using QCA there you should start testing it and propose Merge Requests.
Note: My original idea was to actually kill QCA because i started looking at it and lot of the code looked a bit fishy, and no one wants crypto fishy code, but then i realized we use it in too many places in KDE and i'd rather have "fishy crypto code" in one place than in lots of different places, at least this way it's easier to eventually fix it.
Etiquetes de comentaris:
cryptography,
kde,
qca
Tuesday, January 28, 2020
The Qt Company is stopping Qt LTS releases. We (KDE) are going to be fine :)
Obvious disclaimer, this is my opinion, not KDE's, not my employer's, not my parents', only mine ;)
Big news today is that Qt Long-term-supported (LTS) releases and the offline installer will become available to commercial licensees only.
Ignoring upcoming switch to Qt6 scenario for now, how bad is that for us?
Let's look at some numbers from our friends at repology.
At this point we have 2 Qt LTS going on, Qt 5.9 (5.9.9 since December) and Qt 5.12 (5.12.6 since November).
How many distros ship Qt 5.9.9? 0. (there's macports and slackbuilds but none of those seem to provide Plasma packages, so I'm ignoring them)
How many distros ship Qt 5.12.6? 5, Adélie Linux, Fedora 30, Mageia 7, OpenSuse Leap 15.2, PCLinux OS (ALT Linux and GNU Guix also do but they don't seem to ship Plasma). Those are some bigger names (I'd say specially Fedora and OpenSuse).
On the other hand Fedora 28 and 29 ship some 5.12.x version but have not updated to 5.12.6, Opensuse Leap 15.1 has a similar issue, it's stuck on 5.9.7 and did not update to 5.9.9 and so is Mageia 6 which is stuck on Qt 5.9.4
Ubuntu 19.04, 19.08 and 20.04 all ship some version of Qt 5.12 (LTS) but not the lastest version.
On the other a few of other "big" distros don't ship Qt LTS, Arch and Gentoo ship 5.14, our not-distro-distro Neon is on 5.13 and so is flatpak.
As I see it, the numbers say that while it's true that some distros are shipping the latest LTS release, it's not all of them by far, and it looks more like an opportunistic use, the LTS branch is followed for a while in the last release of the distro, but the previous ones get abandoned at some point, so the LTS doesn't really seem to be used to its fully potential.
What would happen if there was no Qt LTS?
Hard to say, but I think some of the "newer" distros would actually be shipping Qt 5.13 or 5.14, and in my book that's a good thing, moving users forward is always good.
The "already released" distros is different story, since they would obviously not be updating from Qt 5.9 to 5.14, but as we've seen it seems that most of the times they don't really follow the Qt LTS releases to its full extent either.
So all in all, I'm going to say not having Qt LTS releases is not that bad for KDE, we've lived for that for a long time (remember there has only been 4 Qt LTS, 4.8, 5.6, 5.9 and 5.12) so we'll do mostly fine.
Yes, this may actually be a problem, if all goes to plan Qt 5.15 will be released in May and Qt 6.0 in November, that means we will likely get up to Qt 5.15.2 or 5.15.3 and then that's it, we're moving to Qt 6.0
Obviously KDE will have to move to Qt 6 at some point, but that's going to take a while (as example Plasma 5 was released when Qt was at 5.3) so for let's say that for a year or two we will still be using Qt 5.15 without any bugfix releases.
That can be OK if Qt 5.15 ends being a good release or a problem if it's a bit buggy. If it's buggy, well then we'll have to figure out what to do, and it'll probably involve some kind of fork somewhere, be it by KDE (qt already had that for a while in ancient history with qt-copy) or by some other trusted source, but let's hope it doesn't get to that, since it would mean that there's two set of people fixing bugs in Qt 5.15, The Qt Company engineers and the rest of the world, and doing the same work twice is not smart.
Big news today is that Qt Long-term-supported (LTS) releases and the offline installer will become available to commercial licensees only.
Ignoring upcoming switch to Qt6 scenario for now, how bad is that for us?
Let's look at some numbers from our friends at repology.
At this point we have 2 Qt LTS going on, Qt 5.9 (5.9.9 since December) and Qt 5.12 (5.12.6 since November).
How many distros ship Qt 5.9.9? 0. (there's macports and slackbuilds but none of those seem to provide Plasma packages, so I'm ignoring them)
How many distros ship Qt 5.12.6? 5, Adélie Linux, Fedora 30, Mageia 7, OpenSuse Leap 15.2, PCLinux OS (ALT Linux and GNU Guix also do but they don't seem to ship Plasma). Those are some bigger names (I'd say specially Fedora and OpenSuse).
On the other hand Fedora 28 and 29 ship some 5.12.x version but have not updated to 5.12.6, Opensuse Leap 15.1 has a similar issue, it's stuck on 5.9.7 and did not update to 5.9.9 and so is Mageia 6 which is stuck on Qt 5.9.4
Ubuntu 19.04, 19.08 and 20.04 all ship some version of Qt 5.12 (LTS) but not the lastest version.
On the other a few of other "big" distros don't ship Qt LTS, Arch and Gentoo ship 5.14, our not-distro-distro Neon is on 5.13 and so is flatpak.
As I see it, the numbers say that while it's true that some distros are shipping the latest LTS release, it's not all of them by far, and it looks more like an opportunistic use, the LTS branch is followed for a while in the last release of the distro, but the previous ones get abandoned at some point, so the LTS doesn't really seem to be used to its fully potential.
What would happen if there was no Qt LTS?
Hard to say, but I think some of the "newer" distros would actually be shipping Qt 5.13 or 5.14, and in my book that's a good thing, moving users forward is always good.
The "already released" distros is different story, since they would obviously not be updating from Qt 5.9 to 5.14, but as we've seen it seems that most of the times they don't really follow the Qt LTS releases to its full extent either.
So all in all, I'm going to say not having Qt LTS releases is not that bad for KDE, we've lived for that for a long time (remember there has only been 4 Qt LTS, 4.8, 5.6, 5.9 and 5.12) so we'll do mostly fine.
But What about Qt 5.15 and Qt 6 you ask!
Yes, this may actually be a problem, if all goes to plan Qt 5.15 will be released in May and Qt 6.0 in November, that means we will likely get up to Qt 5.15.2 or 5.15.3 and then that's it, we're moving to Qt 6.0
Obviously KDE will have to move to Qt 6 at some point, but that's going to take a while (as example Plasma 5 was released when Qt was at 5.3) so for let's say that for a year or two we will still be using Qt 5.15 without any bugfix releases.
That can be OK if Qt 5.15 ends being a good release or a problem if it's a bit buggy. If it's buggy, well then we'll have to figure out what to do, and it'll probably involve some kind of fork somewhere, be it by KDE (qt already had that for a while in ancient history with qt-copy) or by some other trusted source, but let's hope it doesn't get to that, since it would mean that there's two set of people fixing bugs in Qt 5.15, The Qt Company engineers and the rest of the world, and doing the same work twice is not smart.
Sunday, January 26, 2020
git mr: easily downloading gitlab merge requests
With KDE [slowly] moving to gitlab you may probably find yourselves reviewing more gitlab based patches.
In my opinion the web UI in gitlab is miles better, the fact that it has a "merge this thing" button makes it a game changer.
Now since we are coming from phabricator you have probably used the
The gitlab web UI has a a link named "You can merge this merge request manually using the command line" that if pressed tells you to
if you want to locally test https://invent.kde.org/kde/okular/merge_requests/80
That is *horrible*
Enter

P.S: If you're an archlinux user you can get it from AUR https://aur.archlinux.org/packages/git-mr
P.P.S: Unfortunately it does not support pushing, so if you want to push to that mr you'll have to do some work.
In my opinion the web UI in gitlab is miles better, the fact that it has a "merge this thing" button makes it a game changer.
Now since we are coming from phabricator you have probably used the
arc patch DXXX command to download and locally test a patch.The gitlab web UI has a a link named "You can merge this merge request manually using the command line" that if pressed tells you to
git fetch "git@invent.kde.org:sander/okular.git" "patch-from-kde-bug-415012"
git checkout -b "sander/okular-patch-from-kde-bug-415012" FETCH_HEAD
if you want to locally test https://invent.kde.org/kde/okular/merge_requests/80
That is *horrible*
Enter
git mr a very simple script that makes it so that you only have to type
git mr 80

P.S: If you're an archlinux user you can get it from AUR https://aur.archlinux.org/packages/git-mr
P.P.S: Unfortunately it does not support pushing, so if you want to push to that mr you'll have to do some work.
Etiquetes de comentaris:
arc,
git mr,
gitlab,
phabricator
Thursday, January 16, 2020
KPatience added to flathub. Which app should be next?
This week we added KPatience to flathub.
That makes for a quite a few applications from KDE already in flathub

Which one do you think we should add next?
That makes for a quite a few applications from KDE already in flathub

Which one do you think we should add next?
Sunday, November 10, 2019
19.12 releases branches created
The branch naming has changed to try to accommodate for the stopping of the "KDE Applications" brand, it's now called
release/19.12
Make sure you commit anything you want to end up in the 19.12 releases to them
We're already past the dependency freeze.
The Freeze and Beta is this Thursday 14 of November.
More interesting dates
November 28, 2019: KDE Applications 19.12 RC (19.11.90) Tagging and Release
December 5, 2019: KDE Applications 19.12 Tagging
December 12, 2019: KDE Applications 19.12 Release
https://community.kde.org/Schedules/Applications/19.12_Release_Schedule
Cheers,
Albert
P.S: Yes, this release unfortunately falls in the middle of the debranding of "KDE Applications" and there's still a few things called "KDE Applications" here and there
[*] There's a small issue with kwave we're working on figuring it out
release/19.12
Make sure you commit anything you want to end up in the 19.12 releases to them
We're already past the dependency freeze.
The Freeze and Beta is this Thursday 14 of November.
More interesting dates
November 28, 2019: KDE Applications 19.12 RC (19.11.90) Tagging and Release
December 5, 2019: KDE Applications 19.12 Tagging
December 12, 2019: KDE Applications 19.12 Release
https://community.kde.org/Schedules/Applications/19.12_Release_Schedule
Cheers,
Albert
P.S: Yes, this release unfortunately falls in the middle of the debranding of "KDE Applications" and there's still a few things called "KDE Applications" here and there
[*] There's a small issue with kwave we're working on figuring it out
Thursday, November 07, 2019
You can use a C++11 range for loop over a static array
void DeviceListing::populateListing(const show showStatus)
{
const Solid::DeviceInterface::Type needHardware[] = {
Solid::DeviceInterface::Processor,
Solid::DeviceInterface::StorageDrive,
Solid::DeviceInterface::Battery,
Solid::DeviceInterface::PortableMediaPlayer,
Solid::DeviceInterface::Camera
};
clear();
for (unsigned int i = 0; i < (sizeof(needHardware)/sizeof(Solid::DeviceInterface::Type)); i++) {
QTreeWidgetItem *tmpDevice = createListItems(needHardware[i]);
deviceMap[needHardware[i]] = static_cast(tmpDevice);
if ((tmpDevice->childCount() > 0) || (showStatus == ALL)) {
addTopLevelItem(tmpDevice);
}
}
}
in C++11 you can rewrite it in the much easier to read
void DeviceListing::populateListing(const show showStatus)
{
const Solid::DeviceInterface::Type needHardware[] = {
Solid::DeviceInterface::Processor,
Solid::DeviceInterface::StorageDrive,
Solid::DeviceInterface::Battery,
Solid::DeviceInterface::PortableMediaPlayer,
Solid::DeviceInterface::Camera
};
clear();
for (const Solid::DeviceInterface::Type nh : needHardware) {
QTreeWidgetItem *tmpDevice = createListItems(nh);
deviceMap[nh] = static_cast(tmpDevice);
if ((tmpDevice->childCount() > 0) || (showStatus == ALL)) {
addTopLevelItem(tmpDevice);
}
}
}
Wednesday, October 30, 2019
Akademy Guest Post: Some thoughts regarding discussion culture
First of all I want to say thanks for hosting me on your blog and letting me write this guest post!
I am Florian Müller from Germany, working as a Sysadmin at a small tech collective. I have been a KDE user for years, but I am quite new to the KDE community. This years Akademy was my first and I am looking forward to dive in deeper and contribute more to KDE.
I had a really good time at Akademy in Milano, got to know so many cool people and learned a lot about the KDE community and KDE in general. Thanks a lot to everyone organizing this unique event! I am sure it won't be the last time I'll attend Akademy.
I want to share some things I noticed about discussion culture, please feel free to criticize/discuss/comment, so maybe we can work out some guidelines for that in the future.
First of all some words about discussion culture in general. Because all people are different, we need technics to allow everyone to participate in group discussions. When people are not that confident in general, they tend to not raise their voices in bigger groups, also if they have opponent opinions to the main stream. So in order to have a greater culmination of creativity and ideas, we need to create an atmosphere to make it easier for everyone to participate.
One thing would be the setup of the room the discussion will be held in. Do you want to have a central speaker in the front leading the discussion or do you want to setup the chairs and tables in a circle so everyone is on the same level. Sometimes there are mostly lecture halls available, so time to plan in advance and ask for a different room has to be taken in accountance. The advantage of a circle is that everybody is able to see everyone else. We can also think about forming smaller discussion groups when possible and a topic can be split up into smaller parts.
Another point you can think about is how you organize the turn keeping. One could appoint a person who only deals with turn keeping. We could alternate the job of turn keeping from one discussion to the next. At the beginning of the discussion we should make it transparent on how turn keeping will work. For example we could have a rule that people who want to say something the first time, move to the top of the speakers list to make sure that rare voices will be heard. We could also have a speakers list alternated by gender. There could be a maximum time for speakers so that single people don’t dominate the whole discussion by simply talking others out.
There are many other aspect we can think about when we want to make group discussions more inclusive. With this post, I just wanted to get the discussion started, so we can improve on that in the future.
Here are some links to continue reading:
https://www.workingdigital.de/en/blog/post/respectful-culture-of-discussion
https://www.wikihow.com/Be-Good-at-Group-Discussion
You can reach me directly at mail@flo-mue.de.
I am Florian Müller from Germany, working as a Sysadmin at a small tech collective. I have been a KDE user for years, but I am quite new to the KDE community. This years Akademy was my first and I am looking forward to dive in deeper and contribute more to KDE.
I had a really good time at Akademy in Milano, got to know so many cool people and learned a lot about the KDE community and KDE in general. Thanks a lot to everyone organizing this unique event! I am sure it won't be the last time I'll attend Akademy.
I want to share some things I noticed about discussion culture, please feel free to criticize/discuss/comment, so maybe we can work out some guidelines for that in the future.
First of all some words about discussion culture in general. Because all people are different, we need technics to allow everyone to participate in group discussions. When people are not that confident in general, they tend to not raise their voices in bigger groups, also if they have opponent opinions to the main stream. So in order to have a greater culmination of creativity and ideas, we need to create an atmosphere to make it easier for everyone to participate.
One thing would be the setup of the room the discussion will be held in. Do you want to have a central speaker in the front leading the discussion or do you want to setup the chairs and tables in a circle so everyone is on the same level. Sometimes there are mostly lecture halls available, so time to plan in advance and ask for a different room has to be taken in accountance. The advantage of a circle is that everybody is able to see everyone else. We can also think about forming smaller discussion groups when possible and a topic can be split up into smaller parts.
Another point you can think about is how you organize the turn keeping. One could appoint a person who only deals with turn keeping. We could alternate the job of turn keeping from one discussion to the next. At the beginning of the discussion we should make it transparent on how turn keeping will work. For example we could have a rule that people who want to say something the first time, move to the top of the speakers list to make sure that rare voices will be heard. We could also have a speakers list alternated by gender. There could be a maximum time for speakers so that single people don’t dominate the whole discussion by simply talking others out.
There are many other aspect we can think about when we want to make group discussions more inclusive. With this post, I just wanted to get the discussion started, so we can improve on that in the future.
Here are some links to continue reading:
https://www.workingdigital.de/en/blog/post/respectful-culture-of-discussion
https://www.wikihow.com/Be-Good-at-Group-Discussion
You can reach me directly at mail@flo-mue.de.
Tuesday, October 08, 2019
Linux App Summit 2019 schedule is out!
We published the Linux App Summit 2019 schedule last week.
We have a bunch of interesting talks (sadly we had to leave almost 40 almost as interesting talks out, we had lots of awesome submissions!) ranging from flatpak and snaps to how product management is good for Free Software projects with some thought provoking talks thrown in to make us think what's the future of our platform.
I am going and you should totally come too!
The attendance is free but please register at https://events.linuxappsummit.org/
We have a bunch of interesting talks (sadly we had to leave almost 40 almost as interesting talks out, we had lots of awesome submissions!) ranging from flatpak and snaps to how product management is good for Free Software projects with some thought provoking talks thrown in to make us think what's the future of our platform.
I am going and you should totally come too!
The attendance is free but please register at https://events.linuxappsummit.org/
Wednesday, October 02, 2019
2 years since Catalan Independence Referendum, an update
Note 1: This is not KDE or Free Software related, if you're not interested, stop reading, no one is forcing you to read
Note 2: Yes, this is still going to Planet KDE, KDE friends and colleagues ask me about it almost every time we met, so there's definitely interest
Note 3: You're more than welcome to comment, but remember this blog is my house, so don't complain when i don't tolerate stuff i wouldn't tolerate at my home
You may remember Catalonia held an Independence referendum 2 years ago, lots of things have happened since then, I'm going to try to summarize, if you're interested in my initial reaction read my blog from that very same day.
On October 27 2017, following the referendum results, the Parliament of Catalonia declared Independence by a majority of 70 out of 135 MPs. That was mostly ignored by every single country in the world. A few hours later the Spanish government used bigger-army-diplomacy (AKA article 155 of Spanish Constitution) to decide that the Parliament of Catalonia would be suspended and new elections would happen in Catalonia on December 21.
On November 2nd 2017, a judge put most of the Catalan government in jail with the charges of "you've been terribly bad".
They still remain in jail awaiting for trial results (trial finished a few months ago).
Notable exceptions of government officials not in jail are president Carles Puigdemont and Ministers Clara Ponsatà and Toni ComÃn, that exiled themselves to other European countries. Spain has tried several times to get European countries to extradite them to Spain because "they've been terribly bad", but that has failed every single time, so they ended up revoking the extradition requests.
Elections happened on December 21 2017, and to shocking surprise of no one, almost virtually the same results happened if you count the pro-independence vs anti-independence blocks.
Since then the Catalan pro-independence government has been basically very low-key in their actions.
Meanwhile, Spain had a its own elections in April this year. They did this nice thing of letting the jailed (but still not sentenced to anything, so innocent) Catalan politicians run, and several of them won Congress seats. Then they said "oh but you know, you're a very dangerous person, so we're not going to let you attend Congress sessions". Not that it matters now, since Spain is unable to govern itself and is having it's 4th election in 4 years this November.
We also had elections in the European Union, and you know what? The same happened! They let catalan-jailed politicians run but then they decided they would not let them take the seats. Actually, this time is even worse since Carles Puigdemont and Toni ComÃn, that are living in Brussels without any extradition petition (i.e. they're basically free citizens of Europe), have also been rejected from taking their seats for some esoteric reason.
As a "fun fact", in late 2018 some Spanish regions had elections. Andalucia was one of them and the current government is a coalition of PP+C+VOX, i.e. right wing conservatives, right wing liberals and ultra right wing nut-jobs. One of their first decisions was to put away 100000 euros for grants to teach Spanish to Spanish born people (not for helping immigrants, they're right wing crazies after all) living in Catalonia that don't know how speak Spanish. I'm 99.99% sure the number of people that matches that description is very close to 0 people. You heard well, the poorest region of Spain decided to subsidize the 4th richest region for something that is virtually useless. Thanks!
Much less "fun fact", last week Monday, the Spanish police decided to detain 9 pro-independence people (later to be 7 since 2 were let go) with terrorism charges. The investigation is on-going and technically it should be secret, but we've seen pictures all over the news of what the cops say to be material to make bombs, and all i can see is a pressure cooking pot and some fireworks used typically for Ball de diables.
I don't want to 100% rule out this people having actual plans to do something nasty, but Spanish police/judges/state history of just fabricating charges against people they don't like is so long (An anarchist recently spent *18* months in jail awaiting trial for tweeting stuff "Goku lives, the fight continues" to be then just found innocent after trial) that i would not be surprised either if this is just Spain doing bigger-army-diplomacy again.
TL;DR: Everything is fucked up and I can't really see a way out at this point.
Note 2: Yes, this is still going to Planet KDE, KDE friends and colleagues ask me about it almost every time we met, so there's definitely interest
Note 3: You're more than welcome to comment, but remember this blog is my house, so don't complain when i don't tolerate stuff i wouldn't tolerate at my home
You may remember Catalonia held an Independence referendum 2 years ago, lots of things have happened since then, I'm going to try to summarize, if you're interested in my initial reaction read my blog from that very same day.
On October 27 2017, following the referendum results, the Parliament of Catalonia declared Independence by a majority of 70 out of 135 MPs. That was mostly ignored by every single country in the world. A few hours later the Spanish government used bigger-army-diplomacy (AKA article 155 of Spanish Constitution) to decide that the Parliament of Catalonia would be suspended and new elections would happen in Catalonia on December 21.
On November 2nd 2017, a judge put most of the Catalan government in jail with the charges of "you've been terribly bad".
They still remain in jail awaiting for trial results (trial finished a few months ago).
Notable exceptions of government officials not in jail are president Carles Puigdemont and Ministers Clara Ponsatà and Toni ComÃn, that exiled themselves to other European countries. Spain has tried several times to get European countries to extradite them to Spain because "they've been terribly bad", but that has failed every single time, so they ended up revoking the extradition requests.
Elections happened on December 21 2017, and to shocking surprise of no one, almost virtually the same results happened if you count the pro-independence vs anti-independence blocks.
Since then the Catalan pro-independence government has been basically very low-key in their actions.
Meanwhile, Spain had a its own elections in April this year. They did this nice thing of letting the jailed (but still not sentenced to anything, so innocent) Catalan politicians run, and several of them won Congress seats. Then they said "oh but you know, you're a very dangerous person, so we're not going to let you attend Congress sessions". Not that it matters now, since Spain is unable to govern itself and is having it's 4th election in 4 years this November.
We also had elections in the European Union, and you know what? The same happened! They let catalan-jailed politicians run but then they decided they would not let them take the seats. Actually, this time is even worse since Carles Puigdemont and Toni ComÃn, that are living in Brussels without any extradition petition (i.e. they're basically free citizens of Europe), have also been rejected from taking their seats for some esoteric reason.
As a "fun fact", in late 2018 some Spanish regions had elections. Andalucia was one of them and the current government is a coalition of PP+C+VOX, i.e. right wing conservatives, right wing liberals and ultra right wing nut-jobs. One of their first decisions was to put away 100000 euros for grants to teach Spanish to Spanish born people (not for helping immigrants, they're right wing crazies after all) living in Catalonia that don't know how speak Spanish. I'm 99.99% sure the number of people that matches that description is very close to 0 people. You heard well, the poorest region of Spain decided to subsidize the 4th richest region for something that is virtually useless. Thanks!
Much less "fun fact", last week Monday, the Spanish police decided to detain 9 pro-independence people (later to be 7 since 2 were let go) with terrorism charges. The investigation is on-going and technically it should be secret, but we've seen pictures all over the news of what the cops say to be material to make bombs, and all i can see is a pressure cooking pot and some fireworks used typically for Ball de diables.
I don't want to 100% rule out this people having actual plans to do something nasty, but Spanish police/judges/state history of just fabricating charges against people they don't like is so long (An anarchist recently spent *18* months in jail awaiting trial for tweeting stuff "Goku lives, the fight continues" to be then just found innocent after trial) that i would not be surprised either if this is just Spain doing bigger-army-diplomacy again.
TL;DR: Everything is fucked up and I can't really see a way out at this point.
Sunday, September 22, 2019
Akademy 2019

It's 10 days already since Akademy 2019 finished and I'm already missing it :/
Akademy is a week-long action-packed conference, talks, BoFs, daytrip, dinner with old and new friends, it's all a great combination and shows how amazing KDE (yes, the community, that's our name) is.
On the talks side i missed some that i wanted to attend because i had to extend my time at the registration booth helping fellow KDE people that had forgotten to register (yes, our setup could be a bit easier, doesn't help that you have to register for talks, for travel support and for the actual conference in three different places), but I am not complaining, you get to interact with lots of people in the registration desk, it's a good way to meet people you may not have met otherwise, so please make sure you volunteer next year ;)
One of the talks i want to highlight is Dan Vrátil's talk about C++, I agree with him that we could do much better in making our APIs more expressive using the power of "modern" C++ (when do we stop it calling modern?). It's a pity that the slides are not up so you'll have to live with Kévin Ottens sketch of it for now.

My talk was sadly not very well attended since i was sharing time with the more interesting talk by Marco and Bhushan about Plasma in embedded devices (i would have gone there if it wasn't because i had a talk) so if you're interested in fuzzing please read my slides and give me a shout if you want to volunteer to help us fuzz all the things!
On the BoFs side one of the hardest but most interesting we had was the one about KDE Applications (the N things we release monthly in one go) vs KDE applications (all applications made by us), and i think we may be on the right track there, there's a plan, needs finishing out, but I'm confident it may actually work :)
One of the things that shows how amazing this conference is and how many interesting things are happening is the fact that i made a small list of bugs i wanted to work on if i ever got bored of the talks or the BoFs, i don't think i even started on any of them ^_^
Akademy 2020
Akademy is a core event for KDE and we need to find people to help us organising it every year. If you think you can help, please have a look at the call for hosts document.
Thanks
I would like to thank the UnixMiB friends for hosting us, i know it's lots of work and i hope you know we all very much appreciate the effort you put in.
I would like to thank the Akademy-team on KDE's side too, you are amazing and pull out great work year after year, keep it up!
I would like to thank the KDE e.V. for partially sponsoring my attendance to Akademy, please donate to KDE if you think the work done at Akademy is important.
Subscribe to:
Posts (Atom)
