Open Versus Closed Source: The Right Tool for the Right Job

TL;DR don’t use exclusively open or closed source software, you should use whatever is required for the job.

Windows 8 has just been released and by gum, I like it.  Now is probably a good time to briefly discuss the open versus closed source software debate.  I’m probably unusual in that my life is starkly divided in two when it comes to my interaction with software whether I’m at work or play.

At work, I often want and even need to see the source code.  What sort of input does the program want?  Why exactly is it throwing that error?  Maybe it needs to be compiled differently for whatever particular hardware or version of Linux I’m using.  This is because I often need a deep understanding of what code does, because I’m trying to solve particular problems in particular ways.  I use R a lot and one of many excellent features is that you can type a function name and the source for that function will appear.  It helps you develop and debug your own code much faster.

This means that an open-source environment is essential.  Tinkering with code (and indeed the entire Linux OS) is a very desirable feature.  I can barely imagine the horror of having nothing but pre-compiled closed-source software to work with; it would be an abomination.

However: when I am at home, I spend less time doing things which require that level of control.  If anything, it would be an enormous hindrance – I don’t want to be playing sysadmin on my own time.  I want the following things out of an OS when at home (an incomplete list in no particular order):

  1. Security – yes, Windows is secure.  It’s not 2003 any more
  2. Stability – see above.  I haven’t seen a BSOD for a long, long time
  3. Shininess – Windows 8 is pretty shiny.  Not literally, as “skeuomorphic design” is apparently passé
  4. Software – Windows has all the apps I want and there isn’t another platform that can compete on games
  5. Convenience – I don’t want to worry about hardware compatibility

That’s not to say that I don’t enjoy coding in my spare time.  All I really miss about my nice super-powerful hardware from work when I get home is the command line.  A nice GUI is excellent, but sometimes you want to do things that a GUI just can’t.  I used to feel that way, until I summed up the courage to learn Windows PowerShell, which is mostly Unix-like commands, anyway.  It’s not bad, if you’ll excuse the fact that you still have to horizontally resize the window manually (i.e. no click and drag) and the utterly terrifying error messages.  Or you could make your life really simple by installing MSYS which is most of the useful command-line Unix utilities ported to Windows.

Woah, there!

6 full lines? That’s pretty verbose, don’t you think?

I also use Windows at work (Windows 7) and find it to be the most efficient desktop environment for me, but each to their own.  I’m happy provided I can install an X-windows client (Xming) and a terminal (PuTTY).  Much of the rest of my working life is creating and editing MS Office documents, so why would I want a Linux desktop?  I want to juggle different and ever-changing distros and even window managers (Xfce?  Gnome 3?  KDE?  Unity?) like I want to juggle chainsaws or bake my own bread.  Not at all.

All I’m really saying is that even if you really passionately believe in open-source, there is nothing wrong with paying for closed-source software – it doesn’t make you a slave anymore than open-sourcing your code makes you a hippie.  You can have your cake and eat it.