Apple’s fix for corrupt binaries
marco.org
marco.org
In the 4 years of the App Store we've never seen a distribution problem of this magnitude (it would be an absolute nightmare for any devs affected) and we really have no idea how Apple would respond to such a problem.
We've also never seen Apple unilaterally update a specific group of apps like this. Many App Store devs likely didn't think Apple would or could take such action, and those of us familiar with what it takes for a device to accept and install new bits are now wondering just how this is being done.
Are they manually bumping each affected app's version string? Is there there some hidden field that forces a device to reinstall the same version of an app? It's curious.
The fact that Apple is so strict about monotonically increasing dotted numbers for version strings led many of us to believe that they were being parsed for important things inside the App Store publishing platform.
But maybe they are just part of the UI. Apple is known to have strong opinions and strict adherence requirements about that, too.
And it is "interesting". Apple did not bump the user-visible version strings (which are set by the developer), which would have been easy and expected, but cause some minor confusion for devs.
They didn't even bump the semi-invisible fourth field in the version string, which almost no devs use, and would have solved the problem quickly.
They also did not just mark transfers as having failed and requeue the downloads, which would have been fairly unsurprising.
They were able to determine which apps were corrupted, of all the updates in the affected period. This shouldn't have been too hard, but it shows that they are optimizing their solution pretty well.
They were apparently unable to determine who got corrupt copies of the affected apps and who did not, or maybe they are just erring on the side of caution here. Since their reupdate mechanism seems to work so well, the extra caution costs nothing.
I don't know how many kinds of catastrophic failures you've recovered from, but at App Store scale, recovery is often hard. They were either prepared for this sort of problem, or figured something out quickly that resolves the issue quite cleanly, taking care of all the details.
Either one is impressive. So, nicely done.
Most of us are probably more familiar with systems like Firefox, Chrome, or Sparkle. The App Store mechanism is more complicated, and interesting.
The third party data (version string) that you don't want to trust is, in this case, very carefully screened by Apple as part of the submission process. It is trustworthy by the time it lands at the App Store -- but since Apple owns the whole workflow, they have much better options.
Anybody know how things work inside Apple's culture?
Ex-Amazonian here. It's important to note that Amazon's Cause of Error (COE) process is not about blame. It is about determining what happened, why it happened, and what concrete steps are being taken so that it does not happen again. Individuals are not blamed as part of this process and that's in the official rules. The goal is to iterate and avoid making the same mistakes again.
Of course, I've also heard that there is a wide diversity of culture between teams, so maybe that plays in to it, too.
I've never had COEs come up in my or others' performance reviews.
If the boss who owns the COE "gets it" and has internalized the old-school Amazon culture then there won't be blame. The bosses really take the hits here, they do get personally blamed for these things. If they can't stand between the team and the more senior management then they are not doing it right.
If you and your boss mutually hate each other (which unfortunately I have seen) then it won't go well.
I think it is more of fear about losing their job rather than loyalty. It is not uncommon to find that any leak will be tracked down and the leaker summarily fired.
Is it really so hard to imagine that employees at Apple feel loyalty to the company? Employee loyalty is not an uncommon thing.
It's just unprofessional to babble around about new tech like it's a cookie recipe.
Marco did a really good job of cataloging it because Instapaper was one of the affected applications: http://www.marco.org/2012/07/04/app-store-corrupt-binaries
What am I missing?
:D