Package: debian-policy
Severity: wishlist
X-Debbugs-Cc: debian-de...@lists.debian.org

I propose two new virtual packages:

dbus-session-bus: anything providing the D-Bus well-known session bus
for user login sessions

dbus-default-session-bus: Debian's preferred implementation of
dbus-session-bus

Currently, many packages that require a D-Bus session bus express that
dependency by depending on dbus-x11. Many more packages rely on a session
bus without an explicit dependency. I would like to deprecate dbus-x11
(which provides a D-Bus session bus per X11 session to that X11 session)
in favour of dbus-user-session (which provides a D-Bus session bus per
uid, shared by all concurrent PAM sessions), while keeping dbus-x11
supported as a non-preferred implementation.

>From discussion in the related MBF plan
<https://lists.debian.org/debian-devel/2016/07/msg00484.html>, I am led
to believe that the preferred way to do this is with two virtual packages,
analogous to mail-transport-agent and default-mta.

dbus-session bus would be provided by dbus-x11, dbus-user-session, and
possibly something kdbus-related in future. The intended semantics are:
programs in at least graphical login sessions can rely on seeing the
$DBUS_SESSION_BUS_ADDRESS environment variable, the $XDG_RUNTIME_DIR/bus
Unix socket, or some other way to discover a session bus that is supported
by all the major D-Bus client libraries.

dbus-default-session-bus would be provided by exactly one package per suite
that is the preferred implementation, currently dbus-user-session.

Programs and desktop environments that require a D-Bus session bus and cannot
work without one should generally declare:

    Depends: dbus-default-session-bus | dbus-session-bus

Programs with weaker dependencies can use a Recommends or a Suggests.

Other options
=============

If this is not a best-practice use of virtual packages, the other options that
I am aware of are:

* Add a real (non-virtual) empty package dbus-session-bus built by src:dbus,
  with Depends: dbus-user-session | dbus-x11 (initially). Other packages
  depend on dbus-session-bus.
  (Pro: simpler dependency graph. Con: requires NEW queue.)

* Add a virtual package dbus-session-bus, and a real (non-virtual) package
  dbus-default-session-bus built by src:dbus.
  (Pro: avoids ambiguity if apt is configured to see more than one suite.
  Con: requires NEW queue.)

* Give packages a direct Depends: dbus-user-session | dbus-x11, and do
  another MBF if we decide post-stretch that we should actually be
  preferring a third implementation, kdbus-session-bus or something.
  (Pro: no proliferation of package names. Con: possible MBF in future.)

* MBF asking applications to stop depending on dbus-x11, and just
  assume that any reasonable desktop environment will pull in
  dbus-user-session | dbus-x11 anyway, in the same way that applications
  are not expected to depend on an X11 server.
  (Pro: simplest possible dependency graph. Con: undeclared dependency.)

Regards,
    S

Reply via email to