Why Open Source is Important (To Me)

As a kid, I was totally fascinated by computers. They were these magic machines capable of...well I didn't even really understand what they were capable of at the time. I just knew they were something special. My imagination ran free with the possibilities. Back then, it wasn't particularly common to have a PC, so I only knew a few friends who had one (not to date myself too much here). Any time I got to go over to the house of a friend with a computer, I was hopeful that we could spend some time playing on it. Of course, a number of my friends didn't have the same fascination with the machine as I did, so many times those visits resulted in no computer time. Or worse, at least in retrospect, were the visits were I would go play on their family's computer while they went off and did other things. Probably didn't make me the best friend in the world to abandon them once I got what I was after.

Finally, towards the latter half of my elementary school days, my parents got a computer of our own. I was overwhelmed with excitement at the dingy 386, running Windows 3.1, at long last sitting in our family room. I would spend my time poking around on that machine, determined to find every nook and cranny worth exploring. Once playing the standard installed Windows games got to be boring, I had to strike out to find other things worth doing with the machine. Somehow, I don't quite remember the details, I came across QBasic and the handful of programs that came with it as examples. The most interesting to me was Gorillas.

It was a pretty basic game, even at the time, involving two animated gorillas standing on a city skyline hurling exploding bananas at each other. For whatever reason, I loved the game, and spent way more time playing it than seems logical. Since QBasic did not export a standalone executable after compiling, and because Gorillas was intended as a demonstration of the language, running the game involved opening the QBasic IDE, loading up the source code for the game, and then executing from within the IDE. The first dozen or so lines of the code are comments explaining the game and how to run it. These comments filled up the screen when first loaded, so that seeing the actual code required scrolling down. For a while, I had no idea that there was anything below that first screen to even be seen. I recall at one point I had been informed that I had actually been running a programming language, and that the program could be used to write your own games. My mind immediately set to work on new possibilities if I was allowed to write my own ideas in to actual computer programs. A few early stabs when I had zero understanding of the concepts of programming languages involved me copying the structure of that first page of comments, attempting to simply describe my games in those comments, with no actual coding.

Looking back now, I cringe a bit at the completely missed logical steps in that line of thinking, but I suppose I shouldn't be too hard on 8 year old me. After a few frustrated attempts at this method, I happened to scroll down past those first few lines to see the real code that was being run. All of it became suddenly clear, and quite overwhelming. Everything past that point was totally foreign. The code for the Gorillas program was not really a great entry point for a very low level beginner. There is a tremendous amount of math and, for the level of that program and language, some relatively complicated graphics. Yet that didn't seem to deter me for long. I set to work trying my best to interpret what all of these new things actually did. I would make small changes in the code, then run the program and see what it affected in the game. There was more than one occasion in this exploration process that I had to convince a friend to make a copy of the game's code from their computer after I had thoroughly messed it up beyond retrieval without remembering to make a backup copy first.

It wasn't too long after this that my parents picked me up a book on QBasic. As I recall, it was from the "Complete Idiot's Guide" series, which is basically the Mega Bloks alternative in comparison to the "For Dummies" series. Taking the knowledge gained from that book propelled me forward in to being able to construct increasingly sophisticated programs. From a full fledged casino with multiple games and account tracking, to painstakingly crafted, shoddy 2-D animation scenes. And it was from this basis that I continued to expand and eventually ended up on a path towards my career in development.

An argument could certainly be made that without that initial exploration and discovery, I would have never ended up at the places I have arrived now. The trajectory of my life would likely have been completely different. Creating high barriers to entry in development markets, as well as preventing those just starting to learn from utilizing existing code to tinker with and build upon, is detrimental to the encouragement and advancement of beginners. Beginners who will eventually become the experts driving the industry and innovating in new areas.

I know this isn't a new argument; many have stated it before, and many of them have stated it better. But whenever the concept of open source gets attacked, I always fall back in my mind to how much it means to me, and the tremendous influence it has had on my life. All from one silly little game.