IMO, it's a harder question than it seems. The advantages of course are huge, particularly for programmers. No need to code for multiple configurations and platforms like a PC, and no compromises because of that... you can simply write the best code for the standardized architecture you're working on. Therefore, the end user gets software that's almost perfectly optimized for their use. However, as we know, standardization and proprietary comes at a price... and it's not hard to see when you see how much Apples and other closed-end systems cost, both upfront (and the lack of flexibility and upgradability at the end user level). So, for the end user and consumer, are the advantages that closed-end system architecture brings to the table outweighed by the disadvantages, or vice versa?