Windows Phone

Windows Phone 7 through a developer's eyes

Developer Justin James shares his perspective about the pros and the cons about development for Windows Phone 7. Find out what he thinks could be the Achilles' heel for Windows Phone 7.

 

I recently heard an excellent talk from Windows Mobile Device Application Development MVP Chris Craft about development for Windows Phone 7. Although he did not go into detail about how to put an application together, he did spend nearly 90 minutes explaining the important things to be aware of and fielding some very tough and in-depth questions from the audience. I'm sharing what I learned because it may help you decide if Windows Phone 7 development is a path that you want to pursue.

The good news

There is plenty to like in Windows Phone 7 from the development perspective. The location APIs make a lot of sense and support a pull model (where you read current values) and a push model (where you register event handlers to detect things such as moving more than a certain distance). The push model is a great way to conserve battery power, and it allows you to not write large amounts of potentially complicated code. The fact that applications are written in Silverlight (which is becoming increasingly well known) is a big plus as well; this allows developers to use their existing .NET knowledge and any XAML skills they have. In addition, Silverlight/XAML is capable of some really slick looking interfaces, and there is already a ton of third-party components for Silverlight. Plus, Windows Phone 7 works with XNA, which is a huge benefit to game developers. There is the requisite accelerometer and multitouch support, as well as access to DeepZoom, which can do some nifty things. Applications are sandboxed, so the apps cannot see each other's data or read the system files.

The interface has some interesting concepts in it as well. The interface is designed to be very "glanceable," which is a great idea for people who multitask all day long. The interface design includes "tiles," which can be placed on the desktop and updated with information by applications. In addition, applications use "panorama navigation," where the current view is a slice of the total view, and the user can scroll left and right to see the rest of it; this is definitely an interesting idea, and it leads to some very smooth transitions between screens.

The bad news

Unfortunately, there is some bad news, and much of it was quite surprising to me. It stunned me that you must either deploy applications through Microsoft's app store as a public app, or you have to connect the phone to a PC and use Visual Studio to deploy an app to the phone. I can picture the look on an IT person's face when you tell him that he needs to deploy like that. The only saving grace here is that the Express editions of Visual Studio can perform the deployments, so at least you won't need to spend big bucks on Visual Studio for the system administrator just to install internal Windows Phone 7 apps.

That was the really bad news. There were a number of other less awful shortcomings, which include:

  • The only language that will work up front is C#; VB.NET developers need not apply.
  • The "tiles" are not interactive like the dashboard widgets on Android.
  • There is no SQL Server Compact Edition or other built-in, lightweight database.
  • There is no built-in JSON serialization.
  • Applications cannot access the video as it records (so you can't do a real time videocast, for example).
  • The Active Directory integration seems limited.
  • There is no true background processing; it uses a push notification model to wake up the application.
Consumer-oriented developers > enterprise developers to Microsoft?

Microsoft knows that some of these issues are deal breakers for developers, particularly enterprise developers. Microsoft has made it really easy to create gorgeous games and Twitter clients, but it's a lot more difficult to write something like a system for a sales rep to handle sales while potentially being offline. My guess is that Microsoft is planning to address at least a few of these issues in the near future; I am sure that better multitasking and SQL Server CE are on the way, but who knows when it will happen. However, Microsoft may not plan to address all of these issues; for instance, there are open source JSON serializers that are already popular, so there may never be built-in support. And the titles are not interactive to save battery life.

It really surprises me that Microsoft seems to consider enterprise developers to be less important than consumer-oriented developers because enterprise developers are currently Microsoft's last bastion of support in mobile. By prioritizing consumer-oriented developers, Microsoft is essentially starting fresh in the marketplace. By breaking backwards compatibility with Windows Mobile 6.X, Microsoft was doing this anyway, but it's really hurting the enterprise developers who chose to remain with the Microsoft platform and wait patiently for Windows Phone 7 instead of jumping to Android or iOS.

I think this is a mistake that will cause a great deal of ill will for many developers, which Microsoft can hardly afford right now. When you are asking developers to commit to a "clean slate" platform reboot like Windows Phone 7, you need every developer on your side that you can get, and missing the mark for your core enterprise base in favor of catering to the already crowded consumer-oriented field could be the Achilles' heel for Windows Phone 7.

Android was able to succeed because iOS was the only consumer-friendly OS out there, and it was limited to one carrier. If Apple hadn't gone exclusive with AT&T, Android probably could not have found a market. Now that Android has filled that gap, I find it hard to believe that Windows Phone 7 will be so compelling that it will make a significant inroad on that side. And by leaving the enterprise advantage in the past, I find it hard to believe that Windows Phone 7 will make significant progress against Android and iOS, which are quickly gaining momentum there as well.

Bottom line for developers

My take on Windows Phone 7 for developers is a bit of a downer. I really like the platform, and I think there are some good things about it for users and for developers, but I suggest a wait-and-see approach to any kind of development that requires a substantial commitment of resources. Sure, you might consider spending a few weekends putting together a cool little game or app and try to be the early winner in the app store, but betting the farm on a Big Application would carry an awful lot of risk until Windows Phone 7 proves that it is a contender.

More Windows Phone 7 coverage on TechRepublic

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.

---------------------------------------------------------------------------------------

Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!

About

Justin James is the Lead Architect for Conigent.

45 comments
kerex142638
kerex142638

I'm an IT manager for 2 fertility clinics. Feels like Win7 is an ongoing mystery regarding its course of development. I put my eggs in that basket. Hope it won't blow up in my face :).

marcosarcondicionado
marcosarcondicionado

YEA, That's precisely the way I see it. While the potential for some really great consumer apps is there, between Silverlight and XNA, I feel like by not getting the story right for enterprises from Day 1 will prove to be a big mistake....Thanks! Ar Condicionado Massagistas Acompanhantes

mattohare
mattohare

I remember a trend like this with windowing interfaces getting to the mainstream. It was an Apple niche at first. Then we had MS making its way of doing applications, and pushing other development tools out. Some of those tools responded by providing an intermediate platform that let you compile to Apple, Linux/X-Windows, and MS-Windows. I wonder if we'll start to get the same 'layer' products here? Or will I have to have a team of developers for each platform?

lostcarpark
lostcarpark

I'm an Android fan, but the one area I was expecting Windows Mobile 7 to be able to claim a big advantage over Android and Apple is in corporate enterprise environments. To do this, they need seemless AD integration and the ability to push out a standardised set of apps. It looks like MS have gone for the consumer market instead, and Blackberry can continue to have the enterprise market to themselves.

inet32
inet32

I've been a Windows developer almost all my professional life, starting with DOS and Win16. Today I write sw for PC's using .Net 4.0 and WPF, which I love so much I sometimes feel like going door-to-door like some software Jehovah's Witness saying "Have you read 'What's New' for .Net 4.0?" _BUT_ I'm so disappointed in Microsoft's mobile story that a few months ago I committed to getting up to speed on Android and Eclipse! The future is mobile and I don't think Microsoft is taking it seriously.

jefferyp2100
jefferyp2100

If MS can get corporate IT shops onboard, WP7 will do alright. But it sure doesn't like look MS had corporate IT shops mind when they created WP7. The biggest appeal I can see is corporate IT already uses .Net, C# and Visual Studio. Microsoft shops like to stay in their comfort zone. Personally, I think the corporate IT shops are going to balk at the deployment model and no local DB

jasonmgroce
jasonmgroce

"you might consider spending a few weekends putting together a cool little game or app and try to be the early winner in the app store" You hit the nail on the head. I'm doing just that, actually, but I really hope Microsoft gets their heads in the corporate game and fixes some issues, or the only real developers out there are just going to be direct competition for myself.

iravgupta
iravgupta

"The titles are not interactive" - shouldn't it be "The tiles are not interactive"

swildermuth
swildermuth

JSON is supported. In the System.ServiceModel.Web assembly is the DataContractJsonSerializer class that does it. Also, in the SL3 SDK is the System.Json assembly that works (you have to reference it from a SL3 SDK installation though).

QAonCall
QAonCall

You wrote: Unfortunately, there is some bad news, and much of it was quite surprising to me. It stunned me that you must either deploy applications through Microsoft?s app store as a public app, or you have to connect the phone to a PC and use Visual Studio to deploy an app to the phone. I can picture the look on an IT person?s face when you tell him that he needs to deploy like that. The only saving grace here is that the Express editions of Visual Studio can perform the deployments, so at least you won?t need to spend big bucks on Visual Studio for the system administrator just to install internal Windows Phone 7 apps. MS is following the same model as the success that is out there, wile experimenting with a secondary distribution model. Since mobile OS are devoid of any significant 'protection' the only trust model is these 2. Install yourself through a conscious effort, or through a trusted vendor. As a consumer it stinks, but until the beast can be controlled, it is what it is. MS appears positioned to bulldoze through this, not cut an elegant incision in this market. Games and gadgets are cash cows (S. Jobs). MS wants in on that.

inet32
inet32

... That's the problem. Currently if you want to write a smartphone app you have to write a separate one for each platform - iPhone, MSFT, Android, Blackberry - and probably Palm, Nokia, etc, if they survive. This is a pita because no platform has dominant position. According to Businessweek recently, Android has 27% of the smartphone market, iPhone has 23% and it goes down from there. This means developers cannot afford to target just one platform. On the desktop they could, because Windows had 90% of the desktop market which means they would only miss 10% of the market if that's all they targetted. But with smartphones if you only target the most popular platform (Android) you miss 3/4 of the market! I want to see some convergence, hopefully on Android

Justin James
Justin James

That's precisely the way I see it. While the potential for some really great consumer apps is there, between Silverlight and XNA, I feel like by not getting the story right for enterprises from Day 1 will prove to be a big mistake. J.Ja

Justin James
Justin James

That is correct, we will get it updated. J.Ja

Justin James
Justin James

I was told by Chris Craft specifically in his presentation that innate JSON serialization was not in WP7. J.Ja

tbostwick
tbostwick

Although I personally like Windows 7 and believe it's the "best" m$ OS yet, I can't fathom WHY we would need to have a Win7 based smartphone. I can understand M$ reasons - and they're obvious, but your points on the CONS tells it all. The same issues that perhaps still plague Windows in general are an issue here as well. Why would a phone need SQL?, why does AD even apply in a phone situation? M$ is simply trying to minaturize the PC and call it a smartphone instead of being truly innovative and avoiding ALL issues it currently faces by moving away from .NET, AD, SQL, Silverlight - basically trying to be fresh and new on something already kinda old. Android exists in the smartphone world and that's it, iPhone the same (although it LOOKS a lot like Mac OS X). There's good reason why Apple or Google DIDN'T have these issues when casting their wares into the smartphone stream - a lesson M$ has yet to learn.

Justin James
Justin James

It was a huge surprise to me because it is a step back from the way things work now for Windows Mobile 6.5. Of course, it's a brand new OS (the "version 7" tag on it is a real misnomer for marketing purposes, it really is version 1) and I am not going to expect it to be feature equivalent. Yes, it's what both Android and iOS have, or had as a deployment model. But here's the thing... right now, Android is rolling and iOS is the king to beat. There is no room in that market at the moment for a third player. Maybe once Android gets market share you can try to dethrone it or iOS by finding a market or function gap and exploiting it, but right now, both have too much forwards momentum. Unless Microsoft is prepared for a multi-year uphill slog (and I highly doubt that their developer ecosystem will stay by their side for that), this is a losing strategy. No, Microsoft really needs to expand from their base, not make their base worse off than they were on WinMo 6.5. And *that's* why I think that this deployment situation is such a mess. The problem is ultimately that no IT department wants to have to physically configure dozens or hundreds of devices... including reconfiguring them as "development" phones (which is what needs to happen to do a manual deployment), they really need an "over-the-air" option. J.Ja

mathomp3
mathomp3

Read up before posting blogs. While you have to use the store, you can setup private installs, and even do beta install sections. So companies go out and create an application put it in the private location, and give the user their own product key, to allow the install. Similar setup can be done for beta software, which is sent to limited people. Talk about it using a persons live ID as an option as well. By having everything in one place you solve the problem android had when it first came out chaos of app location. Also the market place is getting tweaked to hold all software from MS, for all of its products, pure 1 stop shop, while also providing custom setup for businesses. You can do JSON, and OMG no real time video edting on your PHONE people, its a PHONE. Not to mention you get local storage on the phone that is sandboxed, you really need a database? Or just slap the data into xml. BUT its a phone, "always" up internet connection, and sql azure sitting there for all your database needs, duh. MS is pushing hard for cloud syncing, for both file storage and sql db.

gak
gak

I agree these deployment options are OK. From my personal perspective, they are just perfect. I believe when the first corporate user complains, MS will explain how to install a corporate app store in no time.

Saurondor
Saurondor

As far as I understand Android allows one to setup their own "store". Something I find very beneficial for businesses. They can setup their own internal store and supply their employees from there.

mattohare
mattohare

Maybe I can double up my developers on the various platforms. It'd be hell if they all get a new version at the same time that breaks old apps though.

Justin James
Justin James

The worst part is Android, because the OS is so fragmented. Have an app that uses Bluetooth? Well, now Android's market share is a lot lower, because you can't touch the Bluetooth in any version of Android below 2, which is about half the marketbase the last time I looked (but it may have changed, now that Verizon rolled out 2.1 and now 2.2 to the Droid, which was the first big Android hit). Android fragmentation makes its marketshare impossible to understand from the developer's perspective, because features that you need may not be present in many or most of the handsets in the field. Ugh. :( J.Ja

incendy
incendy

Web/WCF services and Sharepoint are so much better for data sources at this point. I would much rather my Data be on a Datacenter for security reasons, fault tolerance, storage concerns and also processing power. Oh and of course application maintenance. I can't really think of a good reason to have a whole database on a ""always"" connected mobile device to be honest. By the way, this applies to any programs to me these days. I just don't see a need to store data locally, cache yes. But store no..

incendy
incendy

Access Points, Email, Web Pages etc are all public apps that require you to login. I don't see what the big deal is for deploying your app on the market and giving your users securiy keys to activate etc. With Web Services it would be very easily to update if there were issues. Also, give me silverlight's implementation of xml and wcf services any day compared to any data implementations for Android or IOS

Justin James
Justin James

The OS known as "Windows Phone 7" is *not* "Windows 7". They are totally different operating systems. J.Ja

QAonCall
QAonCall

There was a third way, what would it be? The ultimate issue here is the trust model. Until you can harden the phone (and apparently either no one has done that completely, or the cash cow in delivery is more important, you decide?) I know right now you can download anything you want on winmo6.5 (I use an HTC evo with windows, full disclosure). While it is is convenient, no one has been bitten badly by it. The problem is the security of applications moving forward, since more and more of these devices are going to be feature rich, and enable line of business applications. I am on board with a new way, just not convinced it is there yet. Local deployments would be a great way. Unfortunately, to your point, this is administratively taxing. Maybe you can ask the folks that on the boards how or if they are using LOB application on droid or apple stuff? Maybe the truth is closer to reality and not the perception that everyone are using their smart phones really just for email and calls, and the rest is just fluff? Your call. Good stuff either way!

inet32
inet32

"OMG no real time video edting on your PHONE people, its a PHONE. Not to mention you get local storage on the phone that is sandboxed, you really need a database? Or just slap the data into xml. BUT its a phone," Seriously, that really dates you! Smart phones are NOT just telephones with extra features. They are handheld media devices and one of their many features is phone-calling. (for the majority of people I know with smartphones, phone-calling is a MINORITY of what they use it for). I just started my first real-world, for a real client, Android project (after years of nothing but Microsoft development) and I'm already using the built-in database! Microsoft needs to wake up and smell the Starbucks before it's too late.

Justin James
Justin James

The information I was given in Chris Craft's presentation specifically said that this was not possible at the moment, and I asked about it. Yes, you can do JSON with third party components, but it would have been nice for it to be baked in, especially for new developers to the platform who often start with the "official" stuff only to see what the capabilities are. No video access is not a big deal regarding "editing" (which I agree is not something to do on the phone), but it IS critical for something like video conferencing, videocasting, etc. No internal database? Sure, not a problem for a consumer grade app. For an enterprise app, it's critical. When you are dealing with as much data as a lot of these enterprise mobile apps use, a local DB is a lot better than XML. And if you think that cell phones have an "always on" connection you are wrong. I know a number of mobile developers who *rely* on a local DB and the sync framework because they deal with a ton of data and unreliable network connections... scenarios which relying on the cloud and simple local XML serialization just doesn't work out to well. Which why I say that they are not focused on enterprise developers, who is their current market base. J.Ja

QAonCall
QAonCall

I posted I didn't understand why JJ was disappointed about this model? You replied read up before posting... Then proceeded to demonstrate that MS had a secondary option for control of distribution (unlike Apple and sort of like android). I am missing what I stated that was incorrect that I should read up on before I post? I like the model, but certainly it is not 'consumer' friendly as grandma is not going to install VS express to do an install, but it does protest the phone from nefarious software installs (trusted source security model) Help me out!

QAonCall
QAonCall

has 2 tracks as well, which is why I was unclear on the comment by JJ.

inet32
inet32

In THEORY Android is supposed to be backwards compatible, so that nothing that worked in 2.1 will fail when you upgrade to 2.2. In practice, not so much. I've already reported one bug to the Google/Android developers list about websites that open fine in the default Android browser in 2.1 but fail in 2.2. This has been reproduced on 2 manufacturers' phones (HTC and Moto) and there is no problem opening the same pages in iPhone or on desktop browsers IE, Firefox, Opera or Safari.

bmnfan
bmnfan

You might need it for a number of reasons. Temporary storage for offline is the first one I can think of. XML won't cut it if you need large amounts of data. OTOH, there is a DB implementation on codeplex right now, and another from McObject (perst). So, some of the issues listed in the article have already been addressed by third parties, and it's not even out yet. I totally agree with the private deployment thing beign a problem though. Also, not being able to access video live means it'll be hard to do a barcode scanner or something like that (how do you detect when it is aligned?)

incendy
incendy

I pretty much view any app as public regardless especially when it is on a device that is carried around the world. I am safe guarding it no matter how the user installs it and I don't see the distribution method having any effect on my design or implementation of the program. If you are basing your security and model based on a ""secure"" distribution channel you are probably doing it the wrong way.

Justin James
Justin James

Sure, that's an option, provided that you don't mind other folks being able to download your internal usage app in the first place. A better option would have been to allow private items in the app store, or downloads from a non-app store location, though. J.Ja

Justin James
Justin James

... would either be an option to have private items in the Microsoft app store, or to allow installs from non-app store locations. Since apps are just Silverlight out-of-browser apps, it would not be a stretch to see non-app store downloads at a technical level. J.Ja

david.hunt
david.hunt

I live and work in a regional area and unreliable connections are the order of the day. No ThinClients for me or the many others who live / work in such areas. Capital Cities may be ok, unless you work in the basement Doh! XML is good for config files and to exchange data between systems (if the data isn't too big), but a database, it isn't. To me, having a Lite databse on the local device makes a lot of sense, as does using a sync framework, rather than losing access to data when off the network.

incendy
incendy

I think you forget Microsoft has the single biggest consumer computing product there is in Windows which is probably the closest thing you will find to compare the smartphone market. And yes they sell a lot of copies to business but they also lead the personal computing space.

mathomp3
mathomp3

If they can pull off cloud integration between desktop office, web office, phone office, and work out security controls well, aka Active Directory and application lock down, etc. Then they might have a shot. Key for them is to push RIM's advantage of enterprise security. If they can provide what RIM does and put a consumer flair to it. I think they will do really well, even for the enterprise person. Which lets face it cares more about stupid apps then they do business ones. My company currently has Droids, and even though we have several nice "internal" apps for work that are slick and do a ton of stuff for our staff. All I hear is hey you get that level app which makes your phone a level? Or you get that new compass app which lights up when you turn to your destination? etc etc. My point is MS can't have an enterprise driven phone anymore. It needs to first go consumers, but keep enterprise in the pocket, providing enough control to give IT the warm and fuzzy of putting their stuff on it. As time goes on they can push more enterprise pieces onto the phone. Its a sticky place to be for MS, needing to cater to enterprise, but having a market that is 100% consumer driven.

Justin James
Justin James

Yup, I think the potential for some sweet apps is definitely there! XNA and Silverlight can make some slick stuff. I could see the device as a media center extender too, which would rock. Tons of potential. But my fear is, by focusing on consumers, what little base they still have (enterprise) will wither away before they get enough traction with consumers. Let's face it, the only consumer-oriented hit Microsoft has *ever* had is Xbox. They don't know how to market to consumers, even when they have the better product. J.Ja

mathomp3
mathomp3

Well MS does have their new database type they just rolled out with webmatrix which is a stripped down version of sql but uses "file" based storage, much like mysql. Wouldn't be hard to port it over. Not to mention, Silverlight allows you to run database driven applications in offline mode, where they store data locally, and auto sync when a connection is returned. It's built into Silverlight's core. So really they provide the function by nature of Silverlights offline app mode. They also have / working on private setups for their cloud services, where you basically buy cloud servers that are pre-configured to run just as MS's own cloud, ready out of the box. If you need your own private cloud. Also the idea is for applications to stop doing things on the machine, but to utilize a web service, to preform their work. And I know phones don't always have a connection, but if your on a half decent network, you typically have some form of connection, and if your paying for a smartphone data plan, your going to complain if your connection is shotty at best. Then add on all the wi-fi style networks going up, and won't be too long before you will have stable always on connections. A key part / direction is to note that since xna / silverlight are vector based UIs they port between phone, tablet, laptop, xbox, TV(via xbox, internet ready sets). As a proof of concept I build an application that works across the phone prototype software, a laptop, a desktop, and a touch screen tablet(laptop). All the same backend codebase, with just a rare (manual) UI change. Typically though the UI adjusted well enough without rebuilding. Once they tie xbox into the silverlight side, you can use project natal aka kinetic to turn your tv into a huge touch screen. So lots of potential with a few hickups, which can all be resolved.

lostcarpark
lostcarpark

IT Managers need to be able to push out standardised apps to all employees without having to bring all devices back to base. I think MS have too much ground to make up in the consumer market, but if they offered centralised management, they could clean up against Blackberry. As far as I'm concerned, RIM have no serious competitors in this sector at the moment.

Rndmacts
Rndmacts

I am sure this feature is more for the business user where the IT department wants to control the app. Blackberry does it, Android does it and now MS does it, I think that they are showing businesses that they are serious about security. I think as a business, I would feel a bit more confident that apps I ran unique to my business are my business' with outsiders not having access to them. Blackberry has the same feature when companies run their own servers.

mbrandon
mbrandon

... a private deployment option. I call it a development deployment - just like IPhone & android, you can use the development tools on a developer device to do testing w/o a "store".

Justin James
Justin James

The point isn't that they don't have a private deployment option (they do). The point is that it sucks (plug device to machine, start Visual Studio, tell device it is a "development phone", deploy via Visual Studio to phone, repeat for each device) compared to being able to easily push out to phones or have them quickly and easily pull from a repository or Web site. J.Ja

Editor's Picks