Microsoft's love for developers is well-known and has been enthusiastically expressed over the years. Windows' strength as a development platform—the abundance of custom, line-of-business applications, games, Office integrations—has given the company an entrenched position in the corporate world, ubiquity in Western homes, and extensive reach into the server room.

In the past, Microsoft's focus on developers had a certain myopic quality. One manifestation of this that was close to my heart was the development of the company's C and C++ compiler—or perhaps I should say, non-development. Microsoft's compiler did not support the C99 standard (and still does not today, though it's better than it used to be), and for a dark period through the 2000s, it made only half-hearted attempts to support the full C++98 and C++03 standards. The failure to support these standards meant that many open source software libraries were becoming difficult or impossible to compile with Microsoft's own compiler, making Windows at best a second-class citizen.

I asked Microsoft about this many times, wondering why the company didn't appear to care that it was making Windows irrelevant to these groups. The response was always unsatisfactory: the existing body of Windows developers wasn't demanding these features, and hence they were unimportant. Never mind that there was a wider community of developers out there that Microsoft was making unwelcome on its platform.

This wasn't a one-off. When Microsoft deigned to consider other platforms, it did so in a manner that was half-hearted at best. .NET, for example, was introduced with the promise of being a cross-platform solution, but that swiftly fell by the wayside, leaving third-party projects to fill the gap. Apple's desktop platform had Office, but it wasn't the same Office as Windows had. Most of the time, other platforms weren't even acknowledged at all.

When desktop computing was state-of-the-art and Microsoft was king of the desktop world, this was tolerable. Microsoft had enormous developer reach, with a lock on the major consumer platform and a strong play in the server room.

But that reach has proven to have limitations. In spite of extensive developer interest in Microsoft's various mobile platforms—to a greater or lesser extent, they all reused the skills that desktop developers have learned when writing for Windows, producing a huge number of hobbyist apps for Windows Phone—the platforms have all floundered on the market, failing to attract critical major applications or significant numbers of users. Microsoft has built a capable and diverse cloud platform, Azure, and interest and usage in the platform are continuing to grow, but Azure isn't necessarily the obvious choice for mobile-oriented developers who write their code on macOS and deploy to iPhones and Android. Not because Azure is bad or unsupported on those platforms, but simply because Microsoft isn't on the radar of many Web-oriented, mobile-oriented developers.

Getting back on the radar

That waning influence and visibility has forced Microsoft to change. We see this change in the slogans the company uses—the ordinally challenged "mobile first, cloud first" mantra continues to be used—but more importantly, we see it in the way the company is reaching out to developers. Driven by necessity, there has been a significant broadening of scope. No longer is Microsoft solely interested in developers building on the Windows platform for the Windows platform: instead, we're seeing a concerted effort both to reach developers on other platforms and developers for other platforms.

We see this in many things that Microsoft is doing, and in another indication that the Microsoft of today isn't the Microsoft of yesteryear, this effort isn't restricted to one particular division or another. It's not just the developer division that's reaching out to other kinds of developer; the Windows division is, too.

In broad strokes, the big theme is letting developers use the tools they know and want to use. The Windows Subsystem for Linux (WSL) is a prime example of this. Microsoft has positioned WSL as a way for developers to bring their Linux skills and tools to Windows, giving them a native environment to write software in, say, Ruby or PHP or Node, along with native tools such as vim and emacs. Presently, the primary Linux environment in WSL is Ubuntu, but this too is set to change; in the Windows 10 Fall Creators Update, Ubuntu will be joined by SUSE and Fedora. Giving a choice of Linux distribution means that WSL users will be able to pick the personality that they're most comfortable and familiar with.

In the same vein, Visual Studio has grown to be a cross-platform integrated development environment (IDE). Microsoft's popular and well-regarded service can now be used for tasks that even three years ago would have seemed unthinkable—it can be used to build and debug Linux applications. Initially that building and debugging was remote (either to a virtual machine or a networked Linux system), but combined with WSL, it can be done locally on a single system without needing a VM. Similarly, Visual Studio can be used for Android development, with Microsoft developing its own Android emulator and integrating support for C++ development on Android.

.NET/Everywhere

Microsoft's purchase and integration of Xamarin has taken all this a step further. The Xamarin tooling is perhaps the strongest single demonstration of Microsoft's new attitude toward developers. The headline feature of Xamarin is that it lets you build .NET apps for iOS and Android (among other platforms), bringing traditional Microsoft development skills to bear on non-Microsoft platforms. But Xamarin goes so much further. On the one hand, the Visual Studio integration means that developers can use the Microsoft IDE for these non-Microsoft platforms. For iOS in particular, this is more significant than it might seem; Apple requires the build and store submission to be performed using Xcode and Apple's toolchain.

Xamarin doesn't remove this requirement, but it does alleviate it in a couple of ways. Xamarin can remotely control a macOS machine over a network. The Mac is used for tasks such as building the applications and running Apple's iOS device simulator. The result is a very Visual Studio-like development experience. Last week, Microsoft went a step further with the announcement of Xamarin Live Player. With Live Player, the develop/deploy to device/debug cycle can be performed without needing a Mac at all. This might not be a big deal for developers in their office with their networked Mac available, but for those who prefer a more free-roaming style—working in coffee shops, demoing things to customers or investors, or working while at a conference or on a plane—Live Player adds extra flexibility.

But what of developers not using Visual Studio? Xamarin is proving helpful there, too. Xamarin Studio, a cross-platform development environment, has been rebranded as Visual Studio for Mac. The branding is a little strange, as it's not closely related to Visual Studio in Windows, but the products are not as different as they once were.

Xamarin Studio was originally built using Mono, an open source implementation of the .NET stack, including a runtime, libraries, a C# compiler, and more. But with Microsoft open sourcing large parts of .NET and creating an independent foundation to steer its future development, Xamarin Studio could start using official .NET components rather than reimplementations. Microsoft's purchase of Xamarin has insured that this work continues. Visual Studio for Mac uses the same project files and build tools as Visual Studio proper, and other portions, such as the IntelliSense features, use the same compiler infrastructure on both platforms.

As such, while far from identical to "real" Visual Studio, Visual Studio for Mac provides a good option for mixed development teams. Even if some devs would rather use Macs and others would rather use PCs, they can use the same projects and build files, with solid interoperability.

SQL Server for Linux is another effort to meet developers where they are rather than telling them, "If you're not using Windows, we're not interested." SQL Server is a rich and capable development platform, and companies were telling Microsoft that they'd like to use it, except they had standardized on Linux as their server operating system of choice. In the past, Microsoft would ignore this demand; now it's reaching out to these people to turn them into customers.