Why Aurelia Struggles to Gain Popularity

Thanks for the reply. If there are problems running Aurelia on stackblitz, then this says more about Aurelia than stackblitz. (however I don’t think this should be the case, and we should have an Aurelia stack available, and we should have a big button on the front page) Either way, if we are going to “prefer” codesandbox.io, that’s fine, but we should NOT be leaving behind stackblitz (and others like it).

As a front-end developer, the more places I go and I see Aurelia (right up front like I see Angular), the more it will help Aurelia gain popularity with the general population. I think there needs to be a dedicated effort to have Aurelia sit side-by-side Angular on all of these sites, not just stackblitz.com

Let’s separate performance from functionality. I wouldn’t want to see an example of the nice else syntax in the midst of 200 lines of super-fast virtual list sorting code. That mixes the message of simplicity and usability with that of complexity.
As I mentioned earlier, the cheat-sheet was an absolutely awesome source of assistance. I pushed and pushed for a moderated forum system like this about three years ago, to capture the enormous sample and advice knowledge-base that so many people were giving in the Gitter channel and collate that into an FAQ style repository, but it just didn’t happen. I suspect that is now part of our acceptability issue.

Perhaps a sensible thing would be to have a simple app with hundreds or thousands of snippets. I search for “binding” and see a list on the left with one-way, two-way, custom, properties, ref, etc. and clicking on one shows a simple code snippet on the right. Not a huge project, just a snippet like we have in the cheat-sheet.
As with any advanced framework, it’s too difficult to search through thousands of pages of doco to find a basic feature, and let’s be honest, when people do a Google search for “Aurelia accessing a DOM element”, the first match is a Stack Overflow answer, and the second a link to a 404 page error on the official doco.
Very few searches expose the official documentation, and the search feature in the doco pages on the hub is no Google.
We have the option to include a link to GistRun (or whatever the current monthly favourite sandbox environment is), but that’s not essential for most snippets. I think the key thing is to create a set of examples that are a pyramid of complexity, with five hundred really simple snippets of one or two lines, and a decreasing number of more complex examples for people to move up to as their skills improve and requirements are realised.

5 Likes

I think @jsobell is right. I’ve been using Aurelia since it was Durandal. Even having used it for so long there are times that I just need an example of functionality to “refresh my memory” so I know exactly how to use it. A google search usually takes me to stack overflow, and sometimes the answers there are out-dated.

In an ideal world, I should be able to come to the doc site, start typing what I’m looking for and like Google, immediately see headlines along with small-text showing the exact context/syntax I need on how to use or interact with any piece of the framework I have searched for.

I should be able to quickly scroll through the headlines until I see my exact use case or something that matches what I’m looking for. Once I’ve found the area I’m looking for I should be able to click to see all the various ways, starting from beginner to advanced, of achieving what I’m trying to do within this particular space.

More of an interactive cheat-sheet, that is the be-all, end-all, authoritative source for Aurelia. Always up to date and not just for syntax, but also best practices, patterns, starting from the surface and going all the way down to the low-level API usage etc. i.e. @jsobell’s thousands of snippets, where each snippet is the bare minimal example showing off the particular subject matter.

For as long as I’ve been using Aurelia, I feel like the low-level functionality (where Aurelia really hides its power) is put off and not very clear on how to really maximize the low-level bits. I.e. while the document site gives me examples of how to use or do something basic, the API side really is just for reference and doesn’t really show examples of how to interact with low-level bits constructively. (For this I would need to look into the source code and try to figure out what this piece of API actually does and when/where to use it etc… who has time for that?)

The new documentation site should be a place where the beginning user could gravitate towards simple use cases (binding/else/ref/etc), and the advanced user could learn how to use Aurelia at very low levels to achieve those really cool advanced use cases; all of it laid out in such a way that the user could snap code examples together like Lego bricks quickly achieve what we’re trying to do with Aurelia (regardless of complexity).

I think a first-class documentation site along these lines would go a long way towards increasing the popularity of Aurelia. I think opening up the low-level bits would increase community involvement. Make it easy for me as a developer to get in, get out, all the while making it super easy for me to contribute.

Along this vein, I could also see something like bootsnipp.com but for Aurelia where a user can search for and find higher-ordered components, generators, attributes, plug-ins, etc. as a way to help speed up Aurelia development. With a rich resource like this, enterprises and devs alike would flock to Aurelia.

– And why not. It’s like that old commercial for Rolaids… “How do you spell Awesome… A.U.R.E.L.I.A”

5 Likes

I’m a dev for an Australian government department. We currently have 90 Durandal single page apps that are used by millions of users.

I’ve been trying to convince my co-workers to move to Aurelia for years, but it is hard to fight against the mindshare of Angular. A surprisingly big issue for me has been that it is not clear that Aurelia is essentially “Durandal 3.0”. That makes it harder to sell to management.

It is also quite difficult to get Aurelia up and running within our constraints. We have a test harness for our Durandal SPAs that can launch any single SPA with one build chain. I’m currently trying to figure out the best way to structure and boostrap Aurelia SPA projects so they can reside within the same codebase (without having a seperate node_modules folder for each Aurelia SPA).

That said - Aurealias binding syntax and common sense is light years ahead of other frameworks.

14 Likes

A surprisingly big issue for me has been that it is not clear that Aurelia is essentially “Durandal 3.0”. That makes it harder to sell to management.

A problem only management would have, as a quick look into some Aurelia applications would show identical code. We briefly held onto the Durandal brand, but wanted to distinguish Aurelia a separate product since we were no longer relying on third parties like knockout for core functionality, but had build core functionality from the ground up.

I’m currently trying to figure out the best way to structure and boostrap Aurelia SPA projects so they can reside within the same codebase (without having a seperate node_modules folder for each Aurelia SPA).

An issue that has more to do with modern JavaScript development than Aurelia, Angular will suffer from the same difficulties. Typically you would solve these issues at the module loader level, but with any of these tools it is possible to build a pre-built Aurelia bundle that each of your SPAs could depend on, ala a Durandal-style scripts folder. Jeremy Danyow has included some such bundles for use in gist.run demos, like this one: GistRun

That said - Aurealias binding syntax and common sense is light years ahead of other frameworks.

We like to think we’re lightyears ahead of other frameworks by a few metrics. Additionally, we offer official enterprise support and services, which Google will never offer. Official is important here because interests are aligned: Aurelia only wins if you win. Angular consultants win so long as they get paid.

I hope this can help bring management around. If there’s anything we can do to help the cause, follow up here or reach out to one of us directly.

10 Likes

Speaking as someone absolutely new to Aurelia, but not JS frameworks (ExtJS?, jquery?), I would like to add that it’s super frustrating when the Quick Start leads you to an really simple error - the fact that the file name extension is wrong on the site or in the config file for Typescript. Never having used Typescript, I did not realize the error until I looked in developer tools in Chrome saw Aurelia was trying to load main.ts and not main.js (like instructed in the website).

Here’s what I found and after renaming my files, all works as expected:

I wonder how many other newbies to Aurelia and JS frameworks got super frustrated and just gave up on it? I almost did. I was heading to VueJS when I read a statement above about Aurelia using straight up ES6 or TS. That got me thinking Aurelia may win over VueJS. Sometimes it’s the little things that can make or break something. This is a little thing, a filename extension, but it caused a whole lot of frustration for me until I finally figured out the issue.

I hope this post helps some other newbie out there like me before someone fixes the website (or config file).

7 Likes

Thanks for the feedback @Digitalman42 ! We apologize for the frustration. We’ve been over those tutorials so many times, I’m surprised that slipped through. I’ll get that fixed in the next docs update this week.

6 Likes

A fix to the site docs has now been deployed. Thank you again for alerting us to the issue @Digitalman42.

4 Likes

Wow, that was fast. Thanks much!

Working fine now and I’m glad I stuck with Aurelia because it is super easy to learn and use. I’m rediscovering my love of UI after years of server-only work.

11 Likes

I’m rediscovering my love of UI after years of server-only work.

This ^

You’re not alone! Aurelia converted me from backend developer to frontend developer. I avoided frontend work like the plague for years, but Aurelia made it fun :slight_smile:

5 Likes

I’ve had a quick skim of the above, hopefully I’m not going over old ground but here is what I am experiencing. Please don’t take this personally, it’s just feedback.

I love the idea of Aurelia and the docs but struggle to get a basic app set up (30+ years in dev) due to…

Webpack, Node and NPM - I loathe these systems. Every time I use one of them, it breaks with a vague error. It feels like trying to compile an ancient C++ codebase. It gets very depressing.

I appreciate these are necessary and required, but they are also painful. I can waste days trying to get the basics working and when I do, have I done it right? Then I need to get it working on the build server and the other team members’ computers.

I think Aurelia itself is great, it’s the dependencies I suffer with and these reflect badly on this excellent framework.

Mini rant; right now I’ve tried several times to get ‘npm install’ to run after discovering I need to do this, it kept flaking out with;

  • Connection issues (bad broadband) causing a package to get corrupted and cached locally. Clearing the cache states ‘you don’t need to do this, it is self healing’ but it’s not. I had to use -force to do it and then get told ‘I hope you know what you are doing’. Retry install several times to get it to go through.
  • Permissions issues. Install states something like ‘You shouldn’t need to run this as admin’ but it lied, again. Did I do something wrong? I’m just following the instructions.
  • Tons of warnings. Have I done something wrong, is this going to blow up on me? For example, ‘npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try this instead:’ does not make me feel good. I’m installing deprecated stuff?
  • Security warnings about packages (just the test packages though). Am I installing backdoors? Attempt to fix and it says I have to do it manually as they are probably breaking changes. So I either install security flaws or hack / force package upgrades which may not work.
  • A package maintainer looking for a job by outputting colourised text in the console. I agree, they need a job and open source needs funding, just get out of my console!
  • Many warnings about being unable to find optional dependencies due to it wanting to be installed on osx.

Node / NPM is a horrible experience. I want to give up but I’ll keep going for a few days more.

In my ideal world I’d just include a single js script. Now I’m off to troubleshoot another build error from Visual Studio on a brand new project created by the cli.

Summary: Keep up the good work, find a way to ditch the horrible js ecosystem (might not be practical, I know).

Ryan

4 Likes

@RyanONeill1970 Aurelia has an official solution for this: https://github.com/aurelia/script

With that, stick a <script src='https://unpkg.com/aurelia-script@1.4.0'></script> to your html, and then:

/* if your app root is at app.js and app.html */
au.start()

or fully configured:

au.start({
  debug: true,
  root: 'app.js',
  host: document.querySelector('#app-root')
})

For more info about usage, please refer to the repo documentation :smile:

Thanks, I did see that. I interpreted it as ‘you can start by using script, but you’d really better use a package manager’ before long. I’ll give that a go.

1 Like

The only thing it requires is a webserver :smiley: , if you are loading module dynamically (use string as filename)

I spent the winter working from an AirBnb in a country with what I often described as “severly neglected infrastructure”, so I feel your pain!

I had much better luck using yarn with its offline mirror feature enabled. I have no idea why package managers don’t fallback to local mirrors by default :man_shrugging: .

The above setup has the added bonus that subsequent installs work completely offline which can be handy during flights or any other times you want to work with no connection. You will find that many packages also download binaries, etc in their install scripts but all the well behaved ones will cache locally too.

If you find any packages that don’t cache binaries or won’t install correctly offline, let me know and I’ll submit some more PRs. Plenty of developers forget that half the world are not on reliable, fast internet connections!

1 Like

@bigopon - Don’t you have an aurelia script builder somewhere where there is an interactive list of aurelia framework items that you can pick and choose and emit a customized js file?

1 Like

As a former backend developer (C#.NET), I can definitely relate. My first few weeks (maybe even months) with Aurelia, back when v1 was still in alpha, were full of missed deadlines due to all kinds of Windows-specific friction. Changing specs, rapidly changing bundler ecosystem, the horrors of node-gyp, it goes on and on.

The only redeeming thing was when things did finally work, it was an absolute blast to work with Aurelia!

Things have gotten better in the last 2 years but open source maintainers will never stop pushing breaking changes or causing random mayhem at the most inconvenient times for one reason or another.

In the past year of intensively working on v2 of the framework almost day-in, day-out, trying/using/ditching dozens of popular (and less popular) tools to aid with various pieces of automation, I gained a pretty detailed mental map of how things move, evolve and interact in the npm landscape.

And I can tell you it is not pretty. In keeping everything up-to-date all the time, on average every 2-3 weeks something somewhere in the build/bundle/release process has broken. Sometimes the remedy was a simple 5 minute fix, sometimes I lost a weekend, and once or twice I had to rewrite half the repository to accommodate for some major player suddenly deciding to take a new direction.

So in v2 we are cutting out as much as we can, hand-rolling stuff wherever possible.
This is for our own sanity after years of witnessing how just about any setup inevitably dies somewhere between 6-18 months after its inception.

Yes, things will be getting significantly better, more stable, more suitable for commercial purposes where there is just no time to deal with build processes breaking every few weeks.

9 Likes

Overall it depends what type of Web apps you are developing:

  1. Content Website.
  2. Business Web apps
  3. Enterprise business apps.

For light ones like content Website or simple business apps, probably a lightweight framework with some “flexibility” may be more appealing. For enterprise business apps with rich user interaction and complex business logic, a heavy framework with a lot predefined structures and components such as Aurelia and Angular could be more efficient and effective, especially when you team has no dedicated UI/UX designer and could not hire the top 5% JavaScript developers in the world.

Aurelia could be embarrassing sitting between vue.js lighter and Angular 2+ heavier. From certain point of view, this is really depending on human resources and the type and size of the product to be built, presuming all teams in the world had made the most optimal choice for their own contexts.

2 Likes

There are enough good points in this thread already.

What I’ve really appreciated is Aurelia’s opinions and the extra level of detail provided to get more than just the framework sorted. There are lots of things I have a vague understanding of but don’t know quite how to solve in JavaScript land around software development; bundling, testing (unit, integration, e2e), continuous integration, etc.

I like being able to see the thoughts around what was chosen and why, and then how it is used internally within Aurelia. I’ve enough experience that I’ll know it when I see it and really I just want to solve my business problems so I’m happy to leveraging someone else’s expertise.

4 Likes

I work for a government department with about ~40 devs in my area.

Our user counts are measured in the millions and we have 100 Durandal SPAs in production.

We are selecting a new framework. We narrowed our choices to Angular, Vue, and Aurelia. The problem I’m having with Aurelia is that there is no “killer feature” I can use to recommend Aurelia over the other frameworks. My coworkers have serious reservations about selecting a “niche” framework.

I like Aurelia’s convention over configuration approach, and the sensible binding syntax - but in Angulars case we can learn the binding syntax quickly, and the cli takes a lot of configuration issues away.

Also - nesting a component in a table based component was really painful in Aurelia.

2 Likes