November 2009I don't think Apple realizes how badly the App Store approval processis broken. Or rather, I don't think they realize how much it mattersthat it's broken.The way Apple runs the App Store has harmed their reputation withprogrammers more than anything else they've ever done. Their reputation with programmers used to be great.It used to be the most common complaint you heardabout Apple was that their fans admired them too uncritically.The App Store has changed that. Now a lot of programmershave started to see Apple as evil.How much of the goodwill Apple once had with programmers have theylost over the App Store? A third? Half? And that's just so far.The App Store is an ongoing karma leak. How did Apple get into this mess? Their fundamental problem isthat they don't understand software.They treat iPhone apps the way they treat the music they sell throughiTunes. Apple is the channel; they own the user; if you want toreach users, you do it on their terms. The record labels agreed,reluctantly. But this model doesn't work for software. It doesn'twork for an intermediary to own the user. The software businesslearned that in the early 1980s, when companies like VisiCorp showedthat although the words "software" and "publisher" fit together,the underlying concepts don't. Software isn't like music or books.It's too complicated for a third party to act as an intermediarybetween developer and user. And yet that's what Apple is tryingto be with the App Store: a software publisher. And a particularlyoverreaching one at that, with fussy tastes and a rigidly enforcedhouse style.If software publishing didn't work in 1980, it works even less nowthat software development has evolved from a small number of bigreleases to a constant stream of small ones. But Apple doesn'tunderstand that either. Their model of product development derivesfrom hardware. They work on something till they think it's finished,then they release it. You have to do that with hardware, but becausesoftware is so easy to change, its design can benefit from evolution.The standard way to develop applications now is to launch fast anditerate. Which means it's a disaster to have long, random delayseach time you release a new version.Apparently Apple's attitude is that developers should be more carefulwhen they submit a new version to the App Store. They would saythat. But powerful as they are, they're not powerful enough toturn back the evolution of technology. Programmers don't uselaunch-fast-and-iterate out of laziness. They use it because ityields the best results. By obstructing that process, Apple ismaking them do bad work, and programmers hate that as much as Applewould.How would Apple like it if when they discovered a serious bug inOS X, instead of releasing a software update immediately, they hadto submit their code to an intermediary who sat on it for a monthand then rejected it because it contained an icon they didn't like?By breaking software development, Apple gets the opposite of whatthey intended: the version of an app currently available in the AppStore tends to be an old and buggy one. One developer told me: As a result of their process, the App Store is full of half-baked applications. I make a new version almost every day that I release to beta users. The version on the App Store feels old and crappy. I'm sure that a lot of developers feel this way: One emotion is "I'm not really proud about what's in the App Store", and it's combined with the emotion "Really, it's Apple's fault."Another wrote: I believe that they think their approval process helps users by ensuring quality. In reality, bugs like ours get through all the time and then it can take 4-8 weeks to get that bug fix approved, leaving users to think that iPhone apps sometimes just don't work. Worse for Apple, these apps work just fine on other platforms that have immediate approval processes.Actually I suppose Apple has a third misconception: that all thecomplaints about App Store approvals are not a serious problem.They must hear developers complaining. But partners and suppliersare always complaining. It would be a bad sign if they weren't;it would mean you were being too easy on them. Meanwhile the iPhoneis selling better than ever. So why do they need to fix anything?They get away with maltreating developers, in the short term, becausethey make such great hardware. I just bought a new 27" iMac acouple days ago. It's fabulous. The screen's too shiny, and thedisk is surprisingly loud, but it's so beautiful that you can'tmake yourself care.So I bought it, but I bought it, for the first time, with misgivings.I felt the way I'd feel buying something made in a country with abad human rights record. That was new. In the past when I boughtthings from Apple it was an unalloyed pleasure. Oh boy! They makesuch great stuff. This time it felt like a Faustian bargain. Theymake such great stuff, but they're such assholes. Do I really wantto support this company? Should Apple care what people like me think? What difference doesit make if they alienate a small minority of their users?There are a couple reasons they should care. One is that theseusers are the people they want as employees. If your company seemsevil, the best programmers won't work for you. That hurt Microsofta lot starting in the 90s. Programmers started to feel sheepishabout working there. It seemed like selling out. When people fromMicrosoft were talking to other programmers and they mentioned wherethey worked, there were a lot of self-deprecating jokes about havinggone over to the dark side. But the real problem for Microsoftwasn't the embarrassment of the people they hired. It was thepeople they never got. And you know who got them? Google andApple. If Microsoft was the Empire, they were the Rebel Alliance.And it's largely because they got more of the best people thatGoogle and Apple are doing so much better than Microsoft today.Why are programmers so fussy about their employers' morals? Partlybecause they can afford to be. The best programmers can workwherever they want. They don't have to work for a company theyhave qualms about.But the other reason programmers are fussy, I think, is that evilbegets stupidity. An organization that wins by exercising powerstarts to lose the ability to win by doing better work. And it'snot fun for a smart person to work in a place where the best ideasaren't the ones that win. I think the reason Google embraced "Don'tbe evil" so eagerly was not so much to impress the outside worldas to inoculate themselves against arrogance.[1]That has worked for Google so far. They've become morebureaucratic, but otherwise they seem to have held true to theiroriginal principles. With Apple that seems less the case. When youlook at the famous 1984 ad now, it's easier to imagine Apple as thedictator on the screen than the woman with the hammer.[2]In fact, if you read the dictator's speech it sounds uncannily like aprophecy of the App Store. We have triumphed over the unprincipled dissemination of facts.We have created, for the first time in all history, a garden of pure ideology, where each worker may bloom secure from the pests of contradictory and confusing truths.The other reason Apple should care what programmers think of themis that when you sell a platform, developers make or break you. Ifanyone should know this, Apple should. VisiCalc made the Apple II.And programmers build applications for the platforms they use. Mostapplications—most startups, probably—grow out of personal projects.Apple itself did. Apple made microcomputers because that's whatSteve Wozniak wanted for himself. He couldn't have afforded aminicomputer. [3] Microsoft likewise started out making interpretersfor little microcomputers becauseBill Gates and Paul Allen were interested in using them. It's arare startup that doesn't build something the founders use.The main reason there are so many iPhone apps is that so many programmershave iPhones. They may know, because they read it in an article,that Blackberry has such and such market share. But in practiceit's as if RIM didn't exist. If they're going to build something,they want to be able to use it themselves, and that means buildingan iPhone app.So programmers continue to develop iPhone apps, even though Applecontinues to maltreat them. They're like someone stuck in an abusiverelationship. They're so attracted to the iPhone that they can'tleave. But they're looking for a way out. One wrote: While I did enjoy developing for the iPhone, the control they place on the App Store does not give me the drive to develop applications as I would like. In fact I don't intend to make any more iPhone applications unless absolutely necessary.[4]Can anything break this cycle? No device I've seen so far could.Palm and RIM haven't a hope. The only credible contender is Android.But Android is an orphan; Google doesn't really care about it, notthe way Apple cares about the iPhone. Apple cares about the iPhonethe way Google cares about search. *Is the future of handheld devices one locked down by Apple? It'sa worrying prospect. It would be a bummer to have another grimmonoculture like we had in the 1990s. In 1995, writing softwarefor end users was effectively identical with writing Windowsapplications. Our horror at that prospect was the single biggestthing that drove us to start building web apps.At least we know now what it would take to break Apple's lock.You'd have to get iPhones out of programmers' hands. If programmersused some other device for mobile web access, they'd start to developapps for that instead.How could you make a device programmers liked better than the iPhone?It's unlikely you could make something better designed. Appleleaves no room there. So this alternative device probably couldn'twin on general appeal. It would have to win by virtue of someappeal it had to programmers specifically.One way to appeal to programmers is with software. If youcould think of an application programmers had to have, but thatwould be impossible in the circumscribed world of the iPhone, you could presumably get them to switch.That would definitely happen if programmers started to use handheldsas development machines—if handhelds displaced laptops theway laptops displaced desktops. You need more control of a developmentmachine than Apple will let you have over an iPhone.Could anyone make a device that you'd carry around in your pocketlike a phone, and yet would also work as a development machine?It's hard to imagine what it would look like. But I've learnednever to say never about technology. A phone-sized device thatwould work as a development machine is no more miraculous by presentstandards than the iPhone itself would have seemed by the standardsof 1995.My current development machine is a MacBook Air, which I use withan external monitor and keyboard in my office, and by itself whentraveling. If there was a version half the size I'd prefer it.That still wouldn't be small enough to carry around everywhere likea phone, but we're within a factor of 4 or so. Surely that gap isbridgeable. In fact, let's make it anRFS. Wanted: Woman with hammer.Notes[1]When Google adopted "Don't be evil," they were still so smallthat no one would have expected them to be, yet.[2]The dictator in the 1984 ad isn't Microsoft, incidentally;it's IBM. IBM seemed a lot more frightening in those days, butthey were friendlier to developers than Apple is now.[3]He couldn't even afford a monitor. That's why the AppleI used a TV as a monitor.[4]Several people I talked to mentioned how much they liked theiPhone SDK. The problem is not Apple's products but their policies.Fortunately policies are software; Apple can change them instantlyif they want to. Handy that, isn't it?Thanks to Sam Altman, Trevor Blackwell, Ross Boucher, James Bracy, Gabor Cselle,Patrick Collison, Jason Freedman, John Gruber, Joe Hewitt, Jessica Livingston,Robert Morris, Teng Siong Ong, Nikhil Pandit, Savraj Singh, and Jared Tame for reading drafts of this.