Hacker News .hnnew | past | comments | ask | show | jobs | submitlogin
Apple's Mistake (paulgraham.com)
723 points by EliAndrewC on Nov 19, 2009 | hide | past | favorite | 269 comments


A customer recently asked me to look into a program that used to run in 5 minutes but now took 1 to 4 hours. It's used by thousands of people all over the world all day long.

It iterated through an array doing 3 SQL SELECTs against non-indexed files for each element. There used to be about 50 elements in the array; now there were more than 5000. I rewrote the whole thing in one day to do a total of 4 SELECTs and run in 12 seconds.

But it took 6 days to get through QA (while the users continued to suffer). QA's biggest complaint? I indented 4 spaces instead of the (unpublished) standard of 5 spaces.

Of all the things I have to deal with, nothing pisses me off more. Software QA is becoming more and more like TSA security at the airport: illogical, and obviously so. Last year, flagrantly unacceptable code was promoted without question while its replacement was held up on a meaningless detail.

I got the feeling from the programmer's quotes in this essay that the same thing is happening at the app store.

We programmers are a funny lot. Make us struggle for business or technical reasons and we adapt beautifully. Make us struggle for something stupid and we just get pissed off and do something else. What a pity.


I find when this stuff happens with QA teams, it's almost always a case of protecting turf.

When no one is looking (the first, buggy, submission is made), they will do the minimum necessary and approve it, often quickly.

Then, when everything goes to hell, all eyes are on them. The developers submit a fix with the note "this needs to be approved ASAP to put out fires"... the QA person resents being told what to do, and suddenly feels compelled to justify his job by finding anything and everything that could possibly be considered 'wrong'. There is also the issue that things like indentation are more visibly 'wrong' than obscure bugs that only show up in production environments due to the way database replication is set up.

Now, I'm not saying all QA people are like this. I've worked with some downright awesome QA people before. But awesome QA people don't reject things for spite, and usually don't stay in QA long before moving up.


Not that the indentation complaints are valid, but the fix should definitely go through QA while the users continue to suffer. While I'm sure it works on the developer machine, it is much better to have a program that takes a long time and works right than for it to give incorrect results to users, or make a different part of the application stop working.

If the feature was really critical and important, QA should find a way to expedite the verification, but it should never be skipped in order to ship the fix faster.


I've seen lots of software that's gone through QA but didn't work. Ever use Microsoft Windows?

QA is important, but determining how many spaces a line of code is indented is not QA. That is a code review, which is important, but not critical. There should be automated acceptance tests, so that new releases can be shipped immediately. (It's also worth noting that stuff like indenting, naming conventions, etc. can be automatically checked at checkin time. See Perl::Critic, for example.)

If there is some feature or corner case that the users test but isn't in the acceptance test suite... well... yeah, the software is going to be unreliable. So don't do that. Write a test.

(I worked somewhere with a QA department once. They didn't like it when the programmers wrote tests, because they felt their job would be threatened. It was true, so we were asked to only write unit tests; no "integration" or "acceptance" tests. I quit a few weeks later.)


I did QA for years (8+) and would love to have developers write a test. Specifically NOT unit tests, but the harder more interesting one. I think it happened once. Or, was it twice?


You mean like functional tests, end-to-end integration tests, and view tests?

No developer should limit themselves to unit tests.


Bullshit, its attitudes like this that lead to crap software. Developers should work with QA to find the bugs, they're not "QA's bugs" they're OUR Bugs, we're a team, right? When you change a component you should also be able to write a simple manual test to prove the functionality works you should also perform this test yourself.

As an optional if the QA people are good then describe what else might be effected by the code (if you edited a generic component). Good QA people will run your test, work out their own variations and also check other areas.


I'm really unsure of where your attitude here is coming from.

At ThoughtWorks we work with QAs constantly. It's a great relationship. There's no such thing as "QA's bugs".


Like all "lost job" situations, it is a myth. If you write good Integration tests, QA's job should be to find gaps in them, test the really weird edge cases only a human can come up with and perhaps provide usability feedback.

Any decision made that promotes inefficiencies to "save jobs" puts the entire company in danger.


And indeed, that company was absorbed, the management fired, and the application rewritten.


QA is basically your testing framework. It's there to do all the tests to make sure the software actually does what you say it does.

No developer is good at testing their own code because deep down no developer wants to break the code they just lovingly crafted.


As amusing as that statement is (and I think you meant it jokingly), I definitely have to disagree. There's just too many different developer styles to say No developer. Personally I like to ship quality code and am pretty anal about it's quality as well as it's interface, so you can bet I refactor my code a lot... and I mean a lot.

(In fact I just refactored this comment to fix a spelling mistake... but I published it without writing any automated tests, or running it by QA... somehow I don't think many people noticed)


No, QA is your double-check, you shouldn't rely on them as we're all just humans and we all can make mistakes. You should still test the code yourself and think of ways to break it. Although I will agree that developers are blind to some bugs (which is why you need the double-check).


I've always been treated well by QA. I'm sure there are problem QA departments out there but I doubt they are the rule. It's amazing to me that the parent got down moded for supporting the task of QA.


QA is awesome.

I think people are responding to the suggestion that in general developers will subconsciously protect their ego by willfully ignoring flaws in their own software. That is just tremendously offensive to any real hacker, and if it were true the world of software would be a pale shadow of what it is today.


I don't think it's a slam on developers - I've hit and played outfield, and I know what each side feels like. It's not that developers wants to ship bad software, but haven't you ever avoided running a test because you're afraid of opening a can of worms? QA wants to open that can. There's a perverse glee in seeing all the worms get out.

When a new bug is found (a good one, not BS indentation) then QA has a justifiable joy in finding it before it got to the customer. The developer may also be devoted to quality, but doesn't your heart sink a little when you see a new bug? Overall you both want to ship good product, but your minute-to-minute motivations are just different.


That's only true some times. Unless the data is mission critical, or you introduce a really major bug, the company in question could be losing customer's and / or significant revenue due to the slow down of the application.

I'm not saying you're wrong, I'm just saying there's no hard rule on this. I've had to push code many many times without any outside testing and while occasionally it's been detrimental (but fixed quick, because I didn't have to go through QA), the large majority of times has been beneficial.

A large and formal QA process can kill a product / project just a quickly as cowboy code.


This might be a controversial opinion, but does anyone else think that if the QA team is reading your source code then you are doing QA wrong?

Or do you really mean "held up by code review" when you say "get through QA"?


No, at some companies people really do have the QA department ensure "code quality". After all, it's Quality Assurance, so they must know about code Quality!


The best QA teams have developers and security people in them exactly for this reason. Quality is not what the users see - it's a correct implementation of what the specs say, built upon a series of basic assumptions that apply to all software they ship.

Treating QA as a step after development is a mistake that causes endless suffering to users.


It seems to me like treating QA as developers who are not allowed to write code, but can criticize it, would tend to result in a situation exactly like the one described.

Indeed QA is not a step after development, but I'd argue that encouraging developers to become better at QA themselves is a more effective approach than having non-coders inspecting sources after the fact.


We programmers are a funny lot. Make us struggle for business or technical reasons and we adapt beautifully. Make us struggle for something stupid and we just get pissed off and do something else.

This is the best YC quote of all time. Thx, edwin!


Five spaces?! Ludicrous.


You indented with spaces instead of tabs!? Just kidding of course, but the QA team might have been on the other side of that holy war. I'm going to have to start using your TSA parallel though... it's so painfully true.


The value of QA is a very delicate balance:

Value - stuff should work after it's been through them

Costs that I've seen - more stuff doesn't get done/fixed because of the delay time associated with QA - things don't get scheduled because of lack of QA bandwidth - additional specifications required in order to go through QA - programmers / PMs worry less about catching bugs because they feel it'll come back from QA

When is it better to QA something rather than just measure when it's broken? Everything we do goes through QA but I'm sure most of it is a net loss.

Anyone have a good way of knowing what to QA and what to simply monitor?


Agreed. The last company I worked at we had some similar idiocy.

We had a backend process that connected out to a network and did some things. However, the network it connected to changed their protocol, so our backend process was broken - didn't do anything - completely non functional.

We created a fix, but had to wait for it to go through QA for ages. What's the worst that could happen? It doesn't do anything like the current version? It wasn't even a massive update. Maddening.


The worst? Data Loss, or corruption, which is worse than "not working".

Likewise, more likely it could just not work well, be buggy and require several updates to get it right, burning out your team's (or your company's) image with the customer. Before you deployed your fix, it's whoever changed the protocol at fault. After that, it's you that can't fix it.

Again, not justifing it taking ages, just saying there's never an excuse to skip QA.


There wasn't any data. It did X with the external network.

The worst case was that it maxes out the connection and burns through bandwidth. But that's something that can be monitored.

The customer would have rather had something working with the network, than something broken with the network.

In that particular circumstance, there's always an excuse to skip QA. IMHO.


there's always an excuse to skip QA. IMHO.

No, there isn't!


The worst? Data Loss, or corruption, which is worse than "not working".

Thats a good point (even though in this case it turns out not to be true).

Seems like the right answer is to back out the change.


What kind of insane person indents at 5 spaces. I get 2, 4, 8, but 5 is beyond me.


Part of Paul's reasoning depends on Apps being central to the iPhone experience the same way software is central to the desktop experience. I'm not totally sure this is the case. While apps are certainly a major component to the iPhone, are they really the major factor in end-user adoption? With the exception of games, how many killer iPhone apps are there that don't already ship with the phone? The phone shipped for an entire year without an App Store at all. I even read something not that long ago that said the majority of apps sit unused on people's phones after they get them.

Now, this doesn't mean that developers won't want a developer friendly phone, or that Apple is hurting their reputation with developers. I'm certain it has been frustrating to deal with the whole process. However, if 3rd party software isn't essential for the iPhone as a platform, then developer satisfaction moves down a bit in terms of importance in Apple's eyes.

Now, it's clear that games are major for the app store. Games are also a special class of software application that benefits disproportionately from having access to the hardware at a low level. They also have properties more similar to music and movies (incidentally, things the iTunes store is good at selling). Except for the simplest games, they require a lot of up-front design work and investment. It's rare that a released game goes through a ton of rapid iterations to "get it right". Games may still have bugs after release, but in general the functionality they are going to have is there on day one. They also ship with the final sound effects, music, artwork, etc... Games are also probably very unlikely to "duplicate existing functinoality" or any of the other cases where "normal" apps hit barriers. Perhaps Apple has (intentionally or unintentionally) created an environment optimized for game approval?

I'm certainly not defending the app store process, but I just wonder if the software development community has a disproportionate view of its importance to the iPhone as a whole.


There was a story on here (or somewhere) a while back about how 70% of iPhone apps go unused after the first month of purchasing. Couldn't agree more. AFAICT there is no killer 3rd party app for the iPhone. I'd posit that 95% of the iPhone's awesomeness is wrapped up in the following four (OEM) components: 1) Browser, 2) Maps, 3) E-mail / SMS, 4) Visual voicemail. Everything else, including games, is just fluff for most users. Relative to those four, I think the app store is a relatively small driver of adoption. I don't think a lot of people are that wedded to it, and I don't think it makes Apple a particularly large amount of money either. Which would explain why they continue to neglect it in spite of the vociferous scorn of a few programmers and pundits.


I too noticed the similarity to the console game development. Usually console game developers have to go through lengthy approval process of the platform provider. Still developers accept that (although grudgingly), since once approved and the released, that will be the end of the process; no more bug fixes; the team dissolves and everybody starts working on the next project. (PC games are different, and certainly network games are continuous development, but console games have this feeling of "done is done").

Part of it may be a byproduct of the way the console games distributed on ROMs or disks. That may change, for consoles nowadays have network connection and can get updates anytime. There's another part, however, that some type of games fits this "done is done" philosophy. Like novels or movies, which you don't expect them to be improved over time.

Well, I don't defend the app store process either, and I believe majority of software should be developed in the iterative process. It's just interesting that games may be a marginal area that has some peculiar properties.


Here's my guess about Apple's thinking. Note that I don't own an iPhone or iTouch. So I don't have any experience with the App Store or submitting applications to it, and can't say that it is or is not working this way but....

Apple wants iPhone apps to "just work" They don't want a plethora of buggy, half-baked, inconsistent apps in their store, because this would diminish the brand. It would be like a typical Linux distribution where half the apps implement their own peculiar UI conventions, crash often, or just don't work at all.

So it is like developing a game. You get one release, one chance, to get it right. It needs to work. Maybe a lot of app developers don't get this. There are published standards about conventions, icons, behavior, etc. The app is expected to be FINISHED and WORKING before you submit it to the store. Don't count on deploying 27 follow up patches and updates to customers -- imagine the chaos if every iPhone app needed updates multiple times. Users (most of whom are not hackers) would, after a while, just give up and abandon the platform.

So, when an app is submitted, it is reviewed, and if it's found to be buggy, or it doesn't work, or it works in an unconventional way, then they don't want it. And they're not in a particular hurry to waste more time on you when you didn't follow the instructions the first time.

I don't know, I'm just speculating. But this seems plausible to me.


I agree. I've recently posted a comment about this in another App Store thread here on HN.

I think this is a good "oh yeah, this is why we do it" argument, but is probably more of a by-product of the review process and less of Apple's original incentive.

A lot of the technical decisions that are made are motivated by business and profit. Not to say that this is a negative thing - Apple is a corporation after all. There are plenty of things I've seen done that are dumb as hell at my employer (at a technical level) but are motivated by external reasons that seem implausible or illogical because the guy writing code is too far removed from the information and the decision.


good theory ams6110, and well explained.

however, speaking as a guy who has went through the process for 8+ apps so far, that's not the pain point.

It's more about repeatedly encountering dumbass reasons for rejections, and dumbass long delays to get feedback on things that should take about 1 minute, not 2-4 weeks to get feedback on. It's about getting rejected for 1 thing, and then they don't bother to finish reviewing the app and discover the other 2 things that they know they would reject it on during the next submission, so you don't find those out until 2-4 weeks later, and so on, ad nauseum. It's about rejecting for inane reasons (that they can "fix", if they wanted to, and had a brain, by running a small piece of software on, shotgun-style) like 'this config value over here doesn't match this value over there, so please make those the same', or even worse, vague mysteriously-worded rejections, or rejections that contain explicit instructions for "fixing" the issue and then you follow them, resubmit and they reject again.

Dumbasses. I keep coming back to that word over and over again when dealing with their review process/people. We're talking about a company with supposedly billions of dollars in cash in the bank and until a few months ago or so reportedly had what 50 full-time reviewers on staff? (Do the math on what it would cost to even triple that staff and you'll see it's a tiny drop in the bucket compared to the profits that keep rolling in.)

Device? Love it.

OS? Love it.

Design sense? Love it.

App Store submission/review process? Dumbasses.


Thank you, I just got an iPhone and I have found zero apps worth downloading. Take this 35 list of great apps http://www.techcrunch.com/2009/08/15/the-35-best-iphone-apps... and find something useful or fun.


Gosh, I had no idea little quality software was on offer until now. I can only see one or two useful apps in there.



You're sort of right, but that's true for all other platforms as well, so it doesn't really tell us anything about the state of app use on the iPhone platform.

The OS bundled ones are the ones people use the most. Across the board.

If I had to guess, I'd say third party apps are just as often or more used on iPhone than on, say, Windows and Mac OS X. Simply because, on iPhone, a lot of web apps out there are used via a special-purpose iPhone app rather than the web interface.


I don't agree. On the desktop there are 'killer apps' like Photoshop, Excel, Quicken, Final Cut, etc.

I don't think there are any killer mobile apps yet. Maybe for some it's FourSquare or FB, but I can't think of one app I'd miss that's not built in.


We probably have a different view on what is a killer app. From my perspective: Windows - Outlook Express, IE. OS X - Mail, Safari. I can't recall the last time I fired up "Photoshop, Excel, Quicken, Final Cut" and I bet 90% of randomly selected users couldn't either.


"Killer app" usually means the app that motivates you to switch platforms. For PS3 or Xbox 360, it's the game that made you want to buy the console. For Windows in the '90s, you needed MS Office to get your work done, so you bought a PC. All other things being equal -- i.e. assuming the system has a web browser and the other essential software has cross-platform equivalents -- the killer app is what kills off rival platforms.

When I hear someone say "I wish I had an iPhone right now", it's usually because they're either (i) lost, or looking for something, and want access to Google Maps, or (ii) in the throes of gadget envy. The App Store addresses (ii), but not with any single app -- it's just the idea that there are thousands of fun toys that only iPhone users get to play with.

So there are a couple of killer features, but nothing that can't be replicated on other phones. Not necessarily as well, but that's not the point: without exclusivity, the iPhone will not get the same kind of dominance Windows has.


Maybe this theoretical question.

If you polled a random user of, what are the chances you would find an app that they will get very pissed off at it's disappearance?

What are the chances they will actually skip platforms?

On Windows or OSX, I think the answer is high. On iphone, maybe not.


As reliance on mobile devices and their capabilities increase, this could become less of an issue.

It is still a luxury for most people - "oh cool look at this app," but it still comes down to those that can afford an iPhone. I can imagine there are many family squabbles involving parents that bought their kid an iPhone that racked up an App Store bill the parents didn't originally intend.

iPhone is not a business phone overall - and therefore doesn't have "critical apps".


The point I was replying to was that "... third party apps are just as often or more used on iPhone than on, say, Windows and Mac OS X".

I really doubt this is true given the lack of any killer mobile apps. I don't personally consider any of desktop apps in the list I gave 'killer', but fairly sure they've sold lots of computers.


I think you may be right, but I have a couple misgivings.

The year that iPhone existed without the App Store, no smartphone competitors came close to replicating it's core functionality and user experience. I don't think that's quite true anymore, and so I think that the App Store is one of the iPhone's key advantages. Specifically, the iPhone didn't need the App Store to differentiate itself from RIM and WinMo in 2007, but I think it absolutely needs the App Store to differentiate itself from the Pre and Android in 2009.

I don't think there is one killer 3rd-party app on the phone that everyone needs to have, but there could very well be many third party apps that smaller niches need to have. For me personally, MLB At-Bat (live streaming of baseball games) and the Kindle reader are actually the two biggest factors keeping me from switching to Droid. Those applications could easily be ported to Android, but haven't been yet, and in both cases a third party holds the distribution rights for the content so it's not like me or another hacker could replicate those apps easily.


> While apps are certainly a major component to the iPhone, are they really the major factor in end-user adoption?

All the ads I've seen lately for the iPhone are of the "there's an app for that" variety. So Apple themselves seem to think that the apps are a critical factor.

That being said, the iPhone sold very well before there were any apps at all.


They're a good gimmick. But at the end of the day, half of the apps you can find equivalent web versions that run just as well in the browser.

I agree with others - the app store is not that important. It's a fun thing. I'm not convinced it'll even be around/relevant in 5 years.


I know lots of people who bought in iPhone or or iPod touch because it could run some unique app. It was a different app in each case and in each case it was an app I personally saw no use for, but for them it was a killer app.

Any app that makes someone get an iPhone instead of something else is a "killer app" as far as Apple is concerned, even if it only sold a total of 27 copies and lost the developer a lot of money. So even if the iPhone doesn't have any one killer app, the sheer diversity of apps means there is probably a killer app out there for most people, and that is vital for Apple.


It may not have started out as central to the experience, but I think that it's starting to quickly become just that and Apple knows this or at least they want it to be. So far all the recent iPhone commercials I've seen only focus on the thousands of apps you can get for the iphone - not the iphone's "awesome" feature set. I was looking at a friend's iphone the other day and I saw page after page of 3rd party applications. My wife wanted an iPod Touch because she saw some applications she wanted. Another person I know bought an iPod Touch just so they can run a bird identification program. I don't think these are unusual cases. What's funny is that in the beginning, Apple didn't even want to provide an API for native applications. They wanted all developers to use the Web API. When developers balked at that idea Apple reluctantly laid out plans for native applications.


What's funny is that in the beginning, Apple didn't even want to provide an API for native applications. They wanted all developers to use the Web API. When developers balked at that idea Apple reluctantly laid out plans for native applications.

I wouldn't believe that for a minute. The App Store would have been part of the iPhone product plan from day 1. It's too big, too complex, too strategic, and (yes) too well-executed to be a panicked response to developers' demands.

That's how Apple under Jobs has always done things: major features are not "supported" or "planned" or "offered" or "part of the company's philosophy"... at least, not until they appear out of nowhere one day.


I'm not so sure about that. From an interview with Steve Jobs in the NY Times 1 Nov 2007:

“I don’t want people to think of this as a computer,” he said. “I think of it as reinventing the phone.”

"We define everything that is on the phone,” he said. “You don’t want your phone to be like a PC. The last thing you want is to have loaded three apps on your phone and then you go to make a call and it doesn’t work anymore. These are more like iPods than they are like computers.”

The iPhone, he insisted, would not look like the rest of the wireless industry.

“These are devices that need to work, and you can’t do that if you load any software on them,” he said. “That doesn’t mean there’s not going to be software to buy that you can load on them coming from us. It doesn’t mean we have to write it all, but it means it has to be more of a controlled environment.”


Arguing that an idea doesn't make sense and then doing just that a few months later is Steve Jobs' modus operandi.


From an interview with Steve Jobs in the NY Times 1 Nov 2007

But the App Store was announced to the public only seven months after that, in June of 2008.

If they did all that work in seven months, my resume will be on someone's desk at Apple by Monday. Seriously. I don't want to compete with any large companies that can move that fast. They win.

No, the only reasonable conclusion is that you can't take Jobs at his word when he appears to rule something out.


Then again Apple already had the libraries for native app development because they were developing apps themselves. They already had iTunes. And you know what? The same people that approve iTunes music submissions also approve App Store submissions. Most of the pieces were in place - they just had to put them together. 7 months doesn't seem too long for a version 1 app store.

Edit: And the question isn't really were they going to have an app store or not - they very well could have been thinking along those lines but reserving it only for software they themselves were going to create or with select partners - the question is whether they were going to open it up to general developers which I think they did not want to do.


I think you miss the point.

Developer relations are central to Apple as a whole. Apples needs iPhone developers, desktop developers, web developers and developers for whatever they do after the iPhone. If Apple creates hostile feelings in the developer community with its App Store behavior, Apple is going to have ongoing problems regardless of whether it needs third party developers at the moment.


Not really :/ They need people developing webapps. To be honest, I think the appstore is just a stopgap until webapps become mature enough to take over (And wifi is prevalent enough). I wouldn't put too much effort into the appstore, and I don't really blame Apple for being half hearted about it. It's certainly not the future.


Talk about it. I just got a rejection today for a major bugfix on my last update. The only change in the update is to use utf-8 encoding---one tiny change on one line of code. After 2 weeks, they tell me they can't approve the update because I'm using undocumented APIs in a couple places. Sure, OK, looks like I was using some methods that went from deprecated to undocumented... but that's exactly what's in the store right now... ugh. Meanwhile, users are, rightfully, pissed-off.

I'd say about 50% of the time my submissions get rejected, and always for a stupid reason like this; this is one of the better ones, actually. Will I stop developing? Probably not, because it's good money. But am I seriously considering moving to Android? You bet.


I had similar one line fix...

I have a simple "free" app in the iPhone App Store. It lets users browse "available" Web domains. One feature is a BUY button that forwards them to Godaddy.com, if they want to buy the domain.

I don't make any money from Godaddy.

The app has been approved for a while, but I wanted to patch one little bug, so I submitted a patch.

... And waited two weeks. Apple's testers found a bug that was in the original approved app, and asked me to re-submit.

... And I waited three weeks. This is classic: Apple rejects my app again because they want to test the domain "buying" feature on Godaddy.

It's a website! Not even my app! Not even a new feature.

Please kill me.


What they really want is to figure out if there is a way for them to make money off of it. Even if you personally are not getting kickbacks from godaddy, there is a lot of money in selling domains. There is got to be, somebody has to pay for those awful superball ads.


Same thing here. We just got an update rejected for a line of code that calls an undocumented API within a function that was no where called in the program, dead code and they rejected the update that had an important bug fix that we emailed them about for an expedited review.

The expedited review request was accepted but in the end took 14 days to come back and got rejected for a piece of code that was never ran and has been there since day 1.

Talk about frustration, hell yeah.

But as everyone does, after getting over the anger and back to reality and business sense, what else CAN I do but only to resubmit since there lies a never seen before first of it kinds, an easy software distribution and payment system that many other platforms did not provide to small independent developers a year ago.

It's not about just supporting one SINGLE platform, that has never been the case. Just like making web apps run nicely in IE, Safari, Firefox, etc or even Windows, MacOS, Linux. As a developer, what matter is that I support the platform that has massive adoption/users. I will not drop iPhone and go Android, or any other platform. The only decision I will make is if there's enough users on the platform that I do care about to invest and develop for that platform. One day Android might be there and I see the possibility of developing for both Android and the iPhone.


Does Apple examine your source code?! I thought iPhone devs kept the source to themselves.


No, just the symbol table in the binaries. You can easily do it yourself with the 'nm' command. It seems that they are using a tool that matches the 'nm' output with a list of private APIs since about a month or so, meaning that a lot of updates suddenly get rejected like this. What really annoys me as a developer though, is that they should be able to automate this check and give feedback instantly. (It's not like they will give feedback on more than one 'problem' anyway.) Instead you'll still have to sit out the 2 week waiting period.


Seriously if they are so hung up on undocumented API calls, they should just implement that check as part of the binary upload process. Run the binary through an automated flagging system. This will not only benefit developers but also cut their review time plus reduce the number of update submission indirectly.


This lack seems a symptom of what pg is describing - they are no longer getting the best and brightest programmers around.


Or simply give you the list so you can check your binaries yourself! Of course the list might change frequently but it would save everyone time and grief.


They document what you can do. If you are stepping outside those boundaries, why do you blame Apple for your grief and wasted time? You agreed not to do that when signing up in the first place.


I think it's worth pointing out that even Apple's own developers don't get the luxury of being able to push out bug fixes whenever they want. Point releases of the iPhone OS are often months apart, so good testing is not optional for them.


Apple employees have the advantage of being paid by Apple to work that way.


My vote for a truly free hand-held platform is the n900[1].

It's beautiful, clean and comes with with Debian based distro, Maemo.

My opinions about apple were never positive, probably because I'm only 25 and did not program in the 80's. I've only saw apple as a manufacturer of shiny, well designed rich boy toys, but that is probably because I live in Brazil, where only rich people have it and they think they are 'computer people' because of it.

I was always more influenced by the open source community, and apple's record is far from shiny on that aspect.

My 2 cents.

[1]http://en.wikipedia.org/wiki/Nokia_N900


I've got this baby on preorder, can't wait to see if Maemo lives up to the hype.

Personally I've never been an iPhone fan either purely because you can get phones with far, far better technology for the same price. iPhone wins hands down in UI right now (I still hate touchscreen-only phones though), but that really won't be an issue for long with Nokia/Samsung/SE/HTC working double time to improve their OSes.


I don't think the claim saying that "Apple doesn't understand software" is correct.

Apple do understand software. You cannot release Mac OS X, iLife and other jewels without understanding software. Also Mac developers jumping off the iPhone bandwagon are not jumping off the Mac plateform.

For the iPhone, Apple tried a different model that nobody really tried before.

They indeed have a broken store but the previous models on other platforms never worked. The most successful one before was for the PalmOS and it wasn't over the air.

However Apple always been an arrogant company. With their customers, their providers and their developers.

The climax of this arrogance has been reached with the iPhone eco system (certainly helped by the arrogance of the mobile phone operators).

And for many it is not sustainable.

But anyways, who really cares?

Apple can open the doors of the store overnight. It wouldn’t have been the first time they do one thing making you beleive it was the only way and then suddenly change in the opposite direction.

That’s the strength of Apple: they can change. Not only they can change but they usually know when, with what, for who and at which price.

I never realised the arrogance was a trade mark of this process though. Note: I don't mean being evil by being arrogant.


> I don't think the claim saying that "Apple doesn't understand software" is correct.

I think he just left out a word: marketing. They know how to build it, for sure. Paul's point is that they're marketing it like it is music.


My biggest problem is that it's a half-assed review process. Neither is it an open platform nor is it a relatively clear and thorough review process like you get on the gaming device platforms (Microsoft, Nintendo, and Sony).

I made three applications (only one that was popular - WiFinder) for the AppStore. Every time I interacted with reviewers, either by e-mail or phone, I got the feeling they had no idea what they had signed up for, and had not thought out beforehand how to deliver on the promise of only having quality applications in the AppStore. Which is a shame because it's an old problem.


Though I can't marshall any evidence to support this claim, it was specifically not my impression that Apple was a company pro developers loved working with before the iPhone.


Fully agree. I recall in particular reading John Carmack a few years back talking about how he was glad Apple wasn't as dominant as Microsoft, because they were far harder to work with.

I wish I could remember the quote well enough to search accurately for it.



I read that too, but that's way too recent. What I recall is maybe 3 or 6 years ago.


I think the "can't marshall any evidence to support this claim" is pretty critical here, because the vast majority of developers who actually write software for the Mac have loved it since OS X came out. They've loved Cocoa and they loved that the IDE and development tools were made free.

And while there was a dead period due to the technically deficient underpinnings of the late Classic MacOS, before that, the Inside Macintosh days, I hear folks loved programming Apple too.

After having been deeply involved in the Mac dev community for the last 10 years, the implicit claim that Apple is a company pro developers do not love working with sounds, frankly, a little bizarre.


All available evidence suggests that OSX developers love the technology. Fully agree with that.


I make Mac apps for a living and have, over a few years built up nice relationships with Apple. In spite of only being a small, not US-based, company (11 people now, but only 5 when we won our first Apple Design Award), it was never hard for us to get noticed by Apple, or to get in touch with the people at Apple we needed to talk to at any given point.

Our first app was built using 'unsanctioned' technology, PyObjC (before PyObjC shipped with 10.5); the app would have never seen the light of day on the iPhone, but then again, we would never have built it in PyObjC for the iPhone to begin with. Everyone we've ever met at Apple has been supportive from day one, and we owe a lot to many of those people.

We have not shipped any iPhone apps, so I can't say how I'd like that, but as a Mac app developer I love working with Apple.


You've shipped PyObjC-based apps for the Mac? We should talk. :)


Drop me a line anytime :) — my first name at madebysofa dot com


In high school, I thought that the CodeWarrior IDE (which was, as far as I knew, the dominant development environment) was absolutely terrible. I'm not sure how good my judgment at that time was.

That said, with OS X they really became a lot more developer friendly just because they adopted a UNIX base. At this point, I'd say they're the default platform for ruby/web development. Look at all the rails job postings for small startups promising 30" Mac Pros, etc.


Yeah, I have terrible experiences with codewarrior as well. I had one programming class in the late 90s that required macs and boy did that make me hate macs with a passion.

But I dont think it was purely a codewarrior issue. The overall apple OS at that time was simply terrible and 10 years behind windows (i wont even count how far behind unix they were) -- they still could not get multitasking to work right. Which meant that any pointer error causes your computer to hang. And when you are coding for a data structures class in C all of your errors are pointer errors.

So I am sure a lot of developers abandoned the mac platform around those times, but maybe many of them are coming back now.


Unfortunately, CodeWarrior was still way better than MPW (Macintosh Programmer's Workshop) - that was pure pain.


Oh man, I had so many CodeWarrior shirts... "Blood, sweat, and code," "X Rated" for their OSX version...

I'm pretty sure that it was dominant at the time. I remember reading a lot of examples that used it.


The relevant times under discussion are: the era of the Apple II which came with built-in Basic, and the era of post-OSX but pre-iPhone


The Apple II... A computer you could turn on and start programming in 3 seconds... When will we be able to do that again ;-) ?


I think there might have been a difference between Mac-only programmers who, it could be argued, were leaving a lot of potential money on the table by not developing for Windows and therefore must be doing it mainly for love of the platform or the company (remember all the Boo's Steve Jobs got when he announced the "investment" from MS in Apple?), and developers who's main product was on Windows and who, perhaps reluctantly, also had to support a Mac version.


Mac developers mostly did (and still do). If you're developing anything other than Mac applications, you probably don't know a lot about what it's like either.


Yeah and to think at one point in time, they were literally begging programmers to write software for their Mac platform...


Yeah Cocoa dev was never took off if only b/c Macs used to be much more niche than they are today.


Apple has always treated third-party developers with suspicion. The developer website is only accessible by creating an account and agreeing to their license agreement. They churn through and deprecate APIs comparatively fast. They will quite happily steam-roller over third-party developers by adding competing features to the OS: http://en.wikipedia.org/wiki/Dashboard_%28software%29#Compar...

None of this is new, the only difference is that there's now a release bottleneck that requires Apple's approval, and there's a lot of developers new to the platform.

The thing is, this is part of Apple's culture for a reason. Steve is an obsessive control-freak when it comes to a great user experience, and third party developers are seen as a threat to that. Microsoft has always been a great company to deal with as a third-party developer - they value their ecosystem, put effort into free documentation and solid IDEs, and rely on outside developers for key applications. The trouble with this comparative openness is that you end up with 800 pieces of software written by different companies fighting it out on your desktop, leading to crashes and inconsistent UIs all over the place.

I think Apple is in danger of screwing up a great opportunity with the app store, but this way of operating is in their DNA and it won't be easy to change. Despite what the geek consensus might be, the record shows they've made a lot of money in the past whilst ignoring third-party developers.


> The trouble with this comparative openness is that you end up with 800 pieces of software written by different companies fighting it out on your desktop, leading to crashes and inconsistent UIs all over the place.

And that's a bad thing because? Who has the mainstream OS now with over 87% market-share? Even popular cross-platform applications that were first available for Macs (like Adobe Photoshop) are now more optimized for Windows.

Microsoft has always been more open ... you can install Windows on any hardware you want as long as it's compatible (and most hardware is, with the notable exception of ARM-processors).

The developer tools where a lot more competitive because Microsoft allowed competition from the likes of Borland. And the Windows API was free to use (as opposed to OS/2 for instance). And for end-users ... Microsoft has always been committed to backwards compatibility (at least for popular applications).

Microsoft can be called "evil" yes, because of their aggressive tactics regarding competition. But imagine what would Apple do in the same position ... and it's kind of ironic that many developers choosing openness went to Apple for that.

Apple makes money, yes, but they were on the edge of bankruptcy ... they should've learned a valuable lesson then (besides keeping Steve Jobs as the CEO).


"you can install Windows on any hardware you want as long as it's compatible"

Sorry, I had to laugh.

Part of the blame for Itanium losing the 64-bit bandwagon could be pointed to Microsoft, for not having Windows ready for it when it became available. Or for delaying the launch - it's silly to launch a processor without an OS to run it on.

Having Windows support for your hardware is paramount to any desktop computer company since the early 90's (with the notable exception of Apple). Alpha, MIPS and PowerPC (as in PReP) desktop systems are not dead because x86 systems were a better price/performance choice: they are dead because Microsoft pulled the plug on NT for them (and Linux was not ready to take its place at that time). That's also why all our computers are remarkably alike from the inside. It's not that Microsoft is open - it's that they have computer makers cornered.

Today I can get a non x86 computer and expect all my userland to work (with the possible exception of Flash, Skype and parts of Eclipse). I could not do that in the 90s.

The Itanium is not an expensive server chip because Intel cannot build an Atom-like processor with the Itanium ISA (heck - it must be easier than do it with the x86 ISA). It's an expensive server chip because it won't run Windows 7 and Office.

I see very little competition in the development tools in the Microsoft space these days. Tool makers know better - if they make something that competes with Visual Studio, Microsoft will come after them in the next release cycle and it is not worth the pain to fight them. That's why every non-Microsoft development tool around is built for a niche. Or is free, a case where Microsoft will not be able to go after you. That could be a reason for the free language explosion we are seeing.

And thanks. The Psystar imbroglio is a statement of how evil Apple can be about competition these days.

It even seems that after stopping attracting the best and brightest, they started attracting former Microsoft minions...


You seem to think I'm arguing that Apple's approach is better than Microsoft's. I'm not at all, just pointing out that there's internally-consistent reasons behind Apple's culture of preferring tightly-controlled, closed systems. The lesson learned from that brush with bankruptcy was that the cloned-hardware approach degraded the user experience.

Steve seems to think that the benefits of closed systems (standardised UI, fewer crashes) outweigh the costs (more expensive, less software). I don't have to agree to recognize that he's making a rational trade-off.


Paul captured my whole feeling about the App Store matter, especially about buying Apple products. Now I feel like I'm doing something wrong. I still like the products but I no longer like the company.

Today my small team of developers submitted the first "toy" we released just to test how the approval process works. Let's see if we'll have some bad experience as well.


Faustian bargain? Assholes? Evil? .. really, if this is the most serious accusation of "evil" one can level at Apple then it isn't really going to affect my buying decisions. It's not like they're dealing in small arms or manufacturing cluster bombs. If you step back and think about it all Apple is doing is stuffing up their own app store, which can be classified as monumentally stupid and short sighted but not really "evil".


General Electric, now there's a company that's "evil". http://www.google.com/search?q=%22general+electric%22+%2Bevi...

Do you see my point? To anybody outside the app development community it's going to look a little bit "self important" for developers to be using such strong language and talking of boycotts over something most folks would agree is not evil. I agree what Apple is doing is stupid, in the long term the app store is going to be polluted with crappy apps and they're approval backlog is going to be rather daunting. I think strong lobbying from the development community is in order, but it takes conscious and deliberate inhumanity for me to label someone "evil".


Yeah, but it's Paul's point that it's the developer's opinions that matter, hyperbole or not. Microsoft didn't get into the business of operating systems until Apple kicked them off of theirs. If Apple makes it too hard for developers to write software for them, developers will go to the next best thing, even if it's DOS.


There is more than one definition of "evil" - in one case it means "harmful or injurious" and this is what I think most people mean when they say Apple is "evil", not that they really think there are people inside of Apple thinking about how they can deliberately screw developers over in some amoral way. Apple is definitely acting by this form of "evil" towards developers by harming their ability to serve the customer, and because developers feel unjustly harmed, developers feel they are justified in using this strong language.


Sorry but I believe in a religious way that an hardware vendor should not have the power to enforce what software can run into a device. Like a bike vendor can't force you to only use your bike in a limited number of streets.


That metaphor is wrong. It isn't illegal to jailbreak an iPhone, it just voids the warrantee. You can run any software you like on an iPhone.

A company should have the right to control the user experience offered for a device that it designed and manufactured. That will mean denying a third party's right to bypass those controls.

The user has the right to do anything with the device once they've bought it.


I think it's reasonable to make such a charge if "their app store" is in effect "The App Store". This is like saying that it's not evil to remove freedom of speech in America. I mean, it's only stuffing up "their country".


Oldtimers have told me that they liked PCs better than Apples in the early 80s because they were more hackable: you could mix and match and tinker and make them do your own thing, while Apple's stuff was closed. Users loved Apple, but hackers didn't like their we-know-best mentality. If that's true, it may not be the first time Apple has made this mistake. Perhaps losing hackers was what caused them to lose to PCs the first time around.


That was why Stephenson described Apples as "hermetically sealed" in "In the Beginning Was the Command Line..."


I agree with the primary point that Apple is making a mistake in not treating developers well.

However, I think that the essay misses a couple of points.

1. The essay rejects the notion of an "intermediary" or a "software publisher". However, it fails to appreciate the fact Apple has opened up the mobile app market to developers and eliminated far worse intermediaries (the walled gardens of carriers). This is a huge order-of-magnitude improvement.

2. A lot of developers do release badly-buggy apps out there and then end up "blaming" the Apple review process for their customers dissatusfaction. While I agree with the launch-fast-and-iterate approach, I don't think developers/companies should use that as a license to release poor-quality crashing apps. Cutting/postponing features to launch the app quickly can be a good thing, not testing the app and releasing an app with crashing bugs is not a good thing. ---

I don't expect Apple to throw out the review process, but I do hope that they improve the review process. A simple/easy improvement would be to show the latest queue ranking of apps that are waiting for review. That will go a long way towards reducing the "ongoing karma leak" that pg mentions.

Replying promptly to developer emails about app-store rejection will also help. Setting a limit of n apps for a $99 license may also help Apple cope with the incoming deluge of apps


1. Carriers never had walled gardens around smartphones. Apple didn't invent smartphones, they've been around for years before the iPhone was released. In fact, the carrier (AT&T) has more control than they do on blackberries or WinMo phones.

2. I'm not sure what you're trying to say here. The review process exists so developers are already doing their best to not be rejected and Apple is rejecting anything badly-buggy. Bugs still escape that process, it's inevitable. Fixing them should be easy and quick, but it's not, and Apple is entirely to blame for that.


I totally agree with the article. However I wonder what prompted PG to write it. Did one of their startups' apps get rejected recently?


A lot more than one. The App Store is tied with US immigration as the biggest source of complaints I hear from founders.


That comparison should be worrying to Apple in itself. You should have put it in the essay.


The App Store is very similar to US immigration control. People are justifying the maddening complexity and the casualties of the system by analogous arguments in both cases. And building a startup around an iPhone application and then having the app kicked from the store is like a less dramatic version of building a startup in the United States and then having a co-founder kicked from the country.


1. While I agree with most developers that Apple has room for improvement, I think we should take a step back and realize how much of an improvement the iPhone has made mobile developers from a couple of years ago when the carriers were in charge of mobile applications.

2. I think the solution to the iPhone fiasco should be for Apple to hire more reviewers and allow developers to pay more money so that they can buy a faster turnaround time. It doesn't make sense for me to wait 2-3 weeks for another shot at the review process because I placed a bad keyword in the description.


I strongly disagree with your conclusion. Both smack of 'religious' thinking. Your point 1 is essentially 'be thankful to the merciful god who has ended the drought'. Your point 2 doesn't solve the problem, it just throws more priests at it.

The solution is to open the platform to all developers. Imagine if Microsoft had vetted every DOS and Windows app, or if we had to submit Linux apps to Linus for review.


I keep seeing this notion of opening the platform brought up here. I'm having a hard time visualizing how this works out.

Does Apple continue the overhead/cost of the app store? Do they have a giant disclaimer that they do not support or condone the applications, take no responsibility for any damages, etc? Do they still act as the payment gateway? How does this impact Apple's brand and the consumer trust of the product?

Why is it that mobile phones with open app development have not taken off even with years and years of head start?

What is Apple's incentive to do this? Can they make money on a phone that allows this sort of development?

I really think there is a lot more to it than just "open it up the world deserves to be free" and we're not talking about it. Why is that?


"Do they have a giant disclaimer that they do not support or condone the applications, take no responsibility for any damages, etc?"

Read your iTunes agreement. I think you will find that they already have this.


There's a big difference between a legal disclaimer that no one reads and a marketing disclaimer.

Apple unofficially accepts responsibility for the AppStore apps. They don't vouch for their quality per se, but they do vouch for the fact that they won't wreck your phone.

The same can't be said for apps on an open platform.

Hackers love open platforms but users flee them because the experience is painful.


Hackers love open platforms but users flee them because the experience is painful.

Very well said. The developers the app store is designed for are the boring, careful, professional developers who create polished, shiny, dependable apps. And that's what most users want. They want freedom from fear -- freedom to search the App Store and download whatever they find without without worrying about their level of sophistication. They want Disneyland, not a bazaar in Cairo. They want new Times Square, not old Times Square.

As a matter of pride, developers and early adopters refuse to acknowledge this factor. They pride themselves on their savoir faire and their ability to safely navigate an uncontrolled software ecosystem. The image of Apple users is carefree, self-assured, and adventuresome, and consumers can't feel that way in a place that is wild and unpredictable. They need Disneyland.


It's pretty easy - just remove the entire manual approval process and the platform would be "open enough". The problem is that developers cannot iterate, and large problems take forever and a day to plug. Both of these problems are caused by the gigantic (and somewhat arcane/black-boxy) manual review system.

Apple can continue to charge their 30% cut, they can still be the only gateway to get apps... but at the very least you can submit things and have them available to your users immediately.


Agreed.

From my POV the easiest fix for a situation where lots of dumbass things are being done is simply for people -- in this case, Apple -- to just STOP doing those dumbass things.

Duh! (<-- hyper-intellectual argument I know)

Reminds me of an old Bob Newhart comedy routine about a rather blunt psychotherapist. His patients would come to him and whine about some bad habit they had, etc. And they would ask him, "Doctor, what should I do?"

He would think for a bit and then raise his hand with a friendly smile and say, "Stop it."

The patient: "What?"

Doctor: "Stop it. Stop doing that."

"Uh, I don't understand. Should I---"

"Ok maybe I'm not making myself clear. Sometimes that happens. So I'm going to say this again, very carefully, and I need you to pay attention."

"Yes, Doctor. Go ahead."

Then he would get up and yell, "STOP ITTTTTT! JUST STOP!"

Then hand them the bill and say the session was over.


I think the App Store would do just fine if the platform were opened up. Look at the original App Store for music; people had the option to get music from other vendors (or public domain or pirated) as MP3's yet it's convenience and simplicity made it compelling for many users.

I would think the same thing would be true for apps. Many users would continue to use the App Store because of the convenience and the added trust that their verication process provides.


Before Android, there was no phone platform with open app development, JavaME and Symbian require a code signing certifiate (at about $300 per year) just for running your own code on your own phone in an acceptable manner. Symbian seems to have opened up a little bit in the last few months with free online signing for your own IMEI, but it is still very little, very late.


Not True. Windows CE/PocketPC/Mobile has always allowed you to get Apps from anywhere.


They don't - you can run basically anything you want on JavaME without code signing. The only difference is that you can't set a permanent "ok" for some actions without it (that depends on the phone model though).


Opening the platform doesn't necessarily imply opening the app store. Just let other people run stores (or simply host apps for download).

Re: the impact on Apple's brand, see the original article for reasons why the current model doesn't ensure quality.

Apple's incentive is long term viability of the platform. Can they make money indefinitely while alienating developers?


their insentive is that they are purveying a platform. What made dos and windows great was anyone could write for it so everyone did and they had all the apps. Windows and dos suck, but if you wanted to work or play games, you bought the platform anyway because all the app were for it. Customers are like sheep and go where the best apps are, not the best platform. Apple sells a platform. We create the apps. They want the best apps they must open it up so we create the best apps for them. If its easier to develop my app for another platform, I will.

They make money off selling the phone. That apps sells the phone, not the other way around.


Yes, PG makes the point very well. Apple thinks of themselves as ensuring quality, when in reality they are having the exact opposite effect.

What they need to do is just let all apps through, and make it easy for customers to report problems, and then Apple can proactively pull apps that have too many problems. They could do that at half the cost and have much better overall quality, to say nothing of the developer good will.


Of course, then Apple couldn't screen for the things that they care about but that users won't report.

For example, applications that use Apple/iPhone imagery wouldn't get reported because users don't care about the dilution of Apple's brand.

Likewise, applications that encourage the user to do things that might damage the device (swinging, throwing, or dropping) wouldn't be reported because the device is broken -- and the user will probably try to get it replaced under warranty rather than admitting that they did something stupid with their phone.


Fair point, but they can do that anyway. Also, it would give them an incentive to actually review things in a timely manner.

The other thing is they could keep the existing process for everyone's first app, but once you are a trusted developer things should be smoother. That would eliminate most of the pain.


If I create a website that tells you that you should play the (already existant) Super Monkey Ball app by wildly swinging it around like a monkey, should Apple blacklist my site from all iphone users? (Bonus points: if not, why, and how is it different from your example?)


Apple is a private company, not a government.

The question you should ask is do Apple customers want Apple to protect them from those sites?

I work with non-hacker computer users all day long and the answer is emphatically that they do want Apple to hold their hand and protect them so they can get their work done without having to fight with their machine. They want a padded room where they don't have to constantly worry about bandaging themselves up from being accidentally impaled on some spike around the corner.

Users definitely want a controlled ecosystem that is somewhat sanitized and they are willing to take it at the expense of having the latest greatest features, and also at the expense of paying more.


It's not a question of whether they should reject certain apps, but whether they can. Under the current system, Apple can reject applications that encourage you to throw your iPhone. And the ability to do this is definitely something Apple wants, as they currently use this criteria to reject such apps. This ability would be diminished under dasil003's proposal, so it would be harder to convince Apple that such a system is a net win.


I'd add to that that it's probably best that Apple catch malware before it enters the app store, not after.


Imagine if Microsoft had vetted every DOS and Windows app

Or, hold constant that Microsoft didn't vet DOS/Windows apps and imagine that every DOS/Windows machine had access to a cellular network owned by a some other company.

I agree that the review process is completely broken, but I don't think the solution is as easy as having no controls whatsoever.


> , hold constant that Microsoft didn't vet DOS/Windows apps and imagine that every DOS/Windows machine had access to a cellular network owned by a some other company.

Well most windows machines do have access to a network controlled by someone else. And with the proliferation of cellular usb accessories more and more windows machines do have access to a cellular network owned by some other company.


True, and about ten million of them are estimated to be in the Conficker botnet, another half a million in the Kraken botnet, etc, etc... I'm definitely not saying that Microsoft should have been vetting programs. I'm saying that cellular platforms may not yet be to the point where unfettered access is safe. The software on cell phones tends to favor being small at the expense of all else - probably including safety.


They don't? I don't know about how you connect to the internet, but my ISPs owns the networks I tend to connect to.


> They don't?

I don't think you correctly read my post:) No worries


>Well most windows machines do have access to a network controlled by someone else.

Too right, I inserted a subliminal "not" after the do.

Apologies!


I've owned two Windows Mobile phones over the past 5 years. Both allowed me complete access to install any third-party applications, in spite the fact they were on third-party cellular network. Same for Nokia. No application vetting whatsoever. Mobile platforms tend to separate critical functions in the radio from what a developer can do with the exposed APIs.

Of course neither had an app store, but there were no controls in place for these platforms, and the cellular networks are still up.


Apple's actual reason for the approval process is quality control. And by quality control, I mean everything from ensuring a lack of bugs to a polished interface and, last but certainly not least, lack of malware.

Apple wants people to actually buy apps — imagine that. And how do you accomplish that? Make absolutely sure that users don't for even a second think that the app they're interested in might be crap or malware.

Nothing kills spontaneous app shopping like a fear of malware, that's what Apple wants to make sure stays out of their garden.


I agree with you entirely. My comment was in response to parents contention that lack of a vetting process put third party cellular networks at risk.


So you've never heard of Windows Mobile then?


Do you think Apple should look at Microsoft's mobile strategy with envy?


That's not what I, or the original commenter, was talking about. Having no approval doesn't mean chaos for carrier's networks.


Conversely, having a horrible train-wreck of an approval process like Apple does clearly doesn't mean you can't have unparalleled success either. So I guess we're back to square one.


Umm yes. But nobody seems to be arguing that. The original commenter implied that without vetting the applications, the carriers networks would be in danger. But that reality already exists on plenty of other platforms (even one by Microsoft) without any troubles. The success or failure of the platform is not in question.


Unpopular platforms rarely have problems with third party software, regardless of any approval process.

It's possible that if Windows Mobile had been as popular as the iPhone, then the carriers _would_ have started to see a big problem with malware ruining their networks.


> Imagine if Microsoft had vetted every DOS and Windows app

We associate the BSOD with Microsoft software. However, in the majority of cases, the bug is in someone else's code or is a hardware problem. These days it drivers, but in early Windows (pre-NT), applications could cause the system to die.

I suspect that Apple are vetting to avoid bad apps from tainting the perception of the platform. The platform is what they care about, "like Google cares about search".

If an app is buggy and fixes or new features don't turn up the end-user blames the app vendor. If the device crashes, the end-user blames the platform vendor. Those things can stick; witness how the BSOD has influenced perception of the Microsoft platform.

Avoiding that is a reasonable thing for Apple to want to do. However, I agree that the way they are doing it is probably counterproductive.


Your first point is a bit like saying we should take a step back and be glad we're only being imprisoned instead of being imprisoned and beaten. Perhaps we should be happy about any improvements, but the situation still isn't very good. Android and Maemo both treat developers much better, and while I suspect Maemo will remain a niche platform, Android most certainly will not.


1. I'eve mixed feelings about that. The idea of a store was great because it was a great marketplace without tricks to get inside, as it's just a simple as paying 100$ (and lose two weeks understanding how the whole process works...).

But the review process is not the part of the App Store that made it successful, nor the fact the applications are so limited and can't use APIs outside a strict list.

2. This is not something you can fix with more reviewers... it's not just a matter of time, but there no way to create an objective review system, at least if you don't limit the review process to macroscopic stuff like "the app does not work" or "there is a huge disney logo", but in big companies you can't do things like this. If you have got the review process then even a 3 pixel logo of something remotely copyrighted will stop the process.

Also, the more reviewers you need, the less qualified you get, and it requires to be very sensible to handle well the review process. I don't think this can work. Jeff FooBar will simply read all the rules and apply them without the ability to figure if it's really applicable in this particular case. So like it happened recently if there is a program to connect to your mac, and it shows an icon accordingly to the model of mac detected, and there is a 10x20 pixel mac os x default aurora background, he will stop the application.


1. A couple of years ago, I had a Windows Mobile phone and tonnes of applications. While it wasn't a great phone, it was a still a pretty good computing platform. A couple of years before that, I had an SE smartphone running Symbian which had fewer apps but was still open (I even developed a few). For smartphones, carriers were no more in charge of mobile applications then as they are now. In fact, in Apple's case, the carrier (AT&T) has more control than they do on blackberries or WinMo phones.

2. The review process is almost exponential, every week you have more apps and updates to all the existing apps. Maybe Apple is hiring more reviewers; they might have to just to keep up. Having a paid review tier just means that big developers get a 1 day turn around and indy developers get the left overs.


You know on BlackBerry AppWorld each submission of an update costs you $20 AND goes through a lengthy approval process. (you need to purchase 10 submissions for $200 at a time). Oh there's a bug in my app? I could fix it in 5 minutes, but too bad..


There's a fundamental difference between BlackBerry and iPhone here, though: You don't have to use BlackBerry AppWorld if you don't want to, you can make your application available directly from your own website. Furthermore, AppWorld only takes a 20% cut: I think getting another 10% of the gross revenue (over what the App Store charges) should be worth a flat $20 administration fee to you.


Speaking from personal experience, their approval process is not lengthy at all. On their site they say 8-10 business days and sure enough I got approved on day 8.

I was at the BB Dev Con last week and their tech lead explained the approval process: "they load it, make sure it doesn't crash the phone, then sign off on it."


I think a lot of the problem stems from the fact that Jobs hates third party apps (because he can't control them), and he always has, and always will.

He just realizes he can't build a successful product, long-term, without them.

But his main internal smart software guys know better, and build a great software ecosystem.

Thus Apple is now projecting a seriously schizoid personality.


But see this is the dynamic between the user and the developer. This kind of tension is necessary to the process.

When developers can make whatever they feel like making, we get linux.

When Steve Jobs is there to lobby for the customer, to lobby for beauty and ease of use and a focus on the details and thorough documentation, then we get OS X and the other "It Just Works" features that Apple is becoming known for.

Customers want a Steve Jobs parental figure to stand there beating back the hordes of opportunistic Bonzi Buddy coders trying to make a quick million. That's why people pay premiums for Apple products.

Love it or hate it, the philosophy behind the App Store is a large part of Apple's growing success. The philosophy is that the user will pay more and in return the developer has to jump through some hoops and get his app approved.

Having said that, obviously the approval process needs to be adjusted. It sounds relatively trivial, in fact, for Apple to implement a procedure that would allow minor bug fixes while still putting apps through an approval process.

It would be great if customers could trust developers, but the truth is they can't. This has been proven over and over again. For every hacker that is dedicated to making something people need, there are ten willing to code exploitative Facebook apps and spambots and spyware and toolbars and programs that run in the background and phone home constantly so they can sell user data.


"Google and Apple. If Microsoft was the Empire, they were the Rebel Alliance."

I always think of them more in terms of Animal Farm. Microsoft was Mr Jones, Google and Apple are Snowball and Napoleon.


Since when was Apple's reputation with developers great? They've always been capricious, flighty and controlling - not what you need in a solid platform.


I wish Amazon gets into the handheld device business.

They clearly understand consumers, software, infrastructure & user-experience. They missed the boat with the ipod, here's a fantastic opportunity to do something about it.


Since the "1984 incident" I trust Amazon even less than I trust Apple. At least Apple doesn't yank music/apps/whatever off their customers' devices.


Instead you just "lose" music on your ipod willy-nilly.

Amazon apologized; it's unlikely they'll delete books again. I trust them more.


I suspect because it's difficult for them to technically do so. They would have pulled the GV Mobile app in an instant, if they could have, but the iPhone OS doesn't have this capability. The Kindle does.


Actually, they do have this capability, but they haven't used it.


Why would it be technically difficult for Apple to remove apps from your phone? Implementing a backdoor in your own software is fairly trivial.


I cross-post this from the other thread I started since I noticed the Apple heat is in this one, if you want to learn the background about my app, check this thread: https://hackernews.hn/item?id=951360

Below is what I've learned after 2 months of AppStore dev.

Here are a few dirty tricks & ideas that I hope will make life in AppStore purgatory easier:

Use the 'Easter Egg' field to plead directly to the reviewer. It's a free-text field that every reviewer will read and a little social engineering will work wonders.

If the app name is important to you, reserve it by submitting a dummy app without binary. You'll need dummy 512x512 and 480x320 artwork in order to be able to fill out the form.

Phone contacts at Apple are pure gold. I consistently got on the line with the same reviewer. Depending on their mood reviewers can expedite things. But it's still pretty random.

Set your app price low ($0.99) while it is in the review queue & jack it up immediately on release date. I got an app rejected because the reviewer did not like the price I set.

It pays not to be a bottom-feeder. Maximize revenue, not units of sales. Often a slightly higher price will give you more revenue. There's more than the $0.99 price-point. At a higher price point you can also afford to pay higher CPM/CPC for initial customer acquisition.

Count on doing your own marketing. The time when you could solely rely on rankings to boost your sales is over. The AppStore UI is so broken right now that you have to assume that your customers will not find your app without some effort of your own.

Expect long approval times. I've started thinking in development/update cycles of at least one month. Agile is not the mindset at Apple. Work on new apps while your other apps are in the queue. I wish Apple would crowdsource the approval process or look into setting up community-managed 'repositories' like Linux.

App Complexity is a good predictor of approval time. This is a big problem because it does not reward taking on the risks of building better apps. It took me 2 months to build up the confidence to start a more complex project.

Private API calls are an absolute no-no: even if you were approved before, your next update will be rejected because Apple started using automated tools to inspect your code.

If you give unlimited access to the internet through a UIWebView, your app will be pulled unless it has a 17+ rating.

There's no (easy) way to measure where your app sales come from. This makes traditional SEM/SEO difficult. You have no conversion numbers so your marketing funnel is broken.

Don't mention Apple products in your description. Don't use images of Apple products. Don't mention real-life persons in your description, I got an app rejected for that last one.

Don't count on being able to schedule a release date. Once you do get the approval mail, go into iTunes Connect & set your release date to $NOW. Remember, this can work both ways: I got surprised by an early release before my marketing materials were ready.

Yes, you will be pushed back to the queue upon rejection, even if you have the reviewer on the line and beg him to make an exception.

In all fairness, not all is bad. Apple seems to have started picking up speed lately. My experience with App approvals has been that it got faster in the last 2 weeks, at the same time when the AppStore itself went in disarray (wonky rankings, wrong release dates, ...). However, take care and remember "Correlation, Causation et Al.". Also, once I was in contact with Apple over the phone they were very courteous and professional in resolving issues. Slow & polite.


You list of advice is good. It's that it needs to exist to put software on one of the most popular devices of the decade that's absurd.

In the 80's you could travel pretty freely as a western visitor in communist eastern Europe if had a similar list, telling you who to nudge where, what gifts to bring for cheap bribes (IIRC I heard that a good ball point pen got you far in some places) and so on. Now, the ultimate solution isn't a better list, I think was PGs point.


I don't know about ballpoint pens but a good bottle of cognac always worked. I knew some people that started a business right after communism fell -- they had to buy cognac by the case.


Completely agree. Apple needs competition from people who have a clue, but in the meantime a lot of developers will continue traveling to 'communist' Apple, because that's where the money is ;-)


> I got an app rejected because the reviewer did not like the price I set.

That's a new one. At least for me.


This is an extreme example, but it's happened before.

http://en.wikipedia.org/wiki/I_Am_Rich


> Private API calls are an absolute no-no

Could you expand on this a little? Do you mean web service API calls that are unpublished, web service calls in general or native API calls that are somehow forbidden?


Anything that's not covered in the SDK documentation is off-limits, even if Apple themselves are using the calls in their own apps. This is what the Whole Joe Hewitt / Three20 debacle was about: http://joehewitt.com/post/the-three20-project/

Web API calls are mostly a 17+ rating problem: if you load anything over the web that could potentially be 17+ you have a problem.


What is this Easter Egg field you talk about?


The last form in the field, Apple calls it 'Demo Account - Full Access' http://imgur.com/5iqfS.png ... besides demo account info you can add details about any hidden easter eggs in this field, hence the renaming. Sorry for the confusion, the name somehow got stuck in my head.


This is a very developer-centric view, though. For users, the app store is great - tons of applications, and they're easy to find, buy, and to install. The approval process, for the user, makes a better overall experience, increasing the overall quality of available apps. For each bugfix waiting for approval there I'm certain there's lots of buggy apps being rejected, and for each anedocte of rejection due to using the wrong icon or such nonsense, there's lots of appropriate rejections due to unstable apps.

Obviously without good and satisfied developers those benefits are moot. I'm certain the approval process needs to be [improved/changed/redesigned/removed], and maybe some kind of sanctioned jailbreak should exist where more advanced users can manually install third party apps, but I do believe the App Store itself is a good thing when you you look at it from a user perpective.


As Moore's law marches on, it's inevitable that the computing power needed by Joe Sixpack will fit into smaller and smaller packages. The rise of the desktop, then laptop, now netbook. Each iteration takes less time than the previous one. That asymptote will soon - a few years at the outside - hit the iPhone/PDA form factor

Apple must understand this, and they can't possibly believe they'll be allowed to maintain this sort of dictatorial control over people's primary general computing platform


Why not? They're certainly going to try, and they're winning so far.

Maybe our generally-accepted notions of what should succeed in the market is wrong.


That mobile platform has already arrived. It's called Windows Mobile.

I was surprised too: my wife has a 3GS and I was planning to get one for myself too.

Instead I got a HTC Diamond2 which I plan to upgrade to a HTC HD2. I'm a developer, not a essay-writing millionaire. I like platforms that are Powerful, flexible and CUSTOMIZABLE to my taste. I like pretty too, but form has to follow function, not the other way around.

On WinMo, thanks to xda-developers I belong to an AMAZING (real, not wannabe) hacker culture and environment. The latest HTC ROMs are sleeker and better than the iPhone. More useful and immensely customizable.

My wife still has to click an "App" to get to her favorites... mine are on the first page. Which first page is GORGEOUS, not an old matrix of icons.

But the most important part... my phone is HACKABLE. My wife's is like my ps3: untouchable.


But does your wife want a hackable phone? Does she really care?

Does she want to have to deal with it when she downloads an app that sounds cool and it ends up installing spyware on her machine and drains her battery and drops her phonecalls?

Or would she maybe rather give up some hackable freedom for ease-of-use and a promise of a protected experience?


No she doesn't. She's perfectly happy with the iPhone. Even if she envies the functionality on my HTC sometimes.

But the discussion here were HACKER phones, not consumer phones.


The App Store is only viable because Apple is protecting it as a crown jewel loss-leader. If the Store were spun off into a separate company (not a subsidiary) that had to be profitable on its own, I can imagine the policies changing for the better rather quickly.


I don't think it's a protection thing, and loss-leader isn't entirely fair. The App Store makes money, there's no question about that. It's just that the profits from the hardware make the App Store money irrelevant. Apple almost certainly makes more money from the Google Searches in Safari (maybe even just in MobileSafari) then they do from the App Store, figures in the hundreds of millions. Compare that to the iPhone profits which are in the billions already.


A separate company would probably want a higher percentage of sales too though.


Unlikely. 30% is already pretty high, probably more than any startup would have been able to credibly command. It's another instance of the lack of choice allowing Apple to dictate whatever terms they like, however unfavorable they may be.


The other huge irony about the app store approval process is the massive advantage that it ends up giving Apple's competition.

The app store is already far ahead of the competition but it could be factors further ahead with shorter cycle time.

Progress is a non linear function of cycle time. Apple are holding themselves back by many factors by artificially extending cycle time and making it far far easier for the other platforms to catch them up.


The killer feature isn't that you can run lots of apps on it. The killer feature is that it has a market built into it.

The more I think about it, the more I think a QA review process is necessary to make the market work in the long run, and I think the idea of "rapid iteration" on mobile devices--while nice for the developers--is ultimately wrong for the users.

APIs are notoriously hard to get right without either committing yourself to support a broken implementation forever, or breaking thousands of apps. So access to the API is rolled out slowly and gradually to give engineers time to see what's working and what should be changed.

And the value of "don't have to think twice about buying" for the users is probably worth millions or billions of dollars to a large marketplace. I don't think you can get that with certifications, because it really hasn't been working for SSL certificates and "TRUST-e", etc.

A mobile phone is NOT the center of my world. I already hate the fact that the few apps I have installed on my iPhone keep coming out with updates that I keep having to install. I do _NOT_ want rapid iteration being performed on a phone with 10-20 apps on it. It's a chore to keep installing the new versions. Nor do I think they should auto-update, because that comes with its own can of worms, too.

Apple isn't handing an advantage to its competitors. The review process _is_ the advantage. We've been needing a good review process for the notoriously crap-assed QA problems in commercial software for a long time.


The sad fact is a complete lack of alternative. Personally I hate Apple so much. However, I still buy one or two Apple computers a year.

If you're a developer, and you want a stable environment that gives you access to the Terminal (bye, Windows!), has nice typography (bye, Linux!), excellent text editor (TextMate is the best one I found for Ruby) and does not cause stupid problems with printers or wifi (bye, bye, Linux!), you have no choice but OS X.

Their hardware is a piece of crap. Even a company that made an ad with them, agrees with that:

http://37signals.com/svn/posts/1489-every-mac-ive-owned-has-...

I think it's very similar if you are a professional photographer. Windows is so bloated it's painful to work with. Linux has no Adobe toolkits and you end up with OS X again.


Maybe I'm missing something here (I don't own an iPhone or make iPhone apps), but I think the analogy between the app store and a traditional start up is very flawed.

How many people associate an iPhone app they download with a 3rd party? I would think most people associate everything on their iPhone with Apple. Launch fast and iterate is great for developers but for Apple it makes it look like they keep releasing buggy software.

Contrast this with a software company. Most people have learned that if an app doesn't work on their Dell, its the developer's fault, not Dell's (usually).

This misconception about iPhone apps is made even stronger by the fact that users buys apps through Apple!

Edit: I don't mean to defend Apple completely. Obviously their processes should be better, but I'm just disagreeing with the rapid iteration model.


Y Combinator RFS 5: Development on Handhelds, mentioned in the submitted article:

http://ycombinator.com/rfs5.html


Some Nokia devices have a TV out facility that lets you see the screen output on an attached TV. Coupled with a Bluetooth keyboard you have the beginnings (I know it isn't perfect) of an acceptable input and output arrangement. Then take a text editor and something like Python for Series 60 and voila - a mobile development device. I've already got Putty (SSH) running on my phone, so I can do server side development via that.


Yea, my Nokia N95 (built in 2007) has this... it works perfectly for showing videos, etc. Mobile mfgs. are starting to build 720p HD-ready devices (ala Samsung Omnia i8910) but there's still tons of bugs and it's all very beta. Give it 2 years and we'll have phones outputting quality 720p, they're already recording at that resolution. With the latest tech like Qualcomm's Snapdragon (1ghz chip) on phones like the HTC HD2, I wouldn't be surprised if you could get some decent dev-work out of it.


...and the list http://ycombinator.com/rfs.html (which needs to be updated to add RFS 5).



I have now two published apps in the App Store. Both business apps - one in finance and the other in business.

The biggest change they have made that took me off their platform was their recent policy to not show updated applications along with new releases.

Let me explain. For the longest time, if you looked under released applications you could see applications that were recently updated. This was a great incentive for developers of existing applications to keep updating their applications and getting it easily noticed by users.

Apple no longer allows updated applications to be displayed in the released applications list.

There is now no way for users to discover your application except for about one or two days when it is first released.


This was a great incentive for developers of existing applications to keep updating their applications and getting it easily noticed by users.

It was also a great incentive for developers to game the system and swamp the reviewers by submitting trivial updates every week to keep their apps at the top of the list. Tragedy of the commons.


Actually, I think it's a positive thing to the user, since it encourages incremental development. Anything that incentivizes "release fast and iterate often" incentivizes good development.

On the other hand, it did tend to swamp the review process.


The lesser evil would have been to allow everyone an update at least once a month.

The current app store policies encourage developers to iterate apps i.e develop a bunch of apps in a month or two and hope one or two of them shoot to the top.

Developing compelling desktop level full featured apps over the long run are discouraged.


"If software publishing didn't work in 1980, it works even less now"

The App Store is an experiment for Apple. The publishing model has worked pretty well for Nintendo, Sony, and now Microsoft in the console games market. It should be pretty clear that's what Apple wants on the iPhone. They may lose developers to other platforms but from their perspective there's plenty of others waiting to take their place. I say it's an experiment because Apple can ditch the closed model at anytime in the future when/if it starts to negatively impact iPhone sales. If they had started open it would be impossible to go closed at a later time.


Yep, we had another rejection yesterday for a "pre-existing condition."

Our latest release of Gaia GPS was just a handful of bug fixes - no feature changes - and Apple rejected it on the grounds that our map screen didn't warn the user they were offline.

They also rejected the new version of our Lite app for a totally different reason - because we used a "private" API - actually just a function restricted to Mac programming called dateWithString.The non-lite version builds from the same code, so it's also annoying that they just pick one random thing to reject you for. They didn't mention the "private" API call for our non-free app at all.


I am about to show my ignorance of developing for the iPhone, so please forgive any incorrect assumptions and mistaken conclusions.

It is my understanding that apps can also be installed directly from third party websites... If so, is there a way to create an app for the App Store that is a shell to a website where a conglomerate of listings can be offered? It seems this would give the value of having everything fairly easy to find (one extra click) and yet get out from the management of the App Store for all but the original shell app...


It is my understanding that apps can also be installed directly from third party websites...

This is not true, and that's the essence of the problem.

You can install software that you've written yourself on your own phone. And there's some sort of deal that lets you give your software to beta testers and let them install it. A year or so ago some clever fellow tried to use this beta loophole as a way of selling an app that was banned from the App Store. I believe they threw the book at him and he had to stop. I haven't heard of that happening again.

You can distribute apps for jailbroken phones, but that is not really a solution.


With a few awkward exceptions, it's not possible to install apps directly from third party websites.


If you want a developer environment that fits in your pocket, look no further than the TI-83 graphing calculator.

Much of my free time in highschool was spent creating games on it. It's extremely easy to develop for (it uses a variant of BASIC), and the menu system is designed to minimize keystrokes, which means you can bang out your code very quickly.

Of course, the platform is very dated: 6 MHz CPU, and a 96×64 monochrome LCD screen! I'd love to see something in the same format, built with modern technology. Maybe the default language could be Python.


The goal would be to have that kind of developer-friendly functionality in a much more powerful and usable form. Imagine having a "phone" with a robust and developer-friendly OS that could wirelessly connect to external displays and peripherals. You'd have a single, compact brick of computing power in your pocket at all times. And if the oft-projected future of cloud services comes to fruition, the device itself wouldn't necessarily have to have ultra high-end computing power or storage.

That's a mobile experience that I'd get excited for.


Go for an HP graphing calculator, then. ARM processor, SD slot, far more powerful programming tools, especially the built-in ones. TI's have BASIC on the calculator, but HPs have an interpreted language, a compiled systems programming language, and an assembler and disassembler all in ROM. And you can run a C cross-compiler on your laptop.

It's nowhere near as powerful as a PDA, but it has a great keyboard (for math, at least) and runs off AAs.


I learned assembly on the MC68000 in the TI-89


Oh yeah, the BASIC on those TI calcs!

I spent every calculus class working on various things. My proudest accomplishment was a blackjack game. I implemented drawing routines for every card type, which was really painful given the graphics primitives you had available. So much Line(..) and PxOn(..).

Distribution mechanism was hooking up that cable to your classmates' TI-XX. Maybe iPhone devs should try that.


I think Paul properly describes why Apple's current management of the App Store would ultimately end up deserving them if they didn't address it seriously rather sooner than later. However, deducing anything about the reasons which lead them to this situation seems a bit risky.

One doesn't need to look back far in the past to find examples of situations where Apple, after refusing to acknowledge the existence of a problem for an extended period of time suddenly came up with a solution that not only fixed it but also extended the playing ground significantly. The iTunes Store, the App Store, the iPhone copy and paste mechanism, etc. John Gruber could probably list quite a few.

Apple, or rather, Jobs' main problem is not one of efficiency but one of communication. His combined obsession for secrecy and control of the end user experience his mostly likely what produces this insanely inadapted public stance in face of the App Store obvious problems.

I seriously can't exclude that Jobs' obsessions won over the best of him and that he's actually fighting the tide instead of surfing it, but I wouldn't be surprised if a solution was already being tested inside the walls of the castle.

If Apple critics and users must learn anything about the company, it's that its public posture doesn't give away any information about what is actually brewing inside the company labs. If Apple must learn anything if it doesn't want to alleviate its most valuable partners (by which I mean developers), it's that posturing is not an acceptable communication practice and should be left people like Steve Balmer who have not much else to propose.


I disagree with the blanket statement that it doesn't work: for every 10 programmers who cant be bothered to create FOO app because of all the fuss there will be one who does because he can take some market share.

I agree in spirit the system is screwed - but Apple do have a hell of a lot of sway. They have the leading product and the huge customer base (and the cool factor). To a point they can dictate things (and I agree this is bad and we should stop them)


Apple will fix these problems. But Apple does things at their own pace. It can be frustrating, especially to independent developers who are used to operating at a lightening pace. Remember cut and paste? Apple took "forever" to implement that, but when they finally did, it's far better than cut and paste on other platforms.

The same thing will happen with the App Store. Instead of "solving" the problems the way most companies would: throwing money willy-nilly at the problem, hiring hundreds of new untrained reviewers, etc., Apple will look at the core issues and figure out ways to fix it. Keep in mind the App Store is unprecedented in numerous ways (size, growth, etc.) and is new and not even Apple anticipated it would be this popular. It will take time, but it has been getting better and will become great.

(I predict the same kind of slow fix on the App Store itself, in terms of discovering apps, which I think is a more important problem than a handful of frustrated developers. Even if that handful is tens of thousands, finding apps is an issue that effects millions of users and developers, since if users can't find your app they aren't going to buy it.)


I don't think we'll see a "proper" handheld developing environment until AR specs, Accelerando-style, become linked with virtual-keyboard interfaces in a big way. (I'm talking the sort of thing that detects the position of your hands and fingers at all times, so you can type on a keyboard that exists only in your glasses. Force-feedback gloves might also be important, for that clicky-keyboard feeling.)


Genuine question about the RFS:

Why so specific? If the idea is get iphone-replacements into developers hands, why not just say that. 'Development on handhelds' sounds like a reasonable idea, but maybe it's impossible. Maybe it's just one of several possibilities.

'Get developers using something other then an iphone' seems like something that could at least yield some good ideas. Is there any reason the RFS is so granular?


Here's how I see the question: When did it suddenly become acceptable for a computer manufacturer to decide what software the customer can run on that computer?

I'm sure the money can be good ... but is that really the road anyone wants to go down? Is it worth having your leg chained to the table?


I have an objection on YCRFS 5 : http://ycombinator.com/rfs5.html

Mobile devices are physically constrained by their use case. They must be small to be carry-able. I believe in a future where mobile devices will be more ubiquitous, and where specific tasks (like development) would be delegated to "static" machines.

In the future, mobile devices will be more like a magic wand than a workstation. We would enable functionalities in different "static" devices with the same mobile device.

Also, you ask : How could you make a device programmers liked better than the iPhone?

I would suggest : make an open device for less that $100 and you will win. Now we know that price is a feature. No need for a big touch screen.


I'm sure part of the reason Apple isn't as keen to rapidly iterate its software is because it wants to keep its image of quality software up.

There are also some benefits to having a closed app store. 1) No viruses 2) Easy platform to collect payments 3) What else?


Minor note: I think "inoculate" is misspelled.


Thanks, fixed.


Some food for thought:

"In the short term, individual citizens and groups will pay. But in the long run, you can see they can't win. The very nature of technology is you can't harness it -- not authoritarian leaders, not anyone," Hom continued. "It's like riding a tiger, and you can't get off."

http://www.foxnews.com/story/0,2933,529090,00.html

http://www.techcrunch.com/2009/06/24/censorship-20-china-blo...


> Could anyone make a device that you'd carry around in your pocket like a phone, and yet would also work as a development machine?

I can answer this one: there are already a few people who are interested in Hecl for this reason: they want to use it to write code on the phone. That was never my intent with the system, as it seems painful to me, but if there are already a few using my little language, which is not well publicized, there must be a bunch more out there. And if people are doing that with existing phones, I think things will only get better in the future.


If there was a version half the size I'd prefer it.

http://i.gizmodo.com/5185837/a-hackintoshed-dell-mini-9-auto...


As far as a handheld development machine, the Pandora comes to mind: http://en.wikipedia.org/wiki/Pandora_(console)

Looks pretty powerful, roughly the size of a Nintendo DS. Of course, it won't replace a laptop... the keyboard size alone.

But if I could sync code between the Pandora and my laptop and compile stuff on-the-go. The Pandora could function like notepad for writers... but for programmers.

Its usefulness in developing for windows applications would be very limited, however.


Two points I was surprised weren't mentioned in this article:

1. Open source - this could be Androids greatest strength against he iPhone and the key to making developers switch.

2. The killer app for Android could definitely be free phone calls! VOIP seamlessly integrated, not as an after thought.

I think Android will give iPhone a serious run for it's money, and put pressure on Apple to change some of these things. Great topic, Apple needs to wake up on this one!


I found it an interesting read. I especially liked the sentiment, "An organization that wins by exercising power starts to lose the ability to win by doing better work.", which I firmly believe.

However I don't see how PG shows that Apple is somehow winning by exercising power. Can someone clarify this? PG even? I don't hear any explanation of how their exercise of power is helping them win.


But is the app store (like Microsoft Windows) a good thing from the perspective of the users? App store makes it easier to buy software for the users. Even if it makes life harder for the developers. It also lets developers get paid for stuff that otherwise might be hard for them to get money for.


Paul's new RFS "development 4 handhelds" seems to be quite simple: The only problem to be solved is: How to design a IDE that doesn't need a keyboard. I admit that this may be a bit diffcult as long programs are "written". Does anyone have an idea, how programs can be "sketched" or "told"?


Laptops displaced desktops?! You are deluded.

We develop on 8GB i7s with dual 24" screens. We have one at home and one at work, Remote Desktop-ing from each other.

Gigabit ethernet and optical fiber internet. No molasses wifi here.

We work FAST, we work HARD. But we use Windows 7 too, so we're not limited to Apple's crappy hardware either...


Ever since I moved from Windows to Linux I never had the need to develop on such a monster. My netbook (with some extra memory) serves me well. When I am at my desk, I just hook it to the big monitor, a keyboard and mouse and away I go.

The only moment I wish for an i7 is when I have to buildout Plone, which is time consuming, but specially so on a machine designed for battery life. Fortunately, I have been doing mostly Django work, so I haven't been building Plone out lately.

I wonder if other Linux developers also feel the need for 8GB i7 machines.


If you're talking strictly about developing, I guess any machine would be fine as long as it can run an editor. On the other hand there are people who prefer IDEs like Eclipse combined with all sorts of application and database servers, not to mention virtual machines. Also, let's not forget distractions. After opening hundreds of tabs in Firefox assorted with some Flash, you're gonna wish to have a better CPU/GPU. I had a slow machine while I was a student and it was fine for some homework, but I'm glad that I have a decent desktop right now.

Regarding laptops and Windows: after using Visual Studio on a laptop for a month, I don't even want to hear about working on laptops. Also, I've noticed that some companies promote working on laptops as a cool factor, although in my opinion it's not.


I never quite got why a tab with a flash thingie embedded consumes any CPU while you are not watching it.

There is a cool factor in working off a laptop - you can carry it out of your office where nobody can interrupt you. That's a non-trivial benefit.


Oh, and we write web apps and desktop apps, in php, java and c++.

We test on iMacs and we serve from Ubuntu.

But we develop on Windows Desktops. Our Mac Airs are for browsing. And reading Hacker News.


Although I don't think your comment is true, I do have a question for PG: Did you buy the 27" iMac just to use as a monitor, or for the computer part as well?


I bought it as a computer. It's my new, separate machine for using the Internet, as described here:

http://www.paulgraham.com/distraction.html


The moment Apple decides to make a model with a non-glaring screen, I'll buy one too.


I've seen people use "privacy screens" on latops make them matte


Brilliant! Implementing now.


Not that I care much, but what makes you think my comment is untrue?!


This part: "Laptops displaced desktops?! You are deluded."

I _like_ desktops more than laptops, as I argue here: http://jseliger.com/2008/12/26/computer-post-desktop-or-lapt... , but note the link to the Ars Technica article: global laptop shipments as measured both by number and by dollars have overtaken laptop sales. And that was in Dec. 2008: the trend has only accelerated since. That's about as good a definition for laptop sales having overtaken desktops as I can imagine.


Obviously, I was talking FOR DEVELOPMENT, as was talking pg. Of course that for general consumers latops are more popular, as they should be considering their main use: communication tools.

As I said, we too have laptops we use for browsing from the couch. We just don't write serious code on them


I see a lot of apps in the app store that could just be optimized iPhone web apps. However discovery of iPhone web apps on the iPhone is very poor - Apple have a site but it's not optimized for the iPhone and there are no ratings.


>They treat iPhone apps the way they treat the music they sell through iTunes. Apple is the channel; they own the user;

Makes sense. I think it is not by chance that OSX is the least customizable OS around (and that's why my mac runs linux).


How much of the goodwill Apple once had with programmers have they lost over the App Store? A third? Half?

pg, can you please clarify this? What exactly does it mean to lose "a third" or "a half" of goodwill?


Paul Graham criticizes the App Store, which is significant because it's a rare instance of a person with such major hacker street cred and no vested interest in the platform putting in their two cents...

... then he gives a really insane Request for Startups: http://ycombinator.com/rfs5.html. I think the current upper limit for input bandwidth on a 4-inch or so screen means that you would really have to invent something not seen before. Moreover, given the stubborn habits of the top hackers, you can't have significant adoption with an 80% solution. And you really need to go after top hackers who influence others to get significant adoption by programmers.

(Not to mention that ideally you need RFS5 users to be able to develop for things that aren't RFS5 or generic Unix. Otherwise you just end up with an adoption rate similar to Linux. Possibly even lower, if people have to buy your hardware.)

I'm thinking of the fact that all top hackers have some kind of Holy Revered Tool on which they are dependent for their workflow. These might be large, clicky keyboards, vim, Emacs, or TextMate. Even if any given Holy Revered Tool is used by 5% of important hackers, ALL important hackers have SOME kind of Holy Revered Tool.

This means that the hypothetical RFS5 device would have to capable of running, at minimum, vim and Emacs, with trivial compatibility between the new handheld version and the old desktop versions (because the top hackers have years and years of muscle memory and customization that they want to make use of without months of retraining/rewriting).

If I were to spend time thinking about it I would broaden the problem somewhat:

- Alternative Goal 1 - invent some kind of user interface that smoothly scales from handheld devices to small notebooks (not just netbooks, but even something like a Macbook). The exact same software automagically squeezes into a handheld, and stretches to fill a notebook. Make sure you can put the OS on some commonly used notebooks. (Maybe even focus on easily supporting scenarios like dual-booting a Mac?) You could have a notebook computer running the software, and a companion handheld device, with really tight integration between the two, hopefully down to the level of closing your notebook, and having all of your open apps - the exact same session - in your pocket.

- Alternative Goal 2 - create a distinct mobile experience, but have really, really good sync to all desktop operating systems. Not an 80% solution, a 100% solution. Make it possible to sync anything, really easily. If you use iPhone you can only easily sync it with Apple stuff. If you use Android you can only easily sync it with Google stuff. If you use WebOS you have a slightly wider choice of services, but they're all cloud services and hackers might be paranoid about that. All of these platforms only sync a limited range of stuff. If you want to sync something else you have to wait for Apple/Google/Palm to decide that you're a significant market segment. Not to mention that (for Apple/Palm particularly) much of the data that is on the device is locked down. Want to bet how long it's going to take for Apple to allow their email client to view a Scheme/Haskell/Clojure source file someone sent you? How about Arc source code? How about if you want to edit a .txt attachment and forward it to someone else?

Alternative Strategy 2, by the way, might be useful as an intermediate measure to get more of your hacking stuff onto the device so you can more realistically evaluate, as a resourceful programmer as opposed to a regular consumer, what wonderful things you might be able to do with it that appeal to you in particular, and that Apple's restricted (read: lowest common denominator, just versatile enough to be widely adopted and no more) user interface doesn't let you do.


You can already run emacs on the iPhone. The issue is just that the keyboard sucks. But right now I can do all my regular dev tasks on the iPhone by SSHing in my webserver.

It's just kind of pointless because you get 50X the productivity by bringing your laptop with you. My 13" MacBook doesn't exactly weigh me down.


"Android is an orphan; Google doesn't really care about it"

Couldn't agree more.

The documentation is incomplete, support is horrible and there is no way to even view my Android 2.0 app without a DROID.


I disagree. Apple understands software extremely well. What they don't understand is 3rd party software. The same mentality that eventually killed DEC.


Thanks pg, this one was great. I was just ranting about software here in HN comments the last couple of days, so it feels even more timely.


There are two logical flaws in this essay, and I think a misperception in the essay as a whole.

The first logical flaw is to point out how developers love Apple's support for developing desktop software, and then a few paragraphs later say that they [Apple] "don't understand software". Obviously they do understand software.

The second is that Apple's control over the app store review process will create a closed monoculture. So the original iPhone development model of using web apps has been forgotten already? Mobile Safari is continuing to support new standards and APIs, enabling new kinds of app to be delivered that way, and it will continue to be a competitive option for developers in the future. These apps will work in other phones and do not require an approval process.

The misperception of the essay is that the app store, and specifically its approval process, is evil. But this doesn't make any sense.

Apple just handed to small, independent developers a way to distribute their software to tens of millions of customers with a real, working single payment mechanism that is so easy it affords impulse buying from anywhere at any time. The cost to enter this program is $99--less than the cost of the phone itself and an entry barrier so low it's practically nonexistent.

So we now have apps developed by the recently unemployed--while sitting on their living-room couch no less--making tens of thousands of dollars in a few weeks.

This is unprecedented and incredible. It's one of the best things that has ever happened for independent developers since the microcomputer. And then they made it even better by adding in-app purchasing through the same payment mechanism. This is huge.

The inconsistency of the app rejections points to the problem of hiring and training people to interpret the policies, not the policies themselves. They aren't likely to find people who want to do that kind of work, and I'm figuring that the turnover is probably as high as it is for call centers. And given some reports that app store submissions (or at least approvals) reach 2000 per day, I would be amazed if these kinds of problems didn't happen in even the best run and most benevolent company in the world.

But while everybody is calling Apple evil for these growing pains, Apple is busy learning how to do App Stores. Statements made by Tim Cook, the rejection-reversals that come from higher up, policy changes and clarifications, suggest that Apple does actually care and is (slowly) improving the process.

Apple has a clear vision of what they want to deliver to the customer, and the review process is part of how they're trying to make that vision work. I think they're going to stick with it until they get it right.

I think it's likely that Apple will eventually find a way to solve these problems. When it does, it will have a competitive advantage that Android and Palm and even Microsoft won't be able to match for years: an app store that customers trust and will readily make purchases from without second thought, and a simple, painless way for independents to get their apps in. This would pave the way for an Apple TV App Store, a iTablet App Store, a Book/Magazine/Newspaper store and so-on.

It'll probably take a while to make it as painless as it should be for developers, because these kinds of problems are _hard_. Harder than engineering.

This isn't Apple's Mistake, this is an extra $100 or more per share of AAPL in the next few years.


No match for "WOMANWITHHAMMER.COM".

>>> Last update of whois database: Fri, 20 Nov 2009 12:10:22 UTC <<<

Anyone wants to give it a try?


"It's too complicated for a third party to act as an intermediary between developer and user"

That's a good summary of the situation.


Paul Graham should pull a Kevin Smith and put his writings into a book.

I would buy it.

If it already exists, someone link me!


Really?

http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp...

From 2004, but comprised mostly of essays that are on his site.


Jackpot!


Just to add: Apple must break their current marketing / announcement strategy and take direct action to resolve this issue.

Otherwise we won't see or hear of any solutions until June 2010 @ WWDC. (Apple is not involved with Macworld this year.)


Most of Apple's policies handling the app store make me somewhat believe they wanted their original plan to succeed, namely, making developers write web applications and not opening up the iPhone to native development.


Agreed. I think there's at least a 50% chance that the original plan was a console-like model where the only native apps would be from Apple and hand-picked partners. The popularity of jailbreaking forced their hand, because if unlocking became common it would ruin their cozy relationship with the carriers.


I don't think that's right. They've made the app-store a central part of all iphone advertising campaigns.


Apple doesn't need the AppStore, they didn't even want it. Lets stop complaining and better ourselves instead.

[ https://hackernews.hn/item?id=951384 ]


For me it is much simpler, Apple became much greedier that it was. They saw the opportunity to monopolize the market and they took it without any remorse.


Apple attitude is

    Everybody should trust us.
    And we trust nobody.


Paul, when you wrote this, did you mean by "programmer" anyone who started programming in the new century? Because Dave Winer -- and here I'm feeling like you did when you bought the iMac ;) -- wrote extensively on Apple's treatment of developers in the 90s. This is not news.


I don't think he was referring to programmers from any period. I'd be surprised if work for Apple computers ever constituted even 25% of programming work, and I'd be shocked if Dave Winer's reach was even 1%. I don't mean any offense by either, it's just it's a really big world.


If there is somebody out there, making a handheld developing machine, I am one of Ur first buyers! I was looking for that long before the netbook hype and even some time before everybody was running around with laptops.


btw, Android would win in long run. This process already begins with Motorola's Droid.

Apple very well monetized iPhone's wow!-factor, but now it is a mainstream thing.

Let's see what their tablet would be.


Paul Graham, what are you smoking buddy?


Meh. Apple does understand software. A bounch of peope hired to do reviews for thousands of apps flooding into App Store daily may not.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: