I was reading with great interest today on how MSFT is going to attract developers with money to fund windows phone development projects..This, if true, is indeed great news for developers, you are now slowly the trump card for every company interested in pushing their mobile strategy. First it was Apple who intrigued you with having to sign an NDA to get a hold of an SDK to develop on the Jesus Phone. Next it was Google who let you into the game for a pidddly 25 bucks and the willingness to pick your turf and your battles. Microsoft has outdone everyone by actually offering you money to build your next big thing on their platform. Great job cutting to the chase :-)
What next? HP offering you shares in the company in return for building apps on WebOS ?
While all that jazz about Windows Phone development is cool, the tools are great, the tutorials are fantastic, and getting started videos are useful and to the point, it seems thats all you can actually do on Windows Phone - get started. Looking through the Windows phone development SDK however, makes one wonder whether you can do anything but build some cool UIs with silverlight and some games with XNA.
Maybe i have still a long way to go, but how does one indeed write a serious windows phone application without
Non-trivial networking (by non-trivial i mean connecting to a server, and getting some data, connecting to another device etc). According this this page, sockets are not supported. While it may still be debated whether HTTPWebRequests and WCF are all that is needed for the phone to support serious networking apps, i am not so sure connecting to a web server is the only type of connection which developers should be allowed to have. How are the devs gonna write remote file browsers, remote connectivity tools, cool toys that connect to other devices to share data, if you are going to always have to act like a web client.
Databases: Seriously, i hope i am just being blind here. But almost every developer on Android/iPhone is familiar with and uses the native (sqlite) database heavily on that platform. All i can find about storage on the WinPhone is how you can store "files" in your very own protected areas. No databases ? nice!
Threading : Many applications you run on Android make heavy use of threading to ensure that not all work happens while the user waits. Unable to find a real threading library in Windows Phone, i must assume that it doesnt really exist (yet?). Background threads do many things while you perform other activities : connecting to a server to check for updates, performing cleanup work for the application, backing up data, deleting temporary files and so on.
Background Services : Again, guilty as charged, i must surely be missing something. all you can build with the phone is write a cool silverlight form or an XNA application. No way for an app to hang around in the background periodically checking for messages, events, no way for an app to wake up when an SD card is inserted and perform some work, no way for listening to data connectivity changes, no way to intercept an incoming SMS.... Sure, according to the Jesus Phone, background apps are bad for the consumer, since they can cause the phone to run out of battery. Yes we know red meat contains carcinogens, but do we ban beef ? There are those consumers (android users being one group of such users) who can decide for themselves when an app is taking too much battery and uninstall such apps. No one is holding a gun to our heads..
The list goes on i am sure, i am looking at this from one perspective, with my own personal list of things i would love to build on a platform, others may see other aspects.
Bottomline? I think they should not spend money in trying to attract developers, they should instead invest all that money into making sure the platform is good and ready before thinking of wooing developers. Call the kids to a party where all you have is the clown (who by the way forgot his costume at home)
?
Surely not gonna be fun without the ice-cream..
Takeaways :
While the above may be taken as criticism by the defensive types, recognition of mistake is the first step towards glory (we ourselves try to live this mantra). Without actionable feedback, criticism is waste. So... In order to present a viable development platform for potential developers on the WinPhone, as a developer, here is the wish list :
1. Document more, document better : In case any or all of the above are false, it would be great to actually document those critical components better, clearer and more exhaustively. Omitting the critical components in initial documentation and calling it a beta will only scare away developers.
2. Review whats needed by developers : take a poll, recruit a few Android developers (you cant talk to iPhone devs, since they are under NDA), look at the android documentation for clues on what may be missing. But if you dont achieve some level of library parity, you may be actually losing a lot of potential developers. Some of these components may already be there and used by the system, they may just need to be exposed to developers.
3. Don't assume users and developers are naive : Having dealt with a few thousand android users so far, i can vouch for the fact that most smartphone users are actually smart. they know when an app is sucking their battery, and they know well enough to uninstall those. If "background apps can kill your battery" is really a serious consideration, they should revisit that. (if it is just an excuse for "we dont want to figure out to do it", thats a different story) I dont believe a company that has produced the likes of Office and Exchange can justify punting on this one (unless its simply a matter of willingness. Its their platform anyways)
4. Dont shoot from the hip : yes, we all know android and iPhone are already at the party, but in the hurry to make it to the party, dont forget the pants at home. take the time, dress to kill, then get in that car. We aren't going anywhere. A late but good release is always better than an early release which fails to launch.