@Matias: I can appreciate your frustration. I think it was mostly
because of my criticism of the Dockmanager API that we didn't use it (so
pitchforks in my general direction ;-)).

As the FAQ on https://wiki.ubuntu.com/Unity/LauncherAPI also explains I
think the Dockmanager API is actively bad (sorry to be frank). We've
seen a great many times (and I shall omit finger pointing) that
thrashing DBus is a *very* bad thing to do. It affects app
responsiveness and startup times (very) noticeably.

But since we did (an do) need an API to talk o the launcher Neil and I
quickly threw something together that would minimize the bus traffic
while exposing only the minimal feature set that we wanted. And let me
emphasize that this was how this DBus protocol was created - minimal and
in haste. Hence the fat disclaimer in the description of it: "While the
libunity is unstable, the DBus protocol underneath is even more so. We
strongly discourage anyone from relying on it".

My emphasis on minimizing bus traffic also explains why we check whether
Unity is running before emitting property changes: it's to minimize
chatter on the bus when Unity starts. Unity relies heavily on DBus and
if we had 20 processes all fighting to set launcher states on startup
this could easily add a second or so to the startup time. Sure - one
could device a more clever protocol that could implement this
optimization without depending explicitly on the com.canonical.Unity
name, but as said we were in a rush to get this out so the simplest
option was taken.

To answer you last question Matias: the answer is "nothing would happen,
everything would continue to work". Either Unity fails to start because
it can't own the name - or it steals the name from your dock. But all of
this doesn't matter to libunity as it only cares whether *anyone* owns
the com.canonical.Unity name. And since the Update() message is a signal
broadcast on the bus anyone (including 3rd party docks that ignores the
disclaimer from the FAQ) can still listen to it.

Phew long post. Hope it explains the state of things.

PS: And let me add - no one on the Unity team desires the Launcher
API/protocol to be a private thing necessarily. But we do care a great
deal that it's an d API that behaves exactly like we need it to. So if
someone comes up with and even better API (or want to design one) that
works for all docks and launchers out there we are open to talk business
:-)

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

Title:
  Not possible for other docks to use Unity LauncherAPI

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

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

Reply via email to