(A note on terminology: What used to be known as Metro apps, then Windows 8 apps, Windows Store, modern, then universal apps, are now simply called Windows apps -- this week anyway. Although you'll find references to all those earlier terms scattered through the documentation. As Paul Thurrott explains on his website, what used to be called Windows programs or Windows apps are now known as Windows desktop apps. Meh.)
To understand the goal of the new tools, take a look at the presentation given at Mobile World Congress a few week ago by Kevin Gallo, director of the Windows Developer Platform at Microsoft. Gallo explains how Microsoft, while bringing together all versions of Windows to run with a common core, has also brought the various developer products together and melded them with a single API interface.
This convergence enables one app to run on every Windows device -- on the phone in your pocket, the tablet or laptop in your bag, the PC on your desk, and the Xbox console in your living room... All these Windows devices will now access one Store for app acquisition, distribution, and update. For APIs specific to a given device family (a phone dialer), the universal platform also provides an easy way to light up that functionality within an app without having to resort to using conditional compiler flags.
That's the Holy Grail developers have been seeking. Whether the Windows 10 developer platform will support that level of integration remains to be seen, but if the 'Softies can pull it off, we may see developers actually writing new, worthwhile software for Windows 10 on all devices.
Gallo went on to describe five key points in the new SDK:
I was particularly intrigued by Gallo's promise for hosted Web apps, turning websites into Windows apps: "Windows 10 will make it easy for you to create a Windows app that packages your website for publishing to the Store. Once installed, your website can update and call Universal APIs from JavaScript, creating a more engaging user experience."
The Adaptive UX initiative is controversial: Many devs are skeptical that Microsoft can produce a UI Veg-o-Matic that adapts a single app intelligently to different screen sizes. It's particularly controversial for experienced mobile developers, who are accustomed, begrudgingly, to hand-tuning UIs for every conceivable screen size. The jury's still out.
A Windows Dev Center post goes into great detail about many of the new APIs, some of which are still experimental. There's strong interaction between custom apps and Windows itself in such areas as drag-and-drop, encryption, power conservation, Wi-Fi and Bluetooth, HTTP live streaming, location tracking, and ink panels. There's even an IsWindows10OrGreater function.
Microsoft product manager Cliff Simpkins talks about highlights in the new SDK in his Building Apps post. Those of you with older Metro apps, er, Windows 8.1 apps might give these a try:
For developers with an existing Windows 8.1 app, you can quickly try [Adaptive UX] out by (a) removing one of your UI projects (and going from three Visual Studio projects to one!) and (b) add the improved ViewStateManager to control how your UI adapts at runtime... Start checking, at runtime, if a Windows feature is available on the device before you call a related API. A good API contract for you to try out in your code to see this in action is HardwareButtons, which is present on phones (via the Mobile Extensions SDK), and thus available on the phone and mobile emulator but not available on the desktop. We believe that API contracts and the extension SDKs will allow you to adapt your code at runtime to deliver user experiences that feel right on the device it's being run on.
Windows 10 Technical Preview supports "old" Windows 8/8.1 Metro/universal apps. If you need to continue supporting those apps, you may have to resort to conditional compiles. On the other hand, if you're going Windows 10 only, your app can cut the #IF's and use the new Adaptive UX code, for hardware-specific tests at runtime. A word to the wise: This being a beta, you may well see different behavior in your old apps running with the new SDK.
Finally, S. "Soma" Somasegar, corporate vice president of the developer division at Microsoft, posted an MSDN blog highlighting some of the key differences in the Windows 10 SDK:
You can create a Windows universal apps with the new project templates in Visual Studio 2015 in a language of your choice -- C#, VB, C++, or JavaScript. With Windows 10, it is now possible to have a single universal app project that when deployed can run on all Windows 10 devices like PC, Phone, Tablet, or XBOX... Deploying the application to a phone running Windows 10 is not yet supported and will come in the future with a flight of a future release on Phone. In the meanwhile, you can experiment by deploying your app to a Windows 10 Phone emulator that is installed as a part of these tools. Support for other Windows 10 devices like XBOX is not yet available in this preview.
Somasegar also goes into detail about how .Net will carry forward to the new platform:
With Windows 10, all .Net apps will be compiled with .Net Native by the Windows Store before being delivered to devices... Windows 10 also comes pre-installed with .Net Framework 4.6 which includes many new features including improvements in WPF and Windows Forms.
To get up and running, first make sure you're completely up to date with Windows 10 Tech Preview build 10041. You'll also need Visual Studio 2015 Community Tech Preview (CTP) 6, which was released last month, as well as the new Tools for Windows 10 Technical Preview. Full instructions are on the Windows dev site.
Microsoft already has sample code posted on GitHub.