Microsoft wants Windows developers to write Windows 8-specific, Metro-style, touch-friendly applications, and to make sure that they crank these apps out, the company has decided that Visual Studio 11 Express, the free-to-use version of its integrated development environment, can produce nothing else.

If you want to develop desktop applications—anything that runs at the command line or on the conventional Windows desktop that remains a fully supported, integral, essential part of Windows 8—you'll have two options: stick with the current Visual C++ 2010 Express and Visual C# 2010 Express products, or pay about $400-500 for Visual Studio 11 Professional. A second version, Visual Studio 11 Express for Web, will be able to produce HTML and JavaScript websites, and nothing more.

Visual Studio 11 is an improvement in many ways over Visual Studio 2010. Its C++ compiler, for example, is a great deal more standards-compliant, especially with the new C++ 11 specification. It has powerful new optimization features, such as the ability to automatically use CPU features like SSE2 to accelerate mathematically intensive programs, and new language features to allow programs to be executed on the GPU. The new version of the C# language makes it easier to write programs that do their work on background threads and avoid making user interfaces unresponsive. The .NET Framework, updated to version 4.5, includes new capabilities for desktop applications, such as a ribbon control for Microsoft's WPF GUI framework.

Redmond has decided not only that Visual Studio Express users should have the ability to develop Metro-style applications: they should have no other choice.

Taken together, there are many new features in Visual Studio 11 that are relevant, interesting, and useful for desktop developers. Indeed, things like the new WPF capabilities are only useful for desktop developers.

But Microsoft has decided that if you want to use these things to write desktop apps, you have to pay. The free Express tools will produce only two things: Metro-style applications for Windows 8, and websites. Eventually, the company will also release a third version that can produce applications for Windows Phone, and nothing more. The company announced the Visual Studio 11 product line-up last week, but the full implications (and positive confirmation of the implications) are only now becoming clear. In Redmond's words "Visual Studio 11 Express for Windows 8 provides tools for Metro style app development. To create desktop applications, developers need to use Visual Studio 11 Professional, or higher. In addition, Visual Studio 2010 Express products—Visual Basic 2010 Express, Visual C++ 2010 Express, and Visual C# 2010 Express—will remain available for free download."

Metro-style applications are obviously going to be an important driver for Windows 8's adoption, especially on tablet machines. Although Windows 8 remains a fully fledged desktop operating system and will be able to run essentially any and every desktop application that Windows 7 can run, Microsoft is keen to develop an ecosystem of applications that are pleasant to use on tablets, and to do that, it needs Metro-style programs built on the new WinRT framework.

Extending the Visual Studio Express range to support Metro-style development is, therefore, an obvious decision. The cost barrier to entry is very low—it costs nothing to download and use the IDE—and it should stimulate a healthy amount of application development, just as it has done for Windows Phone. Developers, too, have an incentive to develop Metro-style applications, when it's appropriate, because the greater promotion and easier distribution should provide some new revenue opportunities.

But merely extending Visual Studio Express apparently wasn't good enough. Redmond has decided not only that Visual Studio Express users should have the ability to develop Metro-style applications: they should have no other choice.

In practice, you'll probably have to pay even for Metro development. Windows 8 won't, in general, support side-loading of Metro-style applications. Developers won't be able to stick a Metro-style application that they wrote themselves onto their website and let people download it. Every application will have to go through the Windows store, and will be subject to Microsoft's approval. Submitting applications to the store will cost money, even for free applications; private developers will have to pay $49 a year, corporations $99 a year.

It gets worse

Windows is unique among mainstream operating systems in charging for development tools.

Just to make doubly sure that nobody will dare try to produce desktop applications without paying Redmond for the privilege, Microsoft has gone a step further than crippling Visual Studio Express. The Windows SDK for Windows 7 includes a C++ compiler and all the requisite bits and pieces to develop Windows applications. You'd have to do a bit more work to get things set up than you do with Visual Studio, as it's a little barebones, but it's enough. But that won't be the case for Windows 8: the Windows SDK for windows 8 will not include a compiler toolchain at all, lest any sneaky developers try to cheat the system and use it to write desktop apps.

There is no upside to this decision. It is immensely bad.

Throughout its promotion and description of Windows 8, Microsoft has made the case that it is a "no compromise" operating system, one that offers both touch-friendliness for tablet users, and the full power and flexibility of the PC UI paradigm. The desktop is valuable, and indeed for many applications, necessary. Microsoft's own Office 15, for example, will be a desktop application. It's too big and complicated to work with the many constraints that Metro-style applications face.

It's very likely that most productivity applications will stick with the desktop for some years to come. The same is true of utility programs, AAA-gaming titles, and a large swath of current Windows software: either their interfaces are too complex for the touch-friendly Metro, or they need access to APIs that Metro-style apps are forbidden from using—or both.

The desktop, and desktop development, is here to stay. But with Windows 8, hobbyists, open-source developers, those just starting out with learning about software development? They're not welcome. The desktop is so important to Microsoft and Windows 8's future that the company doesn't want just anyone writing software for it, and will only begrudgingly tolerate such behavior if you cough up some money for the privilege.

In addition to making a mockery of Microsoft's claim that the desktop is important to Windows 8, the move means that Windows is no longer a good platform for learning basic skills like "how to program." Few of us are born with the ability to write a program; most of us have to learn using a combination of books and online resources. Programming can be a complex task even on a good day, and to keep this complexity tractable, most beginner developers stick to simple, command-line programs without rich GUIs. This allows a much greater focus on mastering the programming language and core concepts.

Simple command-line programs are the bread-and-butter stuff of programming tutorials, with the classic "Hello World" program being the best-known example.

The current, 2010 versions of Microsoft's Express tools are a fine environment for learning these basic programming skills. Visual Studio 11 Express? Not so much. If you want to learn software development, you'll have to look elsewhere. Want to hone your skills by working on the Project Euler challenges or enter a programming competition such as ICFP? Again: the 2010 Express versions would be a good match. Visual Studio 11 Express won't be.

Hindering open source development

Open source development is similarly disadvantaged. Consider a project such as the server-side JavaScript platform Node.js. Node.js was originally developed for UNIX-like platforms, but its developers have worked hard to make it a first-class citizen on Windows (including some small contributions made by me). This work was done with Microsoft's sponsorship and assistance; the company has contributed its own development resources to help bring Node.js to Windows. Most open source projects take the (not unreasonable) viewpoint that if the source is freely available, and the project is free to use, then it should be free to compile too. Node.js is no exception, and so the developers made sure that it could be compiled and built with Visual C++ 2010 Express.

But going forward, Microsoft won't have any suitable development environment for projects like this to target. They'll have to choose between Visual C++ 2010 Express—and a compiler that lacks many of the standard C++ features that the latest version includes—and the $400-500 Visual Studio 11 Professional.

Short-term, the decision is easy—stick with 2010. Long-term, the situation is lousy. Microsoft will let you have a free compiler or a good compiler, but not both.

Windows is unique among mainstream operating systems in charging for development tools: the development tools for Linux or Android are zero-cost, and the tools for Mac OS X and iOS flit between being free or available for a nominal $5 fee, depending on Apple's mood.

Microsoft's decision to charge for the more powerful versions of Visual Studio leaves a bad taste in my mouth, because to my mind, a development environment is not really the same as other pieces of software. Software development has a kind of synergy with the operating system platform: an operating system is only made useful by the pieces of software that developers create for it. By itself, the operating system has little value or appeal. Platform developers need third-party developers to produce the applications that make their platforms valuable.

Charging developers for Visual Studio is, in effect, making developers pay money for the privilege of making Windows worth buying. And yet, without third-party software, Windows itself has next to no value; it doesn't seem right to make programmers pay just to be able to make Microsoft's operating system valuable.

I think that Microsoft implicitly understands and acknowledges this argument, too: why else would the Windows Phone and, now, Metro development tools be free?

As much as I dislike charging for such software, the Express products, which first shipped in 2005, partially appeased me. Although Microsoft did not give developers everything for free, they did at least have enough to start developing and shipping Windows software. High-end features remained the sole preserve of the extraordinarily expensive Ultimate version, which was a pity (and not a problem faced by Mac OS X developers) but the basic Express tooling was enough for most purposes.

But it won't be any longer.

Microsoft is keen to point out that anyone who is currently attending an eligible educational institution will be able to get a free copy of Visual Studio 11 Professional through the DreamSpark scheme. This is true, but inadequate for hobbyists and open source developers. As such, it's little consolation.

Desktop development is essential, and it will remain so long after Windows 8 is released. It's unlikely that Microsoft will ever relent and make its entire range of development tools zero-cost, but for the company to completely rule out even the option of using its current tools for the free development of desktop applications, whether for hobbyists, beginners, or open source developers, is a huge step backward. It threatens to make Windows inaccessible to a large body of current and future programmers, and casts an ominous shadow over the entire desktop.