Hear ye, hear ye: Microsoft will revolutionize the way software is developed. Or perhaps not. These past weeks I've been skimming the Internet in search of proof that Microsoft's latest technology, .NET, will actually make a difference.
But as I suspected, it proved to be nothing more than Microsoft doing what it has always done: take a good, old idea that has worked well on other platforms and turn it into something "magical" and "revolutionary" for the Microsoft platform, while in real life, the actual problem began with the company's backward thinking in the first place.
I developed software, both as a pro and enthusiast, for Microsoft platforms a long time (try a decade) before I made the switch to Unix. This is the path
many developers walk, but I have never seen a Unix guru switch to Windows. It is obvious that Unix is made by engineers for engineers.
Anybody who has tried developing software on any Unix knows that the tools available make a programmer feel like a king. And rightfully so. You have at least five or six
"standard" programming languages to choose from and a vast number of Open Source libraries that can be linked on almost any Unix/Posix platform. We are not talking
about a mere developers platform, we are talking about programmer heaven!
Before we go further into the depths of technology, let me make a statement about myself: I am not a programming guru. I have the skills needed to please my customers, and I indulge in Open Source development whenever I have the chance, but I am no Linus, Alan or whoever your personal Open Source hero might be. Very often, I ask many of you out there for help in mailing lists and IRC channels (thanks, by the way) and that's how I get by.
Back to this new technology, .NET: I won't claim that I am
right and .NET is wrong; these are just the thoughts that most likely have passed through any Unix programmer's brain.
What does .NET do anyway?
With .NET you can use any language to interface the APIs available for the .NET development platform.
I'm using C, C++, PERL, Python, ELisp and PHP for my development and never have I had problems with inter-lingual library bindings. Because most languages will let
you interface native code, anything built as a shared object is well within reach for those languages.
.NET will enable you to write your code on one platform, but run it on any platform.
This can be done even with low-level code written in C on Posix platforms. We, the Unix users, already have cross-platform capabilities. If Microsoft would just build
Windows on Unix technology and join the Unix community, Windows users would have that, too.
You can develop software using any tool you want that has .NET support.
Will there be .NET extensions for gcc? And perhaps a .NET LISP package for Emacs? If not, I'm not interested. My experience is that it is only when developing on
Microsoft platforms that the project leader has to make an active decision on what development tools will be used by the developers. Never in my life have I been told what
code editor, or even operating system, to use when using Unix as development platform. If Windows users want this benefit they can install GNU utils, build tools and BASH instead of .NET and a "Visual-Crap-Zap Studio PRO++ Extra Edition."
.NET provides a large library of APIs and it will grow.
The Unix platform probably has over 10,000 libraries available for use, covering most aspects of programming. Many of them are open, so they are easy to learn
and implement. The actual number of libraries available is unknown, I'm simply making a qualified guess, but Debian Linux (my favorite distro) alone comes with more than 3,000 libraries, and they have always satisfied my needs, no matter what programming language I've been using. To make a long answer short: Unix has enough libraries and more will come.
.NET will have a "Common Language Runtime" part that will handle memory and trap errors.
I always thought this was the part the kernel was supposed to handle. I must have been sleeping too much during my "OS engineering" classes in school. We all know that
Windows will let user space applications abuse the system and that the win32 kernel doesn't always manage to handle memory and errors that well. I can only speak for
Linux and Solaris (the two kernels I am most familiar with) when I say: My operating system already does the memory handling and error trapping for me,
thank you very much.
You may have noticed a touch of sarcasm, but it is justified. I think Microsoft is trying to take what the Unix community has had for decades and turn it
into its invention, one inferior to the original.
Even though runtime environments like Java and .NET sound nice in theory, remember they are needed only because of the backward "closed platform" thinking
Microsoft stands for. If everybody used Posix compatibles, there would be no need for any runtime environment other than the OS itself.
I am upset that the very thing I enjoy most about the Open Source community and Unix is now being turned into a Microsoft technology. The honest truth is that I'm scared that Microsoft will win this PR battle, and greed and ignorance will overcome science and knowledge. At first, I just smiled when I read about .NET and the "Common Language Runtime," like it was a poorly formulated joke. But when I realized that some people were seriously
considering implementing this stuff I got scared, although I still consider .NET a joke.
I love programming as a science. I live for it. If the Open Source community is destroyed and loses its place in the computer industry, I will quit programming and
do something else. Only once in a while would I boot FreeBSD or Linux on my old PC to write a few lines of BASH hack that effectively do what four DVDs of expensive
.NET software can almost do.
Peter Gebauer is a
hobbyist and professional software developer.