The .NET Framework has scored many points with developers over its eight years of existence, but it also has created confusion and angst in the community as Microsoft’s sovereign decisions have come into question.
.NET gave Microsoft a good foundational technology for targeting enterprise applications that it previously did not have, and Gartner Research saw an “explosion” of systematic application projects targeting the Microsoft platform because of it, said Mark Driver, a vice president and research director at Gartner.
At the same time, there was a perfect storm of Windows-ready hardware and software technologies for people to use to build larger systems, along with increased scalability in the Windows operating system and an increase in the price/performance ratio on Intel servers, Driver added.
“I think that Microsoft was caught off-guard by that [demand]” and has had to expand the scope of .NET to provide developers with the full complement of tools that they needed to build high-end systems, Driver said.
Microsoft added features and functionality, and the framework evolved into “fantastic plumbing” designed to ease and facilitate all kinds of development, from client to mobile to Web, said Brandon Watson, director of product management for Microsoft’s development platforms.
“Anytime you have a new platform, you will see significant growth and evolution. We saw the same thing in Java,” Driver said. Further, .NET abated the exodus of Windows developers that were moving to Java and other platforms, lessening the need for Microsoft-centric people to look beyond Microsoft, he added.
Even still, there is lively debate among .NET developers whenever Microsoft makes strategic decisions about the platform, while others are concerned with how rapidly Microsoft is adding new technology.
“I am a bit of a fan of large portions of .NET,” said Novell vice president and Mono project lead Miguel de Icaza. But, he added, .NET is created largely without any external feedback, and that has led to various debates in the .NET world “as to alternatives to various pieces of technologies that Microsoft releases into the world without engaging with the community.”
LINQing .NET together
For instance, some of Microsoft’s decisions could impact application performance. de Icaza questions the introduction of the System.Configuration namespace for handling configuration data in .NET 2.0. “[System.Configuration is] a bloated piece of code that everyone is paying for,” he said.
Watson was dismissive of de Icaza’s claim, saying, “Not a day goes by when a developer doesn’t say that some part of .NET is bloated.”
Additionally, internal power struggles may have played a greater role in the company’s decision to push the ADO.NET Entity Framework over LINQ to SQL than what developers were asking for, de Icaza said.
LINQ to SQL is a language-integrated query provider that allows LINQ to be used to query SQL Server databases. The Entity Framework is a broader object-relational mapping framework for .NET.
Microsoft denied that internal politics played a role in its decision to move forward with ADO.NET. It was motivated by the need to converge its data access solutions into a single stack, and it was more viable for Microsoft to use the Entity Framework as a starting point, said Elisa Flasko, program manager of data programmability at Microsoft.
“We’ve made significant investments in the Entity Framework such that, as of .NET 4.0, the Entity Framework will be our recommended data access solution for LINQ to relational scenarios,” Flasko added. But not everyone is happy about that.
“Everyone outside [of] Microsoft perceives [LINQ to SQL] as a better technology. The Entity Frameworks database layer seems to be too big, too bloated and the result of internal power struggles,” de Icaza explained.
“LINQ to SQL has benefit in being a simpler model, but using it as the foundation for the broader initiatives would require substantial breaking changes [to the code] and additional complexity given that it did not start with this broader goal,” Flasko said. The Entity Framework, on the other hand, is a key component in a broader data access strategy at Microsoft, she added.
“It seems strange to hear LINQ dismissed so breezily; LINQ is the type of thing that might make a company switch platforms to Microsoft,” said Larry O’Brien, an independent analyst and consultant who writes the Windows & .NET column for SD Times. “It’s a major innovation that’s essentially universally admired and changed the very syntax of C# and Visual Basic.”
There are numerous technologies that Microsoft invented and later abandoned, including J#, said Patrick Hynds, president of consulting firm CriticalSites and a Microsoft regional director (recognized by Microsoft for technical expertise). Microsoft is supporting J# through 2015 as per the product life-cycle strategy for Visual Studio 2005.
“It’s semantics. HP can say we are no longer going to support a scanner/fax/printer, but when a new OS comes out, they will provide old driver, but no new driver for the new OS,” Hynds said. “Technically, they still support that old printer.”
The larger issue is that Microsoft is creating uncertainty, he said. “Developers are worried about picking a winner.”
Even if Microsoft “does the right thing” and supports LINQ to SQL in the long term, it leaves customers making significant investments in software that deploys the technology asking if they should changes horses now, Hynds said.
“Customers do not know whether Microsoft will discontinue platform technologies, and those technologies do not receive the same level of support that shipped products receive,” he explained.
This also affects third-party software providers, according to O’Brien. .NET components and tools that don’t come from Microsoft face an “uphill battle becoming trusted.”
Having competing technologies can cause confusion within the .NET marketplace, Microsoft’s Watson acknowledged. He that customers will continue to see fragmentation in .NET “as the ball moves forward.”
Microsoft may have contributed to that confusion by being unclear about which technologies developers should use, Watson admitted. “One of my biggest gripes about the Microsoft platform is the lack of prescriptive guidance.”
In spite of those perceived missteps, Microsoft has been responsive to developer feedback when .NET has fragmented too much, Watson claimed. “We went out on a limb” with the foundations in .NET 3.0, and Microsoft worked to integrate the technologies better a year later with the release of .NET 3.5, he explained.
Microsoft will put out multiple competing technologies, let the market decide which is best, and in some cases let the people who adopt the wrong technology go adrift, Hynds added.
The technology churn on the Microsoft platform is not necessarily greater than on others, O’Brien observed. “It’s just that Microsoft is absolutely unwavering in their support of their current lineup, right up until the day they change directions.”
It is that repeated change of direction that could turn some developers away from Microsoft and .NET, Gartner’s Driver said. Microsoft has been too focused on creating new technologies until recently, he added.
Enterprise developers have wanted a stable codebase for more than 10 years, Driver explained. “But they also want the latest and greatest tools. Microsoft is stuck with walking the razor’s edge and staying stable.”
Many of those technologies arose in response to the greatly expanding scope of opportunity that .NET provided Microsoft rather than from a single master plan, Driver said. Microsoft had to decide how to expand .NET fast enough without having it “implode on itself” through lack of focus.
“I’ve never spoken to a single developer that said, ‘We wish we weren’t on .NET,’ or ‘We’d like to go back to Win32,'” Driver stated.
However, exactly how far Microsoft has moved away from Windows programming is open to debate.
A focus on Windows
de Icaza criticized Microsoft for making many components of .NET, such as System.IO, Windows Forms and Windows Presentation Foundation, too Windows-centric, making it more difficult to port .NET applications to other operating systems.
“Last time I checked, Microsoft was in the business of selling software for Windows and Office,” Watson said. “From a fiduciary standpoint, every copy of Mac OS sold does us harm. They don’t make their stuff work on ours.”
Further, Apple will not permit Adobe Flash or Silverlight to run on the iPhone, Watson noted.
Linux and Mac developers can use Microsoft’s Silverlight technology to “build great apps,” he said. “At the end of the day, Windows must be treated as a first-class citizen. If Apple gets above 20% market share, we can talk about porting .NET over there.”
.NET 4.0, due out in April, gives users a smaller download size and dynamic language support, among other new features. “People wanted access to dynamic languages,” said Watson. “We built in DLR support into the .NET Framework. We support Ruby and Python, but people can add other dynamic languages. Cobol.net exists. It’s cool, and one of the more open things we’ve done.”
Even still, Microsoft’s inability to “give up the golden goose” of Windows could leave it behind in the 20th century, Driver said. “I’m pessimistic about Microsoft’s ability to compete with cloud providers with a full compliment of tools for Linux and other operating systems when Microsoft only targets Windows.”
O’Brien agreed with that assessment, stating that there is no Microsoft hegemony in cloud, mobile or Web development. “When they try to leverage Windows’ dominance in those areas, they gain very little with passionate developers in those areas.”
Does Windows cost Microsoft opportunities?
The evolution of the .NET Framework has won new users to the platform, and drawn its share of criticism from those who think Microsoft’s stewardship has often been off-target.
Among the critics is Novell vice president Miguel de Icaza, who said .NET’s focus on Windows has come at the expense of opportunities for Microsoft, and its desire to guard its intellectual property is an impediment on the platform.
“Microsoft has shot the .NET ecosystem in the foot because of the constant threat of patent infringement that they have cast on the ecosystem,” he said. “Unlike the Java world that is blossoming with dozens of vibrant Java Virtual Machine implementations, the .NET world has suffered by this meme spread by [Microsoft CEO Steve Ballmer] that they would come after people that do not license patents from them.”
In practice, the Java community only uses two or three JVMs (IBM’s, JRockit, and OpenJDK from Sun), while others are research efforts or smaller-scale open-source projects, said author and consultant Ted Neward. “Virtual machines are not something the open-source community seems to want to experiment with.”
Microsoft submitted the Common Language Infrastructure (CLI) specification to ECMA International, which ratified it in 2001. Microsoft built technologies on top of the specification as .NET evolved.
Microsoft has made an open-source CLI implementation codenamed “Rotor” freely available, but it has had little or no uptake, Neward noted.
However, Mono remains the only implementer of the ECMA CLI specification outside of Microsoft, and that is a testament to the legal uncertainty surrounding some aspects of .NET due to Microsoft’s statements about open-source software, de Icaza said.
“[Microsoft] would still be the No. 1 stack, but it would have encouraged an ecosystem that would have innovated extensively around their platform,” he added.
Facebook, Google, Ruby on Rails and Wikipedia could have been built using .NET, de Icaza claimed. “All of those are failed opportunities. Even if the cross-language story was great, the Web integration fantastic, the architecture was the right one to fit whatever flavor of a platform you wanted, people flocked elsewhere.”
“To say that Google could have used .NET is to undervalue both Google and .NET. Google creates value from things like distributed MapReduce and a brand-new system-level programming with concurrent coroutines,” said Larry O’Brien, an independent analyst and consultant who writes the Windows & .NET column for SD Times. “.NET creates value from a fantastic IDE, great mainstream languages, and well-executed technologies like Silverlight, LINQ and the DLR [Dynamic Language Runtime].”
Despite the criticisms, customers are “making bets on .NET” all the time, said Brandon Watson, director of product management for Microsoft’s development platforms. “The fact that we didn’t get Google—I’ll cry a little, but not a lot. I’m not certain that Google wouldn’t have taken a bet on philosophy, wanting to beat us.”
Further, developers can build languages on top of .NET 4.0’s dynamic language runtime, which supports both Python and Ruby, Watson said. But it’s the addition of new technologies on top of the ECMA specification, such as the DLR, that de Icaza believes impedes the CLI’s adoption.
Microsoft’s submission to ECMA has remained at a “core level,” de Icaza claimed. “It never went into other areas like server APIs, GUI APIs, or even updating some of the core to include LINQ, the DLR and many others.”
While it may not always submit everything it creates to ECMA, Microsoft is committed to standards as a company, specifically and especially as they relate to developers, Watson said. “Innovation doesn’t happen in standards bodies, and customer demand doesn’t slow down for standards bodies.”
LINQ was just introduced in 2007, and Microsoft has iterated on it, Watson added. “C# 3.0 just came out, and WCF [Windows Communication Foundation] is compliant with standard network bindings.”
Microsoft has also made some of its associated intellectual property, including XAML and its ASP.NET AJAX library, available under its Open Specification Promise or open-source licenses.
The OSP is an irrevocable promise by Microsoft to not assert its intellectual property rights for covered technologies.
A lack of coordination among product groups at Microsoft might be contributing to a fragmentation in the .NET platform, Novell’s Miguel de Icaza said. “There is no cross platform culture within the company.”
For example, there are different teams that produce .NET languages, and there is no parity among them, said Patrick Hynds, president of consulting firm CriticalSites. “Consequently, some languages have features that others do not. They try to one up each other with every release.”
Microsoft’s structure has nothing to do with that inconsistency, said Brandon Watson, director of product management for Microsoft’s development platforms, explaining that Microsoft makes different languages available for different tasks and different developer skill levels. “It’s just a function of who’s the intended audience for a language.”
Microsoft cannot target both VB and high-end developers with the same tools, said Gartner vice president Mark Driver. It must also be careful not to alienate traditional Microsoft developers as it evolves its platforms, he added.
However, Watson did acknowledge that some .NET technologies developed by small product teams do not always receive equal billing from Microsoft. .NET 4.0’s Task Parallel Library is being “undersold,” he said.
The Task Parallel Library is a component of .NET 4.0 that can yield a “dramatic” increase in a Web application’s performance by enabling parallel processing with little work on the part of the developer, Watson said.
Hynds faulted Microsoft’s management for allowing what he refers to as “Soviet-style warfare” among product groups contributing to the .NET Framework. “The Soviets would let four divisions attack, funnel all of the resources to the one that is succeeding, and if the others die, they die.”