Wednesday, October 01, 2008

Trials and Tribulations Developing for the iPhone

Just a bit over a year ago Apple released a revolutionary device, the iPhone, to great fanfare. At the time, there was no way to develop applications for it. Apple's answer to developers' demands that they be able to create new products or the iPhone? Make iPhone-optimized web sites, that should be all you need...

Well of course that WASN'T all we wanted, or needed. We wanted to be able to create first-class iPhone apps, with all of the "bells and whistles" of the built-in iPhone apps. After much developer gnashing of teeth, Apple recanted (or maybe it was always their plan), and announced an SDK for the iPhone. There was much rejoicing. Yes! Mac developers WOULD be able to create products or the iPhone and iPod touch!

As has been covered more and more on the Mac web though, Apple is a harsh mistress. Months after the release of the iPhone SDK, all developers are still bound by an NDA that prevents them from mentioning anything iPhone development related. Having problems with your code? You can't ask other developers for help. Don't understand something? Again, there is no sharing of information allowed. The only samples you get are what Apple provides. And, ridiculously enough, even if your app is rejected from the App Store... you aren't allowed to talk about it. I can't tell you how much this is stifling development, at least from my perspective.

I've been working on a mobile version of MacGourmet for way longer than I expected I'd be. Why? Because what I am trying to do either isn't possible, because of bugs in the SDK, or isn't because I'm doing things incorrectly. Do I have any sources to try and find out WHY things aren't working? Just one: Apple's already overworked, over-stressed, overburdened developers.

More than anything else, the NDA is holding up the development of MacGourmet: To Go. I've had to spend WAY too much time trying to figure out why my application just seems to crash randomly when trying certain things. I've already cut back the feature set, so that I can try and get SOMETHING shipped, but I'm still running into problems. It seems every time I step outside of the "box of simple" I get slapped back down by random crashes in the SDK code.

If we were allowed to discuss development freely, this wouldn't be a show-stopper. All it would usually take is a post to one of the developer lists, where someone could spot any SDK misunderstandings or problems in no time. Chances are, someone reading would have tried to do what you are doing, and figured out how it works. It's this collective, that serves the Mac community so well, that makes all Mac developers so productive. The wealth of sharing is amazing. You can always seem to find the answers to any development questions, or at least find information that helps lead you to your own solution. The least they could do is provide registered NDA developers a place where we can talk and exchange information freely, but they don't even give us that, all they do is keep us from talking.

Right now, Apple is preventing the free exchange of information regarding iPhone development from happening. And it's hurting the whole development community. I mean just look at my own app. It's not just a simple viewer of static information, a simple to do or shopping list app. It's an iPhone application that I ultimately want to be a handheld version of MacGourmet, not with all of the same bells and whistles, but with the basics still largely intact: recipes, wine notes, cooking notes and shopping lists. I'm currently having trouble producing this though. The NDA is largely responsible.

I realize that the SDK is new, and is still evolving. I've submitted potential bugs to Apple, in the hopes that they are fixed, or that I get information on what I'm doing wrong. This is a really slow way to develop though. Granted, for personal reasons, where I for years spent the bulk of my time working at the expense of personal life, I've now switched things around and am spending less time on work at the moment (an 8 hour day instead of working all the time), I've still been trying my damnedest to ship an iPhone product, while keeping up with MacGourmet support and development. A lot of time I just seem to be spinning my wheels, and scaling features back and finding less-optimal workaround ways of doing things, because the way I should be able to do things doesn't seem to work. Not having access to the Mac developer "collective" is what I see as one of the major causes (at least for me personally).

Apple really needs to lighten up, and drop the NDA. It's not serving anyone well, and it's stifling the platform.

[UPDATE: No sooner do I post this, then do we get word that APPLE IS DROPPING THE NDA for released versions! Yea! This makes perfect sense. I don't mind being bound by NDA for say, iPhone 2.2, which isn't out yet. But now we can discuss iPhone 2.1 as needed. Thank you Apple!]

Labels: