Kinda wondered when I'd finally see this argument coming out of RealSoftware:

Visual Basic.Net requires Visual Basic developers to modify their code because .Net cannot run Visual Basic code. So, like it or not, if you are a Visual Basic developer who wants to take your Visual Basic code forward into new projects, you will be porting.


After learning a new language (.Net), significantly changing my source code, and struggling to create programs with a massive 'framework' underneath them, I would have a program that ran under Windows. I then started to look into alternatives. If I had to go through the process of learning a new language and IDE, what else could I get?

I then found REAL Software and REALbasic. REALbasic 5.5.3 for Windows is a modern, fully object-oriented software development environment (IDE), quite similar to Visual Basic. It could use much of my Visual Basic code unchanged, and it could read most of my Visual Basic forms.

Okay, RealBasic does have the crossplatform compilation advantage over VB.NET, but is there really much else? I've found the IDE to be a significant downgrade from VB6 or VB.NET, and obviously you can toss your Windows familiarity out the window if you're really interested in the xplat abilities. Being able to recreate GUIs is nice at all, but as anyone with more than three VB6 apps can tell you, this guy included, I'm sure, that's hardly where you're spending most of you time. I'd also like to dispell the idea that you will "strugg[e] to create programs with a massive 'framework' underneath them" in .NET. Visual Studio.NET is another excellent IDE, and if you want to completely ignore all the new, truly object-oriented features .NET provides (DON'T!), you can use VS.NET to code for VB.NET almost exactly the way you used VB6, before.

I've not messed with RB on Windows much, but it does, admittedly, seem to provide a pretty easy way to access COM, etc, but, um, if you're not worried about xplat, doesn't your VB6 IDE still work fairly well? Can you imagine a reason Microsoft would make VB6 apps stop working on, say, Vista? Are they that cutthroat when it comes to making programmers switch? And do you really think the VB-to-RB converter app is going to have much more success than the VB6-to-VB.NET app? (which, in my experience, was horrendous) I know, I know, I should pull out a large VB6 project and give it a rip, but then that'll be hours and hours of play into a black hole without any sort of return -- kinda like this blog, but on a much larger scale.

The page is an interesting introduction to RB for VB6ers, and worth a quick read if you're interested. At the very least, it's a neat way to move your 'Windows skillz' onto other platforms pretty easily, and for just a hundred bucks. I'm upset to see $100 does not buy you any sort of ADO equivalent -- that'll cost you $300 extra bucks -- but heck, RB does have random file access. ;^)

In any event, here's the key line from the article:
The port will require some manual tweaking, so you, the developer, must determine if it's easier to port or re-write your software.

Nice. At least the author's honest, even if this is buried a bit in the "white paper". Chances are you're rewriting, and chances are you're replacing a ton of COM objects with, well, what? What a headache. For new projects, RB might be worth a look, and if you throw away xplat, you might be able to keep using Windows COM in places too, perhaps to get a few extra features into the Windows build very quickly.

Still, I just can't imagine it's the best next step for the life of medium to large apps you've still got in VB6. Blackbaud, as an extreme example, moved from VB6 to .NET. With their legacy codebase and the way they leverage Windows libraries, I seriously doubt they could have considered migrating to RB. As your apps approach that sort of size and Windows-specific investment, you'll find yourself in the same place. As long as there's Windows, you'll very likely have Microsoft. As long as, well, just who are these RealBasic guys, anyhow?!

And seriously, who reads files in VB6 like this any more?
Dim file As Integer
Dim x As String
x = String(FileLen("vb2linuxrocks"), " ")
file = FreeFile()
Open "vb2linuxrocks" For Binary Access Read As file
Get file, , x
Close file