In 1454, Johann Gutenberg changed the world forever when the first of his Bibles rolled off the world's first printing press. Three centuries later, in 1791, Charles Babbage was born. Best known for his Difference Engine and Analytical Engine, his work is widely acknowledged as providing the earliest steppingstones from which the modern computer would emerge. Again, the world would never be the same.
William Henry Gates arrived on the planet in 1955. Whether you love him or detest him with every ounce of your moral fiber, there is no denying the contribution Bill has made to this earth. Without Microsoft, the PC we have today would be a very different beast. Without Microsoft, ".Net" would be just another domain name suffix.
Bill Gates has already changed the face of the world as we know it, but his magnum opus has yet to be fully appreciated. On Wednesday, Microsoft unveiled Bill's greater masterpiece -- in the guise of the Visual Studio.Net development tools suite.
It would be easy to dismiss this as just another Microsoft product launch, just another example of the Redmond behemoth rolling ever onward in its quest to gain enough funds to brand a continent. Don't. Visual Studio.Net will have as profound an effect on the way that we live our lives as the labors of love Babbage and Gutenberg gave us. To dismiss Visual Studio.Net and the technology it encompasses is to go back in time and dismiss Henry Ford's automobile as a passing fad.
Visual Studio.Net is going to change the world -- no doubt about it -- so it's time to suck it up and jump on the bandwagon. Microsoft says so. The world's largest companies also say so. Even some of the free software movement's most vocal advocates are saying so.
First, let's get the myth out of the way. .Net is not a product. It's a marketing term, a brand applied to a whole bunch of technologies, all of which Visual Studio.Net makes available to developers today. .Net is a platform based around open standards such as XML (for managing self-describing data), SOAP (for XML-based, Internet-wide component reuse) and UDDI (for locating and deploying other "Web services" based on these standards). .Net is also a framework, a set of objects that developers can reuse over and over again in their code to take the grind out of their daily work.
But most of all, .Net is a vision, a vision where applications will run on the most suitable client -- most suitable from the point of view of the user, whether that client be a desktop PC, hand-held computer, refrigerator, mobile phone or probably even the dog's collar when some inventor gets around to it.
Right now, the Web is no more than a mirror image of the bad old mainframe days with dumb clients speaking to central all-powerful servers. .Net will free us from that. .Net is about your data and your applications running anywhere, on any device, at any time. .Net is about freedom to share information, freedom to get at and manipulate data in the ways that you want to manipulate it. .Net is the future.
In Bill Gates' version of the way things will be, we will all carry around hand-held computers that will allow us to access our e-mail, trade our stocks, send video and photos to the family and generally manage our daily lives. Those hand-helds will also be phones and navigation units, and will carry our electronic wallets. They'll communicate with our computers at home to manage the heating, order the groceries and, when we get home, set just the right ambience for that all-important date with a mix of appropriate mood lighting and Barry White.
In the business world, the vision is similar. Open standards in terms of both data and software interfaces will allow companies to trade data that will make customers' lives easier. Want to take a vacation in Florida? Web services will manage every aspect of organizing that trip, from booking the flights, to hiring the car, to arranging the hotel room and making a reservation at the restaurant for that crucial meeting the night after you arrive.
Such visions have long been staples of science fiction, and their advocacy is not solely confined to Microsoft -- other corporations, most notably Sun Microsystems, are pushing the same computer-mediated utopia. But .Net has the best chance to deliver.
Everything Microsoft has done to this point -- billions of R&D dollars and millions of developer hours -- has been working toward these visions of the future. Visual Studio.Net is the result, a set of development tools that really do make that almost "Star-Trek" view of the world possible, not in years to come, but tomorrow. The hype has been around forever, but the tools to build the products are now, finally, available.
Visual Studio.Net revolves around two key concepts; applications written in any programming language that can run on any platform, and Web services, XML-based components that can be picked up and reused regardless of who developed them and where they are located. So, for example, a Visual Basic.Net developer at British Airways could develop a Web service for flight reservations that could be reused by a developer at Hertz to bring the two company's commercial offerings together.
Or an independent, freelance Perl developer could produce a Web service for his or her own use and then share that Web service with a corporate Cobol developer who needs similar functionality. Out of the box, Visual Studio.Net provides three of its own .Net-enabled development languages, but companies such as ActiveState are already hard at work making existing languages compatible with .Net as well (Cobol, Python and Perl in ActiveState's case).
The "write-once, run-anywhere" philosophy is nothing new, nor is the distributed Web-service philosophy at the very core of Visual Studio.Net; again, Sun has been pushing it for years with Java and Jini. So what makes Visual Studio.Net any different? Why invest in it, and why invest in the retraining necessary to fully exploit it?
At the lowest level, Visual Studio.Net and the "common intermediate language (CIL) at the heart of .Net that allows it to interconnect with other programming languages are very similar to how Java works. But Microsoft's CIL is far more versatile. It is so inherently open that developers working with any programming language will be able to create code that can be turned into a working .Net application or Web service. This gives developers the freedom to choose the development language best suited for the problem they are working on, rather than the kind of software environment their program will ultimately end up running on. Developers choose the language they are happiest with and most productive in.
What about the retraining cost? Well, leveraging the .Net technologies is not an all or nothing choice. You don't have to throw away your legacy systems to .Net-ize them. A prime example of this is Dollar, the car rental company. Developers at Dollar produced a Web service as a front end for their reservations system and made that system available to a partner airline in just two weeks. The reservations system still runs on an aging VMS mainframe, but with the addition of .Net the system is now more open and the company better able to realize the across-the-board benefits of information partnering.
The Web-service architecture is the real core of Visual Studio.Net. Web services are components that can run anywhere and that can be interacted with, even through firewalls, using XML. But that's just the marketing blurb. The key to Web services is the way they separate out, or "decouple," user interfaces from applications. Where a Web page provides a static interface to a snapshot of data, a Web service can provide the data itself. Completely devoid of a user interface, Web services enable the development of smart-client-based applications, applications that can detect the type of platform they are running on and then provide a user interface to suit.
This in turn brings about the reuse nirvana developers have long been searching for. If a Web service is a completely independent interface to an application or business domain, Web services can be reused, globally if necessary. The .Net framework makes it easy to pick up and play with these services just as if they were local components on your own hard disk -- no jumping through hoops required. The same cannot be said for Java.
The prime example of this is Microsoft's Passport service. Developers can treat Passport as an object in their code and instantly make use of a thoroughly tested and validated service that works just fine with 160 million user accounts around the globe. Such reuse not only speeds deployment of applications but also increases their reliability after delivery.
So where's the catch? The three biggest arguments against .Net at this time would have to be its heritage, its youth and its privacy implications. The .Net way of doing things, and especially the Visual Studio toolset, are effectively at version 1.0 -- untried and untested. There's no denying that, but given that doing things the .Net way doesn't require an all or nothing approach, developers can effectively dip their toes in the water risk-free to see just how well it all works.
The heritage argument is a holdover of the almost viral opinion in the community that Microsoft is the antichrist. If enough people state that opinion loudly enough, you can bet hard cash that the number of voices will grow, in some cases based on their heartfelt opinion but sometimes, sadly, based on the fact that it's a cool thing to say. However, the release of the .Net architecture and tools shows a Microsoft that has returned to its highly innovative roots. The .Net framework provides a programming interface for the new millennium that works the way programmers today want to work. The open-source and free software movement itself is waking up to that fact in spectacular fashion.
The specifications behind the .Net framework and its various component tools have all been published. Ximian, coordinator of the GNOME Linux user interface project, has embraced .Net with open arms as a result. Ximian developers are currently working flat out on Mono, a free implementation of the .Net framework and its C# language for use on Linux and Mac OS X. They fully appreciate that for all Microsoft's image problems, .Net and the fundamental concepts surrounding it are a major step forward for software development as a whole, and a stunning leap forward for realizing the true potential of the Internet as a means of communicating and sharing information. When this work is complete there will be no mainstream desktop operating system unable to run .Net applications. As a point of fact, Mac OS X already has Web-service support built into AppleScript.
There has also been considerable criticism in the past surrounding the security and privacy issues that arise from the use of Web services such as Passport and the rest of the Hailstorm family. These complaints are understandable -- there have been quite sizable holes exposed in Microsoft's software in recent years, so to have a central database such as that used by Passport could be asking for trouble. But there is nothing in the .Net architecture that says a user absolutely must use Passport to run a .Net application. Similarly, the model of development advocated by Microsoft is one whereby users choose just how much or how little personal information to divulge to the system and the businesses they choose to interact with.
Security is one area that developers will need to take a long, hard look at in the connected future that Microsoft envisions. Alternatives to Passport are bound to arise, and the beauty of the Web-services model is that there is no reason at all why these alternatives could not be used in cooperation with Passport. The underlying theme of the Web- service-based future is one of freedom -- users are completely free to choose the model they most agree with, if any.
Now that it's finally available, Visual Studio.Net will usher in a new age of connectivity and usability the likes of which has only previously been imagined by science fiction authors. Every facet of our lives will be connected, but not from the point of view of increasing the pain we feel as slaves to our machines. The results of Visual Studio.Net's deployment will be an increased level of freedom, with the machines finally realizing their true potential as information manipulators and slaves to humanity.
As developers move to embrace .Net, the Internet will be transformed from a complex, un-standardized mishmash of awkward static views of data to a dynamic pool of data connected by a true web of Web services all working together to make your life easier.
.Net marks the dawn of the third age of computing -- embrace it.