Hacker News new | past | comments | ask | show | jobs | submit login
Scheme is also dead on the iPhone (jlongster.com)
150 points by jlongster on April 9, 2010 | hide | past | favorite | 51 comments



A few things: first, I have been enjoying the author's blog posts on using Gambit-C Scheme, so this is personally annoying.

Wider issues: what a bad decision on Apple's part. I used to be a huge Apple fan (I wrote the free chess program that Apple gave away when they released the Apple II, did a Mac commercial app in '84, and used to treat the 6 volumes of Inside Mac developer's guides as ancient and precious religious texts). The issues with the appstore crap-shoot are irritating, even just reading about other people's experiences.

Apple is now a very valuable company and their behavior seems to be changing.


In this, Apple is analogous to a totalitarian state. Most corporations fit this model with regards to their properties. They arbitrarily had closed off their harbors and borders (no native 3rd party iPhone apps) but then saw the opportunity to make a lot of money and opened the doors. (iPhone SDK and App Store.)

We should not be surprised when a totalitarian state employs arbitrary coercive actions in its own interest, and this is not the first such maneuver by a closed source company. We should be in the mindset of people doing business in a totalitarian state. We should be aware that there is an iron hand under that velvet glove and that equitable treatment under that regime is motivated by that regime's self interest, not by a principle like the rule of law.

Open Source = The Rule of Law? I never made that comparison before.

(I will continue to prepare to do business in the totalitarian state, but I will be a good little merchant and try my best to avoid notice, and I won't be surprised if I find the police closing up my shop sometime.)


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.

I'm currently working on the justin.tv iphone app, in Objectionable-C using XCode. I've gotten into a pattern of changing a few lines of code, pressing the build-and-run button, switching to Chrome and reading Hacker News for a minute or so, and finally checking the debug log output in XCode. As much as I enjoy reading HN, a REPL on the iphone would be so so awesome.


I just tried to call Apple at several numbers and ended up at their PR department. I left a message on some mysterious answering machine as a journalist inquiring comments about this issue. We'll see if I get a call back.


Perhaps a nitpick, but

>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.

He kind of contradicts himself there. He points out that cross-compiling makes it relatively easy to port the iPhone game to a different platform, and then says all Apple is doing is preventing people from using more powerful tools. But they are also preventing people from doing the aforementioned porting. It seems to me that when people shout, "Hey, now we won't be able to easily port our apps and games to another platform!" Apple will just say, "Exactly."


From my perspective, if you are a developer for Apple's iPhone/iPad platform and are disturbed by this new clause in the contract, let Apple know. Let them know by voting with you feet, and moving to a different platform. There are other touchscreen devices out there, give them your support. The reason Apple has been successful isn't just that they have nice hardware, its because of you. If they are going to disrespect you in this manner, you should feel no obligation to continue to create application for their platform. Vote with your feet: don't create iPhone/iPad apps.


What would be your estimate, how many out of 185 000 apps in App Store were developed using Scheme, Closure, etc.? Also it would be interesting how many are built using Unity3d and likes.

  The reason Apple has been successful isn't just that they
  have nice hardware, its because of you.
True, but let's not forget: there were no "you" when iPhone was released, but there were the reasons why it was a success. That success brought users, and users made platform interesting for developers when SDK came out. Users are here to stay, and most of the devs too. Heck, iPhone OS 4 and iPad will bring them in droves. Then we have another opportunity opening up: development of HTML5 ads for iAd.

My (maybe incorrect) assumption is, that all this noise on HN is not really representative of the thinking among iPhone developers—I will even go as far as assume that the most vocal ones never did anything for iPhone and were not going to–and will have a little if any effect on general public and their opinion about iPhone/iPad and Apple.


They should, but ultimately they go where the money is. Like the guy at the top of this, who describes the situation as a totalitarian state, but says he'll continue and just try to keep his head down


Actually, I think an Obj-C REPL may be one of the things that Apple unveils at WWDC.

At least that's the direction they're heading with LLVM, and the head (now gone) of their whole development tools group told me (privately at WWDC a few years back) that a REPL was their ultimate goal.

After all, Obj-C/Cocoa is just Smalltalk with C control structures...


I was planning to get a developer account and an iPad, and then try to write apps using Scheme (or maybe other tools that use languages that are, shall we say, more flexible than Objective-C)... I am now glad that I didn't do that yet; these recent developments make iPhone/iPad development a lot less attractive to me.


We don't need to list every single language that (at least by the letter of the agreement) can't target iPhone OS 4.0...


Why? Many people think this is only about CS5.


Maybe we don't, but clearly Apple does.


Instead of leaving Apple for a more open platform, the author says, "lets pray they start doing a better job."

Hm... I think this is exactly the kind of customer Apple wants.


Farmageddon makes me think of that scene in Monty Python's "Holy Grail" movie where the French invaders catapult lifestock on King Arthur's party ;-)


Guys, you're all missing the point. Clearly what Apple wants is a virtual machine, implemented in Javascript, capable of running Scheme bytecodes. ;-)


Please think before upvoting.

10 out of the top 22 stories are about this one story. We get it. Some developers are throwing a hissy fit.


This developer is upset because he is used to doing live development and debugging on his application from inside of Emacs: http://www.youtube.com/watch?v=p6k7fjOjqZw

I don't think that Objective-C and Xcode can do this?


People are mad because it's clear Apple has something good going here with their mobile platforms, but they're blowing it for all of us now, including themselves.


I'm not really sure if they are hurting themselves.


Not in the short run. There is obviously no shortage of developers (who are willing the use the mandated languages) or apps. But I do think they may regret this eventually.

By excluding languages like Scheme, and many others, they are excluding developers who prefer these languages. One could argue that these developers are among the smarter and more creative ones. So, when competitors get their act together, and come out with a similar device that doesn't suck, and an app store alternative that does not have these restrictions, then this is where such developers will go.

Essentially, they're providing the competition with a sizable pool of (often disgruntled) developers. There is no real competition right now, but they're making it more likely that there will be, in a year or two.

Anyway, just my $0.99... :-)


The elves will leave Middle Earth, and they will truly be left with nothing but fart apps. They need to fix this clause, fast.


As much as I'd like to agree with you, that is simply not going to happen. Do you seriously think companies/developers like EA, Cultured Code, Omni Group etc are going to leave the app store just because apps written in Scheme or Actionscript or .Net are not welcome on the app store?

Again, as much as I'd like to agree with you, none of the prominent app developers are going to be leaving anytime soon. And, as for people who make Farting apps, they probably wont care anyways because use Objective-C or Actionscript, the apps are rather simple anyways. The efficiency of writing code probably wont matter to them.


EA's games are in violation of this rule, due to using Lua. Think again.


Then either EA will rewrite it, or they'll pay Apple a shedload of money to forget about it.

They certainly won't start whining about it.


No, Apply will just selectively turn a blind eye when it's convenient for them, and arbitrarily apply the restriction in other cases. Evil.


Expected. There's a three tier system- Tier A partners like EA, Tier B developers that are preferred by Apple, like Cultured Code, Omni, and TapTapTap, and Tier C developers, who Apple doesn't do anything special for. Kick ass for a sustained period of time and you can get into Tier B, be a multi-billion dollar company and you're Tier A.

Awesome thing is, though, that you can reasonably compete as a Tier C developer with Tier B and Tier A developers, it's just that they get a head start with being featured. That's surmountable, so it's not a big deal.


How am I supposed to catch up with them if they already are allowed to use features and languages and thought processes that I'm not? It makes no sense.


Compete with them on Android, perhaps? </modest-proposal>


The same way everyone else has- this shit's not rocket science. You just have to be on your game. It's about marketing, not features and languages.


That's called exercising discretion. It happens under the real laws too. I don't think you know what "evil" means.


You are wrong, selective enforcement is evil.


Don't be daft. What makes you think Businesses have to treat everyone fairly? If business A wants to do some special deal with business B that gives B special access or the ability to do things that no one else is allowed to, that's just life. It's by no means evil.


Selective enforcement implies a binary decision. This is rarely the case with legal matters: most of the time some discretion is required (even expected) as part of enforcement. This is what judges and juries are for under the common and statutory laws and in interpreting contract obligations.


That's not evil lol

They're a business.


Definitely. After all, other closed restrictive platforms such as games consoles only contain rubbish.

For every clojure zealot, there are probably 10 objective-c developers who will be happy with less competition.


This is a mistaken claim. Naughty Dog, for example, uses a precompilation phase in their games involving Lisp that builds into machine and graphics code. Most games, too, have a dynamic runtime in the form of a customized scripting engine in their game, tailored to the needs of their game. Sometimes this is done with a pre-existing language like Lua, sometimes it's built from scratch, like UnrealScript (Unreal1 - 3 engines). All of these are now banned.


Interpreters that run on the iphone have always been banned.


Before, it was just interpreters that could load in external code, i.e. user input or the internet. Now, they are all banned.


I am a huge Apple fan. This sucks. I am seriously considering moving off the platform because of it.


So, if it compiles to C in the end, how is Apple going to be able to tell how it was compiled?


Compilers usually leave some kind of footprint, usually in the form of some kind of runtime. Running `nm <myapp>` makes it pretty clear there is a Lisp system there.

Still, I doubt hey would enforce it. But you can't build a business around it anymore, it's just too risky.


I guess there are some Lisp to C compilers that don't need much of a runtime. Candidates for that are Stalin, the 'Lisp to C' compiler, ThinLisp, CLICC and some others. The 'Lisp to C' compiler was developed to create readable and maintainable C code.


You are right. There's really no way they can reliably detect where the code came from. In fact, it should be pretty difficult to generally, but unfortunately, this clause will scare off business built around this.

There's also PreScheme, which is one of my favorites. It's subset of Scheme which simply generates a few C functions that use a bunch of stack variables and gotos without any runtime.


Why do you think it's unfortunate? Won't that mean less competition for anyone who can reliably pass Apple's scheme-to-C "Turing test"?


One glance at the C code tells you that it wasn't (directly) written by a human.

The opportunity cost risk is rather high, you're betting that Apple will never figure out that you're violating the terms of the new agreement.


You don't send them your code. That said, patterns can often be found in the binary as well. So your point stands.


I suppose it's telling that it never occurred to me that they don't demand your code, or at least have that option....

ADDED: Evil Thought: if they want to audit your code in the future, requiring it to be in a strictly limited number of languages will allow that.

Not saying they will, not saying they've even thought about it ... just that "Power tends to corrupt, and absolute power corrupts absolutely" (http://en.wikipedia.org/wiki/Power_corrupts#.22Lord_Acton.27...) and that someday this limitation will add to Apple's temptations.


Compilers leave a heavy footprint.

Consider how compilation works ... you have a parser that takes your source-code and builds a syntax tree from it.

Then the syntax tree is checked for correctness, optimized, transformed, with type rules inferred and symbol tables created and all that.

Then a backend takes the result and generates source-code (or byte-code or assembly). The thing to remember is that compilers use certain patterns and certain optimizations to generate the resulting source code.

Because of the transformations a compiler does on the syntax tree and the way the result is generated, such patterns can emerge even from the binary.

It's difficult to have 100% accuracy though, but I don't think they would sweat over that.


jlongster - your tooling is impressive and inspiring. What a thing to be able to develop like this. I hope you can find another platform that inspires you and that you have success with that.


well so is COBOL...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: