The software giant is reaching out to communities that it used to ignore.

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.

Chemotherapy

Open source is another recurring theme of Microsoft's new approach to developers. Open sourcing .NET has enabled it to go from being a Windows-oriented technology to one that can credibly be described as cross-platform, with both Linux and macOS supported. PowerShell is another Windows technology that is being given broader reach thanks to open sourcing. Microsoft also seems to be endeavoring to do its open source development in the open; the company isn't merely publishing periodic code drops (as Google does with Android, for example) but is hosting the projects on GitHub, commenting on bugs, asking the community how new features should be developed, and accepting contributions from a range of third parties.

There appears to be a concerted effort to respect not just the literal sense of open source but the spirit of open source development: extensive collaboration with the wider developer community, in an effort to build the best possible tools for developers. This is not completely universal; the initial forays into open source made by Azure Service Fabric, for example, use a more Android-like model of private development and periodic publication, with the team still trying to find the right balance between meeting internal needs and developing in the open. But the teams I've spoken to express a clear understanding that community involvement is an essential part of open source development.

Microsoft is applying the same approach to its documentation, too. Last year, the company started moving its developer and IT documentation to a new site, docs.microsoft.com. The site is backed by documents on GitHub written using Markdown syntax, and anyone can submit pull requests to suggest fixes, add samples, or add extra information.

Papers, please

Documentation is a key part of the relationship between platform owner and developer on the platform. As Miguel de Icaza, one of the Xamarin founders who is now at Microsoft, put it, "When I ask myself 'what would have the most impact today?' I sit down and write documentation." Microsoft's documentation, particularly its older documentation, had a mixed reputation. On the one hand, the documentation was extensive and (usually) detailed; on the other hand it was sprawling, hard to find, and often unattractive. Archived docs for old products would contaminate search results, offering up obsolete information as a trap for unwary devs. Many of the newer docs have these same problems without the same level of detail and quality.

Quality documentation has been prioritized. Jeff Sandquist, who works in developer relations for docs.microsoft.com, characterized this by telling us, "There is no better love letter to a developer than quality documentation that is relevant, beautiful, up-to-date, and makes sense." Traditionally, Microsoft used dedicated writing teams to churn out the written material, using an array of custom tools to publish it. Sandquist said that's no longer the case; documentation is now the responsibility of developers, program managers, and everyone else involved with the creation of Microsoft's platform.

Sandquist told us that the combination of the new site, simpler tools, and new focus on quality docs has provoked a rather surprising reaction: developers are actually keen on writing documentation, and they're taking an interest in getting their docs up to scratch so that they can be migrated to the new site. To ensure that the quality stays high, the company is doing some neat things. Sample code is all built using the continuous integration features of Team Services to ensure that it's correct and functional.

The documentation has even driven improvements to the platform. Writing tutorials for Azure made it clear that some parts of its command-line tooling were harder to use than they needed to be or used inconvenient defaults; that feedback enabled the tooling to be improved.

“I stab at thee!”

The new Microsoft is developer-focused in a way that it wasn't before. The company is working to embrace to a wider range of developers, meeting them where they are and working much more closely with them to improve the company's products. This level of interaction between Microsoft and developers on its platforms is not something that existed in the Windows-focused past.

But is it making a difference? Is it restoring the relevance that Redmond once had, and are these non-Windows developer communities even interested in what Microsoft has to offer?

Sea change won't happen overnight. Microsoft has a considerable reputation for being enormously hostile to open source and emphasizing Windows at all costs. These things don't engender much goodwill from the communities that the company is trying to engage with. The comments on articles here at Ars illustrate that perfectly; WSL news is invariably met with comments of "embrace, extend, extinguish," and reports on Microsoft's open source efforts are met with similar cynicism. There's a lack of belief that Microsoft, of all companies, can "do" open source, and that it can do open source in a community-oriented, developer-friendly kind of a way. And there are still a few people living with their parents in Wyoming working on Star Trek fanfic.

But Scott Guthrie, executive vice president for the Cloud and Enterprise group, tells us that he's seeing signs of a shift, albeit using some non-traditional metrics. Guthrie reads Hacker News and looks at the comments there, noting that the commenters are "opinionated, and aren't shy about sharing their opinions." And in his view, not only are there more posts about Microsoft technologies "than there have ever been," the comments are, remarkably, "usually very positive." As a regular reader of the site, he's seeing perceptions change "on a month by month, quarter by quarter basis."

Perhaps the strongest examples of this shift are TypeScript, a language built on top of JavaScript that makes it easier to develop large programs, and Visual Studio Code, a cross-platform, lightweight text editor and development environment built using JavaScript and other Web technologies. Both are open source, developed in the open. TypeScript has been adopted by Google for its Angular 2 Web framework, and many of the Angular developers are using Visual Studio Code on a daily basis. Code has been hugely successful, and successful in a way that shows Microsoft really is reaching developers beyond Windows. Guthrie told us that "almost half the people using VS Code are doing it on a non-Windows platform." He even checked the number mid-interview on a Power BI dashboard.

Of course, Visual Studio Code and TypeScript are open source, so Microsoft doesn't make any money from them. But the win for Microsoft is that there's a halo effect. "It's really helping across Microsoft," Guthrie said. "It's changed the perception of Microsoft. It doesn't necessarily mean everyone's going to use our stuff," he continued, "But it does mean that people look at our technology in an objective way. If they see value, they use it."

And for a Microsoft that's fighting for relevance in a way it once didn't have to, that can only be a good thing.