Hi everyone, below you will find the updates from the Desktop team from the last week. If you’re interested in discussing a topic please start a thread in the Desktop area of Discourse .
We also have our weekly meeting on IRC. We meet on Tuesday at 13:30 UTC in #ubuntu-desktop on Freenode. There will be an “Any Other Business” section at the end where you are welcome to raise topics. These topics might be discussed during the meeting, or afterwards depending on the time, depth of conversation, topic and so on.
FourDollars found a bug in our update-manager/focal upload, hassled Julian to sort that out
Wrote one or two more metric collectors for the environment linked above. I want to populate it with some useful stuff so that when I announce it (later this week?) people can see how it’s something to get on board with.
Helped a bit on some image building weirdness. One day there was a stuck job preventing other builds from completing properly. Another day s390x builds were busted, pointed that out to xnox and then reviewed/landed the fix.
Nudged quite a few things along in hirsute-proposed, most of them migrated now.
Still getting organized from the holidays. Changed my daily driver to a different system with 2 monitors and a fresh groovy install… and a new ups! got through the crazy amount of email there was too.
LO deb bug triage… went through the new bugs filed over the holidays. There are a couple of Kubuntu ones that would be good to solve so looking for time to tackle them.
There were some large refactoring in snapd’s daemon package that resulted in a number of merge conflicts for some of my pending PRs (snapd PR #9268, snapd PR #9043, and snapd PR #9292).
I finally got some review feedback from security on snapd PR #9132 (extend snapctl is-connected to check connected state of clients). This is the one that @till-kamppeter needs for his CUPS snap, so hopefully we can get it merged soon.
Before the break, I put together snapd PR #9805, which adds a flag to the desktop interface plug to prevent mounting /var/cache/fontconfig. This is intended to prevent snaps using the flag from ever seeing the system fontconfig caches, which have been a source of bugs. This has received review feedback, but there is an open question about what the attribute should be named.
After the end of year break, snapd’s CI started failing due to a change in one of the static analysis tools it uses. I put together snapd PR #9806 to fix that. The long term fix will probably be to move to Go’s module aware build mode, which would make it possible to lock the versions of these tools in the go.mod file and avoid these surprises.
snapd dbus activation support
At the snapd review meeting, we agreed to put together a checklist for what’s needed to enable the user-daemons and dbus-activation experimental features by default.
I don’t think they need to be enabled together as a pair: user-daemons on its own can be useful for e.g. creating user session timeers, and dbus-activation on its own enables activation on the D-Bus system bus. I suspect dbus-activation will be the easier one to sell.
xdg-desktop-portal PRs:
Over the break, xdg-desktop-portal PR #550 was merged. This gives the document portal knowledge of some paths that a snap will be able to access without being proxied through the FUSE file system. In short, this means that a snap that plugs the home interface should see a real file path from the portal file chooser if the user picks a file in the user’s home directory.
I got a few small PRs merged to Snapcraft:
snapcraft PR #3392 was merged before the break, allowing v2 plugins to indicate that they can perform out-of-source-tree builds (a feature that hadn’t been ported forward from v1 plugins). It also updates the cmake and meson plugins to work in this mode.
snapcraft PR #3391 was merged before the break, adding a qmake v2 plugin for use with core20 based snaps.
snapcraft PR #3408 was merged, which extracts the symbol versions defined by a shared library. I wanted to see if I could write a better check for unused libraries, or libraries provided by a base snap or platform snap, and this was one of the missing pieces of data needed.
PostScript Printer Application: Completed querying/polling settings from the printer, both for installable hardware accessories and for option default settings. The queries can be triggered by buttons on the “Device Settings” web interface page for the printer and the results (not all options/accessories are queriable) are shown. Unfortunately there is no way to query the media loaded in each tray of the printer. Started investigating and devloping support for the user adding his own PPDs via the web interface (like non-free PPDs we cannot include), the last of the planned major features.
Retro-fitting drivers into Printer Applications: My idea is to take the PostScript Printer Application as base for a general retro-fitting framework, renaming the GitHub project into “retro-fit-printer-app”, extending with filter support, and control with conditional compiling which code pieces get used. Then for each individual Printer Application a GitHub project for snapping it will get added (like “ps-printer-app”).
PAPPL: Reported some issues about manual paper tray and custom page sizes which came up during the devlopment of the PostScript Printer Application (PAPPL issues: open, closed).
CUPS: Fixed an AppArmor profile problem discovered by stuck proposed migration. The new OpenPrinting CUPS upstream runs CUPS with systemd service type “notify” and so CUPS needs access to systemd’s notification socket. So CUPS in Hirsute is coming from the new upstream now.
CUPS Snap: Still waiting for @jamesh’s API extension of snapd to pass Canonical’s security team review so that the CUPS Snap makes it into the Snap Store. Good news: Security team is had a look on it and posted comments.
sane-airscan: Waiting for the MIR to get reviewed by the security team.
Google Summer of Code 2021: Mentored several candidates on working on cups-filters and CUPS GitHub issues as part of the selection process.