Windows 8 was supposed bring with it the platform by which developers could produce applications that would have consistent experiences across platforms. This came in the form of Metro (and now Modern) apps which would be powered by the WinRT framework, something which had all the right technological bells and whistles to make such a thing possible. However with the much maligned desktop experience, most of which was focused specifically at the Metro apps, the platform unification dream died a quick death. Microsoft hasn’t left that dream behind though and their latest attempt to revive it comes to us in the form of Universal Applications. This time around however they’re taking a slightly different approach: letting the developers build what they want and giving them the option of porting it directly across to the Windows platform.
Under the hood the architecture of Universal Apps is similar to that of their Metro predecessors, providing a core common set of functionality across platforms, however the difference comes in the form of developers being able to create their own platform specific code on top of the core binary. This alleviates the main issue which most people had with Metro apps of the past (I.E. they felt out of place pretty much everywhere) and allows developers to create their own UX for each platform they want to target. This coupled with the new “4 bridges” strategy, which defines a workflow for each major platform to come into the Universal App fold, means that Microsoft has a very compelling case for developers to spend time on bringing their code across.
As I talked about previously the two major smartphone platforms get their own bridge: Project Islandwood (iOS) and Project Astoria (Android). Since the first announcement it doesn’t seem that much has changed with this particular strategy however one key detail I didn’t know at the time was that you’d be able to directly import your Xcode project into Visual Studio, greatly reducing the effort required to get going. What kind of support they’ll have for Android applications, like whether or not they’ll let you import Eclipse projects, still remains to be seen unfortunately. They’ve also announced the bridge for web applications (Project Westminster) although that’s looking more and more like a modern version of ActiveX rather than something that web developers will be actually interested in pursuing.
The latest bridge to be announced is Project Centennial, a framework that will allow developers to port current Win32 based applications to the Universal platform. Whilst this likely won’t be the end game to solving everyone’s woes with migrating poorly coded applications onto a more modern OS (App-V and other app virtualization technologies are the only real treatments for that) it does provide an avenue for potentially aging code bases to be revamped for a new platform without a herculean amount of effort. Of course this means that you’ll need both the original codebase and a willingness to rework it, both things which seem to be rare for old corporate applications that can’t seem to die gracefully. Still another option is always welcome, especially if it drives further adoption of the Universal Platform.
Universal apps seem to have all the right makings for a revolutionary platform however I can’t help but take a reserved position after what happened with WinRT and Modern Apps. Sure, Windows 10 is likely shaping up to be the Windows 7 to the ills of Windows 8, but that doesn’t necessarily mean that all the technological innovations that come along with it will be welcomed with open arms. At least now the focus is off building a tablet/mobile like experience and attempting to shoehorn it in everywhere, something which I believe is behind much of the angst with Windows 8. It’ll likely be another year before we’ll know one way or the other and I’m very keen to see how this pans out.