ArtinSoft's Blogs

Software Migration Experts
Welcome to ArtinSoft's Blogs Sign in | Join | Help
in Search

The Myth of Visual Basic (VB 6) Migration / Upgrade

The myths about Visual Basic migration make it easy to play the “blame” game instead of trying to understand the issue. Often, in making the wrong assumptions, we “write off” some alternatives without even considering them. However, with training, support from automatic migration products and the use of a comprehensive migration methodology, the migration is not only possible using a fraction of the resources required for a rewrite, but it is also the right choice to reduce the Total Cost of Operation and prepare applications to maximize their future business value. We'll explore everything related to VB6 migration in this blog.

VB6 Runtime WILL be supported on Windows 7 but no plans to support it on future version of windows.

I spoke to Paul Yuknewicz who is a Program Manager on the Microsoft Visual Basic team and who is quite involved with everything related to VB6 and its migration process.  Paul said and I quote: "VB6 runtime will be shipping and supported as a part of Windows 7, however there are no plans to ship it in future versions of Windows."  Microsoft will surely release an official document stating this in the near future. What is my take on this latest Microsoft move in the VB6 saga?  Well, I guess Microsoft had to react to the fact that VB6 is still widely popular and that a lot of businesses have delayed (procrastinated??) the decision to move to .NET.  From that perspective I believe this is the right move for Microsoft.  They want to minimize the impact of the end of life for Visual Basic 6.On the other hand, I have to wonder, why do people seem to not want to upgrade?  Over the years I have formulated a number of hypotheses as explained below. 
  • Migration is perceived as expensive: In the short term is certainly cheaper to do nothing than to migrate, however, if you have a valuable asset you want to make sure you can extend its life (and therefore ROI) as much as possible.  Automatic migration is the best alternative to achieve it.
  • Migration is perceived as lacking value: I have often heard how by automatically migrating an application at the end I get the same application and therefore I did not gain anything.  This is also false.  Once you upgraded the source code you have injected new life into it.  Your application has suddenly extended its life expectancy and (again) its ROI.  Maintenance and evolution of a .NET application is safer than of a VB6 app.
  • VB6 Applications are not evolving: Can this be true?  It is possible that companies have VB6 applications that support a business function that is not evolving.  If this is the case, leaving applications in VB6 is just fine and the fact that now Microsoft supports VB6 in Windows 7 gives a new breath to those applications.  However, in my more than 15 years of experience in the IT industry I have yet to see an application that never changes!  It is important to remember that the Visual Basic 6 Development environment is off main stream support by Microsoft. 
  • Applications will be retired before VB6 stops working: This is a plausible for a number of applications.  Companies sometimes choose a substitution strategy and just retire applications, or business processes stop being important and therefore the applications that support them are no longer necessary.  These cases certainly happen, and a number of applications might be in this category but it cannot be the great majority of them!  Additionally, companies sometimes believe that substituting an application for an equivalent one is cheaper than migrating them.  Well, I dare them to review this assumption make sure they run a complete comparison.  
  • It’s just procrastination: The famous “if it ain’t broken don’t fix it!” … do I have to comment on this??  May this be the reason why VB6 is still around?
  • There’s just too much VB6: This is the argument Gartner used to make for COBOL: it would be too expensive to migrate all the COBOL.  In fact, I have even heard this from an IBM executive who told me that at some point they were scared that all the mainframe code would migrate to Java (and therefore business rules would no longer be trapped in a mainframe) but then they run the math and just relaxed!  Of course, there is no real automatic solution for COBOL!!!!  For VB6 is a different story (ArtinSoft infomercial: http://www.artinsoft.com/pr_vbcompanion.aspx ).
 What is your position?  Am I missing a category of reasons why VB6 is still around?

 

Comments

 

jamie said:

VB6 is a great programming language and Fast....net is bloated and vb net apps run slow....artinsoft does not convert a large vb 6 application, so they have to be re written anyway. VB net is a different language altogether, it is not an upgrade from vb6. Microsoft should support it for years to come..

January 15, 2009 4:01 AM
 

Fzoufaly said:

Over the years at ArtinSoft we have converted many large applications up to complete systems with several million lines of code.  

Over the past year we have also been licensing the VB Companion tool with great success.  The VB Companion has a very high level of automation and allows you to control the pace of the migration.

If the application has value for a business and you want to inject new life into it you should always consider migration as an alternative.  If you don't, you are not evaluating all feasible opportunities.

January 15, 2009 6:50 AM
 

Robert Conley said:

One statement sums it up. Behavior is NOT preserved between Visual Basic 6 and VB.NET. This is unlike the situation with C++ where .NET is on top of the regular C++ langauge.

You can mitigate this somewhat by having a well design application where everything is separated in different ActiveX DLLs (and/or EXEs) Then you can migrate over in sections. However the initial lack of support for the VB6 printing model and the continue lack of support of the VB6 graphics model make a top down conversion a problem. (Working you way down from the forms to the lowest level dlls.)

The reverse is just as hard because of the lack of copy and paste support between the two versions of VB. Notably the change in the meaning of the data types.

Any one issue is trival but in combination they make for a big headache in migration. My company maintains a CAD/CAM application written in VB6 for our Metal Cutting Machines. We were comfortable with VB back in the mid 90s as Microsoft showed remarkable support for their version of Basic. We were shocked that at the breaking changes in VB.NET.

We were angered when languages like F# came out which was one of many langauges that showed now flexible the .NET platform was in adapting to different types of langauges. F# and other langauge showed that many of the breaking changes were undeeded. For example having Integer compile to Int32 instead of Int16. This may not be a big change for a person making a website or a database front end but a math heavy application like mine it can make a big difference.

Then later they came out with the VB6 Printer compatibility library which showed that if they wanted to put the effort into it they could have a made VB.NET a lot more compatible than it was.

What is boils down to is that the market for the original Visual Basic was much vaster than Microsoft could conceive.

The majority of Visual Basic application are database front end using a report engine like Crystal Report. For this type of application Microsoft supplied adequate conversion tools and compatibility.

There is a whole another side to Visual BASIC where thousands of Vertical Market developers adopted it for use in machine control, process control, and dozens of other apps that targeted certain industries. No one vertical market was near the size of the corporate office market but combined we accounted for a large part of VB's sales.

The reason for so many vertical market developer adopting VB is simply VBXs and later OCXs/ActiveX. For the first time we have a platform where the manufacturers of many different types of hardware could offer support software that "plugs" into an environment. Also Visual Basic could use DLLs straight. The ease of development and the plug-in was a one-two punch that made it's use compelling to Vertical Market Developers. Several other vendor notably Borland's Delphi tried to do the same thing but Microsoft dominated.

C++ and other "standard" languages just couldn't compete in the ease of use of Visual BASIC. Plus each individual Vertical Market wasn't big enough to justify the specialized knowledge needed to make C++ tools. But VB was just easy enough to allow thousands of smaller vendor to invest the time to make tools.

So when VB.NET fell apart in the compatibility department many of us continued to use VB6 as that ensured that the behavior of our application is continued.

January 15, 2009 9:24 AM
 

Fzoufaly said:

Certainly VB.NET and VB6 are 2 different languages.  As you clearly state if you look at individual statement it is not too hard to find a .NET equivalent but you really need a migration process to take you app to .NET.

I also agree with you that the vas majortity of VB code was related to information systems and that Microsoft with the VB Upgrade Wizard put a lot of emphasis in this space.

However, at ArtinSoft we have successfully migrated many different types of applications.  Applications that control robotic arms at a large farmaceutical company and even CAD/CAM applications for the manufacturing of fornitures have all been successfully moved to .NET.

The transition is not painless and a certain amount of training is required to learn .NET and to perform the change, but there are many advantages of moving forward.  Microsoft has successfully transitioned several million Visual Basic developers and Visual Basic.NET is still considered one of the most easy to use languages.

January 16, 2009 4:43 PM
 

Fred said:

Microsoft statements like "... no plans to ship it in future versions of Windows" are just that: statements about plans.  Some of it may be legal cover, some may be related to how nebulous the future is.  It clearly doesn't commit them either way.  That's why I'll be surprised to see any statement cutting VB6 software off in the future.

One fact is that many people just don't like the direction Microsoft took with managed code, the language syntax, the development tools, feature churn, and the list could go on and on.  It doesn't even mean they wouldn't welcome an updated VB7, 8, 9, etc. if it stayed true to form with a clear update path.  But Microsoft chose to ignore this market segment and that ship has long ago sailed.

You offer a valuable service that will meet many needs, but not everyone has an interest in going in that direction.  The Cobol to Java analogy is probably apt in several ways.

VB.Net is to VB as New Coke was to Classic.  A difference is that when customers didn't care for the taste Coke reformulated back toward the original product.

January 18, 2009 5:48 PM
 

Fzoufaly said:

Fred: I like your analogy of New Coke but I don't think Microsoft will go back on its steps.  Additionally, .NET is a very successfull platform and even if the installed base of Visual Basic 6 applications is still very large (some estimate it at 14 billions lines of code worldwide) there has been a huge migration of developers.  In fact, it seems like most VB6 devs are now working on .NET projects at least part time.

In my mind it is just a matter of time, and even if Microsoft decides to continue to support the VB6 runtime companies shouls still consider alternate plans.

January 18, 2009 9:13 PM
 

Karl E. Peterson said:

You overlooked the main reason VB6 is thriving and .NET is floundering.  

.NET: It's About Trust!

I got a good chuckle out of your "do I need to comment" on the if-it-ain't-broke paradigm, too.  That revels your true colors.  You need to break stuff in order to have something to do, huh?  Figures...

March 4, 2009 7:14 PM
 

Ray Mercer said:

Fzoufaly,

Quoting you

[quote]Certainly VB.NET and VB6 are 2 different languages.[/quote]

If you know this then why do you keep calling it an "upgrade?" I gave up VB programming because VB.NET is not VB. The ony thing that could get me back would be if MS made a version of VB that ran on the .NET runtime - or even better just made VB 7.0 that didn't require .NET at all.

Even then, it might be too late. Been years now that they have ignored their (once) largest programmer base...

-Ray

March 4, 2009 9:11 PM
 

Kevin Provance said:

Yeah, I pretty much think you're wrong on all accounts.

>> .NET is a very successfull platform << (successful only has one L, by the way...that's ironic)

Says who?  MSFT?  Not giving "developers, developers, developers" a choice in the matter does not constitute success.  My VB6 apps are constantly evolving, are still selling and are as relevant as ever.  If MSFT supported a VB Classic platform and a .NET platform and gave developers a choice, I think those numbers you like to tout would be much lower.

March 4, 2009 9:26 PM
 

Eduardo said:

I wonder: If MS can see now so clearly that they took the wrong path, why are they still so haughty and irrational and don't try to correct it.

They are loosing everyday with their position, and if they insist, at the end, they'll loose a lot. Much more than they think.

It's not a minor issue, it's not about loosing some VS license sales, it's a snow ball with many implications.

You can't do this to millions of programmers and think there will be no consequences. They need to rethink what they were doing and to correct it, that's obvious to someone that is not blind.

They want to make money, right? Well, they took the wrong direction, they need to correct it.

It's not about proud, it's not about who wins, it's not about obstinacy.

How they'll earn more money, scorning millions of programmers? With no respect at all? I don't think so.

And there are more reasons for not moving to .NET that the ones that you pointed.

In the next times we'll see if there are some smart people at MS (really taking care of VB programmers) or not.

(Keep lying is not an option, we are not too stupid)

They made big mistakes with Vista, they are trying to correct the situation ASAP launching Win7. And what about the big mistake with VB?

I repeat: it's not a minor issue.

March 6, 2009 1:44 PM
 

another person counting lost productivity, weeping for vb said:

agreed. VB was a case of throwing the developers to the wolves. something like silverlight on the otherhand cannot be steamrollered in and has to win by being better ....  and how is it doing?

... and ... webforms anyone?

ROFL

March 19, 2009 7:47 AM
 

Richard Kowalski said:

I read this page with great interest as my blood boiled madly. Thanks for the pointer to the support info for VB6 and Win7. I'm a VB6 developer and I wish I was a .NET developer. If Microsoft had provided some kind of backward compatibility in .NET for VB6 it would have been a no-brainer to upgrade. Even with something as paltry as the Interop Forms Toolkit when VS.NET was initially released would have allowed me to say that we can continue forward with .NET and upgrade the VB6 code as time permits. But no, the geniuses at Microsoft had to perpetrate the biggest cosmic joke ever ... and the joke was on thousands and thousands of VB6 developers everywhere. In less than a nanosecond, our primary life skills were blasted into oblivion. Thanks a lot Bill Gates. You can move on with your billions of dollars, but the rest of us are still out here earning a living.  

April 28, 2009 12:40 PM
 

webgurupc said:

There is no equivalent to Active X Documents in .NET (to my knowledge) but I would like to be proved wrong. What I like about Active X Documents is that they run (compiled) on the client so that my source code is hidden. Yes I can compile a .NET app but I believe it will run on a web server and what IT department is going to allow a program written by a third party to run on their web server and potentially crash it (their view not mine.)

so in short what I require is

.hidden source (compiled?)

.run on client.

= ActiveX Documents (VB)

May 22, 2009 3:21 AM
 

Federico Zoufaly said:

With respect to Active X Documents, Mauricio Rojas has a very good post on how to handle them:

<a href="blogs.artinsoft.net/.../migration-of-activex-userdocuments-to-c-or-net.aspx "> Migration of Active X Documents </a>

May 22, 2009 4:50 PM
 

Mark van der Vliet said:

I worked with Visual basic from version 1 on. When VB.net got on the market I tried

to upgrade. It took me too much time and I kept on using VB6.

I just downloaded VB express 2008. It is the first upgrade that I could use to

receive serial input with msComm.ocx.

So I did not give up hope that microsoft will come with a workable upgrade.

On the other hand I am 70 years old and most of my future is already behind me.

June 25, 2009 3:24 AM
 

Mike Lazear said:

A whole other area missed here is VBA.  I have code that runs both in applications inside of VBA and in VB6.  I can easily move code back and forth between the two.  I can't do that with VB.NET.  There is no such thing as VBA.NET and most applications that support VBA have minimal if any support (and certainly not integrated support) for VB.NET.  

Also, I dislike the idea of taking my VBA app. that launches in a couple of seconds and converting it to VB.NET where it can take 30 seconds or longer to run.  "Gee mister customer don't you just love this whiz bang new version of my software that only launches 15 times slower than the last release?"

There are thousands of developers who develop small apps that don't need internet access, don't need excessive security, and want to run quickly.  VB was perfect for that.  

FYI, I have apps in VB6 and VB.NET.  I'm in the process of migrating at least one VB.NET application to VB6.

August 13, 2009 6:25 PM
 

Leroy Dyer said:

I think its a major shame that microsoft are relegating developers to virtual machines and XP... Just so that we can still work with vb6.

Perhaps they should find a way to "GIVE IT UP" to public source community. making it the first "TRULY" free programming language.....

AND leaving Support in windows 7 & 2008 server, for legasy programming environments such as MSSCRIPT... VB6 .... MSAGENT... in RUNTIME UPDATES etc....

And Even Extend Interop FORMS Across the Whole spectrum of microsoft products...making it easier for vb6 apps to be intergrated into VB.net+ and vice versa.

As with technolgies moving very fast. ideas! quickly moving forward...

microsoft probably feel that they need to constantly upgram programming environments etc Continually. BUT. as with the microsoft update faclity is really going to waste.... THe workspaces should be EXTENDED & UPDATED but this is never the case, as service packs just FIX discovered problems....never really updating the program in any visible way...so they release a new version.... gui change... couple of new additions.... why could that come in an update...?

those who  cant afford the new product are left behind... this is the same with vb...

once you start "thinking in vb6" its hard to start "thinking in VB.net" then another complete change with 2005 -2008 and even completly new with 2010....

what happened to 2005 for the vb6 upgrade path ? completly disssapeared..... no try upgrading forms to 2008 NO IT WILL NOT! we were left on the shelf long ago....now we are left in the cold with not even support for our programs to work correctly in win7+

many home automation programs use component written in Visual studio 6.... for basic home  inventors etc... USERS .... we are left for dead.... while busness users continue to pay these prices justifing microsofts actions

I am very unhappy.... Give us our visual studio 6 "Upgrade it to become Compatible with the .net / windows 7" with at least a SERVICE PACK- "KEEP IT ALIVE" "UPDATE THE CONTROLS(min)" "update the package and deployment wizard"... "Update the COMPILER"....

As with virtual machines "the code need to become aware" of the new enviroment

August 29, 2009 9:36 AM
 

Darrell B. said:

I for one have no plans whatsoever to migrate my VB6 applications to .NET. Most .NET programs are easy to decompile and retrieve the source code, thereby allowing your code to be stolen. To my knowledge, a VB6 application which is compiled to native code cannot be decompiled this way.

Further, the .NET runtime or "framework", is bloated, buggy, slow, and insecure.

I am advising all of my clients not only to not "upgrade" to .NET, but also to not upgrade their operating systems beyond Win XP. XP works fine with VB6 apps, is stable and fast, and is in general a better operating system than any henceforth.

So why "upgrade" anything? How would Microsoft feel if most of their customers simply decided not to move to new operating systems nor programming platforms?

For myself, I am strongly looking into alternative programming languages such as C++ and maybe alternate Basic type languages.

I am also taking a strong second look at both Linux and the Macintosh.....

August 31, 2009 12:53 PM
 

Rob D said:

i am a retired roofing contractor and started learning vb 6 in 2002 and have many customers using my lightweight portable vb6 roof estimating software. I looked at vbnet and would have to distribute the huge net files. When the time comes I am going to find software that is not Microsoft with a company that does not bail on their products.

October 22, 2009 4:50 PM
 

Ron said:

If you thought the Vista reception was bad just wait til MS does come out with a version of Windows that does not support VB6 apps. NOBODY will be upgrading, business users will revolt and Linux and other operating systems will start to become a real alternative to Windows. I believe MS has lost a lot of programmers and Windows users due to the way they abandoned VB6 and if their abandonment continues they will lose more and more.

Why switch to .net and put your trust in a company that has a history of just abanding its users? Switch to .net so that next year MS can decide to abandon .net for ".whatever" and have to start all over again?

November 11, 2009 9:53 AM
 

MichaelF said:

I was sent a link to this forum by a friend who  had probably heard me rant about just about all of the points raised above. So I'm not going to repeat what I already agree with. I thank Fzoufaly for enabling the discussion.

I shared the frustration when MS dumped the VB fraternity. I signed the petition. I rant all the time. But I have quite made my mind up. Moving to VB.NET is not going to happen. If I have to take the work of 18 years and port it into a new language, then it will be to the Linux-based VB lookalike which runs most things straight off.

With due respect to Fzoufaly's product which is probably wonderful, the bad taste left in my mouth by MS guarantees that I will not remain in a Windows environment. I was programming before Windows ever arrived and will continue elsewhere. My little company will therefore deny Microsoft the sale of 500 copies of Win7, Office, etc which won't make the biggest dent MS has ever suffered. However, more of us program in VB6 than all other languages. What if we all did the same? Would MS then make VB opensource as they left and turned out the lights?

MS about-turned on the end-of-life notice on XP when faced with the loss of millions of units of sales caused by failing to reach a deal with netbook manufacturers. About time they got real: we do actually have an awful lot of clout...

November 13, 2009 2:57 PM
 

Talas Grim said:

Much like installing Windows 7 (so called upgrade for Windows XP), you are better off (required) with a clean sweep, so much like my sitting out on Vista, I will skip .Net, when I change my VB6 Apps I will just switch to a new language just like Microsoft dropped me on a new version of VB (that wasn't .Net), I will now also drop my MS Programming Languages, I'm already using my C/C++ non-MS Compilers and IDE's more than ever, and Also my non-MS OS's like Ubuntu, Gentoo, etc.   Time for a clean sweep away from MS.

November 17, 2009 7:50 AM
 

Boris Gimbarzevsky said:

The only reason I switched form the Macintosh to Windows in 1993 was because of VB3.  It was the only programming environment in which I could readily develop pen based medical applications (couldn't afford the Newton back then).  Since then I've done virtually all of my programming in VB with periodic upgrades (skipped VB5 as I couldn't see the point of it) and use VB6 programs on a daily basis.

I experimented once with VB.NET and found it less than useless as it required me to totally rewrite my applications.  I have VB programs that call DLL's that I've written in C and they run very fast on new machines.  My experience with VB.NET is that the code is very slow and even VB6 on a 3 GHz machine has trouble keeping up with 2 serial ports sending data at 38 Kbaud.

My day job is as a physician and I program for fun.  I started with FORTRAN and still use some of my 40 year old FORTRAN programs although they've been recompiled for many new architectures.  VB.NET is essentially Microsoft's reinvention of Java.  If I want a virtual machine, I'll run an application in VirtualBox which is the only way I can now run a VB6 development environment on my W7 machine.  The VB6 code does execute under W7, but errors that occur are totally bizarre with some applications not running on a Sony Vaio, and others not running properly on an HP Touchsmart and a netbook which completely rejects Comdlg32.ocx thus breaking one of my key applications.

My solution to the problem that Microsoft has caused is to start learning Java to use in applications in which execution speed is not crucial.  For time critical applications, I program in C and run the programs on embedded systems which are more powerfull than the machines I used to use even 20 years ago where I can actually get the same sub-millisecond interrupt latency I can get on my Commodore 64 but that the fastest Windows system is incapable of providing.  I suspect that it won't be long before I'll be running primarily Linux machines and running windows XP in a virtual machine to use my VB programs.  I have to do this now with BasiliskII to utilize my 23 year old Mac programs like CricketGraph which are far simpler to use than any modern graphing software I've seen.

Microsoft has a long history of dumping users of its products; QuickBasic for the Mac was great when it came out and wrote a lot of code for it but it assumes 24 bit addressing and have to make sure it's in low memory on an emulated Mac.  I have lots of documents in Word for the early Macintosh but the only way to get at them is to run my MacIIvx in emulation and export the rtf files which are buggy.  Microsoft FORTRAN for the Mac was also dropped.  Penwindows was great when it came out, but the when Bill Gates suddenly redisovered tablet PC's, a completely incompatible ink format came out and all of the drawings I made on the 1993 tablet PC have to be retrieved by running Windows 3.1 in a virtual machine and using some awful hacks to get at the stroke data.  The only reason I stayed with Windows as long as I did was VB.

July 26, 2010 1:15 AM

Leave a Comment

(required) 
(optional)
(required) 
Submit

About Fzoufaly

Federico—ArtinSoft co-founder—holds a PhDC in Computer Science from the University of Florida, and a Master's degree in Computer Science and an honors Licentiate degree in Electronics Engineering from the Costa Rican Institute of Technology (ITCR). Federico has been a faculty member of both the ITCR Computer Science Department and the University of Florida. He is currently the Executive Vice President in charge of operations at ArtinSoft. Previously, he was vice president of ZIPTEK Inc., a technology-based company that offers consultancy services in automation networks. In 1993, the year he co-founded ArtinSoft, he won the National Electronics Award in the Research Category, awarded by the Costa Rican Federated College of Engineers and Architects. Federico has had an active participation in several local electronic and computer research projects. He is a founding member of the Costa Rican Association of Electronics Engineers and has served as a member of its Board of Directors since 1992, holding its Presidency on two occasions. He is also member of the Association for Computing Machines, the IEEE, as well as an active member of the College of Technological Engineers. Currently Federico is directing ArtinSoft's marketing efforts.

This Blog

Syndication

News

Myth: "Visual Basic 6 Migrations are not worth it." Current Status: BUSTED! Summary: Visual Basic Upgrade/Migrations are the most cost effective and less risky approach to evolve your code and take full advantage of .NET. The process to upgrade is not trivial, but THERE IS a process to migrate VB6 applications that can be followed and guarantees success.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems