• Subscribe

    Subscribe to This Week In Panospace by eMail.
    Subscribe in a reader
  • License

    Creative Commons License
    This work is © 2008-2012
    by Yuval Levy
    and licensed under a
    Creative Commons License.
  • Entries

    June 2008
    M T W T F S S
    « May   Jul »
  • Archives

Apple’s QuickTime Update Breaks Detection

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.

6 Responses

  1. I think you’re seeing malice where no harm was intended. The biggest problem I see is other plugins lying, which is why the mess happened.

  2. @Agos: No malice, just sloppyness. And please don’t shift the blame on the other plugins – they have no fault in Apple’s not sticking to its own naming conventions and breaking my detection code.

  3. Something else they changed was the way the codebase parameter works in the object tag with the version.

    Say for example the QuickTime version was (making this up) then we would have codebase=”…..#version=7,1,2,3″

    All that makes sense. But with this latest QT release, it has now changed to codebase=”……#version=7,50,61,0″

    They concatenated the MINOR and the REVISION together (ie. the 5 and the 0) instead of separating them with commas.

    Makes no sense to me. I wonder if this is the new convention from now on, or if it was only a bug.

  4. Does anyone know if the iphone has QuickTime, and whether that can be considered a ‘real’ quicktime? Or is it a greatly stripped down version of quicktime? How would we handle that?

  5. I have a user using Norwegian language software where plugin detection is failing. I had them send me a screen shot of their about:plugins and found this name:

    QuickTime-pluginmodul 7.5

    Is this normal for non-English versions? Have you resolved the initial issue you blogged about?

  6. @Eric: AFAIK QuickTime on the iPhone does not support QuickTimeVR. I don’t know about other technologies that are available in the fully-fledged QuickTime.

    To be honest I have not given a blip of a thought about dealing with the iPhone. The little thing could be magic for the display of VR (witness the success of PangeaVR in the iTunes store) but as long as it has no decent plug-in to display VR in its web browser it is not worth my time. And anyway, to me a phone is like a modem – it should merely provide the bandwidth to a proper device.

    @Steve: What operating system and browser is your user using? I have forwarded your questions to a contact at Apple.

    I think I have solved the initial issue I blogged about in that I am now detecting also the alternative syntax, but it would not detect the name you found.

    Can you please ask your user to:
    1. point his browser at http://www.photopla.net/080302dufferin/
    2. click on the “help” link
    3. report if he finds QuickTime listed in the drop down list that appears after clicking the “help” link?


    Update: Apple was very quick to confirm a localization bug in the Norvegian translation. Bug is filed, will be corrected in the next release.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s