For no specific reason other than life random offers I've gone through a few of those "dead and bad" reputational language in my career (VB6, Delphi, PHP), mostly as a case of "there is a lot of money being a decent programmer who can use these correctly".
And there are three things I learned about it
1. There is a lot more money in it than you would think. The good part of "there is a lot of newbie using it" is that there is a lot of newbie using it and tons of software in it out there, and once you prove you know what you're doing you drown in high paid work, and with a bit of job selection it's not the bad horrible maintenance kind but decent fun too.
2. There is no need trying to argue with people about it online or whatever. You're not going to convince anyone they're better language than they think. PHP 8 is a top notch language and people are still dumping on it using php 4 things.
3. Ultimately there are people who spend their time talking about what language is right and people who get things done, build something great and it doesn't matter if it's cpp or Javascript or whatever. So at the end of day I've made a fair bit of money improving or building stuff used by lots of people to generate tons of revenue, and everyone involved is happy about it.
> PHP 8 is a top notch language
Maybe the things they've added lately have been well designed, but did they ever actually fix the WTFs from PHP 4?
JavaScript has the same problem. They added `let` and `const` but never removed `var` or `==`. If you take a look at ESLint rules there are dozens of footguns that could have been fixed in the language. Not as bad as PHP's footguns, but still...
I've been using XYplorer for 10 years now and it's fantastic. There are just so many features and quality of life improvements over the Windows explorer.
It's written by a single person, and they're very responsive. I've recently reported a bug with the search (the first that I've noticed in all those years), and it's been fixed within a day. I'm only worried about the bus factor a little.
I have a GitHub repo with some of my settings/scripts/notes for XYplorer if someone's interested: https://github.com/darekkay/config-files/tree/master/xyplore...
I think VB is totally fine. It's a pragmatic solution to a real problem, and the ugliest things about it today are all a product of hindsight.
On the other hand, this rubs me the wrong way:
> So, wouldn’t it be logical to conclude: If such an application can be written in VB6 then VB6 cannot be that bad after all?
Yes, it absolutely could be bad. Our industry consists, in no small part, of turd polishing. Plenty of good software is written in bad (or ill-fitted) languages, and vice versa.
> Plenty of good software is written in bad (or ill-fitted) languages, and vice versa.
That's because you mention VB6 as a language. VB6 is not about the language, but about the platform and vertical integration; from the IDE to the app to the distribution.
It was magical that dropping a telephony component into a form enabled the form to make phone calls. Or you could drag-drop a Web Browser component, and have a browser inside your app. Or a database component, and a thousand other things. Few of these required reading the docs.
There are many apps that can be written (and deployed!) faster in legacy VB than with anything available today.
> It was magical that dropping a telephony component into a form enabled the form to make phone calls
the magic of COM[0]!
But when it crashed it crashed hard. And the underlying programming model (beyond just using premade ones) are a bit hard to grok and fraught with footguns that shoot not only yourself, but the OS as well.
And COM/OLE/ActiveX components (whatever Microsoft fancied calling them that year) could have been used just as easily from Delphi.
And you don't even need COM. You could do the same things today with RAD components in, say, Java. But it's just no longer a fad. Programmers nowadays don't think that dragging a component that makes phone calls and linking it to a button.
Nowadays, they would just write "npm install telephony" and then add a couple of lines that they got from the README.md on GitHub (or from their AI assistant) to make a call:
import { Dialer } from "telephony";
const dialer = new Dialer();
dialer.call("+1 800 1234 1234");
> And COM/OLE/ActiveX components [] could have been used just as easily from Delphi
I wanted to use Excel from within Delphi - I wasted more than a few weeks and ultimately failed. I always suspected that the COM/OLE integration had problems with some of the advanced features I was trying to use (I was trying to do something rather complicated). Plus the documentation and support was lacking for Delphi - Microsoft best supports Microsoft tools. I did use Delphi and COM successfully in many other situations but that one failure really soured me towards COM and Delphi together. I am typically capable of making complex integrations work, so I was surprised to fail.
The closest I can actually find on npm is this:
https://www.npmjs.com/package/react-native-telephony
And it’s nowhere near these neat 3 lines. Same for ui.
I agree that the spirit of VB/Delphi is in theory easily transferrable to any modern runtime. But in practice we suck at it and there’s nothing even remotely close to just dropping a component on a form. All we have is miles of vaguely explained boilerplate and the most convoluted idioms that don’t connect. The basic technology is lost and only miraculously exists as a windows support artifact.
The way COM model worked, is that an application (for example, microsoft word) would implement this COM interface (that they'd have to anyway, for various reasons such as interoperability), and it would become available as a component to be used in another application.
It's a grandiose vision. It just didnt work out because of how complicated it is in practise to implement the COM interface(s), and not enough apps did it anyway.
It is slightly different from a library, since that library would have to be useable from your language (or have some sort of FFI mechanism).
It was (is) an ABI, more stable than something available through a C/C++ compiler. It’s been years since I’ve lived in a Windows world, but as I understand it, it’s still very much alive and well. It didn’t fail because it was complicated, although it was, but it continued to evolve and was eventually superseded by .net. I worked with win32 & mfc quite a bit and had to interface with Com/activex a little, usually through wrappers of some kind, but it was always under the covers. I also wouldn’t say that it failed because not enough apps did it. I can’t speak to drivers or system components, but if you were distributing windows apps prior to and early into .net, you dealt with com directly or indirectly.
I personally think one of the main design problems of COM was that, ironically (given its name), it never really had "component" as a first-class concept. It was all about interfaces, and the rules on how implementation of IUnknown's QueryInterface must behave really highlight that: it's almost impossible to delegate to/compose over another component if that component was not written with this scenario in mind.
Have you tried Gambas, or the current version of Delphi ?
I agree with your conclusion, but when you say "VB is totally fine" do you mean VB6?
I can get Modern iterations of Visual Basic such as VB.Net. The syntax and semantics hurt my eye and my brain, but if that's your thing, yeah the language is very serviceable. It's a modern language with modern features and a lot of legacy baggage. It's not worse than PHP or maybe even JavaScript (though I would much prefer JavaScript).
But VB6 means taking the language and tooling as they were in 1998, frozen in time, and writing a modern application to a modern user base.
Microsoft considers VB.NET legacy as well. Most notably, ASP.NET Core applications cannot be written in VB6 due to missing language features.
Could you specify what legacy baggage you would like to eliminate, and what modern features you miss in VB6?
The author has listed quite a few like unicode and 64 bit support ^^
VB3 was my first real intro to programming. Well, I started with C++ but abandoned it as an impatient child as describing a window in code wasn't fun.
I wish we had a new drag and drop WYSIWYG to get people interested. Put Python or Go or even Basic behind it. QT maybe? Heck make it Electron.
I'm not sure I would be where I am today without VB having existed, and it's a shame kids today don't have the same tools available.
Lazarus has been around for years, but people don't know about it.
"What is Lazarus? Lazarus is a cross-platform integrated development environment (IDE) that lets you create visual (GUI) and non-visual Object Pascal programs, and uses the Free Pascal compiler to generate your executable. Its aim is write once, compile anywhere: you should be able to just recompile your program source code with Lazarus running on another operating system (or a cross compiler) and get a program that runs on that operating system."
Have a look at Gambas3 [1] it kind of continued where Vb6 stopped. It's super useful for quick GUI based software.
Even a tool like Frontpage was a game changer.
Simple website in a minute without any need to know HTML.
No free tool that does that today. Dreamweaver does, but it's paid.
There are too many to count. WordPress, MediaWiki (on Fandom or Miraheze if you want), Mastodon, Blogger (you can still sign up apparently), Twitter, Linktree, Facebook, Google Docs, Google Drive, GitHub Gists in Markdown, ...
I went to a restaurant last night that had QR codes instead of a menu. The QR code took you to their Linktree, which linked to some PDFs on Google Drive. You could criticize that for looking unprofessional, but it sure looked better than a Frontpage site.
The other day I went looking for information on a neighborhood business that's a bit cagey about saying what they do. Their website (built by a consultancy that charges US$450, according to the Wayback Machine) seems to have been online from 02013 to 02018, but they have active pages on Facebook, Instagram, and YouTube, which apparently is good enough for them. (It turns out to be a school for mentally disabled teenagers, if I've interpreted the multiple layers of euphemisms correctly.)
So the niche of "build a web page for free without learning HTML" where Frontpage and GeoCities followed NaviPress is not just not dead; it's thriving.
Not sure what you mean by “no free tool does that today”, there are plenty of free site builders out there, both on the web and desktop apps. Even more if you consider “freemium” site builders.
That's how I learned HTML, building the page in Frontpage and then looking at the markup. I don't remember it being free though.
We've forgotten how to do it - the idea of dragging a button offends our modern sensibilities. You can't just drag a button, what about the layout?! What about responsive design, how will it look on a 300x200 screen and a 8k one? What about scaling? Reactivity?
Yes, and most of these problems can be very well mitigated by just implementing some sort of a layout constraint system. Xcode does it (AutoLayout), however, it's not nearly as pleasant and straightforward to use as the old VB form designer.
Have you used it? Did you like it? How did it compare to vb6?
First language I've learned. I remember the visual window editor was something so special, I didn't have to code the windows which was good because English was basically Chinese to my eyes at that age.
You can use Cambalache [1] to create GTK4 based GUIs (comparable to Glade for older versions of GTK).
QtCreator has a WYSIWYG editor
>Yep, it’s written in VB6. Who cares?
I'd say security is a problem if one uses a 30 year old piece of software but apparently Microsoft still releases security updates: https://www.microsoft.com/en-us/download/details.aspx?id=507...
>A security issue has been identified that could compromise your Windows-based system running Microsoft Visual Basic 6.0 Service Pack 6
>The Visual Basic 6.0 IDE is no longer supported as of April 8, 2008, however, the Visual Basic team is committed to “It Just Works” compatibility for Visual Basic 6.0 applications
>Date Published: >3/23/2021
It was released back in 2016 (or possibly before that?) https://web.archive.org/web/20160430055347/https://www.micro...
The installer was originally digitally signed with a sha1 certificate. The sha1 certificate with replaced with sha256 on 3/23/2021.
I used XYPlorer for about 5-6 years until I made the switch to using Linux on all my machines last year. The scripting, speed, dual panes, customization, portability between machines (i used Syncthing to sync my configs between 3 machines) on XyPlorer are phenomenal and I've sadly not been able to find a Linux native file manager that's at the same level. Dolphin comes close but even with qdbus commands it sadly not as customizable as XYPlorer. I think it's the one thing I miss the most about Windows.
If you thought going from XYplorer to what's available on Linux was bad, now try going from Directory Opus to what's available on Linux :/
My one thing was “Everything by Voidtools”. It piggy backed on the NTFS index, something no tool does for Linux-native filesystems.
Does XYPlorer work with Wine?
>Linux-native filesystems
Because they lack something (for worse or better depending on one's requirements) equivalent to NTFS' MFT & USN Journal. Closest is building own file db by first-time full scan and then updating via fanotify/inotify. This is what FSearch tool does.
I've used XYplorer daily since 2008. It's a fantastic piece of software and updated all the time. Wish there were something comparable in Linux.
Have you considered Double Commander?
What did you script in XYPlorer? I've used Explorer for so long that's a feature I can't even imagine what I would use it for.
Not the OP, but I've been using XYplorer for 10 years now. I have a sidebar with a few scripts. Here are the ones I use the most:
- Extract selected archives
- Flatten current folder
- Convert selected file(s) to various formats (e.g. JPG to WebP or vice versa)
- Optimize selected image file(s) (smaller file size)
- Prepare image file(s) for publishing on my photography blog: strip irrelevant EXIF, create two variants (thumbnail and a bigger picture); see my post: https://darekkay.com/blog/photography-website/#pipeline
- Prepare image file(s) for sharing - similar as above, but more for sharing vacation photos with my family on WhatsApp)
- Rename files to a certain format (e.g. images to "YYYY-MM-DD HH:mm:ss")
- Check selected file with Virus Total
- Start a weekly backup to my external drive
- Backup my server files to my local drive
- Create a rectangle "album art" file, see my post: https://darekkay.com/blog/resize-album-art-images/
Many of those are just shell scripts and apps that I run right from XYplorer, but it's way faster than through CLI.
I've documented some of the XYplorer stuff here (see also the "scripts" folder): https://github.com/darekkay/config-files/tree/master/xyplore...
I know someone that still has a VB6 job. It's apparently repetitive and they haven't had a new client for many years, but I guess it'll continue until their clients don't need the software.
> No multi-threading. A pity. But for a file manager not that important.
It's honestly blazingly fast in comparison to Windows Explorer on Windows 11.
If you haven't tried the File Explorer in W11 24H2 it turned into a complete joke overnight now.
Slow as a dog and will often not render after all, compared to how it would act for decades up until less than a year ago.
It's a new defect in relation to the video drivers, badly incompatible with the default Microsoft Standard Display Driver, so what can you say?
I would expect that's an indication that XYplorer is a much more advanced, well-developed and mature alternative not relying on flaky emerging APIs that have too few decades of reliability to compare.
Microsoft in 2024: why would you even need to manage your files?
As much as I like C# the language, I honestly think that it and .NET are fundamentally flawed when it comes to performance.
Native Windows apps just never seem load that fast or work that great. It’s kind of crazy how much better the basic OS apps feel in macOS compared to Windows.
I wish Microsoft would have gone in a direction more similar to Apple, with an AOT compilation and reference counting.
JIT and garbage collection sound great in theory, but in practice I’ve found them both to be loaded with footguns that more than eliminate any benefits. At least with .NET, that is.
Most applications that ship with Windows are not written in C#/.NET. Microsoft tried to rewrite everything this way around Vista, but they failed hard due to stability and performance issues. In Windows 11/Server 2025, the only things written in .NET are administrative tools, like most MMC snap-ins (e.g. Event Viewer), Virtual Machine Connection, or Server Manager.
.NET supports native AOT for a while now.
I don’t have a lot of experience with this, but that’s mainly because there’s no way to compile my company’s application with Native AOT. At least not without a significant amount of work.
This is because there are many limitations in what can be compiled this way, and most C# applications and libraries were never built with such limitations in mind.
Most Windows apps that are guilty of being slow and poorly made do not use the .NET you speak of at all. If they did they would work much better!
Do you have some examples of large and complex C# applications with really good performance?
I’m hard pressed to think of any Microsoft software at all that I think feels really nice. Except for VSCode, which is of course built on Electron and not .NET.
The only thing that comes to mind is Paint.NET, which doesn’t seem like all that big of an application. It’s very nicely done, but I think it’s only got like a single dev working on it, so couldn’t be that big.
The 64 bit version of XYplorer is written in the twinBASIC programming language (actually an import of the VB6 source code and forms).
Never heard of this before. I'm always happy to hear of new attempts to replace vb6, and a backwards compatible one is such an achievement
This is the first I've heard of twinBASIC. I'm happy to see it on the dev tools scene.
A dev tool with a monthly subscription? That's enough to stop me right there.
An alternative is B4J, a free (as in beer) BASIC that compiles to Java, so should run just about anywhere. It also has
* B4A - a free version for Android * B4R - a free version for Arduino and ESP8266 * B4I - a paid version for iOS
The main (sole?) developer is ridiculously responsive and helpful.
>A dev tool with a monthly subscription?
It seems that can buy a perpetual license for GBP £5000 / developer, which is equal to 16 years of monthly subscription (quite optimistic for a 3yo project).
it seems pretty reasonable to charge $30-50 a month for somebody doing the hero's work of reimplementing and building on top of a 30 year old programming environment. also there's a free one! spray money the people who do crazy niche work! that's what makes the world beautiful!
Works on Windows XP, Vista, 7, 8, 8.1, 10, 11
That's better than you can say for a lot of software these days
It's a feature of limiting yourself to the win32 api (and functions of it available since 2001 only).
Eg the moment you need to deal with security like certificate or whatever this goes out the window.
I recently discovered Remobjects and their development tools. Amongst other things, they create Mercury, with they describe as a modern Visual Basic that can compile for:
- .Net
- JVM
- Android (JDK and NDK)
- iOS, macOS, tvOS, and watchOS
- Windows
- Linux
- WebAssembly
Yes, Remobjects makes some nice tools. I absolutely adore their Oxygene language.
Is there any documentation or tutorial on how to create a cross platform mobile app using any of their languages? The value proposition is great, but I can't find any actual code.
Feels weird to pay for this. I’m definitely spoiled by open source tooling.
With Moonbit and Wolfram Language, it feels like a renaissance of paid programming languages.
Wolfram ie Mathematica language predates VB1. Being commercial was the norm back then, and due to its academia widespread use has remained as such.
Both VB6 and FreePascal/Delphi are highly capable tools even in today's context, they just need more marketing.
FreePascal/Delphi and VB6 are entirely different beasts. For one, FreePascal and Delphi are still under development. Delphi had the following language features added since 1998 (this is just a small selection):
Extension methods/properties ("class helpers"), generics, enum types, for..in loops, static methods, closures, smart pointers, value types ("records"[1]), attributes, variables can be declared anywhere (removing Pascal's limitation), type inference, multiline strings.
Besides all of this, modern Delphi can compile code for Windows, Linux and Mac, as well as Android and iOS. It seems like there's even a cross-platform library for writing apps that can run on both Mobile and Desktop called FireMonkey.
VB6, on the other hand, is a language frozen in time. It never supported any other platform than 32-bit Windows[2]. It only really works on the new Microsoft Surface Laptops thanks to emulation, but I can also run Nintendo 8-bit games on a Surface Pro 11 using an emulator — that doesn't say much.
Unicode support is also a mess. VB6 always used Unicode internally, but this was implementing during the UCS-2 heyday (so you need hacks to use Emoji for instance). Worse yet, is that VB6 was never really designed to run natively on Windows NT, so it's mostly using using the XxxYyyA family of APIs instead of the XxxYyyW family of APIs. This means that you can only display text in a non-English writing if your system's ANSI codpeage is set to that language (in the past you had to restart Windows to change this, not sure if it has improved). To make things worse, some languages (from countries that were too pair to get ANSI pages in Microsoft during the 1990s). So no Ethiopian languages or Mongolian as the author claims. Windows ANSI codpeages also do not "fully support" Japanese and Chinese as the author claims. Over the years the governments of Japan, China, Taiwan and Hong Kong have updated their national standards (which defined tables of characters that should be digitally encodable) and introduced more characters that were previously not mapped. These characters were not new or fake[3] — they were just less common, but still in use. All of these various government standards (like JIS X 0213, GB 18030, Big5-2003) got quickly incorporated into newer versions of Unicode, but the Windows ANSI codepages stagnated and they don't support some of the characters in these codepages. I'm not sure how it's going to affect VB6, but I'm pretty sure that some Unicode CJK characters would just not map into ANSI and would not be displayed even if your system code page is set correctly.
With all of these things considered, no developer who cares about their users should choose VB6 for writing a modern app. I'd also argue that no developer who cares about themselves would do that. VB6 wasn't a great language to begin with. It was better than VB3, but it was still inferior to Delphi even when it was out. Customizing the UI beyond the basics, often needed custom ActiveX components written in C++ or messing around with a lot of raw Windows API calls. Error handling was very painful too. It was never a great developer experience even back of the day if you wanted to do anything beyond the basics.
---
[1] To be fair, Borland's Pascal dialects had value types support since they've implemented object oriented programming (that came in either Turbo Pascal 5.5 or 6.0, I don't exactly remember). Turbo Pascal "objects" could be put on the stack or as pointers like in C++. They even had destructors that would be invoked automatically when the object went out-of-scope, again like C++'s RAII. But the old "objects" kinda botched polymorphism (I don't even remember the details), so when Delphi came out they've been replaced with "classes" that are Reference-only (like Java, but initially without any form of automatic memory management).
[2] VBA was originally ported to Mac, but it is not exactly the same language, lacks the GUI designer and can't run most VB6 apps
[3] In most cases, at least: https://www.dampfkraft.com/ghost-characters.html
Delphi pricing is USD1400 for the developer edition and they are corporately mercenary chasing their payment. In 1996 Delphi 2 was released at USD500 for the cheapest Desktop version (which is ==USD1000 accounting CPI)
> VB6 highly capable
> VB6 only available in 32-bit
Delphi, maybe, sure. But starting a new project with vb6 is just weird unless it's the only language someone is familiar with. It's a dead end, even on the only platform where it makes sense to use it.
Yeah, I used VB5 as one of my first languages and today did half a day of VBA. Definitely enough to quickly make me want to raise my hourly rate. Esp. in that office macro editor. Btw and totally unrelated office can now interpret VBA, (office)TypeScript and Python. Did I miss any?
I don't think being written in VB6 is actually a good reason not to use XYPlorer, which seems like a capable tool, but this page doesn't seem really reassuring? What would reassure me is knowing that there is a maintained version of VB6 for modern systems. Luckily, there apparently is such an implementation, twinBasic, and they are already using it for 64-bit releases.
Back in 1999 for me most important was to have a great gui design, and VB was cool for this. Then later I would focus on native binary, performance and size of the build hence I switched to Delphi and then to C++. But tbh nowadays I can see that this is this famous triangle: either good and fast but expensive, either fast and cheap but not good, or good and cheap but not fast. So instead of writing in C++ i coded in 2 days a tray helper in pyside. I have no longer size complexes, as other apps tend to be written in electron nowadays, which is super size XXL
The point is: prejudice is bad. Use whatever floats your boat
Please use float64 for your boat though
In the late 90s, I was a member of Microsoft's MVP program for VB6 and later IIS/ASP. Having used every version of VB (including DOS) I was one of the many who was furious when they petulantly refused to commit to updating VB6 on a parallel track. At one point there was a significant number of us with a petition, and they basically told us to pound sand...
So, I did. This was literally the push I needed to switch to open source tooling, and it put me in the right time and place to be a Rails early adopter.
I downloaded XYplorer mostly out of curiousity, and it's actually so fast that I am slightly shocked to say that I might be switching to it.
I debated writing an app in ColdFusion (well OpenBluedragon or Railo or something) about a year ago, partly out of curiosity to how well it holds up, but mostly out of sentimentality for the language. I had a bit of trouble getting started, and eventually the project morphed less into web and more into data-processing so I ended up using Java, but I still occasionally get the urge to write using a “dead” language.
I know that one of the best bug bounty hunter scripted his work using VB (unlike rest of the world who uses Python/Golang or Rust), if it works and you know it why not? Actually looking for perfect tools is procrastination.
It does the job, so "Who Cares?"
The program doesn't look like a typical VB6 application, I guess the author draws all UI elements himself?
It is a great software, now I know why there is no MacOS builds :)
Early in my career, I worked in support for a company which made developer tooling.
Male programmers would call in and do a bit of intro so you knew they were not dumb, just busy.
VB6 programmers would say things like "I am a very senior VB developer". They were the only "very senior" programmers who did not seem to understand things about OS stuff. Like exported functions and their different calling conventions, why you need to "register" COM .dlls, environment blocks, handles, etc.
Point taken that VB was a programming ghetto. But the actual seniors were fighting the language to call Win32, writing MTS servers, and etc, they 'got' all that stuff.
I did some VBS ASP back in the day (not VB), and the language was more just annoying, at least partially due to the BASIC legacy stuff. Like it didn't even have a hashmap, you had to import something from Internet Explorer.
I feel this narrative about less experienced developers probably made sense to you back then, but it might be time to update it!
> They were the only "very senior" programmers...
Don't forget nodejs.
Really? I feel like those of us maintaining PHP stacks are much more "senior" by now...
I always love a story of impressive software written in “underdog” languages and not hype Go, Rust, Zig etc.
these rare stories are rare, because the creators of these software aren't bragging about which platform they're using, and merely focus on the software!
Microsoft has open sourced so much, I wish they would work on an effort to fully open source VB6 at least the bits they fully own and control. I have a feeling the community might rally to fill in the gaps, even if its over a few years.
I mean, look at EverQuest Online, insanely old MMO client, still has people building private servers, and even clients.
I wonder how the code looks, it must be a maze of "on error goto" lines to not crash at the slightest error.
The person that has down voted this doesn't seem to know that error handling in VB6 works like that. Most functions don't return an error code you can check, neither are exceptions available.
Sorry VB apologists, it's a weird language with lots of legacy weirdness. If you chuckle at silly things in JS, you'll cry when you learn VB.
You can use GAMBAS as a replacement.
They should have written Dogecoin in VB, then it would have been even sillier.