Skip to content

PHPCS 4.0: Open invitation to join live stream April 14, 15, 17 and 18, 2025 #924

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

Closed
jrfnl opened this issue Apr 4, 2025 · 16 comments
Closed
Milestone

Comments

@jrfnl
Copy link
Member

jrfnl commented Apr 4, 2025

As previously announced in #120, to have confidence in the PHPCS 4.0 release, I have been working behind the scenes to recreate the 4.0 branch as a fresh, improved branch with atomic and comprehensive commits for each change.

Aside from that I've also been preparing the additional changes which have been previously announced for the 4.0 release, including the majority of changes announced well before the repo take over, but never actioned.

I'm now reaching the point that this work is ready for the next step: getting it out in the open and replace the "old" 4.0 branch.

Options for publishing the new 4.x branch

Now, to do this, there are a number of options:

  1. Nuclear option: force push my local branch over the "old" 4.0 branch and be done with it.
    Pros: quick & straight forward to execute.
    Cons: does not allow for review or discussion about the changes, not transparent, does not allow for comparison between the "old" version of a change and the "new" version.
  2. Push a new 4.x branch with all commits and be done with it.
    Pros: quick & straight forward to execute, allows for comparison between the "old" version of a change and the "new" version.
    Cons: does not allow for review or discussion about the changes, not transparent, likely to lead to confusion about which branch will be the "real" 4.0 release.
  3. Create a new 4.x branch and create one humongously large PR with all the changes, leave this PR open for about a week to allow for review (if anyone dares to attempt it) and then merge if there are no objections. Remove the old branch once done.
    Pros: transparent, allows for review and discussion, allows for comparison between the "old" version of a change and the "new" version.
    Cons: makes reviewing the individual changes really hard, would make discussion about a subset of the changes hard, reviewing that PR would be daunting due to its size.
  4. Create a new 4.x branch and create successive PRs for all changes to this new branch (slow version), leave each PR open for about a week to allow for review and then merge if there are no objections. Remove the old branch once done.
    Pros: fully transparent, allows for review and discussion, allows for comparison between the "old" version of a change and the "new" version.
    Cons: would likely take over a year before all PRs would be merged, would waste a lot of time in rebasing and conflict resolution in the mean time until everything has been merged.
  5. Create a new 4.x branch and create successive PRs for all changes to the new branch (quick version), and merge these in rapid succession, with or without review. Remove the old branch once done.
    Pros: relatively quick, fully transparent, allows for review and discussion in individual tickets (even after they have been merged), allows for comparison between the "old" version of a change and the "new" version.
    Cons: time for review and discussion is severely limited.

Chosen option: rapid successive PRs, but with a twist

As I value transparency and input from the community, but also do not want to delay the 4.0 release by another year, I have made the choice to go for option 5, but with a twist: I will be live streaming while I'm doing this.

So, this is an open invitation for anyone interested to join the live stream and (live) review the PRs for the 4.0 branch (while we're waiting for CI to pass 😉).

Joining the live stream will give you a front-row seat for PHPCS 4.0 and allows for getting the inside scoop.

  • There will be plenty of time to ask any questions you have about what's coming in PHPCS 4.0.
  • There will be time to discuss any differences between the original branch and the new branch.
  • There will be time to review PRs and discuss the changes.
  • And time permitting, I'd be happy to discuss anything else PHPCS related you'd like to discuss.

I expect it will take about four days to get everything pulled and merged.

Where and When

Dates: April 14, 15, 17 and 18
Location: https://whereby.com/phpcs (no login or software install needed)

Monday April 14 Tuesday April 15 Thursday April 17 Friday April 18
08:30 - 12:00 08:30 - 11:00 08:30 - 11:00 08:30 - 11:30
13:30 - 16:00 12:00 - 16:00 12:30 - 16:00 12:30 - 16:00
18:00 - 20:30 18:00 - 20:30 18:00 - 20:30 18:00 - 20:30

All times listed are in UTC.

You can join for as little time or as long as you like. There are no obligations, though I value any input you can give review-wise.

If you are unsure when to join/when a change you are interested in will be handled, the order of the PRs/commits will be roughly as follows:

  1. Merge the PRs for the "Last 3.x" minor adding hard deprecations.
  2. Create the new 4.x branch and update CI and such.
  3. Remove everything that will be removed.
  4. Changes to the test framework.
  5. Changes to existing features.
  6. Tokenizer changes.
  7. New features.
  8. Various miscellaneous changes, like changes to the CS rules applied to PHPCS itself, code modernizations, documentation updates etc.

The precise timing will depend on how many people join, how much feedback the PRs get and how much discussion is had.
Once the live streams have started, I will post updates in this ticket every so often with an indication of where we are at that time.

After the live stream

  • Once everything has been merged to the new 4.x branch, the "old" 4.0 branch will be removed.
  • A 4.0.0-RC1 release will be tagged.
  • Please test and report any problems you find. Depending on feedback received, additional RC releases will be tagged.
  • And providing no significant problems are discovered, the real 4.0.0 release will then follow about a month later.

Getting ready for PHPCS 4.0

Aside from recreating the branch, I've also been preparing the necessary changes to the Wiki pages, including preparing both an "end-user" (ruleset maintainer) and a "developer" (external standards/integrations) upgrade guide for upgrading to 4.0.

The intention is to publish the wiki changes, including the upgrade guides, at the same time as the RC release. This should allow maintainers of external standards to start preparing for the 4.0 release once the RC has been tagged (maintainer time permitting, of course).

Feedback on these upgrade guides will, of course, be very welcome too.


/cc @asispts @dingo-d @fredden @GaryJones @greg0ire @kukulich @michalbundyra @Ocramius @sirbrillig @stronk7 @weierophinney @wimg

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

Live stream has started....

Unfortunately, I've had to lock the room again within the first half hour as apparently a coding live stream is not safe from abusive trolls....

Knock to enter (and be sure to enter a name).

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

I expect today will be spend on the first three bullets:

  1. Merge the PRs for the "Last 3.x" minor adding hard deprecations.
  2. Create the new 4.x branch and update CI and such.
  3. Remove everything that will be removed.

I've started on [1].

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

First instalment of the livestream has just finished.
Step 1 and 2 are done and the preliminaries for [3] (removing everything that will be removed) have been set up & merged.

After lunch (13:30 UTC), we'll continue with some 20+ PRs to remove things.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

The biggest PR of all has just been opened..... Removing 18.000+ lines of code (CSS/JS drop).

#983

I will leave this PR open until the evening live stream and would be happy to get any feedback and/or answer any questions you may have about that PR during this evening's livestream.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

If anyone still wants to discuss the CSS/JS drop, please join the live stream now. If there are no objections, I will merge the PR within the next hour or so.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 14, 2025

I've just opened the last 5 PRs related to removed features. These will be up for discussion in the live stream tomorrow morning (08:30 UTC).

After that, we'll move on to the changes to the test framework.

That's it for today. Thank you everyone who joined the livestream so far, I've had a blast! Looking forward to doing it again tomorrow 👋🏻

@jrfnl
Copy link
Member Author

jrfnl commented Apr 15, 2025

.... and we're live again....

Next up: the last few PRs with removals and then the changes to the test framework. This last part will be particularly interesting for external standard maintainers who use the PHPCS test framework to test their own sniffs.

After that, we'll move on to "Changed functionality".

@jrfnl
Copy link
Member Author

jrfnl commented Apr 15, 2025

Starting the afternoon session now.

I expect the first hour will be spend on the remaining changes to the test suite.
After that we'll move on to changed functionality, including some impactful changes to the Ruleset handling.
I expect we'll reach the changes related to output handling (STDOUT vs STDERR) towards the end of the afternoon.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 15, 2025

We'll be starting on the changes to the Ruleset reading in about ten minutes. The implementation for those changes is a completely different one compared to the original 4.0 branch, so if you want to understand the difference (and what's changing!), please join us in the livestream.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 15, 2025

All test changes are in. First 7 PRs for "changed functionality" as well, including the Ruleset reading changes mentioned above.

For the evening session, there are already three PRs open for review, after that we'll have three tiny PRs with error code changes and then a BIG PR again - the changes to selectively redirect output to STDERR.

Evening livestream will start at 18:00 UTC.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 15, 2025

The livestream has ended for today. Thanks everyone who joined and participated. Your interest and feedback is much appreciated.

We discussed PR #1010 (output to STDERR) in detail, including how I tested the PR, as with the current setup automated testing of that change is pretty difficult.

As that PR is quite large, I will leave it open till Thursday morning so people can still have a more detailed look at the code changes.

The next group of PRs will all need the STDERR PR to have been merged first, but I will open them anyway to allow you all to have look over the next ~36 hours before we continue with the livesteam.

With the merge of #1010 (and two add-ons to that PR), the "Changed functionality" PRs are largely done and we'll continue onwards to the "Changes to the Tokenizer", which should be the most interesting part for anyone involved in writing and maintaining sniffs.

See you all Thursday!

@jrfnl
Copy link
Member Author

jrfnl commented Apr 17, 2025

Afternoon session starting now. We'll be talking through what is changing in the token streams which sniffs consume, so if you write sniffs and want the low-down on what's changing: join us now!

@jrfnl
Copy link
Member Author

jrfnl commented Apr 17, 2025

I've just opened the PR with the tokenizer changes which is likely to have the biggest impact on sniffs: #1020 (namespaced names as single token).

We'll discuss the PR in the evening session starting at 18:00 UTC.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 17, 2025

We've finished the tokenizer changes. I've opened the last five functional change PRs for the "Added features" category.
Tomorrow morning will be about those changes.

And then there are some changes I've kept aside as "not sure whether these should go in".... I'd love second opinions on those and we'll be discussing those tomorrow afternoon. Please join if you can.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 18, 2025

We're finished with the pre-prepared functional PRs.

There are still some things to do before I will tag the pre-release, most notably the PR to change the exit codes (#184), which I didn't manage to finish before starting the livesteams.
I'm hoping to get to that next week.

There are also still some "maybe merge/maybe leave" branches on which I'd like opinions.

And then there are the CS changes, including adding parameter type declarations, but I'm leaving those to just before the actual 4.0.0 release to not make things more difficult for merging PRs for master up into the 4.x branch.

I will still open the livestream this evening, in case there is anyone who wants to discuss the changes in 4.0 and/or the "maybe" branches, but if nobody turns up, I'll close the stream early.

@jrfnl
Copy link
Member Author

jrfnl commented Apr 18, 2025

And that's a wrap...! The livestreams have now finished.

I've really enjoyed the chats I've had with a wide range of people from PHPCS contributors, to maintainers/contributors to external standards, ruleset maintainers and end-users. Thank you everyone who attended and participated in the livestreams!

I might do one more session in about ten days or so when I've finished the last few things needed before I can do a pre-release.
If so, I will announce such a session a few days in advance in this ticket. Watch this space if you missed out this week and still want to have a chat about PHPCS 4.0.

For now, I'm closing this ticket out as "finished".

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

No branches or pull requests

1 participant