A lot of people have trouble understanding what .NET really is and what its goals are. Mostly because Microsoft has done a good job of confusing everybody using terms that are not self-explanatory or with terms that mean more that one thing. This editorial will present my thoughts on .NET, what it really is, what its motivations and goals are, and why it is the next “big thing.” Should we embrace it or fear it? Both, I daresay.
So, what is .NET? .NET is the collective name for a whole bunch of things that Microsoft has been preparing the last few years. .NET is a software platform (I will get back to that later), it is an authentication system (it is now called .NET MyServices, Hailstorm/Passport are names used in the past), and it is also a standardized method by which applications can “talk” to each other via XML, regardless of the platform on which they run.
To recap the three points mentioned above in the simplest way possible: .NET is a new way of working things out when using your computer (both as a developer and user). “Do we need a new way?” I hear the skeptics ask. Microsoft, IBM and Sun agree for a change: Yes. I believe the same. I will come back to that later though. For now, I would like to explain .NET a bit more in depth (but still in simple words).
The first part of .NET is that it is a new software platform. If you are familiar with Java and what Java really is, the .NET development part should be easy to understand. .NET the Framework is a collection of new APIs, programming languages and development tools that serve this “new way” of doing things. The new APIs are highly object-oriented, and the objects used are accessible by any supported language (VB.NET, ASP.NET, C/C++/C# and recently, even Java). This is a pretty revolutionary feature, having objects accessible by any language. In the past, there was not a unified and universal way where a C++ program could access Java objects or Python objects. Applications had to use other means (OLE, COM, Corba etc) in order to be able to “talk” to other applications and exchange data. However, this exchange of data was still limited and not standardized enough. 99% of the applications for Windows or other platforms do not really use any of the ways that could enable them “talk” to other applications. Each application was a lonely villager, ‘answering’ only to the underlying OS. With .NET’s new APIs and libraries, applications are just hosts for a series of objects. Now you can load a given functionality found in any object to any .NET application. For example, if you are writing a Microsoft Word document and you insert an image, you might want to apply a certain filter to that image before finishing your document. Word, however, is not really an image manipulation application. Well, with .NET-enabled applications you can load a certain functionality from another installed application (or more importantly, through the web!), perform the specific function and save down your Word document locally or remotely. The thing is, applications are not simple applications anymore. They are hosts of a larger database of functionalities that they can be loaded at any time (for a fee or for free) through the web or locally. Similar feature-set is possible through Corba or OLE, as I said, but they are not standardized, they are difficult to integrate (a real headache for programmers), and they are not cross-platform. So, except for MS Office, not many applications really used extensively these features in the past. But Visual Studio.NET is here to make your applications .NET-compliant as easy as say “cake”. And that is the big difference with the solutions of the past.
Miguel deIcaza of the Ximian Mono project said recently:
“Evolution took us two years to develop and at its peak had 17 engineers working on the project. I want to be able to deliver four times as many free software applications with the same resources, and I believe that this is achievable with these new technologies. My experience so far [with .NET] has been positive, and I have first hands experience on the productivity benefits that these technologies bring to the table. For instance, our C# compiler is written in C#. A beautiful piece of code. […] The .NET Framework stands on its own feet, and developers in the Windows world love it. Even if this was not the case, Microsoft is using these technologies and distributing to as many people as possible. We are witnessing the creation and deployment of a new standard. Sure, it has a lot of corporate support, but it will become a widely deployed technology.”
.NET Framework also brings a lot of other goodies to the developers, like elimination of “.dll hell”, cross-language interoperability, and more. Someone said that .NET Framework is a developer’s heaven.
I mentioned above that the new Framework is cross-platform. This is because these applications are compiled to an intermediary byte code, just like Java. However, unlike Java, .NET code does not run in a “virtual machine”. The code is actually JIT’d to the native code of the host platform at runtime. Of course Java has this capability too, but what .NET does differently is keep track of which modules have already been compiled to native code, and not bother re-compiling them from the intermediary language a second time. The runtime is smart enough to figure out when an intermediary language module has been modified, and re-JIT it at runtime only when that has occured. What does this mean? It means that .NET code runs just like Java running JIT’d the first time you run the code. The second time though, .NET code runs closer to the speed of C++ (with the added overhead of garbage collection). Your Java and .Net applications will be able to work –unchanged– on all operating systems that have support for their perspective runtimes. Currently, only Windows supports .NET, but some Linux efforts have begun to bring that functionality to UNIX too: Ximian’s Mono and Gnu’s DotGNU. Also, it is already known that Microsoft has paid Corel to port .NET to FreeBSD. Does that sound strange to you? Microsoft wants its .NET ported? You heard right. Microsoft loves to have its .NET ported everywhere. From mobile phones, PDAs, personal computers, servers and, of course, home digital hubs, as XBOX is destined to serve. Once again, I will come back to that later. Sorry to keep jumping subjects, but it is important to take things in the right order.
So, the second part is the authentication part. And it is the part that people hate most when they hear about “.NET”. Exactly because most of the .NET software will be downloaded off the web (Microsoft encourages the subscription and renting software model instead of the traditional licensing), and because you may need to use that software only once (therefore it is better renting it, than licensing it), .NET MyServices will carry through the authentication and paying system. Think of it as a virtual counter, where every time you use some objects or programs that you bought or rent (renting software’s functionality is much cheaper than buying it, analysts say), money will be taken out of your bank account automatically. So, you want to buy an Amazon book or buy the latest NVIDIA card online or rent PaintShopPro’s cropping capabilities or use Quicken.NET just for your tax calculation once a year? You will only need that one authentication system. Sun, Novell, AOL and other companies have worked together to create the Liberty Alliance organization whereby a similar authentication service can be used for all your needs with your computer. There is going to be a battle between .NET MyServices and Liberty Alliance. The thing is, no matter who wins, all of these companies agree that there should be such a universal authentication method. It is made to simplify people’s lives as they enter the digital world. One password, one login – for everything. However News.com reports that despite growing partnerships devoted to creating a standard for online identity verification, Microsoft plans to launch its .Net My Services with key details still “not figured out.”
Trouble is, can we trust these companies? One of my favorite teachers at college (our database teacher, to be exact) used to say: “The real ruler is he who has access and control over The Information”. I would not mind too much if the driving force behind such functionality was the government or a big bank, but having software companies managing my bank account, sounds and is a bit disconcerting. I am not surprised though. This is the century where the big corporations govern a lot of things in this world. But we are getting into political grounds here, so I better stop my blurb, but I never said that my thoughts about lots of things are generally politically correct anyway…
The third part of .NET, and maybe the most important part, is the Web Services. Web Services describe the way computers of different platforms or different applications can exchange information in a standardized way. Microsoft has chosen XML as the power behind it. With XML, you can describe data. With HTML you could describe a document and then your browser would read that HTML and render the document on your screen. With XML, applications would be able to have access to a number of different types of data. For example, let’s say that you want to load OSNews.com. What do you do today? You open your browser, point to osnews.com, our Apache server responds, PHP gets called and then mySQL is performing the SQL query and gives back to PHP the data requested. PHP gives back the HTML version of the data requested to Apache, and Apache gives your browser the HTML and images requested, and then the browser displays all that in your monitor. If OSNews was .NET and Web Services-enabled, you could read and/or participate on OSNews via any .NET application. OSNews would be an object and a collection of data, described in XML, and your .NET-enabled application would be able to deal with OSNews (or any other .NET app for that matter) accordingly, because they speak the same language. Another example: Think of a calculator .NET application that would be able to do the tax calculations for you. All you have to do is enter your data and get the result back. Quicken can do that too, but there is no Quicken for cell phones or PDAs or FreeBSD. From now on there will be one. Another (real-life this time) example is that an airplane company who can login to a car rental company and see immediately which cars are available for rental or not. Representatives of both companies said that the setup of the whole thing only took them 2 months, while with the “traditional” way of either using a database back-end link or via a dynamic web site, would take them to develop more than 8 months. Web Services eliminate the huge IT workload that needs to be carried out to make a company or a number of companies exchange data via databases. Services can be summed up as Remote Procedure Calls which can be invoked by posting a blob of XML over HTTP.
Yet another example is when a game is going to display the High Scores screen, with the names and scores of the people with the best high scores for the .NET game in question. The High Scores information would be taken off the internet and displayed to your screen, updated each time. Today, you can do that, but the programmers need to do lots of coding for it, with .NET Web Services, implementing such a feature is an easy process.
Additionally, with Web Services, you can not only subscribe or rent software (or even parts of software), but also have most of your saved data stored remotely.
So, .NET is all about exchanging information in a new way. And the way this exchange of information works, it can change the way you do your every day work or use the web. The web will now be executable, it will be a (sorted out, for once) information highway.
Enough with the introduction of .NET, let’s see now what it really means for the future for all us people.
Operating systems, in the traditional way of sensing and understand them, are DEAD. Microsoft found the perfect way of eliminating any competition. They found the perfect way of specifying the software business, by being something more than an operating system. I give props to whoever at Microsoft had the idea of developing .NET. Ingenious indeed, it caught IBM, AOL, Sun and… the judge by surprise.
So, why do I say that .NET kills all operating systems? Simply because they do not matter anymore. It does not matter if you use a cell phone or a PDA or a PC. The underlying operating system, the piece of software that talks to the hardware directly, will only serve as a host for the .NET platform. There will be a time in the near future that it will make no sense to compile your software in a native binary format that will only run on the platform in question. Everything will be .NET-compliant; this is what the users and most developers will be “seeing”. For us geeks, some underlying operating system hacking will still exist, but it won’t matter anymore as much to the plain user. A user who would only want just to run his applications transparently on any device, simply because this is what he/she learned. It is like asking a user to use an OS that does not support Internet or Networking as his main OS. This is unthinkable for today’s standard, as a non-.NET compliant device will be unthinkable in 10 years from now.
“The OS and application wars are over, because they are quickly becoming irrelevant to a brave new horizon of networked, converged, and wireless applications.” O’Reilly writes.
This is the end of an era, my friends. Forget the re-compilations for system to system, forget the long porting efforts. Most user applications will now run transparently on all devices, and young children today who will be the computer users of the near future they will laugh back at us, thinking that we had to re-engineer our own software to run on different platforms. By the way, this is called evolution, not sarcasm.
Some will say, “Hey, this is what Java is all about.” The answer is yes and no. Microsoft is taking the idea of “cross-platformness” even further, further than the language-centric platform of Java. With .NET you can have a series of different languages talk to the same objects, while with Java, only Java could access its own objects. Also, in Sun’s vision, Java is just a software platform (their JavaONE initiative hasn’t gone very far yet). Microsoft takes the vision further, it makes it a reality (VS.NET already published, and MyServices are set for public testing this spring) and understands the needs of this reality. This is why they created the authentication system. With Web Services blending nicely on the .NET virtual machine model, you get a nice idea of what the future will look like. Dan Kusnetzky, IDC’s VP of System Software said recently: “With 92% of desktop OS shipments and 41% of server OS shipments in 2000, Microsoft can certainly implement its view of Web application services before anyone else can do much about it.” In other words, Microsoft can bulldoze its way in, simply because they have the power, the user base, the drive, and the money. Sun had its chance and they blew it. They now are running to catch the Linux train with the Sun CEO Scott McNealy dressing up like Tux the Penguin and proclaiming “We love Linux” and making him look like a fool. I wish I had a photograph of Bill Gates face when reading what Scott McNealy dressed like with…
There is no one to stop Microsoft from making .NET a reality. Especially with all these clueless lawyers still arguing if the inclusion of Internet Explorer in the operating system was the right thing or not. Microsoft needed to be researched about its dirty business practices, and instead, the States are still fighting about the browser (personally, I agree with IE’s inclusion in Windows, the same way as other OSes include other browsers by default). The thing is, years after the lawsuit began, they are still fighting over it, while Microsoft is plotting the “Next Big Thing” that will give them real power. By the time people realize what .NET can truly do for Microsoft’s benefit, it will be too late.
So, what about Mono and dotGNU? I hope Mr. Ganesh Prasad does not mind me quoting two paragraphs from his editorial on .NET regarding Ximian’s Mono and GNU’s dotGNU efforts:
“Ximian can certainly implement large parts of .NET, including most web services, but the implementation of the identity service raises many interesting questions. It is not clear at the present time how compatible Mono will be to .NET without a seamless Passport interface. It’s instructive to note that the specification of the Passport service is not open. Hiding crucial APIs, of course, is textbook Microsoft. Users of Mono will probably not be able to use Microsoft-oriented web services in the absence of Passport access. Since Passport is one of the most controversial pieces of the .NET architecture, Mono will either be an unwilling assistant to its acceptance, or it will simply not work. It is unlikely that Microsoft will let a crucial part of its planned web domination be diluted through the existence of rival identity services. Besides, even if Passport is reverse-engineered and cloned, there is a certain “winner-takes-all” attribute of a centralized identity service. The more subscribers Passport has, the more it will attract. Having multiple centralized identity services is a contradiction in terms. That’s why Mono is a bad idea that is better abandoned. Ximian will either be dead or undead, in that they may have to push the evil Passport scheme in order to survive. Either way, Mono will be of no use to Open Source.”
“The other Open Source initiative, “dotGNU”, is a different kettle of fish. DotGNU is explicitly designed to overcome the potential privacy violations in .NET. It allows for services to run locally on a user’s PC as well as remotely, so as to let users keep their personal data confidential. It is also in the process of designing a distributed identity service called “Virtual Identities” (in contrast to the centralized Passport) which is explicitly oriented towards protecting users’ personal data. DotGNU even supports multiple IL formats, not just the one specified by Microsoft. Certainly, dotGNU is a commendable effort, both technically and from the viewpoint of freedom. However, it suffers from a perception problem. It appears to legitimize .NET, even though its stated purpose is to fight it. The casual observer is easily misled into thinking that .NET is receiving support from Open Source. More importantly, dotGNU has an unintended side-effect. It weakens the appeal of J2EE, the primary opponent to .NET. By weakening J2EE, dotGNU is strengthening the very enemy it seeks to destroy. Often, in elections, minority groups resort to “tactical voting” to secure their interests. Rather than vote for the candidate they like, they vote for the candidate who is most likely to defeat the one they don’t like.”
Another thing to consider here is that .NET is pretty much an “operating environment”. Porting .NET to Linux, or anywhere else, is like porting Windows to Linux. Bingo for Microsoft!
One company, though, has not been heard at all: Apple. Today, Apple is the only viable rival for Microsoft. They hold a little less than 3% of the desktop market, a market .NET is relying upon to spread quickly. I am sure Apple realizes that we are talking about evolution of computing, but if they give in and port a virtual machine for .NET, they are also giving up on their operating system business (in the future, where most apps will be .NET based, there won’t be a real reason why you’d need to run .NET under MacOSX/PPC or under the.. JoeUserOS/myCPU). And if they do not give in, they are out of the game anyway. So, what Apple has done is wait – wait until they can see where the whole .NET hype goes and then decide what to do.
So .NET: a bad thing or not? In my view, it is a step to the future, it is the natural evolution. Technology, by default, is not evil. People can be evil though, technology itself can’t. The specific technology comes from the largest software corporation on Earth, which… happens to have some trouble with the law lately. On the other hand, parts of the .NET are an ECMA Open Standard, so, if it was not Microsoft, it would have been someone else. The only trouble is the authentication system, which is not “open” and Liberty Alliance clashes with .NET MyServices as to which driving force will control our money…
Another concern is, of course, security. To be clear about it: there is no system that cannot be hacked. It is simply impossible to have a hack-proof system. The point is to have a system that is not easily hacked and misused. Microsoft should take precautions about it and this is exactly what Gates was saying a few weeks back when his internal memo was “leaked”: the next step for Microsoft is to insure security at all levels in their products.
There are other concerns too: the people who have access to “The Information” will know who you are. Your profile will be created by your browsing habits, by the software you are subscribed to or renting, by what you buy and don’t buy. Today such “spy software” exists, but the companies that collect that data only have a partial idea as to who you are. With .NET, all this information regarding your computing habits will be stored in one place. Guess how easy it will be to track you down if, for some reason, they are after you?! .NET works both ways, you GET information (through offers/subscription/renting/sale, for free or for a fee), and you GIVE information.
There are other hazards as well, having to do with the liability of the information received, or when the company to which you are subscribing is going under and locks out specific information you need, etc. However, we are still in 2002, and analysts say that while the first .NET applications will be available widely by the end of the year, people will only start to further realize .NET by 2004. By 2005, .NET will be the premiere software platform on this planet.
You just can’t hide from .NET. You will be able to get away from it for the next 3-4 years, but you will eventually have to give in to it. It is simply because it is evolutionary. You will, however, have to find who will be your spanking master: Microsoft or Sun? Take your pick, because you simply can’t get away with none.