And it's not a technical term, but a MARKETING term. An obnoxious and misleading one.
So, I know for example the sentence after you said it contradicts it: "generic and usable in many different ways and usage scenarios". I know DHH first used it, and he named his product "on Rails" precisely because he wanted to make non-developers and beginners feel empowered that they're in the driving seat, while actually not driving at all and running on rails.
Opinionated software is training wheels (or rails). It can't be flexible or general purpose. It constrains you, so that when you don't know what you're doing, you still end up doing something. Children love this, and non-professionals also love it. Experienced professional developers hate it.
It's not fun for professional developers to be told what to do, because they're in the business of they telling computers what to do. And they know libraries can be easy to use and flexible without being "opinionated".
DSLs have their place. But they're not general purpose, it's a contradiction.
And I don't like the term "opinionated" because aside from the smug arrogance with which it's often said around the RoR community, it lies about what it is. It's not "opinionated" - every software is created with opinion, it's impossible for it not to have one. But what the term really means is "constrained". This would suck for marketing though, and DHH is great at marketing, so he came up with that BS instead.
PS: let me also remind you what this word means as an English word: "characterized by conceited assertiveness and dogmatism."
You basically described it as if the only business value to be had in software is making a CRUD app. I won't even correct you, I know an overwhelming amount of developers who keep churning out the same CRUD app over and over. With small differences in schema, validation, business rules here and there.
It's a life, I don't judge it.
But it's also shoddy engineering, wasteful, redundant, and eventually this class of applications will disappear, replaced by one of a few winning content management platforms which do CRUD even better than RoR does, and more. RoR's opinionated approach, aside from constraining you so don't make something stupid, it also constrains you INTO doing quite a lot of stupid things.
Everyone has the confidence they're good at their job. But my experience is I've not seen anyone I really respect in this industry, who enjoys RoR's architectural choices.
See, the trouble with being opinionated, is that others also have opinions.
I see this argument as that structural engineers are making their own steel by hand.
Unfortunately that is not the way complex structures are built.
Real mechanical or structural engineers use mostly off the shelf components or pre-made parts unless they run into really specific cases.
That is why my stance is that frameworks and especially opinionated ones are the future.
Mostly because IMO content management platforms are too rigid and I am against those just as IMO opinionated frameworks are giving best tradeoff between “making my own steel from scratch” and “this is the thing you cannot change”.
There is whole space for CRUD apps as there are still many companies doing stuff on paper. We can argue about AI or fancy algorithms all day but there is whole world that doesn’t even care.
The way "you see my argument" is like someone who just learned what a strawman is, and was very excited to try it out.
The issue at hand is architecture, which engineers are very much interested in, and not underlying infrastructure implementation details, which would fall closer to the category of "raw materials".
Despite that, in the real world engineers have been concerned even with the shape of the sand particles forming their building's foundation, as it impacts the structural integrity of the entire project (actual case study in Dubai).
You find CMS-es too rigid. I find CMS-es can be more flexible than RoR, which I find too rigid, UNLESS you fork it and break the framework constraints, which is what Twitter did early on, BTW, so they can evolve the app.
But it depends what you call a CMS. A person well versed in CRUD apps, seems to think of a CMS as a premade CRUD app, just bunch of forms with a few fields and a WYSIWYG HTML editor for the page body. But that's primitive, and barely scratching the surface.
I wonder if you're familiar with Drupal's node architecture. I don't like Drupal, but it's popular, so it can be a subject of discussion. The Emacs buffer architecture is also relevant, despite we don't often think of Emacs as a CMS.
I clearly wrote that a language shall NOT be opinionated, shall NOT be constrained, that it should not tell the developer what to do.
I wrote the developers should use their own opinion, set their own constraints, specific for the project they are working on.
Language "generic and usable in many different ways and usage scenarios". But actual usage within a single project according to the opinionated convention of the project.
It is a (more or less) technical term that carries a (more or less) specific meaning with regards to software design.
See:
* https://stackoverflow.com/questions/802050/what-is-opinionat...
* https://softwareengineering.stackexchange.com/questions/1218...