It is still a sore spot with many programmers. Microsoft simply killed off their favourite language and replaced it with something they didn't want. Why has this resurfaced now? It is the 20th anniversary of the launch of classic Visual Basic and a rumour started that Microsoft was about to open source VB 6.
It was strange that the rumour, false as it turned out, happened to coincide with the 20th birthday announcement for Visual Basic. It was "born" on May 20, 1991, or rather that was the date when it was demoed at Windows World. So while Microsoft crows about how wonderful VB .NET is and how it represents 20 years of a continued development, programmers in the real world know that VB came to an end in 2008 when support for VB 6 was ended. Microsoft has tried to convince the world, and perhaps itself, that Visual Basic .NET is just a continuation by dropping the .NET and referring to the new language as Visual Basic or VB 10.
Visual Basic .NET isn't backward compatible with VB 6. It doesn't support ActiveX controls and it represents a complete break with the RAD approach embodied in VB 6. It is simply a different and many would argue better language. The point is that the argument isn't about whether or not VB .NET is a better language but whether programmers should have been forced to give up VB 6.
Classic VB to the rescue
The story of classic Visual Basic is one worth knowing if only to warn of the dangers of adopting a technology that comes from, and is under the control of, a single source.
At the time VB was released there was no easy way to write programs for Windows and as a result there was a shortage of simple custom apps. To create a Windows application you needed a team of skilled C programmers who understood the deeper workings of the API. If you just wanted a simple application that did something very specific for your company or to sell then you either had to learn to do it for yourself or find a way to pay a lot. When Visual Basic appeared it was a revolution that opened the flood gates. Suddenly ordinary programmers, mostly QBasic programmers could create Windows apps as easily as DOS programs. There was even a short lived VB for DOS that created low resolution graphic buttons and other user interface elements.
Visual Basic also introduced the idea of components. At first these were difficult to produce but later the ActiveX or OCX standards made is possible to use VB to create components. if you wanted a fancy button you could create it using nothing but VB. This started the business of creating user interface and other components that continues to this day.
Of course not everything was perfect and VB was criticised for being slow and for not being fully object-oriented. These objections were true enough but they often missed the point that classic VB was designed, like all previous versions of Basic to be a rough-and-ready but above all easy to use language. It may not have been fully object-oriented but it was object-oriented enough to have the benefits of the technology without slowing the programmer down.
Most users of VB 6 at the time wanted an improved language in the form of VB 7 but not a complete change to a new technology and a stricter way of working. In short there was no pressing need to invent .NET, XAML or managed code.
The death of VB 6
The last version of classic VB was VB 6 and the whole line was killed off when Microsoft launched .NET. The way in which Microsoft killed off VB 6 was brutal. No more upgrades and no alternative but to move to Visual Basic .NET or C#. This was the programming language equivalent of ethnic cleansing. To make sure that the .NET system was a success the old VB 6/COM way of doing things had to be stamped out. Online documentation went missing to be replaced by .NET and components that were standard were dropped without a word so breaking many existing applications.
If VB 6 had been an open source language then some other company or foundation would have take up the cause and created an alternative upgrade path and then Microsoft and the programming world could have seen which version of the language was actually preferred.
For long after VB6 was disowned by Microsoft in favour of .NET programmers protested and hoped that they could reverse the decision. Many felt betrayed and dumped by Microsoft and many learned a lesson they would attempt not to repeat. A petition was organised but Microsoft ignored it and all of the requests. At the time it was estimated that there were more VB6 programmers than any other language.
VBA - a mess
The story of VBA (Visual Basic for Applications) is much more confusing and it is worth making clear that VBA is essentially VB 6 adapted to work as a scripting language. Microsoft always intended to get rid of VBA just a much as VB 6. However turning .NET into a scripting language is much more difficult than you might guess. As a result VBA has been in limbo for a long time. It was discontinued as a third party scripting languages in 2007 and replaced by a .NET scripting language for Visual Studio but this was dropped in .NET 2.0 without giving any clear indication of what was to replace VBA. Now in Office 2010 we have VBA 7 which can be regarded as the VB 7 that was never produced. However it doesn't have 64-bit controls and there are many problems in using it. Put simply the situation with VBA was a mess and still is a mess.
Open Source VB 6!
What is amazing is how many positive or hopeful comments were made in response to the rumour that Microsoft was going to release VB 6 as open source. The news item was listed on Slashdot and was greeted by many comments of near joy and then of dashed hopes as it became clear that the story wasn't true.
There clearly is still a groundswell of support for the classic language. There is also a sense in which Microsoft should not have the last say on a language that so many programmers have invested so many lines of code in.
There is a move towards trying to convince hardware manufacturers that they should open source their failed projects - see If You’re Going To Kill It, Open Source It! The argument is all the more convincing with software. In this case their is an argument that the users of the language have a right to keep their creations viable and a company like Microsoft should not be allowed to delete the foundations of their intellectual property.
Microsoft really should release VB 6 as open source.
If Microsoft wants to celebrate the 20th birthday of VB I can think of no better birthday present to the programming community. Not doing so simply makes the company look mean and still insecure about the future of .NET.
It also damages the trust that might be placed in companies who create languages. Why should be trust Microsoft to keep C# going in ten years time? Without a fully open source policy in place then any language under the control of a companies intellectual property rights should be a non-starter - and yes this probably includes Java. In this case I doubt that we will learn the lesson of VB 6 simply because the mistake has been made.