iPhone, Newton, and the Missing SDK

Or the future and the past...

So I have an iPhone. So I feel I should write not only about it, but also the Apple Newton, my pre-WWDC07 predicted four-step plan for iPhone development, the elusive iPhone SDK, and why both this and the previous sentence begin with the word ‘so’…

So I have an iPhone. So I feel I ought to start every sentence with ‘so’ after hearing so many people do this at WWDC07 — I think it is a California-ism — since the ownership of an iPhone now makes me feel somehow even closer to the west-coast of the US than the west-coast of Scotland.

So (sorry!) — what are my first impressions of iPhone? It is even better in reality than I was expecting, and my expectations were already high. Sliding my finger across the screen to unlock it I got the feeling that this device really is the start of something new, and something big, not just in terms of what they do, but how they will influence user interface design. This is a feeling I've experienced previously with two other Apple-badged products: once with the original Mac 128K, and again (sorry, Steve!) with the original Newton.

Yes, when the Newton came out in 1993 we were early adopters. Given that I naturally write in Helvetica 9pt, the handwriting recognition worked perfectly for me, and I was an enthusiastic user and developer — even winning a UK competition sponsored by Apple UK and Program Now magazine to write an application for the Newton. My application, Clouds, allowed the Newton user to draw mind-map-style charts on the screen using the stylus, and as a consequence of winning I ended up with a week of training at Apple in Newton Development, a new Mac, and a further Newton, which was rather nice.

With the Newton, Apple created a whole new OS, named Newton OS, which had a number of innovative features; and an advanced object-oriented programming language, named NewtonScript. Key benefits of the combination of Newton OS and NewtonScript were the memory efficiency they provided, particularly important as the original Newton only had 128K of memory; and the responsiveness that they enabled, again important for a mobile device.

But while there were many benefits of having an OS and language dedicated to a mobile device, there were drawbacks too, not least the fact that Apple was having to support two completely different operating systems: the Mac OS and Newton OS. Indeed, Steve justified canceling the Newton in 1998 saying, “This decision is consistent with our strategy to focus all of our software development resources on extending the Macintosh operating system. To realize our ambitious plans we must focus all of our efforts in one direction.” Which, you have to admit, they have done very successfully, to the extend that nine years after the cancelation of the Newton they can release iPhone running the same OS as their desktop and notebook Macs.

The Newton required developers to learn a new language and a new operating system, so the barrier to entry was quite high. With the iPhone running OS X, the barrier to existing Mac developers should be non-existent. Except for one tiny little detail: the lack of an official way of actually developing and running applications on the iPhone.

At WWDC07, during his keynote (starting at 01:13:30), Steve announced they had a ‘very sweet solution’ for iPhone developers: write Web 2.0 + AJAX applications. Not native applications. No Cocoa. No Objective-C. No SDK. Described as an ‘Innovative new way to create applications for a mobile device’ it didn’t go down terribly well with the developers hoping for an SDK to allow them to write native applications using Cocoa and Objective-C, and which would allow them to tap into the new features of the iPhone, such as MultiTouch. Indeed, Wil Shipley wrote, “If I wanted to program in a crappy language just so I could get more customers, I'd switch to Windows, not stinking JavaScript.”

When you remember that at the D5 Conference, Steve was discussing how cool the Google Maps application was on iPhone and said, “So when we show it to them, they’re just blown away by how good it is. And you can’t do that stuff in a browser.” Which just makes the ‘sweet solution’ seem even less sweet than it did already.

Now, I wasn’t surprised that there wasn’t an official SDK announced at WWDC07, but I was surprised at how badly the message for iPhone development was handled. At the earlier D Now conference Steve was asked about opening the iPhone to third-party applications and said, “This is a very important trade-off between security and openness. We want both. We've got good ideas, and sometime later this year, we can open it up to third-party apps, and keep security.” Yet at WWDC07, and subsequently, nothing has been mentioned beyond the ‘sweet solution’.

Much has already been said about the current lack of an iPhone SDK, such as these posts on Daring Fireball, Apple Matters, and Mobile Minute.

While Web 2.0 + AJAX applications do have a number of advantages, there are obvious disadvantages too: they can never be ‘first-class’ citizens on the iPhone, they’re forever relegated to a bookmark in Safari, rather than occupying a spot on the springboard when you turn the iPhone on; they’re stuck inside a browser window, reliant on CSS and JavaScript for their interface rather than native widgets; they’re unable to handle interaction in a custom manner, instead dependent on ‘faked’ mouse events; they’re network-dependent, so have to be optimized for speed, and can’t be used in flight-mode; and so on. As Steve said, “You can’t do that stuff in a browser.” I’m certainly not against the idea of Web 2.0 + AJAX applications — we already design, develop, and deliver lots of them, and they’re the perfect solution for many projects — but the lack of an official way of writing native applications for the iPhone is a big disappointment.

Encouraging Web 2.0 + AJAX development is definitely a wise route — the technologies are constantly improving and I’m continually being blown away by how sophisticated some widgets are: the Apple Design Award 2007 Winner BART Widget, for example, is a fantastic example of how innovative interfaces can be created using these technologies. There are also far more developers skilled in Web 2.0 + AJAX technologies than Cocoa + Objective C, so it opens up development to a much wider audience, which is good for the platform in general. But I still want that official SDK.

My prediction for iPhone development, pre-WWDC07 keynote, was that Apple would take a step-by-step approach. (None of this violates any NDA since there isn’t much to disclose anyway.) The first step would be web development: the Web 2.0 + AJAX ‘sweet solution’. This would obviously run within Safari, but I had hoped that there might be a nice way of bookmarking certain applications on the springboard: perhaps an oversized favicon.ico could be used as the icon. I had also hoped for extensions to the canvas object to support the new events made possible by multi-touch.

The second step would be widget development: developed in a similar fashion to widgets on Mac OS X, they would be developed using HTML/CSS/JavaScript, would live on the springboard, and would occupy the full screen when running, rather than being confined within Safari. They’d obviously need to be downloaded either over the web, or by being installed on iPhone through iTunes, opening up the possibility of using iTunes as a way of browsing for — and potentially purchasing — widgets.

The third step would also be widget-related but with the option of calling Objective-C code, while still keeping the interface as HTML and CSS. Both steps two and three would be well supported by Dashcode, an application that always struck me as having had so much more engineering effort put into it for the purpose it was being put to.

The fourth step would be native applications, written in Objective-C and Cocoa: able to leverage all the Cocoa frameworks that developers are used to, plus new ones for iPhone to handle MultiTouch and other new functionality. Once again, applications could be installed on iPhone through iTunes.

This step-by-step approach would provide opportunities to a wide range of developers, whether they’re happier with JavaScript or Objective-C (personally I like both!). It would also provide an incremental route to development which would hopefully see developers taking the time to think through their applications, and particularly the interface: one of my fears when it was originally announced that the iPhone would run Mac OS X would be that there would be sudden wave of applications hastily re-compiled in order to be the first on the platform, few of them recognizing the different requirements and limitations of such a mobile device.

More importantly, the step-by-step approach would also allow time for Apple to perfect an SDK. To design and ship a device as innovative as the iPhone is a big enough challenge; to simultaneously provide an SDK for developers to start working with would have delayed the launch of iPhone considerably, and could hamper future iPhone development as once third-party developers start to rely on the SDK it prevents Apple from making major changes to it.

But the lack of an official SDK isn’t stopping developers. Lots of effort has already been spent on working around the lack of an official SDK: the jailbreak procedure allows developers to install new applications on the iPhone; and a lot of detective work is going on to work out how to develop with the new and un-documented frameworks. Numerous hacks have sprung up to do everything from customize your ringtones to changing the look of the interface. So it would look like the lack of an official SDK isn’t holding back developers: the only issue for many is the lack of an officially-sanctioned way to install applications, and the threat of a future software update blowing away their modifications.

So, what do I want right now, and what do I expect? Not an official SDK just yet: while it would be lovely, it would be too soon, and too much to expect. A beta SDK would definitely be nice: something that developers could work with, even if all the documentation said ‘Description forthcoming’, and even if the applications launched with a warning to say they were beta and would probably stop working altogether with future system updates. A roadmap for future development options would definitely be nice: the knowledge that there will, one day, be an officially-sanctioned route to developing iPhone applications would be reassuring. But Apple is often notoriously secretive about roadmaps: after all, with a roadmap it is a bit harder to surprise us all with “One more thing…”

So, do I still miss the Newton? A bit. But I’m so glad that Apple did focus their efforts in one direction: without that focus we would not have the Mac OS X and iPhone that we do today.

Post your own comment here:











Note: be friendly! We reserve the right to moderate inappropriate, offensive, or wildly off-topic comments. Your email address is required, but won't be displayed. All comments are moderated, so don’t expect them to show up instantly.