Visual Basic 6: the runtime that will not die

Microsoft's Eric Nelson conducted a poll on how many businesses still use Visual Basic 6. It is hard to make sense of the statistics, since there was a built-in bias:

This survey was sent out to individuals we "suspected" had Visual Basic 6.0 heritage but it was also widely advertised through the MSDN Flash to UK developers.

In other words, only Windows developers were consulted, and those more likely to be using VB 6 were specially targetted. Some results:

  • 86.53% of respondents still program with VB 6
  • 87.62% actively maintain VB 6 applications
  • 46.81% have more than 100,000 lines of VB 6 code running
  • 42.58% plan to keep their applications in VB 6 for the forseeable future, even though most respondents believe that neither runtime nor the development environment is now supported by Microsoft
  • 51.76% plan to migrate their VB 6 applications to .NET (mostly to VB.NET, but a fair amount to C#), but are in no hurry to do so: most said "over the next three years"

See the original post for more detail. I'd like to know more about the wider picture - how many companies overall still use VB 6 - but although these figures are skewed I can well believe that there is a lot of VB 6 out there.

Incidentally, the respondents are correct in believing that the VB 6 IDE is no longer supported. Extended support ended in March 2008. However, note that Visual Basic for Applications, which partly shares the same runtime, remains part of Office and therefore is supported. The VB 6.0 runtime is supported at least until 10 years after the release of Windows Server 2008; see this paper for exactly what is and is not included.

I noticed that msvbvm60.dll, along with other VB 6.0 runtime files, is also in my beta copy of Windows 7. I guess that will nudge the support life for the runtime even further into the future.

The bottom line is that Microsoft would be crazy to release a mainstream version of Windows that could not run VB 6 applications. For the most part, laggard VB 6 developers are safe, though there could be third-party components that stop working. Another point is that VB 6 will always be 32-bit.

All this prompts a few observations.

First, if you have skills in VB 6.0, it looks like you will be in demand for a while.

Second, my own views on VB 6.0 are mixed. I recognize that it was a revolutionary and very capable tool; but if anyone is inclined to wax lyrical about its merits, I point them towards Verity Stob's Thirteen Ways to Loathe VB and Bring your Hatchet by Bruce McKinney. At best, it is a flawed platform.

Third, I do see the sense in leaving well alone in many cases. VB 6.0 is lightweight compared to .NET, and runs on a wider range of hardware. Migrating code is perilous unless you have rigorous unit tests; some quirk in VB may catch you out, so that ported code does not work in quite the same way.

It strikes me that there is little value in migrating from, say, a VB 6.0 client application to a .NET Windows Forms application. My instinct would be either to leave it be, or redesign it as a web application. Otherwise the risk is that your new ported application will be just like the old version, but slower.

Microsoft has a summary of the options here, which seems to promote the idea of hybrid applications, perhaps using the Interop Forms Toolkit to embed .NET controls in VB 6 forms. Maybe, but there is a danger of getting the worst of both worlds. That said, every case is different so there is little value in generalizing. The important thing is to have a technical and business rationale for the path you choose.

0 TrackBacks

Listed below are links to blogs that reference this entry: Visual Basic 6: the runtime that will not die.

TrackBack URL for this entry: http://www.itjoblog.co.uk/blogadmin/mt-tb.cgi/79

5 Comments

Juan said:

The ideal is that VB.Net maintain their characteristics, while being 100% compatible with VB6.

development said:

We still use VB6 for several of our applications. Most of our client's legacy systems are still run on VB6 with web services and they all work fine for us!

Terry said:

VB6 just encourages some of the most backwater code I've ever had the displeasure of seeing but thankfully not maintaining though. I would *never* accept a job offer from a company that still used VB6 as their primary development language. The insinuation from this article that all VB6 programs are faster than VB.NET programs is interesting. I would set up a benchmark VB6 and VB.NET program for benchmarking but I'm allergic to VB6... :-)

Tim Anderson Author Profile Page said:

Terry

Thanks for the comment. I didn't intend to say that VB6 programs are always faster than VB.NET programs. For pure code, I'd guess that .NET would often be faster. That said, VB6 apps are generally lighter weight; and VB6 forms are snappier in my experience - there are good reasons for this, like the use of GDI rather than GDI+, and the existence of lightweight controls. These two factors mean that a straight port from VB6 to VB.NET may have slower perceived performance - longer start-up time, for example.

Like you, I'd much rather work in .NET.

Tim

James said:

Shock horror - some people have business to do and converting their existing apps from VB6 to something newer is probably not going to help them make more money.

Just because the code is based on an old language/libraries it does not mean the code has somehow "rotted" and needs to be replaced.

Leave a comment

Current Vacancies from CWJobs

(* Required field)










Preferred format
   
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4