options are a key factor in choosing operating systems. From a home user creating a web site to a company hosting enterprise systems, software development requirements determine what software will need to be aquired, while selecting software platforms limits what software development options are available. An operating system is useful only when it runs useful applications. For those applications to exist there must be suitable options for software developers.
From Barbarians Led by Bill Gates: Microsoft from the Inside
by Jennifer Edstrom and Marlin Eller (New York: Henry Holt, 1998), p. 117. Eller was Microsoft's lead developer for graphics on Windows from 1982 to 1995:
Microsoft didn't want a lot of other companies writing code that could compete. It wanted to keep the barriers to entry very high. The idea, in fact, was to keep raising the bar, putting in more layers of software and APIs, which developers would then have to support. Microsoft wanted to make it so gnarly that anybody who couldn't devote a team of one hundred programmers to every Windows application would be out of the game.
® now makes only one platform available for software development on Microsoft Windows™: .NET. Win32, the application programming interface (API
) made available to Microsoft Windows developers, still exists but is being deprecated by Microsoft. Those who choose to develop software to run on Microsoft Windows must use .NET. There are non-Microsoft solutions for Windows development, such as GNU's GCC and Python but all development must still be done with the .NET runtime provided by Microsoft or with the Win32 API, being deprecated and potentially changing without notice. This makes non-Microsoft solutions potentially less reliable as long-term investments, while Microsoft's products remain a safer solution for Windows development. Having only one option makes choices easier to make, but it's also severely limiting.
A very wide variety of options are available to those who choose to develop on operating systems other than Windows. Some available options are useful for both Windows and non-Windows development. Among these options are GNU's GCC, Python, Ruby, and Sun Microsystem's Java™.
According to Microsoft's Don Box, "A... significant trend is that OS components are increasingly being written in [.NET] managed code. this means that people wanting to-the-metal 'native' access to OS functionality will use a managed language and the [.NET] CLR to get it. The more interesting question is how programmers who eschew the CLR and managed code will access core pieces of the OS in the Longhorn and beyond era." Windows will be one operating system supporting one software platform.
As all Windows software in the foreseeable future will be written for .NET, all development environments for native Windows applications must build software for .NET. This currently limits the choice of integrated development environments (IDEs) available for Windows developers to Microsoft's Visual Studio.NET, several from Borland®, and a few from other vendors and the [open source] community. Of all the .NET IDEs Microsoft's Visual Studio.NET is likely to stay ahead of the competition in features since it's from the developer of the platform. Expanding a search for good IDEs beyond .NET will find a variety of options across all platforms. Among the best competition to Microsoft's Visual Studio
is the Eclipse open source IDE.
Eclipse is a plausible threat to Microsoft's Visual Studio. Its strength is not just that it offers developers all of the features they have come to expect from a modern IDE but that it can offer things that Microsoft cannot, including availability on multiple hardware and software platforms, an open architecture that lets users select or even write exactly the tool they need, and a level playing field that encourages creative competition among software companies. (Moody, Glyn. "Tomorrow's great Eclipse." Netcraft 22 June 2004)