dry-rb / dry-core

A toolset of small support modules used throughout the @dry-rb & @rom-rb ecosystems
https://dry-rb.org/gems/dry-core/
MIT License
170 stars 34 forks source link

v1.0.1 Removes support for Ruby 2.7, breaking existing installations #81

Closed irenehakes-handy closed 8 months ago

irenehakes-handy commented 8 months ago

Describe the bug

Version 1.0.1 removes support for Ruby 2.7. This is a breaking change that affects anyone running Ruby v2.7 and has this listed as a dependency.

To Reproduce

N/A

Expected behavior

The removal of support for a Ruby version should be done as a major version change. This would avoid inadvertent breaking changes when making patch updates.

My environment

flash-gordon commented 8 months ago

We do not think this is a breaking change. It only prevents a project from updating to a newer version, it does not break any existing code.

Updating required ruby versions helps us support gems by not testing across all the rubies that were actual at the time of a 1.0 release. This is both time consuming and making code more complicated than it could be. Releasing major versions when supported ruby versions change would be even less practical given we have so many gems to release. For instance, releasing dry-core 2 would require releasing all its direct dependencies, it's > 10 gems.

irenehakes-handy commented 8 months ago

I agree that maintaining multiple versions to support outdated ruby versions is not desired. I am not asking that future updates consider being compatible with Ruby 2.7. The issue is that removing a supported ruby version as a patch update breaks Semantic Versioning in that the change is not backwards compatible. Ideally a backwards incompatible change would be made in a major version release (or at the very least a minor version release) and all future changes go forward with that version. Anyone still using Ruby 2.7 would then be able to stay on v1 without having to pin to a specific patch version. No new updates are needed to v1.0, v1.1 would be where any future changes would live. At the very least, could a note be added to the changelog to point out that support for Ruby 2.7 has been removed in version 1.0.1?

flash-gordon commented 8 months ago

Actually, it's normally done like that. We should have released 1.1 and mentioned it properly in the changelog. Alas, our sophisticated maintenance workflow sometimes makes it hard to track such changes. I'll add the change to the changelog tomorrow.

irenehakes-handy commented 8 months ago

Thank you, appreciate the update here and your work on this gem!

flash-gordon commented 8 months ago

Applied in https://github.com/dry-rb/dry-core/commit/9e2e11d3f80731afbc13c7fc3184e72bcd93fa54