Once upon a time, in a land far, far away...
Someone once told me that phrase was the perfect way to begin a story with a happy ending. If so, then I am inclined to employ it here.
It has been over 20 years since my first programming experience. An ASR-33 Teletype with a paper tape punch attached to an acoustic coupler (do they even tell today's Computer Science students about the joys of a 110 baud acoustic coupler?) would whir, clunk, chunk, and ding as it magically made my dry, clinical code come to life and perform wonderful tasks! Amazing! And, I was told, the wondrous machine miles away on the other end of the telephone could not only breath life into my coded creations, but it could simultaneously do likewise for dozens of other aspiring Dr. Frankensteins who, like me, wanted to see dry, dead algorithms transformed into living, breathing computer creations.
That's how it all started. In retrospect, it involved a dreary little teletype in a bleak little room connected to a slow little coupler (for you recent CS grads, that's a modem that connected to a phone using an acoustic cradle rather than today's direct modular phone wire) connected over a telephone line to a computer that probably didn't have the computational power of a modern programmable pocket calculator. By today's standards, it was a trivial computing experience. But it shaped my perspective on computing forever, because that ancient assembly of antique parts could not only perform computations, but it could support multiple concurrent users. It did something that those of us with grey in our hair used to refer to as "timesharing".
When I went to college, I was exposed to and learned the internals of a DEC PDP-11/34 running the RSTS/E operating system. Another fine timesharing operating system, RSTS/E happily supported an entire campus population with a mere 124K words -- just 248K bytes! -- of usable memory and 12.5M bytes of hard disk storage! But this Resource Sharing Time Sharing / Extended system made each user feel like they had a whole computer at their beck and call. It was a marvelously reliable workhorse that ran for days without crashing, even while hordes of unthankful students stretched it to its very limits on a daily basis.
Soon after I entered the business world, I met another highly impressive operating system. It was called DEC VAX/VMS. It was an iron horse of a operating system that was seemingly massive in its internal complexity, yet uniform in its appearance. When properly tuned, a VAX/VMS system could satisfy the needs of dozens or even hundreds of concurrent users for months on end. Even now, Digital's OpenVMS (the current incarnation of VAX/VMS) can run for years between reboots faithfully servicing the needs of its users.
It was here that I settled down. It was here I dug in. Nestled safely in the FABs and RABs and QIOs of OpenVMS internals, I settled in for a long, comfortable stay. Where else would a programmer rather go? Here was reliability. Here were strong multiuser capabilities. Here were documented system calls... uniform presentation... true upgradability... all found in a system that just wouldn't quit!
I was home!
Yes, I knew there was more out there. There were all those mainframes. But who the heck wanted to work with IBM? They were on top. They were the Big Corporate standard. They were the "safe choice". What fun was that?
Then, there was Unix. Or, shall I say, the plethora of Unix-like systems. Each different. Each ugly. Commands that made no sense. Non words like "grep". What's a "grep"? Editors named after people's initials. Uck. Phewy! Give me commands like SEARCH and EDIT any day.
Then, of course, came the ground swell which was dubbed the "PC revolution". Here, at last, was computing for the common man. You could have your own system with your own software to do your own work. Magnificent concept, but the tools... yow! The popular PC operating systems were so anemic. Remember, these operating systems were responsible for the word "reboot" entering common speech. They were lucky if they could accomplish one thing at a time, let alone serve the needs of hundreds of people simultaneously.
Yes, color and sound became standard through the PC influence, but so did the notion that an operating system could have a nervous breakdown whenever it pleased. With the introduction of these systems into the business realm, the bar of technical excellence for operating systems plummeted to previously unimagined lows. Amidst the growing cry for open standards, the PC's proprietary operating system with undocumented system calls inexplicably soared in popularity. Suddenly, interface was everything. Reliability was nothing.
Yet, though I tinkered with the PC at home, I was happy to continue my work with solid, feature-rich OpenVMS. Then, one day, it happened. I was attending training on migrating software from OpenVMS to Unix (ugly though it was, at least Unix was a product of people who knew what it meant to have a reliable operating system). I picked up a mail order catalog and there was an ad for an inexpensive PC-based Unix called Linux. I passed it around during class and by the end of the training session, there were several people intending to purchase this product as a means of brushing up on Unix skills.
That's how I came to use Linux. After the class was over, I ordered a copy of Yggdrasil Plug-and-Play Linux (Nov 1994; kernel version 1.1). At first, I created an 80 MB partition on my 386SX/40 and ran most of the operating system off of the CD. The few people I found who knew of the operating system said it was "still a bit buggy, but cool". I quickly found out that a "buggy" Linux was still more stable than the more "mature" PC operating systems I had been fiddling with.
One of my first practical uses for Linux presented itself during a 2 week intensive training course I needed to attend. As I wanted to touch base with my wife daily, but knew that the schedule could make it difficult for us to connect on the phone, I decided to set up my little Linux box as a mail server during the training. I created a turnkey account and menu for my non-technical wife to create and read mail messages on the box at home, while I would compose my mail messages on my laptop and dial in to my home system to upload and download my mail. Much to my amazement, my limited little 386 turned out to be a marvelous little mail hub. This lowly little box, which many would dismiss as having insufficient resources to perform any serious computing, was suddenly transformed into a true multiuser system which easily handled the task of being a miniature mail hub!
I soon discovered that there were familiar friends available to help me get acclimated to my new O/S. On the Web, I found Anker Berg-Sonne's SEDT editor to give the EDT emulator I desired. I also found source code for an implementation of the TECO editor which compiled nicely under Linux. Suddenly, I was ready to give programming a try in this "new world" I had discovered.
The robust GNU C compiler proved to be a rich engine for developing software. Coupled with the XFree86 software that provides the standard X windows interface, I soon found that the Linux environment was a splendid development platform for producing some 3D object rotation software that was requested by one of my clients. Even though the target system was an OpenVMS workstation, I found that I could port the software I developed under Linux by simply changing a couple of #include directives. Wow! I now had the ability to create and run workstation software on a low-end PC!
But that was only the beginning. Soon, I upgraded my system and made the strategic decision to allocate a large portion of my new disk drive to Linux. That is one decision I have never regretted. The operational advantages of my new platform were becoming more and more significant.
Like any PC, my Linux box enjoyed numerous inexpensive hardware options. Yet, unlike most PCs, this operating system could really perform multiple tasks simultaneously. And, unlike most PCs, I didn't have an operating system that needed constant rebooting. I could develop and run software based on open standards without having to focus on proprietary system calls. I could employ a TCP/IP stack that was sure and solid. And, I had the power of a true multiuser, multitasking operating system.
Then came the 1997 Atlanta Linux Showcase. I talked my manager into letting me attend it as a training event. Suddenly, I was surrounded by hundreds of people who were even more enthusiastic than I. Amidst the technology and training, there was passion and conviction. I discovered that Linux wasn't merely the pleasant pastime of a few hackers; it was the growing wave that was beginning to wash over the beaches of corporations worldwide. Listening to the impassioned appeals of people like maddog Hall, Eric Raymond, and Robert Young, I was affected. The software paradigm was changing, and I had to find my place in this new world.
At work, I liberated an old 486 languishing in a corner and turned it into a intranet web server. It had been considered too weak for most "serious" PC applications, yet it has plenty of horsepower to serve as my personal workstation, intranet ftp server, and intranet web server. Its intranet web pages are dedicated to Linux advocacy, attempting to convey, convince, and convict folks within the corporation that Linux is a new market that will not be ignored. In its first 6 months of operation, the server has processed requests for over 3300 HTML pages. In all that time, the system has never crashed due to software (we had a power outage once), and at one point the system exceeded 10 weeks between reboots (I have had to shut it down for hardware upgrades and environmental reasons).
I have used Linux to develop software for US government customers, both on site and off. It has proved to be an extremely capable development platform for software destined for OpenVMS, Digital UNIX, and even Windows NT. Linux's adherence to industry standards makes it an excellent base for designing portable software. Plus, the addition of exciting technologies like KDE and GNOME bring the concept of a user-friendly desktop to a POSIX-compliant system. Who could imagine the day of a sharp looking Unix desktop that even the most hesitant end-user could conquer?
Today, Linux is my preferred platform, both at work and at home. I still have a deep fondness for the robustness of OpenVMS, but I relish the possibilities of an operating system that can scale from a lowly 386 to a networked army of thundering Alphas.
I do not know all that is ahead for Linux, but I'm tempted to invoke the normal conclusion for all good stories:
... and they lived happily ever after!