Question

In the last 3-5 years I have been renewing an insurance application and a commmercial integration toolkit based on Visual Basic 6.0.

According to Microsoft's "It just works policy" the IDE is no longer supported after april 8th 2008.

It still works to develop and deploy Visual Basic 6.0 applications.

When will it be impossible to support Visual Basic 6.0 applications, or will they live forever like Cobol applications do?

Update: Microsoft statement march 2010: The Visual Basic team is committed to “It Just Works” compatibility for Visual Basic 6.0 applications on Windows Vista, Windows Server 2008 including R2, and Windows 7.

Update may 2011:
Happy 20th Birthday Visual Basic!

Was it helpful?

Solution

I'd say they're at risk, because the OS and hardware will evolve out from under them.

You can run Visual Basic 6.0 on Windows XP, but even that's close to the end of its life (it keeps being revived on its death bed).

Those Cobol applications still live because the mainframes they run on aren't going anywhere. "Big iron" was built during a time when computers were expensive and rare and had to run for 20-30 years. Not true with applications based on PCs and Windows, which are viewed as more disposable.

OTHER TIPS

If you need to continue to support VB6 I would recommend creating a VM that contains XP and VB 6 with all the service packs on it. This way you can continue to run your development environment even though your desktop evolves to something that may be incompatible with the VB 6 dev environment. Installing Visual Studio 6 on Vista had issues two years ago.

For new development beyond maintenance I would look towards using a different environment. It's been my experience that you are better off looking at it from a completely fresh view point and not restrict yourself to migrating to VB .NET. It's enough of a hassle to migrate that you really should do new development in the best environment for your application. That may be VB .NET and it may not.

Developing using obsolete technology is never a problem until it's a problem and then it is too late. You need to stay in the sweet spot of the curve and you are the only one that can decide what that is. If you switch too early you will probably make the wrong decision and if you wait too long you will be too far behind. It's decisions like this that makes this field fun and painful at the same time.

There is a ton of vertical market software developed in VB6 by manufacturers of various types of machinery. VB6 use of ActiveX controls, ActiveX DLLs, and the ability to consume most Win32 DLLs has lead to many manufacturers of various components to support VB6.

Using VB6 and the support libraries is at least an order of magnitude faster and more reliable than the older methods of assembly on custom chips, or using C. Note that even the C/C++ developers were helped as they can consume the new support libraries as well.

Many of these applications are filled with math functions that have been tested to work for the environment and the machinery they were designed for.

So when Microsoft made VB.NET incompatible with VB6 this was a BIG deal for many of us. Unlike the transition from VB3 to VB4-6, we have to touch our code in many place in order to get it working with .NET. So many in fact that it devolves to the same thing as rewriting your software in a new language.

For these reasons VB6 will live on for a while longer as all these machines are out there. Still needing new updates and fixes.

It will probably work for a good number of years, but eventually you'll get to the point where you have to maintain old hardware, running an old, unpatchable OS, in order to run the software. Meanwhile, you're missing out on all of the new framework and language goodies that get developed. Eventually, you'll have a need to fix something or add something that isn't possible in your environment and then you get to pay the entire bill for your accumulated technical debt.

My take: you should already be working on an upgrade to a newer platform or replacement for the application. My preference is almost always to do this before I'm forced to by circumstances.

I think Visual Basic 6.0 applications will live for a long time, like COBOL applications, and for similar reasons. Parts of my company's products are still VB6, and they won't be changed until there's a good reason. We're hoping Microsoft won't be able to drop VB6 support for a good while because too many of their enterprise customers have VB6 apps. They've already been forced to extend the support period beyond their original plans. We're hoping Raymond Chen wins over MSDN magazine - obscure joke that will only make sense if you remember Joel's post about Microsoft's dilemmas with backward compatibility versus design purity.

If you're considering upgrading or rewriting, IMHO this question and this question have some informative answers. You can mix new .NET components with existing Visual Basic 6.0 using Interop, if there are .NET features you want or even if you just want to learn .NET.

The Visual Basic 6.0 newsgroups are still pretty active so there's obviously a lot of old fogeys like me still developing in Visual Basic 6.0 :)

Duffymo, Bruceatk - the Visual Basic 6.0 IDE can be made to work on Vista with a bit of effort.

COBOL is a public standard, with multiple implementations by multiple vendors on multiple hardware platforms.

VB6 is only supported by Microsoft, and they've already told you that they won't be supporting it on new versions of Windows. So eventually it will be effectively dead. The same may be true of COBOL, but nowhere near as quickly.

I expect it will impossible to support VB6 applications post Windows 7. (I expect the VB6 runtime and IDE to work on windows 7, but not windows 8)

Update: 2/17/12 Microsoft's Visual Basic 6.0 support statement now includes Windows 8. They imply the IDE can be run on Windows 8 as well. http://msdn.microsoft.com/nb-no/vbrun/ms788708(en-us).aspx

You will always be able to develop in VB 6, since Microsoft won't visit your computers to uninstal it. If you don't want to rewrite your application, then you don't/won't have to.

But the tools you get now are the same as the ones you'll have ten years from now. So, you may end up falling behind as new computer science paradigms come along(assuming you won't develop your own VB compiler).

By sticking with current VB, your application will always be "possible" to maintain, but it'll get harder every second.

In one respect they'll live forever as the vb runtime will continue working on the microsoft OSes that exist today. VB6 apps still work in Vista, for example. VB6 applications will be impossible to support going forward when microsoft stops supporting the VB6 runtime on its operating systems.

This means that they will probably continue to live forever, much as some COBOL applications still live today. New code should almost never be written in the effectively dead language, now, though, so the marketability of VB6 skills will be in a progressive decline until some low, steady-state remains.

With virtualization using VirtualPC/VMWare/VirtualBox etc, it in theory should be possible to support VB6 applications provided you have a host OS that can run VB6 correctly that you can virtualize that can run these applications.

I'm thinking of many companies that run software written for NT4 that lack driver support for new machines in virtual machines.

I think they'll be there forever. Simple reason: MS can't ship an OS that doesn't support them because no major corporation would buy that OS.

I began professional programming with Visual Basic 3.0 around a decade ago, and I was probably the last guy to migrate to .NET (I did it in 2004). So you COULDN'T find a bigger admirer of the platform than me.

  1. I don't think Visual Basic 6.0 is going to go away soon. There're are a lot of legacy applications written in it. Company accounting software, customised tools, you name them. So the applications will be around.

  2. The number of fresh Visual Basic 6.0 applications is going down in a spiral, so if you're looking to make a career as a Visual Basic 6.0 programmer, you're obsolete.

  3. That said, there will be a pretty strong demand for people who can maintain/fix/upgrade old code.

I've got software written in Visual Basic 6.0 that's got about a 100 thousand users, and is still going strong. All of my fresh development is in C#, but for this particular software, I think I will re-write it in C# by 2009 end, or 2010 beginning. So at least till then I don't see Visual Basic 6.0 being not supported by Windows.

If you still have the OS and the Tools it will never be "Impossible" to support them.

The real questions is if you still WANT to support them.

Most of what is needed to run Visual Basic 6.0 applications is also needed for VBA.

And VBA isn't going anywhere soon - there is simply too much of it about.

So if you're old enough to be developing in Visual Basic 6.0, I wouldn't worry about it stopping working in your lifetime.

VB6 probably will be around forever in insurance / bank type organizations. Hardware moving out of their realm is not an issue. They will simply get some form of emulator. I've seen an application for a very old mainframe working inside an emulator which was inside of another emulator.

It usually just doesnt make business sense for the non technicals to consider a rewrite and retest for something that already works. -

Welcome to the world of painful hell... get out now :-) -

I think Visual Basic 6.0 will continue to work for a long time. For a start, .NET has failed as a development platform for commercially mass distributed applications. nobody seems to use it in the way Visual Basic 6.0/C++ were/are used. The .NET runtimes are STILL not reliably there (from experience, we pulled a .NET application and recoded it in C++ for this one reason)

I agree about employability, though.

Loosing Visual Basic 6.0 was a major mistake by Microsoft: they were hypnotised by the whole OO thing. Most people want rapid development, not pedantic arguments about beautiful code.

VBA has replaced Visual Basic 6.0 within offices: who thinks of manipulating Office via the .NET route?

The runtimes are still the nightmare with .NET.

I support code on 20,000-30,000 desktops and analyse the registry of them. The amount of PCs without any .NET runtimes (let alone 2+) is staggering. There is no way one can mass-distribute auxillary code to them (the core application is C++) without employing an army of support staff to hand-hold on the reboots.

C++ is the only way to go for client-side applications.

What a disaster the whole OO mirage has been for MS and so us! What a cost inflator!

... and ASP.NET webforms/viewstate... I could type for DAYS (our programming contractors clearly did.)

I suspect VB6 apps will have limited life, because Redmond has to keep its coders busy pulling the rug out from under everybody.

If you think re-writing your apps in .NET will guarantee their immortality, just remember DDE, OLE, COM, DAO, etc. etc.

If an app works there is no GOOD reason it should stop working without somebody finding the resources to re-write it every few years, but sadly there are plenty of reasons.

It only becomes "impossible" if you start adding machines and OS's into the mix that the app will no longer run on.

Vista will still run VB6 apps. My guess is that 7 will continue to do so as well.. and if not, there is always virtualization.

Any type of hardware / os upgrades that your company may be planning needs to take your existing LOB applications into consideration. This is no different than taking your current version of Office or your email client into consideration.

PC's don't really have an expiration date. Even if you are stuck with XP you can get hardware that works with it and will continue to do so for quite some time. If you buy prebuilt machines, you may need to simply downgrade the installed OS. Which isn't that big a deal.

That said, you probably have about 3 more years before things become difficult, and another 1 or 2 after that before people no longer want to work in your IT department because of how ancient everything is.

A VB6 program is nothing than a Win32-executable, that relies on a number of accompanying COM-ActiveX-libraries. So its just a matter of creating a proper setup-package.

By the way, the VB6 IDE runs perfectly on a Windows 7 64 bit machine (with a couple of small tweaks of course).

PS. Unfortunately my company still ships commercial and publicly available VB6-products, so - I happen to know that.

Visual Basic 6.0 works, until you need using threads, or until you will have to face files larger than 4 GB.

I have to say this is something you cannot accuse the much (and justly!) maligned COBOL for.

COBOL is continuously supported with frequent new releases from IBM, UNISYS, MicroFocus on several platforms which support things like the latest hardware, 64bit addressing, built in support for XML etc.. There is even a Linux version (OpenCobol) which is progressing nicely.

Furthermore the language itself is continuously developing (if you can call making the same old mistakes with new reserved words developing :-} ) and the latest langauge specification is fully OO look here if you don't believe me!

So COBOL is not yet dead merely archaic. Whereas I think VB 6.0 really is dead and just bit late for its own funeral.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top