Bug#1008493: gnome-control-center and gnome-settings-daemon version mismatch makes keyboard shortcuts fail

Daniel Kahn Gillmor dkg at fifthhorseman.net
Tue Mar 29 17:44:32 BST 2022


On Mon 2022-03-28 21:26:16 -0400, Jeremy Bicha wrote:
> This fix is pending

Thanks for the pending fix, Jeremy.  I can't help noticing that this
failure looks like a classic backward-incompatible API change.  The API
happens to be across a gsettings schema instead of a C library,
language-specific module, or network service, but it's still the same
thing.

As a community, we have decades of hard-won experience in reasoning
about and handling API changes: thinking about what kinds of changes are
backward-compatible (adding interfaces) or backward-incompatible
(removing or changing interfaces), how to signal them (SONAMEs for C
shared objects, libtool's current/revision/age, semver in many of the
modern language ecosystems, URL prefixes for HTTP REST, etc), and how to
declare dependencies on them in ways that are not hard to propagate into
downstream package managers.

How does GNOME track these API changes across its constitutent projects?
I'm too much of a newbie in GNOME to know how that's done, but if there
is some sort of API version tracking within gnome, then it seems like
either gnome-settings-daemon should have marked a backward-incompatible
API bump when it removed the "screenshot" key from the schema or
gnome-control-center didn't accurately specify its particular API needs
from gnome-settings-daemon.  If that signalling is present, and either
of those were fixed upstream, that knowledge should be propagated to the
debian packaging.

If there is no explicit API dependency tracking within GNOME, but
version numbers of major GNOME components are supposed to advance in
lockstep, then shouldn't the corresponding packages in debian have
automated and explicit dependency annotations to enforce that lockstep
transition?

There are other options too, of course, including:

 - gnome-settings-daemon could declare that any given key in its schema
   could go away, and expect callers to deal with such an outage.  In
   that case, gnome-control-center is at fault for aborting when the
   'screenshot' key was not found.

 - gnome-settings-daemon could avoid a backward-incompatible API change
   by retaining the "screenshot" key, possibly emitting deprecation
   warnings somewhere when the deprecated key is accessed.  Some future
   version could bundle a collection of schema removals into a larger
   backward-incompatible API change after a suitable deprecation window.

This is a larger general concern about the health of GNOME in Debian
going forward: i don't expect the GNOME interdependencies to get simpler
over time (what user-facing software does?), so i would like to
understand how GNOME and the Debian GNOME team think about handling them
in general.

GNOME typically does a good job in handling a novice user's behaviors
well without hassling them with confusing technical arcana, but that
means that silent and complete crashes like the one observed here just
look like unrecoverable breakage to the normal user who doesn't know
anything about stderr or how to launch settings from the terminal.

If you think this is an upstream GNOME issue and no debian-specific at
all, I'm happy to move this off the Debian BTS, just tell me where you
think the appropriate venue is.

Thanks for your work maintaining GNOME in debian!

    --dkg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-gnome-maintainers/attachments/20220329/6e195ca3/attachment-0001.sig>


More information about the pkg-gnome-maintainers mailing list