MAY
12
2006

Fairy tales

Once upon a time, I believed in fairy tales.

Later, during my software engineering education, I came across a fairy tale called "capabilties detection".

The tale's main content was that it would be possible for a software to query for available capabilities in some kind of backend.
It told about a mythical protocol called X11, which would allow an even more mythical software called an X11 client, to query an almost unbelievably mythical thing called an X11 server for the availability of what the tale called extensions.

The tale then went on to make the audience believe that the "X11 client" could offer different sets fo features depending on the available "extensions".

A different variant of the tale told about a mythical API called OpenGL, if I remember correctly after all those years it had something to do with three dimensional visualisation.
Anyway, the tale's variant claimed that an OpenGL using application could magically detect which features of OpenGL were available and enable/disable options in its user inferface.

Unfortunately fairy tales do not last forever. :(
Yesterday I learned that the only way to support differently sophisticated backends was to "...bow to the lowest common denominator in the backends.."

Ah, well, I am sure I'll find a new fairy tale to believe in soon enough.

Comments

I think I missed your point. X11 clients do query the server and do offer different sets of features depending on the available extensions - a good example of that is using Qt app on a X server with or without Xrender. In the same way OpenGL clients do detect what features given OpenGL version supports and adjust accordingly - just look at QtOpenGL app with or without GLX_ARB_multisample.


By zack rusin at Fri, 05/12/2006 - 17:56

I just wanted to emphasise that despite popular believe it is not required to "bow to the lowest common denominator" because capabilties can be queried if that is part of an API's or protocol's design.

I guess my attempt to be sarcastic failed miserably ;)


By krake at Fri, 05/12/2006 - 18:35

Tsk, you should have used the < /sarcasm > tag, that's what it is for! ;-)


By quintesse at Sat, 05/13/2006 - 10:22

Hehe, true! However I thought it was obvious enough


By krake at Sat, 05/13/2006 - 18:08

I disagree, if you have a less then featureful backend then the distros are going to use that one (I don't know why) and people will think your app doesn't have features that it does have. And then complain to you about it.

I really don't see why we should distribute an incomplete backend.

Note that I don't disagree with Phonon, it is something that we need to have.


By [email protected] at Fri, 05/12/2006 - 23:26

I meant that any kind of advanced or uncommon functionality doesn't have to be sacrificed, but rather enabed dynamically when available.

A backend would only be considered a distributable implementation if it implements the required base set of functionality, lets say play/stop/pause, skip forward and backward, volume control.

Extended capabilities that might not be available could be things like handling remote URIs.

X11 is a good example. Without extensions one might loose some fancy effects, or even quite substantial ones like antialiased fonts, but one will always be able to draw widgets and get events for them.

I am confident that Matthias is able to define a good base set of functionalities.


By krake at Sat, 05/13/2006 - 18:16