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/