Why discourse uses ember.js