HTTP is the new TCP. I wonder why all of those projects (IPFS, SSB, Dat/Hypercore) developed their own protocols rather than piggybacking on HTTP instead---thus requiring desktop daemons, specialised browsers, or web gateways.
I think the issue is the lack of separation between peer-to-peer synchronisation (e.g., nodes sharing messages with each other) and peer-to-browser communication (e.g., a browser requesting a file). I get that the former may require a specialised protocol, but the latter should be available through plain HTTP.