When it comes to frameworks and libraries, developers have never had so much choice. So understandably, it can be hard to convince a developer one option is better than the other.
Most front-end developers who have been around for at least 4 or 5 years most likely have the same backstory, going from jQuery to Angular, then possibly ReactJS shortly after.
Admittedly Aurelia isn’t supported by a mega-corp with endless troves of cash, but that doesn’t mean it isn’t worthy of being at the top. The Aurelia framework is backed by a company founded by Rob Eisenberg which funds itself through consulting, workshops and paid training materials.
Before jumping to conclusions, I implore you to give this article a read and then decide if Aurelia is right for you.
In January 2017, Aurelia will turn two
While many new faces discovered Aurelia in 2016, it might surprise you to know that Aurelia was officially announced January 26th, 2015, two years ago.
There was an alpha period, followed by a beta period and then release candidate before it went stable in mid-2016. Learning Aurelia in 2017 means you get to work with a stable framework, the best possible start.
Front-end development has a bit of a reputation for fly-by-night frameworks and libraries to disappear before they hit a version 1.0, so for Aurelia to hit v1 and then continually improve as well as add new features, that in itself is a big deal.
While libraries like React tout features like the Virtual DOM, they also come with the added baggage of promoting alternative non-standard abstractions like JSX syntax. Even the Angular 2 team wrote their own custom HTML parser, eschewing the HTML standard in their quest to enforce case sensitivity in HTML.
Aurelia heavily leans on the ECMAScript 2015 release for its core, specifically classes and module syntax (import, export, default). Custom attributes, custom elements and view-models are all classes. Also leaning on an upcoming ECMAScript 2017 feature, Aurelia utilises decorators extensively, although they’re not required.
The beautiful thing about learning a standard is if you decide to move on from Aurelia in the future, you aren’t throwing away everything you just learned, as many Angular 1.x developers experienced.
If you’re worried that learning Aurelia means you’ll get left behind or find it difficult to get a job, don’t. Aurelia is not an abstraction, it’s based on real standards. Unless you’re specifically applying for an AngularJS or React job, then the obscurity of Aurelia shouldn’t be seen as a downside, it’s actually irrelevant.
It’s fast & lightweight
Even though Aurelia doesn’t have a Virtual DOM implementation, it has managed to outperform React in benchmarks performed. In-fact, Aurelia manages to beat out many of its competitors.
Don’t believe the hype, there are other ways to achieve the same thing as DOM-diffing (which is what the Virtual DOM is) through the use of asynchronous binding and batching changes.
Essentially Aurelia implements a reactive system in which every step is taken to ensure dirty-checking is not used and that things only happen when changes are made. Reacting to changes in terms of performance is much better than DOM-diffing, which is why Aurelia is so fast.
The overall size of Aurelia is quite small and there are options for developers to reduce the size even more by removing modules, lazy loading bundles, code splitting and more.
Convention over configuration
This might come down to personal taste, but Aurelia takes a convention over configuration approach. If you’re not sure what that means, it means by default Aurelia makes some assumptions about how you want your application to work.
In my experience, the default conventions will meet your needs nine out of ten times. However, if you yearn for more power through configuration, you can also be explicit in how you create your applications. This is a unique selling point because most frameworks/libraries go one way or the other.
Dependency Free & Modular
The Aurelia framework uses no third party dependencies. Even the polyfills Aurelia uses are in a package called “aurelia-polyfills” and every facet of the framework is broken into a separate package.
This means that Aurelia isn’t beholden to third party packages and individual release cycles and the Aurelia team can coordinate and release fixes/features to all facets without any friction.
The modular aspect of Aurelia means if you don’t want a router, don’t include the router package. If you’re not interested in the pub/sub event aggregator, don’t include it. If you’re using a different binding package, don’t use the Aurelia one.
I personally use TypeScript/Webpack together for large applications and for proof of concepts/quick applications, I use the Aurelia CLI (which uses RequireJS).
A supportive community
Every framework and library has a community. While Aurelia’s community arguably pales in comparison to Angular or React, it isn’t any less passionate or helpful.
The official Aurelia Gitter channel is a great place to get help. All of the core members hang out there and routinely engage with the community. Even Rob (the man himself) can be seen answering questions and speaking with developers in the community.
How many frameworks can you name where the actual lead architect engages in conversation with the community quite actively? I don’t think this reflects on the framework itself, but rather reflects the passion of the people behind the framework.
If the fact that Aurelia has been around for two years isn’t indication enough, Rob Eisenberg (the man behind Aurelia) started a company to support Aurelia called Blue Spire (formerly Durandal LLC). We mentioned this earlier, supported by consulting, workshops and paid training materials.
Rob has personally invested his own cash and time into Aurelia, it wouldn’t make any sense for him to just give up on it all. I actually think the fact that Rob is so personally invested in Aurelia is reassuring, you know it’s not going anywhere.
A small, but agile team
While the team behind Aurelia might be smaller than most, I see this as a positive. The whole process underpinning Aurelia; new features, bug fixes and pushing the framework forward is incredibly agile.
I have worked in both small and large workplaces and without fail, the smaller workplaces get more done in shorter timeframes than larger companies marred by bureaucracy and red tape, with more rigid processes (even the ones who claim to be agile).
I am fortunate enough to be privy to many of the details behind the scenes of Aurelia. If you could see what I see, then you’d be in awe at just how much a handful of developers working on the core Aurelia framework can get done.
I am not telling you to drop everything and use Aurelia or to impulsively change from Angular or React. On the contrary, you should be making informed decisions based on your needs.
All this article aims to do is the next time you’re deciding on which framework or library to use, to put Aurelia on your list and give it a chance instead of defaulting to Angular, React or Vue.
I think Aurelia is incredibly underrated and whether you decide to give it a glance in 2017 or not, I think its popularity will continue to grow as people yearn for simplicity and stability in their web applications.
We the front-end developer people, have enough to worry about as it is with volatile tooling without needing to worry about learning the latest hype.js abstraction.
I strongly believe that as more and more developers realise we have these great standards and that the instability and dark days of the web are behind us, Aurelia will become the natural choice.