Index
(Click for bigger image)
Introduction
The article you are about to read is my compilation of thoughts on three currently most popular and talked about mobile platforms, sparked by whole “get rich by developing for mobile” paradigm.
As company I work for was launching some of its products on Windows Mobile Marketplace, Apple’s AppStore and Android Market I got lucky enough to spend some quality time playing with all three major mobile development platforms. As a result, I think I am in pretty good shape to tell you how things stand on all of them.
For the record, most of my experience is related to C#. A few months ago I had 0 real-world Objective-C/Java experience – my whole career I’ve spent tucked into .NET and Visual Studio. I am saying this for all the fanboys who will judge what I write here simply by their personal preference/blind hate of Microsoft. If you "just know" which mobile platform is 10x as awesome as others and always was best – I ask you to close this page and go enjoy your omnipotence somewhere else.
For the rest of you, I thank in advance for the time you’ll spend on reading my thoughts and invite you to post your comments. I guess that this guide will be most beneficial to someone who has same .NET background as I do, but I’ll strive to make text as free of technology-specific things as possible so everyone can benefit from links and information.
Be warned – this is not technical article. There is no code here! Also, it is a really long reading with lots of my personal thoughts that you may not find relevant. As this article is here because of you (and not the other way around), feel free to use it in a way that best suits your needs:
- If you do not wish to read about history and analysis of different mobile platforms, skip ‘Platform Overview’ part.
- If you do not care about my thoughts on tools used when developing for different platforms, skip ‘Development’ part.
- If you already know your way around different platforms, skip ‘How to get started’ part.
- If you do not wish to read long and detailed stories about my personal adventures with each of Marketplace, just skip to ‘Short description of all Marketplaces’.
Platform Overview
Windows Mobile (WM)
The funny thing is that I’ve had Windows Mobile 2003 phone until the end of 2008. If someone knows how and why things went wrong for Microsoft in the mobile space – I know – because I was both developing for and using WM for over 4 years back then.
First of all, WM phones are inherently slow. The mentioned phone was Samsung i750 with WM2003 and that thing was so damn slow that most of the time I was speechless. Now I have HTC Touch Diamond 2 with Windows Mobile 6 and it’s much better, although it also has moments when it’s really, really slow.
Second and also very important reason is Microsoft’s approach to designing mobile operating system. If it weren’t for HTC (with TouchFlow) and SPB (with Mobile Shell) Windows Mobile would have 0% market share right now. Whoever was pushing the “use-stylus-to-use-your-device” paradigm was either completely brain-dead or never actually used mobile device. And this comes from someone who buys Windows Mobile phones just because he LOVES to write down his thoughts using stylus (yeah, I am weird, I know). But, try to use stylus to write SMS in public transport or to find contact in your phonebook and you’ll see what I mean. After you perform the experiment, start thinking about how Microsoft was pushing THAT when Apple introduced iPhone and you’ll understand how things went wrong for the Redmond giant in no time.
One interesting thing about Windows Mobile is that it’s probably the most powerful of all mobile platforms out there. The newest example of what WM can do is this demo showing HTC Touch Diamond 2 running Android. And that’s just the tip of the iceberg. When you scratch the surface, you’ll find some awesome stuff for WM devices. To give a personal example – couple years ago I coded IR interface on WM phone to make remote that could control TV, air conditioner… practically anything with IR sensor. Later, when I obtained light switches that could catch IR signals, I even controlled lighting in my home using WM device. I mean, it was great: You lay in the bed talking on the phone, say goodbye, then switch to IR app, turn off lights and go to sleep. Or - you go out with your girl to a restaurant, she complains that air conditioner is blowing directly at your table; you just take out your phone and turn it off.
Also, you know how Apple brags that in the AppStore they have over 100.000 apps? Well, there are literally millions and millions of WM apps; Microsoft just never bothered to organize them in a way Apple did with iPhone apps.
That’s the thing with WM – the big guns Microsoft has on this platform are currently not aiming at their competition; in fact, they are practically shooting themselves with it. If they could get just one guy with vision and knowledge to head WM division and only reorganize the artillery they have (to do what Sinofsky did with Windows 7) – with apps, developer tools and device lineup they have – they would be kicking the hell out of competition in no time.
I just hope they’ll do that while they still can.
(Click for bigger image)
iPhone
Ah, iPhone! Ever since I saw this MacWorld 2007 demonstration I wanted one. I mean, look at that video – it just looks right to use mobile device that way. Forget traditional scrollbars on the side, flick to scroll. Forget pressing zoom in and zoom out, pinch to do that.
Also, I think that nowhere else is the genius of Steve Jobs so clearly demonstrated as on the input scheme for iPhone. Manufacturers spent years downsizing keyboards in portrait mode and losing half of device size that could be used more efficiently. Microsoft spent decades developing writing recognition algorithms. And in the end, Steve simply chose virtual keyboard that you can use with your thumbs (for the record Microsoft had, and still has one in WM - but you needed to use stylus to press buttons, and no one bothered to do that).
Fast forward almost three years from then – everything introduced by iPhone is pretty much standard and expected when you buy fancy smartphone nowadays. Experiment with using iTunes to also sell apps turned out to be incredible move, bringing in tons of cash for to Apple and sparking “AppStore Gold Rush”. Now everybody wants to tap into the mobile apps field and even hardware manufacturers started opening their own stores.
After finally getting a chance to play with iPhone, I was little bit disappointed. It was way simpler then I thought it would be. Not having copy-paste (initially) supported in OS is clear sign how it was possible for them to get in front even after all the effort Microsoft has put into mobile over the years. They just didn’t bother to do small, stupid or non-critical stuff. Take a minute to play PaperToss and you’ll get exact idea of what iPhone is all about; it is simple, well designed and – cool. What's that you say? You want the option to move that trashcan around as you like? Well, why in God’s name would you want to do that?!
(Click for bigger image)
Android
When I first heard that Google will be getting into mobile phone development I laughed my ass off. My main question back than was – what’s the point of that? I mean, seriously, it was like hearing that bank across the street will begin selling pretzels. With Google’s sense of sleek design, existing competition and no proven track record in that field, I expected they will get their asses kicked.
Well, I guess I was wrong… and I guess it is now obvious why they entered this battle. They hate Microsoft as much as Microsoft hates them. Days of “Don’t do evil” are way past gone and Google is starting to mature in, I must say, pretty much same way Microsoft matured – moving into territory where it will start eliminating companies that could threaten it.
The credit I want to give Google is for realizing that no one can really compete with Microsoft on desktop/laptop space (especially now that marketing and press talk with Windows 7 went really well). So, instead of developing awkward geek following and fighting losing battle of trying to prove that their operating system is oh-so-much better (by the way, that Chrome OS project is really lame you guys), they moved into space that will eventually replace desktop/laptop.
It is obvious, right? As soon as you have decent battery life (or a ‘bypass battery, connect to power source’ mode), way to connect keyboard, mouse and existing monitor (or project graphical output to 17' size) to your mobile device no one sane will buy desktops/laptops for “everyday use and work”. You already have people who spend all their time browsing the web, watching YouTube, tweeting and poking from their phone. Give them just bigger screen and easier input when they are editing Word document or audio/video/photo file and it’s done deal.
So, the battle we are currently witnessing is pretty much the same as the one that happened 20 years ago - history really repeats itself in a funny way. The same thing Microsoft did to IBM could now be done to them by Google – they could eventually be pushed from consumer to enterprise space where they will start pretending to work on some super-duper projects while effectively stealing money from big consulting deals.
Call me loony, but I would be afraid if I was in Microsoft’s place. Not deadly, conspiracy theory afraid, but afraid for some obvious reasons. After playing with Motorola Droid, it is obvious that the Android platform is very well designed, and developed by a pretty talented team. Using the device is very satisfying experience; especially for people who prefer physical keyboard and evaded the iPhone because of that. And the whole joke about Droid – with speech synthesis & voice recognition, adds cool factor to device. I must say that I was very surprised to see that the worst part of phone is actually hardware developed by someone who should be veteran in that field (Motorola) - ugly edges, cheap plastic feel, bad screen. OK, previous Android devices weren’t much prettier, but now that they’ve closed deal with HTC, I expect they will have some really cool devices.
And that’s also the big problem for Microsoft - HTC is the best provider when it comes to the hardware for WM. If you ask me, Samsung with somewhat slower devices is the only viable alternative; all other manufactures are way behind… just take a look at this “90s-style” page from HP and you’ll understand what I’m saying.
To end this introductionary – I was extremely surprised with the quality of Android platform. Aside from what will happen on Microsoft front, Android will be formidable opponent to anyone and it’s no wonder that they’ve been steadily gaining momentum.
(Click for bigger image)
Development
After discussing history behind all platforms that we are interested in, let’s get into talk about developing for them. In this section I’ll present my personal opinion on platforms, IDEs and emulators you’ll need to use.
Windows Mobile
When I say developing for Windows Mobile I think developing for it using .NET Compact Framework (CF). If you need to do something really crazy, you can always go unmanaged and wild with C/C++. The benefit of using .NET path is that you’ll develop and integrate with desktop/server world way more easily (mostly using Web Services). Also, components (like SerialPort) that ship with Compact Framework will abstract implementation details saving you tons of time. And if you can’t find what you are looking in CF, P/Invoking is always an option.
As for the tool you will be using - Visual Studio is simply the best IDE. Comparing Eclipse and Xcode/Interface Builder to Visual Studio is like comparing 2000 Mercedes SLK to 2009 Ferrari 599. The level of integration, speed, intellisense/code competition, organization of projects – everything is way better in Visual Studio.
One really bad thing about WM development is the controls. If you don’t spend time to incorporate special styling and don’t have knack for designing, your WM applications will be really ugly. I would love to show you the same app that I made using WM and iPhone controls – they really can’t be compared. With sleek buttons, nice textboxes and built-in animations, my application looks 10 times prettier on iPhone than on WM. And the funny thing is that I have way more experience developing for WM than iPhone (6 years vs 2 months).
Emulator is pretty good. I mean, it’s been around since 2003, so any other result would be really surprising. Also, as a side-effect of maturity, you have some really cool projects lying around – check out this Bluetooth emulation article. I wished that emulator started a little bit faster; but that was before I saw how slowly Android emulator starts. I stopped complaining after that.
iPhone
First thing that everybody notices when it comes to iPhone development are number of windows (irony) you need to open in order to do any meaningful development. Imagine having Console, Build Results and other panes in Visual Studio detached with no way to dock them and you’ll understand what I’m talking about. There are two primary tools here - you’ll need to utilize Xcode for writing code and Interface Builder for GUI designing. I felt inclined to make some jokes at guys who spend all their time developing for Mac – like how it’s not really IDE as XCode and Interface Builder are not integrated, how Steve is secret fan of _windows_ – but Microsoft decided to roll out Expression Blend some time ago, so future of .NET development is not much different (we’re screwed).
One of the two things I really loved when it came to iPhone development was a profiler called Instruments. Before sending my application to be evaluated for AppStore I wanted to be sure that there are no memory leaks so I ran Instruments. Not only did I easily get interactive session running in emulator with a graph that displayed memory usage, the damn tool gave me exact lines of code that were producing leaks! If you ever tried to hunt down memory leak you’ll know to appreciate work done by Apple engineers. Bravo guys.
Two is the emulator, which simply rocks. Only when I develop for iPhone I prefer to use emulator instead of actual device as everything is better and faster.
Bad things in iPhone development have much to do with personal preference, I guess. But for me, Objective-C is a problem; not because it is “though”, but because it is “different.” It is obviously hybrid and lacks much elegance and beauty of C#... and if you think I’m being biased here just check out this array initialization code in Objective-C. Yes, you really need to type in all that along with alloc and dealloc. And no, you can’t treat dealloc the same way you treat event unsubscribing (screw you -=) – when memory problems are detected OS will simply kill your application.
Which brings me to another bad point – even if you have Mac to develop on and iPhone to play with; there is a good chance that you won’t even get to the “OS kills your app” part on device. Not only do you have to register in order to access the iPhone Developer Center content and link to SDK download (tribute to the fact that Apple is run by control freak), you’ll need to enter your credit card data and pay $99 per year (Apple issues you a provisioning profiles that expire) for privilege of deploying application you made on the device you bought. I mean, seriously guys… that’s not fair.
And for all of you crying foul and “Visual Studio is not free, Visual Studio is not free!” – here is a direct, hassle free link to no-questions asked, 90-day, try me as much as you like and then re-install me again, trial version of Visual Studio 2008 Professional which will allow you to play with your WM device as much as you want.
[EDIT: Kenik Hassel from Microsoft's BizSpark team contacted me to point out that mobile developers may be interested in checking out their offering. Basically, if you make less than $1 million in revenue per year, you are eligible to get most of the Microsoft's development tools and OSs in next 3 years for free ($100 fee if you exit the program after 3 years)]
[EDIT: Also be sure to check out this post by Joel Ivory Johnson about other ways to get Visual Studio at huge discounts]
Android
As with Windows Mobile, you have two approaches when it comes to development. Mainstream, the one I’ll be talking about, includes Java and standard SDK. Because Android is built on Linux you can utilize couple tricks to run C/C++ code or, since version 1.5, make use of NDK.
It is possible to use other IDEs for development, but Eclipse is the recommended one. When I looked at it few years ago, Eclipse was pathetic, and I always felt sorry for guys who developed using Java and defended it. Now, it is acceptable and has options I would love to see natively supported by Visual Studio (mostly related to code navigation). Two worst things when it comes to Eclipse are code-completion/intellisense and project organization aka workspace. I already used term brain-dead when I talked about genius behind WM stylus… and the one behind workspace must be his twin brother. If someone could explain me WHY would anyone want to bundle up unrelated projects, keyboard shortcuts and path location of Android SDK into one thing (workspace effectively presents collection of projects and IDE settings) and make it “position on file system” dependent – please post comment and help me out.
The Holy Grail for .NET guys is trying to “make Eclipse behave like Visual Studio”. I haven’t tried following that path (as they say – In Rome, do as Romans) but you are free to follow the link and try your luck.
Emulator for Android is OK. Slow start aside – it works, it’s well integrated with IDE, debugger attaches most of the time – you can’t ask for more. Although, if you create image with non standard emulator screen resolution you may run into problem of not having certain keys on screen (Menu for unlock), so be sure to make use of these keyboard shortcuts.
How to get Started
Now that you know all about the state of the platforms and tools you’ll be using, you are itching to get started, right? Well, here we go…
Windows Mobile
Ironically, I’m probably not the best guy to ask “How to get started” because I’ve been doing Windows Mobile development since Imagine Cup 2004 (have video only on my 2005 entry). If you know C# then you’ll almost certainly follow the same path I did – you’ll start doing first hobby, then real-life projects… and eventually get hang on specifics of .NET Compact Framework.
If you don’t know C# - learning it shouldn’t be too hard and it will probably be best investment you’ve made in a while. Once you know C# you can program pretty much everything – from mobile devices, over ASP.NET pages, Silverlight frontends, WebService & WCF backends… sure, there are subtle differences for different parts of .NET platform, but leaps you will be taking are way smaller than making switch from C# to Java for example. Check out this topic for more information.
The big problem when it comes to WM development is that there is no “Microsoft place” to go ask you question when you run into trouble. Sure – there is MSDN and Smart Device Development forum but over 90% of the time you’ll end up on some useless blog or get some general response more aimed at making the author move up on Top Answerers list than helping you out. [EDIT: After searching MSDN and posting to forums, if you are eligable, you may want to try Microsoft Technical Support as Raffaele Limosani pointed out in his comment]
Two books I picked up recently that can help you out with esoteric things are Microsoft Mobile Development Handbook and Professional Microsoft Smartphone Programming.
The link you want to start with is – http://msdn.microsoft.com/en-us/windowsmobile/bb250560.aspx. I was actually surprised to find page this concise on MSDN. If you have any problem navigating through those steps and links, post comment and I’ll try to help out.
iPhone
Starting with iPhone platform is really easy – you just need to get the book Beginning iPhone 3 Development: Exploring the iPhone SDK. It is one of those books that clearly explains the problem and the solution, guides you through process of developing test application and then magically presents answers to ALL of the questions you’ve run into while typing in code. It will also set you up, tell you how to enroll into Apple Developer program and in the end give you awesome collection of links to visit in order to learn more about specific topics. I can only applaud to the authors Dave Mark and Jeff LaMarche.
iPhone Developer Center is good. It’s clean, well designed, with links to relevant content on home page. I already mentioned nuisance of getting register in order to access content and paying to deploy to your device… luckily – documentation is free! Of course, not all educational content is free, and I was sure glad that I am primarily .NET developer when I saw that.
When you get access to iPhone Developer Program Portal be sure to watch How-To’s videos on setting up team, certificates, devices and provisioning profiles. They will save you lots of time and teach you all you need to know when it comes to deploying to device and eventually AppStore.
The link you want to start with is – Beginning iPhone 3 Development: Exploring the iPhone SDK. If you don’t want to get the book, then start directly with iPhone Developer Center and iPhone SDK (3.1.2) link there.
Android
This is the only platform I started learning by reading Dev Guide directly on official website. Which is just tribute to how well content is organized – it reminds me of MSDN in good all “2003 version” days, before they decided to make Yahoo!-style-disaster-homepage. If you are like me, you’ll also appreciate Androidology 3 part video that will give you sweet overview of platform.
A great place to get help is – you would never guess – #android (and #android-dev) IRC channel on irc.freenode.com. I would like to use this chance to thank all the guys who are regulars there and who spend their time helping out Android n00bs like me. I wish that there were more places like this for all programming topics, as chatting with someone _who knows_ for just 2 minutes can save you hours and hours of unnecessary effort. [EDIT: It seems that Freenode is now requiring users to register with email address before being allowed to speak publicly in channels, which makes this way of finding answers less helpful]
I wasn’t delighted by Android books I’ve checked out so far. The best I’ve read is Pro Android Games but that was because I was really interested in knowing more about game development and author presented no-nonsense approach with lots of code and example. More “general-topic” book that is recommended by most people is Professional Android Application Development.
The link you want to start with is - http://developer.android.com/intl/de/sdk/index.html. You have very nice list of steps to perform in order to get your Hello World application up and running. Again, kudos for documentation to Google guys.
Marketplaces
This is probably the topic most of you guys are interested in. Are stories of developers making $20000 per day true? Is the approval process really that bad? Let’s dissect individual markets and the answers will present themselves.
Windows Mobile
Windows Mobile Marketplace was launched in October 2009 with lots of fanfare and high expectations. Three months later, you can call it anything but success. In many ways, Markeplace is classical example of complete launch failure with less than 1000 apps, painful review process and bunch of “call for help” topics on support forum. The obvious fact that Marketplace was rushed by Windows 6.5 launch is not so bad, as the lying and the arrogance of few Microsoft employees that occasionally visit the forums.
The biggest problem with Marketplace is whatever you do, you need to do it perfectly. When you are typing in ANY data – company details, application description – you need to be 100% sure that it is 100% correct, as you only have that one shoot. After you click submit button consider it irreversible. You changed company phone number in the meantime? Well, screw you… you can’t change it. Want to update application description? Go through process of submitting new version, along with new cab file, wait a month and accept that you’ll lose all positive reviews and ranking you got.
So, any problem that comes up – you practically need to accept that it is there to stay. And do not give into false hope that you’ll get any help from support; the only thing you can get is their “Thanks for your feedback, we are working on it, but currently you are asking impossible” response after two weeks.
Now, would you be surprised if I tell you that you need to pay $100 per year, $100 per application submission, $10 per market for this experience? Yes? Well, so was this guy. And that’s not the most fun bit. If you have any experience with Mobile Marketplace, read this answer on ‘Why are you charging so much more than the competition for certification?’ question and laugh:
We will run a rigorous certification process to ensure an optimal end user experience, and that the device and network resources are not used in a malicious way. This certification process bears a significant cost. We believe that the subsidized certification fee we offer developers is an acceptable cost of doing business, in order to gain access to millions of customers interested in purchasing applications.
The reason why there are actually applications in Marketplace is that you get “free submission credits” (5) once you pay that $100 per year registration fee. I’ve read that Microsoft planned to give out those credits as a incentive until the end of 2009, but I would be shocked if they decided to withdraw that now and force ISVs to pay $100 per every new submission; simply because it is pretty much impossible to make serious money on Windows Mobile Marketplace – you can’t be sure that you’ll get that $200 (submission + registration) back even after a year.
Also note that if your application gets rejected, you’ll be charged one submission credit. To give you exact overview of how submission process can go, I’ll share my experience with submitting application. One thing you’ll have to excuse me for are exact dates, because there is no way to see history in Windows Mobile Marketplace administration. I’ll try to reconstruct flow from emails I have:
- 13/10/2009 – filled in all fields, prepared CAB, screenshots and everything else; clicked Submit button
- 26/10/2009 – got response from Microsoft that application is rejected because it doesn’t display Chinese characters and because certain function fails. Whoever developed for WM knows that first problem is reported by someone who doesn’t know a thing about platform (just read this). The second problem was caused by me being idiot and deleting required DLL on server in the meantime while cleaning it up. 1 submission credit worth $100 subtracted
- 26/10/2009 – copied DLL back to the server and wrote explanation on exotic characters. Resubmitted application.
- 02/11/2009 – again got rejected. This time because my application didn’t ask user for permission to use Internet connection and because on their automated test it took longer than 3 seconds for application to close. OK, I was guilty:
For number 1 - I missed text under 5.3 on page 12 of Application Submission Guidelines.
For number 2 – by default I enabled application to store history for 9999 items and history saving occurred right before user exited application.
Sure, they could’ve pointed me to Internet connection thingy after first rejection, and go over the fact that it takes 4 seconds to close application after you enter make 9999 actions in one session (I tested that), but – OK, I am guilty. 1 submission credit worth $100 subtracted - 05/11/2009 – felt stupid to constrain user to 100 actions by default so I refectored saving of history to occur as soon as user does something and added logic for “Please allow internet connection” on first try. Resubmitted application
- 19/11/2009 – application finally available on Marketplace. 1 submission credit worth $100 subtracted
As you can see, it took me over a month and $300 in credits (+$100 for registration) to get my first paid application in Marketplace. Was it worth it? Well, let me give you hard data – since 11/19/09 till 01/07/10 (date when I’m writing this) it earned $823.35. Microsoft takes 30% of that for its “infrastructure” and “support”, so before taxes application earned $576.34 in about two months. If you crave for more “How much apps on Marketplace make” information, check out this topic.
What about free apps, you ask? Do they get lots of downloads? 4 star app I submitted got just over 10000 downloads in three months (I’ll spare you on details of its submission history; it’s not significantly different from what I already wrote). For position it has on the list (it is among top apps in one category) I would say it is not great… it just shows that “We’re delighted to bring the benefits of Marketplace to even more people, and give Windows phone developers the opportunity to reach more than 30 million devices worldwide” is complete marketing BS.
Conclusion? Windows Mobile Marketplace is just horrible. The only positive thing I can think of is that it’s not crowded and that really nice applications which are up there now will have better chance to eventually earn good profit when (and if) Marketplace lives up to the expectations. Everything else, from support to infrastructure and exposure is, as I said, just horrible (really felt need to repeat that).
At this point of time you are currently better off trying to make money out of your WM app over at Samsung Apps or similar stores that are opened for number of years. Which is really a shame, because I expect Microsoft will eventually get it right. With 30% cut for nothing, they would be fools not to do so, as the model of selling apps through something that’s comes with operating system proved to be a really profitable thing. I mean, when you look at it from this perspective, not related strictly to Windows Mobile, it’s weird that Microsoft doesn’t have something like iTunes bundled into Windows to sell music, videos along with desktop and mobile apps, right?
iPhone
Before anything else, I wanted to thank Joe Hewitt for quitting iPhone development over AppStore policies. It means a lot when high profile developer like him decides to raise voice against obvious injustice, especially after putting heart and soul into overcoming obstacles and trying to make things work. So, in the name of all us John Does out there who get pushed around by AppStore reviewers every time we submit our hard work – thanks, man.
The previous passage is the rawest and the best introduction you can get when it comes to AppStore. If you want comparison – it’s like going out to the busiest night club in huge city. Before you even come in, you can see that the place is crowded, guarded by arrogant bouncers and that there is a long waiting line in front. Just before it’s your turn to be searched, you brace yourself for embarrassment or being turned down for “not having appropriate shoes.” And “not having appropriate shoes” is exactly what happened to me when I submitted my first application to AppStore:
- 11/19/09 – Taking into account that this was my first iPhone project I expected I will be turned down for memory leaks or some similar reason. I spent lots of time refactoring my code, making sure everything works as it should and hunting down memory leaks. When I finally arrived in that “it is good as it will ever be” mode, I zipped up whole thing and submitted it.
- 11/25/09 – App was rejected. OK, I expected that. The surprising part was why – they didn’t like the fact that it referenced things that are available in full version. Technically the same thing passed Windows Marketplace reviewers; but it was no good for these guys - they’ve sent screenshot and effectively said – take this part out. So, I did that.
- 11/30/09 – After Thanksgiving, I’ve wrapped up new version bracing myself for another reject. Well, at least it wasn’t costing $100 per try…
- 12/04/09 – Got notice that application is being reviewed
- 12/09/09 – After 5 more days of uncertainty, got notice that application is ready to be published.
In retrospect, I went through lot less hassle than I expected. Feedback from AppStore was faster, and I guess I was partly dazzled that the process ended quicker than on Windows Marketplace. Also, there was no $100-per-try-pressure. If you wish to read way more frightening submit story, read this.
However, I was quickly disappointed to see that application is not doing very well. In that part it’s also the same as the mentioned night club - once you get in, you see that only few people are actually enjoying it. Everybody else is pretty much hanging in there, trying to pretend that they are having fun. So, hard data – port of 4 star free app from Windows Marketplace with over 10000 downloads, in way more polished and prettier edition got something over 500 downloads during previous month. And I barely managed to see figure because statistics on iTunes connect are extremely badly designed. [EDIT: Robert Paulson recommended (paid tool) APPlyzer for better in insight of how well your application is doing in his comment on my article]
Bottom line is – if you never developed using C/Objective-C – don’t bother to follow the buzz, there is almost no real chance that you'll be able to repeat existing rags-to-riches story (which are undeniably true). It is way too much crowd, you’ll need way too much time to get your skill to certain level and most good ideas are already tried out – including “pretend-you-are-cute-looking-chick-developer-who-likes-balls”. If you are really good in C/Objective-C and haven’t already followed Steve’s call to arms - you’ll need knack for design, awesome idea and sleek implementation to develop something worthy of pushing and making it stand out, especially now that the big guys are bracing themselves to overtake whole market.
Android
History of Android Market is, surprisingly, pretty much the same as the history Windows Marketplace; the only difference is that it was launched year earlier – in October 2008. There were lots of problems going on for developers and by March 2009 it only housed around 2000 apps. Things are way better for search giant nowadays, and way worse for newcomers – if you start your Android device and click on Market icon, you’ll find more than 20000 apps in there.
However, I must say that the quality of applications on Android Market is pretty low. From bunch of the titles I downloaded, there were maybe 4 or 5 I liked; one, of course, being infamous Abduction (great job Phil). So, I think that this Market is probably the best bet for new mobile developers currently. 20000 apps means crowd, but if you have new Trism (video) up your sleeve I expect you’ll do just fine.
Thing to note, before you run off and start coding – people on Android Market seem to be “cheaper” than on AppStore and even Windows Marketplace. This is from both my personal experience of seeing only 2 sold copies in 10 days (port of same paid app I described for Windows Marketplace) and experience of others – if you clicked on link I gave previously you saw that Abduction, which is probably the best known Android game, had only 10000 paid downloads by October 2009 (developer was earning about $1 per download).
The recommendation, which comes from StackOverflow post, is that on Android Market you go with free apps supported by ads. The notion of $50 per day from advertisement on +20K downloaded app seems really reasonable and I will be the first to try it instead of failed selling app model.
Unlike with Windows Marketplace, where bulk of my text was related to submission process, I do not have much to report on it here. You pay $25 (note that it is onetime fee), then $20 more for Google Checkout account if you wish to have paid apps, upload your .apk file and screenshots and – that’s it.
You can’t imagine my surprise when after Windows Marketplace and Apple AppStore experience I clicked on Submit button and saw “Published” next to my application. For 10 minutes I couldn’t believe that application was available so I checked from two different phones to be sure. Simply because of that Android Market has my sympathy and I believe that the move they made will hugely influence battle of markets we are currently witnessing.
Short comparison of all Marketplaces
Windows Mobile
- Registration fee: $100 per year
- Application submission fee: $100 per application (5 free submissions on first registration)
- Additional market submission fee: $10 per application
- Review process: Around 2 weeks
- Microsoft takes: 30% of sales
- Number of apps: around 1,000
- Links:
- Interesting facts:
- Users won’t see Buy/Install button on official Marketplace website if they are not logged or haven’t filled in payment information on their Account Settings page. There is no visible pointer that they need to do any of that anywhere on the site.
- It is impossible to enter correct credit card payment information and buy applications directly from Marketplace using HTC Touch Diamond 2 (and probably lots of other devices). The form that accepts address has double scrolling bug that prevents user to select State from ComboBox – when selecting State form gets scrolled (instead of State being picked).
iPhone
- Registration fee: $100 per year
- Application submission fee: free
- Additional market submission fee: free
- Review process: Around 1 week
- Apple takes: 30% of sales
- Number of apps: Over 100,000
- Links:
- Interesting facts:
- Because of tricky registration process most people think that you can’t even download free apps from AppStore without valid credit card information – so they end up entering it. This is probably the biggest and the least known reason of AppStore success.
- You need to publish at least one new version of your application per year. Distribution profiles Apple gives you are valid for the duration of your developer subscription. Provisioning profiles you use to test on device are valid for even shorter period (3 months) so be sure to check when your application expires before you send your boss on a long trip to Headquarters where he’ll need to showcase “cool app you’ve been developing”.
Android
- Registration fee: $25 onetime + $20 for submitting paid apps
- Application submission fee: free
- Additional market submission fee: free
- Review process: none
- Google takes: 30% of sales
- Number of apps: Over 20,000
- Links:
- Interesting facts:
- Web version of Android Market doesn’t have search option. Funny as it seems, the best way to search Market of search giant is to go to third-party - http://www.androidzoom.com/
- Factory resetting Motorola Droid leaves many people with useless piece of hardware because of unexpected re-activation process (myself included). However, there is an incredibly simple way to go around device activation.
- Related to previous item, Android phones (until OS version 2.0.1) have bug that allows you to bypass Screen Lock easily.
Conclusion
It is obvious that this model, with Marketplace coming directly on device, as a part of operating system is here to stay. And for us developers – from one side, it is very good news – small software vendors won’t have to deal with obtaining and maintain distribution channels or sales force. On the other side, two things have me really worried – huge cut taken by Marketplace provider and review process. I fear for software development future in which OS provider directly decides what can be deployed on its platform while taking huge cut from every single sale.
So, what is my bet on OS that will run devices which will eventually replace our laptops/desktops used for “everyday work and play”, and which Market I advise you to search your luck in? I must, surprisingly, say – Android.
The reason why I am not adding “All in” is because I still haven’t saw the big guns of Microsoft rolled out in this battle. Give me 6 months to see whether they will manage to repeat the shift, already done with Big Bill in saddle during 90s Internet era, now when Ballmer is in charge; and I’ll be able to give you my full prediction. Currently, I am not optimistic. I mean, it’s just frustrating to watch them - with so many talented people on their roster or available for hire, with great technology and device lineup, we are still witnessing time and money wasting by executives who keep babbling complete nonsense.
What about Apple? Well, honestly, I wouldn’t be too worried about them. They’ll keep doing fine but in the best case scenario they will, as always, finish second. Why? Because of unique talent well known to me (and, I guess, every other self-centered persona) – because of “I know what’s best when it comes to everything” attitude. Sure, you know what’s best on everything and you have proven it. But you can’t go over to HP and say – your equipments sucks when compared to ours! Even though you are technically right, and HP’s equipment indeed sucks compared to yours… they are by some odd twist of fate still bigger player than you are. And you need HP as well as Dell and Asus and all others who suck when compared to you because of two simple truths – you can’t do everything on your own and people will never accept one standard, even though it is the best one.
Also, we’ve seen what Apple is without Steve Jobs. I can’t and won’t get into predicting how long he will lead the company, because of well known reasons; all I can and want to say is that I hope to see his arrogant face for many years to come because he is really a figure that’s easy to hate but hard not to love (just jump to 7:10). Stay hungry, stay foolish Steve.
Google scares me. The way how pieces fell in with Gmail, Google Docs, Maps, YouTube and Chrome related to Android – it is too perfect to be accidental. And most of the time, companies don’t even have slightest idea that they are up against Google before they realize that it’s a Game Over. Follow the links I gave when I spoke about Android development and play with platform a little bit. After you do that I am sure you’ll be way less surprised by my prediction that Microsoft may eventually lose OS space to Google.
(Click for bigger image)
As with all of my articles, I sincerely appreciate any honest feedback. And if you lay out some facts/ideas I’ll gladly discuss them, especially since I am in process of treating my Apple-like “I know what’s best when it comes to everything” attitude. ;)
Thanks again for reading!
History
- January 15th, 2010 - Added few links sparked by comments on the article.
- January 12th, 2010 - Initial version of the article.