RoR is the best framework/library I've ever used. The opinionated nature and well-thought out architecture is unrivalled in my opinion. Unfortunately Facebook had to ruin the party with their garbage-ass take on web components.
I think it is interesting where the web is heading and where react.js and next.js are heading. Back to server side rendering, static pages/resources. All things we did about 10 years ago with Rails.
In my opinion we went the wrong way with JavaScript to a degree. SPAs (single page apps) where overhyped and we tried to solve problems with it that would have benefited from just plain old web applications. Now instead of sparingly using SPAs and going with traditional web apps we are sort of developing our modern SPAish frameworks in the direction of traditional web apps.
I agree that we went wrong with JS. We've just made the best of the the garbage tech we were given (XML, CSS). At the end of the day, the web was designed for serving documents. I think the whole idea of web applications needs to be reimagined at some point. Something like a browser that serves bytecode. Maybe WebAssembly will take us there but it's honestly ridiculous the unnecessary complexity we deal with to solve simple problems.
Don’t get me wrong. I think there where places where JavaScript, SPAs and so on where the right decision but we used the same tech all over the place. I think that is the negative impact of working in a future oriented industry and one of the reasons you might want some older people in your team to prevent new projects to be started on new tech JUST because it is cool now.
But even within the JavaScript community and the tech there I sort of like Ember.js and it grew out of the Ruby and Rails community. It is not perfect but it fits SPAs perfectly and there is integration into Rails that makes the data handling less tedious (still need to try because unfortunately I got none ember projects + rails or ember + node.js).
If I take my none Ruby and none Rails experiences of the last years I have to say I trust tech that comes from Ruby and Rails guys in other techs more. You can accuse me of Ruby chauvinism but I do believe that we as a community where better able to foster good taste in technology solutions.
Ember is pretty nice as a framework but the harsh truth is the community barely exists. As an Ember noob the fact that many Stackoverflow answers on Ember are outdated (Ember has changed a lot between versions), and many things are simply not answered or blogged on, is a massive productivity hit.
Our company is now stuck with Ember, not happily married to it.
You are not wrong, there where a lot of changes over the 3.x time frames and the info you can find online is often out of date. The community is small and most people are more interested in React, Vue or Angular. I still hope that something can be done since when it comes to SPAs I think Ember is a better solution than React, Vue or Angular.
> I think the whole idea of web applications needs to be reimagined
I'd argue this is what's happening with mobile apps. It isn't hard to imagine the majority of consumer-facing applications delivered by mobile or tablet first, with a web app as secondary or even some vendors skipping entirely.
Isn't this the same as last year's "Why Ruby on Rails Is Still a Good Choice in 2021?" and "Why Ruby on Rails Is Still a Good Choice in 2020?". At least this version bump complies to SemVer, contrary to rails.
I don't know Ruby on Rails but i would love to learn it at some point. At my job we're creating some internal tools that are 95% CRUD and we're using JavaScript for everything. Vue.js/Nuxt.js/Vuex with express.js(on docker) and a shitty "headless" CMS (strapi) with MongoDB for backend. It sucks. We're writing hundreds of LOC every day just to create some simple forms. Our tech stack is so fragmented that makes it difficult to make changes and cooperate in our team. A simple thing like a <select> or <datalist> html element is re-implemented in a vue.js UI library and across 3 different files in Vuex. On the backend the story is even worse. Strapi is very limiting and it's not designed to be extended with custom business logic so we have to rely on custom solutions from scratch. Rails appears to be the best solution to our problems but our CTO only likes Javascript i guess...
I feel your pain (literally since I am currently in the same boat with). Yes Rails would be a perfect solution for the CRUD work you have. Hell Django probably would be a good solution too.
Unfortunately it was “clear” 8 years ago that JavaScript is the “future” and I think at latest 5 years ago everybody got the memo.
Right now I think it is “clear” that the “future” we build with JavaScript has gone horribly wrong and I see some of us reevaluating the tech stacks we came from (Ruby on Rails, Django…) and some doubling down on JavaScript with SSR (server side rendering) and static pages in JavaScript Frameworks.
It maybe a good framework for writing applications, but since so much of the tech industry has run away from it for years it hasn't kept up on other areas like deployments and debugging. Lots of things are 3-5 years old.
I also liked it about eight years ago, but the developers still using it like to use all the sugar and auto-magic. Which leads to spaghetti code.
Full stack frameworks such as Rails, Laravel and to a lesser extent Django (because the frontend part of it is inexistent) are what we need for 90% of the cases. The other 10% being offline first apps, and extremely highly interactive apps such as Google Maps or Figma.
Nowadays we have *awesome* ways to do frontend in these full stack frameworks, such as Hotwire/Turbo, Livewire, HTMX, Unpoly, Alpine.js, etc.
The same JavaScript is not your grandpa's JavaScript anymore, traditional MVC apps is not your grandpa's MVC apps either.
And no, Next.js + Prisma, Remix, etc... ARE NOT full stack frameworks despite their claims. They're cobbled together third party libraries all around which just allow you to submit a form to a database. That's not full stack. You need a way to do authentication, authorization, sending emails, translations, command line tasks, background jobs, input validation, caching (and many, many more things).
Why do we do SPAs? Because we as developers want to have the only one "true way" of doing things, so given you can build almost anything with JavaScript, then we want to use JavaScript for everything even if it is not the best tool. It's like when Redux showed up: suddenly *everything* had to go into redux, because that's "the way".
I've been a professional developer for about 18 years, I worked a lot with python (django), java (dropwizard) and the last 8 years or so mostly focused on frontend with JavaScript, last few years doing a lot of React (Next.js) and Vue (Nuxt.js). Playing with Sveltekit.
I love JavaScript and it is what pays my bills nowadays, but we need to realize that the tools and ecosystem (frameworks, libraries, editors, etc) are WAY more important than a language itself.
Nowadays I'm doing a side-project with Laravel, and learning PHP (as a consequence of wanting to use Laravel) and I'm finding it incredible powerful and productive. I like it a lot more than Rails, and certainly much, much more than Django. I can do html components in the server, I can add behavior with Alpine, if it is a complex one with LiveWire, and if I want to do SPA like page transitions across pages I can use Unpoly. And I can trust the next person picking up the project will have a decent documentation (Laravel's official docs) which is something you don't have when you cobble together your own library salad.
19 comments
[ 5.7 ms ] story [ 62.6 ms ] threadIn my opinion we went the wrong way with JavaScript to a degree. SPAs (single page apps) where overhyped and we tried to solve problems with it that would have benefited from just plain old web applications. Now instead of sparingly using SPAs and going with traditional web apps we are sort of developing our modern SPAish frameworks in the direction of traditional web apps.
But even within the JavaScript community and the tech there I sort of like Ember.js and it grew out of the Ruby and Rails community. It is not perfect but it fits SPAs perfectly and there is integration into Rails that makes the data handling less tedious (still need to try because unfortunately I got none ember projects + rails or ember + node.js).
If I take my none Ruby and none Rails experiences of the last years I have to say I trust tech that comes from Ruby and Rails guys in other techs more. You can accuse me of Ruby chauvinism but I do believe that we as a community where better able to foster good taste in technology solutions.
I'd argue this is what's happening with mobile apps. It isn't hard to imagine the majority of consumer-facing applications delivered by mobile or tablet first, with a web app as secondary or even some vendors skipping entirely.
Lol I think I like you
Unfortunately it was “clear” 8 years ago that JavaScript is the “future” and I think at latest 5 years ago everybody got the memo.
Right now I think it is “clear” that the “future” we build with JavaScript has gone horribly wrong and I see some of us reevaluating the tech stacks we came from (Ruby on Rails, Django…) and some doubling down on JavaScript with SSR (server side rendering) and static pages in JavaScript Frameworks.
I’m afraid “the ride” will continue for a while.
The tools have evolved, even if ROR brought a lot to the table.
Speed is now a first class feature…
https://crystal-lang.org/
I also liked it about eight years ago, but the developers still using it like to use all the sugar and auto-magic. Which leads to spaghetti code.
That's ancient!! I need tools that are 2 weeks old tops.
Nowadays we have *awesome* ways to do frontend in these full stack frameworks, such as Hotwire/Turbo, Livewire, HTMX, Unpoly, Alpine.js, etc.
The same JavaScript is not your grandpa's JavaScript anymore, traditional MVC apps is not your grandpa's MVC apps either.
And no, Next.js + Prisma, Remix, etc... ARE NOT full stack frameworks despite their claims. They're cobbled together third party libraries all around which just allow you to submit a form to a database. That's not full stack. You need a way to do authentication, authorization, sending emails, translations, command line tasks, background jobs, input validation, caching (and many, many more things).
Why do we do SPAs? Because we as developers want to have the only one "true way" of doing things, so given you can build almost anything with JavaScript, then we want to use JavaScript for everything even if it is not the best tool. It's like when Redux showed up: suddenly *everything* had to go into redux, because that's "the way".
I've been a professional developer for about 18 years, I worked a lot with python (django), java (dropwizard) and the last 8 years or so mostly focused on frontend with JavaScript, last few years doing a lot of React (Next.js) and Vue (Nuxt.js). Playing with Sveltekit.
I love JavaScript and it is what pays my bills nowadays, but we need to realize that the tools and ecosystem (frameworks, libraries, editors, etc) are WAY more important than a language itself.
Nowadays I'm doing a side-project with Laravel, and learning PHP (as a consequence of wanting to use Laravel) and I'm finding it incredible powerful and productive. I like it a lot more than Rails, and certainly much, much more than Django. I can do html components in the server, I can add behavior with Alpine, if it is a complex one with LiveWire, and if I want to do SPA like page transitions across pages I can use Unpoly. And I can trust the next person picking up the project will have a decent documentation (Laravel's official docs) which is something you don't have when you cobble together your own library salad.