views:

2260

answers:

21

In the last 3-5 years I have been renewing an insurance application and a commmercial integration toolkit based on vb6.
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 vb 6 apps.

The question is: When will it be impossible to support vb6 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.

+28  A: 

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

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

Those Cobol apps 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 apps based on PCs and Windows, which are viewed as more disposable.

duffymo
Stability in mainframes is Not because of good design. (1) the pace of innovation was slower because they were rare. (2) hardware compatibility was zero -- you only had once vendor with limited upgrade options.
S.Lott
Not sure I agree. IBM 360 was a good design for its time. You could argue that VMWare was anticipated by it. IBM was a solid technical company then, not the hollow shell that we have today.
duffymo
@duffymo.myopenid.com: Point is not whether engineering was good or bad. Point is that pace of innovation was so slow and H/W was so limited that obsolescence took a lot longer than it does today. Those forces are stronger than engineering.
S.Lott
An important difference between mainframe and pc environments is that mainframes are designed from the ground up for virtualization. Many Cobol programs out there still think they're running on S/360 boxes - and you can keep them running forever if they meet the need they were designed for.
Cruachan
@S.Lott: Excellent point, I agree.@Cruachan: Even if it's Micro Focus Cobol running on Windows. 8)
duffymo
VB6 apps will happily run on Vista x64. As for the development environment, I use a W2k VM and it works very well.
Darrel Miller
In our company, we are learning the hard way that GNU is getting attractive because, warts and all, they don't go around obsoleting what you depend on.
Mike Dunlavey
VB6 apps are not "at risk". The VB6 Runtime is in Win7 and as such will be supported for AT LEAST 10 more years post Win7 release. That will be 20 years total. The VB6 tool is a different story. you need to buy support for that, if you depend on it. Please don't post rumors and suppositions. "I'd say it's at risk" is an irresponsible statement.
Cheeso
Totally agree, Cheeso. The runtime support is there, and the IDE can be run in a VM if necessary. For that matter, so can the apps, and apparently the current OS offerings from Microsoft are unpopular enough that they're going to be shipping XP-in-a-box with w7. The trend is clear. Retro worked.
Karl E. Peterson
@Mike Dunlavey: how old is VB6? Ten years? Don't Microsoft get the right to obsolete it _eventually_?
John Saunders
@John S No, actually. Microsoft don't get the right to make VB6 obsolete until they provide a **decent upgrade route to a replacement platform**. Many of their big customers have millions of lines of working, useful, VB6 code. They aren't going to rewrite it for fun. Microsoft should buy [VB Migration Partner](http://www.vbmigration.com/) or [VB Upgrade Companion](http://www.artinsoft.com/pr_vbcompanion.aspx) and make them available free.
MarkJ
@MarkJ Agree about their "right". But they did it with FoxPro ...
belisarius
+9  A: 

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.

tvanfosson
VB apps don't simply die - they enter this weird limbo where there are endless problems, but the rewrite is too expensive, so everyone just complains. Eventually hardware fails and you are forced (at great expense) to replace everything.
S.Lott
Anyone here aware of VirtualPC?
Karl E. Peterson
+3  A: 

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.

Tim
Until the hardware breaks. Then you'll find that it's now impossible to ran that old software on any new hardware. Also, you often find that you can't install the OS on anything too new, even with install media.
S.Lott
I have never run into that problem. Then again, I also haven't kept up on Foxpro 1.0 or VB for that matter. I think the oldest stuff I work on now is VC6. It is getting a bit creaky...
Tim
@S.Lott: In this age of virtualization, what is the "hardware" thing you speak of? ;) But you're right, even in such case sooner or later you'd have a stack of 20 turtles^W VMs, and *then* something will break, *somewhere*.
Piskvor
+4  A: 

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.

luiscubal
+3  A: 

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.

Greg D
+22  A: 

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.

bruceatk
+4  A: 

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)

Booji Boy
There's no reason to assume that the next version of Windows will be called Windows 8. They may go back to using the year or letters or landscape term. Something like Windows 2012 or Windows TR (for terrific) or Windows Mesa. They may also just skip a bunch of numbers and use Windows 21 ;o)
wcm
or whatever windows 7++ is called ...
Booji Boy
Windows ++ I like it
wcm
Any basis for this? I expect Windows 8 to support the VB6 runtime. Windows 7 still supports **16-bit** applications!
MarkJ
Just my opinion. At the time I thought Windows 8 would a only run managed code natively (Midori http://bit.ly/cRSKb0 ), but now probably it looks like it might only run x64 code natively http://bit.ly/bQdn4Y but who knows?
Booji Boy
@Booji Interesting theory. You were predicting that Windows 8 wouldn't be able to run Word or Excel? The packages that [produce over 25% of their income?](http://stackoverflow.com/questions/3319561/risks-around-relying-on-vb6-applications) Don't confuse research activities with the core business.
MarkJ
It wouldn't make much sense if it couldn't run word or excel, or VB6 apps for that matter. I just ment that the IDE wouldn't work and it's hard to support an app that you can't make changes too. There's always VM's for getting aound that, though.
Booji Boy
+4  A: 

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.

Conrad
+9  A: 

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.

RS Conley
+4  A: 

I began professional programming with VB3 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 VB6 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 apps will be around.

  2. The number of fresh VB6 apps is going down in a spiral, so if you're looking to make a career as a VB6 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 a software written in VB6 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 VB6 being not supported by Windows.

Cyril Gupta
You are by no means the last to migrate to .NET. I am still part way through (early 2009)
MarkJ
The situation with VB programmers will likely be worse than COBOL programmers. COBOL is still a supported language with multiple implementations, and is still used for application development.
David Thornley
Did you manage to migrate this popular app to .Net half way through 2010?
wqw
@ wqw - No. We haven't even started yet. Instead we went and made some websites. :)
Cyril Gupta
+4  A: 

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.

Darron
Actually they are supporting the runtime on Windows 7 and they haven't said they won't support it on new versions of Windows.
MarkJ
+1  A: 

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.

Mike Dunlavey
Not only do I remember DDE, OLE, COM and DAO, but they all still work - and I have programs that prove it. MS must balance cost of backward compatibility vs benefit to Windows developers. Joel wrote about this ages ago: http://www.joelonsoftware.com/articles/APIWar.html
MarkJ
Mike Dunlavey
MarkJ
+3  A: 

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.

erikkallen
+2  A: 

I think Vb6 apps will live for a long time, like COBOL apps, 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 VB6 using Interop, if there are .NET features you want or even if you just want to learn .NET.

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

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

MarkJ
+1  A: 

I think VB6 will continue to work for a long time. For a start, dotnet has failed as a development platform for commercially mass distributed applications. nobody seems to use it in the way vb6/c++ were/are used. the dotnet runtimes are STILL not reliably there (from experience, we pulled a dotnet app adn recoded in c++ fot his one reason)

i agree about employability though.

loosing vb6 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 VB6 wihtin offices: who thinks of manipulating office via the dotnet route?

+1  A: 

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.

Chris Lively
+1  A: 

the runtimes are still the nightmare with dotnet.

i support code on 20,000-30,000 desktops and analyse the registry of them. The amount of PCs without any dotnet runtimes (let alone 2+) is staggering. There is no way one can mass-distribute auxillary code to them (core app 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 apps.

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 ....)

+2  A: 

Most of what is needed to run VB6 apps is also needed for VBA.

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

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

Joe
@Joe: Is there any support statement (retirement) for VBA?
Kb
I haven't seen one. But .NET/VSTO is a long way from being in a position to replace VBA for typical "power user" macro writers. So the migration of existing legacy VBA code hasn't really started in my experience (mostly in the financial industry).
Joe
+1  A: 

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 :-) -

steve
+1  A: 

VB6 works, until you need using Threads, or until you will have to face will files larger than 4GB-1.

DxCK
+1  A: 

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.

jitbit
One day Microsoft will stop supporting the VB6 runtime. It may not come soon, but one day it will happen. And then we'll find those accompanying libraries will gradually stop working. And our VB6 code will become useless. My company has lots of commercial VB6 code too. I'm not happy about the lack of upgrade route for our code.
MarkJ