The Metro mistake !

Let me start by saying that I like Metro and I understand its value, specifically for consumer oriented use on tablet PC’s.

I personally feel that it is a mistake to treat Metro as the sole solution for future Windows computers and here is why. If you read the more current API docs on MSDN they now refer to such graphic API’s in Windows as GDI, GDI+, WPF Bitmap Effects and even of all things OpenGL as obsolete and not even to be used in writing new desktop applications (for Windows 8). The term legacy is being thrown around now in reference to the desktop as if it is already dead. There is a real problem in viewing the native WIN32 API’s as obsolete.

Everything now is riding on Metro and the WinRT , but is this a good idea ?

The first problem is that Metro is sandboxed. This may be OK  for consumer computers and tablets in general, but not for businesses. Computers used in businesses, manufacturing, vertical market software, and science need to have full access to the power of a computer without the limitations of a sandbox.  Programmers need to be able to tap into the lowest level parts of an operating system. They need to be able to use assembler language (machine language) when they need to find ways to do something unusual or for speed.  Programmers need to be able to write real code with few restrictions.

Second, Metro is not the desktop. It will require the redesign of a significant amount of software and some software likely will not port well to the Metro style. Oh sure, Windows 8 will still support the desktop (for now), but when Microsoft uses terms like obsolete and legacy for some of  the WIN32 API’s, it does not provide programmers with a feeling of confidence about writing new desktop applications. One of the reasons Windows has been so successful over the years has been its backward compatibility. In the past programmers could write software with the knowledge it will likely run on Windows for years and that in the future the only changes they would need to make would be to take advantage of new features in the operating system. The direction Windows is now going is akin to the changes made to Visual Basic. VB dot.net basically forced many VB 5.0 and 6.0 programmers to give up writing software. The change was too drastic. Those who were willing to change to the dot.net style of coding even found themselves giving up on Basic totally and switching to C#.

The problem with drastic changes like this is that it destroys years of hard work. A programmers best friend is libraries they have written in the past which they know work perfectly. To force a code base to become obsolete is not good judgement.

To make matters worse, the development environment for new technologies, while supposely their to improve programming, may actually be making programming more difficult. When I downloaded the Windows 8 Preview build, it was a chance for me to try out the latest Microsoft development tools (Visual Studio). I am not a Microsoft language programmer. I use PowerBasic and as long as I can understand the API docs on MSDN I can develop quality software for Windows. When I tried Visual Studio (it was set up only for building Metro apps too) it just didn’t make any sense to me at all. The interesting thing was that it ran so slow on my computer it was embarassing. I guess most programmers today are using the bleeding edge computers so they don’t notice it so much, but I can tell you, try to run Visual Studio on a more common computer and the first question you may ask is, why is it so slow ?

For years I have developing software on an XP computer with a Celeron CPU and 768 meg RAM. I can write apps and compile them incredibly fast. When I downloaded the Windows 8 Preview I installed it on a computer, which had Windows Vista on it and was recently upgraded with a dual core Pentium CPU and to 2 gig RAM. Plenty for Windows 8. Visual Studio was so slow it was pitiful, really. Neither could I figure out how to design visually the look of a Metro app. The old Visual Basic (5.0/6.0) was so easy to design forms visually that amateurs could design a basic application UI in no time. My own visual design tools for use with PowerBasic and EZGUI also are very easy to use when laying out forms. Visual Studio, to me as an outsider (not a MS language programmer), was so foreign made absolutely no sense at all. XAML does not make a lot of sense to me either. I don’t really see the benefit of XAML.

I wrote my own GUI engine, so I don’t have to use the WIN32 API’s directly, but for me writing a simple line of code like this, seems so much easier:

EZ_Button %FORM1_BUTTON1, 6, 6, 16, 2, "Button  1", "T"

(My GUI engine uses character coordinates).

I actually have some customers who don’t even use the Visual Designer I provide with the product for code generation, but instead they hand code the entire application. You won’t find that much today with Microsoft programming languages.  The current generation of programming languages from Microsoft are so complex that one could not use them without intellisence.

It will be interesting to see how well businesses gravitate to Metro. How much of old code will simply have to be trashed too ? It makes little sense to waste years of software development simply for the latest shiny new thing. How many businesses, who found it difficult to switch from Windows XP to Windows 7, will find it difficult to make the transition to Windows 8 and Metro ? How many software developers will continue to write for the desktop, using tools they have had for years, even though the Desktop is now viewed as obsolete and legacy ?

I look forwards to the positive contributions Metro will make for Windows, but not at the cost of the desktop and the Windows API (WIN32).