It's interesting to me that Bitcoin so rapidly ran into the same fundamental problem that exists with
every single decentralized system that tries to function for a
centralized purpose. Think about how many 'decentralized' protocols you deal with on a day-to-day basis that try to do this. E-mail, DNS, and the Internet itself via peering come to mind.
We can't do anything with those three examples, and Bitcoin, until a consensus agrees and actually does something due to our usage of them as centralized in practice. That's an immediate disincentive, and likely deal-breaker, to improve as has been demonstrated by literally five decades of history. E-mail is long due for some defenses against spam, but we literally cannot. The Internet is due for a rethink on its architecture, but we literally cannot. Spam, source filtering on network egress, DNS security, and IPv6 adoption are four examples of problems that we've had for multiple decades with the aforementioned protocols and cannot remotely begin to address because of the barrier of individual work within a decentralized protocol or system creating an economy of incentives. It takes the worst part of software deployment itself (outliers running old versions) and then makes it even worse (administrators need incentive and/or consensus to upgrade said outliers). Momentum is already a bitch to deal with in traditional software, and decentralization accidentally gives momentum a frightening amount of power.
Bitcoin is just demonstrating all of this on an accelerated timeframe, and it's worth thinking about when discussing the benefits of decentralized systems. The Bitcoin block size is simply its IPv6 moment, and look how long we've been in dire mode on IPv6. Yes, Bitcoin is decentralized (yay!) but everybody uses a centralized blockchain (well...) and just papers over that fact. Seriously, the very concept of a blockchain split undermines the description of Bitcoin as a decentralized protocol, because it requires out-of-band resolution. Who are the out-of-band resolvers? The centralization.
I watch all the improvements to these systems try, and fail, and I cannot help but wonder why people still try to make decentralized systems when usage patterns almost always make a system centralized (IRC: decentralized chat; networks: centralized. IP: decentralized routing decisions; Internet: centralized). Then the FLOSS crowd tries to decentralize big centralized systems (identi.ca, GNU social, "pure" XMPP and so forth, most of which amusingly have a "centralized" option) and wonder why nobody uses a system that starts with "step 1, become root," which is a slightly different issue but related.
Decentralizing a system is one of the worst decisions you can make if you expect the usage thereof to be centralized in nature. You're dooming yourself or, far more likely, those begrudgingly after you to supporting the choices you made in the first version for a long, long time (despite what you tell yourself while writing it), and you need to think about every single decision long and hard. And then you'll still get it wrong because you cannot predict the future. Don't get me wrong, I love the spirit of decentralized systems, but I've been sitting here since I started this comment trying to think of an example of it going right. Still trying.
Perhaps it's time to objectively look at decentralization itself. I might be wrong, but it seems to keep shooting us in the foot and making beds we have to sleep in, often against our will. Maybe there's a different means to accomplish the grand decentralized vision without the problems I've touched on here; I'm aware of the benefits of distributing authority, and I wish we could advance decentralization to a place where bummers like this don't happen, but I don't know how.
(Also, not trying to be negative, nor am I criticizing Bitcoin. Just stepping back and observing in general, and I did write this comment with the context of many things I mentioned succeeding despite the problems decentralization brings.)