I just don't see a community developed and maintained OS as ever being broadly feasible - I think it's fundamentally incompatible with human nature (in the sense that the best software developers and creative minds will gravitate to high paying jobs - something linux doesn't currently offer).
Reading history books again? I haven't heard those arguments in a few years, I figured most people had realized that not everything is driven by money. The best software developers and creative minds do what they do because they enjoy it, not because they get paid to do so. And, at least in the US, those people do tend to get those high paying jobs and Linux does offer them, just look at RedHat, Novell, IBM, Google, etc.
A lot of Linux development IS driven by money. The truely successfully people are ones that started hacking on it for fun.. then they started getting paid for what the loved doing.
Software itself has a sort of nature to it, just like anything else. There are traits and things that tend to happen with software and it's obvious that software is not equivelent to a manufacturing a car, painting a picture, or writting a book. It's very different and it is a new item in human history.
some of the aspects of it that are unique...
--- It costs about the same to create one copy of a software as it does a million copies of software. For Microsoft to produce one copy of Windows it costs the same as it does to make 10 million copies of Windows. The only true per unit overhead is the cost of electronic bits it takes to copy and distribute it. If you use something like Bittorrent on the internet then the costs are distributed between all the praticipants which means that it's not realy a practical concern and that other costs far out weigh that considuration.
--- There is no need to recreate a program when that program does what you want. If you have a open system and software already does part of you want to do in a new program then it makes more sense to simply incorporate the output from that program into your own rather then duplicating it's functionality. It's generally better to use high quality code that somebody else has written then it is to do it yourself.
--- Because of this the nature of software is always going to go to the commodity. Things that were previously very expensive and unique items are now so common place that nobody in their right mind would even think of paying for them unless there was a special unique need for something different. These things are so common place that they are incorporated into larger software bundles and are to the point were they are not economicly feasible for a new competitive item to come along.
Some examples of things that were previously premium-only and are now commodity:
compilers.
text editors.
image viewers.
web browsers.
word proccessors.
modem control software.
programming languages.
some examples of things that are rapidly becoming commodity:
operating sytems.
virtualization software.
Image editors.
office suites.
Integrated Development Environments.
databases
When something becomes a commidity that is not to say that they shouldn't be programmed on anymore or anything like that.. it's just that there is only financial justiifcation for these sort of things as part of a larger service or product.
It does not make sense for you, if your starting a company, to go out and write a compiler just to sell that compiler like companies did years ago or write a new propriatory language to compete with existing languagse. It's possible to find some nitch to fuffill, but that's the best you can hope for.
-- The majority of software development is customization. There are certainly companies that produce a lot of shrink wrapped software.. but these employ a minority of programmers. The vast majority of programmers work on creating custom software for invidual companies or purposes... For example: web development.
These are some of th ways software developmenti s different from traditional manufacturing things.. like making a textiles on a large scale or baking bread. The economic and ethical issues when dealing with software specificly and digital information in general are quite a bit different then what most of us are used to dealing with.
As another example.. if it was possible for me to cook one loaf of bread then reproduce it at no cost to myself in a nearly perfect manner so that every man, women, and child on earth can have bread... Then is it ethical for me to charge 5 bucks a loaf and if people don't pay it terrorize them by having their governments attack their livelihoods with fines and sanctions?
Now certainly software isn't food or nearly important as food, (but knowledge does save lives if you think about it) but I think it helps to put it into perspective of the sort of issues we are dealing with.
There are many real commercial advantages to open source software as you can imagine... Not nessicarially for big commercial outfits like Microsoft, but for _end_users_ like businesses and such, which people make their money off of software-wise.
In other words open source software is produced by users of the software rather then commercial software companies. And those software companies that do produce and sell commercial open source software do so because they make money from selling associated hardware and support services (which have a big per unit cost and will never be commodized)
If you think about it say your a programmer and your making software under contract for another company. By finding open source software that you can modify to suite your contract your not only going to end up with dramaticly reduced costs, but also a dramaticly improved product for your customer compared to a propriatory software developer who has to maintain their own code base. Sure you can't charge nearly as much, but per hour you spend on something it will make you much more money.
Also GPL allows for a great deal of freedom for individual programmers. For example recently you had Jeremy Allison, a Samba hacker, recently resigned from Novell from a different of opinion.
Now if you a programmer working for a company that produces propriatory software the standard stuff requires you to sign mounds of contracts handing over copyrights and NDAs and non-compete agreements. Generally speaking doing what Jeremy was able to do.. which is to go and take his source code with him to go work for a potentially competing company, would get you sued so quick it would make your head spin.