Arbitrary iOS Programming Rules
This post isn’t about programming for iOS, but rather apps that run on iOS and let you program inside them. This week’s beautiful example is called Codify. It has a number of touch-based enhancements to a traditional IDE and exposes data from the sensors via a nice API. It’s worth watching the demo video and trying it out yourself. It seems to do for iOS what Processing has done for Android but even more smoothly.
And while I celebrate this opportunity for millions of iPad users to casually buy an app that opens up the world of programming, I’m confused as to why Apple allowed it in the iTunes store but last April rejected a Scratch app. Dr. Mitch Resnick (MIT professor, developer of Scratch, and winner of the 2011 McGraw Prize in Education) wrote at the time:
“We’re disappointed that Apple decided not to allow a Scratch player on the iPhone or iPad (as part of Apple’s policy against apps that interpret or execute code). As we see it, there is nothing more important than empowering the next generation of kids to design, create, and express themselves with new media technologies.” – Scratch Team Blog
Yet it’s clear that user-written Lua code is being interpreted in Codify. Searching for Lua on the iTunes store also brings up apps like iLuaBox, Lua Coder and Lua Console. These all seem to go beyond the limited case of apps that happen to rely internally on non-compiled code.
As of a year ago, the Scratch app was still a non-starter. At that time, the Lua community itself seemed to believe that, “[Y]ou cannot expose a plugin system to the end user, nor can you give her the ability to write her own scripts.” What changed?
I notice that Codify has no provision for uploading/downloading projects and I wonder if that was the deal-breaker for Scratch rather than the idea of interpreted code. Apple seems to allow sync with DropBox and other file hosting services. So is the rule just that you can’t do interpreted code and upload/download in a single app? Or perhaps Lua is the magic word for iTune Store acceptance, and simply naming the Scratch app to LuaScratch would do the trick.
Regardless, it seems to me that if Codify and the other Lua programming apps meet Apple’s requirements, then a touch-based version of the Scratch development environment should be allowable as well.