Next week is a big one for Microsoft. They will launch the next Windows desktop, a new tablet, and new version of Office for both. Much has been made of the new "Don't Call Me Metro" UI, the price point of the tablet hardware, and the interest of consumers in anything not made by Apple. I'm not interested in disusing the validity of those concerns, but I will say as a developer I see no need to support anything new coming from Redmond. And in my view all problems stem from the Windows Store.
Crazy to think Microsoft would copy the worst feature of Android, but not only have they copied it, they embraced and extended it.
For over a decade Microsoft has been pushing .Net as the platform independent development framework. "Platform" means "Microsoft Platforms" but if you are in the ecosystem .Net has your back. The Developer Division has done an excellent job of evolving .Net - for all the gripes I may have I must thank them for this. Dynamic language features have been added, several development models are supported, and many pieces have been released as open source. But then, like King Solomon, we decided to split things up...
There are currently 3 Microsoft run stores reaching across 4 platforms. The options are Xbox Live Indie Games, Windows Phone Store, and Windows Desktop and Tablet store. All of these are digital distribution platforms for consumer software.
Xbox Live Indies Games have been around a while, and is the oldest. On the Xbox you may use one version of C# and XNA. You may only use one version of C# and XNA. You may not use any popular engines like Unity or Unreal. You may price you game at $1, $3, or $5. You may not connect to the internet, have achievements, or leaderboards that intergrate with the gamer's profile of other achievements and leaderboards. If you choose to implement your own achievements and leaderboard (the latter by peer-to-peer networking Xboxes as cannot connect to the internet), you may not use the terms "achievement" or "leaderboard". You also may not use the Kinect SDK on the Xbox.
You might excuse the draconian limitations of the Xbox store because it's a game console, a different market, or that Microsoft has never been conformable leading innovation and prefers to follow others. It's hard though to understand why this limitation mindset followed to the Windows Phone. The phone does let you use a few more language options and you can use SilverLight or XNA, but are still blocked third party frameworks like Unity and Unreal. Crazy API limitations were also enforced, such as you may not use the phone's camera directly. Thus, no Instagram on WP7. The one good thing I can say for the phone platform is that it's easy to port XNA PC/XNA games to. Sadly, to make this possible Microsoft released XNA 4.0 which is 90% a dumbing down of XNA 3.1 so it can run on the phone while making the Xbox use 4.0 as well.
With Windows 8, Windows Surface (tablet), and Windows Phone 8 Microsoft has opened up to allow 3rd party frameworks like Unity and Unreal. This is great, because as a game developer this is the best way to reach these new platforms. Windows 8 and Surface will run RT, Windows Phone 8 will not, and instead still use SilverLight and XNA. XNA isn't currently supported by Visual Studio 2012 and there is no announced plans to add it, SilverLight 4 & 5 are supported. Windows 8 desktop will support "desktop mode" apps, but these will not be sold in the Windows Store.
While you might get your head around this for development, there is one other piece of fragmentation. All of these stores are run by different divisions and do not over lap. There is a site for Xbox, another for Phone, and another for Desktop and Tablet. There is a support process for Xbox, another for Phone, and another for Desktop and Tablet. There is a developer payment system Xbox, another for Phone, and another for Desktop and Tablet. There is a registration system Xbox, another for Phone, and another for Desktop and Tablet. Not all stores are available in all regions, both for consumers and for developers. Each one has a different payment, micropayment, and fee setup. Each one has a different certification process. Each one requires different documentation for tax purposes.
Publishers not Developers
The limitations of all these stores can be lifted - if you're a publisher. A publisher can work with Microsoft behind closed doors and get access to APIs not available to the independent developer.
Microsoft separates publishers from the lowly commoners in the marketplace. Games created by independent developers are branded as "indie" and forced to wear a scarlet letter reminder to consumers that these are not full games, and will not support features like leaderboards and achievements in your profile.
Favoring publishers has not only been bad for developers, but consumers as well. Titles that launched on iOS and Android launched on Windows Phone with a higher price. In some cases games that were free elsewhere charged $5 or $8 dollars in the Windows Phone Marketplace. Xbox games stay at full price long after they hit the bargain bin on Steam.
Probably the best question to ask is why any company would do this. Why abandon a phone marketplace with over 100,000 apps for a desktop and tablet marketplace struggling to reach 5,000? Why continue to give favor to publishers who are lazy at best and abusive at worst? I have a theory on this, though its just a theory.
Microsoft is a competitive work environment. From department heads battling for control to employee's competing for a share in the bonus pool. Many employees are ranked within their department best to worst, then given a bonus based on position. This means to get a bigger bonus it's not enough to be better at your job, you must also be better than your peers. I believe this creates a tense work environment that encourages employees to work against each.
The second factor is Microsoft is a B2B company, and does not understand consumer marketing. It can be argued that Windows and Office dominate because that is the standard for business and many home PCs are used for doing some work remotely. The Xbox 360 stands out, but much of its success can be attributed to exclusive publisher deals, Sony screwing up the PS3 in every possible way, and Nintendo leaving behind hardcore gamers for... waggling. Timing... is... everything.
The last factor is a result of the other two: Microsoft's problems with commitment. Xbox Indie Games had a few years before resources were diverted. The Windows Phone managed to get a year of spotlight. The Zune... did you know the Zune was planned to have a store as well? The Zune HD had an SDK, supported SilverLight and XNA, and even had a few apps. I remember carrying my Zune HD to an MVP summit when it was just over 6 months old. At the announcement of the new Windows Phone 7 someone asked, "since it will be a while before there is hardware, can the WP7 SDK run on my Zune HD?". I wondered the same thing. Then the Zune HD was declared dead: "we are not supporting legacy devices with WP7".
Legacy. Six months old. Legacy. It could run SilverLight and XNA, same as WP7 but was marked as Legacy. All talk and plans to open up a Zune marketplace were stopped.
Anyone remember the Games for Windows Store? Didn't think so...
How to Fix It
The fix is pretty easy, but takes a commitment from the top that isn't there.
First, all developers are equal. No more partner-only APIs. As "evil" as Apple may be, even they don't do this. I have access to the same API and SDK as Activision. Let the consumers decide which apps are best. The store UI should not artificially segregate apps by size of developer or label some as "indie". Having a "recommend" list is fine and can be beneficial, but don't make partnership a prerequisite for being on that list.
Second, have a single process for all stores. Unify and simplify the payment system. Microsoft is the only company to insist paying international developers in the US. Apple and Google pay developers in local currency from local offices making tax issues much simpler. The basics of the certification process and requirements should also be the same across all marketplaces, and there should be a single point of contact for developer support.
Last, and this isn't even as important as the first two, support the same development technologies on all platforms. Consumers expect to be able to run the same apps on their tablet and phone and should not have to hear from developers it requires a complete rewrite. To do this I think the first step is to support Silverlight and XNA in the Windows Store and on the Surface tablet. I see no reason except politics why this cannot be done. Both have been ported to less powerful devices and will be supported for Windows Phone 8. If WinRT is the future, then start by rolling out WinRT to all devices as an option and slowly phase it into the ecosystem. Once its stable, announce a sunset date for SilverLight, XNA, .Net, etc. that gives developers time to migrate.
Bonus, support Windows Store and Windows RT on Windows 7. Again, no technical reason this cannot be, just politics and possible a reality warped marketing department. Giving developers easy distribution to the massive install base of Windows 7 will rocket the number of apps available in the Windows Store. I'm talking Earth to Alpha Centauri in less than a day rocket power.
Happy to be Wrong
It doesn't really matter to me if you think I'm right or wrong. The market will decide. The Windows Store will either be a revenue source for developers or not. I'd love to see Ballmer bragging about how they blew away Apple's $5 Billion paid to developers from the AppStore. I'd love a tablet and phone market not so heavily dominated by a single company. (I know, Android is trying but that's another post.)
You might also think I have a games bias, and that this isn't relevant to the Windows Store as a whole. In 2009 Apple claimed 50,000 Apps in the AppStore. In 2010 Apple claimed 50,000 Games and Entertainment apps in the AppStore. We now have approximately 125,000 Games (Entertainment is another 65,000) in an AppStore of just under 700,000 total apps. Games are the largest category, and while I cannot find official statistics, I would assume its also the largest category by revenue as well.
Games are key - they keep users coming back and users are always willing to buy new games. You might buy a financial management app, but you won't be checking the store weekly for new financial management apps. Games on the other hand are disposable apps. After playing a game for a while, you're ready for a new one. People spend an average of 7.8 hours a month gaming on their iPhones. Angry Birds makes $6 Million per month just from ads. There is an Angry Birds Star Wars game due out November 8th - I'm not sure which franchise is the getting the boost by this.
Its going to be a rough year for Microsoft. Critics will declare the Windows Store DOA and that may be unfair, but perception is reality. The desktop OS will move units, but in a world that is using the desktop less and less that is not enough. The question in my mind is can Microsoft pivot when things aren't working?
Now if you'll excuse me, I need to get back to deciding if I want to learn Unity or MonoGame...