Microsoft's development platform today: What you need to know
Connect shows direction for .NET, cloud and mobile efforts
Connect 2016 At the Connect event under way in New York, Microsoft laid out its plans for developers targeting its platform – though what the "Microsoft platform" means has changed radically from what it used to be.
The slogan today is "Any developer, any app, any platform," whereas a couple of years ago the theme was "Windows everywhere."
The Connect event belongs to Microsoft's developer division, unlike the Build event, which is run by the Windows division. You would expect therefore a broader perspective, and in fact this was more than evident, with little attention given to developing the Windows operating system in the keynote.
Microsoft's relationship with Windows has become complex. On the one hand, it has a community of Windows developers with which it wants to keep faith; but on the other it wants to convince a wider developer community that it has tools and frameworks applicable to other platforms, in particular iOS and Android mobile clients, and Linux for web and server applications.
The company is therefore busy demolishing barriers to using its technology outside Windows. A quick glance at the major Connect announcements demonstrates this: Microsoft joins the Linux Foundation as a platinum member. Microsoft releases a public preview of SQL Server for Linux. Google joins the .NET Foundation. Visual Studio for the Mac is released in preview. Azure App Service now supports Linux. Samsung releases Visual Studio Tools for Tizen. Visual Studio Mobile Center announced for testing mobile applications on iOS, Android and Windows. Cross-platform .NET Core 1.1 and Entity Framework Core 1.1 released.
There is no sign now of Windows Everywhere, though there is some evidence of .NET Everywhere, with Google and Samsung showing support.
Xamarin's impact on Microsoft, following the acquisition earlier this year, is another notable aspect of Connect. Xamarin was founded to enable C# developers to target mobile platforms, and grew rapidly thanks to the success of iOS and Android. Microsoft, on the other hand, has struggled to attract developers to its Universal Windows Platform (UWP), because without iOS and Android it is not universal enough. Xamarin is providing the answer.
Developers who have followed the twists and turns of Microsoft's developer story over the years will know that there are many flavors of XAML, an XML-based language most often used to define a user interface. There are WPF (Windows Presentation Foundation) XAML, Silverlight XAML, and UWP XAML, all different. Xamarin introduced yet another variant, used by its Xamarin.Forms technology, allowing developers to define a UI once for multiple platforms.
Xamarin.Forms was immediately popular, more so than its creators expected, especially since the company had long advocated creating a native UI separately for each platform. Despite its limitations, it can be highly productive, especially for forms-over-data business applications, where the last degree of refinement is inessential. Xamarin.Forms now targets UWP as well as iOS and Android, and apparently will add Mac OS in a future version.
Microsoft Corporate VP Julia Liuson, in charge of the Developer Division, reminded me that Xamarin.Forms is not as capable as other variants of XAML.
"The version of XAML that UWP apps use is the true platform that will let you do everything that is possible, whereas Xamarin.Forms is a fantastic utility, but you cannot use it to describe everything that is possible to target all the different platform flavors," she said. Convergence between Xamarin.Forms and UWP XAML is not planned.
That said, Xamarin.Forms meets a more pressing developer need than UWP XAML, and it will not be a surprise if it turns out to have a brighter future.
I also raised with Liuson the delicate question of whether Visual Basic (VB) has a future. All the new features in Visual Studio 2017, which was delivered as a release candidate at Connect, "come equally to Visual Basic as C#," she said. A Visual Basic user "should feel great about how we're bringing more capability and more productivity."
That said, Liuson acknowledged that VB is not receiving the same degree of investment as C#. "As .NET keeps expanding its reach, what we have observed is that Visual Basic developers tend to focus on a well-known set of business applications: ASP.NET, Windows Forms, WPF. We will continue to do great support in those areas, but when it comes to brand new features sets, we have not observed Visual Basic developers embrace those. So we are focusing our efforts in the area that VB customers are working," she told The Reg.
The implication is that VB developers who want to follow Microsoft beyond Windows should learn C# or another language.
How Visual Studio 2017 shows Microsoft's new direction
Visual Studio 2017 also shows how Microsoft's approach has changed. It is huger than ever, though the pain is mitigated by a new installer that lets you pick and choose the components you require in a cleaner and more flexible manner than before. That menu includes:
- Visual C++ for Linux Development
- Clang with Microsoft CodeGen (for more standards-compliant C++ on Windows)
- Docker tools
- A stack of Azure tools
Using Visual Studio 2017, I started a new ASP.NET Core project and checked the option for Enable Container (Docker) Support. I was prompted to install Docker for Windows, did so, and shortly afterwards was up and running with a "Hello world" ASP.NET application. Notable was the fact that Docker was running a Debian container, as a quick peek at the PATH environment reveals, and now on Hyper-V rather than Virtual Box.
Visual Studio 2017 running ASP.NET Core in a Linux container on Docker on Windows
Joel Spolsky, CEO of Stack Overflow, was at Connect. His first job, back in the nineties, was at Microsoft working on Excel. I asked him to compare the company he joined with the Microsoft of today.
"Everybody that I worked with in Microsoft had this attitude of, we're huge and we're winning, we can afford to be gracious, we can bend over backwards to help Lotus port 1-2-3 to Windows and WordPerfect to Windows, while at the same time the Excel team and the Word team are competing against them," he said.
"The Microsoft of today has taken that to another level, of wanting to be everybody's favorite company, no matter who you are. The fact that the money in development tools has now moved into providing cloud services – which are meterable and not piratable – and now Visual Studio is just a way to get things on Azure. That puts them in a very comfortable position of being able to be friendly to everyone in the world."
Despite Spolsky's assertion, many remain wary of Microsoft, recalling how it held back browser development, resisted open source, or other crimes real or imagined.
Further, Microsoft platform developers have not had an easy time, with a series of technologies hyped one year, and neglected the next.
The company's commitment to C# and .NET has never faltered though, and this remains true, although its investment is now focused more on cross-platform .NET Core than the mature Windows-only .NET Framework.
Today Microsoft is in transition. The journey to cross-platform is not easy. The new .NET Core is by all accounts fast, but frustrating for long-term .NET developers because of missing pieces. SQL Server on Linux is not as good as on Windows, and again there are gaps ranging from .NET Stored Procedures to Reporting Services. Container support on Windows is just getting started.
Nevertheless, there is momentum behind its current direction. Some things are evident. The Xamarin tools are important and meeting a real need. Whether or not the UWP ever really catches on no longer looks critical for the company. It is making sense of open source and happy to support other people's platforms, provided that it has some hope of a cloud sale. ®