The buzz around Windows Phone is getting pretty crazy. This past weekend, reviews and walk-throughs emerged on almost all of the major tech blogs. It’s about time. iPhone and Android have had their 15 minutes. Microsoft has been cooking something in the back room under lock and key and release is imminent. You have to wonder, will it sink or swim? Is it too little, too late?
The new kid is Windows Phone 7. He’s smart, he’s different, and brings much needed change to our mobile platform strategy. With change comes excitement and some trepidation for our legacy mobile developers. After all, this is a completely new platform– not an upgrade from Windows Mobile in any way. What does it all mean?
Windows Mobile and Beyond
Windows Mobile is still alive and well. It’s been the best mobile LOB platform around and continues to move forward under the ownership of our Embedded Team as Windows Embedded Handheld. It’s flexible, adaptable and comes in every variety of hardware you can imagine. When my A/C unit blew up last month, the service guy shows up with a high tech gadget. It was indestructible (e.g. – ruggedized). It was a two way walkie-talkie. It managed the work order for my house and captured my signature. It ran technical diagnostics on the data collected. It pumped the whole work order up into the cloud and then magically printed my receipt to a wireless Bluetooth printer on the tech’s belt. WM has a great device management story, meets most security requirements, and gets the work done.
Windows Mobile is a great LOB platform for many uses but it has struggled with non-geeks who buys smartphones (e.g. – average consumer). The same flexibility that makes it powerful and adaptable is also responsible for the lackluster reputation with this crowd. There are a LOT of devices, form factors, and operator/hardware customizations that end up in Windows Mobile phones. OEMs have great flexibility that allows them to build a $100 device or a $3000 device depending on what they put into it. There are minimum bar requirements, but they are vague. Simply put, a Blackjack II… is not an HD2… is not a Tilt… is not a, you get the idea. These phones can run many of the same applications. They are all Windows Mobile. They all provide very different experiences and sometimes bare very little resemblance to each other. In the Enterprise LOB space, this isn’t a big deal since many companies standardize on a ruggedized device or pick a handful of “approved” devices to support for corporate workers. There is also big part of the world that doesn’t fit this profile. To them, it is a big deal.
The consumers space is … different. While people will debate endlessly about the superiority of Android, iPhone, Palm, Blackberry, or Windows Mobile … the answer is bigger than the platform itself. I would argue that all these guys have made big contributions to get us where we are. The mobile ecosystem is a complex, collaborative and adversarial bakery going after a very big pie. We’ve all attacked it from different angles and it’s evolving at rapid pace. The mobile phone market is so much bigger than the PC market and carries so much potential, it’s staggering. Okay, maybe I’m, a little crazy but there are a lot of numbers to back up my madness. The networks keep getting better. The cloud is emerging. There is a generation that cares more about their phone than their PC (if they even have one). Things are falling in to place to truly let this market take flight. While I’m very optimistic about Windows Phone 7, I’m even more optimistic about the mobility as a market opportunity. I don’t think anyone has scraped the surface yet. Not even Apple.
Why Windows Phone 7 is different…
The blogosphere is full of reviews and details about the Windows Phone 7 platform. I won’t try to reiterate all those things here. I will point out a few that make this a compelling platform to me as a developer… a few of my favorite things
A simple, compelling device than anyone can use. It’s something the average consumer can truly love. There is nothing super-techie or complex about using Windows Phone 7. It’s a joy. Keep it simple. Thank you. This device will appeal to anyone and that makes it a very good platform for developers to easily reach the masses.
A single install that is accessible to everyone. Windows Phone 7 is one download. It magically pulls down everything you need to get started. If you have a paid SKU of Visual Studio, it plugs in all the parts to enable Windows Phone 7 development. If not, it installs an Express (a.k.a. – free) version of Visual Studio…with everything you need. Code away.
Silverlight and XNA. Silverlight and XNA finally give you everything needed to build astonishing user interfaces. Hello XAML. Goodbye simple, but ugly WinForms. There is no excuse for ugly apps now. Windows Phone 7 is based on SL3 so most Silverlight devs can jump right in. Better yet, the tools, books, and resources for SL3 have been out for a while so there is a lot of good content to leverage. XNA is interesting because it’s also the framework that has powered community games on XBOX and apps on Zune. While XNA dev across these platforms is not identical, it’s pretty close and sets developers up for multiple opportunities to leverage their gaming investment.
A Zune Phone? It’s no secret… the only thing that broke the hearts of Zune HD buyers was that it wasn’t a phone. Windows Phone 7 does Zune…. and more. If you buy one CD a month, then Zune Pass is for you. For a price less than one CD, you have access to a staggering library of music anytime you want it. Considering 10 DRM-free credits each month to keep whatever you want (it’s yours), it’s the best way to try and buy music.
Consistency in hardware and user experience. The bar for Windows Phone 7 hardware is high and rigidly set. This means every device will be a great device… for gaming, for apps, for everything this platform is designed to do. With WM, OEMs had a lot of leeway with hardware requirements to pick and choose. No more. These devices will rock.
The Cloud. People will debate what “the cloud” really represents to them, but it’s undeniable that the industry is shifting. I still think of myself as an old-school C++ guy, but I write most of my code in .NET. It makes me more productive. I remember being very skeptical when .NET emerged and then warming up… it was like someone sat down and thought through the problems developers were writing code to solve and built the APIs around it. C++ suddenly felt like stacking grains of sand instead of stacking blocks. Cloud computing will change the way we build apps, store, and access data. Windows Phone 7 is positioned to help you get there. As a developer, there are many changes that may initially make you scratch your head, and then realize… oh yeah, something bigger going on here.
Push Notifications. You have a to love a super simple technique to integrate devices, applications, and services with a dandy little URI.
Marketplace is a first class citizen. If you are a developer, it’s a great way to get your apps to people who want to buy them. If you are a shopper… impulse buying has never been better.
XBOX Live. This is an enormous, fiercely active community, and something we’ve been waiting on in the mobile world for some time.
Location APIs. I think it’s the most important aspect of mobile opportunity and now it just works… no wrestling the GPS on each device or triangulating cell towers. It just works. Connecting people with needs to services and apps based on their location.
No more 32MB virtual memory limit. The virtual memory monster is dead.
Windows Mobile to Windows Phone 7. How do I get there from here?
I’m doing a lot of calls Windows Mobile developers who are trying to get their heads around Windows Phone 7. How do we get there from here? The answer is too broad for this post, but I’ll try to summarize some key points below:
If you are developing native code, you need to get to .NET (Silverlight or XNA). Native applications are no longer supported so if you are doing deep integration work, there may not be a 1:1 port. Windows Phone 7 protects the user experience and this means tighter control over what 3rd party apps can touch and interact with. NETCF Windows Forms will need to be replaced by a UI developed in Silverlight or XNA.
Application deployment is through Windows Marketplace. In the Windows Mobile world, it’s an option. With Windows Phone 7, it’s the requirement. While this is a hurdle for some enterprise and LOB apps want to control the install and distribution channel, it’s a great story for developers who just want a single way to sell their app to end users.
Widgets are gone. Widgets were basically little web pages wrapped in a control to make them look and feel like a stand-alone app. Moving your Widget to either a web page in the cloud or an application that leverages a browser control is pretty straight forward.
Windows Phone 7 uses Isolated Storage, not the file system you are used to. The file system you are used to is gone…even to the point that SD cards become part of overall “storage” and are not independently accessible. Silverlight developers will feel right at home with Isolate Storage but it’s a different paradigm for legacy devs. Apps are sandboxed and protected from each other all the way down to the data underneath them. If you use multiple processes and share data between them, you may need to re-think the architecture.
SQLCE is not part of this release for developers. SQLCE was such a huge part of our WM story, it’s hard to imagine a Microsoft Phone without it. For many simple storage requirements, Isolated Storage works just fine. If you have deep dependencies on SQLCE or are doing replication with SQL, this can be a hurdle. There are replication and database implementations already showing up for use on Windows Phone 7 using Isolated Storage to take the place of SQLCE short term. More to come on this one…
No more RAPI. If you have an application today that interacts with the desktop via cradled connection and RAPI, consider using the cloud or push notifications as a conduit.
Raw Sockets and custom connectivity over Bluetooth are not available. While the .NET libraries provide support for various connectivity scenarios, there is no low level support for raw sockets. Bluetooth support is limited to what the platform and UI provides out of the box.
No more background apps and services. This topic really stirs people up but it’s not a technical limitation…it’s a business one. If you want a great device experience, you have to lay down some ground rules to prevent the abuse of resources and ensure that devices stays “snappy”. The simple way to do this is giving the foreground app all the love. Background apps can still get notifications and interact with the user if something important needs to happen, but they don’t have free reign of the system like they used to.
You might be able to re-use more than you think. Remember when you learned how to go from desktop .NET to NETCF and things were very similar, but not everything was 1:1? Moving to WP7 is kind of like that. Expect to be able to re-use much of the private code and application logic you have written, but not all of the NETCF libraries are going to be 1:1. For example
If your company has rigid requirements for device control and management, you will need to re-evaluate what is supported with Window Phone out of the gate. While WP7 will support many Exchange policies (e.g. – PIN enforcement, remote wipe, etc.) it’s a new platform that is inherently different from Windows Mobile. Some of the deep device management tools you use today may not be compatible with WP7.
The legacy WM developers who are most impacted by changes to WP7 are going to be enterprise LOB developers and integrators who did a lot of low level work on Windows Mobile. If you can think outside the box a bit, WP7 may create new opportunities to do things you never could before. If you are struggling with what LOB might look like on WP7 or how to overcome some of the data synchronization you were previously doing for disconnected clients, I would encourage you to start with Rob Tiffany’s session on WP7 LOB.
Sum it up already…
Windows Phone 7 is a brand new foray into phones that enable every day people. If you are new to mobile development, it’s a good time to get in. If you are already a mobile developer (on any platform), it’s a refreshing new way to expand your reach and broaden your market. Never has the learning curve been so small for an opportunity this big.