Nuvola 4.15 Released

Nuvola 4.15 was released. It brings the 28th streaming service (Jamendo), officially supports OpenSUSE, uses client-side window decorations by default (can be changed), fixes a few memory leaks and continues the quest to improve the quality of the entire codebase.

Jiří Janoušek
Dec 28, 2018 · 7 min read

Update December 30th: Repository PGP key needs to be updated on your system

Chances are that you see this error when running flatpak update from a comman line: error: GPG signatures found, but none are in trusted keyring. The error is a bit cryptic and doesn’t tell the real issue. Anyway, the GPG key used to sign Nuvola Flatpaks Repository needs to be updated on your machine. I apologize for the inconvenience. It should not happen again.

flatpak remote-list 
Name Options
flathub system
gnome-nightly system
nuvola system
org.gnome.Builder-origin system,no-enumerate
wget https://dl.tiliado.eu/flatpak/tiliado-flatpaks.gpgflatpak remote-modify \
--gpg-verify --gpg-import=tiliado-flatpaks.gpg "nuvola"

What’s New for Users

New streaming service: Jamendo

Maintainer: Jiří Janoušek • Flatpak packageSource code

Installation instructions for OpenSUSE

Although you could install and use the flatpaks of Nuvola in OpenSUSE for a long time, there were no official installation instructions and no official support. This has changed and Nuvola is now officially supported in OpenSUSE too [GitHub ticket]. Feedback is welcome!

You can browse and install Nuvola apps with KDE Discover in OpenSUSE KDE Plasma Workstation.

Client-side decorations are now default

During testing Nuvola with KDE Plasma desktop environment, I noticed thick white borders around the Nuvola main window, which are quite ugly [GitHub ticket].

Thick white borders if client-side window decorations are disabled.
Client-side window decorations don’t suffer from theming inconsistency issues and are used by default for that reason.

NPR One release 1.2

Maintainer: Jiří Janoušek • Flatpak packageSource code

Other changes

  • A broken detection of the presence of Nvidia GL drivers was fixed [GitHub ticket]. Thanks to Artem Hluvchynskyi for reporting this issue.
  • A memory corruption, which was silent unless special run-time memory checks of GNU C library were enabled, was fixed [GitHub ticket]. Thanks to Frederic Crozat for reporting the issue. The memory checks are now enabled during the development of Nuvola to avoid similar bugs in future [GitHub ticket].
  • The filter of external addresses was adjusted to allow Google Sign-In pages used by Jamendo.
  • Various memory leaks and invalid memory access issues were fixed in an ongoing effort to improve the quality of Nuvola & Diorite codebase. More details are provided in the Under the hood section below.

What’s New for Script Maintainers

  • Nuvola SDK commands new-projectand convert-projectnew-project, update modification time of files with zero modification time, which were typically copied from within Nuvola ADK [GitHub ticket]. They might pose problems to some software, e.g. Unison file synchronizer.
  • Nuvola SDK command check-project detects files with zero modification times. [GitHub ticket]

What’s New for Packagers

  • New release: NPR One 1.2 [Source code]: The filter of external addresses was adjusted to allow NPR One login pages. [GitHub ticket]
  • New script: Jamendo [Source code].
  • Diorite & Nuvola Runtime: New dependency: gee-0.8 >= 0.20.1.
  • Diorite & Nuvola Runtime: Build errors with Valac 0.43.x were addressed.
  • Diorite: The code style checker Valalint is run by default unless--no-vala-lint is passed.
  • Diorite & Nuvola Runtime: A few memory leaks and memory corruption issues were fixed.

Under the hood

The effort to improve documentation, unit tests and the quality of Diorite & Nuvola Runtime codebase continues.

  • Runtime memory checks of GNU C library are enabled (via MALLOC_CHECK_ and MALLOC_PERTURB_ environment variables) during development to detect some memory corruption and use-after-free errors [GitHub ticket]. See also Diagnosing Memory Heap Corruption in glibc with MALLOC_CHECK_, MALLOC_CHECK_ and MALLOC_PERTURB_, MALLOC_PERTURB_ helps find real bugs.
  • Unit tests of Diorite are also run with Valgrind (a tool to find memory leaks, invalid memory access, etc.), which revealed a few memory leaks (see below). Before that, I needed to investigate why Valgrind was not working properly inside a Flatpak sandbox and I then reached the upstream with a solution [Freedesktop SDK ticket].
  • I also found out that Valac generates code that doesn’t free memory properly for an out parameter from varargs. I reached upstream [Vala ticket] and helped with the testing of proposed fix (to be released in Valac 0.44.0).
  • Valgrind helped me to discover that some GLib data structures may cause a memory leak in Vala, so I started replacing them with data structures from Gee collections library. The tricky methods are GLib.HashTable.take, GLib.List.remove, GLib.SList.remove, GLib.List.delete_link, GLib.SList.delete_link. I still need to investigate the issue further and report it upstream.
  • Another leak may occur in methods with “out” parameters and inner GLib.Errors [example].

Nuvola Contributes to Good Angel Foundation

Jiri Janousek, the core developer of Nuvola Apps project, is glad to contribute a part of the project’s revenue to the Good Angel foundation. This way, he can regularly help families with children, which face financial distress as a result of severe illness. Even small monetary donations can help these families overcome a tough period.

Nuvola contributes to Good Angel Foundation.

Thank You for Your Support

At the time of writing, the awesome people listed below and a few others are Nuvola Patrons, who support the development of Nuvola Apps Runtime. Thank you all!

Nuvola News

News from the Nuvola Apps project.

Jiří Janoušek

Written by

Retiring chemist, emerging software developer, GNU/Linux lover, European citizen.

Nuvola News

News from the Nuvola Apps project.