Developers have been up in a storm about Apple's recent changes to the
the Developer Agreement that came along with iPhone OS 4.0. I am
directly affected by this change because I recently wrote a 3d game
for the iPhone, Farmageddon, completely in Gambit Scheme.
I'm sure you've read the related section, but for completeness, here
it is:
"3.3.1 … Applications must be originally written in Objective-C, C,
C++, or JavaScript as executed by the iPhone OS WebKit engine, and
only code written in C, C++, and Objective-C may compile and directly
link against the Documented APIs (e.g., Applications that link to
Documented APIs through an intermediary translation or compatibility
layer or tool are prohibited)."
Gambit Scheme compiles to portable C, so there's no problem running it
on the iPhone. Many of my blog posts have been discussing the
advantages of writing iPhone games in Gambit and how I have solved
problems of debugging and rapid development.
Developing Farmageddon in Scheme was an experience I'll never forget.
I had access to a Gambit Scheme REPL from my running application,
either on the simulator or the device itself. This means that, in
combination with Emacs, I was able to develop my game in real-time.
Literally. I was able to write code and immediately send it to my
running 3d game. It was incredible, and I have a youtube video to
prove it.
To top it off, after experiencing such enlightened development
practices, I get to publish my game to one of the most popular and
accessible markets alive.
But not anymore. Apple made it extremely clear that they don't want
any of this going on. Many of you have asked me about what this means
for Scheme on the iPhone.
The answer is short: it's dead. Just like MonoTouch. Just like any
other transformer or compiler for the iPhone.
I'm not the first to say it, but this is really disturbing. Throughout
my experience developing Farmageddon, I've been realizing that this is
what programming is all about. We shouldn't be thinking within the
bounds of our current tools; we should be wondering how we can use our
tools to construct new tools that serve us better. Apple's recent
changes forbid this kind of thinking.
These recent changes might be an attempt to do two things: one,
control the quality and behavior of iPhone apps, and two, discourage
"meta platforms" where a single application can run on several
platforms. But the implications of the changes, whether Apple knows it
or not, goes much deeper than that, and games are a perfect example.
Games are inherently multi-platform, at least more so than UI-heavy
programs. You don't need to hook into any of the iPhone's UI to write
an iPhone game. I probably only call 5 Objective-C methods in my game.
All a game needs is a 3d context. So, firstly, the quality of games
won't change at all, and secondly, it's relatively easy to port a game
from the iPhone to a different platform. The only thing they are
restricting is using better, more productive tools to create games.
And for a company as large and powerful as Apple, that is really
scary.
Basically, I am sad that Apple is restricting developers' creativity.
I understand that it is beneficial for Apple from the business
perspective, but as the owner of the largest and most powerful mobile
sector, Apple should be careful what the do with that responsibility.
The have a powerful influence on the future of computing; lets pray
they start doing a better job.
Update: I am trying to call Apple to get a comment on this. So far
I've only been able to find their PR department, and I left a message
on their voicemail as a journalist inquiring for comments about
section 3.3.1 of the Developer Agreement. I will let you know if I get
a call back.
Update #2: Thanks for all the encouragement and interest in my
article. I am trying to start a business around Scheme, and I need to
make as much money as I can from my game. I am not planning on pulling
my game yet, but I'm considering it. I hope that you want to support
my work by buying my game while it's available! I think you'll find it
quite fun.
(please discuss this article over at reddit)