Microsoft Dot Net Framework
On this wiki you will often see a warning for software that "Requires Microsoft .NET Framework." Knowing what Microsoft .NET Framework was supposed to be, as opposed to what it actually became is fundamental in understanding why we offer the warning.
Key Talking Points
- Harm to overall System Stability
- Poor Quality Software
- Additional Time and Expense for the End User
- A Slackers Approach to Computer Programming
Microsoft .NET Framework was supposed to be a cross-platform unified development solution for programmers to create software that can run on a variety of operating systems and can be created by using a unified set of widgets, tools, and techniques to make the world a better place for developers and end users alike. Microsoft .NET Framework, as promised by Microsoft, would take on Sun Microsystems' JAVA platform in the marketplace and dominate by doing more and being better.
The reality is that Microsoft .NET Framework is bloated, not backwards compatible, doesn't run on other platforms, and creates computer problems resulting in headaches for end users. Microsoft .NET Framework runs primarily on Microsoft Windows and does offer language interoperability across several programming languages, however, is not at all cross platform. It doesn't function as advertised nor does it do what was originally promised.
Microsoft recognized the power of Sun Microsystems Java, and JDK, too late in the game. If a developer creates software in Java, it can be made entirely cross platform. This means that the same program can run on, for example, Microsoft Windows XP and Redhat Linux XFree86. If a developer creates a handy program in Java, a Macintosh user can enjoy using the same program that a Microsoft Window user can. Microsoft announced that Microsoft .NET would be the big challenger to Java. All Visual BASIC and Microsoft C++ coders would have to migrate to the .NET Platform and learn to program in the Microsoft Object Oriented model. Coders were promised the painful transition would be worthwhile for a variety of reasons, including the promise of a cross platform utopia.
Warning: Requires .NET Framework
Criticism of Microsoft .NET Framework from the developer's perspective differs form that of the end user. To the end user, .NET Framework is an annoying thing suddenly needed by some software he or she is trying to install. Then, the next time some other software is installed requiring Microsoft .NET Framework, it needs yet a different version and that has to be installed. Eventually the end user has a sluggish running computer loaded up with multiple versions of .NET Framework, because each new release is NOT backwards compatible, and there are often internal conflicts caused by the existence of multiple versions of .NET Framework on the same machine.
It is for this reason it is recommended that end users avoid installing software which requires Microsoft .NET Framework. If there is a program that a user wishes to install, yet discovers it requires .NET Framework, the user will often find on deeper exploration, an alternative piece of software to accomplish the same task that doesn't require .NET Framework.
Another annoyance the end user often discovers is that the software he or she is attempting to install doesn't even mention the .NET Framework requirement until well into the installation process. The user might see a message like, "Attempting to connect to xxx.micorosft.com to install the Microsoft .NET Framework." "Conenction Time Out, aborting installation!" It would be nice to know that a massive external software environment is required before trying to install some new program just downloaded off the net!
Several backward and forward incompatibilities exist between .NET 1.0, .NET 1.1, and .NET 2.0. These are well-documented and frustrate both end users and developers alike. Microsoft claims to resolve this by allowing the running of different versions side-by-side. Rather than making .NET fully backwards compatible, people just need to have EVERY VERSION of Microsoft .NET all installed at once.
Better quality software never requires Microsoft .NET Framework
Better quality software never requires Microsoft .NET Framework because the purpose of the Microsoft .NET developmental platform is to make writing software extremely simple. The easier it is to computer program, the more people are able to computer program. Less talented and less intelligent people, once unable to grasp the complexity of lower level programming languages, are now able to put fingers to keyboard and develop bad software. Unfortunately, inferior minds create inferior software. Inferior minds frequently choose Microsoft .NET, typically Visual BASIC .NET, to quickly make programs that inevitably perform poorly and ultimately require end users to cope with the burden of dealing with Microsoft .NET Framework in addition to all of the inherent Microsoft bugs.
It is true that developing in .NET has advantages for the beginner. It is very easy to learn for the fresh mind not having to cope with altering an entire programming philosophy. Yet with ease comes inefficiency. Applications running in a managed environment such as the Microsoft framework's CLR or Java's JVM tend to require more system resources than functionally similar applications that access machine resources more directly. Programs created in .NET are basically fat, and inefficient.
Limited Options for Developers
Using Microsoft Visual Studio 6.0 a software developer (computer programmer) could create a stand alone executable that could be distributed to end users without the end users needing to deal with installing a prerequisite "framework." Sure, there are certain components that sometimes needed to be installed along with the executable, however, this could be accomplished transparently though an installer, and is not out of the ordinary for software developed in any platform.
Java programs created for distribution require Java Virtual Machine, a special framework, in order to run on the end user computer. This can be a burden much the same as Microsoft .NET Framework. However, there is a huge advantage that Java developers have over Microsoft .NET developers, JAVA can run on many platforms (Mac, PC, *NIX). This benefit provides an over-weighing factor tipping the scale in favor of Sun's JAVA - in other words, making it worth while to develop software in JAVA. Microsoft .NET developers are stuck with the whole framework crap and are still limited to Microsoft Windows. What's the point of the .NET Platform besides a few shared libraries and the limited language interoperability it offers? Certainly not enough to tip the scale in favor of developing in the .NET Platform.
Furthermore, there is ZERO backwards compatibility. Microsoft loves to pull the rug out from under developers and end users alike. With the introduction of the .NET framework, the Visual Basic language was replaced by the Visual Basic .NET language. The replacement was not backwards compatible and forced programmers to relearn all but B.A.S.I.C. itself. Not only did it force programmers to update their knowledge on use of the syntax structure, but their entire concept of programming had to be changed radically. Microsoft forced their aborted version of the Object Oriented programming model on developers.
Expensive for Businesses and Home Users
Succeeding versions of .NET lock out older operating systems. For example, .NET v.3.0 and above excludes Windows 2000 and prior versions, as well as XP SP1. This can be construed as a way by Microsoft to move away from previous versions, and force operating system purchases. The new model is extensively tied to the Microsoft Windows operating system.
Businesses lose millions of dollars each year over software they exclusively own and distribute being reverse engineered and illegally distributed. Microsoft .NET utilizes Just in time (JIT) compilation. Software compiled using JIT can be more easily reverse-engineered than native code to algorithms used by an application, raising the concern of possible loss of trade secrets and the bypassing of license control mechanisms. It is easier to "crack" software developed in .NET. It can often be performed with a simple binary editor.
Anti Innovation
Microsoft is more interested in turning a profit rather than to create quality products. Microsoft naturally is opposed to the Open Source community. Furthermore, Microsoft is opposed to healthy competition in the technology marketplace.
Microsoft applied for a multitude of extensive patents over key parts of the .NET Framework. The patents were over reaching and threatened a former rival, Novell. Microsoft and Novell formed an exclusive agreement to allow both use of parts of open source components of .NET, yet lock out the rest of the world programming community. The agreement is in violation of the principles of giving equal rights to all users of a particular program. Since the components in question were originally open source, the patents should never have been granted in the first place. The practice of ripping off other people's work and stamping Microsoft on it is nothing new to the industry giant.
Innovation is also limited when the user environment is limited. Microsoft .NET Framework was supposed to be inherently cross platform, as promoted by Microsoft at the end of the 1990's in an effort to gain developer interest. However, more than a decade later we see the full implementation of .NET is only supported on Microsoft Windows. Although Microsoft .NET offers limited .NET subsets for other platforms, the substituted implementations of CLR, base class libraries, and compilers are all that is present. With some degree of standardization, all implementations remain with a variety of levels of completeness when compared to the full .NET version which Microsoft provides for Windows and are too often entirely incompatible. They are largely ignored by Microsoft as if only initially created to meet someone's idea of "look, we're sharing too."
Conclusion
If you are a team software developer or individual computer programmer then give yourself credit by believing you are capable of learning a more powerful programming language. Invest your time in developing in a better programming environment. Microsoft .NET is for slackers and "quick fixers." Additionally, Java developers, on average, command a much higher annual salary as compared to Microsoft .NET developers programming in languages like VB .NET. And if you are a freelance developer, do your end-users a favor and don't create software that requires a crappy piece of bloatware to be installed on their system just so they can use your little application.
If you are an end user, try to avoid using software that requires the Microsoft .NET Framework. Keep your computer running faster and more efficient by reducing the overhead of one or more versions of .NET residing therein. Whatever program you wish to use that requires .NET will more than likely have an alternative that is made by a more talented developer and that you will ultimately work better for you. And finally, if you ever are so unfortunate as to purchase a piece of hardware which requires drivers or necessary software requiring Microsoft .NET Framework, return it to the place of purchase for a full refund. If it has anything to do with Microsoft .NET, then it is more than likely crap.
_ AJ Walker and DRBW _ contributors.
- X9