Here is a nice comparison. Buy a mobile device and try to use the standard developer tools to put Hello World on it.
Android: Download Eclipse (Windows, Linux or Mac) and the Android SDK (Windows, Linux or Mac) - no accounts or registration needed for either of these. In your phone menus enable development and connect via USB. In Eclipse make your hello world project, and hit Run or Debug. Enjoy.
Apple: You must buy a Mac. In the App Store (requires an account) or the developer site (requires an account and registration) download Xcode. Create your project. Connect the phone via USB. Right click to enable it for development and then do some song and dance with Apple to get permission to use "your" device for development. (I haven't yet worked out the exact dance required and how much it costs.)
I don't know what it looks like for WP7 but assume it is substantially similar to Apple.
- Download the SDK (free), which includes Visual Studio (For Windows Phone) Express IDE. It also includes an emulator tool. http://create.msdn.com/en-us/home/getting_started
Obviously only runs on Windows.
- To deploy to your phone, you'll need to become an app hub member ($99 per year). Or there's numerous ways to unlock your phone for app deployment (if you search hard enough). And then you can just deploy from within Visual Studio to a USB connected device.
http://msdn.microsoft.com/en-us/library/ff928362(v=vs.92).as...
There's probably more to it, but I personally have yet to deploy a WP7 app to a device. I've written a few test apps though.
WP is utterly painless re: deployment; plug it in, give it a dev certificate (automated, you only sign in to apphub), and hit run from MSVS.
What I was more impressed with, they handle signing your xap for release as well; it's all automatic (slightly less so on Android, much less so on iOS).
What specifically do you have to do to get that dev certificate? Is that for you or for the device? (Note I'm only talking about the case where you want to put you own app on your own device, not about publishing it to the general public.)
Hopefully my original post inspires someone to try this with all the platforms. I'm particularly aware of the requirements to create accounts and registrations, the size of downloads, how limited your choice of host environments is etc.
The next fun step is how do you get your hello world onto a friend's device without using a cable or requiring them to be in your presence.
Besides paying the $99 for a dev account (that allows you to publish to the marketplace), you can pay ~$10 for a personal app account, which allows you to load 10 apps of your own creation onto your device. Much cheaper if you just want to put your own app on your own device.
I have to pay to load applications I wrote myself on my own device?
This is even more ridiculous than just locking down the platform. This is
a slap in the face. Good thing WP7 is failing to reach the mass market so far.
I seriously hope it stays that way.
You're paying for an affordable, restricted developer account. This is better than iOS. Don't feign outrage or spew hyperbole just because it's not 100% of what you demand. You can't defend your argument that a $10 dev account is somehow worse than a $99 dev account.
My point is that this is ridiculous in the first place. There is no reason
to disallow people from running their own code on their own devices.
It's even worse like this. What they are doing is essentially making an undesirable
situtation, then capitializing on that by offering you a slightly less shitty
solution (which is still far from reasonable):
"Hey, you could buy a $100/y dev account, but we're so incredibly generous
that we'll allow you to run a few programs at a premium of $10!"
They are charging for something that should be one of the most essential
freedoms of a computing device. This is insane, no matter how you try
to sugar-coat and excuse it.
The basic argument is, it's a cell phone. It's an embedded device. It's not a computer (as proved by the "post-PC-world" phrase). A traditional cell phone could run apps (Tetris, Snake, etc). A game console is built to run "apps" (video games). Yet no one is loudly complaining that they cannot run their own software there for free. A smartphone is more closely related to a game console than a traditional personal computer.
Will we reach the point where smartphone (or smartphone like devices in the future) are considered computers and we can use them freely? I hope so. It might happen. It might not. What we can count on is there will always be the choice on the market for those who require that choice. Not everyone does. I have a Windows Phone. I've never been bothered by not being able to install my own software. I also have an HP Touchpad with Android and WebOS, the two freest OSes on the market right now. Never sideloaded. I don't need to.
My point? Your outrage is misplaced, for several reasons listed above. People often talk about consumer choice, but the rubber meets the road when consumers willingly make an informed decision (in my case) that the crowd doesn't understand. I bought a Palm Pre not because of the freedom, but because of the UX. I bought a Windows Phone for the same reason. Sometimes a smartphone is just a smartphone. You might not understand my choice, but I do and that's what counts in the end.
Neither of your point disproves the fact that it's ridiculous. It's not
about whether you want to run your own applications or not, it's about
having that choice whenever you want to. On every computing device. This
is - or should be - a fundamental Freedom, one which you should not be able
to sign away, not even by an "informed choice".
Citing examples like feature phones and gaming consoles isn't helpful, either.
Just because nobody complained in the past doesn't make it okay. Also,
as the quite active homebrew scene around most consoles proves, there
is value in being able to run your own stuff on gaming consoles. You might
remember the deep shit that Sony got themselves into when they decided to
turn off OtherOS on the PS3 for no reason whatsoever.
Anyways, I think consoles - while owning quite a few myself - are a thing
of the past. They're eventually going to die. The coming next generation might be
the last we see.
You pay $99 for an App Hub registration, then sign in to the device registration app on the desktop with the device plugged in. After that, it's pretty much automatic. I haven't done that much WP dev yet, so I'm not sure about friend's devices, but so far it's been relatively painless.
(Well, except Windows making installing VS and the Zune software almost impossible, but that's just what happens with Windows. On a clean install. After installing all the updates it wanted. Of which half failed the first time. And rebooting. And rebooting again. But none of that is related to Windows Phone, except that as Apple doesn't make tools for their competitors OSes, Microsoft doesn't either.)
Just as an aside, you get free registration with App Hub as a student via DreamSpark (or at least you did about a year ago; I assume it's still the case.)
The Apple song and dance involves creating developer certificates, project-specific code-signing certs, installing them all on your Mac and your device, and then setting up XCode to use the correct certificate combinations for the correct projects in the correct environments when signing the code (I can't say for certain how this all works because I basically trial-and-errored it until it miraculously started working). It is free (with your account) as long as you don't want to distribute your application on the app store, or even use it on your own device without having to renew your code-signing certificates every few months. Otherwise it's $100/year.
I still haven't figured out how to do the song and dance. (All I want to do is run hello world on "my" device.) You eventually end up at this technical note, which of course leaves out any links:
This process is truly the most cryptic thing to ever come out of Apple from a developer standpoint (30 years developing Apple software). Amazing that this comes from the company for the rest of us. Believe it or not, it is super streamlined now compared to what it was like when it first opened for business! All of this effort to keep you from writing software for something you bought.
I can understand the hoops if you want to sell your app on the official Apple store, but I think it would be very reasonable to allow devs to create and sideload apps. It's your device, your risk. That seems like a post-Jobs compromise that everyone could live with.
The net result is that if anyone just wants to play home hobbyist I sure won't be recommending going the Apple route. Then again I suppose Apple is keen on keeping the riff raff out!
Even installing Xcode was a nightmare for me. It was a brand new Mac so there were a whole bunch of system updates. I told it to go ahead and do those. In App Store I found Xcode and said to install that. You don't get any indication of progress at all. A while later I came back to the machine to discover it wants to reboot, so I let it.
Can't find Xcode anywhere so I look back in the App Store. There is an install button but clicking it has no effect. My best guess is that it never occurred to anyone at Apple that a 1.8GB download could be interrupted by a reboot (from Apple's own system update tool) and that being able to continue would be useful. I had to do lots of Googling before figuring out I wasn't the only one and I could do a manual Xcode download from Apple's developer site. Then it took a lot of faffing around to figure out /Developer versus /Applications and how things were looking for it. I'm still not sure it is right, why I have to create symlinks but at least everything works.
For me the single most amusing thing about Macs and the legendary attention to detail is how the first thing I did was use Finder to go into Applications. Despite being on a 1920x1200 screen the default Finder window size is smaller than the Applications view so there were both horizontal and vertical scrollbars to look around the contents. Why can't the icons auto-arrange based on window width? If using a fixed area, why default to a window size smaller than the fixed area? Why default to postage stamp sized window on such a large screen?
Yep, about that XCode installation: They screwed up when they first made it MacAppstore-only. It has become much better now, it can also update through the appstore without redownloading the whole multiple GB package. The whole Lion software generation was pretty half baked from start if you ask me. It's getting better again now. It sounds stupid but I think as well that Lion has been Apple's Vista. I just hope ML will be their Windows 7.
I had to learn Objective-C, how to use a Mac and Xcode inside of a month, because the company we normally outsourced this kind of development to didn't have time.
Never in my wildest dreams would I've guessed that the actual programming would be the easiest part.
Chances are you were forced to use something called iTunes. Now people do not think twice about iTunes.
But back then there was just no sensible reason, from the user's perspective, not to let a user add/remove music from an iPod without jumping through an additional hoop. People had to spend countless hours deciphering the protocol in order to build programs that could do what iTunes did: add/remove music.
Out of the box, the iPod was literally unusable without first installing some Apple software.
No matter how wonderful the design of an Apple device, the hoop jumping just becomes increasingly tiresome. I'm too tired to do the Apple dance.
The alternative at the time was to buy an mp3 player with no way for normal people to load or buy music. It's precisely because of the lack of hoop jumping that iPod took off. Don't confuse the customer experience with the developer experience. Apple has always considered ease of use for end users a top priority and ease of use for programmers to be a distant nth.
When iTunes came out, there was no way to buy music with it either. It was that way for several years.
Adding to that, when iTunes came out, most people didn't put any thought into ID3 tags. When they imported their music, their library became one big mess.
Windows support was not immediate either. It took some time. I used to use a program written by a student at Williams College. I forget the name. It was more simple and faster than iTunes. Then for a while I used a Perl script. I must admit, in retrospect, Apple knew what they were doing. I just couldn't see the point in iTunes. I doubted whether their $1/song "music store", and forcing users to use it by forcing them to install iTunes, would ever fly.
IIRC correctly most of the older MP3 players didn't need any software beyond what was built into Windows.
Of course this was the era of Windows 95/98 so how well that worked overall it's difficult to say.
No matter how much you might try to excuse it, there is no greater user friendliness
than a device simply identifying as data storage to the OS. It's ridiculous to have
to use a separate program when you could just use your file manager.
That's a consequence of cutting deals with the music industry. Apple had to block users using their iPods as devices for copying music around to enable the iTunes store to work. There are all kinds of trade off in iTunes design, but in the end it's the only significant end to end solution out there, even after all this time. (Kindle Fire is close.)
Oh and anything that involves the file system is not friendly for a surprisingly huge number of users.
>Oh and anything that involves the file system is not friendly for a surprisingly huge number of users.
"User friendliness" in this case also includes developers, who could easily write a
program that interacts with the device. For example, any media player could be used
to synchronize music (if it supports that feature).
On the device, tap the menu button, then tap "Xterm"
Type in 'nano helloworld.py'
Enter the text 'print "Hello, World!"'
Ctrl-x, ctrl-s to save the file
Enter 'python helloworld.py' and press enter
Of course, as Maemo is based on Debian, you can easily install Ruby, PHP or even a C compiler.
WP:
Despite a modest launch and a limited distribution in terms of markets, Nokia's N9 model has reached sales estimated between 1.5 and 2 million devices. According to Nokia's own quarterly report and analyst company Canalys analyses, the combined deliveries of the comparable Lumia devices summed to approximately 1.2-1.5 million in the last quarter.
The N9 is the next in the series after the N900, and aside from a lot of very cute UI changes, and a lack of a keyboard (which was relegated to the N950), it still runs on Maemo (though branded MeeGo) and is a Linux phone.
Oh, and they switched to rpms from debs, I think. I can see how that would make you think they were unrelated:)
Download AIDE from play market
Enable apps from untrusted sources
Start coding
Run your app!
AIDE really is a fantastic achievement, i had a play about with it when my laptop died a few weeks back and i was itching for some coding! It's a fully-fledged development environment with code completion, refactoring and many other cool features. Something surreal about writing android apps on an android device!
Installing xcode is staggeringly more pleasant than installing eclipse in my experience. The developer certificate song and dance is a total pain in the butt, but note that you can test and build your hello world for iOS without a device at all, no hoops to jump, and it works really well.
Installing xcode is staggeringly more pleasant
than installing eclipse in my experience
People saying that don't really know what they are talking about. Installing Eclipse involves these steps:
1) install Java, which on my Ubuntu is just "sudo aptitude install openjdk-6-jdk" and that's it
2) download an archive from Eclipse.org and unzip it somewhere
3) there is no step 3
Installing the Android plugin is equally easy. Then there's always IntelliJ IDEA which is probably the best IDE and comes with Android integration built in. The community version was recently open-sourced too.
After you registered on the app store, which requires giving them name, sex, email, address, phone number and going through the account validation email and "password must contain X special characters and you need six different security questions" hoops.
Last time I checked, Java SDK or Eclipse didn't want my A/S/L.
If you just bought a Mac in order to develop for iPhone then yes, you need to create an Apple ID and jump through all the hoops. Like if I wanted to run that aptitude command I would have to download, install Ubuntu and learn unix first.
But if you already are a mac user then you already have an Apple ID. It is absurd to say that you need it to download Xcode.
Really? The App Store makes Xcode installs fairly easy (though upgrading from pre-App Store Xcode breaks things in my experience), but what could be simpler than downloading Eclipse's zip, and then unzipping it?
Or do you mean it's a pain setting up the Android SDK within Eclipse? This could certainly be more stream lined (though I think it's fairly simple to setup as well).
That's a brutal over-simplification of what you need before developing for Android. "Downloading the Android SDK" is actually a dozen steps of installs, updates, add-ons, setting up emulator devices and so on.
The Apple dance takes a couple minutes to do and costs $99/year.
"Downloading the Android SDK" is actually a dozen
steps of installs, updates, add-ons, setting up
emulator devices and so on.
That's not true. The first time I did it, it took me something like 10 minutes. I must say that I was already familiar enough with Eclipse to install the plugin without much struggling (though it can't get any easier, unless it came built-in). Beginners should also try out IntelliJ IDEA which comes with Android integration built-in.
The Apple dance takes a couple minutes to
do and costs $99/year.
That's also not true. It took me somewhere between 2 and 3 hours. And you don't have to pay $99 for getting the Hello World on your phone, but you do have to fuck around with certificates for signing the binary and you also have to read a lot of documentation.
You are right that joining Eclipse and the Android SDK is not as seamless as it should be. Technically you don't need Eclipse and the SDK can create Hello World for you in addition to building and deploying it. (Another minor difference I noticed between Android and Xcode/iOS is that a auto-created Android project printed "hello project" on the screen while the iOS one was blank.)
As for the Apple dance, can you point me to the URL or actual documentation I can follow to get all the certificates, admin and whatever else it wants? All I can find is doc saying I need to do it, but nothing saying how to do it!
There is a "iOS Provisioning Portal" and the "Development Provisioning Assistant", a 4-step wizard that guides you through creating the necessary profiles, but they are behind a login. There's a few SSs over at PhoneGap docs: http://www.adobe.com/fr/devnet/dreamweaver/articles/phonegap...
Ahem, if you are registering from something like India. You will have to fax some documents to them for review. There is no option to even pay online. In fact, this song and dance is so time consuming that, I haven't bothered to register an account myself.
It was for Apple obviously. Only apple can require you to pay $99 and fax them your proof of identity just for running a app on your own device (actually, I no longer remember which document they asked, but I remember I didn't had time or motivation to scan and fax those documents).
You either got lucky or did the Apple dance a lot more recently than some of us. When I did the Apple dance, I had to wait more than a month before my application to be a developer was "approved", then it took weeks to figure out how to get the certificate stuff working. Even after I got it working it was fragile - my ability to put an app on the phone was never something I could expect would just work - it would spontaneously break with a cryptic error for no apparent reason.
If you are using the simulator, you also need to setup that separately in a complicated process, and then it runs damn slow. YOu need to match versions as well. I had an old eclipse, and there was no warning, but I could not get the newer android sdks.
Apple have it right once you have installed xcode. And if you only want to run in the simulator, you do not need to worry about certs.
They both could improve, but are also light years ahead of BB.
"Downloading the Android SDK" is actually not a dozen steps of installs and updates.
It involves downloading one archive, unpacking it, running the SDK manager, checking checkboxes for target platforms you want to develop for and waiting for a couple of minutes, until it downloads. You can also set-up emulator devices for the different platforms.
That's quite a short of complications you speak of.
Yeah, it was significantly more difficult to set up an Android dev environment than it was to get Xcode working. Not to mention, the Android SDK is actually a ton of different SDKs for every possible version of the OS, with a bunch of device-specific SDKs on top of those.
Don't even get me started on emulators. AVD Manager is a joke.
The reason a mac is required for development is that iOS and OS X are essentially the same operating system - they just have different user interfaces. When you run your app under the iOS "simulator", it is actually running as a native OS X app, linked against a version the iOS user interface libraries that have been compiled for OS X.
For Apple to support development on other platforms, as far as I can see the only practical option would be to provide an alternative to the simulator which runs a variant of iOS inside a virtual machine. While this is certainly technically feasible to do, and you could make the argument that they should provide such a tool, it does involve a lot more than simply porting a few user-space tools to run on a different OS. Android also benefits in this regard from using Java, which already has compilers available for all major platforms.
It is also worth nothing that the Android emulator, at least last time I checked, is extremely slow to the point of being unusable. When I was developing for Android I found the only realistic option was for me to test on a real device. The speed of the iOS simulator is one of the main things I prefer about iOS development in comparison to Android.
For the sound of it, the job would be compiling a cross-target version of GCC/LLVM and putting QEMU, an iOS ISO and some libs in a TGZ. Could hardly be called a major feat of engineering.
Another thought: your point is valid, but they should use something other than qemu (e.g. they could probably just buy VMWare with their loose change), and make sure it is running x86 code, not arm. The ARM emulation is I believe the main source of the performance problems in the Android emulator, since it relies on software translation rather than hardware-assisted virtualisation. I've never understood why Google don't use x86 in their emulator, given that almost all Android apps are written in Java.
I think it would be a moderately difficult engineering task, but certainly not outside Apple's capabilities. Ultimately it's a question of whether or not Apple sees benefits in doing so, which I suspect they don't.
It's also interesting to note that back in the dying days of NeXT, when they realised they weren't going to make much money from hardware, they switched to a software-only approach and actually did a port of all the Cocoa frameworks to Windows NT, and you could write Cocoa applications and have them run on windows. So it's not impossible to do this, but given the amount of changes that have happened to the APIs since that time it would probably be easier to go down the VM route.
Porting XCode and emulators to windows/linux is probably a huge undertaking, the technology stack is completely different. In addition, the cost of a Mac for development ($599 for a mini) is not stopping anybody, and most iOS developers will already have one, so there's little return to be had.
$599 for a mini would be stopping me for me one. Since I'm not getting paid to do mobile development $599 is money that could get me a holiday or a used car, I'm not trying to make angry birds here; just a few tools to make my life easier. Besides it seems silly to spend all that money on a low spec Mac when I already have a perfectly serviceable workstation that I have invested in.
Even if it cost them a fair amount of money to port it all over, they're Apple so they have the money in the bank. Plus I can imagine the ROI would be fairly significant when you consider how many more people could get into casual iOS development and then potentially make it into a full time thing.
Xcode and the entire stack behind it do not run on Windows or Linux. It would take a team of engineers months to pull it off, then another team to continuously support it. In those months, the feature set of Xcode and the compilers will have improved again and there would never be a stable version for a different platform.
Porting Xcode to Windows or Linux would probably be the worst idea Apple ever made.
Xcode is just the IDE right? No particular need to port that if you can just use Eclipse or the command line tools. The simulator could come later as long as you can test on a device so all your really looking at is a objC compiler and a linker.
Whilst I'm sure it's not a trivial task something tells me that there is more to this than technical limitations.
Along with XCode comes the iOS simulator, debug tools, publishing/packaging and certificate handling. And of course there is more to it: diminishing returns.
> Porting XCode and emulators to windows/linux is probably a huge undertaking
Apple doesn't need to port their software to Windows or Linux at all but simply allow to use OSX in an emulator. Even this is forbidden by Apple (it's not a surprise).
I think it was a huge mistake of Apple to allow iOS development on Macs only. If they hadn' make this mistake almost all people would develop for iOS mobile devices now, and Android wouldn't have had any chance to win. In some sense Steve Jobs himself was the main reason that Android became so successful :-)
> In addition, the cost of a Mac for development ($599 for a mini) is not stopping anybody,
It has stopped me. I have a pretty good PC, and I never accepted that I would have to buy an additional Mac solely to fed my iphone. It's a waste of room and money. For that reason I use Android.
The cost for a Mac Mini is big enough for me.
Yes I can afford it (I actually do own one), however a Mac Mini is a desktop and that's so 1998 that I can't stand it.
Personally I have a pretty close and loving relationship with my workstation. That's why it needs to be a laptop.
I sometimes work at home, lying on my sofa. I sometimes work while drinking a fresh orange juice or a caffe latte at a nearby coffee shop. I sometimes take trips and work from wherever.
I can't stand being tied to a physical location and working through remote desktop is too painful to bother, feasible if something is burning, but not otherwise.
If you think the Apple dance is bad for getting an app on your own phone, try distributing for beta testing!
People have written Apps to help you work around how difficult it is (eg TestFlight), but even then your beta testers have to download & sign up for some random 3rd party app, then request your app just to be able to test it. Compare that to Android: enable 3rd party apps via the settings menu, then email them the app.
They've now made is possible to do "over the air" distribution, whereby you put up your .ipa file on your website and email your users a link. They can then go to this link on their iPhone or iPad and it will install from your site.
Although it saves you from having to email large files, you do still need to collect your users' UDIDs and add them to your provisioning profile (embedded in the app).
It has been a while for me but from what I can recall you are ready to go once you download the blackberry IDE. There may be an eclipse plugin for that now so you don't have to download the whole monster.
I didn't forget Blackberry. I tried to develop for it in the past. There were a never ending series of downloads. You had to keep registering, repeatedly filling in the same detailed information before they begrudgingly handed over anything. After filling up my machine with bloatware I was unable to even get hello world to appear in an emulator. The chance of getting anything on my device was zero, and they required all sorts of extra certificates and payment to use any of the useful APIs.
I hate when people list "buy a mac" as the first step for iOS development. Some of us already have one. In order to develop for Eclipse, I'd have to buy/own a computer as well.
And some of us don't. It is presumed that you need a computer to run an IDE, but it is not presumed that you need a Mac. So saying that you need to have Mac to do something is quite an informative statement.
I own 5 personal computers, out of which 3 are desktops and 2 are laptops, with 2 of them running Windows, 2 Ubuntu and 1 of them Mac OS X.
Eclipse and Java work on all 5 computers. XCode works on only one. And because that OS X machine is a desktop, I barely ever use it, which is why I bought an Android instead of an iPhone.
I absolutely love Steve Wozniak for stuff like this, he's everything I could ever dream of being.
At the same time that lovely naivete about what would happen is exactly why this will never fly.
Apple is the golden goose and nobody will sign off on a risky move that might kill the goose or stop it from laying those golden eggs. If there is one thing that makes CEO's conservative it is very large streams of income. You can take risks when you're small.
If 'the Woz' wants to have a more open platform comparable with Apple then I'm pretty sure he'd find tons of people willing to follow him if he decided to go down that road himself. What will happen is that sooner or later he'll need a business guy to take care of all of those non-technical details and at some point in time after that we'd have a new Apple, just as bad as the old.
Apple has been faithful to its principles since Jobs returned - to offer a few products, not to compete in features and to provide a seamless experience. It's successful because its clients like it that way.
I don't think Woz has as many fans as Jobs had, but I still suspect the "tablet ][" is yet to be invented.
I think Apple can be more open and be just as successful. I don't think they can be as open as Wozniak wants and still be successful.
Apple's biggest strength to me is timing and execution. They didn't invent the tablet, but they made it better and at a time when more people were ready for it.
I think the time is coming that being more open will be an advantage. Right now controlling your entire experience (to me) produces better products. I think Apple will patiently wait for the time and likely execute it correctly.
> Apple's biggest strength to me is timing and execution. They didn't invent the tablet, but they made it better and at a time when more people were ready for it.
Kind of the similar to what happened with their implementation of the mouse and the MP3 player, they didn't invent these things, but they improved upon them or made them more accessible to consumers at the right time. But I am really keen to see if Apple can continue this pattern without Jobs at the helm.
> I don't think they can be as open as Wozniak wants and still be successful.
I don't think they could make the existing product lines more open, but they could explore the idea of a developer version of the iPad. Sure someone would find a way to download music or copying installed software without paying, but I don't think that would be even measurable.
I'd love if it came in beige, with a rainbow logo ;-)
Microsoft got docked for just bundling IE with their OS. I just installed Netscape back in the day(before switching to IE coz Netscape started sucking). Apple bans all competing browsers. (Windows RT is a different story).
The iOS app store forces developers to use their in-app purchasing with a 30% cut for Apple and bans any links to the developer websites to sell services. The Windows App Store does not require this.
1) plenty of non apple browsers in app store, try searching. No HTML rendering engines because that's a security issue.
1a) Microsoft did a heck of a lot more than bundle IE. They made it impossible to remove or avoid or even hide. (you can hide Safari on the tenth home screen in iOS -- IE was locked onto your desktop). They also did similar things to screw around with Java, QuickTime. Borland, Paradox, etc. etc. all of which is on the public record. And all while owning 95% of the desktop market and even more of the app market.
Apple simply has some fairly clear up front rules about how to play on its minority platform.
You. Have. No. Idea.
2) iOS was incredibly open compared with predecessors. It's less open than WebOS was and Android is precisely because they came after and used "open" to try to compete.
Again, people coming after iOS and trying to set competitive terms to attract developers are meaningless. Where are the guyS who were nicer than Apple when they were in top position? Amazon pays much less to writers than Apple, is the dominant player, and cries to the government.
No HTML rendering engines because that's a security issue.
It's not a security issue; there are plenty of apps that download and render content, just not HTML content. You're not allowed to publish browsers on iOS because it's a business model issue. Browsers download and run code. Apple likes being the only one who can decide what code runs on an iPhone, so Safari is the only rendering engine.
Apple simply has some fairly clear up front rules about how to play on its minority platform.
Minority platform? They're outselling all smartphones combined on AT&T and Sprint, and running neck and neck with all Android phones combined on Verizon. They hold 85-90% of app store revenue. The fairly clear rules are "you cannot do anything with your phone that we do not approve of, and we do not approve of anything that potentially interferes with our business model." This should not make you a happy customer.
iOS was incredibly open compared with predecessors.
It was incredibly open compared with J2ME and BlackBerry. It was and is incredibly closed compared with other computers. The iPhone isn't a big deal because it's a better phone; it's a big deal because it's the first usable pocket computer. Why should it be a deliberately crippled one?
Now here's why this is important: Apple is making amazing pocket computers, and teaching people that it's cool for a computer vendor to lock down what software people get to run -- to pay engineers to actively try to prevent people from running unapproved software. It's dominating the cell phone market, and making monopoly plays to lock down its position. It's trotting out a line of bogus claims about why we can't opt out of the walled garden (it's a security issue!), when there are millions of computers with un-locked-down access to cell modems that somehow don't pose a security threat.
I've owned nothing but Macs my whole life; I doubt I'll stop any time soon. But I'm not going to high-five them for taking my money and using it to make my phone less useful, while promoting the idea that computers are too dangerous to let just anyone write software for. Screw that.
Downloading data and rendering a ui around it is very different from providing a general purpose HTML renderer. One is going to make you vulnerable to attacks on a single custom protocol, the other to any security issue in the rendering engine for all users of that browser. It may well be that Apple derives both business and security benefits from sticking to one HTML rendering engine, but it's simply untrue to argue there is no security benefit.
As for the iPhone being crippled — it's the only significant computer platform with no malware in the wild. And it's not for lack of interest - jail broken iPhones are not free of malware. It's a tradeoff that some customers choose to make. It's also a trade off apple thought made sense for a device we carry around, communicate with, which can track our movements, and so on.
Personally, I think the security model apple is pursuing on Mac OS X is better than that for iOS (an opt in walled garden which is what I think you want). Maybe they'll converge. But I don't think there's any evidence (so far) of insidious intent behind Apple's moves. They're figuring this stuff out as they go along, and they're being careful. One thing is pretty certain -- they can't put the genie back in the bottle, so as they ease up on security and other restrictios they need to figure out what works and what doesn't.
> iOS was incredibly open compared with predecessors.
Not true. The first two releases of Series 60 were wide open, you could develop whatever you wanted. The third one required certificate signing, so it was as much "open" as iOS.
Windows Mobile had optional signing. In effect, it was wide open for development too.
Now, more seriously, such cycles do exist and we can observe them easily. History repeats imperfectly in subtly different ways. If Apple is to be the new Microsoft, it won't be exactly like it just as Microsoft is not exactly the new IBM - both have learned from their predecessors. Will they make mistakes that doom themselves? Eventually yes, but they won't be the same mistakes that doomed their predecessors.
Open Apple is a description of a fundamentally different company. Apple does do a bit with open source and could do quite a bit more without problems.
But what "Open Apple" implies, are things like an "Open" specification for the Dock Connector. And "Open" specifications that invite vendors to write their own device drivers to handle those accessories.
And that's an invitation for third parties to sell crap accessories with buggy or broken drivers and generally annoy the hell out of users who are currently paying Apple a premium to not be annoyed.
Similarly with services. "Open" the specification, allow the world in, and you get crap and esoteric support problems.
Again: things that people pay Apple a premium to not suffer.
And none of this is to say Apple is perfect, or their way is better. They make their mistakes, but they believe they're the right people to fix them. And they naturally support fewer devices, fewer services and fewer use cases. So it's far from appropriate for everybody. But it's damn sure appropriate for Apple's customers.
Woz's statement reads like a musing from someone who doesn't understand why the best of intentions don't always become the best of manifestations.
If you Open Apple, they'll get new, different customers. And lose all the old ones.
A big part of Apples success has been its closed platforms.
Would the devices be as compact and look good if they had a bunch of removable slots in the back? No.. no they wouldn't.
The thing that differentiates Apple from everyone else is that they make simple, classy products which are easy to use. If Apple open up they move into competition with the likes of Dell. This is something they simply don't need to do.
I recently switched back to Windows and the difference! My Windows computer came with a list of dos and don'ts. If I want to keep my warrenty intact I need to keep the box. I shouldn't smoke around it. I should do a yearly inspection to check for dust build ups! With a Mac you plonk it on the table, attach your mouse and keyboard and off you go. I was messing around with cables for ages with my Windows computer.
Look at Apple now. Jobs was right, Woz was wrong. Would it be nice if Apple products were more open? HELL YES! Should Apple do it? No... because then they loose a big chunk of what makes Apple, Apple.
This would be a cultural change, a big one. Jobs said many times he considered his products as perfect and was against the ability to be able to open them (hardware and software). This obsession not to be able to open the system extended even to the new Apple building which is designed without any opening windows. You can see that everywhere in the Apple products.
This is the philosophy of Steve Jobs, he even said he did not want to go through surgery first because he did not wanted to be "opened".
This is really interesting, in fact, these points are the ones I found the most interesting in all the media frenzy we got after his death.
What would he say to the idea of selling Apple hardware without tying it to an OS?
In other words, you can buy the great Apple form factor and design, but you don't have to deal with the restrictions of the OS. You could install your own OS.
Obviously this would initially only target hackers. NetBSD can run on some Apple hardware. And there is all the Hackintosh work to build on. Eventually there would be more free OS offerings to install after giving the hacker community some time to adjust to the newfound freedom.
Apple could even sell OSX and iOS separately.
There is a lot of value just in the Apple hardware. Even without the Apple OS offerings. Apple is primarily a hardware company.
The purpose may not be to save money. The purpose may be to have flexibility. To install only what the user wants to install. Maybe the user does not want OSX preinstalled on the HDD. Maybe the user wants to boot diskless with a blank HDD only used for storage or something else, but not the OS.* The point is that it allows more flexibility. Let the user decide what she wants to install. Sell the user the hardware. Charge whatever you want. Then stay out of the user's business. How she uses the hardware is her business.
*There are some real security benefits from keeping the OS on read-only media.
Don't kid yourself. Some of the high price of an Apple computer includes the real price of the operating system, which is far more than $30. It also includes the majority of the price for upgrades. Apple computers are not worth $2000 in parts. A lot of that money is R&D.
1. Make the things cost nothing, and you will lost the simple value of the thing. The value of the things comes with people caring about it. The simplest way to make people care about something is money.
2. Make the AppStore open and censorship-free and half of the apps will not be able to launch.
3. You need to get rid of script kiddies and lovers of fun and former middle-tier managers and game magazine review writers etc etc to have something that is close to a quality thing. Behold: native development and steep learning curve.
I always wondered what would happen if someone leaked the source code to OSX or iOS. Would the forked versions outshine new releases? In my opinion normal users would prefer apple's versions while hackers would take the other route for greater flexibility. Maybe Woz should anonymously leak iOS 4 or OSX 10.4 source. Apple wouldn't have to worry about maintaining documentation and it would also give them a nice buffer to outshine any competition.
The sad truth is, if Apple were a private company, they could do this. Being a publicly traded company, their first responsibility is their shareholders. Hence, they can not indulge in good-heartedness just for the sake of it if there is even a slight chance that it won't bring in money.
This is the big big problem with the stock market.
"I think that Apple could be just as strong and good and be open, but how can you challenge it when a company is making that much money?"
I think he knows it well. Like it or not Apple is AAPL, or there to make money for shareholders. Would "being open" result in more money for the people that bought a tiny slice of a $500 Billion pie? Will any CEO try when they're making $50 Billion or whatever they're making this year in profit? Not sure
Having the extra slots on the Apple ][ allowed for there to be more uses of Apple's computer, and almost certainly led to more profit. It also did no damage since you couldn't use the slots to do anything to the computer that would cost Apple money. If Apple opened up, say, the licensing on the adapter plug on the bottom of iPads and iPhones, that would do just what Woz is talking about with the only impact to their bottom line being the licensing revenue for the plug. It would also allow more uses of their devices. I think there's plenty of places they could "open up" and still keep their river of money flowing in.
Apple devices are abstractions with well-defined interfaces (sets of operations you can perform on them). Not only should the implementation not matter, it is anathema that anyone should know the implementation because that would break the abstraction at a fundamental level.
It's absurd for a bunch of hackers to think about, but this is what has made Apple billions of dollars, and it's what made them the best technology company on the planet: the construction of devices completely defined by their simple interfaces, with all else hidden from the end user.
I once believed that BSD with an Apple interface was the Utopia of computing, but no. And it took me a couple of years to understand why. I came up with a different way to say the same thing: Apple is about productizing computing ideas. But it does mean closing them down. A product is not a platform. And Xcode is just a nuisance to Apple, a requisite rather than a goal.
Sometimes productizing means making the same thing much cheaper, like their first mouse. Sometimes it is making the same thing much more expensive than necessary, like present Macs.
But the common thread is to upsell your costumer. To make him come back. This is all Apple is about. It has the advantage of pampering a prized costumer, but it has the disadvantage of locking you.
To the people saying Apple is the new MicroSoft, at first Apple was the one and only personal computer company. It used to be king of the hill. It was busted when the open-ness of the IBM PC turned out to incur cluster effects.
For all we know, this post-PC era can also witness a similar disruption. esr really thinks Android is already doing it. Lets hope.
But Apple can't do open. It is not that it would "diminish returns". It is that it goes against the very company strategy. It is cute that Woz prefers not to acknowledge it, but that is all.
It's absurd for a bunch of hackers to think about, but this is what has made Apple billions of dollars, and it's what made them the best technology company on the planet: the construction of devices completely defined by their simple interfaces, with all else hidden from the end user.
Then you would agree that Macs are unsuitable for normal users, since they ship with a command line and lots of geeky Unix tools preinstalled?
This is nonsense. It's absurd for you to argue that the difficulty of writing "Hello world" on an Apple device is somehow a good thing for Apple or anyone else on the basis of a wishy-washy concept like "abstraction".
The true simplicity actually lies below those abstractions.
It seems reasonable to assume that people would not buy Apple products if they were too difficult to use.
It seems reasonable to assume people do not buy them for ease of use. Other competing systems are also easy to use. It seems reasonable to assume they buy them because they "look cool", much more so than any competing product.
It seems reasonable to assume the initial attraction to Apple products is the hardware design, not the software.
But none of this can be proved or disproved unless Apple were to unbundle the two and hackers were allowed to write software to run on the bare metal, not necessarily on top of Apple's development platform.
If Apple is afraid to try this then it shows they have something to fear. It shows they feel the need to exercise command and control over how users use Apple computers.
Apparently Apple's hardware design patents are not enough.
Lots of hackers continue to use Apple laptops because the software and hardware has combined what they perceive as the best quality in the industry. They don't do this because they look cool.
One can't also assume the iPad is the only runaway tablet success because of a cool factor or hardware design. The iPad was laughed at on first release by most geeks and pundits. But then people got to using one and found it more useable than a laptop for many daily tasks.
One also can't look at the iPhone margins without noting the key differentiator: iOS and iOS Apps. Software, in other words.
All companies have something to fear - they're in a competitive business. Apple just seems to be better at it than most (this generation).
As I said, we have no way to say whether the assumptions are true or not unless consumers are given the choice.
As you admit, no one can predict what consumers will choose.
However, a company can actively work to limit consumer choice. They can attempt to control how a consumer uses a product so as to benefit the company, not necessarily the consumer.
I ask you, "What would hackers do if they had choice?"
It's easy to look upon "success" after the fact and conclude a company is good at what they do.
Apple has failed many times. And they may fail again in the future.
I'd like to buy stuff from a "fearless company", not one that places ridiculous restrictions on users (fear of competition?), even when they are at the top.
Hackers use Apple products and endure the annoyances because there are no other choices.
Apple is the new Microsoft.
Success?
Maybe.
But at what cost to the consumer and the computing world at large?
Apple is trying to prevent people from freely programming and experimenting. Sure, people will still buy and use their products, but Apple cannot stop competition. Arguments that hackers should just accept Apple as the new Microsoft are good for a laugh.
Android: Download Eclipse (Windows, Linux or Mac) and the Android SDK (Windows, Linux or Mac) - no accounts or registration needed for either of these. In your phone menus enable development and connect via USB. In Eclipse make your hello world project, and hit Run or Debug. Enjoy.
Apple: You must buy a Mac. In the App Store (requires an account) or the developer site (requires an account and registration) download Xcode. Create your project. Connect the phone via USB. Right click to enable it for development and then do some song and dance with Apple to get permission to use "your" device for development. (I haven't yet worked out the exact dance required and how much it costs.)
I don't know what it looks like for WP7 but assume it is substantially similar to Apple.