
Angry Birds on MacBook Air - davewiner
http://scripting.com/stories/2010/11/01/angryBirdsOnMacbookAir.html
======
qwzybug
Disclaimer: I am an iOS developer.

Dave might be right in broad strokes, but the post is very muddy on what it
would mean for "iOS apps" to run on the MacOS.

Fundamentally, it would be pretty straightforward for Apple to allow iOS apps
to be easier to port to the MacOS: bringing some of the UIKit APIs to desktop
Cocoa would make things very much easier. As it is, anything that touches
images or the user interface has essentially zero overlap between the desktop
and mobile APIs. Very frustrating.

However, the speculation about MacOS on the Air being a "compatibility layer"
is utterly ludicrous and unfounded. A quick peek inside
/System/Library/Frameworks will indicate that the build of 10.6.4 that runs on
the Air uses exactly the same set of frameworks that Apple has built up for
the MacOS as any other traditional computer they sell.

While the brief preview of Lion given the other week indicates that there will
be significant cross-pollenation between desktop and mobile OSes for Apple, in
both user interface and (one assumes) APIs, it's hard to exaggerate how off-
base this particular item of speculation is, in the right-here and right-now.

I would be unsurprised to see a third architecture added to "Universal" iOS
apps to allow them to be run on Lion desktops, but as any iOS developer can
tell you, even porting an app from the iPhone to the iPad is hardly a set-it-
and-forget-it affair. Winer snarks about the multitouch trackpad at the end of
this article, but he's just as wrong about it now as he was when he first said
it.

The iPhone is a fundamentally different user experience from the iPad is a
fundamentally different user experience from the MacBook Air, even if 10.6.5 +
Mac App Store includes all of UIKit.

~~~
Zev
_I would be unsurprised to see a third architecture added to "Universal" iOS
apps to allow them to be run on Lion desktops_

Disclaimer: I haven't read the post; I can't because the site isn't loading
for me. Instead, I'm replying to the OP.

I would be very surprised to see this. I contribute to Colloquy — An IRC
client available for Mac OS X and iOS (iPhone and iPad). Having three separate
UIs aside, the shared code between the projects doesn't go through the same
build steps. It _cant_ , because iOS doesn't allow third party dynamic
frameworks to be loaded; they have to use a static library instead.

In the case of Angry Birds, if you take the .ipa from iTunes and unzip it and
then run _otool -l_ on the binary, you can look at the frameworks it uses.

The iOS-specific frameworks it uses are: UIKit, OpenGLES, MediaPlayer and
GameKit. GameKit could likely be ported fairly easily. MediaPlayer with a bit
of work, could be mapped to QTKit. OpenGL to OpenGLES, I can't say; I don't
know anything about either. And UIKit? Mac OS X has to run on Mac Pro's and
iMac's as well. Which may or may not have a multitouch device attached. UIKit
would be a kludge with multitouch trackpads, and downright useless without one
all together.

~~~
qwzybug
All very good points, and I think we agree on the major bits. Reading over my
last post I think I might have been unclear on the main takeaway: desktop apps
are fundamentally different from mobile apps.

If Apple lets us write apps that run on both platforms, I would expect the
desktop versions to include substantially different resources and have fairly
divergent codebases: different nibs, different build processes (perhaps with
the disparate binaries packaged into one .app bundle), different interaction
metaphors etc.

 _UIKit would be a kludge with multitouch trackpads, and downright useless
without one all together._

This is largely true, but there's more to UIKit than touchesBegan:withEvent:.
In particular, UIKit's view controllers/navigation controllers/table views
could work quite well on OS X (and looking at iLife '09 and the preview of
full-screen apps in Lion, this seems quite likely). Further, more iPhone apps
use these classes than do advanced multitouch.

Again, this is not to say that writing one app that could conceivably run on
both platforms will be at all easy; I still think the OP is way off the mark
about that. But it's not unthinkable.

------
tjogin
No. No no no no. iOS was _created_ in the first place because a touch-oriented
direct-manipulation user interface _demands entirely different solutions and
paradigms_ than mouse/pointer-driven user interfaces do.

Apple is not going to lead any initiative in trying to pretend that these
fundamental differences in user experience don't exist. User experience is
something they tend to take seriously.

Apple may provide tools to make it easier for developers to port apps and
games between the platforms, but absolutely no way are they going to suggest
that developers should gloss over the differences in user experience offered
by OS X and iOS.

Having iOS apps run directly on OS X would be to do precisely that. Apps
wouldn't be optimized for neither touch/direct manipulation, nor mouse/pointer
interfaces.

User interface elements, widgets and paradigms would be general purpose,
rather than tailored specifically to the strengths and weaknesses of a
particular device.

Just look at the differences between made-for-iPad apps and made-for-iPhone
apps. The difference in UI can be astounding when you take the properties of
each device into account when designing the app.

OS X isn't just a _little bit_ different than iOS, the way iPad is "just" a
big iPod touch. It's _fundamentally_ different — which is why iOS exists at
all.

~~~
daviding
Doesn't the new Air have a large (multi) touch pad? That might allow for a
more transitional 'middle ground' to exist. Lion and it's feline ancestors
will get more touchy over time, plus what Dave W is hinting at is more of a
virtualization strategy rather than a sudden leap I think.

I too think that Apple cares deeply about UX, but you're probably discounting
the enormous amount of money/users that could be made if this evolution could
be made to fly?

~~~
joezydeco
I play Angry Birds by physically dragging the birds around the screen. How
exactly do I do that when the trackpad is somewhere different than the screen?

~~~
tjogin
Good point, though I think Angry Birds is one of the apps that would lend
itself better to being ported from iOS to OS X. But like you pointed out, it
would be quite different still.

Think about how different the official Twitter client would be for example.
Refreshing the feed by dragging the list of tweets down; something that feels
intuitive, _just right_ , on the iPhone and iOS; would seem weird and retarded
on OS X.

Or how about when you swipe over a Tweet (or any list-view item) to manipulate
it? Works great in a touch/direct manipulation interface. That would be
_incredibly_ poor UI design on OS X. Astoundingly bad. Buttons and widgets
would be oversized on OS X. Form factor and layout would be needlessly
limited. Etc, etc.

~~~
joezydeco
That's my point. Do we really expect to merge iOS and desktop apps someday?

We've created a new class of direct-manipulation apps on the iOS devices that
we just can't bring to the other machines without using a mouse...or turning
them into iPads.

~~~
davewiner
Yes, as a matter of fact, according to Steve Jobs,we do expect that. They
webcast his talk at the Back To The Mac announcement, anyone could have
watched it. What you're saying directly contradicts what he said.

~~~
tjogin
He said nothing like that, as I recall. Please provide a direct quote.

------
mikeklaas
It's like clockwork:

\- a scripting.com link get submitted to hackernews

\- the first 20 people get to read it

\- the site crashes, leaving everyone else with nothing but the comments.

Dave, have you considered upgrading to a 56k modem? :)

~~~
davewiner
I shouldn't go out after a discussion starts on YC. ;-)

Glad to see the smiley on your question cause it's a static site running on an
EC2 machine.

------
Gogmagog
Something that people might want to keep in mind... The "Emulator" that is
used to test iPhone and iPad isn't emulating the iOS hardware. It is
implemented with MacOS APIs. Essentially the iOS that you use on the synthetic
target is just the same graphics and system libraries that are compiled for
the Mac hardware instead of the ARM. That is why the emulator works so fast,
even on underpowered machines.

There is no porting for Apple, it is the same.

------
charlesdm
How do they do this?

Do they use an x86 build or do they use an arm emulator to run the software?

~~~
davewiner
Maybe in the first rev the IOS apps are emulated. I bet in the second one it's
the other way around. We've already started a transition. They haven't
announced it yet, because they want to ease us into it, but I'm sure this is
where they're going.

~~~
charlesdm
Would make sense. I wonder whether its feasible to emulate a 1ghz high end
game on a 2.4ghz dual core macbook though.

------
davewiner
A lot of the comments here don't take into account things Jobs said at the
Back To The Mac event. He said the oversize trackpad was there so the Mac
could run IOS-like apps. So it's too late to say you can't run them on
MacBooks. He said they could.

~~~
cosmicray
Conceivably you could use the new Magic Trackpad on the desktops (Mac Pro,
mini and iMac). What I think would be needed, is better visual feedback that
relates to where your multitouch actions as positioned. A single cursor is
fine for a mouse, but it seems limiting for touch gestures.

~~~
davewiner
Dude, he specifically said that's why he shipped the trackpad. It's one thing
if the reporters didn't accurately report the story, quite another when they
broadcast the press conference so we call can hear directly what he said.

