Don't like where v2 is heading

I came and i fell in love with the pure vanilla html/js syntax, no jsx no typescript, no decorators or bundling and build tool was necessary at first. any html you copy and use is valid html, no bullshit like className like react and jsx

At that early point I was also quite turned of by how slow it was to load a simple hello world example and how large the framework was (like 700kb!). took something like 2s to load a simple hello world example. so it never took of with Aurelia .

Time went by i come back and see a huge performance boost and a grate maturity and a grate reduction in size so i was ready to put my claws into start trying out Aurelia for a 2nd time

Then I read that there is a major v2 going on

And now all the docs/examples are in TypeScript and you use things such as public/private when you should instead be using # for real private fileds and you spew out @decoratros everywhere that isn’t part of the javascript language
and you use import with extension less path, don’t you know that it’s a bad practice and now considered as a anti patter and that javascript imports in browser require it to be explicit Even deno is more strict and explict about the path, even they require .ts in the end
i don’t use typescript and i don’t want to either it’s a made up language that don’t run anywhere without being compiled to javascript in the first place it’s just a wasteful JIT compiler that sits inbetween and needs to compile stuff and wasting your time everytime you want to develop something. it’s also unconventional in the way they invent new things on top on javascript when js already has it’s way like private class fields for example.

I’m glad that i never jumped on to the Aurelia train and witness it doing the same shit as angular 2.x did.

Your key selling point was
“Aurelia’s standards-based, unobtrusive style makes it the only framework that empowers you to build components using vanilla JavaScript. If you know modern JS and HTML, there’s little more to learn to build even the most complex apps.”

It no longer holds true for v2 you now have to learn typescript, decorators and being forced to use build tools. now i need to learn to do things in your way.

…and to that i say my goodbyes once again to Aurelia. glad i never wasted my time on it.

@jimmywarting I am sorry to see that you feel that way. Please note that although the docs are TypeScript-based, it does not mean that Aurelia2 is forcing you to learn TypeScript. You can still use it with vanilla JavaScript. If the public/private access specifiers bother you, you can always use the JavaScript syntax for that. Aurelia2 does not prevent you from doing that.

On the other hand, the decorator proposal is already in Stage 2 Decorators proposal. And I would argue that the decorator concept is not unique in TypeScript.

Lastly, I would like to ask you, is this only a code style issue that you didn’t like, or you have faced any specific issue with Aurelia2?

1 Like

Thank for taking the time to express your issues with where Aurelia is heading (v2).

If I read your post correctly these were your main critique points:

  1. Typescript (private/public)
  2. @decorator
  3. Import with(out) extension

As @Sayan751 noted, for 1. and 2., those are optional.
Seems like we have to do a better job in conveying this in our docs!

I can’t comment much on 3.

Cheers

3 Likes

Just for information, internally, Aurelia2 uses all imports with extensions. Aurelia2 is also ESM and as far as I remember, the choice of using an import path with or without extension is dominated by the type of module resolution and ecosystem around that.

Well, i can say that i’m in the frontline of cutting edge version of chrome sometimes running the beta version. I have worked with javascript in 12 years to know the in and outs of it, so i don’t need any typescript stuff in my life to help me with type errors, all doe i use typescript with checkJS + jsdoc, so it’s somewhat useful, but what can i say. I like buildless tools above everything else, i want to use script[type=module] everywhere and use import syntax supported nativly in the browser

I know decorators are on the way but it haven’t landed in the browser yet. i only use what is possible in the browser. i don’t like to waste my time on build steps. most often i develop for one browser (chrome or the beta version) and then when i want to release something only then do i downlevel it to something that is supported in older browser, i rather prefer babel over typescript for instances.

the biggest reason why i don’t want to bother learning aurelia now is b/c the docs are in typescript syntax. otherwise i know that i can use it without typescript but there is more things like

  • constructor(@IRouter readonly router: IRouter) { ← just super weird to me that don’t know typescript that well.
  • constructor(private router) {
    that has special things in typescript that also assign the this value with the this.router = router

i do think it’s good that you use typescript as it even helps with IDE, but i will never contribute to such repo cuz it’s written in typescript. I see it as just unnecessary… that’s all, I even created this article to express how much i don’t like or need typescript You Might Not Need TypeScript and how tired i’m of seeing more project being written in typescript…

typescript files are impossible to import from plain vanilla js modules and from any cdn, they always have to be compiled and be built to some larger older es3/es5 version of something, and it’s mostly bundled into one file so it is no longer code split friendly anymore

if the docs changes to be more vanilla JS friendly, then I might reconsider…

Sometimes i just want to find that new frontend framework that is still written in vanilla js to support it even more so that i can feel like i can contribute, but it seems like every darn things is being converted to typescript now… :confounded:

As a matter of fact, you can use Aurelia2 as native module in browser, my friend. Here is an example you might like: aurelia/index.html at master · aurelia/aurelia · GitHub. Know what? Give it another try, we can use your feedback :slight_smile:

ty, glad that there is a vanilla example.

Right now it feels like the docs is an obstacle since it’s mostly written to target TypeScript developer, cuz right now i have 2% knowledge of Aurelia.

for instances this decorator example

@bindable() size: string = '100px';

How can i use this without decorator?

I’m not on board with this decorator yet. if i can write aurelia application without having to compile/build things then that would be huge. I like rapid prototyping

I don’t want to bother having to try and strip out all typescript flavored syntax from the docs. I’m to comfortable with good old javascript and it’s here to stay, browser is never going to allow Typescript to run nativly in browser, it will only be wasm and javascript, chrome tried with dart when it was popular and it failed… so i always bet on javascript, i just see typescript as another coffeescript language

Glad you liked the example!

@bindable() size: string = ‘100px’;

Note that you can define the bindables using vanilla JS: aurelia/index.html at 65cb97e5cec1d4942436f5efc6b875f091f9c9ab · aurelia/aurelia · GitHub

it’s mostly written to target TypeScript developer

I mildly disagree here, since I think the knowledge is transportable to JavaScript as well. And as you would probably know and understand, that documentation and keeping those in sync with the changes is a huge undertaking. For Aurelia2 we have tried our best to keep the docs helpful and up to date. A lion’s share of that credit goes to @dwaynecharrington. We have paid attention to provide as much example as we can; even how to use the stuffs without decorator in some places.

However, as I said before this is a huge undertaking and maintaining the docs for both TS and JS only adds to that effort. This is where we can use the help of community. If you feel that the docs are lacking enough vanilla JS example, please consider creating PRs. We always welcome and appreciate community contributions.

Lastly, I would say that Aurelia2 is a solid framework, and if you invest a bit more time, you won’t regret it. Also, if you haven’t already joined the discord chat here is the link: Aurelia, you can leverage the help of the enthusiastic community as well as the core team member bit more easily when you need it.

Even if that might be true, type annotation may end up in JS as well. Just this morning, saw this proposal: A Proposal For Type Syntax in JavaScript - TypeScript