Planet KDE

Subscribe to Planet KDE feed Planet KDE
Planet KDE | English
Updated: 7 hours 57 min ago

KDE Gear 21.04 is coming this week! But what is KDE Gear?

Sun, 2021-04-18 18:52

Let's dig a bit in our history.


In the "good old days" (TM) there was KDE, life was simple, everything we did was KDE and everything we released was KDE [*]

 

Then at some point we realized we wanted to release some stuff with different frequency, so KDE Extragear[**] was born.


Then we said "KDE is the community" so we couldn't release KDE anymore, thus we said "ok, the thing we release with all the stuff that releases at the same time will be KDE Software Compilation", which i think we all agree it was not an awesome name, but "names are hard" (TM) (this whole blog is about that :D)


We went on like that for a while, but then we realized we wanted different schedules for the things that were inside the KDE Software Compilation. 

 

We thought it made sense for the core libraries to be released monthly and the Plasma team also wanted to have it's own release schedule (has been tweaked over the years).


That meant that "KDE Frameworks" and "Plasma" (of KDE Plasma) names as things we release were born (Plasma was already a name used before, so that one was easy). The problem was that we had to find a name for "KDE Software Compilation" minus "KDE Frameworks" minus "Plasma".


One option would have been to keep calling it "KDE Software Compilation", but we thought it would be confusing to keep the name but make it contain lots of less things so we used the un-imaginative name (which as far as i remember i proposed) "KDE Applications"


And we released "KDE Applications" for a long time, but you know what, "KDE Applications" is not a good name either. First reason "KDE Applications" was not only applications, it also contained libraries, but that's ok, no one would have really cared if that was the only problem. The important issue was that if you call something "KDE Applications" you make it seem like these are all the applications KDE releases, but no, that's not the truth, remember our old friend KDE Extragear independently released applications?


So we sat down in the Akademy 2019 in Milan and tried to find a better name. And we couldn't. So we all said let's go with the "there's no spoon" route, you don't need a name if you don't have a thing. We basically de-branded the whole thing. The logic was that after all it's just a bunch of applications that are released at the same time because it makes things super easy from a release engineering point of view, but Okular doesn't "have anything to do" with Dolphin nor with krdc nor with kpat, they just happen to be released at the good time.


So we kept the release engineering side under the boring and non-capitalized name of "release service" and we patted ourselves on the back for having solved a decade long problem.


Narrator voice: "they didn't solve the problem"


After a few releases it became clear that our promotion people were having some trouble writing announcements, because "Dolphin, Okular, Krdc, kpat .. 100 app names.. is released" doesn't really sell very well.


Since promotion is important we sat down again and did some more thinking, ok we need a name, but it can't be a name that is "too specific" about applications because otherwise it will have the problem of "KDE Applications". So it had to be a bit generic, at some point, i jokingly suggested "KDE Gear", tied with our logo and with our old friend that would we have almost killed by now "KDE Extragear"


Narrator voice: "they did not realize it was a joke"

 

And people liked "KDE Gear", so yeah, this week we're releasing KDE Gear 21.04 whose heritage can be traced to "release service 21.04", "KDE Applications 21.04", "KDE Software Compilation 21.04" and "KDE 21.04" [***]


P.S: Lots of these decisions happened long time ago, so my recollection, specially my involvement in the suggestion of the names, may not be as accurate as i think it is.


[*] May not be an accurate depiction, I wasn't around in the "good old days"

[**] A term we've been killing over the last years, because the term "extra" implied to some degree this were not important things, and they are totally important, the only difference is that they are released on their own, so personally i try to use something like "independently released"

[***] it'd be great if you could stop calling the things we release as "KDE", we haven't used that name for  releases of code for more than a decade now

Categories: FLOSS Project Planets

One more week of CfP

Sun, 2021-04-18 15:08

Usually foss-north takes place ~April. This year, foss-north 2021 will be virtual. We shifted the date to the end of May to try to make it possible to at least go hybrid and have some sort of conference experience, but in light of the current COVID-19 situation and the pace of the roll-out of the vaccination programmes, we decided for a virtual event.

One of the benefits of going virtual is that it is a lot easier to attend – both as a speaker and as audience. For those of you who want to speak, you have one week left to submit a talk proposal to the Call for Papers.

To register a talk requires you to log in using oauth via either github or google. We are working on adding more login alternatives, but as with many volunteer run efforts, time is the current limiting factor. If you feel that this is a blocker, please reach out to me over email and we can sort it out.

Categories: FLOSS Project Planets

The effect of CPU, link-time (LTO) and profile-guided (PGO) optimizations on the compiler itself

Sun, 2021-04-18 14:18

 In other words, how much faster will a compiler be after it's been built with various optimizations?

Given the recent Clang12 release, I've decided to update my local build of Clang11 that I've been using for building LibreOffice. I switched to using my own Clang build instead of openSUSE packages somewhen in the past because it was faster. I've meanwhile forgot how much faster :), and openSUSE packages now build with LTO, so I've built Clang12 in several different ways to test the effect and this is it:


The file compiled is LO Calc's document.cxx, a fairly large source file, in a debug LO build. The compilation of the file is always the same, the only thing that differs is the compiler used and whether LO's PCH support is enabled. And the items are:

  1. Base - A release build of Clang12, with (more or less) the default options.
  2. CPU - As above, with -march=native -mtune=native added.
  3. LTO - As above, with link-time optimization used. Building Clang this way takes longer.
  4. LTO+PGO - As above, also with profile-guided optimization used. Building Clang this way takes even longer, as it needs two extra Clang builds to collect the PGO data.
  5. Base PCH - As Base, and the file is built with PCH used.
  6. LTO+PGO PCH - As LTO+PGO, again with PCH used.

Or, if you want this as numbers, then with Base being 100%, CPU is 85%, LTO is 78%, LTO+PGO is 59%, Base PCH is 37% and LTO+PGO PCH is 25%. Not bad.

Mind you, this is just for one randomly selected file. YMMV. For the build from the video from the last time, the original time of 4m39s with Clang11 LTO PCH goes down to 3m31s for Clang12 LTO+PGO PCH, which is 76%, which is consistent with the LTO->LTO+PGO change above.


 

Categories: FLOSS Project Planets

Speeding up apps.kde.org

Sun, 2021-04-18 14:00

Apps.kde.org is a great website listing all the KDE applications and their addons. Under the hood, it’s using AppStream, a standard for adding metadata to Linux applications. The Linux application managers (Discover, GNOME Softwares, …) are displaying them, so they stay up to date and are translated. There was only one problem, apps.kde.org has always been a bit slow to load. It is a problem since slow websites tend to be less visible on Google search results and for the users there aren’t a good browsing experience.

There were many reasons why it was slow. We designed it earlier in a way that on each page load the backend load the data from json files. On the individual application pages, we only need to read one json file but on the homepage every single JSON files was loaded. The Linux kernel is probably caching every JSON file in the memory so that the IO load wasn’t that bad, but parsing the JSON files still needed to be done on each page load.

Using PHP and a Symfony (a big PHP framework) for doing the rooting, templating and internalization (loading additional mo files) of the website adds an overhead. The final result was that the load time for just one html files, was between 300ms and 500ms.

That doens’t sounds like a big deal, but it is one. Rendering a page takes more than just downloading one HTML file, the browser needs to load the other assets (images, CSS and javascript files); it needs to parse the HTML and CSS files and compute the layout. These operations are done in parallel, but the initial loading of the HTML files blocks every other operation. Also, these 300ms loading times can be a lot longer on bad internet connections.

As often to solve the performance problem, my usual solution is to port the websites to static site generators. This isn’t always a solution that can be used but in this case, a generator was already generating the data as JSON files twice a day, so there was no technical reasons for dynamically generating the pages. I choose Hugo, because it is my preferred static site generator is Hugo, support internalization and we have a shared theme for it in KDE so most of the layouts, CSS files and translations can be shared with the other KDE websites.

Porting to Hugo was not difficult, I was already using a templating engine (TWIG) in the old websites and porting to the Hugo templating engine wasn’t complicated. I also wrote a small python script, converting the json files containing the AppStream metadata to markdown files in a way that Hugo can read it. The side-effect is that this makes the generation slower. Generating apps.kde.org is really pushing Hugo to its limits and even if it is one of the fastest static site generator, it now takes 20s for hugo to generate all the pages. This can be explained by the fact that it generates 240 pages in almost 30 languages.

Fortunately while making it slower to generate in the CI, it made it faster to load for the users. It moved the loading time from ~300-500ms to under 100ms. This is already a nice speedup, but wasn’t enough for me. The second steps was to improve the rendering time of homepage. Looking at Google Lighthouse, one of the reasons why the homepage was still slow was the large amount of DOM elements. It was over 2000, so I used some tricks to decrease the amount:

  • First one was to remove all the addons from the homepage, they aren’t really helpful for the visitors to know about them and they 15% of the content was about them. Instead I moved these addons information to the applications they extends. This makes it easier to get a list of addons for each applications without adding too much clutter to the homepage.
  • The second trick was to port the application grid from a CSS flex element to grid. Flex has the disadvantage that it doesn’t allow to specify a gab between the items, so to create spacing, I needed to wrap every element in a div with padding. (Flex support gap but only on Firefox for now). display: grid also has more advantages, for example I don’t need to specify how many element I want per row on each screen sizes but instead can specify the width of an item and its spacing will be automatically adjusted. Here is the new css rule for …
.application-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); align-items: top; grid-gap: 1em; }

… and the corresponding changes applied to the HTML. I also merged the two <a> element together.

- <div class="application-list row align-items-stretch"> + <div class="application-list"> {{ $category := .Params.categoryName }} {{ range where (where site.RegularPages "Section" "applications") ".Params.appType" "!=" "addon" }} {{ if and (eq $category .Params.MainCategory) (ne .Params.appType "addon") }} - <div class="app text-center col-12 col-sm-6 col-md-4 col-lg-3 p-2"> - <div class="p-3 h-100"> - <div aria-hidden="true"> - <a href="{{ .Permalink }}"> - <img width="48" height="48" src="//carlschwan.eu/app-icons/{{ .Params.icon }}" - loading="lazy" - alt="{{ .Params.Name }}" title="{{ .Params.name }}"/> - </a> - </div> - <a><h3>{{ .Params.name }}</h3></a> - <p>{{ .Params.GenericName }}</p> - </div> + <div class="app text-center"> + <a href="{{ .Permalink }}" class="d-flex flex-column"> + <img width="48" height="48" aria-hidden=true class="icon" src="//carlschwan.eu/app-icons/{{ .Params.icon }}" + loading="lazy" + alt="{{ .Params.Name }}" title="{{ .Params.name }}"/> + <h3>{{ .Params.name }}</h3> + </a> + <p>{{ .Params.GenericName }}</p> </div> {{ end }} {{ end }} </div>

This change removed 2 DOM elements per item, again reducing the amount of items that the browser need to download, parse and render by another 5%.

I’m actually wondering if using display: grid is also easier for the browser engine to render, since the improvement from my impression seemed faster than just 5%.

The end result is that the homepage get a score of 96/100 on Google Lighthouse, this is a big improvement from 56/100 we were getting a few weeks ago. Hopefully Google PageRank algorithm also like the change.

There is still a few improvements possibilities, mostly slimming down the CSS files. That should be doable thanks to the fact we can use Hugo to ship a customized version of the scss code shared with the other websites with less imported modules and just the one required for apps.kde.org.

Categories: FLOSS Project Planets

Tales of the KDE Network Kerala

Sun, 2021-04-18 08:55

Post written by Aiśwarya KK (Aish)

Kerala is a state on the southwest coast of the Indian subcontinent. Those who attended Akademy 2019 may already know or at least have heard the name once because Timothée and I gave a talk on the topic “GCompris in Kerala-Part 2”. This is also where I met Bhavisha and we could make a good connection. (I really miss in-person Akademy )
It was Bhavisha who told me about the nice idea of KDE Networks last year. And she motivated me to join one of the meetings. Inspired by the discussions, I contacted Subin, coordinator of the KDE Malayalam translation team (Malayalam is the language of Kerala), to inform him about the program. We decided to start KDE Network Kerala, and he started to add members. We have Sreeram, Kannan and Akhil on board now.

Kerala is a fertile ground for Free/Libre Software. If you want to know a more detailed history, please see the article by Sasi Kumar. Though KDE couldn’t get the momentum it deserves there. Yet, various KDE products are well integrated into the curriculum of public schools, such as GCompris, Kpaint, Kstars etc. Apart from those, Kdenlive is used as a tool in the creative works of school children, Krita is getting famous in universities and Plasma desktop is used by a daily newspaper.

Our strategy to reach out to more users and spread the community is through the already famous applications. But we felt that we are not equipped enough to reach out to more people. So in the first half of the year 2021, we decided to fix that. We are making Plasma workspace localization as good and complete as we can. And we decided to do GCompris and Krita tutorials in Malayalam. But our work is not restricted to it. We didn’t miss any occasion where we can talk and spread the news about KDE and its products. You can see some important accomplishments till today here:

• The team has decided to use some Malayalam channels for people in Kerala to contact the KDE Network Kerala team. Links for KDE Malayalam channels are Matrix: #kde-ml:poddery.com and Telegram: https://t.me/kde_ml

• Malayalam and Assamese localization teams have joined hands together; both are on the same server now.

• GCompris was featured during Pehia Annual Summit 2021 conducted by Pehia foundation, a community based non-profit working towards the cause of bridging the gender gap in technology with a primary focus on computer science & programming in Kerala.

• Subin gave a talk on January 22nd 2021 about FOSS at the College of Engineering Trivandrum, where he discussed about KDE too. Thanks to Aniqa and Paul for collecting all the promo documents in one place which we can easily refer to and use.

• Aiswarya and Timothée participated in the ICEFOSS conference to talk about GCompris.

• Public schools in the state of Kerala in India are being equipped to use the Qt version of GCompris. We will officially announce it later when the schools start using it.

• Plasma workspace Malayalam translation is 79% complete.

See you next time!

Categories: FLOSS Project Planets

Skrooge 2.25.0 released

Sun, 2021-04-18 07:57

The Skrooge Team announces the release 2.25.0 version of its popular Personal Finances Manager based on KDE Frameworks

Changelog
  • Correction bug 429356: Please make qtwebengine dependency optional
  • Correction bug 430535: % increase calculation in dashboard account widgets
  • Correction bug 430242: changing filter criteria while grouping Operations by Category expands a different set of categories
  • Correction bug 432423: Skrooge crashes when copying tables in categories with subcategories unfold
  • Correction bug 433514: Currency download from Yahoo uses "low" instead of "close"
  • Correction bug 435330: Sub operations view's tab confusingly looks identical to just "Operations"
  • Correction bug 435847: Bookmarks are not created with tab name and icon
  • Correction bug 422273: strange appearance of Skrooge bank icon pop-up menu if no scrollbar
  • Correction: Column combo box not visible in report in dashboard
  • Feature: opt-out accounts from the "accounts" widget in the Dashboard (see https://forum.kde.org/viewtopic.php?f=210&t=165735)
  • Feature: New dashboard layouts: by columns and with layouts in layouts
Get it, Try it, Love it...

Grab Skrooge from your distro's packaging system. If it is not yet included in repositories, go get it from our website, and bug your favorite distro for inclusion.

Now, you can try the appimage or the flatpak too !

Get Involved

To enhance Skrooge, we need you ! There are many ways you can help us:

  • Submit bug reports
  • Discuss on the KDE forum
  • Contact us, give us your ideas, explain us where we can improve...
  • Can you design good interfaces ? Can you code ? Have webmaster skills ? Are you a billionaire looking for a worthy investment ? We will be very pleased in welcoming you in the skrooge team, contact us !
Categories: FLOSS Project Planets

Building Android release packages with KDE Craft

Sat, 2021-04-17 05:45

One of the probably biggest gaps to make KDE Itinerary widely usable is the fact it is not available as a released package in any of the major APK stores such as F-Droid or Google Play. Unlike on Linux platforms there are no distributors handling this for us on Android-based platforms, we need to take care of that ourselves.

Current Situation

So far there’s only of a few KDE applications with release packages for Android, namely KDE Connect which is special in the technology and build system it uses compared to most other of out applications, and Krita, which uses a custom build script.

On the other hand we do have the nightly debug builds, provided via a spearate F-Droid repository, which are build by a common infrastructure for more than 25 apps. Besides tracking the latest development branches of the apps and their dependencies, those are fairly heavy packages due to all being based on a common base build and thus including a number of unnecessary content. At the same time those are not complete either and for example miss translations.

None of the above is immediately useful for getting to KDE Itinerary release APKs, so we need something else. Ideally this would:

  • Reuse as much as possible of already existing build infrastructure and build metadata, to minimize maintenance and scale easier to more KDE mobile apps in the future.

  • Provide full flexibility to fine-tune and tweak the build of the app and all its dependencies. This is necessary in order to strip out everything we don’t need to get the package to an acceptable size. For dependencies outside our control we might need the ability to apply patches on top of their official releases.

Possible Approaches

Since we want to reuse something we already have, let’s review the options:

  • The existing nightly debug APK infrastructure: already deployed and working for Android builds, but is very much focused on build the latest branches of everything. Support for using release tarballs, patches, etc would need to be added.

  • Adapting Krita’s solution: already working and offering sufficient flexibility for customization (it seems to bypass androiddeployqt which in that regard is appealing), however there’s likely little room for generalizing things sufficiently for reuse without ending up with something entirely different.

  • kdesrc-build: well known in the community, works for Android builds and is driven by config files containing dependencies and their build configurations. However it’s primarily focused on building code from version control systems and no support for patches.

  • Craft: also well known in the community, and driving the existing release package builds for Windows, macOS and Linux AppImages. Can build release tarballs and version control system checkouts, patch those if necessary and can be configured in great detail, and a large set of relevant build recipes exist already. There is was however no support for Android yet, or any cross-compiled platform for that matter.

  • Yocto: the ultimate level of flexibility and cross-compilation support. That comes at a high complexity cost though and with a steep learning curve. It’s also primarily aimed at embedded Linux, whether adding Android as a target platforms would be feasible I don’t know.

Of course there’s a spoiler in the title already, based on those option I picked Craft as the first option to explore further.

Android Support for Craft

On its currently supported desktop platforms, Craft basically sets up the entire development environment from scratch, compiling missing host tools itself where necessary. Doing the same for Android (or any other cross-compiled platform) would be a massive task, basically reviewing every single platform check and every single build job whether it refers to the host or the target platform.

That’s why Craft for Android currently doesn’t do the complete setup, but assumes it’s running inside a properly set up environment with all required host tools, in particular the KDE Android SDK Docker image which we already have for this purpose. This simplifies the necessary changes on Craft considerably, from adding full cross-compilation support to merely adding yet another Unix-like platform.

All of the required changes have passed review by now, basically falling into two categories:

  • Configuring build systems to pick up the desired cross-compilation toolchain. This has been done for CMake and Autotools builds so far, as well as some custom build systems relevant for us (OpenSSL, Qt).
  • Adjusting package dependencies and build options for things not being available on Android, or being otherwise different there. These are typically very small and straightforward changes.

Additionally there were are number of changes to enable more fine-grained control over build options or to allow static builds. Those changes are generally useful and not specific to Android.

With all that done, I managed to build working APKs of at least KDE Itinerary and KTrip for four different architectures (ARM 32/64bit, x86 32/64bit), with working translations. Other applications likely need additional fixes, at least if they use additional dependencies.

Release Builds on Binary Factory

Being able to build a package locally isn’t good enough though, it needs to be automated on central infrastructure and work reliably there. For this we can however reuse a lot of parts on KDE’s Binary Factory:

  • The KDE Android SDK docker image provides us with a reproducible environment that has all the needed host tools installed, and that is in use for CI and nightly debug package builds. With that latest build it already contains everything we need for Craft-based release builds.

  • The orchestration of Windows, macOS and Linux AppImage builds on Binary Factory can be extended with minimal changes to cover additional platforms and configurations. Patches for this are currently in review.

  • For signing and publishing packages, we should be able to reuse the existing system for signing and publishing nightly debug packages, the necessary changes for this have yet to be implemented though.

Outlook

Building and publishing packages is only part of the job though, we also need to review the packaged content, and where possible, remove unneeded things to keep the package sizes manageable. We also need to collect the required metadata for the app stores.

Since this is getting too long already, that’s going to be subject of another post next week then.

Categories: FLOSS Project Planets

Sok : The beginning after the end

Sat, 2021-04-17 03:25

Season of KDE 2021 officially concluded on 9th of April 2021 but this is just the beginning of the long road that I have to go with kockatoo. In this post I will write a short summary and a description of what went down during the Sok time period

Background

The KDE promo team used to spend quite sometime posting to various social media platforms and more often than not the post content was same across all the platforms . This felt like a waste of time atleast to me . Hence I had been meaning to work on consolidating all these platforms into one application to handle all that and save the promo team atleast some time.

State of the Art

Currently there are not a lot of apps that are built for this specific purpose itself . There are a bunch of social media managing platforms , Below are some of the problems with them

  • They are 100 percent proprietary
  • They don't have all the platforms promo cares about , for example diaspora , mastodon , reddit etc
  • They are also not even free as in gratis
What is Kockatoo

Kockatoo is an application that lets you post to multiple social media platforms all at once. The following platforms are supported currently  -:

  • Twitter
  • Mastodon
  • Reddit

I do plan to add more platforms as we go on.

The architecture / How it all comes together ?

Kockatoo works on a client server architecture. For the people not so much into tech that means , There are two parts to the application

One of them is the server which runs 24/7 and then there is a client which sends the request to the server . The request consists of the things like -:

  • Time to schedule
  • What to post
  • Where to post  etc .

The server then processes this request and gives some feedback to the client to ensure that their post has been scheduled correctly. Now the client can be shutdown or destroyed even and the post will still happen since it has been scheduled on the server side.

The tech stack / The toolbox
  • The tech stack used is fastapi with python  for the server side
  • Currently a python based cli client is underway
Packaging status / How can I get it on my machine ?
  • Currently The server side and client side aren't available as native packages for any distro
  • I do intend to package both the server and the client for arch Linux since that is the only type of distro packaging I am personally familiar with
  • The server side does have a dockerfile which you can use to build a docker image
  • If you are familiar with windows packaging , I am  looking for a volunteer since I don't have a way to package or test it locally atleast
Things for the future
  • Support more platforms
  • Make a GUI client
  • Document the API properly
  • Do more exception handling

If you are planning to test it or have tested this and would like to get in touch , please do so at mail[at]manav.co.in or insaanimanav:matrix.org on matrix

Categories: FLOSS Project Planets

This week in KDE: Offline updates are now optional

Sat, 2021-04-17 00:31

I have good news for those of you who are upset by KDE Neon moving to offline updates by default: we’ve made a GUI setting to turn it off (there was already a CLI setting). I get that the nerdy tech crowd is not super thrilled by this new more Windows 10-style update mode. But though you might find it annoying, it really does improve your system’s stability. I can point to literally hundreds of bug reports about problems caused entirely by not rebooting the computer after installing updates. However, in KDE we want you to be in control, so starting in Plasma 5.22, you’ll be able to enable or disable offline updates to suit your preference. This work was done by Aleix Pol Gonzalez:

And yeah, all these update-related options live in System Settings, not in Discover itself Other New Features

The Global Menu widget now includes a Search field that you can use to quickly locate menu items! (Jan Blackquill, Plasma 5.22)

Discover has gained the ability to update distros using rpm-ostree, such as Fedora Silverblue and Fedora Kinoite (Mariam Fahmy, Plasma 5.22)

In the Plasma Wayland session, screen-casting will now enter “Do Not Disturb” mode by default (though this can be overridden, if desired) (Kai Uwe Broulik, Plasma 5.22)

You can now set screens’ overscan values in the Plasma Wayland session (Xaver Hugl, Plasma 5.22)

Bugfixes & Performance Improvements

Hugely improved Gwenview’s speed, responsiveness, and memory usage when loading and navigating large grid views, particularly for files located on network locations (Arjen Hiemstra, Gwenview 20.08)

Entering your password in the Networks applet no longer causes the networks list to re-arrange itself while you’re typing and sometimes send your password to the wrong network! This has been a problem for quite a while, and we tried various targeted fixes that never fully worked; this time we went for the nuclear option that should finally solve it once and for all! (Jan Grulich, Plasma 5.21.5)

The new Plasma System Monitor app no longer crashes when you select a new display style for any of the sensors (Arjen Hiemstra, Plasma 5.21.5)

Sending files to Bluetooth devices from Dolphin now works again (Egor Ignatov, Plasma 5.21.5)

Discover once again displays firmware updates for eligible devices (Aleix Pol Gonzalez, Plasma 5.21.5)

It is now possible to specify a usergroup for OpenConnect VPNs (Aaron Barany, Plasma 5.21.5)

Long names in System Settings’ Users page no longer overflow (Jan Blackquill, Plasma 5.21.5)

Fixed one of the ways that KWin can crash when using a multi-GPU system (Xaver Hugl, Plasma 5.22)

In the Plasma Wayland session, KWin no longer sometimes crashes when showing Task Manager thumbnails or ending a screen recording/streaming session (Alois Wohlschlager, Plasma 5.22)

Accented and dead keys now work in the Plasma Wayland session when the virtual keyboard is available (Aleix Pol Gonzalez, Plasma 5.22 with Qt 5.15.3 plus KDE’s backported patches)

The Present Windows effect now works in the Plasma Wayland session when activated from grouped Task Manager entries (David Redondo, Plasma 5.22)

The new S.M.A.R.T. monitoring system no longer erroneously warns you that VirtualBox disks are broken when they’re not, or tracks the status for devices without S.M.A.R.T. support at all (Harald Sitter, Plasma 5.22)

When using the new Systemd startup feature, processes that crash at logout or login can no longer either block re-login, or fail to get started at login in circumstances under which they would otherwise launch normally (David Edmundson, Plasma 5.22)

System Settings no longer sometimes crashes when navigating from one QtQuick-based page to another (Jan Blackquill, Frameworks 5.82)

List Items throughout QtQuick-based KDE software no longer exhibit excessive left padding for their icons (me: Nate Graham, Frameworks 5.82)

User Interface Improvements

Digital signatures in Okular are no longer drawn with scary red text (Albert Astals Cid, Okular 21.04)

When dragging a document in Okular using the mouse, the cursor now wraps around horizontally when you reach the edge of the screen, just like it already does vertically (David Hurka, Okular 21.08)

On systems with slow PackageKit implementations (such as openSUSE-based distros), Discover now presents the initial view a bit more accurately while metadata is still being loaded (Aleix Pol Gonzalez, Plasma 5.22)

In the new Plasma System Monitor app, any page with a search field now focuses that search field by default when the page is loaded, so you can always start typing right away to search (David Redondo, Plasma 5.22)

The Bluetooth applet’s section separator now visually matches that of the Networks applet (me: Nate Graham, Plasma 5.22):

Web Presence

Pablo Marcos re-did Okular’s website to be nice and modern, with the help of Carl Schwan:

…And everything else

Keep in mind that this blog only covers the tip of the iceberg! Tons of KDE apps whose development I don’t have time to follow aren’t represented here, and I also don’t mention backend refactoring, improved test coverage, and other changes that are generally not user-facing. If you’re hungry for more, check out https://planet.kde.org/, where you can find blog posts by other KDE contributors detailing the work they’re doing.

How You Can Help

Have a look at https://community.kde.org/Get_Involved to discover ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Categories: FLOSS Project Planets

SoK Final Update

Fri, 2021-04-16 12:23

Hello again everyone, I wrote my last update related to Season of KDE in January, and now is the time for the final update. I am sorry I couldn’t write blogs in between. The 3 months passed by like at supersonic speed.

So I was selected to work on Calamares project under Adriaan de Groot. Most of my work revolved around the functionality of sending the installation logs to paste server online. This feature would help distro maintainers, calamares developers as well as the end users to pin point the errors that possibly may have caused installation to stop (if that happens).

First of all there was some basic (but important) code work by Bill Auger. My duty was to convert this work into a functionality, so that it is customizable and a distro maintainer can use the functionality without having to go through all the codebase. Currently a maintainer can easily setup the paste feature after tweaking a configuration file. The customizations offered are : the type of server to paste the data, the specific server (url) to paste the data and the maximum size of data to be send to that server (last one is under review).

Then some of the smaller works included hiding the next/prev buttons when calamares is actually installing and adding an option to skip the bootloader installation for EFI system.

Conclusion

All and all Season of KDE has been a wonderful experience for me. The programme taught me how to write some good, real-world code and how to collaborate with others. Calamares IRC channel was super helpful to me, people are really nice and know their stuff. A special thank to Adriaan, who used to teach me some seemingly complicated things in the easiest words. Although I never really understood why he randomly writes :momo in the channel xD.

Categories: FLOSS Project Planets

Web Review, Week 2021-15

Fri, 2021-04-16 09:02

Let’s go for my web review for the week 2021-15. A bit smaller this week, looks like less articles picked my interest. ;-)

The Community Canvas

Tags: community, management

Looks like a very nice canvas for building and charting communities.

https://community-canvas.org/


What exactly was the point of [ “x$var” = “xval” ]? – Vidar’s Blog

Tags: tech, shell

Interesting dive into history explaining why we had the x hack in shell script. Interestingly it was still relevant all the way to 2015 at least…

https://www.vidarholen.net/contents/blog/?p=1035


Understanding Atomics and Memory Ordering - DEV Community

Tags: tech, multithreading, atomics

If you’re still struggling with atomics and memory fences (and you should) this is a good piece to read. It really goes through it all.

https://dev.to/kprotty/understanding-atomics-and-memory-ordering-2mom


SQLite the only database you will ever need in most cases

Tags: tech, sqlite, sql

Starts a bit like a (somewhat deserved) love letter to SQLite. But that also does a good job pointing out some of its caveats and when to not use it.

https://unixsheikh.com/articles/sqlite-the-only-database-you-will-ever-need-in-most-cases.html


Bye for now!

Categories: FLOSS Project Planets

Introducing Qt Quick 3D Particles

Fri, 2021-04-16 04:27

As you may have already seen or heard, Qt Quick 3D introduces support for 3D particles in Qt 6.1. Similarly to instanced rendering , also 3D particles module is a technology preview in Qt 6.1 and will be fully supported in Qt 6.2. In this blog post we'll go through things every developer & designer should know about the new 3D particles, so please continue reading. With the visual elements such as particles, it is always beneficial to actually see what you can do with them. The video below goes through some demos from our Testbed application, included as part of the Qt 6.1 examples.

Categories: FLOSS Project Planets

Improving the remote experience: treadmill

Thu, 2021-04-15 15:57

Last year I decided to add an improvement to my home office, a treadmill. I thought about during the total lock-down we suffered in Spain in spring 2020. The reason for not trying it earlier was that I was skeptical about keeping my productivity level while walking on the treadmill. Finally I made the decision to try out and asked for one to The Three Wise Men. They were kind enough to bring it.

After a few weeks using it, I would like to report about it since several of my colleagues at MBition/Daimler asked me about it. I hope that reading about my experience is useful to you.

Select the right treadmill

I started by doing some research on which treadmill to buy. The main characteristics that led my decision were:

  • Walking vs running: I wanted a treadmill for walking, not for running. There are quite a few models that has 6 to 7 km/h as speed limit and no support or add-ons to hold on to while walking. The intention is to avoid any clashing with my standing desk converter.
  • I am a big man so I need a big treadmill: the market offers treadmills with different length, surface and weight limits. I searched for one that can afford a big man like me and that was as wide as as possible. Falling from it was a concern.
  • Remote control: since you will be walking while working, you need a way to control the treadmill remotely, either with a remote control, an app or similar. I selected one with a remote control.
  • With wheels: I need to move the treadmill often since I alternate using the treadmill with working standing up or seated. I wanted one with wheels so it is easier to move. Treadmills are heavy.
  • Limited investment: my idea was to try out first so I did not want to invest a lot. If it works, I will invest more in a replacement when needed.
  • Pay attention to the noise level: my treadmill is noisy although not enough to be annoying or to be heard by others while in video calls. Check the specifications, I did not so I simply was a little lucky..

I bought this model, produced by 2WD, ASIN/model B08GLTX8LK, through Amazon for €299. I had no issues with the purchase.

Usage

I use the treadmill between 3 to 4 hours a day. I started using it between 5 and 6 hours but soon I got hurt in one foot which forced me to stop for some time. First lesson learnt, take it easy, specially if, like myself, you are not in great shape.

At first I ended up so tired that it was hard for me to keep good levels of concentration during the last part of any working day. As I got more used to using the treadmill, I felt more energetic in general so that tiredness is little by little going away. My productivity is increasing overtime compared to the first few days. The last few weeks I even have energy left to do some soft exercise after work.

I started walking at 2 km/h. I increased to 2.5 km/h after 2 weeks. A few weeks later I tried 3 km/h but it was harder for me to concentrate, it is too fast for now. There is a mismatch by the way between the speed and the distance walked marked by the treadmill. I think that the average speed I walk is a little below 2.5 km/h. In am current walking between 3 and 4 hours a day which is around 7-8.5 kms (10k steps is around 8 kms). In any case, I try to reach the 6.5 kms mark every day. I am accomplishing it regularly during the last few weeks.

Can I work normally while walking?

This is the question most colleagues ask me. The answer is yes… for most activities.

My experience is that I can work normally while walking, keeping good productivity levels, while performing most type of activities, specially during most meetings.

In which ones I have seen a reduction of productivity?

I detected a productivity decrease in those activities which require high levels of concentration or creativity like complex meetings with many people that I facilitate, those times when I need to come up with new ideas, analysis of complex data, etc. The good news is that I did detect this productivity reduction early. The longer I have been using the treadmill though, the more type tasks I can do without noticing a productivity reduction. So I plan to try again during the coming weeks some of those activities that I dropped early on.

Walking is helping me a lot to go through those days with back to back meetings. I pay better attention and get less bored compared to standing up. As I get more used to walking, my energy levels during the afternoons are increasing, as mentioned, which helps me to get through the last couple of hours during long working days. It was not like that at first though, so plan accordingly.

The unexpected surprises

The treadmill uses IR to connect to the remote control which interferes with an IR based device I had at my office, the HDMI hub. I use two laptops and two monitors and used the HDMI hub to have one of the two screens assigned to one of the laptops while the default config is to have both monitors assigned to my working laptop. I did not find a way to prevent such interference so I had to remove the HDMI hub. I am looking for alternatives although the impact in my daily workflow is low. The problems were easy to detect because every time I turned the treadmill on, one of my screens turned off although both laptops detected it.. So the takeaway is: watch out for IR interference.

I trickier surprise for which I have not find a solution is the problems associated with the PLC. I have my office connected to the living room, where the fiber router is, through PLC. This has been my default set up since years in several houses. Something related with the treadmill makes the link between both PLC devices unstable which ends up in internet issues. I have a backup for cable connectivity which is a wifi replicator and a specific wifi network for the devices I use for work (in other jobs I used to play with boards which required a testing network. So sometimes I have to use wifi instead of cable because the link between both PLC devices get unstable. It took me a while to detect the source of issues. After testing all the current current plugs at my office, I ended up finding one which makes the connectivity issues tolerable. Still I am searching for a solution here..

The takeaway is that the treadmill consumes quite some power and might have spurious looses that might turn network connectivity through PLC unstable. This is not the first time I suffer from this. The first mobile heat device I had at my office provoke the same effect.

Other points to consider

Some days I start walking and some others I walk after lunch on when I have back to back meetings. I tend to change the set up putting or removing the treadmill no more than once a day. Usually I have an additional set up change when I push down my Varidesk to work seated.

The standing desk converter I have is big enough to allow me to hold on to it when I do not have my hands on the keyboard. That have saved me from falling down during meetings more than once. Be careful, falling down is a real risk. Take precautions.

Get professional advice about walking with or without shoes. In my case, I walk without shoes. This decision might change in the future. My knees are awful due to injuries during my basketball times. Pay attention to the way you walk. When you get tired, your walking style changes and in might end up hurting.

My treadmill has a limit of 100 minutes. When it reaches that threshold, it stops. I was annoyed at first but it has ended up being a great thing. I used to work in cycles of 110 or 120 minutes but sometimes I loose track of time and this hard limit helps. While walking, my working cycles are shorter. 100 min which helps my concentration specially at the end of the day.

Obviously during meetings participants notice that I am walking. Be ready for questions and jokes. Having a treadmill is not mainstream yet. Ah, and do not fall while in a meeting.

Conclusions

At first I overdid it, got hurt and tired fast so my productivity in the afternoons dropped. In my second try I took it easier and the experience is getting better overtime. Six weeks after being back at using the treadmill again I am feeling better. I will soon be ready to increase the time walking and the type of activities I execute while on the treadmill.

I think it will take me another few weeks before the benefits for my health and shape become evident. I can see early signs though. So in general I find the experience positive so far although I expect to get better after a few more weeks when, in addition to the walking done in the treadmill, I have energy to complement such exercise with additional one on regular basis instead of just some days. The same applies to the level of concentration while doing the most demanding tasks.

The connectivity issues I am experiencing are unfortunate although tolerable. I need to find a solution.

So yes, I totally recommend to get yourself a treadmill. Results will show up sooner or later depending on your prior shape. I think that if you are in better shape than I was when I got it, which is not hard, results will be noticeable in a couple of months, probably less.

Categories: FLOSS Project Planets

Season of KDE 2021 Report

Thu, 2021-04-15 07:02
Season of KDE 2021 Status Report

This year I participated SoK as mentor for KWeather and Kalk. Now the work has been done, let me sum up the new features we bring to the projects.

KWeather

When the project name is KWeather, the actual code is committed to KWeatherCore, a Weather library. We decided to add weather alerts functionality to KWeatherCore, possibly easing the difficulty later if we want to develop a weather alerts daemon.

The data source is from metroelogy institutes around the world. Most of them provide CAP protocol for alerts. So the main goal is to write two parsers, one for CAP feed parsing and other for the CAP parsing. Anjani Kumar finished classes representing CAP feed entry and CAP message, as well as the CAP parser. Nikunj Goyal is supposed to work on feed parser and some of the daemon code. But due to various reasons, he wrote the AlertManager class which is an utility class. I wrote the feed parser and finished most of the documentation.

Since the lack of man hours, we weren’t able to finish the promised daemon. However the library is working as expected. We use config files (in json format) to avoid hardcoding different formats of CAP feed. So in the future we can support more countries without edit our code (and releasing new library version).

Kalk

Kalk is calculator for Plasma Mobile, this SoK we’re bringing binary mode to it.

Though as simple as the project name suggests, in the middle of the SoK we decided to switch from primitive double type to GMP and MPFR for our base type. Thankfully we’re using Bison/Flex for our math engine so swithing to multi-precision big number type doesn’t require use to rewrite Kalk again, wrapper classes still needs to be created. We re-used Knumber from KCalc. Since it’s a in-source library for KCalC, and lacking some helper functions Kalk needs, it has been copied to Kalk and modified since. Rohan Asokan wrote binary number type wrapper for Knumber (though later reverted because of preference for native GMP/MPFR binary <-> string converting functions), and math engine supports simple binary calculations. He also managed to add UI for binary calculator using Kirigami.

Date calculator was originally planned, but I decided to drop it eventually. Kalk is a simple calculator, I don’t want it to be bloat. Rohan Asokan did have a prototype for it though.

Categories: FLOSS Project Planets

Hilbert Transform

Thu, 2021-04-15 05:14

The next release 2.9 will again come with many very useful and interesting new features. Today we want to talk about a new feature in the area of the data analysis that has been included into LabPlot’s master branch recently.

Though it is possible in LabPlot to access many different computer algebra systems and programming languages with a plethora of packages relevant in scientific communities, it is sometimes useful and desired to perform the analysis of data in a more visual and interactive way. For this kind of analysis LabPlot already supports algorithms and computations like the Fourier Transformation, smoothing, interpolations, Fourier filter, etc (see this blog post for a couple of examples). To this list we have now added the Hilbert Transform.

The Hilbert Transform has many applications, especially in signal processing. Below is an example produced in LabPlot that shows the time response of a super regenerative receiver to an ultra-wideband (very short) pulse consisting of few oscillating cycles enclosed within a Gaussian-like envelope (for high-Q receivers) or within a bilateral exponential envelope (for low-Q receivers).



In this example, the use of the Hilbert Transform helps you visualize and confirm the envelope shape and to find some signal features, like the position and the value of the maximum envelope point, which would be very difficult to determine otherwise.

The current development versions (i.e. the code being finalized and prepared for the next release) is available from our download section and can already be used to try out this new feature.

Categories: FLOSS Project Planets

Better Calendar, Better Kickoff and... Merge Requests?

Thu, 2021-04-15 05:10

Better Calendar, Better Kickoff and... Merge Requests?

Categories: FLOSS Project Planets

Single-shot signal/slot connections

Thu, 2021-04-15 05:00

Sometimes it’s useful to establish a connection between a signal and a slot that should be activated only once. This is not how signal/slot connections normally behave. Remember that, when a connection is established, it will stay active until:

  • the connection is explicitly disconnected; or
  • the sender object is destroyed; or
  • the receiver object is destroyed.

So, if we need such a single-shot connection, how do we go about it? A possible solution is to connect our signal to a small helper function (for instance, a lambda) that disconnects the connection, then calls the actual slot. This is it, in pseudocode:

// Trying to make // connect(sender, &Sender::signal, receiver, &Receiver::slot) // behave as single-shot connection auto singleShot = [receiver, connection](parameters) { QObject::disconnect(connection); // WHOPS, we don't have this yet! receiver->slot(parameters); }; connection = connect(sender, &Sender::signal, receiver, std::move(singleShot));

There’s a semantic problem with this code: the connection object is created after the lambda. But we need its value in the lambda, to be able to disconnect it! Fixing this requires us to introduce a little indirection, but it’s doable:

auto connection = std::make_unique<QMetaObject::Connection>(); auto connectionPtr = connection.get(); auto singleShot = [receiver, connection = std::move(connection)](parameters) { QObject::disconnect(*connection); receiver->slot(parameters); }; *connectionPtr = connect(sender, &Sender::signal, receiver, std::move(singleShot)));

This is…quite annoying to write. I certainly don’t want to type all of that every time I need a single-shot connection, and trying to make it generic is super tricky for new users of Qt.

We can do better!

Enter Qt 6.0!

In Qt 6, I have added the convenience Qt::SingleShotConnection connection flag that you can pass as the fifth argument of QObject::connect (optionally combining it with the other connection types):

connect(sender, &Sender::signal, receiver, &Receiver::slot, static_cast<Qt::ConnectionType>(Qt::SingleShotConnection));

The static_cast isn’t technically necessary, in this case. But it becomes necessary, should we want to also pass some other arguments (for instance, if we want the connection to be queued as well as single-shot). This closed a long-standing and very voted feature request. Sometimes, by removing the pebble in your shoe, you make many other people happy.

And for Qt 5?

I can’t add the same feature to Qt 5, as Qt 5 development is closed for new features.

However, I’ve also reimplemented the solution shown above in KDToolBox and packaged it with a convenient API:

KDToolBox::connectSingleShot(sender, &Sender::signal, receiver, &Receiver::slot); sender->causeSignalEmission(); // calls the slot, and breaks the connection sender->causeSignalEmission(); // does NOT call the slot

KDToolBox is KDAB’s collection of miscellaneous useful C++ classes and stuff. You can download it from our GitHub repository here.

Have fun!

About KDAB

If you like this blog and want to read similar articles, consider subscribing via our RSS feed.

Subscribe to KDAB TV for similar informative short video content.

KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.

The post Single-shot signal/slot connections appeared first on KDAB.

Categories: FLOSS Project Planets

New desktop application: MiTubo

Wed, 2021-04-14 16:11

I've recently started a new project, to enable me to playback videos from online sources in a desktop application: Mitubo.

Here's a terrible video I quickly made to show what MiTubo can currently do:

MiTubo is currently available for Ubuntu 18.04 and later from this PPA and for all other distributions from here as an AppImage package.

You are very welcome to try it out and report issues at its bug tracker. I know that there are many of them, but regardless of them the program is still useful to me, so I hope it can be useful for other people too.

Categories: FLOSS Project Planets

Qt Creator 4.15 RC1 released

Wed, 2021-04-14 05:35

We are happy to announce the release of Qt Creator 4.15 RC1 !

Categories: FLOSS Project Planets

My current Plasma Wayland from git

Wed, 2021-04-14 01:28
However much distress the current scenario and some personal stuff might cause, I’ve really been having fun with my laptop. Running everything on bleeding edge is exciting: kernel 5.12.rc6, openSUSE Tumbleweed with Plasma built daily from master (so openSUSE Krypton), using only the Wayland session, switching entirely to pipewire and so on. I figured I … Continue reading "My current Plasma Wayland from git"
Categories: FLOSS Project Planets

Pages