Going to ng-conf as an Ember.js user

Taras Mankovski
5 min readApr 26, 2017

--

I’ve been using and mentoring Ember.js exclusively for 3+ years. I went to EmberConf in 2014, 2015 and 2016. This year I decided to skip EmberConf and go to ng-conf instead.

This decision was made easier by the fact that Tracy Lee | ladyleet set me up to interview all of the ng-conf presenters for This Dot Media. It was a perfect opportunity to learn about what’s happening directly from people who’re on the cutting edge of Angular technology and community leadership.

The Angular community is in the middle of a major shift. Angular is a new framework that borrows many of the good ideas that made Angular.js popular and updates the toolset to include features that are standard in modern web applications development today.

The distinction between Angular and Angular.js in the previous paragraph is intentional. The Angular team is using Angular to refer to the Angular platform version 2.0 and above. Angular.js will be used for Angular pre version 2.0.

The new Angular has ahead of time(AoT) compiler which allows the templates to be compiled at build time, unlocks the ability to implement server side rendering, and improves performance of Angular applications. This was not possible with Angular.js and is a welcome improvement to the Angular platform.

In addition to compiling templates at build time, Angular added TypeScript as the primary scripting language. TypeScript gets transpiled down to regular JavaScript similarly to how Babel works in EmberCLI projects.

All of this built time work requires tooling that’s provided by the new Angular CLI. AngularCLI is a fork of EmberCLI with Webpack in-place of Broccoli. The Angular team used EmberCLI’s pod structure to implement Angular’s project hierarchy.

Files in an AngularCLI project are organized into component directories. Components are a concept that is fairly new in the Angular community. Components are a special kind of a Directive that has a controller and a template.

<hero-detail> Angular component written in TypeScript

If you squint, all of this looks and sounds similar to Ember. I think this speaks to the foresight that the Ember core team had and the emergent nature of the Ember framework.

When I started working with Ember in 2014, I was attracted to Ember Core Team’s focus on engineering and developer experience. I watched Yehuda Katz’ talks and was inspired by the dedication to giving developers the tools to be productive. This dedication lead to the creation of EmberCLI, which elevated the standard for frontend frameworks.

This year I saw the same dedication to developer experience at ng-conf in the keynote by the Angular Core team. In addition to annoucing all of the current features of AngularCLI, they announced their intention to isolate CLI internals into an SDK. The Angular SDK will make it possible for IDEs, like WebStorm and Visual Studio Code, to deeply integrate Angular CLI features into their development environments while allowing the Angular team to change the Angular platform without breaking compatibility. Angular CLI will become a wrapper around the Angular SDK.

Dedication to compatibility and providing an easy upgrade path is another area where Ember and Angular are now aligned. The Angular project adopted Semver which is the standard for communicating change in libraries. Angular team expressed their commitment to keeping backwards compatibility as they upgrade the Angular platform.

The Angular team is responsible for maintaining compatibility with close to a thousand(1000) Angular apps inside of Google. If a change breaks something unexpected, it will likely first break inside of Google before it’s released to the public.

While at the conference, I was hearing the same conversations about Angular that Ember community was having 2 years ago when EmberCLI was being created. The Angular community is just becoming familiar with AoT compilation which is something that Ember users have been taking for granted for a few years.

I counted 5 component library vendors at ng-conf, but only a few of them had native Angular components. Many of these component libraries have the 100+ options problem that Miguel Camba described in his component composition talks.

Ember community doesn’t have any component library vendors, that I know of, but Ember community has the benefit of having a stable and consistently evolving framework. We learned a lot about the limitations of building component trees with JavaScript and expanded the expressiveness of Glimmer templating engine to make component composition easier. We have few higher order components like Ember Power Select that most projects use that make component composition very easy.

One of the things that I found most surprising is how I thought that some things were only available in Ember. For as long as I used Ember, I was always excited for the prospect of Ember Engines becoming a reality. Engines promised the possibility of packaging applications as features that you can mount into an application. When Engines were ready, I was telling everyone about them because I thought it made Ember special. I was surprised that Angular has Modules which are part of the Angular application blueprint.

Another thing that I found surpising was that no-one knew anything about Ember.js. Some people thought that it was a view layer like React, but that’s like comparing a sewing machine to a needle. When I described Ember’s feature set, most people were surprised by how complete it is. Most developers at ng-conf that I spoke to never looked at Ember before choosing Angular.

It seems that for every new feature that Ember community added to Ember.js, we should have gone out and given a round of talks at non-Ember conferences to raise awareness.

I enjoyed my time in Angular community. The community is wonderful, diverse and welcoming. I made a lot of wonderful friends. Angular team is doing many things right and with Google’s backing will likely catch up in any area where it was delayed by Angular rewrite.

I’m very excited about Angular and the contribution that it will make to the evolution of the modern web ecosystem. It will set the new standard tooling in frontend development. Angular will make modern web development accessible to enterprise developers who have a high standard for tooling and enable a new generation of creators with the Angular platform.

It’s easy to think that “awesome” is wholy owned by your community when you never visit others. It also makes it difficult for others to learn about the things you love. Try going to someone else’s meetup this month, learn about others and share what you love.

--

--