Confronted with a choice of frontend technologies, the team at Locus Energy recently did a bake off between Angular and Ember to decide the fate of the frontend. The team weighed many aspects of each framework, eventually settling on Ember. Here's why.
Most important things first; this is an easy victory for Ember: Hamster beats blocky "A" handily!
One of the major deciding factors was stability of the framework in terms of structure, APIs, and roadmap. Both Angular and Ember are relatively new technologies, but Ember's roadmap was a bit more stable. The upcoming Ember 2.0 release offers a gradual migration path built on many common web standards, while Angular 2.0 is expecting to introduce breaking changes (although word at ng-Conf in March 2015 indicates that this may be more gentle than initially expected).
While Angular isn't necessarily making a bad decision with a major redesign, it was a bit of a red flag when starting a long-term relationship with a framework, and expected to be bumpy. The path with Ember looked much less painful and more predictable.
Angular has a ton of traction and has shown amazing growth over the past few years. Ember, while popular, has had more modest growth. Comparing some numbers from GitHub and Stack Overflow (as of May 12, 2015) that serve as proxies for popularity:
Angular is clearly the more popular framework, though Ember is no slouch.
Popularity is important as the more popular technology is often a bigger pull for new hires and has more easily accessible answers for questions about it.
Another way to look at popularity is to see which companies are actually building customer-facing applications with a given framework. This could very well be skewed by marketing efforts, but it seems like Ember has actually gained more traction with small- to medium-sized companies building real products than Angular has. A list of companies using Ember is a "who's who" of companies with great apps and actual users. Apps built with Angular don't have the same sense of maturity.
While not a scientific comparison, Angular feels more like a technology touted by one corporate sponsor (Google), while Ember feels more like it has a community approach that fits in better with smaller companies like Locus.
Convention vs. Configuration
Ember and Angular have thus far taken different approaches to the developer freedom of choice. Ember is opinionated in imposing a project structure and framework, while Angular allows for more individual decision-making. Both approaches have their merits, but in the case of Locus, the idea of the framework enforcing standardization, abstraction, testability, and general consistency is more ideal. Ember-CLI takes this to the next level by providing an extremely powerful tool to help in this respect by automating many common tasks.
Ember as an opinionated framework has already proven helpful while on-boarding new team members who can immediately understand the structure of our app. It's expected that Ember's conventions will become more helpful as the app grows in complexity.
Six Months Later
One Ember app is under the belt and another one is under development. There have certainly been some bumps along the way, but in general the experience has been good so far.