Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop support for Ruby 2.3 #168

Merged
merged 5 commits into from
Jun 18, 2020
Merged

Drop support for Ruby 2.3 #168

merged 5 commits into from
Jun 18, 2020

Conversation

sds
Copy link
Collaborator

@sds sds commented Jun 17, 2020

The build doesn't work and this version has been EOL for years. We will consider also dropping support for 2.4 once the build stops passing on that version.

sds added 2 commits June 17, 2020 09:49
The build doesn't work and this version has been EOL for years. We will
consider also dropping support for 2.4 once the build stops passing on
that version.
@enkessler
Copy link
Owner

Ruby 2.3 can still be tested against Linux and Windows but, given the cross-platform nature of this gem, I do understand not wanting to officially support something that we can't test everywhere. Would this be a major version increase event?

@coveralls
Copy link

coveralls commented Jun 17, 2020

Coverage Status

Coverage decreased (-0.5%) to 89.842% when pulling 80b8c9c on drop-ruby-2.3 into a8302c6 on master.

@sds
Copy link
Collaborator Author

sds commented Jun 18, 2020

Bumping major version sounds good to me!

What I'm puzzled by is why the JRuby build started failing for seemingly no reason. You can see it passed on one commit and then started failing on another commit that was just a copy change.

@enkessler
Copy link
Owner

Oh. Right, the OSX/Ruby 2.3 combo stopped working months ago, even with no code changes. Travis still has it as an offered combination but it got broken somehow and I guess that they still haven't fixed it. I took it out of my other projects already. I figure that if I know that my stuff works on OSX and for both earlier and later versions than 2.3, then it is reasonably unlikely that I'll add code that would somehow break only that one combination that I no longer test.

@sds
Copy link
Collaborator Author

sds commented Jun 18, 2020

Alright, managed to get the JRuby build to pass with a tweak to the RubyGems and Bundler versions installed.

@sds sds merged commit 95c6ce2 into master Jun 18, 2020
@sds sds deleted the drop-ruby-2.3 branch June 18, 2020 06:31
@mvz
Copy link

mvz commented Jun 18, 2020

I could be wrong, but I don't think dropping support for Ruby 2.3 requires a major version release: https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api

@sds
Copy link
Collaborator Author

sds commented Jun 18, 2020

Without incrementing the major version, teams who have the following in their Gemfile:

gem 'childprocess', '~> 3.0'

...and running Ruby 2.3 would suddenly start to see failures when installing, since we added a constraint on Ruby version in the gemspec:

s.required_ruby_version = '>= 2.4.0'

Bumping ensures teams opt-in to the new version and dependency requirements explicitly.

If I've misunderstood your point, let me know!

@enkessler
Copy link
Owner

@mvz Even if changing platform limitations does not break the letter of Semver, it would seem to break the spirit of it. That spirit being: "this thing can keep doing what it did before". Speaking from experience, one of the more surprising/annoying things to deal with when it comes to maintaining my projects is having to stick in all kinds of version limits and conditionals because some library decided to put out a patch level release that renders their library unusable for a huge swath of users.

Summary: the code didn't change but how it is used did.

@mvz
Copy link

mvz commented Jun 19, 2020

running Ruby 2.3 would suddenly start to see failures when installing

I think this used to be the case for older rubies/rubygems but shouldn't be the case any longer? I agree the Ruby version is a special case because it's handled differently from other versioned dependencies, and there used to be problems with that, but I think those should be resolved now.

Even if changing platform limitations does not break the letter of Semver, it would seem to break the spirit of it.

I would argue that that is exactly why this is mentioned specifically on the Semver website: Your dependencies don't count, and the package manager should deal with it. As I mention above, bundler and rubygems should be able to do so now.

(The reason I'm going on about this is that I'm now going to have to release a new Aruba version just to allow the new childprocess version for dependent projects. It's not a big deal, but I'd prefer this to be seamless).

@sds
Copy link
Collaborator Author

sds commented Jun 19, 2020

I think this used to be the case for older rubies/rubygems but shouldn't be the case any longer?

You're right about Bundler! I wasn't aware this feature was added. You'll only see an issue if you specify the version explicitly. TIL.

RubyGems will still fail, however:

⨠ ruby -v
ruby 2.3.8p459
⨠ gem install childprocess -v '< 5'
ERROR:  Error installing childprocess:
        childprocess requires Ruby version >= 2.4.0.

For that reason, I think the major version bump is still the pragmatic choice here, but I'm glad to see Bundler supports finding a version that is compatible with the Ruby version constraints. Thanks for the tip!

@enkessler
Copy link
Owner

Unsurprisingly, we are not the first people to have this conversation. ;)

https://www.reddit.com/r/ruby/comments/7vtceq/when_is_it_okay_to_drop_support_for_ruby_versions/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants