The main problem I see in the ruby community, in this regard, is the willingness to make breaking changes and justify it via Semantic Versioning. While on the surface this seems ok the underlying problem, as I see it, is the old version isn&#x27;t maintained, so essentially the only maintained version now has breaking API changes.<p>There are few ways this could be addressed, e.g. separate branches for old gems, and some developers do actually do this but in the end I&#x27;ve noticed these legacy branches and gems just bitrot while the developer devotes their time to the new branch. So essentially to use the gem you have to make the SemVer API jump which then begins the dependency failure cascade dance you mention.<p>I&#x27;m close to starting another new Rails job and I&#x27;m not looking forward to the inevitable rails rescue work on legacy codebases, yet this is the reality of a modern Rails developer.<p>Also I think this upgrade work needs to be factored into &quot;development time&quot; and when you do I&#x27;m not convinced Rails is actually faster.