Software development 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.
Choices
Microsoft® 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)