Scratch off

This NY Times article about banning an app from the App Store is really poorly written and jumbles up a couple of related, but distinctly different, aspects of iPhone OS development.

The main topic is Apple’s recent decision to remove the Scratch Viewer app from the App Store. Scratch is a teaching language/environment from the MIT Media Lab that’s intended to help kids learn to program. It seems to be a followup to Squeak, which was, in turn, a followup to Smalltalk. Scratch Viewer was an app that ran Scratch programs. According to the Times

Scratch Viewer was designed to let educators and others review a child’s work that was created on an iPad, iPhone or iPod Touch using the Scratch programming language, which has become popular in many schools.

I think the “created on an iPad, iPhone or iPod Touch” part is wrong. Everything I’ve read about Scratch Viewer indicates that it was, as its name implies, an app for viewing, not creating. If I’m right about that, the educational value of Scratch Viewer is not as great as the Times suggests.

(I’m going to confess here that I’m dubious of the educational value of Scratch itself, let alone Scratch Viewer. Alan Kay has been trying to push various forms of Smalltalk for decades and it just hasn’t taken off. The ideas of Smalltalk are everywhere, and he’s a tremendously influential figure because of that. But Smalltalk itself just isn’t a language most programmers enjoy using, and there’s no evidence that exposing kids to Scratch will change that.)

Whether Scratch Viewer allowed programming or not, Gruber was exactly right: “It’s only surprising that it ever made it into the App Store in the first place.” Apps that include code interpreters have always been disallowed.1 And this is where the Times jumbles the story.

This paragraph about halfway through the article is the problem:

But bloggers are theorizing that Apple removed the viewer because it violates Section 3.3.1 of the company’s policy against apps that interpret or execute code. This is the same reason that Adobe Flash-based apps are not permitted, as covered in this Bits blog post by Nick Bilton.

The linked post is all about the recent changes to Section 3.3.1 that killed Adobe’s Flash authoring tool in Creative Suite 5. The idea behind CS5 was to allow developers to write programs in Flash and compile them into executable apps for the iPhone. It had nothing to do with installing a Flash interpreter that could run any SWF file.2

By bringing up the changes to Section 3.3.1, the Times is saying that Apple screwed Scratch Viewer by changing the rules in the middle of the game. This is simply not true. You may not like Apple’s “no interpreters” rule—I don’t—but it’s been absolutely clear since the App Store opened, and Scratch Viewer has always been in violation of it.

Thanks to Tom Levenson for tweeting a link to the article.

  1. Not that other interpreters haven’t slipped in. This HP 15C emulator is a programmable calculator app and must have a built-in interpreter. I doubt it’s using JavaScript. 

  2. To be sure, apps compiled with CS5 may well have a small bytecode interpreter embedded in them, but that interpreter is only for the code in the app itself. It’s not a Flash Player app.