Brendan wrote:What can we (as OS designers) do to solve/prevent the problem of "relatively random" purchasing decisions?
If a (distributed) OS was monitoring everything; and described exactly where the bottlenecks are, which pieces are nearing the end of their useful life, which pieces are responsible for "below average" user experience/productivity, etc; do you think the "relatively random" purchasing decisions could become much less random and much more effective?
In some cases, it might. The problem is, in many cases, the people responsible for making such decisions have no technical background, and may be more concerned about the cost of new equipment than the cost of paying an expert to keep the older hardware running (no matter how much more that would end up costing), might make a 'brilliant deal' for the new hardware that ends up dropping a expensive pile of trash in the admins lap with no choice but to use it, might decide that they know more than the admins do, might get distracted by a passing flock of butterflies and forget to order the new hardware, etc.
All I am saying is, I agree that it would be a significant improvement, but human behavior being what it is, I know how easily that improvement could be negated by folly.
I can understand why you don't want to support a load of trash; much of what makes Windows the huge turd it is comes from trying to cover millions of edge cases, bad interactions, and odd requirements of specific customers. By rights (and good design principles), this shouldn't affect installations that don't use those facilities, but it does, to everyone's loss. The problem is, customers can be unreasonable.
Very unreasonable. If you don't give them what they want, they will find someone who does, no matter how much they lose out from being so unreasonable. You can say that "well, I am better off without unreasonable customers", and perhaps you'd be right, but if you multiply that by the number of unreasonable customers you have, you will lose most of your business - and since your installed base is so small, no one else will want what you are offering, either, no matter how much better it might be.
The situation for open source in this instance is slightly better, but not much; if you don't support the users' idiocies, they will just fork the codebase and do it themselves, or else find someone who will. It trades having the edge cases causing less impact on the main codebase for loss of control over the user experience, while still getting blamed when those forks fail (and they
will try to pin the blame on you, even - or especially - when the main codebase is rock solid).
I honestly have much the same view as you in this matter, but in my case my primary goal is research - while I am designing my OS as if it will catch on, I have no illusions about the chances of anyone other than me using it, and my main hope for improving things in the real world is that I might learn something new that others can build upon. All I am saying is that you need to go into this with your eyes open about the reality of how hard what you are trying to accomplish really is.
Technical superiority is the
least important part of success in the software field; companies like IBM, Microsoft, and Oracle became what they are because they have marketing departments that can sell garbage to other companies even when superior options exist, and that fact isn't going to change any time soon. Without efforts like yours, the field can't advance, but in most cases, it advances not because of a superior product, but because an established product co-opts some part of the technically superior product's improvements, which is why - despite constant surface changes - real improvements in user experience and software quality are usually painfully slow to emerge, and the field goes backwards as often as it does forwards.
Every once in a while something truly revolutionary comes along - microprocessors, GUIs, mobile devices that are actually usable - which upsets the apple cart, but even then the disruption is often temporary as these corporate behemoths usually have some department inside them that is agile enough to adjust to the new situation. Even when their inanities eventually catch up with them, as happened to IBM in the 1990s, there's almost always some other company of the same mold ready to replace them.
TL;DR: go ahead and do what you think is best - since you are probably right - but don't be surprised when someone less right steals your thunder by being better at conning people than at making software