I've seen a number of Microsoft watchers and users postulating that this move is proof that newly minted CEO Satya Nadella is taking the company in directions that former CEO Steve Ballmer and his leadership team never would have dared go. That's a nice, neat story. But it just isn't true.
Soma Somasegar, the Corporate Vice President of Microsoft's Developer Division, told me during an interview at Build 2014 last week that the work around open-sourcing more of .Net began three years ago.
Somasegar said management was aware that Microsoft hadn't embraced open source in needed ways. The thinking was that Microsoft should start out by open-sourcing higher levels of the .Net Framework at first, and then consider gradually move down the stack. But there were debates about whether Microsoft should actually take contributions from the community, as is expected under most, if not all, open source licenses -- or simply make the code available for viewing but not modification.
Mobile-tool maker Xamarin, with whom Microsoft was partnering (rather than fighting/fearing, as some inside the company did initially) was a key advisor, Somasegar said. Some inside Microsoft were initially leery of Xamarin's goal to help .Net developers write apps that worked on Android and iOS because those platforms competed with Windows. But over time, Microsoft became more friend than foe to Xamarin -- so much so that rumors are continuing to swirl that Microsoft may be negotiating to buy Xamarin. (At Build last week, neither Microsoft nor Xamarin officials would confirm or quash those rumors.)
Xamarin officials never pressured Microsoft to open source .Net, Somasegar said. However, they did "influence us around getting the community involved," he said. Xamarin did, however, want more information about .Net interfaces and related documentation, Somasegar acknowledged.
A year ago, Somasegar said he began talking with Microsoft Distinguished Engineer and Roslyn lead Anders Hejlsberg about whether and when Microsoft should make Roslyn available as open source. In the fall of 2013, the decision was made to open source Roslyn once it was in preview/end-user shape (which happened last week) and to accept contributions from the community, Somasegar said. Somasegar championed the idea of creating a separate foundation, the .Net Foundation, dedicated to overseeing the new open-sourcing effort.
Somasegar said he spoke to Nadella a year ago, when he was still heading up Microsoft's Server and Tools business (prior to becoming CEO) about the Developer Division's interest in making more of .Net open source.
"He (Nadella) said back then, if you think this is good for devs, go do it," Somasegar said.
Scott Guthrie, who is now the Executive Vice President in charge of Microsoft's Cloud and Enterprise business, also was a key propoonent of the idea from way back, Somasegar confirmed.
So will Microsoft take the next step and open source the core of .Net, including the Base Class Libraries (BCL) and Common Language Runtime (CLR)?
"We are taking it one step at a time," said Somasegar. "If it's truly beneficial for us and for the community," Microsoft will consider it, Somasegar said. But there has to be a proven need, he emphasized. For example, Microsoft provided Xamarin with the BCL documentation late last week given that company's proven need for it.
I have to admit that I wasn't sure if Microsoft's decision to open source more of .Net would be met by cheers or jeers by those attending Build last week. I was curious if developers might see the move as an indicator that Microsoft no longer considered .Net valuable enough to keep in-house as part of its collection of crown jewels. Most of the devs with whom I spoke at the show seemed upbeat about the move, however.
Hejlsberg told attendees of a press panel during Build that Microsoft is not abandonning .Net.
"We are actively investing in .Net going forward," Hejlsberg said, in response to an audience question as to whether Microsoft was putting .Net on the back burner.
"It's not going away," Hejlsberg said. "We are all in on .Net."