You might have used the VB6 to VB.NET Upgrade Wizard in Visual Studio, or maybe the Java Language Conversion Assistant (JLCA) to convert Java code to C#.  These tools have something in common – the technology comes not from Microsoft, but from a company called ArtinSoft.

This is a company with some very intriguing products based on artificial intelligence engines.  Their business is all about source code and platform conversion – VB6 to VB.NET, Java to C#, PL/SQL to T/SQL, Linc to J2EE – you name it, they can probably do it.  They have two AI-based engines, and the one called Freedom is behind JLCA and the VB.NET Upgrade Wizard.  Through a complex process, this engine creates a langage-agnostic intermediate representation of the original source code, which can then be written out in a completely different language.

Now, people tend to complain a lot about the VB.NET Upgrade Wizard, but if you stop and think about what the tool has to do, it works incredibly well.  The quality of the original source is obviously going to be a major factor.  If the VB6 source has Option Explicit off and looks, well, like most VB6 code does, it’s amazing that the wizard can make any sense of it.

One important thing to know is that ArtinSoft sells their own versions of both of these tools: the Visual Basic Upgrade Companion and the JLCA Companion.  These products are much more advanced versions of the free tools.  The VB Upgrade Companion can even convert your VB6 code to C#.  Yes, VB6 directly to C#!  How cool is that?  ArtinSoft also offers consulting services to help with your migration projects.

Sometimes the right answer is to redesign and rewrite your code.  Other (most?) times, that is very hard to justify to your CIO, and that’s when your company might want to consider ArtinSoft’s paid applications and services.  Cost may still be an issue, since I hear that these tools are licensed by number of lines of source code, but that’s something to evaluate while you look at all of the pros and cons and make a final rewrite/upgrade decision.