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.
If you want your protocol to be used in browsers you need to speak their language. I'm claiming that it's not something to overlook, especially since asking people to install and run additional software standalone/alongside is impractical.
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.