I mostly write mobile apps so this is definitely coming from that perspective, but I think it applies for most UI development.
Suppose I have a UI with the following pattern:
I want to have some user interaction in one part of the UI, and another part of the UI that reacts to it. For instance, the user sets their profile image in the profile section, and it's shown at the top of the app everywhere immediately.
It seems that observable values are the solution to this, and those observables should be owned by the data layer and merely exposed or passed into the view layer.
The problem is that in this situation my data layer is big and complex. The data layer is a hierarchy, with different controllers in charge of different views, and with parent controllers that own child controllers. The question is, should the observable value be owned by the parent layer or one of the child layers?
It seems like both answers are wrong to me. If the parent owns it, then we'll just end up with a fat parent and the child controllers won't be doing much except passing data from the parent to their views. But if one child owns it, we could end up with a lot of entangling between siblings, and the parent doing a lot of work passing values between them.
I lean towards one of the children owning it, and the parent ignoring the specifics of the values their children are using and simply bridging between the children. In the profile example, a profile controller would hold the profile image observable value, and a parent controller would provide access to that observable value to the other controllers in the app. The other controllers would not know about the profile controller -- they would simply have access to that observable value and update their views in response to it.