Brent Simmons:
I have a theory that I haven’t heard yet: Flash wasn’t included because it crashes so much.
Reading the comments, there are apparently lots of other good reasons.
By the way, the iPhone isn’t the first Apple product to be anthropomorphic. Apple often omits the article from “Macintosh” and “iPod,” and sometimes even “Finder.” (Apple’s style guide recommends “Macintosh computer,” “the Finder,” “iPod,” and “iPod digital music players.”)
Paul Kafasis:
The far larger group losing out when Apple absorbs a market is the end users of the OS. How can that be, when Apple has provided an Apple-branded solution for a given need? The problem arises from the fact that Apple is not married to any particular new market. As such, the provided solutions are seldom deep. They do the job for many, perhaps even most users, but as with all software, they’re seldom complete.
This is true enough, but I’m not sure that I like the suggested solution—that Apple should factor out more of its applications’ functionality into frameworks.
First, Apple seems to have its hands full working on the existing OS. There are buggy APIs that don’t work, even though we’ve crossed into x.x.10 territory. There are short-lived APIs that weren’t designed properly the first time. There are also potential APIs and plug-in interfaces that would give developers access to areas of the OS and Apple applications that are currently inaccessible without reverse-engineering and reliance on unreliable, private interfaces. I would much rather that Apple work on these things—because they are issues that only Apple can address—than on writing framework code that developers could write themselves.
Second, I question the usefulness of these potential additional frameworks. I think WebKit is a special case. Lots of applications need Web functionality, and it’s a ton of work to write a good Web engine. Thus, WebKit was a great idea. I don’t think other potential frameworks—even MailKit—would meet these criteria. (Fewer applications need mail functionality, and implementing POP, IMAP, and SMTP is much easier than handing HTTP, HTML, CSS, and JavaScript.)
Third, it’s not clear to me that such frameworks would help the ecosystem. In many cases, your application would want to add functionality that goes beyond what’s in the framework. It’s tough to write a framework that’s general enough to be used in unexpected ways. It might incorporate design decisions that limit its flexibility or have bugs that Apple didn’t encounter but that are on the critical path for what you need to do. If your application relies on a framework for its core functionality, you are at Apple’s mercy.
To build a really innovative application you may have to start from scratch, and then you’ll wish that the framework didn’t exist. If the framework provides 70% of what you need, you’re now spending 100% effort to get that extra 30% ahead of your competition. Because of the framework there are now lots of 70% applications that took a weekend to build, and some of which are free, so it’s harder to differentiate your product. In the next OS release, the framework will probably do more, so once again you’re in the position of competing with something free from Apple—only this time it’s a developer product rather than an end-user product. Even Omni decided it couldn’t do this, and newer versions of OmniWeb are based on WebKit.
Having an Apple framework is a good way to guarantee that there will be lots of applications that have many of the same strengths and weaknesses as the underlying Apple technology, but this may be more of a monoculture than the healthy ecosystem of “deep” solutions that Paul desires.
I don’t mean to say that having more frameworks would necessarily be bad, but I don’t have a strong feeling that it would be good, either. The rise of the OS is inevitable, and there are no simple solutions. If Apple had created a framework for dealing with iPods and the iTunes store, Audion might still be under development. On the other hand, if there were an AirPort Express framework, you wouldn’t need Airfoil to play music from Audion on your stereo.