Friday, September 4, 2009

SuperDuper and Snow Leopard

Dave Nanian:

In other words, considering the issue was basically one of performance, we thought it was better to get the update out day-and-date with this known issue, than hold it back for the week or so it would take to investigate and fix (and then however long it took to test, based on what we had to change).

This is what I like to see for software that I depend on—both the openness and the fact that they shipped something reliable (if imperfect) on the day I needed it. In the doghouse: QuickBooks. I can’t remember the last time an important application was so crashy as to be unusable. It’s not even possible to register/activate QuickBooks on Snow Leopard; apparently Intuit didn’t know that the Java bridge was slated for removal.

20 Comments RSS · Twitter

The Quickbooks/Snow Leopard thing is amazing to me. Did Intuit just not show up to WWDC for the past two years?

The Java bridge was deprecated in Tiger, which shipped in April 2005. So seeded developers would have known it was deprecated at WWDC 2004, if not earlier.

Give Intuit a break. How are they supposed to know about inside information like that. It's not like their Chairman is on Apple's Board of Directors.

Oh, wait…

I warned Intuit about this back in July:

Their response: "Intuit does not support beta versions of the OS."

The customer response after Snow Leopard shipped was brutal:

Of course we at Intuit knew that the Java bridge was deprecated. We did not know when Apple would pull it until we got the Snow Leopard seeds.

At that point we began work to replace the functionality. Prior to that there wasn't much justification in taking time away from user visible features to rewrite registration.

There was a lot of code that had to be reworked - the registration is shared by a number of non-Mac clients which is why it was in Java in the first place. It wasn't developed originally by the Mac team. It wasn't well documented except the rather large amount of Java source code. And the rewrite had to work seamlessly with the backend servers and processes of Intuit as a whole. In short, rewriting it was non-trivial and thankless and that's why we avoided it as long as we did.

The new version is out now and this problem is solved. if Snow Leopard had shipped in September as originally announced we might even have had it completed in time. But it took longer than we anticipated and Snow Leopard shipped sooner than we anticipated. Such is software development.

Other problems with Snow Leopard were fixed as well. We'll fix whatever new problems arise, too, as soon as we can.

Biscotti: When did you get the seeds? October 2008?

I apologize about my harsh tone and for quoting the poster in the Intuit forums out of context. Given a relative lack of communication from engineers such as yourself at Intuit, I had assumed the worst, that Intuit had indeed not anticipated this. It appears I was wrong.

I don't envy the task of modernizing the QuickBooks codebase that you must be facing. However, I still don't think it wise to wait until something that is marked as deprecated is actually removed before migrating your code away from it. All of those warnings in Xcode are hard to ignore.

We shipped the version of QuickBooks in question in Sept of 2008. You can argue (as you are) that we should have rushed to replace the Java bridge sooner. Sure - I wish we had started about 20 days earlier so it would have been ready in time for Snow Leopard. However you are ignoring all the other priorities that we have to juggle.

Qualifying QuickBooks on a new OS takes many man months of QA time. It isn't trivial by any means. We aren't able to sink those resources into extremely early seeds of an OS.

I know its fun to point out mistakes Intuit has made. However QuickBooks has been as forward moving for years on Apple technologies - sometimes too much on the edge. It is a huge program - millions of lines of code that originated in the pre-Carbon era. QuickBooks today is a mixture of Carbon and Cocoa and has been since 2005. We are removing all QuickDraw calls with our next release. We were one of the first major carbon apps to run native on Intel processors.

When Daring Fireball says that we were apparently unaware that the Java bridge was deprecated tech it is just ignorant. "Apparently" == made up.

Biscotti: I understand that fully qualifying on earlier seeds might be a waste of resources. That has to be done towards the end. But surely the Java bridge replacement could have been started with the first seed. Or perhaps earlier—I don’t recall whether the removal was announced at WWDC 2008 before the seeds became available.

Thanks Brad. Yes, those warnings in XCode are tough to ignore. We actually started the QuickDraw replacement in Oct 2008 and put off the Java bridge replacement because, quite frankly, the QuickDraw replacement was a much bigger job and risk. We didn't really know that Apple was going to support QD in SL at that time.

We engineers have been very, very busy.

Michael - I don't recall ever getting an announcement. Maybe our whole team missed it. We obviously chose the wrong deprecated tech to replace first. I suppose the iTunes, FCP, Logic, Office, and Adobe teams had a more direct line into Apple plans.

Anyway - sorry. I kind of wonder what people who run their businesses are thinking upgrading their OS before seeing if their accounting software is compatible. But it was only $29! And that's the way it goes - we'll be more proactive on this in the future.

Biscotti: I don’t think it has to do with a direct line. There are tons of apps using QuickDraw, but the Java bridge never saw much adoption so it makes sense that Apple would have less reluctance to dropping it.

Those of us in the software business need to upgrade ASAP so that we can use and test our own products in real scenarios.

Anyway, thanks for getting the fix out. I’m sure you’ve been working especially hard these past few weeks.

@Biscotti --

You say "I kind of wonder what people who run their businesses are thinking upgrading their OS before seeing if their accounting software is compatible".

I'm sorry but did you bother to read Intuit's official statement about Snow Leopard -- the one that said most users would not be affected by the incompatibilities?

And if y'all knew (and of course you did) that installing Snow Leopard was going to totally break Quickbooks, WHY IN THE WORLD DIDN'T YOU WARN YOUR USERS IN ADVANCE OF AUGUST 28TH? You didn't. And then when your software breaks, you blame your customers. Real nice.

It's just amazing to me how everyone inside Intuit acts so put out that they are being criticized for this debacle.

No Nate, I don't know what statement you are referring to that said most QuickBooks users would not be affected by incompatibilities. I've been working on what I do - PR isn't it. If you link it I'll read it.

The rest of what you are saying is extrapolating what I said about the Java bridge issue and using it justify some belief you already maintain that Intuit is sinister.

It just isn't true. No one working on Quickbooks is evil. They are all actually nice, hardworking people. They all use Macs all the time. They aren't incompetent or stupid. They've worked on a lot of other Mac applications at other Mac companies, some of which I guarantee you use every day.

We don't want our customers to suffer. We don't intentionally deceive them. We don't intentionally lie about Snow Leopard compatibility just to watch them fail.

I mean, why on earth would we do that?

Biscotti: Before R8 was available, the main QuickBooks page made no mention of any problems with Snow Leopard. This support page said “For most users, the compatibility issues identified will not impact you.” It then included a list of “known compatibility issues” which, judging from my experience and the forum, was far from complete. The page has since been updated to say that the patch is available, but I have a copy of the old page, and it’s currently in Google’s cache.

I see the cache page. It does identify the issues we were aware of at the time including several crashes, a couple visual problems, and the Java Bridge issue which prevented new users from registering. It also advises that an R8 patch will be issued when available to address these issues.

Our internal testing continued - it takes a long time and a lot of resources to run through our tests. We also monitored crash reports coming in and user feedback. There were a couple additional issues subsequently identified and those were fixed in the R8 patch as well.

The root causes of most SL crashes were pretty much the same bug - unrooted memory being released sooner by a more aggressive GC in Snow Leopard. It wasn't much code that had to be changed to fix it. It clearly appeared "totally broken" to Nate on his system but I'll wager this was a single bug that just happened to happen on his (and other) user's systems often.

Keep in mind that this code wasn't changed by us - the OS changed - and caused a random bug to occur more frequently on many systems.

It takes time to find the problems and time to fix them and time to test them again. And since the update goes out to SL users, Leopard users, on both PPC and Intel boxes, there's a pretty big test matrix to cover. Again, there are millions of lines of code in QuickBooks and something approaching 20 years of data file compatibility to maintain, cross platform issues, partners, etc etc.

Apple gave us a final candidate of SL on what - 8/21? When did they even announce which was the final? I found out from someone internal.

It takes weeks to test QB on that. No way that was going to happen by the release date of 8/28. And anyone in the software industry knows that it is truly impossible to find every bug.

This cached message is Intuit telling everyone what we knew as soon as possible - the very thing Nate is saying Intuit didn't do. If we had waited longer to report the report would have had additional problems listed.

Anyway - I'm drifting into heavy PR territory and I don't think I'm going to convince Nate that this was anything other than a debacle. I personally don't think this message is that far off the mark.

It ends with:
If you are unable to wait for the release of R8, the only supported workaround at this time is to revert back to OS X 10.5 (Leopard). You can then reinstall Snow Leopard once the R8 patch has been released.

Which is pretty clear. If you had problems you could go back to Leopard to use the software. Or wait the couple weeks until we could provide the fixes.

Biscotti: I’m a lowly Select developer, and I got the final candidate on 8/12. But, yes, Apple never actually told us it was the final, which was very annoying.

The bold text in the message said that most users would not be impacted. I think the bottom line is that some of us were very impacted, and that one had to actively look for this support page in order to find it. In the future I would suggest that Intuit send out a warning ahead of time, either via e-mail or Sparkle.

Biscotti -- I'm not sure where you get "evil" from my statement. Inept? Yes. Evil?

It took me 45 minutes to install Snow Leopard -- admittedly a few days before the retail release.

It took me 10 minutes of using Quickbooks to discover that any number of operations were causing it to crash.

It took me another 10 minutes to load that same company file in a Leopard environment on the same computer and find that the crashes did not happen in that OS.

I don't know the first thing about software testing -- but in a little over an hour I was able to start advising friends and colleagues to hold off from upgrading to Snow Leopard if they depended on Quickbooks.

It's unbelievable that Intuit would think it required "weeks of testing" to determine that a warning was necessary.

Biscotti, of all the Intuit employees posting on this forum and over at Intuit community, you have been by far the most helpful. You intimate knowledge of the technical hurdles involved are both instructive and explanatory.

However, it is as clear as day that your official statement should NEVER have said most users will not be impacted. That single line and the fact it stayed on Intuit's official statement for two weeks while the crash reports and frustrated user comments poured into Intuit -- well, if that's not a cynical take on proper customer relations, I don't know what is.

Michael's measured advice should be taken to the upper echelons of Intuit corporate. I guarantee it would have saved them a lot of lost customer goodwill.

In any case, thanks for giving us Intuit's side of the story, thanks for getting R8 out there and good luck on QB2010.

Thank you Nate. Obviously QA did not encounter the same problems you did on their initial tests or they would have listed them along with the other problems. A memory bug that is 100% reproducible for you may not occur at all on another system.

These bugs existed in Leopard, too - its the same code running on both systems. Its just that they just didn't happen frequently enough for us to locate and fix them. GC problems are especially tough to fix if they crash in the collector as you don't have a useful stack trace. With SL the stack traces were much closer to the point of failure, once we got them, and we were able to locate the problems that way.

We'll try to test OS releases much sooner now that we know Apple will sometimes release an OS a month prior to when we expect it. In the past, Apple saying Sept has generally meant last day in Sept. Not Aug 28.

The messages are posted by support. They take our feedback but it is a large organization. We meet with them often and I'll bring this up in the next meeting.

[...] 1.5 is a nice update to the financial application that I’ve switched to from QuickBooks. I couldn’t be happier. Previous versions weren’t difficult to use, but 1.5 [...]

Leave a Comment