Goodbye, VBScript. You changed the world for all the wrong reasons.

Jo Christian Oterhals
7 min readDec 7, 2023

--

Remembered by few, missed by no one

Microsoft is retiring what may be the least loved version of Basic ever. But today's Internet wouldn’t have become what it is hadn’t it been for the events it was involved in.

Today, I stumbled over an article that informed me that VBScript is about to be removed from Windows 27 years after its release. The story got me thinking not only about how old I am to remember the technology but also about what I thought about it back when it was new.

VBScript was released in 1996 as a part of Internet Explorer 3.0, which, in my opinion, was the first usable version of Internet Explorer. It may seem strange now, but its birth was primarily caused by the existence of two other non-Microsoft programming languages.

At that time, Microsoft thought it was at war with the rest of the world, particularly with Sun and Sun’s all-new, all-shiny Java programming language. The language and platform that promised a cross-platform “write once, run anywhere” future for applications. Run anywhere didn’t have a nice ring to it for Microsoft; their primary interest lay in having things run well on Windows. Period.

The real trailblazer of the internet world at the time was Netscape. They produced the wildly popular Netscape Navigator web browser and dominated the market entirely. As the frontrunner, Netscape defined what the web should do and how it worked.

So, although it probably was a bit beside Sun’s original scope for Java, Netscape decided to include Java with Netscape Navigator 2.0. This made it possible to run “applets,” small Java apps that ran on HTML pages within the confines of a real strict sandbox. With applets, you could build—for its time—sophisticated, interactive functionality.

Applets didn’t interact well with the HTML elements surrounding them, but at the same time, Netscape also decided to include support for a new scripting language for HTML called JavaScript. It was an elementary language. It had an object model (albeit simple and, to this day, a strange one) and was loosely inspired by C-derived languages such as C++ and, maybe, Java.

Maybe—because the language was initially called LiveScript and had little to do with Java. The language was conceived and implemented by a single programmer, Brendan Eich, in a very short time before the beta release of Netscape 2.0. It was considered an alternative way of adding some much-needed interactivity to the until-now static world of the web. Given that Java was also included with Navigator, Netscape renamed the language JavaScript—primarily for marketing reasons, I think—and allowed it to interact with Java applets. At the time, JavaScript worked as a bridge between the HTML objects of the page and the sandboxed Java applets embedded in them.

I wasn’t very aware of all of this at the time. I had heard about VBScript and JavaScript but mainly used JavaScript since the dominant browser, Netscape, only supported that. But when I got my first professional position as a programmer a couple of years later, I had to use VBScript. Then, I used it for programming dynamic server-side scripts using Microsoft’s IIS web server and its ASP (“Active server pages”) technology — the htmx of its day, if you will. But I also used it to implement IE-specific functionality in an intranet software my company developed and sold.

Having had some previous experience with the genuine Visual Basic, I was surprised by how little of that language was implemented in VBScript. It was frustratingly limited. It only made sense when I learned that VBScript was probably intended as a glue language for COM-/ActiveX-objects. ActiveX was just a subset of the COM object technology in Windows. It allowed programmers to embed small, sandboxed programs made with one of Microsoft’s Visual Studio languages, such as Visual Basic or Visual C++, into HTML pages. If that sounds familiar, it is. Microsoft had invented alternatives to JavaScript and Java, albeit other options that did not have “run anywhere” as their motto. These were made to run on Windows and only on Windows.

If I’m honest, I must admit that at the beginning, the ActiveX and VBScript combo was far more potent than the JavaScript/Java combination. Perhaps most importantly, ActiveX components outperformed Java applets by far. In hindsight, what was intended as a move to kill off Java applets as a technology ultimately killed off both Java applets and ActiveX components, as neither got enough market share to become ubiquitous. This was mainly because Microsoft’s later Java implementation fragmented the Java side of things; the only good part of Microsoft’s Java variant is that it later morphed into C# and became the basis of something entirely different and far better, but that’s the topic of a very different article.

But it was a completely unnecessary move, although Microsoft did many silly things like that back then.

VBScript, in particular, was silly because if you’re as old as me, you may remember that they also launched something called JScript not long after VBScript. That was a JavaScript clone or, more precisely, an implementation of the ECMAScript standard. JScript did all of the stuff that VBScript did and was, for a brief period, a more faithful version of the standard than even Netscape’s JavaScript. This is ironic, as Netscape was the birthplace of JavaScript.

From a compatibility standpoint, JScript made much more sense than VBScript. Still, it was hurt by its name. Microsoft wanted to avoid trouble from Sun over trademark issues connected to the Java part of the JavaScript name and thus named its alternative JScript. Although Microsoft kept it alive until IE 8, JScript would become a dead end for them. The introduction of Internet Explorer 9 also gave the world a new Microsoft-developed JavaScript engine without COM/ActiveX extensions.

When we look back on the history of the Internet, we remember that Microsoft was the bad guy for a long time. And Microsoft was terrible back then. Things like VBScript only contributed to fragmentation, which they thought helped them.

But what’s little talked about is that Netscape was even worse at implementing stuff like the DOM standard and standardized JavaScript for a long time. But their reasons were not so much monopolistic hubris as a technology problem: They started it all, but their legacy technology kept them from keeping up with the times. Standardization would break too much stuff built to be Netscape compatible. Although Microsoft continued to promote its proprietary extensions for a long time, it implemented more of these standards than Netscape. For a pre-2000 pioneer client-side JavaScript developer like me, there were a few years from 2000 forward when Internet Explorer was closer to the standards and more straightforward to program for than the competition. This point is often forgotten when people reflect on those days.

After a while, Netscape succumbed to its legacy technologies. They gave up and spun the browser stuff into a non-profit called Mozilla.org. There, the first attempts at a 100 % standard-following browser were made. In the beginning, Netscape made commercial offerings of the Mozilla code under the Netscape brand, but after a while, they stopped doing that, too. It wasn’t until Apple started flexing its muscles with the KHTML-based Safari browser and Google built its browser Chrome based on Apple’s KHTML fork WebKit that the promise of standardized web rendering was fulfilled.

But by then, I had almost forgotten about VBScript, and ActiveX was a parenthesis in history. Java had become a parenthesis on the client side, at least. But Java thrived otherwise. It continues to have a great life on the server side. Surprisingly, on the desktop, it enjoys success in Minecraft.

VBScript on the client side was long dead by this point, and on the server side, it had been replaced by Microsoft’s .NET-based technologies. But for a select few, it continued to have a life on the Windows command line, filling the role of a better BAT file alternative. I never followed VBScript to that graveyard.

The real winner here is JavaScript, which Microsoft initially implemented better than its inventor. That technology survived all the client-side wounds caused by Microsoft and Netscape and ended up stronger and better than ever. JavaScript is now the leading technology behind almost any website's front end. It has even moved from the client side to the backend, enjoys great success as the core technology of Node.js, and is now the most-used language besides Python. And Microsoft? They invented TypeScript, a superset of JavaScript that is a much-loved and, arguably, far better JavaScript than JavaScript.

The biggest surprise I got from the article I referenced initially was that VBScript still exists. I honestly thought it had been deprecated years ago. But now that it will be removed, no one will miss it.

What came out of it was better.

--

--

Jo Christian Oterhals
Jo Christian Oterhals

Written by Jo Christian Oterhals

Norwegian with many interests. Programming being one of them.

Responses (3)