I have decided to pull out as well.
At first Ember.js appeared just what I needed. I was coming from backend experience with Django that’s MVC framework, and Ember.js seemed most familiar to me. It had CLI tool for project (just like Django), it had MVC structure (just like Django), it had templating engine that didn’t “extend” html (just like Django), it came with idea how project should be organized (just like Django) and testing out of box (just like Django) and modules extending it with features (just like you know what).
I was actually okay with dealing with limited resources and documentation. I was slowly working it out on my own, how to do common UI stuff as services, how to do RPC, how to make Ember-CLI play nice with Django’s runserver/Rest Framework. On more than one occassion I gived back either via feedback here, on Django Rest Framework Adapter’s repo. I’ve created package for using Django’s i18n system in Ember apps and small knowledge base for Djangonauts insterested in using Ember-CLI with their projects.
However I in last 7 months I have spent with Ember.js I have found it unfriendly, obstructing, and in long run frustrating technology to work with, and this ultimatelly made me drop it for something else.
For starters, there are things in Ember that feel half-baked. For example, how can I create route that has optional route segment, so I could hide page number from url for first page? Having multiple url’s point to single controller was non-issue back in 2006, yet in Ember.js its challenge enough to ruin your day.
Getting custom loading templates for “flat” routes, so you can, say, give UI preview for some list, requires nesting your route under “do-nothing” route for Ember to actually use your loading template instead of app’s default one.
Keeping ember-data’s store size under control was always a problem to me, and eventually I’ve developed habit of emptying it completely every time top-level route was entered, so I knew I’ll get up-to-date models from backend, while not using memory for holding some other stuff I’ll wont need beyond that one page.
I am big fan of code examples in Ember’s docs. Take a look on this one: Transform - 4.6 - Ember API Documentation
What’s the story being told by this code?
It is beyond me what one has to think to pick such a specific example when they could’ve have went with much more common, reallifely and frankly, obvious “string to momentjs and vice versa” example. How should I guess from this code which function is called on value returned by API, and which on value that will be sent back?
Eventually my codebase reached size in which broccoli’s build times entered domain of minutes, meaning every time I’ve hit cmd + s in my editor, I was guaranteed enough time to go make myself tea. And don’t get me started about “go buy SSD” as solution.
From the looks of it, it seems that Ember is still happy to tell you “calling set on destroyed object” error, like it did back when I was starting with it, which today I’m reading as an part of greater issue:
Ecosystem’s stability is non-concern for people in power in the project, with all focus being placed on rapid iteration towards some “perfect”. Old API’s are being constantly deprecated for sake of new, “better” apis, that don’t add any value to your project, but force you to return and iterate closed parts of your project, sometimes actually taking away features that you relied on, forcing you to hack around.
Eventually you get tired of that “WTF, how can this be stable when they change THAT” feeling you get when reading Ember’s release announcements, sit down, reconsider options and conculde that reimplementing whole thing on something else will take same time it would take to catch up with deprecations, but’ll let you then return to work on features instead of keeping up with framework.
I fail to see to whom is Ember.js really addressed.
I’ve tried it in open source development, where eventually I’ve reached place where there were more deprecations to resolve than todo’s on my roadmap.
Is it for software houses? But which softare house would want to return to project because bi-monthly in-house software evaluation their customer did has found deprecations in project that made them send that code back to us.
Oh, and the absolute icing the cake moment was when three weeks ago at work we got brief from customer (large EU financial company, to add) for small intranet app that also included research on few big profile MVC frameworks form their inhouse web team that concluded Ember.js unstable and unviable economically due to deprecation pace.