Eweek was recently running an article titled Study Pits Windows Versus Linux. While this was a Microsoft funded study and the details in the article are not very … well detailed it did get me thinking …
What strikes me as particularly interesting although the article doesn’t state it explicitly, is one of the core differences between the two operating systems: flexibility.
The study basically had three windows admins one one side and three linux admins on the other, run systems for a mock business and compared how changes in business demands were met by the two camps. The article states that the windows admins addressed the changes in a similar fashion whereas the linux admins had some different approaches that led to increased complexity due to their different approaches.
It’s worth noting that the details in the article are thin in terms of what the added complexity of the linux solutions was (or if there are benefits that exceed the negatives of the complexity), but it’s an interesting point that linux has a tremendous amount of flexibility where the windows solutions seem to be much more narrowly defined or standard.
For example if we look at web configurations and if we even limit the options to just apache for linux and IIS for windows. I can think of several different ways of handling a virtual web site with SSL certificates to set them up on linux (a single vhost file, separate vhost files for each virtual space, SSL configs in a separate file or in a generic SSL config etc.). On windwos with IIS the GUI forces you to do it basically one way and if you are googling for the solution you get basically the same answer.
I’ve always felt that the flexibility offered by linux is an advantage. Sometimes (often?) the one size fits all just doesn’t fit all. But what about complexity and scalability. I know I can figure out what fellow System Administrators were thinking when they set something up. You look at the config files, scripts and sometimes logs and the answers are always there. It’s a skill you just pick up working under linux, especially if you’ve seen different environments and worked with other Administrators.
What’s the value of the one way? At what point does the single way become necessary?
I’ve been thinking about this in terms of replication for example. This can be done in many different ways. scp, rsync, unison, rdist can be used. Those can be run from script with an infinite loop or from a simple cron job.
What about email services? solving this under linux can be done in a dozen different ways, but is a standard a good thing?
I know that customers often shape the solution with their preferences and requirements. Especially on Linux if there is some in-house expertise. In those cases the customer understand the flexibility but often has a clear preference, which in turn changes the requirements for Linux deployments.
Is flexibility an advantage of Linux or a possible problem?
What lends itself to a standard process and where should the flexibility be maintained?
How much overhead does the flexibility introduce when someone else has to understand the deployment/implementation?
How much overhead goes into documenting one of the many possibilities?
Is it worth that overhead to arrive at a flexible or customized implementation?