Recently Apple updated QuickTime. I received the update on my Windows box via Apple Software Update and I agree with John Lilly, Mozilla CEO, when he blasts Apple. “It undermines the trust relationship great companies have with their customers, and that’s bad – not just for Apple, but for the security of the whole Web”. Indeed, it tried to sneak once again iTunes on my machine, despite me repeatedly checking the “ignore this upgrade” box.
The latest QuickTime update also undermines some of the plug-in detection code used to find out if a visitor has QuickTime in the browser, including in Apple’s own Safari. I found out about it the hard way last weekend at the first Toronto Panoheads Meeting. Lucky me I could divert my talk and talk about the World Wide Panorama instead.
Plug-in detection is critical to the proper display of plug-in dependent content such as VR. Trying to display a VR using a plug-in that is not available on the client results in awful degradation.
Detecting the availability of the plug-in is the first step in graceful degradation: if the plug-in is detected, chances are that the content will display properly. If it is not detected, the website can degrade gracefully and show the visitor a static image or a link to download the relevant plug-in.
There are two ways to detect the plug-ins: ActiveX probing (for Internet Explorer) and parsing the navigator.plugins array (for all other browsers). In Firefox, it is possible to display the content of the navigator.plugins array in a user readable format by typing about:plugins in the address bar:
Until recently, QuickTime’s version was listed in the form of Major.Minor.Revision. Now they seem to have moved to Major.Minor (Revision) – and some parsers will choke on that. Mine did.
I not only detect QuickTime, I also try to discern the real QuickTime from the many third party plugins that set their name so to fool the detectors and return positive to detection, like Totem or VLC. Hence, I check with a strict syntax, and when Apple breaks the syntax, my detection returns a false negative.
False negatives are IMHO better than false positives. The reason why third-party plug-ins want to fool the detector is because they think they can play QuickTime content. It may be true for audio/video and other linear content. Unfortunately it is not (yet) true for VR, objects or panoramas. Discerning whether the original QuickTime is installed or a copycat, makes the difference between a gracefully degraded website or one showing a broken movie.
Fixing my detection code was quick and all websites using it have been updated automatically. Of course it would be nicer if Apple would stick to its own conventions in the first place.