A highly-charged discussion has recently been taking place on one of the newsgroups about the transition from VB 6.0 to VB.NET (or, as it's now called, "Visual Basic 2005"). It started when a colleague of mine announced that he no longer believed he could earn money from working with .NET technologies, and that he was not convinced that Microsoft was going the right way with the development of .NET since it's first inception and version 1.0 release. And, in some ways. I have to agree with his comments.
Without attempting to summarize the whole discussion here (at the last look, the newsgroup thread extended to over 500 entries), the basic premise is that it doesn't seem to be possible to make money from training, teaching and developing in the .NET arena. And, secondly, that Microsoft is muddying the waters with talk of migration strategies and future support for existing technologies.
Taking these two points separately, it is perhaps the case that the move to .NET has been slower than MS anticipated. Although this does not seem to be the case within the US, here is England (and, I suspect, Europe as a whole), there seems to be a lot less .NET stuff going on. Certainly I have found that my area, mainly books and articles, no longer appears to be able to support full-time employment, and I've been forced to take on other work to try and pay the bills. Evidence from publishers is that books on VB 6.0 and other (non-.NET) technologies are still outselling .NET books, and by a large margin.
Of course, other factors that were not part of the equation a couple of years ago affect me personally a lot more now. Going from being an "in-house" author (with many day-to-day expenses covered by the publisher) to working for US publishers as an "outsider", the dramatic drop in book sales numbers, and the continuing devaluation of the US Dollar on world markets have all conspired to make things worse. Though, whether I can actually blame MS for these effects is doubtful.
But all this is my problem, and (like others in the same position) I have to find ways to counter the effects. It's the second of the two issues that I mentioned earlier that are probably more likely to spark discussion. And no doubt my opinions will only add to this. The point is, what's really happening to VB?
Leaving out questions of whether the .NET Framework as a whole is going in the right direction or not, the lively discussions I've recently been involved in center around a perceived change in the direction that VB is going in, and support for existing versions. As I see it, the situation we find ourselves in now started with the original goals for VB.NET, and then got wrested off track when the marketing and policy-making people saw what was happening. I'll start with some history...
I was privileged to attend one of the very early design meetings for ASP.NET (in the days when it was still called "COM+2" and then "ASP+"). Part of the presentation was about how MS were going to take advantage of this very rare opportunity to change the whole foundation of Visual Basic to bring it in to line with modern programming practices, enable better algorithmic compatibility with other up-to-date languages, and strip out all the legacy language-independent stuff so that it would become an equal partner within the .NET Framework as a truly practical, efficient and standardized language that integrates with and takes full advantages of the Framework classes.
That involved adopting the Framework data types, getting rid of things like Mid, InStr, etc., and modifying the behavior of boolean logic and array declarations to match the syntax and semantics of most other languages. This would make it easier for developers to become multi-linguistic, help students learn to program without introducing VB-specific concepts, make it easier for tools and compilers to handle the language more efficiently, and generally make life easier and better once the transition had been made.
Meanwhile, we were given to understand, Visual Basic 6.0 and VBA would continue to be an option for developers not living within the .NET world - they would continue to work just as COM and other "legacy" technologies that are platform specific continue to work under new versions of Windows (like my VB 4.0 applications, Excel macros and Access Basic applications still work in Office 2003 and Windows XP/Server 2003). Of course, there was no Longhorn around then to confuse then muddy the waters...
What's happened since, however, seems to be a kludge that (like so many "third way" policies our Government follows) just ends up pleasing nobody. As in the words of some famous US President, you can't please all of the people all of the time. And, as so often happens, it might well be that Microsoft will end up pleasing none of the people for none of time. Why? Well I'm being told, quite voraciously and regularly, MS have stated that VB 6.0 will no longer be a mainstream supported technology, and that VBA will not be in the next version of Office.
Exactly what "mainstream" means seems to be unclear, and the complaints of how a recent XP update broke VB 6.0 are perhaps over-stressing a point. But it does seem that there is a definite shift away from "continue to be an option" towards "you should migrate". And, in both my experience and that of other developers I talked to, migrating is not a simple or insignificant task - especially if you have lots of lines of existing code, COM objects, and Windows API calls, as many VB-based applications do.
It does look like there is slow take-up of VB.NET compared to C# (I'm told that book sales suggest that C# is the big winner in the .NET world, with VB/NET trailing some way behind), and you can imagine the conversation at some MS marketing meeting: "What the **** are you product development guys doing to us!", and "We need to get people switched into VB.NET", or maybe even "What do you mean, no upgrade path?!". So, all of a sudden it's a panic operation to get migration tools out there and persuade people that they'll do all the work for you - so "please upgrade!"
Yes, OK, so I'm being a bit extreme and unfair here, and I'm sure it didn't really happen like that. But that's certainly what it looks like from the outside, and what a lot of developers seem to believe. They tell me that no-one will buy Office 200x if their applications will stop working, or they'll all go over to IBM, Sun and Java (which seems to me to be a rather extreme migration path).
So where do I stand on all this? I have to say I was extremely disappointed to find that the aim of modernizing VB in the move to .NET got so badly watered down that I still have to declare my one-dimensional arrays to hold zero elements, and I can't depend on my Ands and Ors doing what I expect. Yes, it did take me a while to get out of the InStr habit, and even longer to lose CInt. But now, by sticking to Framework methods, I find I write better VB code, and it's a lot easier to switch between VB and C# - which I have to do increasingly often in the current climate where VB is the marginalized language.
I hate what they've done with VB.NET, but I still love the language as a whole and I love .NET with a passion I thought I'd never see again after Turbo Pascal. I also like C# (except for the odd days when it's being awkward with type conversions and case-sensitivity). I'm thankful that I can easily use whichever language I want, when I want, and even mix them in an application if I need to. But please don't break VB 6.0 and VBA just yet - give us a few years to get used to .NET and Longhorn first...
STOP PRESS: After meeting up with some MS people at the Spring 2005 ASP.NET Connections conference I discovered that the "discussion" about VB 6.0 and VBA is causing more than a little concern to a lot of people. More news and updates in my next diary entry.