PHPCSStandards / composer-installer

Composer installer for PHP_CodeSniffer coding standards
https://packagist.org/packages/dealerdirect/phpcodesniffer-composer-installer
MIT License
559 stars 36 forks source link

Support Composer 2.0 #111

Closed jrfnl closed 4 years ago

jrfnl commented 4 years ago

Proposed Changes

Minimal changes to updated the plugin to support Composer 2.0 which is expected late May/beginning of June.

Tested by @danepowell and myself (Windows 7). Further testing would be very welcome!

Fixes #108

@mjrider @Potherca Should this be added to the 0.6.3 or 0.7 milestone ?

Related Issues

Changes are based on guidance found in:

Potherca commented 4 years ago

I can't really say anything about the code change other than it looks fine to me.

Regarding the version, I've put at on 0.7.0.

The rational is that, since Composer is going from v1 to v2 (major version change), it is allowed to be backward incompatible. This plugin might need to follow and also implement backward incompatible changes. That would mean support goes into the next major version for us as well.

Since we are not (yet) at v1 that would mean 0.7.0.. I know we are not breaking anything with these changes yet, but I tend to be conservative (i.e. careful) with versioning. I'd rather bump a major for nothing than break a minor by accident.

@jrfnl Do you concur? Or is my reasoning to thin? (I'm having trouble making isolated decisions at the moment, so a second opinion on is appreciated).

jrfnl commented 4 years ago

Do you concur? Or is my reasoning to thin?

@Potherca My own reasoning was similar, which is why I was asking about the milestone.

This PR doesn't break BC with Composer 1.x, but does contain a changed dependency, i.e. can be considered a "significant" enhancement, so I'm happy for it to be in 0.7.0.

My main concern about making this 0.7.0, is that lots of people don't realize that "below 1 minors" in Composer are treated as majors and they actively need to change/update their composer.json to upgrade. As the stats on Packagist don't show details per minor anymore, I find it hard to get insight into how conscientious people are about updating this dependency and how many people are still on outdated versions.

The other side of that argument is that I know that the next release for at least five external PHPCS standards (WordPressCS, PHPCompatibility - including all framework/polyfill based substandards, VariableAnalysis, Security, PHPCSExtra) will be a >= 1 major and that those will all include a change making this plugin a dependency of the standard. That means that people updating to those standards should be informed via the changelog of those standards that they don't need to include a Composer PHPCS Plugin themselves anymore as this one will be included by default. Hopefully that will mean that a lot of the "end-user" projects will remove the direct dependency in favour of letting the standards manage it and, for the above mentioned standards, I know they will have the dependency setup in a flexible manner as described in the readme.

So there's that.

Seldaek commented 4 years ago

As per https://packagist.org/packages/dealerdirect/phpcodesniffer-composer-installer/stats#v0.5.0 ( you gotta click on "Versions" to get patch versions) it seems the bulk of people are still on 0.5, then 0.6.2 and 0.4.4 have a big chunk of users too.

jrfnl commented 4 years ago

@Seldaek Thanks for that. I don't know why I couldn't find it. Glad to have the insight now.

@mjrider @Potherca Seeing that approx 20% of users has so far upgraded to 0.6.x and +/- 65% is still on 0.5.x, from that perspective, I think it won't really make much difference whether we release it as 0.6.3 or 0.7.0 as most users still need to change to the next major anyway, so when they do, changing to 0.6 or 0.7 won't make a difference to them.

mjrider commented 4 years ago

I would go for 0.7 because it is more then a bugfix

jrfnl commented 4 years ago

Force pushed the same commit to trigger the Travis run on .com.

jrfnl commented 4 years ago

@Potherca @mjrider Have either of you had a chance to test this PR yet ? How are we going to move this PR forward to make sure there is a tagged release by the time Composer 2.0 comes out ?

jrfnl commented 4 years ago

@Potherca @mjrider Anything I can do to move this PR forward ?

mxr576 commented 4 years ago

Looks good to me.

Potherca commented 4 years ago

@jrfnl Thanks for the ping, with me starting work on @pdsinterop, this got shuffle to the bottom of the pile.

Taking a look at things now. 👍

jrfnl commented 4 years ago

@Potherca Thanks for checking it out now.

I think it would be a good idea to release this soonish, but most definitely before Composer gets to a 2.0-RC release. Do you agree ? And if so, what is needed to make that happen ?

Potherca commented 4 years ago

Already on it! Hold on... 🕕

jrfnl commented 4 years ago

@Potherca FYI: I've updated the milestones in the mean time to reflect the reality that the next release will be 0.7.0, not 0.6.3.

Potherca commented 4 years ago

I noticed, good work! (I was called away in the middle of my release activities, hence my delay).

jrfnl commented 4 years ago

@Potherca No worries. Thanks for getting this done!

jrfnl commented 4 years ago

@Potherca Is there a release tweet I can retweet ?

Potherca commented 4 years ago

I'm afraid not... We don't have/do official release Tweets (yet?).

Feel free to create original material...

jrfnl commented 4 years ago

FYI: https://twitter.com/jrf_nl/status/1276186600461029381