#ZIO 2 looks really promising as it addresses a number of everyday problems when developing business applications.
All would be great if it wasn't for the layers - I still can't grasp their utility. Don't get me wrong: the env part of ZIO is a great innovation:
(1) for resource scoping, as we have recently seen, and (2) for contextual *business* values (such as an open transaction or security tokens). Much better than alternatives!
However, dependencies are best passed using constructors. You can get the same zio-magic (see macwire).
Plus, dependencies are hidden, instead of being exposed. Why would the user of your code want to know that you do tracing, or that you are using some other service? That's an implementation detail that should be hidden.