madison

Why .NET will benefit other platforms

John Carroll | September 30, 2002 12:09 PM PDT

Summary

Just as .NET has been touted as the savior of the "little language," it may also be the technology that raises the fortunes of many non-Microsoft platforms and applications, including Linux.

COMMENTARY--As I discussed in my last article, I believe that .NETwill grow into a standard development framework that encompasses both Microsoft and non-Microsoft platforms. Before you turn in your keyboard and become a Sherpa guide in the Himalayas, however, consider some of the advantages of a world unified around a common development framework like .NET. Just as .NET has been toutedas the savior of the "little language" (due to itsemphasis on multi-language support in .NET), it mayalso be the technology that raises the fortunes ofmany non-Microsoft platforms and applications,including Linux.


Demystifying .Net
Part I--Clarifying the .Net message
Part II--Why .NET will conquer the world


1. .NET hooks non-Microsoft platforms into thelarger Windows development community. Thisincreases the number of developers available to workon those platforms. Miguel de Icaza, founder ofXimian, offered the following as motivationsfor providing a .NET implementation on Linux:

  • Windows developers know how to write code for it.
  • Lets make it easy to bring developers from theWindows world into our platform.
  • Training materials, tutorials, documentation,tips and tricks are already available in largequantities, lets leverage this.

In other words, if it is easy for Windows developersto write for Linux, then they will write for it. Requiring them to learn an entirely different set ofAPIs virtually guarantees that they won't bother.

Furthermore, by adopting .NET, other platforms canleverage the billions Microsoft and others spend on.NET reference material and training. Microsoft's documentation is extremely good, as long-time Mac and BeOS developer and author of the "Pepper" text editor Maarten Hekkelman relatedin a recent interview. Microsoft caters to developersin ways that other companies don't. Leveraging thatinvestment makes business sense, as it is essentiallyfree money from which other platforms can benefit.

In sum, .NET lowers the cost of developing fornon-Microsoft platforms. Lower costs and fewer hoopsthrough which Windows developers must jump will leadto more applications. If network effects are thething that keeps consumers returning to Windows, thenhooking into that network will raise the likelihoodthat consumers will consider platforms such as Linux.

2. Better support for Microsoft apps onnon-Microsoft platforms. Love them or hate them,but Microsoft applications are some of the mostpopular pieces of software in existence. Microsoftplans to convert most of their products to .NET. Oncethat happens, they have at least a fighting chance ofworking on a non-Microsoft platform. Granted, anapplication could still call into native code whichonly exists on Windows, or use Windows specific .NET assemblies. However, that's a market opportunity for some company to provide the non-standard feature which prevents Office from working completely.

The ability to support Microsoft applications would goa long way towards establishing the credibility ofWindows alternatives among average consumers andbusinesses, EVEN IF they don't have all the featuresfound in the Windows version. As many have noted indefense of StarOffice, the average consumer needs onlya fraction of the features found in the MicrosoftOffice suite. For most users, even a less-functionalMicrosoft Office on Linux would be more than enoughfor their needs.

3. .NET widens the market for those who don'ttarget Windows. ISVs who target non-Microsoftplatforms can choose to avoid features specific toWindows, yet still sell their products to the Windowsmarket. This widens the revenue base for thesecompanies considerably, making them more viablebusiness entities and generating revenue that canenrich the non-Microsoft world. Likewise, startupsoriented around Linux platforms (as an example) willhave an easier time making a business case, as theycan include the large market for Windows software intheir business plans.

4. .NET binaries are closer to the open sourceideal. For a bit of a shock, track downILDASM.exe in the .NET SDK, fire it up and drop yourfavorite .NET assembly on top of it. ILDASM standsfor "Intermediate Language DisASseMbler," and what itdoes is use "reflection" to create a visualrepresentation of the contents of a .NET assembly.

.NET, like Java, is completely self-describing, whichis essential to a managed runtime's ability to monitorwhat running code is doing. This means that asurprising amount of information is contained in a.NET assembly, information which makes it very easy tofigure out the original source code. Method names,return types, parameter names and types, the names andtypes of member variables, and other bits of usefulinformation are all included inside of a .NETexecutable.

Click here for some sample ILDASMoutput

ILDASM outputs "IL assembler", which though mucheasier to understand than regular assembly language,is still not the same as the original source code. However, because .NET assemblies provide so muchinformation about themselves, real, honest-to-goddisassemblers generate much better output. A goodexample is the Salamander.NET Decompiler, which allows you to choosewhether you want your code in C#, VB.NET or ManagedC++ (which demonstrates one of the advantages of earlyemphasis on multi-language support).

Of course, obfuscators do exist, an exampleof which is available from the same company thatmade the Salamander .NET Decompiler (like selling gunsand flower arrangements from the same corner shop). However, Java "suffers" from the same ability todecompile the source code, and thus Java softwarecompanies theoretically have the same motivation toobfuscate. Even so, I have yet to run across anythingthat I couldn't decompile. I suspect the same willapply to .NET. Obfuscators will exist for those whoREALLY want to hide their source code, but those whodo so will be far in the minority.

5. Boosts efficiency, as developers can program tojust one API. There's a reason why programmerstend to fall into warring technology camps. Computing technology evolves very quickly, and it is expensive in terms of time and money to keep up with it. Hence, most programmers choose a particular programming domain, and are reluctant to deviate from it.

This is an unnecessary waste which balkanizes theprogramming world into isolated, even antagonistic,blocks. A better solution is to find a way foreveryone to hook into the same API. This is theapproach taken with .NET.

API unification should matter to proponents ofnon-Microsoft platforms, because the root cause ofMicrosoft's desktop popularity has been the expense of developing for warring APIs. Favoring Windows is the rationalend product of market realities, both fordevelopers who must decide where to concentrate theirR&D efforts and for consumers who have to makecompatibility calculations. If everyone can use thesame basic APIs, then the costs which keep developersand consumers tied to a particular platform arediminished. This increases the likelihood of platform mobility, which boosts the fortunes of non-Microsoft platforms.

Why is Microsoft doing this?
If .NET so undermines the lock-in potential of theWIN32 API, why is Microsoft pushing .NET? First, Idon't think they have much choice. A managedarchitecture like Java is an undeniable improvementover any native API. As the years pass and therequirements (and risks) of a networked environmentare better understood, the advantages of a VM styleenvironment like Java becomes more compelling. Hence, Microsoft needs to incorporate this sort of technology if they are going to keep Windows software development competitive in the coming years.

Second, I think Microsoft is more willing to let a bitof Windows market share slip away, so long as the lossis made up through increased sales of applicationsoftware. Writing for multiple platforms can beexpensive. In a networked environment, however, it'svery hard to guarantee that everyone will run Windows. .NET makes up for this deficiency by creating a levelmiddle layer that papers over many of theideosyncracies of a particular operating system. IfMicrosoft writes to a standard middle layer like .NET,they can sell to everyone with access to a .NETruntime, whether or not they run a Windows operatingsystem.

Additionally, Microsoft doesn't enjoy the attentionsof the US government. Giving a bit of ground in thedesktop market will take some of the antitrust heatoff, and won't be a revenue problem so long asMicrosoft can continue to sell to a large unifiedsoftware market (as currently exists for Windows) andopens new .NET-oriented software markets through whichit can leverage its cross-domain industry knowledge(explained further down).

Third, Microsoft is well positioned to remain anapplications juggernaut. They regularly make softwarethat ends up taking over its market segment (and no,it can't be explained away by Microsoft's popularityas a desktop operating systems). Microsoft has anorganization that enables it to consistently do this,one that gives it a competitive advantage. Furthermore, given the difficulty of changingcorporate culture, they are confident that it will bedifficult for others to replicate it. As noted in apreviousarticle, Microsoft consistently gets high marksfrom its own employees. Competitors won't match that overnight.

In addition, Microsoft has a presence in practicallyevery technology market which would benefit fromsoftware. That gives them in-house knowledge aboutthe interconnection needs of these markets that no onewithout the breadth of a Microsoft could hope toacquire. This is a competitive advantage in a worldof ubiquitous networks, given that most of thesedomains either communicate today or can be expected to communicate in the near future.

Conclusion
The biggest barrier I see to the benefits I'veenumerated is the resistance of many of those outsidethe Windows development community to associate withideas traceable in any way to Microsoft. This is amistake, because Microsoft has a lot of good ideas,many of them centered around ways of satisfyingconsumers, both non-technical "normal" users and programmers/corporations. Microsoft is smart enough to absorb good ideas when potential customers have proven they like them (Java certainly falls into this category due to its popularity in the enterprise). It is equally smart for others to borrow ideas from Microsoft.

Instead of complaining about Microsoft's market reach,co-opt it. Embrace Microsoft's protocols andconventions (something made easier by the recentsettlement), as Ximian appears to be doing with their "Evolution" Outlook replacement. Accept that consumers like Microsoft's way of doing things, and do it better. That's certainly what Microsoft did in its battle with Netscape. They copied all of Netscape's non-standard HTML extensions (that is, those parts not blessed by the W3C), and endeavored to ensure that IE did everything AT LEAST as well as the dominant Netscape browser. Once they reached parity, they made a functionality leap with IE 4.0 that made IE BETTER, technology wise, than Netscape, thus starting the wholesale shift towards IE.

It is a pointless battle to pretend that boycottingthe use of those (.NET) technologies will have anykind of effect on their reach (Miguelde Icaza). A friend of mine once describedthe Judo martial art as "the ability to use youropponent's attack momentum against them." Microsoftis spending billions migrating its developer communityto .NET. Leverage that investment, and useMicrosoft's own "momentum" to widen your market andboost your platform of choice.

This is Part III of 3 commentaries on the future of .Net. Read Part I, "Clarifying the .NET Message" and Part II, "Why .NET will conquer the world."

John Carroll is a software engineer who lives in Switzerland. He specializes in the design and development of distributed systems using Java and .Net. He is also the founder of Turtleneck Software.

Talkback - Tell Us What You Think

Formatting +
BB Codes - Note: HTML is not supported in forums
  • [b] Bold [/b]
  • [i] Italic [/i]
  • [u] Underline [/u]
  • [s] Strikethrough [/s]
  • [q] "Quote" [/q]
  • [ol][*] 1. Ordered List [/ol]
  • [ul][*] · Unordered List [/ul]
  • [pre] Preformat [/pre]
  • [quote] "Blockquote" [/quote]

The best of ZDNet, delivered

ZDNet Newsletters

Get the best of ZDNet delivered straight to your inbox

Facebook Activity