To choose or not to choose....
One of the complaints I often hear from users new to Linux is the seemingly endless choices available. I'll admit it is confusing when you are presented with 10 browsers, editors, or email programs. And wouldn't it be great if there were only one way to install applications across all distributions! With out a doubt, it would significantly increase the usability of Linux, in general, if everyone used a best of breed installation process.
However, as I've said before, so I'll say it again. These dreams of the one "whatever" to rule them all within Linux and open source will NEVER happen. In fact, I believe that this diversity is actually a BETTER model. Ultimately, Linux and open source will continue to expand and there will eventually be a small ratio between the number of users of a particular distribution or application and the number of developers of that software. With more choices, we increase the likelihood of one of the choices meeting best what we want from our software.
Follow this logic for a moment, if you will. There are many reasons why proprietary software is worse than open source software, but for me the biggest contributor is the economics of software. An organization typically has a finite (typically small or moderate) number of people that write and maintain a product. What is their goal? Sell as many of that product as possible. This group can only write so much code, so their standard approach to sell more software is make the software do more things. If the software solves more problems, it will appeal to more people. Ok, so fast forward a bit and what do we have? Since the organization wants to maximize profit, they keep the developers to as small a number as possible, but they keep adding features to appeal to more customers. Before you know it, the ratio between developers and lines of code is significantly less than when the software was first written. Less developers and more code equals more bugs and crappy code. There is a word for software with too much code, bloatware.
In general open source is fundamentally better because the developer to code ratio typically stays higher. In addition, because the development is driven by the community that surrounds the software, requests for unnecessary features are typically ignored. But what about a developer who feels strongly about a feature that is ignored? She can fork the code and create her own version and add that feature. For someone new to these two pieces of software, it will look like two different applications. When in reality, it is nearly the same code base and one will have an additional feature.
Of course all of these choices do make our lives a little more challenging. How are we to manage all of the choices? How will we know which software is better? Which choice better meets my needs? What metrics shall I use to compare software? -- That certainly is a lot of questions, but I'm sure that this is just the tip of the iceberg. What shall we do to reduce the complexity of this choice?
As I see this we have two main choices. I've told you before, but with a slightly different context, you are either choosing not to choose or accepting the task of choosing. First, You can choose to leave the task of choosing up to someone else. Distributions like Linspire, Mandriva, and Xandros do a great job of choosing applications for those that do not want to make up their minds for themselves. I believe that more vendors will join this list. As the list grows, we will begin to see distributions becoming more specialized. I can clearly see the need for a graphics/web developer, a musician, a gamer, a CPA, and even different age groups all having their own Linux distributions. Vendors will expand out to meet the demands of the marketplace. When demand weakens we will know when there are enough distributions. In many ways, we've just begun this exciting growth.
If you feel strongly about taking control of your computer, then you will have to work your way through all of the seemingly endless choices. So where to start? I think the first place is with yourself. You need to fully comprehend what the path of control means. Assuming control of the maintenance of your Linux computer will be different than what you might have experienced maintaining Windows. I hesitate to use adjectives like easier, harder, more complex, more hands on, because it all depends on your perspective.
Whether you experienced it or not, learning some of the earlier versions of Windows was no picnic. With DLL Hell, the Blue Screen of Death, NT versus Windows, viruses and now with spyware, adware, and malware -- keeping a Windows machine operational can be challenging. Now on the other hand, building your own software, keeping up with software releases, permissions, and drivers -- mkae Linux a challenge as well. Let's face it, no matter which route you choose, maintaining your own computer is not for everyone. But for those who do choose control, I'd like to offer some help.
I believe your objective should be self sufficiency. While studying for my bachelors in computer science I learned probably one of my most valuable lessons. In the second course of a two part system design and development class, I was working with two other people on our system. Things were very intense and the team was running behind. Our final demonstration approached and I had finished my part of the system, but my two classmates were not ready. D-day arrived and although my code was ready, I couldn't demonstrate my piece of the system. We received an Incomplete and later finished with a D. After our demonstration the instructor leaned over to me and told me that if I had been able to build a driver program to demonstrate my code, I'd have gotten and A. Oh man, was I pissed at my self.
Later in my career as I pushed my developers and database adminstrators to become self-sufficient, it became clear to me that this experience in college had transformed my perspective on computers. Throughout my career I had pushed my self to become fully knowledgeable about whatever computers and software I worked with. And through much suffering, I asked the same from all of my employees. Now, if you chosen the path of control, I will also ask it of you. But as I said, I'd like to offer some help. So until we are finished, I'll structure various articles into topics that cover the most important tasks necessary to maintain your Linux computer. Hopefully, when we are done, we will all feel more self-sufficient and ready to make the right choices.