Build and Share
Where should Microsoft draw the line between adopting outside standards and technology, and building its own technologies?
It's a season of soul searching for Microsoft as the company seeks to fill gaps in the .NET stack. At question: Where should Redmond draw the line between adopting outside technology and standards on the one hand, and building its own technologies, which may displace existing third-party products on the other?
Microsoft has struggled with this conflict from the beginning of its existence. DOS was certainly derivative of CP/M. Windows bore a strong resemblance to GEM. Indeed, the Microsoft BASIC interpreter that powered the Apple II, TRS-80, Commodore 64,
VIC-20 and PET was merely a commercialized version of a public-domain programming language. The original components of the Office suite -- Word, Excel, PowerPoint and even Access -- all drew from, and improved upon, competing predecessors like WordStar, WordPerfect, Lotus 1-2-3, Harvard Graphics, dBase and Paradox.
But sometimes Microsoft goes with a standard, and is stronger for doing so. Take networking for example: When Redmond moved on from LAN Manager and the NetBIOS stack and adopted TCP/IP as its native networking layer, Windows became a powerhouse in connected computing and quite likely drove the final nail into Novell NetWare's coffin.
There are times when emulating and improving upon competing products works best for Microsoft, as was the case with Office. But there are also times when Microsoft is best served by adopting existing standards. How is this central conflict playing out today?
From Inside Out
Case in point: I'm intrigued by Microsoft's evolving distributed-caching technology, which is code-named "Velocity." Velocity, which is due to release in the first half of 2009, really follows a very positive Microsoft tradition of taking something complex -- caching across a cluster or distributed array of machines -- and making it easy for developers to integrate without having to get involved in the plumbing.
Velocity presents an API to developers that makes the distributed array of caching hardware look like a single entity. You can use Velocity to substitute otherwise needless, repetitive database queries, thus improving performance significantly. And it's better than ASP.NET's native caching facility, because the cache can be distributed across a farm of Web servers.
In fact, Velocity even integrates into ASP.NET so that mere use of session variables can invoke the cache in the background, thus transcending today's less-than-optimal range of session-state choices (in-proc, Windows service or SQL Server). Compose the appropriate config settings and get a new session-state mechanism in the background, yielding better performance. That's classic Microsoft.
The thing is, the solution Velocity offers isn't especially new or innovative. The open source MemCached product has been offering this capability for years. And yes, it works with ASP.NET. In addition, other open source and commercial caching products, written specifically with .NET developers in mind, are available.
Plays Nice with Others
Now contrast Velocity's go-it-alone strategy with the spate of standards adoption initiatives Microsoft has announced recently. Consider the integration of jQuery into ASP.NET and Visual Studio, or the announcement this summer to once again support Unified Modeling Language (UML) and to join the Object Management Group. Microsoft also succeeded in publishing its Office Open XML file format as an ECMA standard, and then announced support for OpenDocument format files in Microsoft Office.
On the Silverlight side, the product itself is, of course, cross-platform and cross-browser, and Microsoft has announced there will be a Nokia smartphone client as well. In a candid moment, Scott Guthrie all but announced his desire to include iPhone as a platform for Silverlight, though the ball now seems to be in Apple's court. Also, consider the introduction of eclipse4SL-Eclipse Tools for Silverlight.
In the arena of cloud computing, Microsoft intends to support Eclipse, Ruby, Python and PHP in the Azure Services Platform. It has also decided to make its LiveID technology function as an OpenID provider.
I can't stress enough that within Microsoft there is a diversity of opinion among product groups. Microsoft constantly has teams advocating different approaches -- be it the external/ standard versus internal/proprietary technology debate we've discussed here, the client versus server issue covered in my last column, the on-premise versus cloud question, or the AJAX versus RIA client debate.
The debate is disruptive, to be sure. But the last few years have shown that disruption can be healthy, even necessary, for a technology company's survival. Perhaps disruption versus equilibrium is, at a meta-level, just one more issue that Microsoft ponders. Hopefully, that debate will rage on. If not, innovation and thoughtfulness in Redmond may cease as well.
Andrew Brust is Research Director for Big Data and Analytics at Gigaom Research. Andrew is co-author of "Programming Microsoft SQL Server 2012" (Microsoft Press); an advisor to NYTECH, the New York Technology Council; co-moderator of Big On Data - New York's Data Intelligence Meetup; serves as Microsoft Regional Director and MVP; and is conference co-chair of Visual Studio Live!