[ ] Communication between two components is really hard. Components need to hold actual object references to each other to talk or communication has to happen in a common ancestor component that holds references to both. This causes lots of irrelevant code in the intermediate components. This is particularly bad given parent-child relationship is mostly enforced by layout and may not have anything to do with logical connections between components.
[ ] Inconsistent state/event objects are passed to render and other functions. They are sometimes the global state, sometimes the parent state, sometimes the component state...
[ ] Events are dual purposed and used both as input ( making a components do something ) and output ( component telling you something happened ). I find the input part very strange and hard to understand conceptually and frankly unnecessary.
[ ] It's really hard to differentiate between private state/events vs public ones.
More details and possible course of action here: https://docs.google.com/a/google.com/document/d/1epybEPDxP389Mgpe22eqUelU_vt79dV_cbZB-rTg4iE/edit