I’ve always had a fascination for antique software. Perhaps its because I miss the simplicity of the Windows 3.1 days…and its incredibly simple WinAPI, which could be mastered in its entirety by a single developer. That was when I first started Windows programming. My tool of choice back then was Borland Pascal with Objects 7.0, which is still available today in incarnations as CodeGear Delphi. Even though InstallAware also uses C++ and C# for some of our projects, Delphi is still my personal tool of choice today. But in 1992 we didn’t have even Delphi 1.0. So software was written the hard way…lack of visual designers, no matter how simple the API, is always a pain.
But why the fascination for antique software then? To be honest, I’m not really sure. Maybe I’m just into antiques after all 🙂 I must admit I get a huge kick out of building and maintaining antique Windows boxes. Around 2001 (wow!, even the turn of the century is now almost a decade old), I had to collect real antique hardware to build an antique Windows box. An ISA video card, ISA sound card, ISA modem, PS/2 keyboard and mouse, along with an old processor were necessary. Otherwise, Windows wouldn’t recognize your devices, plain and simple. Today, thanks to the “virtues of virtualization”, one doesn’t need to shop around for old (and hard to find) hardware anymore. Of course, VMware has been around for a while…delivering near-native performance for virtual machines. VMware owes most of this performance to its native drivers for guest operating systems…which provide high performance video display, for instance. However the one drawback of this approach (which really doesn’t matter in the real world anyways) is that if VMware doesn’t have drivers for your operating system, you’re stuck. So even though one of the first things I tried on VMware was to build a Windows 3.1 virtual machine (on top of good old DOS 6.0), it had no sound, 16 color graphics, and 640×480 resolution only.
Virtual PC to the rescue! Virtual PC takes a different approach – instead of implementing custom drivers for video, sound, and so on – it emulates old cards, cards that are old enough that Windows 3.1 recognizes them. The real-world drawback is that Virtual PC can be slower because its emulating old hardware, instead of passing calls directly to the underlying hardware. However with Virtual PC, I was able to build a Windows 3.1 virtual machine that had high color display, sound, networking – practically everything! I was even able to play old DOS games like Flight Simulator 5 (the first version of the family to support textured graphics and digitized/synthesized sound). It was antique software heaven 🙂
Even today, I maintain a fully-configured Windows 3.1 virtual machine, ready for usage at a moments notice. I’ve installed a full set of browsers, email clients, FTP clients, compilers, IDEs, Office programs, games, and what not. I’ve also got some real gems that my contemporaries from that era will recognize – After Dark screensaver (can anybody really forget those flying toasters?), Stacker disk compression (the first company that *I* know of to win a patent infringement lawsuit against Microsoft), Norton Utilities and PC Tools, just to name a few. Watching PC Tools or Norton defrag the hard disk in native DOS mode…moving all those character-drawn blocks around…still looks more convincing to me than my native Windows defrag tool 😉 You *know* the thing has direct access to hardware and is *making full use* of that privilege 😉
Working in this virtual machine is very refreshing in many ways, and contains invaluable lessons for software development from a historical perspective – you get a broad overview of ideas that survived, and those that failed. And maybe the ultimate lesson is the realization that nothing has fundamentally changed since those days in the computing world. Sure, we now have fancy graphics cards, jazzy on-screen effects, way more processing power – but ultimately, in your day-to-day use, you still have the same email client, the same word processor, and the same spreadsheet; which require direct keyboard input, learning the program, and regular crashes. Sure, Windows 3.1 did crash a *little* more frequently at the kernel level, but most real-world software seems to be equally unstable these days. About 30% of the time I open Internet Explorer 7, it hangs. Vista, despite dramatically multiplying resource requirements and reducing performance thanks to its DRM focus, is even buggier – every time I view an MSN video in the browser, the Desktop Window Manager (DWM) crashes! Makes you really wonder if we’d all be better off reverting to Windows 3.1 – at least, it would run at lightning speed on today’s machines 😉
But what about the place of elephants in user interface design? Enter OS/2. After perfecting the Windows 3.1 antique VM, I decided to take the challenge to the next level – another contemporary of the Windows 3.1 times, OS/2. I had never actually used OS/2 in the real world – my only memory of it was drooling at a high-school demo of it (I lacked the hardware capable of running it at the time). So I soon found out that OS/2 also ran just great under Virtual PC…and had several versions of OS/2 virtualized 🙂 This is where the elephants come in. OS/2 had some “artistic” elements in its user interface, namely elephants in wizard screens:
Yes, IBM indeed built a product with this sort of “artistic” license 🙂 The elephant even changes its pose on the different screens! How’s that for a user interface concept?
In retrospect, its interesting to note that OS/2 didn’t survive, and Windows 3.1 did (although, we’ll never know how much of that owes to Stacker-esque business tactics on Microsoft’s part, and how much to the elephants). Its more interesting to note that despite dramatic improvements in hardware performance, the way you use the computer today hasn’t really changed – and nor has its reliability. The user interface still employs the same metaphors from the Windows 3.1 era – windows (doh!), menus, context menus, buttons, more menus, keyboard input, and so on. I even find myself craving the ugly Windows 3.1 “window themes” – if I could find a skin like that for my current Windows, I’d use it in a heartbeat! I’m not so sure Vista’s maximize/minimize buttons are all that better. Ultimately, what’s the *most* fasctinating to me is, while people debate whether Vista is worth the upgrade from Windows XP or not, they don’t even realize that in their day-to-day usage, even XP isn’t all that different from trusty old Windows 3.1 😀
Well, I just got my hands on a copy of Borland C++ 3.1 for OS/2. Its time for some more antique software fun! I was actually thinking of taking the LearJet on a spin in the latest Flight Simulator 10…but seeing that it runs even slower than how fast Flight Simulator 5 ran on its *original introduction*, I’m really thinking older might be better 😉