The Build 2015 conference just ended. It was one of the most important Build/PDC conferences since the Build/PDC inception. Most (if not all) sessions are available on channel 9, and even those that attended Build (myself included) were in only a fraction of the sessions since there were about 10 of them in each time slot.
To get a good overview of the various announcements and get links to important downloads, you should head to this post in the Visual Studio blog. What follows are my own impressions and opinions on some of what I experienced at this year’s Build.
The Universal Windows Platform (UWP)
This was one of the most important parts. The idea that started with Windows 8,1 and Windows Phone 8.1 of having a “universal” app model that would be supported and work on both these platforms is now expanded to include all device form factors that run Windows 10 – from IoT devices such as Raspberry Pi 2, through Windows Phone, tablets, the PC, HoloLens and the giant Surface Hub. While in Windows 8.1/Phone 8.1 the API convergence was good, but not perfect, it’s close to perfect with the UWP for Windows 10.
This is echoed in the way Universal apps are built with Visual Studio 2015: instead of having a different project for each platform (Win 8.1/Phone 8.1 at the time) and having a “Shared” project that would hopefully contain the platform agnostic code – we have a single project that targets all of the Windows 10 form factors:
This may seem restrictive – what about those different screen sizes? Well, it turns out there is a new panel, RelativePanel, which, with a set of new triggers, can help adapt the user interface to different screen sizes and orientations. Still, it’s possible to create a separate XAML page for specific form factors, if so desired.
As far as I can could see in the sessions I did attend, the API coverage is excellent, with many new capabilities coming to Windows 10 apps. Coupled with a single store for all device types means you can publish the app just once and have it available to all form factors.
Bringing more Apps to the Microsoft ecosystem
One of the often heard complaints about the Windows platform (Phone/Tablet) is the lack of apps compared to iOS and Android. Even worse, developers and companies rarely consider the Windows platform worthwhile while developing their iOS and Android apps because of the relative low market share they have compared to iOS/Android.
This Microsoft came up with a fantastic way of bringing more apps to its ecosystem: compiling existing iOS (Objective-C) and Android (Java/C++) in Visual Studio and get a Windows 10 app with no code changes! This seems pretty incredible considering the amount of work needed to achieve this. And although, it’s still a work in progress, this could be a promising way to get more apps to Windows. Still may questions remain open: what about 3rd party libraries? What about OS versions that would evolve in the future?
Currently, an iOS project, for instance can be converted to a Visual Studio solution and built within VS. It can even be edited (with syntax coloring, etc.) within VS. For Android (and iOS in the future), some set of Java APIs were created to give access to Windows-specific features, such as Live Tiles, if the developer wishes to enhance the app’s experience while running on the Windows 10 platform.
Whether this iOS/Android opportunity would be exploited by developers, still remains to be seen. But, regardless of the success of this idea, one must admire Microsoft for making such bold and complex move.
Another exciting way of bringing more apps to Windows is something called “Project C” (“C” stands for “Centennial”). This project concerns itself with converting normal Win32/.NET apps (e.g. MFC, WinForms, WPF) to an App, that can be published to the Windows Store. This is an excellent idea that opens up a whole set of apps from existing, regular Win32/.NET applications.
The technology works by taking an existing MSI installer and converting that to an App, complete with an AppX manifest and an AppX installer. I believe this is great news to developers, since now I can (e.g.) develop a WPF app that can be installed in the traditional way on Windows 7 and 8.1, and turn it into an App that can be installed from the Store safely by Windows 10 users.
This technology is still a work in progress and is unavailable with the Visual Studio 2015 RC that is currently available, but it should be ready by Windows10 and VS 2015 RTM time.
Naturally, there are restrictions on such applications. For example, if the app installs a Windows Service or a device driver, that would not work. Also, if the application requires admin privileges to execute, some things may not work as planned. For example, writing to the registry at HKEY_LOCAL_MACHINE will actually write to a private key for the app. This is very similar to the Virtualization feature introduced in Vista for dealing with legacy apps that know nothing about User Access Control (UAC). The main reason for these limitations is security. Running as a service or admin privileges makes an app capable of anything, and users (and Microsoft) cannot trust such an app. Still, a very promising technology.
For C++ developers, it’s now possible to create apps for Android using mostly cross platform C++ code. Personally, I feel C++ is too low level and not productive enough for such applications (as opposed to Java for Android apps), but perhaps the large C++ community and the availability of many C++ cross platform libraries (some of which are now part of the C++ 11/14 standard) would prove me wrong.
Roslyn and C# 6/VB 14
The C# 6 and VB 14 language specs are now finalized. This is not really new, but now with Visual Studio 2015 we can work with these features in their final form for this version. Version 7 for C# is actively discussed on GitHub (an amazing thing in itself).
Roslyn, or the “.NET compiler platform”, as it’s officially called, is now available with a “Go Live” license, meaning MS is confident enough that Roslyn is stable and is supported, which is good news. Roslyn makes many things possible that were not in the past, and our own product, OzCode, takes advantage of it as well.
The Open Source Initiatives
Microsoft has embraced open source. Once upon a time that was inconceivable (as was showing iOS and Android demos in MS conferences) is now common. Things like .NET core, slated to work on Linux and Mac, ASP.NET, Roslyn and other things are now open source on GitHub. I believe this will bring more interest to the MS ecosystem from developers in non-MS platforms.
Other interesting bits
Microsoft’s cloud platform, Azure, was naturally a lot of focus. I encourage you to watch some of the sessions related to Azure to find out more, or read Scott Guthries’s blog to get the gist of it.
Many enhancements to Windows 10 and the various APIs were introduced.
DirectX enhancements, such as in Direct2D (more built-in effects, optimizations and more) and the new DirectInk library (for working efficiently with stylus type devices) and a new WinRT library that wraps Direct2D called Win2D (I blogged about it here). For those interested, there are sessions on those topics.
There are many other interesting bits. You should probably watch Day 1 keynote to get an overview of the main topics and dig deeper with specific sessions.
Build 2015 was filled with new stuff, that will fuel the Microsoft (and non-Microsoft) developer community (and the blogging community) for quite some time. I myself will probably blog about various topics that are of interest for me, mainly in the graphics, games and apps domains.
All in all, I’m impressed by the amount of work Microsoft has done in a relatively short time period. if indeed Windows 10 and VS 2015 would RTM at the end of July, this is all the more impressive. Current Windows 10 builds still have many issues, but the latest one published at Build time (build 10074, pun not intended) seems to work much better than the previous builds.
I’m certainly optimistic for what’s coming on the Windows platform.
One last thing
This year at Build we (CodeValue) were there in impressive numbers (15) and had a booth for our own product, OzCode, the VS debugger extension. We had great time introducing and demoing OzCode to developers and the reactions were truly amazing. If you’re doing any C# development, I encourage you to check out version 2.0 (currently in Beta), and see how debugging time is reduced, and even sometimes fun, a word not usually associated with debugging.