>You offload a lot of your maintenance headache onto someone else :-)
Yes that seems to be the recurrent idea, which is WRONG. The main idea should be exactly about "COOPERATION", that is, Open Source means nothing when end users can't have really tuned systems by compile install with all the "peculiarities" of the processing chips (CPU+GPU+whatever)... its not only about x86 anymore, ARM will be here very soon and they seem to target HSA for most pertinent parts...
And Open Source means nothing when instead of cooperating for that maintenance, and i can add "IMPROVEMENT"... others are just about to fork it, just because seems nice to them to be "different" (delivered with a lot of lame excuses!).
Nowadays in the client side, Open Source means offload not for maintenance and improvement but to the forking party... all seems prone to an eternal start all over again and stagnation, because the projects tend to pile with no certain heading, or be incompatible with each other!
>and you get a pool of experienced workers to hire if you need to :-) and if neither of those options come off, you're no worse off than you would have been.
Well Open Source makes a VERY BAD traditional business model... meaning the software by inherent propriety must be free.
There is the windoze model (their free part is in warez/freeware) of **forced pay** by the hardware side, scheme that everybody seems to more or less endorse now, because is prone to "differentiation", and you hire devs exactly to make it different (fork)...
... and there is the service model, that can go from the in-situ help to online services including **compelling pay** tunned compile-install for the machines of common Joe(something that never was pursued), is much less prone to differentiation, that is, one vendor can't aspire to win all the market, requires a lot of cooperation, but OTOH it can be prone to achieve really sophisticated pieces of software(if the cooperation is intense and projects stay on target -> example Linux kernel)...
I'm afraid at least in the client side "quality" and "sophistication" seems tending to suffer a lot in favor of *fast* and simpler "differentiation"(there are a lot of distros more client oriented struggling now, they want something fast, different and *forced pay* -> like running to nowhere lol)... matter of fact there seems to be a lot of bitching about complexity, something i never read about the Linux kernel as example. Matter of fact the kernel is now about different "namespaces" and "containers" for the same kernel allover, like VMs without VMs... seems absurdly complicated, AFAIK NONE OS have it natively yet in the extent that Linux Kernel seems to be heading (not even solaris), yet nobody complains about complexity (they complain about other issues lol).
Those are "the differences"... results speak volumes for themselves... why Linux kernel devs are forced to cooperate while in the client side they seem to do the opposite, could be prone to endless discussion, but in the end it depends a lot on the ppl involved and the "interests" behind them, and if the ppl involved can have "vision", stay on target and COOPERATE, and be more or less impermeable to those "interests" (with $ dreams) and or other personal fancy issues.