Ranting about the VB rant
I warn you now. This is a pretty long one for me, and I'm ranting. If you don't want to hear it, move on :)
So, VB6s mainstream support is ending soon.
I first read about it on Sahil's blog here. I didn't think anything of it - the product is getting pretty long in the tooth now, after all. It's really no big deal.
But now there's a ruckus starting up. I've seen mention on it at Stefano Demiliani's blog, and Dan Appleman's blog (via Scoble's Link Blog), and Scoble himself has chimed in. A heap of MVPs have set up a petition to keep VB6 support happening.
I want to chime in here, simply because I'm, occasionally, an opinionated wretch who gets biased and angry.
Now, as people who read me would know, I'm a VB advocate. In a big way. It's an unbiased opinion, in that it's not my only language, it's just the one I selected as the best (in my opinion) I've seen so far. VB.net is by far where I'm happiest. Before .net, VB6 was where I was happiest. Before that, C (that's right, no post-increment included) was where I was happiest.
So, given that I'm a VB lover, here's my stance: SETTLE DOWN, PEOPLE!
The product is 6 years old now. Why the hell should Microsoft support it? Do they support Office 97, or Windows 98? IE 5? Visual J++ 6 support ended in 2003, and I didn't hear anyone complaining about that. As of the 1st of January this year, NT4 became almost completely unsupported by Microsoft. Windows 2000 mainstream support ends on June 30 this year. At my wife's work, NT4 is still the standard OS, even on the desktop.
The most important point I've heard mentioned in all of this was by Dan Appleman where he said "If you have a business that has invested years of development effort in VB6 and VBA code, should you port that code to .NET? We’re talking existing working code here – not new projects. By any sane economic rational, the answer is no. In most cases porting is stupid and a complete waste of money."
I agree with you completely. Porting when you don't have to is a waste of time. But for code that's that old, why should it still be supported?
VB6 has been around a long time. You can get support for from a lot of places - the web has a plethora of stuff available on it. Hell, when I was coding in VB6, I never actually used MS for any help with it, besides the MSDN library, and then only rarely. I figured out to do most stuff from other peoples web sites where they gave samples and explanations. It's a touch harder to find these days, because VB.net stuff gets pushed higher in the search results, but it's still fine. So if you need help, you can still get it, from the same places as before.
VB6 has had 6 service packs now. There's still likely bugs in it, as does all software, but really, if you haven't found a workaround by now, or got a fix from MS, should you still be using it? That's a good reason to upgrade.
If you need to extend an existing code base to add some new functionality - that's a good reason to upgrade.
If you're trying to keep an old shit product hobbling along on it's knees, refusing to update it, then you don't deserve support anyway :)
If a program has got old, be it visually (VB6-only coders are renowned for creating some pretty crappy UIs) or could be written a whole lot better now (XML wasn't invented back then; you want to talk to, say, Yukon; who knows) - that's a good reason to upgrade.
The thing that's getting my goat is that it seems to be a whole heap of fear-mongering.
Sure, mainstream support has ended. But does this mean that all of a sudden the compiler will stop working? No. Does it mean that the IDE won't start anymore? No. Does it mean that you're not allowed to write any new code in VB6? Hell no.
You're mad if you want to do any of those things, VB.net is much nicer *grin* but seriously, no one is stopping you from using the product. You just can't call Microsoft anymore (as easily) to complain that something is broken. You'll still get the same result (it'll stay broken :) but you can't call them and yell anymore - at least, not on their dime.
As I said at the top, I'm opinionated at times. And the fact that I found VB.net so easy to fall into (and now prefer) probably biases me towards the fact that it's not a big deal, but really, is it? In my years spent as a VB6 coder, I never once needed or even wanted support from Microsoft - I can't see any reason for it to change now. I'm sure there's still bugs in NT4 - but I certainly don't hear anyone complaining that they can't get them fixed (at least, not seriously). Why is this any different?
Now I'd like to rebut the points raised in the petition itself.
1. Preservation of assets
Future versions of VB6/VBA should:
- Use existing VB6/VBA projects without extensive conversion;
- Support the core VB6/VBA Visual Basic language and syntax;
- Compile existing projects and produce identical results.
Listen guys. There IS a future version of VB6. It's called VB.net. Project files are irrelevant to the language - they received a major update with .net, but I don't think it's worth even discussing. VB.net does support the core language and syntax - it's all there for you: Dim, ReDim, Sub, Call, it's all there.
2. Continued support for the Visual Basic language
Microsoft should demonstrate a commitment to the core Visual Basic language. This core should be enhanced and extended, and changes should follow a documented deprecation process.
They have demonstrated a commitment. Not only did they continue the evolution of the language, but they've improved it ten-fold, and keep doing so with each version of the .Net framework that comes out.
3. Ease of migration of unmanaged VB/VBA code to VB.NET
The decisions of if, how, and when to migrate code to .NET should lie with the customer. Some may choose to remain with unmanaged VB, especially for legacy code bases. Some will use only VB.NET, others a mix. A future version of VB6/VBA should treat all these options as valid, while making it easy to move among them.
Again, they did that with the release of VB.net on the 1.0 framework. You can run just VB6, you can run just VB.net, you can run them side by side (right here on my machine at home I have both VS2003 and VB6 installed, even now). With CCW you can call .net code from within VB6. With AxImp you can call VB6 code from .net.
I just don't get it. No ones stopping you from still using it, and the two interop well.
And now we have their suggested solution.
We believe the best way to meet these objectives is for Microsoft to include an updated version of VB6 inside the Visual Studio IDE. For brevity we'll call this update "VB.COM".
VB.COM should use the same keywords, syntax and types as VB6, remain COM-based, and compile to native code. Visual Studio would then support both unmanaged VB.COM and managed VB.NET, as it now supports both [unmanaged] C++ and [managed] C#.
This is a really interesting idea. It certainly got me thinking, and it has some definite cool points. But...we don't need this. If they were to do this, I'd much prefer to see the VB.net syntax compiled as unmanaged code, rather than VB6. The VB6 language is limited and outdated - when I was a full time VB6 coder to do anything worthwhile I still had to fall down to Win32 API calls, or, in many cases, write myself a C++ dll to do the real work and make that callable from VB6.
Also, just when are Microsoft going to write something like that? What staff are available to write something as complex a beast as unmanaged VB.net? People are flat our writing Whidbey now, some people are already flat out working out what's going into Orcas, by the time they have the time to actually develop something like that, longhorn will be out. Longhorn server will likely be out. That's two or three years away before they even get started - and in two or three years, how many places will still be wanting to write stuff in VB6? Not enough to matter, is my bet.
What's the friggin big deal?
Note: Feel free to leave to leave comments on why agree with me or not. But please don't try convince me to change my mind. I'm ranting, and you aren't going to change my mind once I start ranting :) Why do I say this? Posts where people state their opinions in a definite manner often attract the 'Slashdot mentality' of response, and I really don't want to deal with that sort of response - I do however happily want to hear peoples opinions, just not take abuse for it :) I do realise that I've been opinionated here, and not showing a sign of seeing a bigger picture at all. I do see a lot of the bigger picture. I just think that the bigger picture is mostly just a bunch of whingers mouthing off and not realising what's practicable. The whingers are the people that wrote the petition, not necessarily all the people who signed it - I scanned through the names on the petition and recognised a few names on there, and they certainly aren't normally whingers :)
If this was such a big issue, the release of .Net back in 2002 would have caused an uproar like this. If an uproar like that had been raised back in 2002, I bet there might even have been a chance that something might have been done about it by now.
You guys have left it way to late for me to think that it really matters.
Listening to: superman - eminem - (5:50)