This Week in Pop! – May 13th

Pop!_OS is a Linux distribution by System76, a Linux-based desktop hardware OEM. It is based on Ubuntu, with many enhancements specific to our vision of the desktop, and provides an optimal platform for our hardware, which is thoroughly tested throughout each release. These weekly posts highlight the developments that have been made each week in Pop!_OS.

Weeks of April 29-10, 2018

Sorry about the delay. This week’s post contains last weeks progress, as well.


Thanks to @adminxvii, a new feature has been added to the Popsicle UI. If a checksum has been entered into the checksum entry, then when an image checksum is generated by clicking on the checksum check button, if the generated checksum matches with what was entered into the entry, then the text will turn green to signify that the checksum is valid, or red if it was not. If no text is entered into the checksum entry, then the generated checksum will be filled into the entry upon completion of the generated checksum.

System76 Power

Support for handling multiple hwmon interfaces for multiple I/O boards and CPUs was added to system76-power to combat excessive fan usage. This should reduce the amount of noise generated by fans on desktops that are effected by this criteria. A much quieter fan curve will also follow soon, which should make a lot of people happy that have been affected by loud fan noise to this date.


Due to a breaking change from GNOME 3.32.0 to 3.32.1, the shell theme was updated to fix the toggle switches in the shell. In addition, the selection background in the app switcher has now been lightened so that nautilus’ icon does not partially blend into the background. GNOME Shell has also been updated to 3.32.1.

Pop Upgrade

As we grow closer to the release of the upgrade feature, many of its features have now reached completions. The daemon itself is complete, as is the integration in GNOME Control Center. The final stretch is the completion of the integration in the installer for recovery partition-based upgrades, and the development of the notification dialog for distribution release upgrades.

In distinst, a successful upgrade will now rename the EFI entry to reflect the newly-installed version of Pop!_OS. It now handles the existence of the refresh and upgrade configuration settings so that the installer can check for their existence. The upgrade support was the major focus for the last two weeks, and now allows the caller to attempt to resume an upgrade as many times as it needs to.

In the installer, it will now check if either the refresh or upgrade mode setting has been set, and if set, checks if the root partition requires to be decrypted, and then proceeds directly to their respective views. For the upgrade support, this proceeds immediately to performing a release upgrade. On failure, there is now a button which will open a terminal chroot’d into the target to allow the user to manually repair the system. This feature will likely be extended as general feature of the recovery partition in the near future.

In GNOME Settings, a dialog for handling incompatible third party repositories was updated to allow the user to decide to either cancel an upgrade, keep the incompatible repositories, or disable them. A dialog was also created for handling the scenario where a release upgrade requires the recovery partition to be upgraded as well. Firmware details are also now readily available on the settings page, and firmware reflashing is now a supported feature. Many segmentation faults were fixed over the last two weeks as intensive testing was carried out. Screenshots can be seen on the merge request.

As for the upgrade daemon itself, various improvements were made to complete its feature set. A `RecoveryVersion` method was added to check for the current ISO version and build ID of the recovery partition. This information is used by the CLI and GNOME to determine if the recovery partition requires to be upgraded. Some timeout issues were also resolved in the apt package fetcher.

A big thanks goes to Valgrind and ASan/TSan for making it possible to debug memory and thread safety violations in C and Vala applications through runtime analysis. GNOME Settings (C) and installer (Vala) have taken a monumental amount of effort to extend and debug due to their highly unsafe (C), and even unpredictable natures (Vala). Without these runtime analysis tools, development would have taken much longer.

As for distinst and the upgrade daemon, development was smooth all throughout, due to the memory, thread, and type safety restrictions applied at compile-time. Languages with compile-time static type analysis are the future. The only issues experienced were of the boolean logic variety, which are easier to detect and write unit tests for.

Updated Packages

  • Natron’s disco packaging was updated
  • Tensorflow 1.13 on disco was updated after a compiler bug was reported
  • slack-desktop is now 3.4.0
  • atom is now 1.36.1
  • mattermost-desktop is now 4.2.1
  • wire-desktop is now 3.9.2895
  • github-desktop is now 1.6.6-linux2

Pop!_Volunteers This Week

@derpmatt added the appstream metadata for Alacritty and TimeShift. MR
@adminxvii implemented checksum verification in Popsicle. MR

I am a System76 software engineer, maintainer of Pop!_OS, and contributor to Redox OS. My preferred programming language is Rust, with four years of e...