Tuesday, December 7, 2010

Unburdening myself of my opinion about iOS...

i'm writing this entry just to get it out of my nervous system. i'd much rather talk about technology than market trends; however, this one has been bothering me and i wonder if anyone else sees this: iOS is closed. You cannot (without significant effort) run emacs on iOS. You're not supposed to run JVM on iOS. This may be a defining characteristic that determines the bulk of its competition with Android and other OS's.

What made the Apple recovery possible, in my mind, was the openness of Mac OS X. It was Unix-based and it was full of open source. This won the hearts and minds of developers who were not in the immediate Apple family. Since the recovery we see the development of the iPhone, and we see a move away from this openness. It is at least plausible that on a phone (where reliability may be an issue of life and death or other mission-critical factors) more control over the OS is a reasonable stance. Further, when we look at the lead iPhone has over other SmartPhones/OS's it's likely to be a tenable stance for some time in the future. However, when we look at the touchpad applications things change. There is no mission-critical argument. These are leisure computing devices even more so than laptops. Hence freedom of development trumps any sort of control arguments.

When we look at this in the context of what's happening with the development communities we see that Apple is moving behind the curve. The developer world is moving towards functional languages as a palatable solution to deal with the concurrency requirements from above (Apps must be web and mobile) and below (hardware is multi-core-per-die chips bundled into machines that are bundled into racks...). What is enabling this move for developers is the ubiquity of robust VMs (JVM, .net, LLVM). The iOS is taking a step back from these enablers which means it is taking a step back from the platforms that developers are moving to in droves. That's very dangerous for the class of computing devices Apple is spearheading. That's where i think the Android OS has the most opportunity. Android on a larger touch device allows for a whole new world of UI and application design and supports the new world of development techniques that are emerging to meet this opportunity.

i have been so impressed by Apple. They have amazing design sensibilities. They get computing-as-lifestyle better than any other company. It would be very sad for them to have to play catch up in this space. They're much better as leaders than followers. Control, however, has always been their Achilles' heel. Part of being a truly great leader is enabling others to do great things and one of the most important ways of doing that is allowing people to work the way they want to, including using the tools that give them leverage.

6 comments:

Tom Davies said...

This is a question, not a flame:

- Has anyone submitted emacs and had it rejected?
- Don't the recent changes to section 3.3.1(?) mean that an app with an embedded JVM might be accepted?

Chris Conrad said...

"The developer world is moving towards functional languages as a palatable solution to deal with the concurrency requirements from above (Apps must be web and mobile) and below (hardware is multi-core-per-die chips bundled into machines that are bundled into racks...). What is enabling this move for developers is the ubiquity of robust VMs (JVM, .net, LLVM)."

Apple is a major contributor to LLVM, and they just spent a ton of effort adding blocks and GCD to iOS and OS X. It seems that they are very aware of what you are talking about and have a good handle and a great deal of development effort behind solving those issues on their platforms.

leithaus said...

Dear Chris,

Thanks for your comments! i'm aware that Apple is supporting LLVM. Unfortunately, LLVM is targeted by a very small portion of the mature VM code bases. Haskell, for example, just got an LLVM backend. Scala's is still under development. The JVM to LLVM conversion is not very mature. If you want to use the huge percentage of open source available for the JVM on iOS you are basically in for a long haul.

Best wishes,

--greg

leithaus said...

Dear Tom,

What a great question! Unfortunately, no such step is required for emacs on Mac OS X or Linux or Windows. So, this really does present a not insignificant barrier to entry. Of course the other would be getting a version of emacs that compiles for iOS....

Best wishes,

--greg

Chris Conrad said...

Hi Greg,

I think you're making two different arguments here. Please correct me if I'm wrong.

The first is that functional style development and multi-core/multi-threaded code is becoming increasingly prelevant and it's important that it's supported. I completely agree with this and that is what my comment was focused on. Apple is moving to a Clang/LLVM approach, they've add blocks, GC and GCD. All of these increase developer productivity, add functional aspects to C/Objective-C and make the multi-core/mult-threaded code easier and safer to implement.

The second argument has to do with the JVM and code already implemented on the JVM. I am a big Scala proponent and use it in production every day. But Apple has no interest in the JVM or the libraries that run on top of it and I don't see that changing. They will iterate on Objective-C and Cocoa.

So I think they are addressing your first argument, I think they fundamentally don't agree with your second argument.

Razie said...

Hey, we'll be able to just compile scala into JavaScript, eventually obsoleting all and any restrictions...while not the fastest thing, it is a de facto standard...