Whither VB? The withering away of a category killer

Rogers Cadenhead posts about something that has been on my mind recently, the ending of support for Visual Basic 6. A while ago Scoble and Dan Appleman blogged the opposing viewpoint: making customers move their apps off VB6 is the right thing to do because VB.NET is a far superior language.

Let me illustrate a real world perspective on the debate, rather than the strawman that Appleman provides. Say you are a small software company that makes a product that is written in a variety of languages, and a core part of the application suite having to do with automatically sending e-mails is written as a Visual Basic 6 application.

Now why would someone write an email notification process in VB6? I don’t know. Why would someone write the standard procurement system for the Department of Defense in PowerBuilder? This happens all the time: mission critical apps get written in less than mission critical languages, and then get maintained, more or less, forever.

So fast forward about eight years from the creation of this app. The mail landscape has changed, and the architecture of the mailing process, which used to leverage client apps for sending mails, needs to change too. Email viruses and spammers have made old approaches to writing mail functionality painful; organizations are abandoning POP/SMTP based mail and retreating to MAPI. Meanwhile your VB app, which relied on a once attractive piece of third party code to provide MAPI support, is stagnating, and has started to show issues with age (like memory leaks, and interop issues with the security measures added across the Microsoft mail stack). In other words, it’s time to freshen the app. So the natural thing to do is to look at Visual Basic.NET, the successor to VB6, right?

Um, wrong. VB.NET famously no longer supports the programming interfaces used by VB6. And the VB6 to VB.NET migration tools bite; in fact, the tool blows up prior to successfully migrating the VB6 project. And no one in your development team has expertise in the .NET framework. In the years since VB, the team has moved on to C++ and Java. So which language will be the natural choice for migrating the mail app? Not VB.NET. What might have been a no-brainer to move up the ladder to the next version of VB has turned into a major nightmare for our small software company, and the only clear loser is Microsoft.