Why I Chose Ember over Angular

I've spent a significant amount of time evaluating the different JavaScript frameworks over the past several months.  Like many others, I weighed the pros and cons of both Angular and Ember, finally settling on EmberJS. Making a choice between frameworks is a decision with deep and long-lasting implications, so it's not one that I take lightly. Attached to the decision are hours of time learning new skills, not just for me but for every developer on my team.  Choosing a framework is choosing a side - you get all the good and all of the bad.

This is in no way an attack on Angular, which is a fantastic framework as well. Rather, this is rather my endorsement of Ember, and why I see it as a better fit for my personal situation.

Ember Makes the URL Foundational

Perhaps the most import ideological foundations to Ember is that the URL matters. For those of us that are on "team web", and see the link-ability of the web as a major feature for which native apps have no solution, the URL is extremely important.  If we dismiss the URL when building web applications, we've lost something.

I like that Ember not only understands this, but embraces the URL and makes it foundational.

Extra Credit: Watch Tom Dale's CascadiaJS talk on the URL and Ember.

Ember Has Idiomatic Structure and Conventions

The importance of a defined structural pattern to how a project is organized is that any developer familiar with that pattern can be immediately productive on a new project. Or, the same developer can be immediately productive on their own project that they haven't touched in six months.  I find that learning resources such as tutorials and open source projects become more valuable, as they also follow the same idiomatic structure and therefore have instant familiarity.

Extra Credit: Robin Ward's blog post on the difference between Ember and Angular, in which he asks what is idiomatic Angular?

Discourse - A Reference Implementation by Developers I Trust

Discourse is an open-source Rails/Ember project by Jeff Atwood and Robin Ward. Jeff is known from his work on Stack Overflow, and his commitment to fast, clean, and well thought out UI, on a world-class level. Robin Ward is a JavaScript developer of the highest respect. Jeff has said on numerous occasions that one of the goals of the Discourse project is to push forward the state of Ruby, Rails, and Rails hosting. I believe the Discourse project will have the same effect on Ember. Having this project in the Ember camp is extremely important, both for the growth of the Framework, and for giving us developers a trusted reference learning tool.

Hints of Rails

Ember is not Rails, though the influence of Rails on Ember is visible. Yehuda has clearly brought many of the ideas of the framework and culture of Rails over to Ember. There's enough similarity that when learning the different components of Ember, there is an immediate feeling of familiarity.  Perhaps that comes from the MVC pattern in general, but I think that the Ember flavor of MVC will be more familiar to the Rails developer, than the Angular flavor.  At least I found that to be the case.

On the culture side, there has clearly been a willingness to make a breaking change to the framework, if it's for the better in the long run.  Rails is known to move fast and make significant and breaking changes with every major release, much of the time to the dismay of the developers.  I believe this to be a strength, not a weakness. Frameworks that don't have a willingness to change end up stale and eventually irrelevant.  The Ember team has shown, with their approach to the router, that they are more interested in the best possible solution, even if it means upsetting its own community in the short run.  The multiple rewrites of the router was painful for developers at the time, but in the end we ended up with a better product.  I like to see that.

Slower to v1.0 than Angular, so unfair to compare just yet.

It's easy, and influential, to take a look at numbers when choosing between Ember and Angular, and chances are Angular will have more impressive stats. More followers, more commits, more blog posts, training videos, user group members, etc, etc.

My plea is to follow the trend over the next year. Ember has only recently hit 1.0 status (August 31st, 2013) bringing with it the promise of API stability. I believe that many developers and projects have been waiting on this milestone before jumping in, and for good reason, as beta software can be (and was) painful. I expect Ember to make tremendous strides in 2014 as the community solidifies.

New training courses will start to show, conferences will start (including the first EmberConf), informative blog posts will be written. I believe the community will snowball and close the gap on Angular.