Channels ▼
RSS

.NET

Microsoft's Fickle APIs


Microsoft is a company built by developers. Unlike IBM, Oracle, Apple, and other competitors, Microsoft came to the operating system and application business via selling software development tools. Programming is wired into its DNA.

These roots are reflected in how Redmond provisions products. Developers enter into a closed world where internal connections are directed at other Microsoft products. It's a world where the entire ecosystem comes exclusively from Microsoft. To reach this goal, the company has at times undermined competing platforms and stretched standards. To wit, Microsoft paid Sun Microsystems $1.6 billion to settle a lawsuit claiming Microsoft undermined Sun's Java platform. Microsoft dropped its J# product. In other arenas, it uses market share to apply torsion to standards. No clearer example of this is Internet Explorer, which in versions 5.0 through 8.x, made running standard HTML next to impossible. All Web developers know the frustration fixing valid HTML so that it renders correctly in IE.

This tradition of creating new standards that fit the company's strategic objectives has led to numerous new APIs and pressure on developers to migrate to them. Even in the early days of Windows, the company's fondness for new APIs cost us dearly. The transition from 16-bit Windows to Win32 initially required a choice between one of three API subsets. Ultimately, two variants faded away, leaving just Win32. Then Microsoft published the Microsoft Foundation Classes, an entirely new framework that dominated Windows programming until .NET.

Migrating code to .NET was difficult and the new languages Microsoft provided generally weren't backwards compatible. To use the new features, working applications had to be substantially modified or rewritten. This was particularly painful for Visual Basic programmers. The conversion from Visual Basic 6 to VB.NET meant brooking numerous syntactical language changes for which Microsoft provided limited assistance.

Making it across the river Jordan to .NET, however, didn't spare us from a new series of APIs. We still had to choose which platform to use for projects: WinForms, Windows Presentation Foundation, and Silverlight being the principal client-side choices.

This history of constant forced migration raises the question of whether Microsoft will abandon Silverlight now that HTML5 is increasingly the center of the rich Internet application universe. Given that IE 9 provides extensive HTML5 support, this concern is particularly apposite.

While it's a fool's errand to predict corporate behavior, we know something of Microsoft's Silverlight plans. Version 5.0 is in a lengthy beta test and is expected to ship mid-year. Longer term, Silverlight looks like a keeper: Microsoft has invested substantially in making it run on Mac OS X and on the handheld version of Windows. It also invested in a Linux version, called Moonlight, jointly developed with Novell. It seems unlikely that Microsoft would walk away from this investment, especially now that RIA applications are a hotbed of activity.

More likely, Microsoft will ride the RIA wave with continued investment in Silverlight and sufficient commitment in HTML5 to be part of that market. HTML5 — a specification controlled by an independent group — isn't historically where Microsoft would go. The company tends to provide programming layers over which it can exert control. I believe that if HTML5 becomes the standard everyone is expecting, Microsoft will leverage it via Silverlight, thereby preserving its technology while integrating with the larger world.

— Andrew Binstock, Dr. Dobb's Executive Editor
alb@drdobbs.com


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video