As someone who hasn't touched Ruby, a) what a complete cluster fuck, b) yeah, i think I'm staying away from Ruby, and probably trying to avoid Shopify where I can
As someone who hasn't touched Ruby, a) what a complete cluster fuck, b) yeah, i think I'm staying away from Ruby, and probably trying to avoid Shopify where I can
Thankfully I moved away from Ruby years ago. IMO a language without good static analysis isn’t worth using for serious applications in 2025. Back in the day the choices were: Static types in a...
Thankfully I moved away from Ruby years ago. IMO a language without good static analysis isn’t worth using for serious applications in 2025. Back in the day the choices were:
Static types in a rigid type system that doesn’t always model your data and business logic well and can slow down development
Dynamic types that can do anything at any time - but with great power comes great responsibility
Since then a number of solutions have come about. Static languages have improved to the point where they can feel more fluid and convenient to work in (auto type inference, discriminated unions, pattern matching, etc.) and dynamic languages can statically analyze as good or better than popular static languages. Combined with modern JIT technology performance is suitable for most use cases.
Ruby’s static analysis is poor compared to Typescript or even Python. Performance also lags behind. It’s a relic of the past.
It’s still hard to beat Rails for getting up and running though, especially if you’re more of the old style server side rendered persuasion. Python + Django is comparable I’ve heard, but Python is...
It’s still hard to beat Rails for getting up and running though, especially if you’re more of the old style server side rendered persuasion. Python + Django is comparable I’ve heard, but Python is a bit of an acquired taste IMO.
Once you've done one app from scratch in some other language I don't think I agree. Sure Rails will always have at least some advantage in the time to your first release, but it's extremely...
Once you've done one app from scratch in some other language I don't think I agree. Sure Rails will always have at least some advantage in the time to your first release, but it's extremely foolhardy to weigh that heavily enough to pick Ruby as your language.
Comparing Rails to something like Django is almost embarrassing. Rails does/can do way more out of the box. Comparing it to something like React/Next or NestJs is also pretty lacking. Can these do...
Comparing Rails to something like Django is almost embarrassing. Rails does/can do way more out of the box.
Comparing it to something like React/Next or NestJs is also pretty lacking. Can these do the same things as rails? Mostly yeah - but it’s like assembling a puzzle out of random components. Rails being opinionated is a double edged sword. It does result in a lot of rails apps being very standardized though from app to app. A lot of other frameworks can look wildly different between two apps.
Fundamentally what I’m doing is comparing languages, but it always ends up as a comparison of Rails vs. other frameworks. I think language selection is important. You’re often interacting with the...
Fundamentally what I’m doing is comparing languages, but it always ends up as a comparison of Rails vs. other frameworks. I think language selection is important. You’re often interacting with the framework, but you’re always interacting with the language.
I guess, but I think each language ecosystem has a sweet spot for usage. I don’t know if I’d use Ruby outside of a web backend or some quick script. I’m very rarely using Ruby unless I’m also...
I guess, but I think each language ecosystem has a sweet spot for usage. I don’t know if I’d use Ruby outside of a web backend or some quick script.
I’m very rarely using Ruby unless I’m also using Rails or Sinatra.
Comparing data processing from Ruby vs Python vs Java is a bit silly because you probably wouldn’t choose Ruby for that anyways.
I don’t believe it’s an exaggeration to state that the majority of people who’ve learned Ruby did so (at least initially) for Rails. Its batteries-included nature is nice.
I don’t believe it’s an exaggeration to state that the majority of people who’ve learned Ruby did so (at least initially) for Rails. Its batteries-included nature is nice.
Backend isn’t my area of expertise so I’ll defer, but the thing that crosses my mind is that realistically, my CRUD app is not going to meaningfully differ from 90%+ of other CRUD apps out there...
Backend isn’t my area of expertise so I’ll defer, but the thing that crosses my mind is that realistically, my CRUD app is not going to meaningfully differ from 90%+ of other CRUD apps out there (especially in the earlier stages) which makes the cost to benefit ratio of building from scratch vs. using an opinionated“kitchen sink” framework a lot less clear.
I actually like using the organizational patterns I learned from Rails when working on Node apps. It's well structured and others are familiar with it. I don't think it matters too much if my back...
I actually like using the organizational patterns I learned from Rails when working on Node apps. It's well structured and others are familiar with it. I don't think it matters too much if my back end framework has S3 support or whatever else included.
What do you use in place of ActiveRecord, if anything? Other than that, it seems to me that without the standardization of a framework one would lose third party components that bolt in easily...
What do you use in place of ActiveRecord, if anything? Other than that, it seems to me that without the standardization of a framework one would lose third party components that bolt in easily with minimal wiring.
For node I use prisma. It’s not as feature rich but it’s got great static analysis. I’ve had to do some shenanigans in the past to make it more active-record like.
For node I use prisma. It’s not as feature rich but it’s got great static analysis. I’ve had to do some shenanigans in the past to make it more active-record like.
Spring Boot takes minutes to set up, and probably has more optional included batteries than even Rails. JVM performance also is within spitting distance of native performance, which is not...
Spring Boot takes minutes to set up, and probably has more optional included batteries than even Rails. JVM performance also is within spitting distance of native performance, which is not something one can say about Ruby.
I dabbled in Ruby a long time ago, but largely work with Java and Kotlin professionally.
I know a lot of people love the JVM and while I don’t particularly mind Kotlin, I’m not a huge fan either. It serves the purpose well I’m sure but I’m not exactly chomping at the bit for a chance...
I know a lot of people love the JVM and while I don’t particularly mind Kotlin, I’m not a huge fan either. It serves the purpose well I’m sure but I’m not exactly chomping at the bit for a chance to write it. Java is… well, Java.
I’ve enjoyed working with Scala. JVM, support for both OOP and functional programming, great type system, all of the boilerplate that Lombok looks to handle taken care of, easy interoperability...
I’ve enjoyed working with Scala. JVM, support for both OOP and functional programming, great type system, all of the boilerplate that Lombok looks to handle taken care of, easy interoperability with the full Java ecosystem on top of its own.
I used to program in Scala quite a bit (10 years back). The language had a bunch of warts when I was working with it. Full XML support embedded in the language. Implicits. Slog to build stuff with...
I used to program in Scala quite a bit (10 years back). The language had a bunch of warts when I was working with it. Full XML support embedded in the language. Implicits. Slog to build stuff with sbt. Standard lib was messy IIRC. I enjoyed it, but wouldn't recommend it to build a system with in a team.
I remember liking the Lift web framework, it did use a bunch of "magic" language features. But it was a nice setup. Unfortunately I don't think it got enough traction... Play kind of took the air out.
Having done a bunch of Scala 2 and 3 at Uni, and now working with Kotlin. I gotta concur, sbt felt downright horrible compared to gradle with Kotlin (Groovy going by the wayside is a big plus)
Having done a bunch of Scala 2 and 3 at Uni, and now working with Kotlin. I gotta concur, sbt felt downright horrible compared to gradle with Kotlin (Groovy going by the wayside is a big plus)
I tried rails a few years ago and didn't find it meaningfully more straightforward than spinning up a quick asp.net app granted, I have years of dotnet experience and almost none in ruby and that...
I tried rails a few years ago and didn't find it meaningfully more straightforward than spinning up a quick asp.net app
granted, I have years of dotnet experience and almost none in ruby and that certainly works in asp.nets favor, but I feel most languages and frameworks designed for making web apps have gotten this stuff figured out pretty well these days.
Just comparing against other interpreted/JIT languages: Rails (and really a lot of non-Rails "idiomatic" Ruby code) does such wild and crazy monkey-patching and dynamic loading that it's...
Just comparing against other interpreted/JIT languages:
Rails (and really a lot of non-Rails "idiomatic" Ruby code) does such wild and crazy monkey-patching and dynamic loading that it's impossible to static analyze on the level of Python/Typescript.
The Ruby approach (like with Sorbet) is to annotate files using vanilla Ruby code. This is even worse than the strained Python solution of providing the bare minimum of syntax to allow for basic type annotations, leaving everything else up to 3rd party analysis tools. Extending the grammar as was done with Typescript is the best solution if you can fund such an endeavor.
That’s the same as in python, no? The syntax is more awkward, since it’s not a language feature, but for all intents and purposes the format works the same.
That’s the same as in python, no? The syntax is more awkward, since it’s not a language feature, but for all intents and purposes the format works the same.
In Ruby monkey patching is considered best practice. In Python it's less common (outside of what I've seen in ML code like ultralytics) to do such wild things at runtime.
In Ruby monkey patching is considered best practice. In Python it's less common (outside of what I've seen in ML code like ultralytics) to do such wild things at runtime.
AFAIK, the culture shifted years ago to people doing monkey patching only very judiciously. Certainly, in the last 10 years, I almost never did it. The community learned there's almost always a...
In Ruby monkey patching is considered best practice.
AFAIK, the culture shifted years ago to people doing monkey patching only very judiciously. Certainly, in the last 10 years, I almost never did it. The community learned there's almost always a feasible alternative.
Uhhh it's hardly a bold claim. Ruby and Python are known for lagging in performance without serious work being put in, and Python is, last I heard, usually faster than ruby? For example:...
Uhhh it's hardly a bold claim. Ruby and Python are known for lagging in performance without serious work being put in, and Python is, last I heard, usually faster than ruby?
Agreed, but I just wanted to be accurate. Typescript obviously brings the kind of advantages that were being talked about with the performance js can provide, so you've got a very "best of both...
Agreed, but I just wanted to be accurate. Typescript obviously brings the kind of advantages that were being talked about with the performance js can provide, so you've got a very "best of both worlds" if comparing against something as slow as ruby.
Ruby is a huge reason why I'm a programmer and the optimist in me says the community will finally pull away from Rails and put power behind alternative ecosystems. It's very possible that this...
Ruby is a huge reason why I'm a programmer and the optimist in me says the community will finally pull away from Rails and put power behind alternative ecosystems. It's very possible that this could be a driving force.
The community may, but Rails’ gravity in the corporate tech world (albeit usually smaller companies than Big Tech) feels too strong. I’d be curious to see going forward if new startups choose Ruby...
The community may, but Rails’ gravity in the corporate tech world (albeit usually smaller companies than Big Tech) feels too strong. I’d be curious to see going forward if new startups choose Ruby if they buck that trend, but my gut says a lot of newer startups may be opting for Ruby less than before. Take this claim with a hefty grain of salt as I have no evidence of that; just vibes based on startup job posts and conversations I have with folks in the industry.
It doesn’t sound like DHH is directly involved? The article apparently describes downstream consequences from a controversy about him. The power and control is that of other political actors.
It doesn’t sound like DHH is directly involved? The article apparently describes downstream consequences from a controversy about him. The power and control is that of other political actors.
I don't understand how this was done. Did github roll over for some reason? That really doesn't sound like Microsoft. Were the repos owned by Ruby Central, rather than individual maintainers?
I don't understand how this was done. Did github roll over for some reason? That really doesn't sound like Microsoft. Were the repos owned by Ruby Central, rather than individual maintainers?
One of the members gave Marty permissions, and Marty followed the directives of the board to remove community owners. Based on this Hacker News thread, HSBT isn't employed by Shopify.
On 9 September, HSBT (Hiroshi Shibata) — a member of Ruby core and maintainer of RubyGems — renamed the RubyGems GitHub enterprise to “Ruby Central”, added a new owner, Marty Haught, and downgraded the permissions of several other maintainers.
One of the members gave Marty permissions, and Marty followed the directives of the board to remove community owners. Based on this Hacker News thread, HSBT isn't employed by Shopify.
You’d think for a project as big as this, GitHub would step in and freeze the repo until things were worked out. But Microsoft probably doesn’t want to get in the middle of things.
You’d think for a project as big as this, GitHub would step in and freeze the repo until things were worked out.
But Microsoft probably doesn’t want to get in the middle of things.
I imagine they only do that if an account is hacked or there's a court order? I don't know any cases where GitHub has stepped in to override permissions on a major repo.
I imagine they only do that if an account is hacked or there's a court order? I don't know any cases where GitHub has stepped in to override permissions on a major repo.
I’ve been developing in Ruby on Rails for 7ish years so, but it looks like I’m going to be moving to a new language pretty soon. It feels bittersweet since I do love Ruby (warts and all), but this...
I’ve been developing in Ruby on Rails for 7ish years so, but it looks like I’m going to be moving to a new language pretty soon. It feels bittersweet since I do love Ruby (warts and all), but this sort of nonsense I won’t miss. I know he’s only a secondary character in this saga, but DHH is just a needless blight on the whole ecosystem
As someone who hasn't touched Ruby, a) what a complete cluster fuck, b) yeah, i think I'm staying away from Ruby, and probably trying to avoid Shopify where I can
Thankfully I moved away from Ruby years ago. IMO a language without good static analysis isn’t worth using for serious applications in 2025. Back in the day the choices were:
Since then a number of solutions have come about. Static languages have improved to the point where they can feel more fluid and convenient to work in (auto type inference, discriminated unions, pattern matching, etc.) and dynamic languages can statically analyze as good or better than popular static languages. Combined with modern JIT technology performance is suitable for most use cases.
Ruby’s static analysis is poor compared to Typescript or even Python. Performance also lags behind. It’s a relic of the past.
It’s still hard to beat Rails for getting up and running though, especially if you’re more of the old style server side rendered persuasion. Python + Django is comparable I’ve heard, but Python is a bit of an acquired taste IMO.
Once you've done one app from scratch in some other language I don't think I agree. Sure Rails will always have at least some advantage in the time to your first release, but it's extremely foolhardy to weigh that heavily enough to pick Ruby as your language.
Comparing Rails to something like Django is almost embarrassing. Rails does/can do way more out of the box.
Comparing it to something like React/Next or NestJs is also pretty lacking. Can these do the same things as rails? Mostly yeah - but it’s like assembling a puzzle out of random components. Rails being opinionated is a double edged sword. It does result in a lot of rails apps being very standardized though from app to app. A lot of other frameworks can look wildly different between two apps.
Fundamentally what I’m doing is comparing languages, but it always ends up as a comparison of Rails vs. other frameworks. I think language selection is important. You’re often interacting with the framework, but you’re always interacting with the language.
I guess, but I think each language ecosystem has a sweet spot for usage. I don’t know if I’d use Ruby outside of a web backend or some quick script.
I’m very rarely using Ruby unless I’m also using Rails or Sinatra.
Comparing data processing from Ruby vs Python vs Java is a bit silly because you probably wouldn’t choose Ruby for that anyways.
I don’t believe it’s an exaggeration to state that the majority of people who’ve learned Ruby did so (at least initially) for Rails. Its batteries-included nature is nice.
Backend isn’t my area of expertise so I’ll defer, but the thing that crosses my mind is that realistically, my CRUD app is not going to meaningfully differ from 90%+ of other CRUD apps out there (especially in the earlier stages) which makes the cost to benefit ratio of building from scratch vs. using an opinionated“kitchen sink” framework a lot less clear.
I actually like using the organizational patterns I learned from Rails when working on Node apps. It's well structured and others are familiar with it. I don't think it matters too much if my back end framework has S3 support or whatever else included.
What do you use in place of ActiveRecord, if anything? Other than that, it seems to me that without the standardization of a framework one would lose third party components that bolt in easily with minimal wiring.
For node I use prisma. It’s not as feature rich but it’s got great static analysis. I’ve had to do some shenanigans in the past to make it more active-record like.
I've used prisma as well and found it really awkward. It never mapped to my thinking on pulling data.
Spring Boot takes minutes to set up, and probably has more optional included batteries than even Rails. JVM performance also is within spitting distance of native performance, which is not something one can say about Ruby.
I dabbled in Ruby a long time ago, but largely work with Java and Kotlin professionally.
I know a lot of people love the JVM and while I don’t particularly mind Kotlin, I’m not a huge fan either. It serves the purpose well I’m sure but I’m not exactly chomping at the bit for a chance to write it. Java is… well, Java.
Java is only tolerable with Lombok imo.
I’ve enjoyed working with Scala. JVM, support for both OOP and functional programming, great type system, all of the boilerplate that Lombok looks to handle taken care of, easy interoperability with the full Java ecosystem on top of its own.
I used to program in Scala quite a bit (10 years back). The language had a bunch of warts when I was working with it. Full XML support embedded in the language. Implicits. Slog to build stuff with sbt. Standard lib was messy IIRC. I enjoyed it, but wouldn't recommend it to build a system with in a team.
I remember liking the Lift web framework, it did use a bunch of "magic" language features. But it was a nice setup. Unfortunately I don't think it got enough traction... Play kind of took the air out.
Having done a bunch of Scala 2 and 3 at Uni, and now working with Kotlin. I gotta concur, sbt felt downright horrible compared to gradle with Kotlin (Groovy going by the wayside is a big plus)
I tried rails a few years ago and didn't find it meaningfully more straightforward than spinning up a quick asp.net app
granted, I have years of dotnet experience and almost none in ruby and that certainly works in asp.nets favor, but I feel most languages and frameworks designed for making web apps have gotten this stuff figured out pretty well these days.
What do you find lacking about Ruby’s static analysis and static typing tooling?
Just comparing against other interpreted/JIT languages:
That’s the same as in python, no? The syntax is more awkward, since it’s not a language feature, but for all intents and purposes the format works the same.
In Ruby monkey patching is considered best practice. In Python it's less common (outside of what I've seen in ML code like ultralytics) to do such wild things at runtime.
AFAIK, the culture shifted years ago to people doing monkey patching only very judiciously. Certainly, in the last 10 years, I almost never did it. The community learned there's almost always a feasible alternative.
Please reference some benchmarks if you're going to make such a bold claim.
Uhhh it's hardly a bold claim. Ruby and Python are known for lagging in performance without serious work being put in, and Python is, last I heard, usually faster than ruby?
For example: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/ruby-python3.html
and compare to F#: https://benchmarksgame-team.pages.debian.net/benchmarksgame/measurements/fsharpcore.html
Which I picked because it's both my language of choice, and static typed but does type inference.
Something more popular like javascript (not even typescript mind you) is similar levels of above:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/node-ruby.html
Typescript won't have any runtime effect (with minor exceptions to https://www.npmjs.com/package/tslib and translation to older ECMAScript versions).
Agreed, but I just wanted to be accurate. Typescript obviously brings the kind of advantages that were being talked about with the performance js can provide, so you've got a very "best of both worlds" if comparing against something as slow as ruby.
I’ve generally found Ruby’s lack of static analysis to be a non-issue if you are running something like Rubocop + unit tests.
Ruby is a huge reason why I'm a programmer and the optimist in me says the community will finally pull away from Rails and put power behind alternative ecosystems. It's very possible that this could be a driving force.
Well... The pessimist in me says: look how the community handled the WordPress power play...
The community may, but Rails’ gravity in the corporate tech world (albeit usually smaller companies than Big Tech) feels too strong. I’d be curious to see going forward if new startups choose Ruby if they buck that trend, but my gut says a lot of newer startups may be opting for Ruby less than before. Take this claim with a hefty grain of salt as I have no evidence of that; just vibes based on startup job posts and conversations I have with folks in the industry.
Fuck DHH. The only thing that matters to him is power and control.
It doesn’t sound like DHH is directly involved? The article apparently describes downstream consequences from a controversy about him. The power and control is that of other political actors.
Well, we don’t know for sure.
But dhh is a board member at Shopify. In fact, the CEO of Shopify races cars with dhh. So, there is a relation there.
Ah, I was missing that context.
As @DefiantEmbassy said, he’s on the board of Shopify, so he at the very least knew of and approved of what was happening.
I don't understand how this was done. Did github roll over for some reason? That really doesn't sound like Microsoft. Were the repos owned by Ruby Central, rather than individual maintainers?
One of the members gave Marty permissions, and Marty followed the directives of the board to remove community owners. Based on this Hacker News thread, HSBT isn't employed by Shopify.
Thank you, I guess I missed that. I've got a cold that's making thinking really hard.
You’d think for a project as big as this, GitHub would step in and freeze the repo until things were worked out.
But Microsoft probably doesn’t want to get in the middle of things.
I imagine they only do that if an account is hacked or there's a court order? I don't know any cases where GitHub has stepped in to override permissions on a major repo.
I’ve been developing in Ruby on Rails for 7ish years so, but it looks like I’m going to be moving to a new language pretty soon. It feels bittersweet since I do love Ruby (warts and all), but this sort of nonsense I won’t miss. I know he’s only a secondary character in this saga, but DHH is just a needless blight on the whole ecosystem