Microsoft has altered course on a number of its decisions for the Xbox One. Now it has announced that you will be able to run your own program on any Xbox One. But the devil is in the detail.
Not that there is a lot of detail at the moment. All we really know is that Microsoft has confirmed that any Xbox One can be used as a debug machine.
Games machines often have special debug version, usually packaged differently and costing more than the retail version. Being able to run debug i.e. unsigned games on any Xbox One is good news and as Marc Whitten, Xbox Corporate VP said to Engadget:
"Our vision is that every person can be a creator. That every Xbox One can be used for development. That every game and experience can take advantage of all of the features of Xbox One and Xbox LIVE. This means self-publishing. This means Kinect, the cloud, achievements. This means great discoverability on Xbox LIVE. We'll have more details on the program and the timeline at Gamescom in August."
This is also good. The Xbox could be a great force for teaching people to program. It has also been a great platform for the weekend programmer playing around with creating games or small applications. Sometimes these weekend apps make it into the real world and actually make some money.
There are also a lot of independent games companies who can't afford a full and fruitful relationship with Microsoft but still produce some good games. It now appears that such indie, and even weekend programmers, will be able to publish their games and Microsoft is promising to speedup and simplify the certification process. Details of how the indie games will be listed and sold hasn't been made clear - presumably we have to wait for Gamescom next month.
There is an even bigger unknown in the mix that many news reports are overlooking. For the Xbox 360 there existed a completely free development environment - XNA. A beginner could download XNA Studio and start creating .NET apps that made use of DirectX without having to learn about the complexities of DirectX.
With XNA dead the new system, whatever it is, has to deliver 3D graphics to the average user - well it does if it is going to live up to the aspiration "Our vision is that every person can be a creator". At the moment the only sensible route for Microsoft to take in creating a new programming environment for Xbox One is to use what it has in WinRT. This might, as a spin off, even give WinRT the developer boost that it really needs and mark another nail in the coffin of the desktop .NET system.
The big problem with this idea is that currently the official Microsoft WinRT development system doesn't have a way for the C# programmer to use DirectX - that was what XNA was for and Microsoft just killed that solution. Currently, if you want to write a high performance 2D or 3D game you have to use C++. The same is true for Kinect applications. You can get a long way with Kinect in C# and even do some 3D using the limited 3D features in WPF. However, if you want to go further then you need to move to C++ for Kinect development.
While there is nothing wrong with a beginner's Xbox One development tool based on C++, most would agree that it's not the best way to get users interested in programming. It isn't just that C++ is a slightly more difficult language than C#, it is more that it exposes the programmer to the details of DirectX - which aren't pretty.
So while Microsoft might well allow everyone to run unsigned programs on their Xbox Ones. if the tools aren't right the chances are no-one will want to.
There is also the small problem of security. Microsoft has to find some way to allow the good guys to run unsigned programs without creating an open door for malware to walk right in.
It will be interesting to see how things turn out - only a month to wait.