Rails won't die because Ruby is nice to build with and Javascript is a sadistic nightmare. I don't use it myself but I absolutely see the appeal. What more modern alternatives even attempt to compete on DX?
I agree, I’ve been working with other languages and frameworks and in my opinion nothing comes close. People often mention Laravel as comparable or even superior, but having worked with it for a year I struggled a lot with how messed up PHP is (even with all the improvements done over the years.)
JavaScript doesn’t have anything comparable either, although I haven’t worked much with NextJS with server-side rendering, maybe this brings it closer to DX of Rails
I worked on a Laravel/Next.js project last year and couldn’t believe how much stuff you didn’t get for free, from debugging PHP to building the assets.
Rails JS build support is confusing and messy, but seems to be under control now, and is as much a fault of the JS ecosystem/hellscape as the maintainers. Turbo seems a bit uncertain too. But on the whole, it is ridiculously easy to get stuff done.
Elixir and Phoenix/Ecto is much superior to Rails IMO.
My main gripe with Rails are conventions everywhere which aren't documented clearly. You just have to know them/learn them over time/from guides. It makes refactoring really hard, too.
There are other languages in use that are inferior to modern-day JS. JS is far from perfect but it’s also carrying cultural baggage. People that bash JS and proceed to sing the praises of Perl are just…well, at this case it’s clear that this is more of a culture war than anything else.
Ruby, Python and JS are all at about the same level of difficulty, most of the semantic is the same. If anything, the messiness of the language and ecosystem is the higher barrier of entry (Python and JS).
JS is popular because it has the monopoly on web browser runtime. Python is more of a direct competitor to Ruby and its success is indeed due to low barrier of entry. Non-professionals, including data scientists, picked it up and the rest become history.
And not everything has to be logical, PHP for example is just a shit language, not easy, nor powerful in any metric, just happened to be there at the dotcom boom.
> Ruby, Python and JS are all at about the same level of difficulty
Hard disagree. Whenever I have to write JS I'm always amazed at how much boilerplate is required to do things that are extremely basic in Ruby or Python (and I don't like Python at all, but that's another matter.)
E.g. in JS I have to install a utility library like Lodash to get basic iteration functions that in Ruby and Python are part of the standard library.
I think JS can quite nice but it requires some rather tight control over how it’s used in your teams. If you don’t do that then it’ll be a nightmare, but that freedom doesn’t necessarily mean you can’t make it a fairly decent experience. I do think React has become a terrible framework to work on after their love relationship with Next which is… well just horrendously bad, especially if you don’t buy into the whole Vercel thing, but using that is still a choice you don’t have to make.
With that said there is no doubt that things like RoR, various Python frameworks, Go + templates or Laravel are massive improvements. Especially for internal apps where things like HTMX coupled with templates lets you be extremely productive without scaring middle-managers who are afraid of page reloads. I know something like RoR, Laravel or Django aren’t hyped in tech communities, but in the “real” world where being productive matters a lot more than the underlying tech, which is where (as you point out) they continue to deliver great value. Meaning that they’ve got massive staying power. Being “old” typically also means they undergo much more reasonable changes than your average JavaScript framework where you sometimes might as well pick a completely different one on major updates.
As an occasional user the Rails experience has suffered quite a lot over the years because the Javascript and CSS integration has become really unclear.
The options and combination are too many, the work to change something too great for the single developer. It is okay if you want to use Tailwind or Bootstrap.
I confess I don't get what importmaps really do (how can they get rid of the need to precompile js assets?).
I develop a lot in Rails mostly as a single developer and and it's totally ok. With CSS and JS you can pick the approach you like and just stick with it. Importmaps(which i don't prefer myself btw) are the current default but it's very easy to use the older Asset Pipeline without any problems.
And frankly importmaps or the other possible aproaches are not so hard to understand. Any serious developer should be able to learn that. It's also not a Rails thing, it's just web
Well i'm using importmaps on some projects but mostly i stick with Asset Pipeline and that is for new projects also. Over the years i iterated towards a setup which is very efficient and simple to use which is to have light JS dependencies and no JS frameworks. And when the need for complex client side arises i use Elm which is a joy to use once you get through the learning.
Also the Asset Pipeline stack is getting even lighter nowadays since with CSS nesting and other new features you can drop SASS completely
the path forward is clear, and it’s no build/importmap based. i just overhauled a 15 year old rails project from rails 4 to 7, and ruby 2 to 3. ripping out webpack reduced deploy time by 90%
the complexity of the app is greatly reduced as a result.
Sure, but you don't want to import CSS Franeworks as precomiled files, don't you? You would like to use them in their packaging system. This seems to be more js-centric today, still lots of SASS.
Rails offers a choice of: webpack, esbuild, rollup, bun (since Rails v.7.1 I believe) and importmaps (default).
At least 5 built-in ways of doing JavaScript. And there are many more outside that, of course. None of these is Rails' "fault". That's the world of JavaScript, how it is.
As for the assets - Sprockets or Propshaft. The latter will replace Sprockets in new Rails versions.
nothing ever dies, but that doesn't say anything useful for most of us, building system that is practical today and continue to be PRACTICALLY maintainable for about 50 years.
The scaffolding and convention over configuration argument just weakened; ChatGPT can set up a new project for you with whatever boilerplate your language needs.
That's not my experience yet. I don't need to fight against a prompt eater that generates tremendous amount of nonsense that it will pretend to apologies about when you start to point every flows present in its output, having to deal with even more large amount of thoughtless suggestions as a result.
When you use a scaffolding script from Rails or similar, the result is always consistent, and errors will most likely be coming from the command used than from the fundamental way the script works.
Let me tell you how much time I spent with Claude and ChatGPT trying to get Next.js and Lucia with Postgres playing nicely. Never got it to work. Then I hit `rails new -d postgresql -j esbuild -c tailwind` and tried authentication-zero. Up and running in ~10 minutes.
It got me to thinking. Rails consistency and conventions are one of the biggest advantages for AI. While far from perfect, it seems the less code needed (Ruby/Rails) is a multiplier for AI.
The home page is in card style which make sense I wish more content website would do that. It's more easy to browse and the categories that is there is categories that is available in every other websites.
Y'all should look at the rest of the site. This is written by a content farm. These kinds of "blogs" serve the purspose of building up authority with google by writing waffer thin but linkable articles (as shown by it appearing on the front page of HN) and then sell backlinks to online casinos for SEO juice.
38 comments
[ 1.1 ms ] story [ 78.5 ms ] threadJavaScript doesn’t have anything comparable either, although I haven’t worked much with NextJS with server-side rendering, maybe this brings it closer to DX of Rails
Rails JS build support is confusing and messy, but seems to be under control now, and is as much a fault of the JS ecosystem/hellscape as the maintainers. Turbo seems a bit uncertain too. But on the whole, it is ridiculously easy to get stuff done.
Things I would like addressed better:
* Authentication and Authorization
Actually, that’s it.
My main gripe with Rails are conventions everywhere which aren't documented clearly. You just have to know them/learn them over time/from guides. It makes refactoring really hard, too.
Ruby, Python and JS are all at about the same level of difficulty, most of the semantic is the same. If anything, the messiness of the language and ecosystem is the higher barrier of entry (Python and JS).
JS is popular because it has the monopoly on web browser runtime. Python is more of a direct competitor to Ruby and its success is indeed due to low barrier of entry. Non-professionals, including data scientists, picked it up and the rest become history.
And not everything has to be logical, PHP for example is just a shit language, not easy, nor powerful in any metric, just happened to be there at the dotcom boom.
Hard disagree. Whenever I have to write JS I'm always amazed at how much boilerplate is required to do things that are extremely basic in Ruby or Python (and I don't like Python at all, but that's another matter.)
E.g. in JS I have to install a utility library like Lodash to get basic iteration functions that in Ruby and Python are part of the standard library.
With that said there is no doubt that things like RoR, various Python frameworks, Go + templates or Laravel are massive improvements. Especially for internal apps where things like HTMX coupled with templates lets you be extremely productive without scaring middle-managers who are afraid of page reloads. I know something like RoR, Laravel or Django aren’t hyped in tech communities, but in the “real” world where being productive matters a lot more than the underlying tech, which is where (as you point out) they continue to deliver great value. Meaning that they’ve got massive staying power. Being “old” typically also means they undergo much more reasonable changes than your average JavaScript framework where you sometimes might as well pick a completely different one on major updates.
The options and combination are too many, the work to change something too great for the single developer. It is okay if you want to use Tailwind or Bootstrap.
I confess I don't get what importmaps really do (how can they get rid of the need to precompile js assets?).
And frankly importmaps or the other possible aproaches are not so hard to understand. Any serious developer should be able to learn that. It's also not a Rails thing, it's just web
Also the Asset Pipeline stack is getting even lighter nowadays since with CSS nesting and other new features you can drop SASS completely
the complexity of the app is greatly reduced as a result.
At least 5 built-in ways of doing JavaScript. And there are many more outside that, of course. None of these is Rails' "fault". That's the world of JavaScript, how it is.
As for the assets - Sprockets or Propshaft. The latter will replace Sprockets in new Rails versions.
When you use a scaffolding script from Rails or similar, the result is always consistent, and errors will most likely be coming from the command used than from the fundamental way the script works.
It got me to thinking. Rails consistency and conventions are one of the biggest advantages for AI. While far from perfect, it seems the less code needed (Ruby/Rails) is a multiplier for AI.
You've been bamboozeled.