Quoting Simon McVittie (2019-08-14 22:20:05)
> On Wed, 14 Aug 2019 at 20:59:04 +0200, Jonas Smedegaard wrote:
> > libgtk-3-0-common could even be relaxed to _suggest_ dconf/gconf 
> > since already the applications using dconf/gconf declare a 
> > dependency on those disk-based backends.
> 
> The dependency is not because applications store configuration via 
> GSettings, it is because GTK widgets themselves store configuration 
> (which is shared between all applications that use those widgets) via 
> GSettings. The most prominent of these widgets is probably the file 
> chooser (File -> Open or File -> Save As dialog). Whenever 
> applications use those, preferences like the sort order are stored via 
> GSettings, even if the application itself has no mention of GSettings 
> in its source code and no reason to add a dependency on a GSettings 
> backend on its own behalf.
> 
> abiword and audacity are examples of applications that depend on GTK, 
> probably use file chooser dialogs, but do not depend on a GSettings 
> backend themselves because they do not use GSettings directly.

Ah, thanks for pointing that out.


> The preferences stored in this way are not vitally important, so 
> perhaps it would be OK for them to just not be propagated outside the 
> application or stored after it exits (with a warning on stderr) if the 
> GSettings backend is missing; but it isn't obvious to me that there 
> would be consensus about that not being a (RC?) bug, which is why I 
> asked.

Would it be fair to describe both widget and application needs for 
file-based config backend as required in "all but unusual 
installations."




> I suppose one way to represent that in the spirit of what you're 
> saying would be to drop libgtk-3-0-common's dependency on a GSettings 
> backend, and make GTK's shlibs/symbols generate a dependency like
> 
>     libgtk-3-0 (>= x.y), dconf-gsettings-backend | gsettings-backend
> 
> instead of just libgtk-3-0? But I don't think that works, because it 
> would only move the problem up one level, and instead of "I installed 
> libgtk-3-dev and it pulled in dconf-service", we'd have "I installed 
> libgtk-vnc-2.0-dev and it pulled in dconf-service" (where 
> libgtk-vnc-2.0-dev Depends: libgtk-vnc-2.0-0 which is an arbitrarily 
> chosen library that Depends: libgtk-3-0).

No, I don't mean that libgtk-3-0 should tell all its consumers that they 
all should depend(!) on a file-based config backend.

I simply noticed that a bunch of applications currently declare a 
dependency on those backends, without knowing how they grew that package 
relationship.

Based on your enlightening me above, I'd say that libgtk-3-0 should 
recommend those backends, and consumers of the config API provided by 
libgtk-3-0 should also (ideally only by default, possible to 
relax/tighten by each concrete package) recommend those backends as 
well.


> > Issues solely caused by disregarding recommends should be closed as 
> > not-a-bug indeed.
> 
> This is a good rule of thumb, but there must be some point on the 
> scale between "not required" and "is a hard dependency" where a 
> Recommends becomes a Depends. If libgtk-3-0 only had a Recommends on 
> libatk1.0-0 (because libgtk-3-0 contains both GDK and GTK, and 
> strictly speaking you can use GDK without ATK, as long as you don't 
> also link to GTK), I think there would be consensus that it would be 
> wrong to consider "libgtk-3-0 should depend on libatk1.0-0" to be 
> not-a-bug.

Not sure I follow you above.

If an application links with libgtk-3-0, 

If libgtk-3-0 provides an API that links with both GDK and ATK and 
gracefully handles consumers calling the ATK-related parts while libatk 
is missing, then libgtk-3-0 should only recommend libatk.

If however using the parts of libgtk-3-0 API related to ATK causes the 
library to segfault if libatk is missing, then libgtk-3-0 should depend 
on libatk.

Or are you talking about some other kind of behaviour?


> Obviously failure to store some preferences is less serious than "one 
> of the two libraries doesn't work at all", but neither is an absolute: 
> they're both points on a continuum.

Question is not if a feature totally stops working when related package 
is missing but instead if said feature truly is optional by _any_ extend 
- i.e. is there some exotic situation where it is sensible to omit 
without causing the code to become unstable?


 - Jonas

-- 
 * Jonas Smedegaard - idealist & Internet-arkitekt
 * Tlf.: +45 40843136  Website: http://dr.jones.dk/

 [x] quote me freely  [ ] ask before reusing  [ ] keep private

Attachment: signature.asc
Description: signature

Reply via email to