README.md in rubocop-ruby2_7-1.1.1 vs README.md in rubocop-ruby2_7-1.1.2

- old
+ new

@@ -84,43 +84,60 @@ This gem requires no other gems. It depends on `rubocop`, but does not `require 'rubocop'`. Awareness of `rubocop`'s lack of [SemVer][semver] adherence isn't evenly dispersed in the Ruby community. -The RuboCop team [has real reasons](https://github.com/semver/semver/issues/317) -for [not following SemVer](https://github.com/rubocop/rubocop/issues/4243), but if you've -found this project their reasons likely weigh less, in your context (e.g. running `rubocop` from command line), than -what brought you here. +The RuboCop team [has reasons](https://github.com/semver/semver/issues/317) +for [not following SemVer](https://github.com/rubocop/rubocop/issues/4243). +NOTE: They think they are following SemVer, +but their interpretation differs from mine, and seems to differ from the +[intent of SemVer's creator][major-versions-not-sacred]. + +If you need to run `rubocop` from command line in an older version of Ruby, you've come to the right place. + <p align="left"> <a href="https://metaredux.com/posts/2022/04/21/rubocop-turns-10.html" target="_blank" rel="noopener"> <img width="360px" src="https://github.com/rubocop-lts/rubocop-ruby2_7/raw/main/docs/images/rubocop-not-semver.png?raw=true" alt="Explanation of non-SemVer compliance, @bbatsov"> </a> </p> The purpose of this gem is to constrain the `rubocop` dependency of a project in -a [SemVer compliant](https://semver.org/) (Semantic Versioning) way that aligns with the the desired minimum -compatible/supported Ruby version. +a [SemVer compliant][semver] +(Semantic Versioning, [Major Versions are Not Sacred][major-versions-not-sacred]) +way that aligns with the the desired minimum compatible/supported Ruby version. ## Ruby Version Support Adding this gem will facilitate the best practice of adding a `~> ` version constrained `rubocop` dependency, while minimizing the risk of a rubocop minor / patch upgrade breaking the build. See the -official [compatibility matrix][rubocop-matrix] for `rubocop`. +official [compatibility matrix][rubocop-support-matrix] for `rubocop`. ### Three Guarantees -`rubocop-ruby3_0` (this gem) will install a version of `rubocop` which will +This gem will install a version of `rubocop` which will **install** on (1), **run** on (2), and **analyze code** (3) intended to support any version of Ruby >= 2.7. Any change to any of those three abilities would require a major version bump. -Each [spring `rubocop` drops][rubocop-matrix] the ability to **install** and **run** `rubocop` on an EOL'd Ruby. +Each [spring `rubocop` drops][rubocop-support-matrix] the ability to **install** and **run** `rubocop` on an EOL'd Ruby. Eventually `rubocop` will drop the ability to **analyze code** intended to support an EOL'd Ruby, as they already have for Ruby 1.8 and 1.9. -When the `rubocop` team makes any of these changes they typically only bump the minor version of ruby, -in violation of SemVer. This is a primary _raison d’être_ for this project. +When the `rubocop` team makes _any_ of these changes they +[only bump the minor version][rubocop-versioning] of RuboCop, +in violation of SemVer ([they disagree][rubocop-release-policy]). +In other words, RuboCop intentionally does not bump the major version when they drop +_analysis_, _runtime_, or _installation_ support for a given version of Ruby. +This is a primary _raison d’être_ for this project. +To get a better understanding of how SemVer is intended to work read this article from the creator of SemVer: +- ["Major Version Numbers are Not Sacred"][major-versions-not-sacred] + +[rubocop-support-matrix]: https://docs.rubocop.org/rubocop/compatibility.html#support-matrix +[rubocop-versioning]: https://docs.rubocop.org/rubocop/versioning.html +[rubocop-release-policy]: https://docs.rubocop.org/rubocop/versioning.html#release-policy +[major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html + ### A Gem Family The `rubocop-lts` series of gems has a version supporting any version of Ruby you need. They can be used as development dependencies for libraries or applications. @@ -147,11 +164,10 @@ [rr26]: https://gitlab.com/rubocop-lts/rubocop-ruby2_6 [rr27]: https://gitlab.com/rubocop-lts/rubocop-ruby2_7 [rr30]: https://gitlab.com/rubocop-lts/rubocop-ruby3_0 [rr31]: https://gitlab.com/rubocop-lts/rubocop-ruby3_1 [what1_8]: https://gitlab.com/rubocop-lts/rubocop-ruby1_9#what-about-ruby-18 -[rubocop-matrix]: https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/compatibility.adoc#support-matrix ## 🗿 Stable All releases of this gem are stable releases. We do not release new versions for every release of `rubocop`. @@ -201,11 +217,14 @@ But this gem shoehorns rubocop into SemVer... so `NewCops` is now safe(r)! If you use a dependency greening tool like GitHub's `dependabot`, or the excellent alternatives [depfu](https://depfu.com/), and [`renovate`](https://www.whitesourcesoftware.com/free-developer-tools/renovate/), then you can see the effect of a minor / major version bumpin your CI Build! ## Development -After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. +After checking out the repo, run `bin/setup` to install dependencies. +Then, run `rake spec` to run the tests w/ coverage, +or `bin/rake` to run tests w/ coverage, and linting. +You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## ⚡️ Contributing @@ -242,11 +261,11 @@ [org-logo-source]: https://unsplash.com/photos/yaSLNLtKRIU [org-logo-license]: https://unsplash.com/license ### © Copyright -* Copyright (c) 2022 [Peter H. Boling][peterboling] of [Rails Bling][railsbling] +* Copyright (c) 2022 - 2023 [Peter H. Boling][peterboling] of [Rails Bling][railsbling] [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year ## 🤝 Code of Conduct @@ -297,11 +316,9 @@ [coderme]:http://coderwall.com/pboling [followme-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow [tweetme]: http://twitter.com/galtzo - -[politicme]: https://nationalprogressiveparty.org [documentation]: https://rubydoc.info/github/rubocop-lts/rubocop-ruby2_7/main [source]: https://github.com/rubocop-lts/rubocop-ruby2_7/