Why Aurelia Struggles to Gain Popularity


#1

I attended Framework Summit last week. It was better than I had anticipated - especially since Aurelia is my framework of choice. I learned more about other frameworks and I have to say I was most impressed with Vue.js.

I was having a conversation in the car with a co-worker and I think it became clear in my mind why Vue popularity grew so rapidly while Aurelia did not.

I feel most of it comes down to the “getting started” docs. Go to the homepage of each framework and try to put yourself in the mindset of someone brand new to web development. What do you see?

With Vue, you get a link to a jsfiddle example. You can see a script tag linking the vue.js framework, 3 lines of HTML and 6 lines of JavaScript. Wow!

In contrast, the Aurelia documentation begins by talking about getting set up and discusses build pack options, configurations, etc. The first step is to download some sample code, then I have to make the decision to use ESNext or TypeScript. I can see a beginner saying, “What? I only know JavaScript.”

I think what got me into AngularJS originally (and Angular fails at this now) is the ability to plug AngularJS into my project as a jQuery replacement and augment one page.

From the beginning, Vue makes this possible.

The core library is focused on the view layer only, and is easy to pick up and integrate with other libraries or existing projects.

I’ve wanted to do this with Aurelia on an old Django project to replace some slow AngularJS, but I struggled to get it to work and eventually gave up on it.

I’m curious to hear others thoughts on this, and perhaps what we can do to help make Aurelia more approachable to build the community faster.


Where do we go from here
Where do we go from here
#2

You are not alone, many Aurelia proponent believes the same. Aurelia with its limited resources tries to do everything.
Aurelia also suffers from a lot of technology it depends on, which changes all the time and breaks many of Aurelia setup and features. It’s very frustrating. I myself if you see Discourse/gitter channel had issues even setting up a basic startup app for Asp.net core.
I am looking to create myself a sample app on Microsoft technologies where you can download it and start building. Let see…


#3

There needs to be a very simple, online example that shows off Aurelia’s main capabilities.


#4

I think for vNext we have an chance of a fresh start and maybe exactly the easy ramp up is going to help there. Remember Vue1 didnt have a lot of traction, it was V2 that kicked up


#5

Aurelia’s initial documentation was terrible. Coming from using Durandal, a lot of the concepts and basic API would have been familiar, but for a new user, the experience was not great. It never really recovered from that.

Trying to be too clever and taking an age to build a poor app for the documentation rather than just writing a set of simple, search-friendly web pages was - and continues to be - a major fail.

Initially using unsearchable Gitter was another barrier to users getting meaningful help in a timely way. Not having any meaningful traction in Stack Overflow made Aurelia anonymous in the early days - again, it has never really recovered.

I am looking forward to seeing V2 - if it ever makes it to release. However, it could be double-edged. Once V1 is end-of-life, current users will be re-evaluating everything else - not just V2. Other, more mature, better documented frameworks will be in play. It won’t just be a case of trying to attract new users. The challenge will be retaining existing users already bitten by some of the less good experiences with Aurelia (there are many positives, but people remember the bad stuff).


#6

The above was a bit negative.

One positive suggestion. Aurelia needs a reference “big app” example, written by the core team. A shopping cart, or something substantial to show what it can do - and how easy it is to build something non-trivial. The one in the Auerlia in Action book is good. But if something like that was part of the documentation - that would really show off the capabilities, answer a lot of the “what is best practice”, “how do I do that” type questions.

Now having aurelia-store as a core component fills a big gap in how to manage state in a large-scale app. And the examples there are excellent (thanks zewa666). Putting all of it together in one comprehensive demo would really show off Aurelia at its best.


#7

Thanks for all the feedback everyone! Our core team, over the years, has come to much the same conclusions. We don’t like to repeat our mistakes, so we’re working in various ways to address these with vCurrent and vNext.

For vCurrent:

  • Single Script File - We’re working on a single file, script-tagable build for Aurelia. When we started work on Aurelia, we thought module loading was going to go in a different direction than it did and we made some decisions at the beginning that made it difficult for us to produce a build like this. Over the last several months, we’ve been making incremental changes in the framework to prepare the way for this. @bigopon has completed most of that work and is now working on the UMD build, which will be distributed on CDN. This will enable easier use of any sandbox environment, like jsfiddle.
  • Tutorials - In parallel to this, we’re working on official sandboxes for codesandbox.io and others. Once those are ready, we’re planning to completely revamp our getting started experience to use embedded sandboxes, making getting started a dependency-free learning experience. We’ll also be embedding live sandboxes on the homepage and other parts of the documentation.
  • Documentation - Everyone has different opinions on this but it’s always something we’re trying to improve. I can’t go into details about why certain things were the way they were in the beginning. There’s a long, unpleasant story there. I think it’s improved quite a bit and you can see continued work going into the new docs particularly with the new CLI docs and with things like the State and i18n plugins.

vNext

  • Single Script File - We’ve already got a single script file build working for Aurelia vNext. We made sure to design things from the beginning to enable this. Furthermore, our full e2e tests run against the single file build as well as cli, webpack, browserify, parcel and fuse bundlers. And the good news is that no special plugins are required for any of that. So, we’ve improved and expanded integration with other bundlers already.
  • Documentation and Tutorials - Most of the content from vCurrent will migrate but we’re going to re-organize it so it’s easier to have a learning progression. Additionally, we’ll be out of the gate with inline runnable tutorials based on the work we’re already doing for vCurrent. Beyond this, we’re committing to writing Engineering documentation so that people who want to learn how the internals work and contribute more deeply will have a resource to help them out there. At this point, I should mention that we’re working really hard on having better low-level APIs for advanced scenarios which will also be fully documented (the state of this in vCurrent is pretty bad, unfortunately, but won’t be for vNext).
  • A Big Aurelia App - We’d like to do this too. It’s a ton of work for the core team to take on. I’ve got apps I built for my training courses. I’ve been considering making those open source. We’ll figure something out for this though. It’s definitely needed. Worst case scenario, I’ve got an extremely large project I’m building on the side that I’ll probably open source…but it might be too big :wink:

We’ve got other things in the works for vNext that we think will help, including a free, online conference. We’re working through the details of things so we can be strategic about addressing this issue for vNext.


#8

Here is the newest PR that help with using Aurelia the jQuery way. https://github.com/aurelia/script-tag/pull/11
I’d love to have your feedback on that. There are some final touches for it needed related to loader.

Edit: updated with example https://github.com/aurelia/script-tag/pull/11#issuecomment-429827981


#9

I think one important thing, that is somewhat sorted out, is the possibilty to create plugins and publish to npm. With some effort I could find som excellent examples on how to do this. The point is that the day you as a developer put Aurelia in the center of your development, you want to find 1000nds of addons ready to use. I guess many developers run in to this:

  1. Download the cli and create a new project, easy(!)
  2. Get some data from an external API and display on screeb, easy(!)
  3. Try to find an HTML-element, calander for example. You find 2 and you get none to work.

A Calendar might be a stupid example, but you get the point.


#10

I think the documentation for plugins is absolutely horrendous. Doesn’t event exist on this site, or at least isn’t easily found.


#11

Great news.
I want to extra-support the concept of a single-script-file for fast prototyping.

region crazy-idea “aurelia-ice”

How about creating an optional super-opinionated “something” called e.g. “aurelia-ice” (or aurelia-eis) :slight_smile: that would over exaggeratedly focus on the minimisation of the easiest possible hello world scenario that would demonstrate just the binding concepts of aurelia.

Nobody questions the full potential of aurelia, but I feel that some people never make it over the entry barrier. So lets remove even “.standardConfiguration() .developmentLogging()” and other “characters” from the shortest possible fist example.

Let’s think about super opinionated aurelia app that fits into a tweet!
I would retweet it :slight_smile:

endregion crazy-idea.

Is it too crazy?

Have a good day.


#12

Re: I think the documentation for plugins is absolutely horrendous. Doesn’t event exist on this site, or at least isn’t easily found.

Agreed. The best I’ve found is on github.


#13

Its not too crazy and easily doable. But we already have what we want via similarly simple index.html and 2 script tags


#14

I am also looking towards Aurelia as a complementary frontend for Django, as they seem to follow similar architecture. However, I am hoping to augment Django templates/router with Aurelia components, rather than replace the whole frontend. A lot of work has gone into the Django framework view and template layers, which I hope to use in conjunction with a JavaScript frontend framework :sunglasses:


#15

Another issue is that you cant find any admin themes that can work with Aurelia.
I struggled a lot to get adminlte work with Aurelia until finally moved to Angular.
Aurelia is beautiful and clean but something seems missing.


#16

Admin themes…
Why no body mentions of Aurelia when it comes to this aspect. You see everything except Aurelia.
Why?


#17

I’ve never quite understood the admin theme issue, which I’ve seen raised a few times. For me, “theming” an application has always, should always and is always independent of the library/framework you’re using to build the app. We use https://coreui.io/ in an Aurelia app, but we tried a few different template systems before settling on that. I know a lot of admin templates say ‘for Angular’, or ‘for Vue’, but they almost always have a javascript/html5 version that’s easy to use. It’s just css, after all. Or am I completely missing the point?..


#18

I’d love to see what’s the common issues integrating Aurelia with a Admin themes as well. Maybe there are things that can be improved in that aspect that the team has been missing.


#19

I agree with you, most things should be plug and play if they are just html/css. I wish everything would go true module based though but that is not a fault of Aurelia.

I personally HATE that companies, such as Telerk are making specific controls for other platforms like Angular instead of focusing on a new standard set that anyone can easily work with.


#20

That doesn’t meant here can’t be a “ready to go” Aurelia application theme for developers at a different experience level. I kind of like the idea.