As my Ember chat started to grow, I became more and more unsatisfied about how and where the application state was mutated inside the app. Changes happened not just in different levels on the component hierarchy but also inside the controllers. Additionally, there were chains of mutations that were hard to debug.
For a long time I felt that for an app that doesn't use Ember data, a systematic pattern to follow was missing. Ember 2.0 recommends the data down actions up approach. I initially tried to implement that the best I could but found two issues.