The reason why we have the current centralization of amazon, facebook, github etc is because the web as we are currently using it has centralization built in: A browser always connect to a fixed server. But that is not god-given, we created it that way 25 years ago, and we could allow additional other ways. A browser could instead also be connecting to a generalized service for selling, communicating etc.
Another way how this could be changed: We could bypass centralization by ensuring that a webpage on ones device can aggregate many services, by emulating visiting other websites in the background, and we make sure that those sites will not be able to find out that are are not being called directly as the main address, but will only be giving out their data. For that, we would have to remove current Cross-domain requests restrictions.