In my opinion there should be a way to communicate the same way up / down the component tree no matter if there's a view or a component in the parent.
With send_update one can only talk to components (given an id), with send / handle_info one can only talk to live views.
This makes it impossible to write a component that can be used in all contexts.
I have to say that I'm getting a bit frustrated using live view. I really enjoyed it when using it for small applications where there's just CRUD cases or similar.
When it gets more complicated it gets massively complex with a wild mix of handle_info / handle_event / update etc. depending if you talk to a form input, a custom component, in which context it is used etc.
We're using Live View for Covid Tracing for regions in Switzerland. We have massively complex data models which have a lot of relations. Those in turn are done via a lot of components.
Therefore a component can not easily be replaced by a view.
If we replace let's say a native select with a more sophisticated chooser / create component, we loose the ability to use events. We for sure can convert it to use send / handle_info instead, but from then on it only works as a child of a view and no longer as the child of another component.
When building such complex views, encapsulation / communication are really important topics to make the code understandable. Just passing everything up to the root view and then duplicating that code across all views that use said component is just not a solution.
I'm aware that LiveView is a relatively new project and I'm more than willing to help and improve it. But at the moment it seems to me like important proposals are rejected without an alternative solution and without actually looking at the root of the problems that currently exist.