<div dir="ltr"><a href="https://specifications.freedesktop.org/mpris-spec/latest/" target="_blank">MPRIS</a> defines a standard D-Bus interface for controlling media players. For clients to be able to discover services that implement the interface, the MPRIS specification requires each media player to request a unique bus name which begins with the prefix "<font face="monospace">org.mpris.MediaPlayer2</font>". Clients like <a href="https://github.com/altdesktop/playerctl" target="_blank">playerctl</a> then invoke the <font face="monospace">org.freedesktop.DBus.ListNames</font> method exposed by the message bus daemon to acquire a list of all currently running services on the bus and filter it to get all services whose name begin with the aforementioned prefix.<div><br></div><div>This to me seems like bad practice: The whole purpose of interface namespaces is to prevent naming collisions. This is supposed to be accomplished by the notional owner of the namespace controlling which names are minted in the namespace. But the MPRIS standard relinquishes this control and tacitly gives anyone permission to take whatever name they want in the "<font face="monospace">org.mpris.MediaPlayer2</font>" namespace, without any control for naming collisions.</div><div><br></div><div>Is there no better way to implement this kind of discoverability on D-Bus? Services can advertise their desired bus name in D-Bus services files. Is there no similar way to advertise what interfaces they support? If not, is this something that has been considered and rejected for some reason?</div><div><br></div><div>Regards,</div><div>Anders Feder</div></div>