Proposal and RFC: DAL, the Desktop Abstraction Layer
Jamie McCracken
jamiemcc@blueyonder.co.uk
Fri Jan 14 04:33:32 PST 2005
Kalle Vahlman wrote:
> On Fri, 14 Jan 2005 11:37:13 +0000, Jamie McCracken
> <jamiemcc@blueyonder.co.uk> wrote:
>
>><moving this to dbus/xdg lists>
>>To sum up, profiles (as in Bluetooth Profiles) allow you to define a
>>common interface with methods and events which would be publically
>>documented.
>
>
> Probably I'm missing something, but how is this different from well
> defined, standard services? You would have a specification of an
> service (what interfaces it should implement, parameters and so on
> with guidelines to create a program to offer that service),
> preferrably sanctioned and maintained by some group of people who do
> stuff like that ;)
>
> In fact, I'm working on just a thing like this which I'll bring to XDG
> once I get the proof-of-concept work done.
>
> If the additional abstraction is needed, perhaps the service in
> question could use some optimizing love...
>
Well lets say I write an app that needs to interface with an email
client. I dont know what email clients a user has so I would need to
lookup what email services are available on Dbus.
I could look at the dbus service name to decide if something was an
email service (which is a really informal and unreliable method -
suppose a wordprocessor implemented an email facility how would I know
it has email support from Dbus?)
Then how would I know if it implemented a standard interface? I would
have to write a lot of code to introspect its methods/signals to see if
it meets my requirements - not good! (Dont forget versioning too - what
happens if your standard services spec changes? How will I know which
version they support? etc - sounds like DLL hell to me!)
So alternatively if we have profiles then all I have to do is ask dbus
which services support a requested profile. Because different versions
of a profile would have a different profile ID I dont have DLL hell as I
simply request for a service that I know implements a predefined spec.
Its simple and just works and theres no need to introspect anything so
its fast and efficient too.
jamie.
More information about the dbus
mailing list