
Steve Jobs’ response on Section 3.3.1 - itistoday
http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/
======
karzeem
It seems like every few months, John Gruber hits another clout milestone. Now
Steve Jobs's own statements are a self-described tl;dr of Gruber's posts? Not
too shabby.

Anyway, the puzzling thing here is that as Greg says, most iPhone OS apps are
written in one of the whitelisted languages already. Couple that with what I
think is the likely fact that Apple is being honest about its motives (namely
that it doesn't want its roadmap to have to consider third-party toolkits in
any way), and it's confusing. Why would they go to the trouble of pissing
everyone off to bring about a result that had largely brought itself about?

Two answers. One, I think Apple feared that more third-party toolkits are on
the way, and that they'll become more popular. Two (and I think this is a huge
part of it), Apple seems to have simply underestimated how mad this would make
developers.

I wouldn't be surprised if the company went back on 3.3.1, or at least
moderated it. Apple's only willing to be a jerk when it and the public agree
about the level of jerkitude at hand. If Apple gets more ire than it was
expecting, there's precedent for it backing down.

~~~
reitzensteinm
I would be surprised if they did go back on 3.3.1. They're hurting themselves
with the backlash, yes, but they're hurting other mobile platforms far more,
further securing their position as the #1 mobile platform to develop for.

That said, I'd be surprised if Apple spends too much effort policing the rule.
The fact that it exists in the first place will probably be enough FUD to
prevent third party toolkits from taking off at all. They'll probably do some
kind of automated signature testing for Flash, Unity etc and leave it at that.
The upside of that is you'd probably be able to sneak a Clojure or whatever
app in and nobody would probably care too much.

~~~
mortenjorck
It took me a few days to figure out why Apple would risk driving away
developers like this, until I realized: That's the whole point.

Apple _wants_ to drive away developers who are spreading their apps thin over
multiple platforms. I think you're right that it's quite unlikely they will
relent on this, at least on paper.

As for policing, I think you're also right that it won't be particularly
onerous. I see enforcement less to the letter and more to the intention of
3.3.1: If your submitted app _feels_ like a rough port, they'll probably check
for cross-compiler evidence and reject it on those grounds, but if it fits
right into the iPhone experience, they probably aren't going to go hunting for
traces of Lisp.

~~~
reitzensteinm
I don't think it has to do with the quality of the applications at all. Apple
hasn't taken many steps to control quality in their app store, and there's not
much difference between having an app that's bad because it's a port and an
app that's bad because it's a badly made original.

What is has to do is with lock in. Right now, there's a decent barrier to
porting an application from iPhone to Android, and in most cases the port will
cost more than the profit it makes, so it won't be done.

If people start using multi platform engines, the ports will be very cheap,
and the iPhone will have far fewer exclusive apps, which is a huge threat to
their platform. Each multiplatform app reduces the costs of a user switching
away from the iPhone to an Android phone or similar.

Apple's been on the losing end of lock in with Mac OS for a long time. I think
now they're experiencing the effect in their favour and want to keep it going
for as long as they can.

~~~
davi
I think there is also another dynamic at play: Apple makes high-end, high-
margin 'lifestyle' computing devices. Every time Steve Jobs gets up and
announces a new whiz-bang hardware or software capability in one of these
devices, that whiz-bang capability needs to be deployed as widely and quickly
as possible into the consumer ecosystem. This rapid deployment lets Apple keep
ahead of the Joneses and continue to own the high-end space. If there is a lag
while least-common-denominator, cross-platform tools incorporate the new whiz-
bang features, Apple loses its temporal edge and gives time to competitors to
catch up. The last decade has built up the "Apple == newest" identity in
consumers' minds, and they don't want to lose that, it is one of the keys to
their hold on the high end (another being incredible design and polish, at
scale).

If everyone is writing in Cocoa on XCode, Apple's latest & greatest will be
deployed that much more quickly.

I think this interpretation is consistent with Jobs' terse emails here,
particularly the line, "intermediate layers between the platform and the
developer ultimately produces sub-standard apps and _hinders the progress of
the platform_ " (emphasis mine).

~~~
reitzensteinm
After some reflection, I think you're definitely right that it's a factor. But
I'd still be surprised if it were the primary one, despite what they claim.
The developer base is just so huge, any new platform feature is going to have
dozens of apps to show it off right away.

Saying that they're doing it to further their platform sounds a hell of a lot
better than saying that they're doing it to hurt their competition!

~~~
davi
I agree this temporal aspect isn't the only dynamic, but I don't see people
talking about it much (at all?). I think it's worth thinking about as an angle
on the whole thing. Market tempo matters. Doesn't make what they're doing any
more palatable, mind you -- but it does make it more comprehensible (to me,
anyway).

------
cmelbye
It's funny, his main example of a "high quality cross platform app" was
Mozilla Firefox. In my opinion, Mozilla Firefox is a prime example of why the
intermediate layers (if Firefox uses one, I'm not sure) and the cross platform
stuff is a bad idea. It uses its own weird certificate store instead of using
the operating system's, its interface does not have a Cocoa feel in any sense
of the term, etc.

~~~
aerique
Firefox may not have a Cocoa feel but he prefers it over Safari anyway since
it serves him better. So apparently native look 'n feel isn't all that for
some people in their choice of applications.

I feel the same way about Safari on my iPhone. I quickly ditched that for a
better browser.

~~~
toisanji
Which browser is that?

~~~
aerique
I use iCab Mobile because I can't browse without being able to open links in
background tabs and I like its fullscreen mode as well.

------
lispm
When Steve Jobs got a demo of the graphical user interface and object-oriented
software at Xerox PARC, he saw a computer that could be interactively
programmed. In Smalltalk.

When Steve Jobs started with NeXT in the mid 80s he got a demo of a novel
program that can be used to interactively design general user interfaces - the
first program of its kind.

It was written in Lisp by Jean-Marie Hullot. It was called SOS Interface,
marketed also as Action! by the company Expertelligence.

Steve Jobs hired him and Jean-Marie created the Interface Builder - which
became one of the most important tool on NeXT OS. Then for Mac OS X and now
for iPhone OS.

This innovation is now hindered by Apple. The innovative software may not be
written in Lisp anymore, but it is not necessarily Objective-C either.

With the Mac everybody got a copy of HyperCard - everybody could write and
design programs in a simple way - using the built-in HyperTalk. Xerox had such
a software years before - called NoteCards and written in InterLisp-D.

With the iPad, which is much more capable than the Mac where SOS Interface and
HyperCard were developed, everybody is degraded to be a consumer. The goal is
no longer to be a maker, a creator, a programmer. You can't even use a shell
to connect to your own iPad.

There is huge domain of visual programming and end user programming to be
explored on touch screen devices. Maybe Apple is working on that and hiding
this (like Jobs claimed that 'nobody reads anymore' and some time later Apple
now sells iBooks) - from what we see now Apple hinders innovation and
innovators in these areas.

I want a 'DynaBook' and not a media player.

Steve Jobs did not really understand what he saw at Xerox PARC when he got the
demos of the Smalltalk system. He got the idea of the graphical user
interface. But what he overlooked was the concept of object-oriented
programming. He later with NeXT understood that. But what he never really got
was the importance of interactive programming, end-user programming - the role
of the user being able to program his computer in a straight-forward way. The
cultural importance of being able to write, understand and change software.

~~~
rimantas

      With the Mac everybody got a copy of HyperCard 
    

Here we go again. I got a free copy of Xcode, IB and Dashcode with every
release of OS X I had. I can code in C, C++, Objective-C (with a choice of
compilers gcc or clang), PHP, Perl, Python, Ruby (including RoR), Java right
out of the box. SQLite is also there and maybe some stuff I don't even know I
have.

Existence of iPad (and iPhone) does not hinder innovation — it fosters it.
Three years ago there was no iPhone, no iPhone OS, no App Store. Now we have a
new platform with not far from 200 000 (just think about it) applications
written for it. iPad gives an opportunity truly explore what's possible on
multitouch device with dedicated UI.

I am a web developer, but I do not complain that I cannot easily write my code
in the browser itself. Nor do I want to.

Just think about it: if there were no iPad you could not code for it even in
Obj-C.

~~~
lispm
I'm not talking about programming on the Mac, I'm talking about the iPhone OS
and devices like the iPad.

I need a Mac to program the iPad? Why?

We needed a LISA to program the Mac in 1984. The Mac had 128kbyte of RAM and
couldn't do much.

The iPad has 256MB RAM, a multitasking OS based on Unix - I want to see end-
user programming on the touch screen. Not a generation of link clickers.

We have 2010.

I want a better EMAIL program for my iPhone (or something like the iPad). I
don't get it. Apple does not allow that. WHY? It can't even filter mails. We
had that twenty years ago.

~~~
alanthonyc
_"I need a Mac to program th iPad. Why?"_

Holy moly! Are you mad because a TV isn't a video camera? Are you mad because
a plate isn't a frying pan?

The iPad is a _consumption_ device. It's a new thing. I've had it for a week
now. I know that it's not going to replace a real computer. But it is
absoulutely great for what it is. I wouldn't want to program _on_ it (as
things stand). It's acceptable for writing short texts, that's about it for
now.

And this has nothing to do with the 3.3.1 controversy. There are a number of
things that you can take Apple to task for, but this isn't one of them.

~~~
nooneelse
"I wouldn't want to program on it (as things stand). It's acceptable for
writing short texts, that's about it for now."

There seems to be an presupposition there that programming must involve lots
of typing. If so, it is a false one.

~~~
veemjeem
I haven't seen a good 5th generation language that does visual programming
well yet. Even the wonderful morphic libraries on Squeak or the ALICE virtual
world still require lots of typing.

~~~
nooneelse
Why did the goal posts for my point in the conversation suddenly get moved to
5GL? That feels like a bit of a disingenuous reply.

------
ghshephard
So, I can understand why developers dislike and hackers despise the new 3.3.1
rules. What programmer, in their right mind, wants to have the language they
develop in dictated to them?

But, for just a moment, I'm hoping that some of you can appreciate how
miserable an experience Apple users have had with the couple decades of
various levels of cross-platform development that Microsoft has done.

At times, those applications have been _so_ bad as to be an advertisement for
windows. I'm an Apple fanboy, and own three generations of Apple MBPs, three
iPhones, and, of course, an iPad - but to this day, at work, I still keep a
2003 class Windows XP system with Microsoft Excel on it to get work done - The
painful experience that is Office 2008, (and don't get me started on
"NeoOffice") single handedly make me appreciate the fact that Apple is
dictating that people write dedicated, high quality applications, directly for
the iPhoneOS, rather than trying to do some crufty translation to that
platform.

When I read Jobs's response, I could only imagine that he was having bad
flashbacks to some of the x-platform disasters of years past.

I appreciate and respect that developers don't want to be told how to develop,
but if the end result is that the few development shops out there capable of
putting out a AAA title like Microsoft Excel, have to pony up a few more
developer resources and put out a world class app directly for the iPhone OS,
rather than just creating some half-baked x-platform experience, I'm in favor
of 3.3.1.

~~~
Silhouette
> I appreciate and respect that developers don't want to be told how to
> develop, but if the end result is that the few development shops out there
> capable of putting out a AAA title like Microsoft Excel, have to pony up a
> few more developer resources and put out a world class app directly for the
> iPhone OS, rather than just creating some half-baked x-platform experience,
> I'm in favor of 3.3.1.

Well, OK, but the other possibility is that the executives at the few
development shops out there capable of putting out a AAA title take one look
at Apple's terms, observe that their entire investment could be arbitrarily
yanked by another commercial organisation without compensation, kill the
iPhone/iPad development before it starts, and target more open platforms that
don't come with the same absurd levels of risk instead.

In the long run, the developers will always win, because someone will always
make a platform where good developers can write good software, and then people
will buy that platform to get that software. On the other hand, no-one cares
about the platform, even if it's Apple, once the initial "Oh, shiny!" moment
wears off and you actually have to get stuff done.

~~~
glhaynes
Aren't there just as many, if not more, that will stay on iPhone (since it's
where the money is) and use only approved tools? AAA-capable shops will build
where the money is. There's been a LOT of controversy about Apple's terms in
the last two years and I don't know of a single example of a AAA moving off
the platform and onto a competing one.

What's more likely is that they'll build a native iPhone version and use a
cross-platform toolkit or HTML to build for the other mobile platforms.

~~~
Silhouette
> Aren't there just as many, if not more, that will stay on iPhone [...] AAA-
> capable shops will build where the money is.

Well, that's the question, isn't it? I would argue that the AAA shops will
ultimately _define_ where the money goes in the long term. Early adopters buy
based on platform hype, but what really attracts users is good applications.

> There's been a LOT of controversy about Apple's terms in the last two years
> and I don't know of a single example of a AAA moving off the platform and
> onto a competing one.

I'm not sure any mobile applications have reached AAA level yet. It takes
time, research and evolution to achieve that kind of status. But it also takes
the right development team seizing the opportunity, and that in turn requires
that team to be looking in the first place.

------
vito
I would not consider Firefox to be a "top-notch" Mac app. Every time I used it
it felt slow, awkward, and clunky. I'd even find myself using non-native
keyboard shortcuts (despite the native ones being available; e.g. F5 vs.
Cmd+R) simply because it took me out of the "Mac native" world. No matter how
close its emulation came there was always something to throw me off, mostly
little GUI idiosyncrasies.

~~~
csomar
It's not good on Windows either. It still better than IE though, but way
behind Google Chrome. Chrome is fast and when I browse, I want to quickly scan
pages and run JavaScript.

FireFox exists in my desk only because it has FireBug and a couple of other
web dev. tools.

~~~
DrJokepu
Actually, the web development tools and the JavaScript debugger in recent
Chrome betas are starting to get really good, almost as good as FireBug and
even better in some respects. You should definitely give it a try.

~~~
csomar
Actually, I only use FireBug for debugging JavaScript. For CSS, there is
nothing like Stylizer. Just give it a try and you'll never use another tool.

------
alanthonyc
Well, at least we know he's listening and is concerned enough to respond to
the criticism. Where this leads will be interesting to see, it's only been two
days after all.

Thanks for emailing him.

~~~
ugh
You know they are worried when they are using their PR backchannel. (But damn,
what a great tool from a PR perspective.)

(I don’t really know whether Firefox is such a good example. It’s a great
program because it first challenged IE, not because it’s anything close to a
native feeling app. There must be better examples out there, right?)

~~~
mattparcher
I don't think they're "worried". They may be a generally secretive company,
but Steve has been replying to a lot of emails in the last few months. I'm not
surprised to hear about someone else hearing from him, although I can't recall
the last time someone emailed Steve about a developer issue specifically.

The only time I remember them reaching out to developers was a while back when
app rejections were getting out of hand, and Phil Schiller (SVP of Worldwide
Product Marketing) started making the press rounds to say that Apple was
working to improve the situation (e.g.,
<http://daringfireball.net/2009/08/phil_schiller_app_store>)

------
mattparcher
_Everyone fears The Ignorant Boss

For developers, this is the person who knows nothing about programming yet
insists that you use X tool and write it in Y language._

The author seems to imply that either Steve Jobs or Apple itself "knows
nothing about programming". That seems wholly unfair, especially for Apple,
and even for Steve. Obviously Apple employs some very talented programmers, or
else we wouldn't be here talking about the iPhone. But surely Steve has a
working understanding of the issue? Compared to Wozniak, he may have been the
less technical of the two, but reviewing his history at Apple, Pixar, and
NeXT, I think we can agree that he has a much better understanding of his
products than many CEOs.

Apple knows what they're doing. As usual, they are just very conservative and
arrogant, which I'm personally OK with (in general) because they make great
products.

~~~
CamperBob
_The author seems to imply that either Steve Jobs or Apple itself "knows
nothing about programming". That seems wholly unfair, especially for Apple,
and even for Steve._

It is, however, fair to say that Jobs is overlooking some very basic computer
science. There is no reason why a tool like Flash can't emit Objective C, and
there is no guaranteed way for an app reviewer to tell the difference.

~~~
commieneko
Just a cursory look at what's going on with the new virtual memory system
seems to indicate that writing apps that follow the rules enough to work
correctly will be an interesting enough problem even _using_ Apple's tools and
libraries.

But this issue is mostly about control, both of developer promiscuity and
usage of system resources. Blocking developers' cross-platform plans is
probably just a bonus. Apple could certainly solve any technical issues if it
felt it was worth the effort and in its best interests.

Apple does not feel it is in its best interests... And for now, they are
probably right.

------
endtime
The quality argument is bunk, in a very obvious way. Apple reviews each
individual app anyway before it can enter the App Store. In other words, given
a review of an individual app, the original platform and the app's quality are
d-separated (in the Bayes Net sense).

~~~
fab13n
Agreed, Apple doesn't need any reasons to kill an app. Conversely, they have
the ability to "save" an app that doesn't respect TOS.

Yet the TOS are useful, as a good set of guidelines: TOS compliance is very
strongly correlated with chances of having your app accepted.

~~~
godDLL
I think it's their way of getting the word out.

------
mclin
_And, obviously, such a meta-platform would be out of Apple’s control.
Consider a world where some other company’s cross-platform toolkit proved
wildly popular. Then Apple releases major new features to iPhone OS, and that
other company’s toolkit is slow to adopt them. At that point, it’s the other
company that controls when third-party apps can make use of these features._

This has happened before. It's called the web, and it's beautiful. Slow to
adopt? Hells yes. But I love it because it runs _everywhere_.

~~~
raganwald
If I may: The salient difference between the web and a meta-platform like
Flash is that while Adobe controls flash, nobody controls the web.

If Apple wants to build hardware acceleration for CSS animations on iPhone, it
does so. If Apple wants to fix a bug in Javascript, it does so. If Apple wants
to close a security hole in Safari, it does so.

Whereas if Adobe feels like making Flash slow as shit on OS X, it does so. If
Adobe doesn't feel like fixing a bug on OS X, it doesn't fix a bug on OS X. If
Adobe can't be bothered to fix a security bug on OS X, Adobe leaves a huge
security hole open on OS X.

The web is a "worse is better" alternative to native iPhone apps, but at least
it's open and offers opportunities as well as dangers for Apple.

~~~
wvenable
If Apple wants to write 200,000 applications and post them to it's app store
it does so... no wait.

------
metachor
Regardless of the content of Jobs' response, and regardless of the merits or
flaws of Section 3.3.1 for Apple, developers and consumers: It is interesting
to see that Jobs is aware of the dissatisfaction with this clause. The man
isn't stupid, and maybe he will pay attention as more developers look for
other platforms with more open developer licenses.

I've always seen Jobs as being highly principled and opinionated about the
technology he helps create, but not particularly greedy (it is perhaps
fortuitous that his principles have contributed to Apple's financial success).

I get the impression that Section 3.3.1 was changed as-is because Jobs
honestly believes that restricting use of cross-platform toolkits and
compatibility layers will help keep the iPhone platform and AppStore true to
his vision of what those platforms "should be" (whether or not this is
actually the case). I also don't think Jobs is explicitly trying to lock
developers into the Objective-C/Cocoa development platform (though this might
be a welcome side-effect of this decision from Apple's POV).

Philosophically I don't agree with Section 3.3.1. However I can see, on the
one hand, how it fits in with what I understand of Jobs' character and
motivations about his technology. And on the other hand I can see how it makes
good business sense for Apple in the short-term. In the long-term it may not
work out as well if it induces a developer-exodus. But since Jobs is paying
attention, we'll see what happens when that time comes.

------
cheald
Ugh. That's an awfully distasteful response.

"Intermediary layers" are what make modern programming productive. We don't
all write in processor-specific assembler because it's not (developer-time)
efficient, and because we can accomplish a given task without having to resort
to such a low level. For example, it's far more efficient to write in higher-
level C and compile for the platform as necessary. The entirety of the
software development ecosystem is "intermediary layers". C compiled to a
platform target with GCC is sure as hell an "intermediary layer".

I can't help but think that what Jobs means here is "intermediary layers that
aren't ours automatically produce inferior products". What an arrogant line to
feed to developers. At least he's being direct (if not honest) with Apple's
intent to fully lock developers into the Apple-blessed toolchain, from the
initial concept to the final product. Ugh.

~~~
jstevens85
>I can't help but think that what Jobs means here is "intermediary layers that
aren't ours automatically produce inferior products".

Is that not true though? In most cases, apps that use an intermediary layer
will not be as polished or usable as an app developed using the native tools.

~~~
cheald
I don't think that's true at all. Layers of abstraction can improve the
quality of a product by letting the developer focus on polish, rather than
fighting a lower-level language. We see vast quantities of applications
written in high-level languages on high-level frameworks that behave
marvelously.

------
Tycho
Whether throwing mud at cross-compiled apps is valid or not (personally I'd
say its validity fades in light of the voluminous bad apps already
available... although i do remember Apple already taking some measures against
those), I think it's merely a footnote to a _sensible business decision._
Apple need to preserve their lead, build a wall of incompatibility (now that
it's necessary), and avoid this 'de facto cross-platform standard' which would
greatly benefit Adobe and others but greatly hinder iPhone. If the iPhone ever
loses its strong position you can bet Apple will embrace Flash, Java and
cross-compilers in a heartbeat.

~~~
yankeeracer73
This is exactly right. Until they see real damage from the decisions they're
making in the form of lost revenue and non-record quarterly performances, why
not take the strongest "negotiating" position possible. You can always back
down later.

------
wallflower
From what I've seen of the CS5 packaging for iPhone, there are no native UI
controls. Adobe claims to have a project to port Flex to iPhone, and I can't
assume that it will use native UI controls. Since the iPhone is all about the
rich user experience, perhaps by limiting access to the AppStore for prior-
life Flash 2D games, Apple is protecting the dilution of the quality of the
games.

As for the other build an iPhone app application frameworks, the quality of
the finished product varies from lackluster to average. At the worst, the
finished app looks like one of the RSS reader apps that Apple is now trying to
filter out of its AppStore. At the best, it's something like Location Scout. I
believe by limiting access to third-party application builders, Apple is going
to continue to increase the quality of iPhone apps. Titanium, Adobe et al will
never generate anything like Tweetie 2. And, I believe Apple wants more
Tweetie 2-caliber applications. To increase the S/N ratio. I believe Apple
wants less crap and cookie cutter applications, even though some of the top 25
Free and Paid lists may from time to time have those types of 'Fart' type
apps.

Apple is a premium brand. Even for developers. There are barriers to developer
entry. It is kind of a privilege to write iPhone apps as you need $99/yr and
an Intel Mac. The Cocoa/UIKit framework and CoreData persistence are tools
that Apple engineers have invested centuries of programmer years in
developing. There aren't many private APIs in Apple land; almost all of the
standard iPhone apps could be recreated by third-party developers. And now
with OS 4.0, I believe only a small fraction could not be recreated. As
another example, Titanium et al. are not using CoreData - CoreData is designed
to make managing and persisting an object graph easier. Which is what you need
for non-cookie cutter applications. I have yet to find one application built
on RhoMobile, Titanium, Ascena etc that leverages CoreData.

And, I wouldn't be surprised if they start rejecting apps for quality (as in
what does this app provide that is of value).

"He downloaded Titanium on a Saturday morning, and by Sunday night he had a
functional prototype of his Location Scout app..."

[http://www.appcelerator.com/partners/case-
studies/locationsc...](http://www.appcelerator.com/partners/case-
studies/locationscout/)

[http://labs.adobe.com/wiki/index.php/Applications_for_iPhone...](http://labs.adobe.com/wiki/index.php/Applications_for_iPhone:Developer_FAQ)

~~~
mclin
I hope you're not implying that the speed of development is an indicator of
bad quality.

Any environment where you're working with JavaScript (or Ruby, or Python...)
is going to have faster dev time than working with a compiled language. It's
not just having to type way less, but less brainless typing leads to better
flow.

I'm doing both right now, and I _love_ Titanium because it gets me in the
zone, whereas with ObjC, so often I have to turn on autopilot to get through
the boring stuff when I create a new model or class or something.

~~~
wallflower
Reading all the comments posted on this thread, I'm starting to change my
mind. It's not the quality (Titanium mobile apps are nearly indistinguishable
from most iPhone apps), the speed of development (like you said, not having to
use Objective-C). Unfortunately it is probably protectionism. To protect the
dominance of the AppStore. If you can simultaneously write an Android and
iPhone app using the same Titanium/Kroll codebase, you're helping to weaken
the AppStore (which is arguably the main tent pole of Apple's strategy to
dominate computing in this century).

"When Apple’s SDK was introduced in July 2008, the company tried over a period
of several months to get a basic app up and running. Notes Bart Johnston,
Director of Interactive, “I thought that my web development experience would
have prepared me for developing on the iPhone, but it felt like I was starting
completely from scratch. The learning curve was very high."

Does Apple really want to officially allow Titanium to lower the barrier to
entry? Premium brands cannot be premium if everyone has access.

[http://www.appcelerator.com/partners/case-studies/lone-
star-...](http://www.appcelerator.com/partners/case-studies/lone-star-beer/)

------
jimbokun
Is there an alternative way for Apple to meet its goal of prohibiting extra
layers of cross platform toolkits, without mandating the choice of programming
language?

Could they somehow say that programs must use native CocoaTouch widgets, while
still allowing for people who want to compile from Scheme into Objective C or
C?

~~~
wallflower
If they did this 'native UI widgets' only restriction for non-game apps, it
would help. However, as other commenters have pointed out, there are a lot of
crappy applications that are built with the native tab bar control.

Maybe some people don't want polish, they just want a momentary diversion
(hence the proliferation of silly trivia type games and gag apps). I even saw
the developer of a top-50 paid iPhone app be wow'd recently by a simple iPad
game. Fun is fun, no matter how it is coded.

------
glhaynes
This makes an interesting thought experiment: what if Adobe decides to take on
Apple directly by throwing their weight behind Apple's main competitor,
Android. CS5.1 is shipped as a free upgrade to CS5 and replaces the iPhone-
compiler with an Android-compiler. Organizations with existing Flash content
decide that they had might as well do a quick/dirty port of their apps using
CS5.1.

What will the results of this be?

* Lots of Flash content gets released on Android. This expands Android's software market considerably, though with a cost in performance/platform-integration (both in terms of UI and in terms of taking advantage of low-level capabilities).

* Many of the best/most popular and money-making Flash apps will get an iPhone OS-native port. The cost to write an iPhone app is relatively low; if you're talking about a game, the vast majority of the cost is usually in the assets. The iPhone developer tools are very good, there are lots of developers: finding an iPhone developer willing to make a native port of your game engine isn't difficult or expensive relative to the number of users you open up your investment to. Thus iPhone potentially gets the best version of many originally-Flash apps.

Thus, Android continues to have more possibilities (theoretical and, in some
cases, actual), but a lower overall level of quality, integration, and
performance... an issue its apps are already widely accused of. And iPhone,
which has a tremendous lead in number of apps, loses out on a few — again, a
fairly unpopular set which would have generally not fit in on the platform as
well and would have slowed Apple's ability to require adoption of new platform
capabilities.

It's hard to see the downside to Apple here. And it's hard to see how this
does anything but make Android less attractive and iPhone more attractive for
most mainstream (the overwhelming majority) users.

~~~
wvenable
It depends. Lets say that Adobe's compiler allows Zynga to quickly port
FarmVille to Android as a native app. There are 82.4 million FarmVille users
who, like crack addicts, always need their fix. They might just buy an Android
phone for FarmVille and all the other games they play daily.

Now Zyngna does as you said and hires someone to build an iPhone OS native
version. It'll come out 6 months to a year later -- but it's there. Then what
happens? FarmVille is always being updated. It's easy to update the Android
version but iPhone version always requires more work. So inevitably it falls
behind or stops working entirely. Is that really more attractive for
mainstream users?

------
steve19
iTunes is cross platform. Is Steve saying that iTunes is crap?

~~~
naner
It certainly is on Windows. Same goes for Safari on Windows.

~~~
papachito
Microsoft should ban it from Windows then.

~~~
yellowbkpk
Apple would probably like that. They don't have to spend money on support and
can point their finger at Microsoft when customers come to complain.

Also, a small fraction of complaining customers might actually purchase a Mac.
Cha ching!

~~~
edanm
"Also, a small fraction of complaining customers might actually purchase a
Mac."

While the rest can't use their IPods anymore? I don't think Apple would be too
happy with _that_.

~~~
yellowbkpk
The majority of the functions that used to require a computer-to-iPhone sync
can be done over the air now.

------
metamemetics
I think 3.3.1 is a smart choice from apple's perspective. They need to raise
the barrier of entry into the app market and make developing apps more
difficult, because there is currently an oversupply. Even if the clause turns
away a ridiculous 70% of would-be app developers, I don't think apple will
suffer.

~~~
schemas
Monotouch has been out since November 2009, Adobe CS5 isn't out for the iPhone
yet, and as for Titanium I don't know the exact time period but it's not been
long.

The only platform producing apps for a longer period of time has been Unity3D,
which now advertises itself as having over 600 appstore games.

So your argument about raising the barrier to entry is weak, as these tools
have only just emerged in the last 6 months. Prior to that we've seen
thousands of poorly written, leaking objective-C applications on the AppStore.
I've seen 2 RSS readers and the official digg.com app crash straight to
springboard in the last 2 weeks, all written in objective-C.

Just because the language is closer to C and enforces memory management
doesn't make its barrier any higher or require any greater skills - it means
you'll get a tonne of apps that aren't releasing or reference counting and
crash. I'm sure all this was hotly debated 10 years ago and garbage collection
won.

~~~
jstevens85
I think perhaps what the parent meant is that Apple wants to _maintain_ the
current barrier to entry. I think perhaps they're worried about the shitload
of crap apps that will end up being submitted for approval once Flash CS5 is
released.

------
corruption
If apple allows cross-compilation like that from titanium and adobe, then
guess which platform gets the apps first? That's right - all the others!

Because apple is so slow and nitpicky with their approval process, if they
allow this to happen their own policies will make sure they lose out to the
less moderated platforms.

I think this is a good reason why apple is doing what it is. They want to
maintain the app advantage as long as possible.

Seems to me there is an easier way - make your approval process better!

------
makecheck
Apple may have other motives, but the effect of this is still positive;
encouraging a higher standard of quality is a _good_ thing for a massive
platform.

Remember, Microsoft didn't do this with Windows. Where did we end up? For
years, an incredibly bad user interface became the norm, with shaky
programming APIs to match. Most 3rd party developers simply copied whatever
Microsoft was doing (out of laziness?), causing other applications and APIs to
also be horrible.

------
tumult
Jobs' second response is the most interesting.

 _We’ve been there before, and intermediate layers between the platform and
the developer ultimately produces sub-standard apps and hinders the progress
of the platform._

So it seems, at least from his comment and the context it was in, the
intention of the clause is to remove layers that are other people's products.

There are two sides to the "hinders progress" claim. One is that, with an
intermediary layer, new features added by Apple cannot be used by anyone
relying on an intermediary layer to build iPhone apps until the maintainers of
the intermediary layer add support for it. From what few comments we've gotten
out of Apple, it seems they are trying to avoid a situation in which there is
a large ecosystem of developers who are unable to directly exploit Apple's
newest innovations on the platform, and instead work with least-common-
denominator that their layer provides.

I think this is a totally reasonable thing to want.

The other side to this is that there is probably not a good technical way to
make people obey. Innovation directly on top of a platform can involve
abstraction into layers. For example, most of the best games all involve
multiple layers of abstraction, in the form of a managed runtime for the game,
some sort of scripting engine (or template/meta-language for specifying
behavior), dynamic compiler (for shaders, AI and other tasks), etc.

The first thing a good programmer does when faced with a complex and uncertain
problem is to build a grammar to express their ideas in on top of the
foundation you're given. In C, this usually involves writing sets of routines
that form a second (usually ad-hoc) 'language' that can be composed together
to form complex ideas without having to hand-code everything over and over.

I see tons of bad and dumb Objective-C iPhone, iPad and Mac apps. It's
completely possible to write first-class stuff in something other than
Objective-C or C. ML variants, such as OCaml, SML and now even Haskell are
speed demons in comparison to Objective-C. (The thing that makes Objective-C
'fast' is that when you need it to be fast, you just write the routines only
in C, without message dispatching. Want to know how much fun it is to write
GUI glue in C? Not very.)

I hope this means Apple is not going to start rejecting apps that are
polished, fast, and innovative simply because they are built or expressed with
tools other than C. I realize a lot of Flash->Objective-C compiled stuff would
be crap. A lot of Objective-C stuff is crap, too. But some guy with his own
hand-rolled Scheme runtime with message passing mapped onto the UIKit classes
implemented with closures? If you reject that, you're going to piss off the
very best developers, and dig yourself into the kind of hole that no
technology company in history has been able to maintain mindshare once inside.

Addendum: if it's true that Apple's primary intention of removing layers is to
keep their APIs and ecosystem nimble, then I would expect them to _not_ reject
games made with intermediary software, such as Unity3D. Games usually play
outside of the main OS framework kits and are not as beholden to new UI
features as normal application kit programs.

~~~
tjogin
> So it seems, at least from his comment and the context it was in, the
> intention of the clause is to remove layers that are other people's
> products.

Exactly. It's not about forbidding other languages, they just don't want to be
beholden to things like CS5. Gruber was right.

~~~
goatforce5
I wouldn't be utterly surprised if Apple took Titanium Mobile:

<http://github.com/appcelerator/titanium_mobile>

or bought Appcelerator and made a play for it to be the environment to develop
mobile apps in.

If the future says we'll be able to cross-compile our apps for the 2 or 3 most
popular mobile platforms, why not do have people do it on Macs, in Apple's
environment, and have the paid apps end up appearing in an Apple controlled
app store?

(side note: i've mentioned Appcelerator a few times in previous comments. I
have no connection to them other than thinking it's a pretty neat product and
have been looking forward to diving in to it properly. I'll be annoyed if
Apple removes that as an option from me. FWIW, Appcelerator is the reason i've
already paid $99 to register as an iPhone developer.)

~~~
wvenable
> If the future says we'll be able to cross-compile our apps...

Apple wants to prevent that future, not embrace it. They'd rather sell
millions of iPhones to consumers than sell hundreds of Macs to developers.

------
csomar
For people who think that this will increase quality in the app store:

No, you are completely wrong! There will be always sh!t games and apps,
because sh!t developers exist either on Mac or Pc or Linux. So the solution is
either to tighten the app store approval process or make a user voting system
that select the best.

I do believe that Flash will bring loads of crappy game to the iPhone, however
the couple exciting games it will bring are worth it.

------
lwhi
No matter how clever Steve's rhetoric - he's trying to restrict freedom and
moderate the behaviour of developers.

Steve; if you were really worried about quality, you could examine the end
product and make a judgement based on the final quality of each app in
question.

This is a strategic business decision and you're treating developers like
pawns. Potentially this move has the ability to stifle innovation.

------
abstractwater
Developers, like all scientists, want to have choices to tinker with stuff.
Especially the smartest. As a consequence the number of smart iPhone
developers will decrease and we'll have a higher number of sub-standard iPhone
apps. But at least they will all have a consistent look and feel.

So much for "Here's to the crazy ones." I feel more like a sheep that's being
told a priori what to do.

------
jokull
Steve's second response tells us that he's well aware of what they're doing.
The platform is going to be heavily guarded. If you make something for the
iPhone or iPad you're going to have to hire fan-boys or developers who are
very, very willing to bow to the Apple.

~~~
tjr
And if you want to make something that runs on airplanes, you're going to have
to play by the FAA rules, which also severely limit what nifty computer
science techniques (and, in practice, what languages) you can use.

Not every development environment is going to be a free-for-all. If a
particular environment is too restrictive for our tastes, we don't have to
develop there... though if our desire to support the users on the other side
of the development environment is strong enough, then we might decide to put
up with what may feel like are rather perplexing, pointless rules.

~~~
zaphar
The difference being that you have to play by the FAA rules for _all_ airplane
software development.

But you have a choice when it comes to mobile development. Android, WebOs,
Symbian,... All allow you to do mobile development. The IPhone is not the only
game in town. Which is why a move like this could be considered risky by some.

------
tmsh
This was my take/biased-C++ guess on it a couple of days ago, fwiw.

<http://tmsh.posterous.com/section-331>

~~~
strlen
Read your post. Problem is, there isn't that much code you can write without
allocating something on the heap. When you _are_ allocating stuff on the heap,
manually using malloc() can be very inefficient. Not to mention recent
versions of the JVM can perform escape analysis and convert un-needed heap
allocation to stack allocation.

From my own experiences, bigger problems occur with extra large heaps (>32gb).
That's where the dreaded Java GC pauses and CMS failures come in. In these
cases custom memory allocators (such as memcached's) are what people turn to.

I'd also wager the iPhone/iPad are not low-memory devices by any stretch of
the imagination. The amount of memory is orders of magnitude higher than the
original machines on which Smalltalk, Common Lisp and Java were developed.
Erlang (with the BEAM VM) is meant to run extremely reliable on very limited
telecommunications switch equipment.

That being said, well written, profiled and optimized code in C is always
going to beat code written in a JIT-compiled, garbage collected language. 3d
graphics and gaming is one such place and I'd hesitate using anything other
than C for these domains (at least for now).

~~~
tmsh
Good point. I don't regret my time spent writing in Java. I think in many ways
it improved on previous languages and clarified a lot of things that are
pretty murky in C++ (like how objects have both a 'dynamic' and 'static'
type). And it's nice to hear they're still innovating things.

It's just that small things add up. Take class members. In C++, all non-
pointer class members are allocated together (like a struct). In Java, each
non-array member is basically a pointer. That small little thing spread across
say a UI/widget hierarchy adds up and creates a lot less memory locality, etc.
Doesn't quite fold as nicely into the caching layers of the von Neumann model.

I totally agree with you about there being orders of magnitude more memory
than the original machines that these languages were developed on. Actually,
just googling 'ipad ram' (and filtering by last week -- man, I love that
feature):

<http://bit.ly/dioAjU>

It looks like there's only 256MB or so. No idea why they didn't include more.
That makes no sense to me. It's almost like they're squeezing VMs on purpose.
Not sure if Jobs is that much of an evil genius, but yeah. I mean when you're
paying $600 for a device made in bulk, RAM is cheap. Odd.

~~~
strlen
I'd argue 256 mb is more than plenty to run a VM. I recall running much slower
and memory-hogging VMs (earlier versions of Flash, Bochs, Blackdown JDK 1.3
under Linux emulation in FreeBSD, how's that for layering?), running much
heavier applications (Netbeans, Tomcat under Blackdown) in 256 mb of ram on a
machine with a slow PATA disk and a Pentium-III processor. It wasn't pretty
(this experience is what turned me away from JVM until recently), but it was
tolerable.

I am not saying the JVM (at least HotSpot) is actually best for the
iPhone/iPad, there are better VMs out there. Erlang's VM is better (and again,
runs in a much more restricted space), there are also register based VMs
(e.g., Dalvik and -- best example -- how Apple themselves emulated m68k on
PowerPC based Macs).

I'll definitely trust you in regards to UI programming: last UI programming I
did for a salary was GTK+- in C, having played a bit with OS X SDKs / IB --
even prior to iPhone -- I found that to be a _much_ better experience. The
only Java desktop apps I use extensively are the IDEs (and both Eclipse with
SWT and IntelliJ IDEA with its JNA/JNI libraries make heavy use of native
APIs).

------
stretchwithme
I think companies would cooperate more with each other and with developers if
patent law wasn't creating incentives to do the opposite.

Cooperation would happen a lot more if cooperation were mutually beneficial
instead of just benefitting the patent holder.

The creation of web was really a fluke, but the sort of thing that would be
happening all the time if patents weren't discouraging them.

------
eapen
I look forward to Steve not allowing any software other than those developed
in XCode and solely for the Mac OS to be run on my Macbook Pro. Put an end to
all software piracy and buginess and one place to run all OS apps.

// I was just being sarcastic but given Apple's behavior I wouldn't be
surprised if this happens.

------
towndrunk
Does Android support flash or AIR apps? If so, are there a lot of developers
using this to build applications?

~~~
mbrubeck
There are a few phones with Flash Lite, and plans announced for full Flash
10.1 in the browser. But as far as I know there is no AIR for Android, and no
shipping phones with the full Flash runtime. There's no Android equivalent to
the Adobe CS5's iPhone app compiler.

------
Xichekolas
I really don't get this argument. It seems that his point is that section
3.3.1 is going to scare developers away and ruin the platform.

Ok. So let the developers go elsewhere.

The only party hurt here is Apple. If they want to shoot themselves in the
foot, then let them do so. It's one thing to have an intervention for a friend
that is an addict, quite another to save a _company_ from itself.

As a friend put it, section 3.3.1 pisses off an extremely small subset of
iPhone users... namely, the developers themselves. No one else cares. If they
app ecosystem dies because of it, then people will jump to another smartphone.
But until that actually happens (if ever), Apple can get away with whatever it
wants, and trying to argue about it is not going to get you anywhere.

------
daniel-cussen
Does Steve Jobs know how to program, and if so, what languages does he know?

~~~
jokull
Quoting Steve Wozniak's description of Jobs' job back when he worked for
Atari: "... Steve would examine their design and make changes, like adding
sounds, etc. It's like modifying a program to do different things, just barely
a step under designing them yourself, and a step that all design engineers go
through." <http://www.woz.org/letters/general/91.html>

If that gives you any sense.

------
CamperBob
Apparently nobody at Apple has the guts to tell Steve that Adobe will just
modify their tool to emit Objective C code instead of ARM bytecode.
Performance really _will_ suffer when they do that, and Apple won't be able to
do anything about it because they won't be able to prove that the Objective C
source was generated.

~~~
reitzensteinm
They absolutely will be able to tell. When you auto generate code it is going
to have a very distinct signature, not to mention common runtime code. All
they have to do is get a competent programmer to compile a Flash for iPhone
app, disassemble it and build a program that looks for the signature that's
run over submitted apps. A few days of work at most every time Adobe releases
an update to their iPhone compiler.

~~~
CamperBob
_When you auto generate code it is going to have a very distinct signature,
not to mention common runtime code_

A couple thousand Russian worm authors would beg to differ.

This is a classic arms-versus-armor battle. Arms will always win.

~~~
reitzensteinm
I'm talking specifically about Flash generated iPhone apps above, and there is
_no way_ Adobe would win that war. Even if they spend millions of dollars
changing the generators in an arms race, it'll cost Apple orders of magnitude
less to dissect their updates and write a program to flag the apps.

Don't forget that Apple has full access to the Flash IDE - they can generate
as many Flash iPhone apps as they want, and test out their signature analysis
programs until they fit - where as Adobe has absolutely no knowledge of what
Apple is doing to detect their generator.

Apple has every advantage here. Adobe could put their best guys on it and
Apple could defeat them with a single (smart) intern.

As for the long tail of code generators, which I wasn't talking about, I just
don't think Apple will bother. They know they can't win there, but they don't
need to. As soon as one of them gains any sort of popularity (like Unity),
they'll cut them down, but until then, a few apps breaking the rules means
nothing to them in the big picture.

------
jpcx01
More proof that Gruber is a tool.

