The ability to learn from history prevents one from repeating the same mistakes in the same way. Ignore history and run the probability of making the same mistakes those before you did. After all, those mistakes were made by people probably as intelligent as you and likely with similar amounts of information. But history gives you an advantage in that it gives you, should you choose to take advantage of it, more information than those who made poor, though well intentioned or even seemingly wise at the time, decisions in the past.
Christian Schaller has blogged again about Phonon and GStreamer and sadly commits both of these sins.
First, he says:
"First of all my original blog post was in direct response to a claim by Aaron that Phonon was a good choice also for non-Qt developers doing cross platform applications." - Christian
He does say that English is not his first language and admits that maybe he misunderstood. Let me clear that up: he certainly did. Reading in any language requires reading full thoughts, not fragments of sentences.
Christan quotes me as saying, "Phonon is also more than just an option for Qt apps." but that is not what I wrote. Here's the original quote, unedited:
"Phonon is also more than just an option for Qt apps: you'd be making a huge mistake not to use it." - me
See how the period doesn't follow the words "apps"? No, it's a colon (:) and the sentence continues on for another whole phrase. My point was that if you are using Qt, then using Phonon is the best choice, not simply an option as Lennart had implied.
This makes Christian's original blog post on the matter, which was written in all sorts of poor form, a strawman. Nobody was making the claims he apparently based his statement on. But that mistake, once revealed, was not enough for Christian to gracefully back off. Instead, he says:
"Sure you ‘don’t get a hard dependency on any one multimedia system’ with Phonon, but you do get a dependency on Phonon and its dependencies instead."
This too is a strawman argument. You see, Phonon uses what is available on the system. That's the whole point. So trying to make it out like Phonon actually extends your dependency graph when in reality it does the opposite is pure doublespeak. Or, as Stephen Colbert would put it, it's full of truthiness.
Christian goes on to say:
"Aaron also repeated the oft heard argument that Phonon is for KDE about not repeating the mistakes of Arts. And I guess this is one of the big differences in perception. Because for Aaron for KDE to have used GStreamer would have been repeating Arts, but for me Phonon is repeating the Arts story."
Evidently Christian is ignorant of the history of things here: aRts (not Arts, by-the-by) was, like GStreamer, a really good option in its day but once written to aRts you were stuck using aRts. aRts, also like GStreamer, did much of the heavy lifting such as tying into codecs for decoding. Phonon is a thin layer above the realm that GStreamer (and once upon a time, aRts) lives in preventing KDE apps from running into the same problems we did in the past: our media playback only worked where aRts was installed, and when we looked beyond aRts we had to rewrite code. Phonon solves both those future oriented issues, and today many users of Phonon apps actually use GStreamer.
Of course, if you think that GStreamer is installed or even works everywhere, you are vastly deluded. I know many Linux users for whom GStreamer simply doesn't work. Thankfully for most it does. And lets not even get into the absurdity of it all by wondering out loud just how many Mac users have GStreamer raring to go.
Phonon works in those situations as well. Today. Without us writing any new code.
"Back in the day if one dared to take issue about any of the wonderous claims made about Arts one got tons of comments about just being partisan and ‘hating Arts or hating KDE’. Kinda like how it is today when one tries to point out that Phonon is not the universal wonder solution that Aaron likes to paint it as."
This is another strawman. I'm not making Phonon out to be a universal wonder solution: it's the right solution for apps written with Qt or KDE, so much so that some people may even elect to write their app using Qt because of Phonon. This still doesn't make it a "universal wonder solution", and I'd highly appreciate it if Christian would stop putting such words into my mouth. It's poor form that even having English as a second language can't make an excuse for.
As for 'hating Arts (sic) or hating KDE' this again is a strawman. It's simply about representing Phonon accurately, or if you don't have the knowledge to do so then to be quiet about it altogether. It has nothing to do with hating anything, let alone KDE. In fact, I think it has a lot more to do with a blind love of GStreamer than hating anything.
Christian just can't stop erecting the strawmen though:
"I am taking issue with the promotion of Phonon as a better solution than just using GStreamer for a lot of specific use cases including cross-platform development. "
As I said in my original blog post on this matter, Phonon is not the right solution in all situations. I even gave an example: pro audio tools probably want to write to a lower layer directly. Once again, he's addressing a phantom argument that nobody is making.
"The strength of Phonon lies in providing a familiar API to existing Qt developers, giving them access to some limited multimedia functionality, but in terms of promoting itself as a generic cross platform multimedia development API it falls down, Phonon is attempting to do what wxWidgets tries to do for GUI components, and I never thought it worked very well for wxWidgets either."
So first some daming with faint praise and then an actually interesting point: is Phonon flawed in the same ways Christian feels wxWidgets is? Well, I think wxWidgets is not overly great due to its API not the "wrap native widgets" concept. Of course, those who use wxWidgets think its API is probably quite grand. Likewise, I find Phonon's API quite grand.
What is the user's experience with Phonon? It just works. For them it's a complete win.
What is the Qt developer's experience with Phonon? It feels natural, it integrates beautifully with the rest of the code and it future proofs their application development efforts.
What is the non-Qt developer's experience with Phonon? Irrelevant as they won't be using it.
And that, simply, is what matters. I don't care what Christian chooses to use hiself, but I do care when he makes unsubstantiated claims, false arguments and, for a reason only he can know, decides to dog the choices I and the community I belong to make. Remember, this did not start with me saying anything about GStreamer, but rather some pretty pointless statements being made by people involved with GStreamer about Phonon. You bet I'm going to correct those statements in as public a forum as they were originally made, and it's time they stepped back from trying to defend the indefensible with strawmen and other useless debatery.
The great irony here is that prior to KDE4, very very few KDE apps could use GStreamer at all and those that could did not default to it; while in the KDE4 era, all KDE apps can (and in many cases do) use GStreamer because we invested both serious amounts of money and time into making a Phonon GStreamer backend. You'd think they'd be happy, perhaps even congratulatory.