Monday, December 09, 2013

Delicious Library and Mavericks

With the release of OS X 10.9 "Mavericks" comes a bunch of improvements—it's faster, it's got neat new features, it's got bug fixes—and a few hiccups, some of which affect Delicious Library 2 and 3. Delicious Library versions "2.8.1" and "3.1.2" were shipping at the time of Mavericks 10.9.0 release; if you're reading this in the future some of these issues will have been resolved by new versions of our Delicious Library, and of Mavericks.

Here are the known bugs that were introduced in Mavericks [Updated 2013.12.21; resolved issues struck out in update on 2014.2.26]:

Delicious Library 3.1.2: Mavericks Issues
  • Symptom: The shelves source list (on the left side of the window) lays out bizarrely. Sections of it are often unclickable.
    Effects: Sometimes iTunes cannot be disabled or enabled, and sometimes shelves can't be reordered or deleted.
    Cause: Apple changed how a class called NSTableCellView positions its "textField" and "imageView"—NSTableCellView is a relatively new class and its positioning code Apple wrote is incompatible with Apple's autolayout, which was introduced at the same time.
    Notes for Apple: We've filed RADARs 11713245 and 15359487 on this issue.
Workaround: For Delicious Library 3.1.4, we coded around Apple's bugs in a way we hope is future-proof.
  • Symptom: Shelves no longer animate when the window is resized or zoomed.
    Effects: Cosmetic only.
    Cause: Apple changed how a class called SCNTransaction deals with nested transactions turning animation on and off.
    Notes for Apple: While we consider this change an improvement, we requested that it be documented in RADAR 15369412.
Workaround: For Delicious Library 3.1.4, we changed how we disable and enable animation to account for the new system.
  • Symptom: Items without covers draw as transparent.
    Effects: Users can't see the title or creator of items without covers.

    Cause: Apple changed how a class called SCNMaterial interprets the 'anchorPoint' of an attached CALayer.
    Notes for Apple: We've filed RADAR 15562662 on this issue.
Workaround: For Delicious Library 3.1.4 we've changed the anchorPoint on Mavericks systems.

  • Symptom: Library crashes when drawing covers in lists.
    Effects: Crash!

    Cause: There is a bug in glReadPixels() on the "GeForce" graphics chip driver under Mavericks.
    Notes for Apple: We've filed RADAR 15318354 on this issue.
Fixed: Apple repaired this bug in 10.9.2, and there was much rejoicing.
  • Symptom: Crash when drawing 3D covers.
    Effects: Crash!

    Cause: There is a bug in gleGenMipmaps() on the "GeForce" graphics chip driver under Mavericks.
    Notes for Apple: We've filed RADAR 15316200 on this issue. So far we've seen it only on machines with NVIDIA GeForce GT 640M, GT 650M, GTX 660M, GTX 675MX, GTX 680, GTX 680MX, and GT 755M chips.
Fixed: Apple repaired this bug in 10.9.2, and there was much rejoicing.
  • Symptom: Spotlight can't find Library 3 items.
    Effects: Any items modified or added under Mavericks won't be findable with Spotlight.
    Cause: There appears to be a permissions problem with the Sandbox under Mavericks when indexing stub files.
    Notes for Apple: We've filed RADAR 15488237 on this issue.
    Workaround: None is possible on our end.

Delicious Library 2.8.1: Mavericks Issues
  • Symptom: Low-res covers draw as black-and-white, horizontally compressed, and striped.
    Effects: When scrolling or zooming, covers will flash the corrupted "striped" version before being replaced with the hi-res versions.

    Cause: Under Mavericks a class called CALayer doesn't draw JPEG2000 images correctly when in "32-bit" mode.
    Notes for Apple: We have filed RADAR 15532513 on this issue.
Workaround: For Delicious Library 2.8.5, we copy the cover image extra times to get it into a format Mavericks likes.
  • Symptom: Hi-res covers sometimes stop drawing on large collections, so some items have only low-res covers.
    Effects: Some items appear to have "blurry" or "stripy" covers.
    Cause: Apparently under OS X 10.7 and beyond, a class called CATiledLayer occasionally gets "stuck" and will stop drawing itself.
    Notes for Apple: We have filed RADAR 15552267 on this issue.
    Workaround: We have not figured out a workaround yet, although one might be possible.
  • Symptom: Video barcode scanner can crash application.
    Effects: Crash!
    Cause: We don't know.
    Notes for Apple: We are still talking with customers to get details on this, this could be the same as RADAR 15318354.
Update: We haven't received any crash reports on this in 2.8.5, with the exception of users with 3ivx drivers on 10.7.5.
  • Symptom: Something will lock up entire Mac.
    Effects: System lock!
    Cause: We don't know.
    Notes for Apple: We are still talking with customers to get details on this.
Update: Customers have reported that Delicious Library 2.8.5 fixes this lock-up, although we aren't sure what's different from 2.8.

Industry practice is that if a bug appears in a shipping application only on a newer version of an operating system, it's defined to be the OS vendor's fault, unless the app developer did something egregious. To wit: OS vendors are expected to either make new OS releases "binary compatible" with their old ones, which means that existing shipping apps will continue to run without bugs, but newly released apps may be required to change, Alternatively, the OS vendor is expected to document any incompatibilities ahead of time so independent developers can move off them.

It may seem as though this monster is just covering its posterior, but, in fact, this is an important distinction—we know that as customers of other people's software we also tire of hearing, "Hey, it's not our fault, it's Apple." This sounds like a cop-out for lazy developers (and it often is).

Of course, we're not angry at Apple—bugs happen, and operating systems are very big projects. But as developers, we typically don't know when the bugs that affect our programs will be fixed. Even when we do know, we're not allowed to say that we do. So, all we can do is shrug our monstrous shoulders and say, "We're with you. We hope these get fixed soon." This sucks for our customers.

We apologize to those of you who are having problems. We want to let you know we're doing everything we can to resolve all the issues as quickly as possible. Thank you for your patience.

Labels: ,