Javascript Frameworks: A futile attempt at objectivity

A personal view of the current state of JavaScript frameworks

I’ve written the same article three times now. The first was written essentially as someone advocating all frameworks uncritically. It featured blind support and unquestioning promotion. The second was someone slamming the frameworks overly critically. It featured goalpost shifting and misconstruing of framework goals.

The actual point was to raise the fact that all framework discussions involve subjectivity and “spin”, and acting like they don’t does no one any favours. Nevertheless, I found a few people using that post as some sort of basis for actual recommendations. I don’t think that’s helpful.

This version has something the other two don’t have: honesty.

Perhaps a better way to put it would be to be honestly subjective. I have my own biases and preconceptions, but I want to state them openly and then make a sincere attempt to discuss other frameworks. I’m also trying to discuss these not with reference to myself but to a large degree as whether I recommend them to someone learning.

This will be a combination of the previous articles, but it goes beyond just splitting the difference. Some “issues” previously stated aren’t really valid concerns, and some of the benefits are more theoretical than realised in practise.

I wanted to write this article because I felt that the conclusions people made were drastically different to the intent previously. So many people thought I was sincerely pointing out flaws in JS frameworks. I was told I should “make my own” or had people say “Finally, someone says it! That’s why I don’t use frameworks!”

I’m not going to argue my opinions here. They’re just that. I’ll happily engage with people, but there’s little point trying to convince me yet again that JSX is a good idea.

Angular 1 | Angular 2 | Aurelia | Ember | Meteor | React | Vue

Angular 1

Angular holds an interesting place in webdev now. The fact is, Angular 1 is still a commercial reality. If you look at Return on Investment (RoI) for technologies, the RoI of things like Angular are through the roof. While commentary and advocacy fall precipitously, the actual usage of technology by business are higher than ever. Its edge-case problems are solved, it has a wide range of tooling and knowledge, well documented with learning and training resources, and has a crapload of skilled and experienced developers in a pool.

Like many people, Angular was the first framework I learned - discounting jQuery which we called a framework in our ignorance. Like many people I don’t actually like Angular much, but I disliked it before it was cool.

I am not a big fan of its syntax, which modifies html to invalidity it its idiomatic form. My previous criticisms remain valid, Angular’s idiosyncratic patterns and terminologies are a bad idea.

But at least in my area, Angular and React are the only commercially viable frameworks. I’d love to advocate against learning it, but it’s simply not a reasonable option. And it’s certainly not just limited to legacy applications. Many agencies and organisations have yet to see any concrete benefit to upgrading their stack, and with good reason.

For agencies and commercial development studios that create a large number of smaller applications over short development cycles, Angular is hard to pass up. In that respect it’s a bit like Wordpress. It might be a bit icky (WP is well beyond a bit) but it’s just as hard to recommend anything else as an alternative to that use case with any sort of objective argument.

Despite what developers think you probably don’t actually really need anything more than OG Angular for the vast majority of applications. Though it’s slow, it’s honestly fast enough for well above the 80% case. Though it’s old, clients don’t pay extra for “modern”. As a known solution to a known problem, Angular is hard to beat. And as a bullet point on a resume, it’s similarly exceptionally valuable.