I would like to create a web front end with as less friction as possible for new users. The app would be a kind of explorer with all calls to blockchain as read only to getter functions. So is there a way I can use ethers.js (or web3) so that users are not forced to have metamask when the functions called by the front end don't need to sign a transaction? In ethers.js it seems I can replace the signer parameter with the provider parameter but it still requires users to have installed metamask. On the contrary with bitcoin explorers we don't need anything like metamask to read only the blockchain, is it different for ethereum and all apps have to make sure their users have an equivalent to metamask installed?