The reason why GNOME apps (and others) do this is to communicate with
arbitrary apps within the user's session. This is because the old world
uses a distro model that assumes a trusted archive and therefore
everything in the user's session is trusted and everything can do
anything to interoperate. Of course, the new world changes that, apps
are not trusted by the system and must communicate via defined
interfaces. We are going to continue to bump up against applications
designed for the old world trust model when running them in the new
world.

All that said, I was thinking the same thing Gustavo was-- we definitely
can add a dbus bind rule to the unity7 interface and Gustavo is right
that simply binding does not allow communication. The only problem then
is controlling what the app can bind to, which is what Mark's idea tries
to address. We could simply not care but this would mean that an app
could perform a DoS against other apps or against session services by
binding to names it shouldn't. I'm not sure of the proper solution for
this but was thinking along the same thing Mark was-- limiting it
somehow to the snap name and likely in a separate interface with an
attribute. This is actually pretty similar in concept to what we did in
snappy 15.04 with 'bus-name' but what we found with 'bus-name' is that
the well-known bus name that existing applications use not the same as
the snap name. In this particular example, the snap name is gnome-
mahjongg but the dbus name is org.gnome.gnome-mahjongg. Since this is
mostly something with GNOME apps, we could call this 'gnome-app-bind'
(or something with 'gnome' in the name) and allow binding to
org.gnome.<SNAPNAME> which would fix this bug. Of course then we have
things like Rhythmbox which binds to several: org.gnome.Rhythmbox3,
org.gnome.UPnP.MediaServer2.Rhythmbox, org.mpris.MediaPlayer2.rhythmbox
or evolution: org.gnome.Evolution, org.gnome.EvolutionAlarmNotify. There
just isn't a standard well-known dbus name naming convention.

Ok, so moving forward I think we have a few options:
1. don't worry about name collisions and bind to anything in unity7
2. since we know these are gnome apps, create a gnome dbus interface that 
allows binds to org.gnome.**
3. come up with a parameterized interface and have snaps declare what to bind 
to and have snapd refuse installing snaps that collide

'2' isn't much of an improvement over '1' based on d-feet output-- there
are a ton of session services and apps that start with org.gnome.*.

I'm not sure we can do much better than '3' with these old world apps.
If parameterized interfaces are a ways off and we want to do '3', I
suggest implementing the interface without parameters (ie, the default)
that allows binding to anything today. Then when the parameterized bits
are added, we adjust the review tools to trigger a manual review if the
snap doesn't specify the attribute. In this manner existing apps don't
break and apps can transition to using attributes.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1590679

Title:
  Apps can't own session bus names (unity7 interface)

To manage notifications about this bug go to:
https://bugs.launchpad.net/snappy/+bug/1590679/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to