I'm not sure how to explain Ethereum or other smart contract systems like eos/tron/ardor/waves. Are these protocols or are they frameworks? How should it be classified? I want to explain to clients that I'm building on top of a protocol or a framework? My application doesn't require any ETH, but only interactions with crypto addresses and reading of transactions on each blockchain.
Ethereum and others are protocols.
The protocols are silent on implementation details such as language and physical storage. Ethereum is perhaps the truest to this ideal in that they released multiple clients on day 1 (go, c++). Among other things, this helped ensure that the protocol spec was authoritative and no implementation quirks would rise to the level of de facto "standard."
Frameworks exist for working with the protocols. For example, Truffle Framework, which is a codebase to make the developer's life more pleasant. Naturally, it blends into front-end frameworks and server frameworks which are separate concerns.
Hope it helps.