I think the answer is going as far as we can to make “auto-shield in background when receiving t2t” the default behavior across all wallets, and only eliminate t2t transactions once exchange support for t2z has reached a certain critical mass.
The exchanges have a lot of leverage over the user, because users don’t have too many options for what exchange they use in a given jurisdiction. And the process for linking a bank account etc is time consuming. So if exchanges will only send to t addresses, I think you have to just accept that until you coax them to change, since disabling t to t transactions without exchange support would cut off wallets from the exchanges users already are in the habit of using. That would throw away one of Zcash’s major benefits, which is support from mainstream exchanges.
I don’t think wallet developers or even ECC have enough leverage over exchanges to force them to add t2z functionality if they currently only support t2t, just by disabling t2t transactions. I think the path here has to be that ECC and/or ZF supports several key exchanges in addressing any technical and policy blockers to supporting sending to z addresses, until there is a critical mass of exchanges that support t2z. Once there was sufficient support from exchanges you could disable t2t transactions at the protocol level. It might be a good exercise to clarify what counts as sufficient critical mass, too. I’d say “3 or 4 top exchanges including at least one of Coinbase or Gemini, and at least one instant exchange service in most countries” though I think it depends on an assessment of whether exchanges just need a nudge or whether there is significant technical or regulatory work involved.
It might make sense to set a deadline for exchanges to add this functionality after which t2t transactions will be disabled, but I think that has to be done with some sense of how far along you are in the process of convincing exchanges, because if too many simply disable Zcash support that would be a disaster. But having such a deadline could be part of the approach.
I think the “auto-shield in background” approach is what it has to be for now. Zbay does this and it seems like a pretty good user experience overall.
One way to address the problem of revealing your wallet would be to build this “auto-shield in background” functionality into zcashd and enable it by default, so that all major wallets have the same behavior. Would there be any downside to this? Should we create an issue for it?