[2013-06-10] Why I choose Open Source
If you've looked around my Github or read that last section of my help wanted page, you'll know I'm fully committed to having code I write be open source. The latter will even tell you one reason why, but let me capture your attention a bit longer, if I may, and explain how I got here.
First, I was a pirate
Way back when I was starting out with computers and programming, I was basically a high-school-age kid with this shitty little PC who wanted to see what he could make his computer do. So, I bought things for very cheap from shady people who had internet connections, because I didn't have one at the time. And I copied other people's discs of various pieces of software (often copies of copies of some purchased original). And, later in life, after I had an Internet connection, I did more than my share of file sharing (pun somewhat intended).
Overall, I'd have to say that this was not just a good thing for me, personally, it was the only way I could have had the things I pirated. And all of them were worthwhile -- games that showed me what the computer could do (and if I looked deeply enough, let me figure out how), IDEs and text editors that let me make the computer do things I wanted it to do, and sundry little (and not so little) applications that were good to know at the time. I'm fairly certain that if piracy had been impossible, I wouldn't have gotten started with computers, which is a fairly frightening prospect given that, at this point, half of my life has been at least partially dedicated to them.
Then, I opened source
Pirated software comes with two problems -- first, if you think about it at all, you realize that it's not very nice to be enjoying work that someone else would like to be paid for if you haven't, well, paid for it. Second, pirated software is often an unknown quantity, and a fixed (as in, static) one at that. There are no security patches, no support team, and occasionally you get bugs that simply don't happen in a non-cracked version. What do?
My natural answer to that -- given that I was still, at the time, just a kid with a PC -- was open source. Here were all these things made by people who weren't asking to be paid for making them. In fact, they wanted you to just go ahead and use them, and maybe if you had a problem and you could fix it for yourself, you'd contribute back the bug fix and they could incorporate it going forward. Talk about the right thing at the right time!
Of course, on the flip side, the open source applications were often slower, buggier, had fewer features, and generally didn't interconnect with the major paid applications. This has greatly improved in the last decade and a half, but the state of things circa 1999 was much as I put it. There was Red Hat... 6.0, I think? Which was decidedly on the arcane side, but eventually I could manage to make it work -- after learning more things than I even realized at the time. And there were games on Linux, but they were all these shitty-ass games because it was still the early days for that kind of thing, and I'm not sure if OpenGL even existed yet.
And, as time went on, I found more and more open source applications that did more and more, and did it better and better. It eventually became obvious to me that open source was not only viable, but even sometimes better than the alternative.
Now, I can buy (but I rarely do)
Today I can afford to pay for software, and I've felt some need to make up for my past transgressions (as well as show some appreciation) by buying software I've pirated in my youth. But, mostly, that's been limited to games for me. As an art form, these older games still have value today, so there are places like GOG where I can assuage my guilt and enjoy the reminiscence value of replaying these classics that formed my thinking as I grew up.
But, as far as non-game software goes, I haven't really bought more than a couple of things. Wait, before you break out the pitchfork, let me also say I haven't pirated any, either. Instead, almost all of the software on my personal machine is open source -- exceptions being the OS (an academic license) and the few applications I actually purchased. But I do my code writing either in Notepad++, or in vim on my Linode that I connect to using PuTTY. And I use WinSCP to transfer files around. And I run Firefox and Pidgin, and my Linode runs Ubuntu Server, and... I could go on, but you see where this is going.
Finally, the promised whys
Given all that (honestly fairly abbreviated) history above, you might start guessing at my reasons for choosing open source, but it'll be better if I actually spell them out in one place:
- Firstly, making my stuff open source means I'm paying it forward. Open source software has been nothing but good for me, and is one of the primary reasons I'm a software developer today. Even if nobody ever contributes to my projects (or even sees them, or cares about them), I'm still doing my due diligence. And who knows, some day in the future some kid might grab my code and hack on it, or just read through it to figure out how I did something, and even if I never find out about this, it's still something to be proud of.
- Secondly, open source is kind of like anti-piracy (not DRM, anti-piracy; the two are unrelated terms) -- that's something I touched on more over in Help Wanted than in this essay, but it's worth mentioning. Open source software piracy doesn't make sense in the first place: usually, all you have to do is download the code and compile it, and that's assuming you can't find anyone else who's seen fit to provide already-made binaries for everyone. This kind of seems odd, given the first section of this article, but it leads into:
- Open source is also kind of like piracy, but officially sanctioned! Remember what piracy is like? You have the software, and you have to run a crack, and possibly copy files around, and maybe poke at a registry setting, or stuff like that, that ends up teaching you about how your computer works? Well, if you have a piece of open source software that someone's charging for, and you don't want to pay for it, and nobody's willing to provide pre-made binaries, you have to figure out how to compile it. And that also teaches you how your computer works, but it also might teach you how to write your own software -- or at least, get you interested in that direction.
This is not an exhaustive list; there are more reasons why I choose open source, not least of which being that I like open source, as a concept, but those are probably my more objective reasons. Please, think about them and see if you come to similar conclusions; and if you don't, maybe tell me why. And I'll publish your comment here, as well, if that's okay, and we can have our conversation in public.