For an Operating System / Window Manager Engineer, focus usually means the application in the foreground. The application with focus is receiving keyboard and mouse events. On some systems, only the application with focus can make sounds. Furthermore, the applications without focus may be running at a lower priority, thus receiving less compute time.
Modal / Full Screen UI
In the mobile space, this question of focus is rather straight forward. Displays are so small, that the window manager will display the application with focus on the entire screen. Although I think it's a bit of a misnomer, more and more people are refer to such as scheme as a modal UI. These modal, or full-screen, UIs have been getting a lot of news lately. Steve Jobs announced that full-screen apps are going to play a more serious role in Mac OS X Lion.
I was a little apprehensive with fear that he was going to dumb down my Mac desktop user experience. I gained more confidence in the idea when I thought about all of the [semi]-pro apps that I use on my Mac that already had full screen modes. I always figured that those apps were full screen to give creative professionals the maximum amount of real estate. Now, I actually think it has more to do with minimizing distraction and allowing for better mental focus.
Full Screen Equals Full Mental Focus
This point hit me late last night. I bought an iPad yesterday. I bought it primarily for leisure computing. I found that my MacBook Pro was constantly in the middle of 2-3 school/geek projects. I tend to just leave things open when I'm in the middle of them. I feel it encourages me to pick back up more easily. What it actually does is stress me out and distract me. I couldn't even enjoy a cup of coffee and read RSS feeds without wanting to touch up some OpenCL. My idea for the iPad was to get away from a desk and relax a little. I could ignore all of those open projects and relax for a few minutes.
That lasted about an hour last night before I found myself downloading class notes and sitting at the kitchen table with a beer for some late night studying. It was really effective too. When you're working in a modal UI, all you can do is what's in focus. And if you turn off status updates, you won't even be bothered by incoming emails, tweets, calendar notifications, etc. I was easily able to stay on task, only briefly popping over to another browser window to look things up.
Apple Might Be On To Something
I'm definitely going to dwell on this some more and make some personal observations about my usage, but I think Steve might be on to something. We've long known that multi-tasking hits a point of diminishing returns after two or three tasks. I personally struggle with the constant context switching. Having a modal UI might help me focus on the task at hand, whether it's studying, coding, or relaxing.
BTW, Google Reader Play is an absolute joy on the iPad. Too bad it doesn't use my feeds.
I read this earlier: Thoughts on Flash. It's basically Steve Job's stance on Flash and, in a sense, his justification of why Apple isn't going to be supported in Apple's embedded devices.
Steve Jobs is acting like a [brilliant] spoiled brat with the coolest toys on the block, and he's been acting that way for years. I hate closed software systems as much as the next guy, but I completely disagree with limiting developers. The engineer-months and capital investment required to make Flash run well and safely on an iPhone/iPad is absolutely nothing compare to the requirement for the thousands of Flash developers out there to port their apps to Objective C and OS X.
Exclusivity Has It's Advantages. Agreed.
He's just being selfish by demanding that things run super smooth on his devices. And you know what, that's his prerogative. They're his devices, and consumers should know coming into it that they're getting into a closed system. Luckily, the devices are more beautiful and popular than a homecoming queen, so developers are happily heading to their nearest Apple Store to buy a new Mac, join the for-pay Apple Developer plan so that they can get a key to sign their junk, and put up with the their App Store policies when submitting their apps into a system that can be harder to get into than a night club in South Beach wearing a pair of cutoff jean shorts and Crocs.
But We're More Open Than Them. Bollocks.
But there's no reason for him to be bad mouthing Adobe like this, especially with some of his weak arguments. Like his example of how Apple creates open standards for the web:
"Apple even creates open standards for the web. For example, Apple began with a small open source project and created WebKit, a complete open-source HTML5 rendering engine that is the heart of the Safari web browser used in all our products."
Kudos for Webkit back years ago, but Webkit is not an open standard...it's an open source project that supports open standards. Thankfully Google's got their hands on it and made it way faster. Just like Adobe's Tamarin is an opensource project that runs an open standard (ECMAScript 4), and Mozilla has used it for the basis of TraceMonkey. Sure Apple participates in plenty of W3C standards committees and more, but so does Adobe.
We're Thinking of You, Developers. Bollocks.
Then later he tries to talk about how Adobe's CS5 cross-platform feature will bar Flash developers from unlocking the full feature set of the iPhone when they try to build it for the iPhone. And I say if a developer needs those supposed spiffy new features, then he can port his code to Objective C and use Apple's Xcode. The other (likely) larger base of developers that don't need those features would likely be very happy to simply use CS5 to build their existing flash-based programs for the iPhone/iPad. But this really gets my goose. He's claiming that Adobe will be really slow to add support for these new cutting edge features of OS X. I agree that it might take some time...why? Because Apple won't document these new features until they come out in Xcode. Heck, there are all sorts of secret APIs that they don't release that the hacker community has found. They had an entire SDK out before Apple even allowed native development for iPhone. But Steve had this to say as his rationale for why Adobe might be slow to release support for new iPhone/iPad feature:
"And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5."
Sure Adobe just moved to Cocoa for CS5. Cocoa is their main API (largely GUI) for Mac OS X. This statement basically means that finally CS5 tools will look 100% like other Mac Apps. This act has absolutely nothing to do with Adobe providing access to OS X features for their CS5 cross-platform development tools. It just means they finally spent all the time to rewrite their apps to use Apple's Cocoa API. I completely support Adobe's decision for two reasons. Firstly, they've got a lot of freaking apps in CS5. It's an enormous suite. Secondly, their GUI framework allowed them to do a tremendous amount of specialization in their CS5 apps, that isn't as simple with Cocoa. If anyone here has ever used a pro app on a Mac, then you'll realize two things. The fonts are tiny and there are buttons, switches, and windows everywhere. Take Apple's Final Cut Pro. It looks absolutely nothing like a regular Mac app. Heck it looks radically different than iMovie even. Now Final Cut Pro may use Cocoa, but I speculate that it's heavily modified to go beyond Cocoa for its GUI.
If Steve really had the developers' best interests in mind, then he'd help Adobe get Flash10 running silky smooth on the iPad. You can make an argument that the iPhone isn't powerful enough, unless they start using a GHz class processor in it too. If he's worried about Flash looking crappy, then they should employ some sort of UI mechanism to let users know right away what is Flash and what isn't when a page is rendered. Perhaps they could include a selective Flash Blocking feature for Safari...of course that would piss off advertisers.
As much as it pains me to say it... There are a lot of Flash developers as well as significant investments out there. Flash has features and an install base that HTML5 won't be able to match for years to come. So if some hack developers want to write some sort of sorry farming game using Flash and then haphazardly get that app running as an OS X widget, an iGoogle Gadget, a Facebook App, an iPhone/Android/Blackberry/Pre app, a wordpress plugin, or any other piece of computing real estate that users waste their time on...then I say just let them. But if Steve wants to keep Flash off of his devices, then he can. If developers don't like it, then they can boycott. If users don't like it, then they can get an Android phone.
Don't Get Into a Pissing Match
I've got no complaints if he says it's for the users and the preservation of his platform. But don't claim that this is for developers and to champion open standards. I think the rhetoric in the blogosphere and in the media has really fueled this battle between Apple and Adobe. Apple is playing a ruthless game, and Adobe is doing the only thing that they can. But Apple shouldn't let itself be drawn out into a pissing match with Adobe over who's more open or who has more of the developer community's interests in mind.
Hey, I Use a Mac
This may be about money, marketshare, control, or ego. We won't know for some time. However, I think a perfectly legitimate rationale for this is that Apple is shunning Adobe because they think the Flash runtime is still garbage on mobile devices. It doesn't appear that Steve has any interest in making Flash 10 any better, and he certainly doesn't want anything "ugly" on his beautiful platforms. And as I mentioned earlier, this is his prerogative. I use a Macbook Pro for precisely that reason. The apps always run fast, have great user interfaces, and always work. If someone says they're an Apple Developer, then you can be guaranteed that they've been assimilated to the Cult of Apple/Jobs. Apple has a history of maintaining their backward compatibility for only a limited time and then forcing their developers to update to their new architectures, APIs, etc. It makes for great apps. Frankly I feel that developers should be doing this for the sake of their users anyway. But they don't...so Steve make them.