2005-03-21
When will Linux be the best?
Loaded questions similar to "When will Linux be the best?" and statements like "Linux will be the best when it does X exactly like Y." really irritate me. First, it presumes that exactly one thing can be the best for everything. Second, the author of such a question always points to Windows, MacOS, or another OS the author favors as the current example of best. But that's not really my point at all.
My Point
My point is that Linux is the only system in the short history of computers that has even had the potential to be usable for everything. And I think most of that credit goes to the GNU GPL license which affords some amazing opportunities. It has brought together the engineers of bitter rivals, with their employer's blessing, to co-author common specialized systems based on Linux. The GPL requires them to pass along their Linux modifications which moves the basic technology forward for everyone. These projects would've been dozens of completely disconnected and incompatible trade-secret projects just 5 years ago. Linux gives everyone a common base which they can build upon. It also means that when their project finishes their contributed technology may continue to improve on its own. They don't have to hire someone else to do it for them. They don't have to license it from anyone. The only binding legal agreements they have to make are between each other and the end users of the technology they develop. They don't have to go through some week long approval process of their employer to share every tidbit of software code or information about it with each other. The GNU GPL license handles all of those negotiations for them. They can walk into a room and immediately start doing real work with each other.
Over a short period of time these interactions have pushed Linux in all directions. Linux itself can now be made to run well on nearly any device which has something resembling a CPU and memory. This means that in most cases the same exact programs without modification can be used on devices as diverse as a small wristwatch or a building-sized supercomputer. We no longer need to start from scratch and recreate the same types of programs over and over for every new computer design. The same programs run everywhere. This frees up an enormous amount of time for developers to create new technology. In the proprietary software model we are doomed forever to keep recreating the same old technology in order to even use the new technology. Up until proprietary software we would build new technology upon the knowledge gained from the past. Proprietary software simply has us building the past over and over again.
With Linux there are no more secrets in the OS. And this is a wonderful thing. Its better for everyone involved: engineers, developers, technicians, OEMs, resellers, customers. Take the case of a cell phone. Instead of having dozens of incompatible, proprietary operating systems all phones could share one common OS. This means one could use the same exact programs on all cell phones and not just one model from one company that was only made for 3 months in 2004. This also means that 17 different companies don't have to waste resources creating their own custom phonebook program. Instead they can just buy one off-the-shelf and drop it into their phone at the factory. For example, in the very near future maybe you won't have to spend those 3 days manually retyping your phone book entries using tiny buttons when switching to a newer phone. Just lay the phones next to each other and use Bluetooth to transfer your phonebook database from one phone to the other.
The Old
UNIX proper is long dead. UNIX is dead because every UNIX vendor added proprietary features into only their own version of UNIX. The proprietary nature of each system drove everyone into the ground at full speed because over time they were so different that software from one vendor could no longer be used on another vendor's system. Those who have moved away from proprietary UNIX are almost certain to never return. Nearly every major proprietary UNIX OS vendor (IBM, HP, SGI, etc) has spent the last 5 years or more stripping out useful technology they added into their proprietary UNIX derivative and reworking it for inclusion in the common Linux base. This is what should have happened with UNIX and indeed AT&T tried to implement this idea and failed probably because AT&T was seen as a direct competitor to other OS vendors. Linux is vendor neutral and it seems that vendors are much more comfortable with this situation. At least everyone benefits this way instead of just one competitor.
The only real holdout is Sun with Solaris. And they do have an advanced OS with a couple features found nowhere else, for now. But to be bluntly honest, using Solaris is a horrendous end-user experience compared to Linux. To be sure, it makes a nice high performance server. But as an end-user system it is terrible. USB doesn't work whatsoever that I've ever seen. The new hardware configuration in Solaris is quite easily the worst ever devised being very tedious and technically oriented. Solaris provides stunningly ancient versions of all the expected UNIX utilities. And the desktop utilities are an strange mixture of 3 or 4 totally different toolkits which look and work in different and sometimes conflicting ways. (Yes, Linux systems do provide programs using many different toolkits. But the major base distributions standardize on utilities using one or another toolkit to provide consistency.)
The BSD family is very good but it has never managed to soar into greatness. Every time a particular branch becomes popular someone steals it (and often its developers) away from the community project to add a bunch of neat, advanced stuff in a new, proprietary "based-on BSD" system. (SGI, Sun, NeXT/Apple, the list goes on for pages.)
Windows is religiously proprietary and as such it is doomed to eventually collapse under its own secrecy. There is simply no way that Windows can survive unless people are willing to accept that computers will never truly progress technologically. With Windows you are forever stuck with some minor variation on exactly what you have now. Windows is too dependent on the design of the PC and the PC is terribly outdated. The PC only has survived this long because of Windows. Imagine if today everyone was using AmigaOS on a slightly more advanced Commodore-style computer. And honestly, PCs aren't even that advanced with Windows. The computers that Windows runs on are permanently frozen somewhere in the early 1980s. And for most Windows users that's fine because they don't really know any better. This is not because Microsoft hasn't tried to break the shackles of the PC. But they have given up trying very hard. Why even bother to change their ways when what they have now is still making them insane sums of money. Well, the only reason is that changing now would spare them in the future. But the future doesn't matter as much as quarterly profit in this crazy little world.
MacOS X is one of those systems that kinda gets it. But they seem to have made the typical BSD mistake. In a sense, they "stole" away a popular, technically advanced BSD system (FreeBSD) and some core developers from the community and then made it their own. They added their own improvements and such to it. And they continue to pull in new features from FreeBSD every so often. For various reasons, perhaps the FreeBSD leadership itself, Apple did not choose to work directly within the FreeBSD community and build that up as their base OS. So now we have two somewhat incompatible systems, FreeBSD and Darwin, instead of a stronger FreeBSD. MacOS X itself further adds an entirely proprietary desktop environment on top of that. Which I suppose is fine since they decided to add provisions for FreeBSD programs to run on it. It's a lousy BSD, really. But it is a decent UNIX system with a very attractive and modern desktop environment running on cutting edge computer hardware. One can easily see why it is almost as popular as Linux.
My Point
My point is that Linux is the only system in the short history of computers that has even had the potential to be usable for everything. And I think most of that credit goes to the GNU GPL license which affords some amazing opportunities. It has brought together the engineers of bitter rivals, with their employer's blessing, to co-author common specialized systems based on Linux. The GPL requires them to pass along their Linux modifications which moves the basic technology forward for everyone. These projects would've been dozens of completely disconnected and incompatible trade-secret projects just 5 years ago. Linux gives everyone a common base which they can build upon. It also means that when their project finishes their contributed technology may continue to improve on its own. They don't have to hire someone else to do it for them. They don't have to license it from anyone. The only binding legal agreements they have to make are between each other and the end users of the technology they develop. They don't have to go through some week long approval process of their employer to share every tidbit of software code or information about it with each other. The GNU GPL license handles all of those negotiations for them. They can walk into a room and immediately start doing real work with each other.
Over a short period of time these interactions have pushed Linux in all directions. Linux itself can now be made to run well on nearly any device which has something resembling a CPU and memory. This means that in most cases the same exact programs without modification can be used on devices as diverse as a small wristwatch or a building-sized supercomputer. We no longer need to start from scratch and recreate the same types of programs over and over for every new computer design. The same programs run everywhere. This frees up an enormous amount of time for developers to create new technology. In the proprietary software model we are doomed forever to keep recreating the same old technology in order to even use the new technology. Up until proprietary software we would build new technology upon the knowledge gained from the past. Proprietary software simply has us building the past over and over again.
With Linux there are no more secrets in the OS. And this is a wonderful thing. Its better for everyone involved: engineers, developers, technicians, OEMs, resellers, customers. Take the case of a cell phone. Instead of having dozens of incompatible, proprietary operating systems all phones could share one common OS. This means one could use the same exact programs on all cell phones and not just one model from one company that was only made for 3 months in 2004. This also means that 17 different companies don't have to waste resources creating their own custom phonebook program. Instead they can just buy one off-the-shelf and drop it into their phone at the factory. For example, in the very near future maybe you won't have to spend those 3 days manually retyping your phone book entries using tiny buttons when switching to a newer phone. Just lay the phones next to each other and use Bluetooth to transfer your phonebook database from one phone to the other.
The Old
UNIX proper is long dead. UNIX is dead because every UNIX vendor added proprietary features into only their own version of UNIX. The proprietary nature of each system drove everyone into the ground at full speed because over time they were so different that software from one vendor could no longer be used on another vendor's system. Those who have moved away from proprietary UNIX are almost certain to never return. Nearly every major proprietary UNIX OS vendor (IBM, HP, SGI, etc) has spent the last 5 years or more stripping out useful technology they added into their proprietary UNIX derivative and reworking it for inclusion in the common Linux base. This is what should have happened with UNIX and indeed AT&T tried to implement this idea and failed probably because AT&T was seen as a direct competitor to other OS vendors. Linux is vendor neutral and it seems that vendors are much more comfortable with this situation. At least everyone benefits this way instead of just one competitor.
The only real holdout is Sun with Solaris. And they do have an advanced OS with a couple features found nowhere else, for now. But to be bluntly honest, using Solaris is a horrendous end-user experience compared to Linux. To be sure, it makes a nice high performance server. But as an end-user system it is terrible. USB doesn't work whatsoever that I've ever seen. The new hardware configuration in Solaris is quite easily the worst ever devised being very tedious and technically oriented. Solaris provides stunningly ancient versions of all the expected UNIX utilities. And the desktop utilities are an strange mixture of 3 or 4 totally different toolkits which look and work in different and sometimes conflicting ways. (Yes, Linux systems do provide programs using many different toolkits. But the major base distributions standardize on utilities using one or another toolkit to provide consistency.)
The BSD family is very good but it has never managed to soar into greatness. Every time a particular branch becomes popular someone steals it (and often its developers) away from the community project to add a bunch of neat, advanced stuff in a new, proprietary "based-on BSD" system. (SGI, Sun, NeXT/Apple, the list goes on for pages.)
Windows is religiously proprietary and as such it is doomed to eventually collapse under its own secrecy. There is simply no way that Windows can survive unless people are willing to accept that computers will never truly progress technologically. With Windows you are forever stuck with some minor variation on exactly what you have now. Windows is too dependent on the design of the PC and the PC is terribly outdated. The PC only has survived this long because of Windows. Imagine if today everyone was using AmigaOS on a slightly more advanced Commodore-style computer. And honestly, PCs aren't even that advanced with Windows. The computers that Windows runs on are permanently frozen somewhere in the early 1980s. And for most Windows users that's fine because they don't really know any better. This is not because Microsoft hasn't tried to break the shackles of the PC. But they have given up trying very hard. Why even bother to change their ways when what they have now is still making them insane sums of money. Well, the only reason is that changing now would spare them in the future. But the future doesn't matter as much as quarterly profit in this crazy little world.
MacOS X is one of those systems that kinda gets it. But they seem to have made the typical BSD mistake. In a sense, they "stole" away a popular, technically advanced BSD system (FreeBSD) and some core developers from the community and then made it their own. They added their own improvements and such to it. And they continue to pull in new features from FreeBSD every so often. For various reasons, perhaps the FreeBSD leadership itself, Apple did not choose to work directly within the FreeBSD community and build that up as their base OS. So now we have two somewhat incompatible systems, FreeBSD and Darwin, instead of a stronger FreeBSD. MacOS X itself further adds an entirely proprietary desktop environment on top of that. Which I suppose is fine since they decided to add provisions for FreeBSD programs to run on it. It's a lousy BSD, really. But it is a decent UNIX system with a very attractive and modern desktop environment running on cutting edge computer hardware. One can easily see why it is almost as popular as Linux.