21st Century Visual Basic
Microsoft stopped supporting VB6 in 2008. Here are some modern options for migrating those old apps or developing new ones in 2020 and beyond.
Visual Basic 6, VBA's compiled-language twin, has been out of support since 2008. There are several projects in various stages of development that have built off of the VB6/VBA shared syntax. Here's a quick roundup of these projects.
I only have personal experience with the first two projects listed below. Even then, I haven't used B4X in several years, so things may have changed significantly.
If you have any firsthand experience with any of these projects, please drop me a line via email (mike {at} nolongerset {dot} com) or Twitter, @nolongerset.
VB.Net
For the sake of completeness, I'll mention this option here briefly. I won't go into any detail because I'm sure you've heard of it. It shares much of the VB6/VBA syntax but is vastly different under the hood. There are other projects that aim for 100% code compatibility with VB6; this is not one of them.
B4X
The B4X suite includes B4A (Basic for Android), B4i (Basic for iOS), B4J (Basic for Java), and B4R (Basic for Arduino). Several years ago, I experimented with Android app development as a hobby project. I went the traditional route with Android Studio initially. The initial learning curve was high and I never got very far. Then I stumbled across B4A, which was still a commercial project. In about ten minutes, I managed to create a simple "Hello, world!" app and install it on my phone with live debugging.
As I recall, the project "compiles" down to native Java-based Android applications. The syntax is very much VB-inspired, but the performance is in-line with native development. I happily paid over $100 for a license to B4A when it was still a commercial project. It has since been open-sourced and is a great starting point if you are looking into mobile application development.
One major drawback when I was testing B4A is that forms were saved in a binary format that made version control difficult. There was an export and import function to save the binary format to a human-readable text format. These functions would have allowed for a scriptable solution to the problem. That's better than nothing, but it still introduces a lot of friction into the process. That extra friction greatly discourages the use of proper version control. Hopefully, the situation has improved since then.
RADBasic
RAD Basic's primary goal is to achieve 100% compatibility with VB6 code. It is the only project on this list that currently makes that claim for both code and GUI elements, such as forms.
That said, the project is still in pre-Alpha as of this writing. The website has not seen many recent updates, but there is a mailing list signup. I have no idea how active the mailing list is. Aside from the mailing list, it appears the best place to go to follow this project is on Twitter, @radbasic.
Mercury
Mercury is a member of the Elements suite of programming languages. Elements offers support for six different programming languages, including Object Pascal, C#, Swift, Java, Go, and VB (.NET). These languages can be mixed and matched, even within the same project. Any of the supported languages can then be used to target one of several platforms, such as Windows, Android, iOS, etc.
Mercury, currently in Beta, is an implementation of the BASIC programming language that is intended to be fully code-compatible with Microsoft Visual Basic.NET™.
The Elements suite--of which Mercury is a part--carries a pretty hefty price tag. The full suite will set you back $69 per month per developer. Early bird pricing for Mercury alone is $39 per month per developer.
Xojo
Xojo offers multi-platform development support for desktop, web, mobile, and Raspberry Pi. It has a very familiar syntax for VB6/VBA developers, but it is not fully compatible. Also, it does not support the creation of .dll's, ActiveX controls, or any other type of shared library. This may be a non-starter for some.
This is a commercial project. The development environment and IDE are free to use while debugging; you'll need a license to compile and distribute an executable. A Windows desktop-only development license has a one-time price of $99, which comes with a year of updates.
TwinBasic
If you've read much of this blog, you know how I feel about vbWatchdog. If I could keep only one third-party tool for Access development, vbWatchdog would be it. You could say my interest was piqued, then, when Wayne Phillips--vbWatchdog's developer--announced he was working on an ambitious new project.
TwinBasic is Wayne's "modern take on classic BASIC."
TwinBasic gives classic Basic a modern twist. Designed to be 100% compatible with legacy VBA and VB6 code, whilst providing a modern IDE and compiler with a vast array of improvements.
One of the more intriguing aspects of the project is the use of Visual Studio Code as its default IDE. The integration allows for some really cool features, such as toggling the display of parameter names within the code:
At this stage in its development, TwinBasic does not support form editing or other GUI features. Support for those features is on the roadmap and is expected in the upcoming year.
The project is set for an official release in 2021. Keep an eye out for it!
Image by Stefan Keller from Pixabay