37 votes

Shopify, pulling strings at Ruby Central, forces Bundler and RubyGems takeover

44 comments

  1. [30]
    DefiantEmbassy
    Link
    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

    19 votes
    1. [29]
      teaearlgraycold
      Link Parent
      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:

      1. Static types in a rigid type system that doesn’t always model your data and business logic well and can slow down development
      2. 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.

      9 votes
      1. [18]
        ButteredToast
        Link Parent
        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.

        5 votes
        1. [10]
          teaearlgraycold
          Link Parent
          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.

          6 votes
          1. [4]
            TurtleCracker
            Link Parent
            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.

            2 votes
            1. [3]
              teaearlgraycold
              Link Parent
              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.

              5 votes
              1. [2]
                TurtleCracker
                Link Parent
                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.

                2 votes
                1. ButteredToast
                  Link Parent
                  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.

                  3 votes
          2. [5]
            ButteredToast
            Link Parent
            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.

            1 vote
            1. [4]
              teaearlgraycold
              Link Parent
              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.

              1 vote
              1. [3]
                ButteredToast
                Link Parent
                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.

                1. [2]
                  teaearlgraycold
                  Link Parent
                  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.

                  1. okiyama
                    Link Parent
                    I've used prisma as well and found it really awkward. It never mapped to my thinking on pulling data.

                    I've used prisma as well and found it really awkward. It never mapped to my thinking on pulling data.

        2. [6]
          redwall_hp
          Link Parent
          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.

          3 votes
          1. [5]
            ButteredToast
            Link Parent
            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.

            3 votes
            1. [4]
              Minori
              Link Parent
              Java is only tolerable with Lombok imo.

              Java is only tolerable with Lombok imo.

              1 vote
              1. [3]
                DrStone
                Link Parent
                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.

                1 vote
                1. [2]
                  archevel
                  Link Parent
                  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.

                  2 votes
                  1. TintedJellyfish
                    Link Parent
                    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)

        3. babypuncher
          Link Parent
          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.

      2. [5]
        stu2b50
        Link Parent
        What do you find lacking about Ruby’s static analysis and static typing tooling?

        What do you find lacking about Ruby’s static analysis and static typing tooling?

        3 votes
        1. [4]
          teaearlgraycold
          (edited )
          Link Parent
          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:

          1. 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.
          2. 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.
          7 votes
          1. [3]
            stu2b50
            Link Parent
            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.

            2 votes
            1. [2]
              teaearlgraycold
              Link Parent
              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.

              6 votes
              1. Pistos
                Link Parent
                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.

      3. [4]
        Ganymede
        Link Parent
        Please reference some benchmarks if you're going to make such a bold claim.

        Performance also lags behind.

        Please reference some benchmarks if you're going to make such a bold claim.

        1 vote
        1. [3]
          Eji1700
          (edited )
          Link Parent
          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?

          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

          10 votes
          1. [2]
            teaearlgraycold
            Link Parent
            Typescript won't have any runtime effect (with minor exceptions to https://www.npmjs.com/package/tslib and translation to older ECMAScript versions).

            Something more popular like javascript (not even typescript mind you) is similar levels of above:

            Typescript won't have any runtime effect (with minor exceptions to https://www.npmjs.com/package/tslib and translation to older ECMAScript versions).

            2 votes
            1. Eji1700
              Link Parent
              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.

              2 votes
      4. TurtleCracker
        Link Parent
        I’ve generally found Ruby’s lack of static analysis to be a non-issue if you are running something like Rubocop + unit tests.

        I’ve generally found Ruby’s lack of static analysis to be a non-issue if you are running something like Rubocop + unit tests.

  2. [3]
    BroiledBraniac
    Link
    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.

    10 votes
    1. d32
      Link Parent
      Well... The pessimist in me says: look how the community handled the WordPress power play...

      Well... The pessimist in me says: look how the community handled the WordPress power play...

      2 votes
    2. chundissimo
      Link Parent
      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.

  3. [5]
    JXM
    Link
    Fuck DHH. The only thing that matters to him is power and control.

    Fuck DHH. The only thing that matters to him is power and control.

    8 votes
    1. [4]
      skybrian
      Link Parent
      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.

      3 votes
      1. [2]
        DefiantEmbassy
        Link Parent
        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.

        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.

        16 votes
        1. skybrian
          Link Parent
          Ah, I was missing that context.

          Ah, I was missing that context.

          1 vote
      2. JXM
        Link Parent
        As @DefiantEmbassy said, he’s on the board of Shopify, so he at the very least knew of and approved of what was happening.

        As @DefiantEmbassy said, he’s on the board of Shopify, so he at the very least knew of and approved of what was happening.

        3 votes
  4. [5]
    tanglisha
    Link
    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?

    1 vote
    1. [4]
      Minori
      Link Parent
      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.

      9 votes
      1. tanglisha
        Link Parent
        Thank you, I guess I missed that. I've got a cold that's making thinking really hard.

        Thank you, I guess I missed that. I've got a cold that's making thinking really hard.

        3 votes
      2. [2]
        JXM
        Link Parent
        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.

        2 votes
        1. Minori
          Link Parent
          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.

          1 vote
  5. chundissimo
    Link
    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