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

Overview: Creating standalone plugins #656

Closed
34 tasks done
felixarntz opened this issue Feb 16, 2023 · 15 comments · Fixed by #863
Closed
34 tasks done

Overview: Creating standalone plugins #656

felixarntz opened this issue Feb 16, 2023 · 15 comments · Fixed by #863
Labels
Infrastructure Issues for the overall performance plugin infrastructure [Issue] Overview Provides an overview of a specific project [Plugin] Performance Lab Issue relates to work in the Performance Lab Plugin only

Comments

@felixarntz
Copy link
Member

felixarntz commented Feb 16, 2023

Originally discussed in #618, this issue acts purely as an overview of all the issues related to creating standalone plugins for the modules that are currently part of the Performance Lab plugin, and then removing the corresponding modules from the PL plugin in favor of the new standalone plugins.

Milestones

This effort should be broken down into 2 milestones:

  1. Publish the modules available as standalone plugins
  2. Remove the modules from the plugin

The first milestone will unblock the more urgent goal of having standalone plugins for every performance feature project, as well as therefore having a clear path forward also for new features.

The second milestone will ensure those standalone plugins are the canonical way to test those features, with the Performance Lab plugin still providing supporting features e.g. related to performance measurement and management of the performance related features and their plugins.

While the first milestone does not change anything notable for existing Performance Lab plugin users, the second one will require administrators to install/activate the new plugins and can therefore be considered a breaking change. As such, the second milestone should eventually be released with a major version number change, as 3.0.0.

List of issues

The list below includes all related issues, somewhat ordered by their intended sequence of execution. Important to note:

  • Some of the issues can be worked on in parallel.
  • The issue for milestone 2 can be defined as milestone 1 is being worked on, however milestone 2 issues should only be implemented / merged after milestone 1 has been completed.
  • The list is not necessarily comprehensive, more issues will be added as needed.
  • You can always get a list of issues also using the "Creating standalone plugins" label.

Milestone 1

Milestone 2

2a (2.8.0 release)

Follow-up PRs:

2b (3.0.0 release)

2c (3.0.0 release polishing)

Follow-up Issues & PRs:

See #911 for somewhat related discussion, which however is not a blocker to this effort. Additionally, documentation for how to write a module will need to be updated after the 2b changes, and basic documentation for how to start a new plugin in the repo should be added too.

@felixarntz
Copy link
Member Author

See #699 for the PR that brings all the initial Milestone 1 work into trunk, in preparation for tomorrow's release of the first standalone plugin from this repository, WebP Uploads.

Related PL plugin changes (which are minimal) will be included in the upcoming 2.2.0 release.

@felixarntz
Copy link
Member Author

Reopening as the "2b" part (for Performance Lab 3.0 release, tentatively March) is still left to do.

I'm planning to open issues for that this week.

@felixarntz felixarntz reopened this Jan 8, 2024
@felixarntz
Copy link
Member Author

felixarntz commented Feb 28, 2024

@joemcgill @mukeshpanchal27 @swissspidy @westonruter @thelovekesh Now that the feature/modules-to-plugins branch has all the foundational infrastructure set up (as far as I can tell), let's take a step back and consider the next steps.

There are still a few discussions going on regarding whether or when we should go through with the plan to remove the legacy modules from Performance Lab. For that reason, I would advise to not merge #1011 and #1019 until that decision has been finalized. Potentially we may delay the 3.0.0 release until the decision as well.

Here are two alternative ideas how we can deal with that in a way that gets us out of the complex branching limbo state we're currently in:

Let me know your thoughts on those ideas.

@thelovekesh
Copy link
Member

+1 for the second choice. For any immediate patch releases, we can focus on 2.9.x. This allows us to streamline the module removal and related tasks on trunk for 3.0.0(based on the decision) without any complex branching limbo state.

@westonruter
Copy link
Member

I also lean toward option 2.

@swissspidy
Copy link
Member

Option 2 👍

@felixarntz
Copy link
Member Author

felixarntz commented Feb 28, 2024

Thanks, looks like option 2 is already with enough votes to be a decision :)

Before we do that, I just want to double check: I believe both https://github.com/WordPress/performance/blob/trunk/.github/workflows/deploy-dotorg.yml and https://github.com/WordPress/performance/blob/trunk/.github/workflows/deploy-standalone-plugins.yml act on the branch that a release is created from, correct? I just want to make sure that if we release a 2.9.x from the future 2.9.x branch, both Performance Lab and the standalone plugins will come from that branch.

Oh, and on another note: I just noticed we merged https://github.com/WordPress/performance/blob/feature/modules-to-plugins/.github/workflows/deploy-standalone-plugins.yml with the TODOs still in place. Let's fix that :)

@mukeshpanchal27
Copy link
Member

mukeshpanchal27 commented Feb 29, 2024

I also go with Option 2.

Oh, and on another note: I just noticed we merged https://github.com/WordPress/performance/blob/feature/modules-to-plugins/.github/workflows/deploy-standalone-plugins.yml with the TODOs still in place. Let's fix that :)

I will open PR that removes those TODO.

@mukeshpanchal27
Copy link
Member

The PR #1020 ready for review.

@joemcgill
Copy link
Member

@felixarntz I agree mostly with option 2, the only modification I would suggest is that we don't need a new release branch for any 2.9.x versions, as we already have release/2.9.0 that we can use to prepare and release any minor releases.

The main thing we may need to be aware of is that many github actions will run the version that is described in the default branch of the repo, so we should review our workflows to make sure we won't be breaking anything (particularly deployment workflows) by merging changes to workflows prematurely.

At this point, the sooner we can merge the current feature/modules-to-plugins into trunk the less complicated I think additional work during this release cycle will be.

@felixarntz
Copy link
Member Author

@joemcgill

the only modification I would suggest is that we don't need a new release branch for any 2.9.x versions, as we already have release/2.9.0 that we can use to prepare and release any minor releases.

I just checked and there are a few minor fixes in trunk already that could be part of the next 2.9.x release. The other thing is that so far the release branches have been used as basically an exact representation of the release from which to create working branches for patch releases as necessary. Basically the branch called 2.9.0 is for the 2.9.0 release, not the "2.9" overall branch, like e.g. WordPress core has it. This may not make the most sense now that I think about it, but so far it's been like that. For the current situation I'd prefer we'd have a dedicated branch for 2.9.x (which could be called 2.9.x or just 2.9). We could iterate on the overall branching strategy in the future.

@felixarntz
Copy link
Member Author

I just ended up creating a 2.x branch for that purpose. Really, it doesn't even need to reference 2.9, it's simply the branch for anything pre-3.0. Eventually we'll remove it, and who knows if there's nothing significant in it, we may never even release another 2.9.x version.

The PR #1021 to merge feature/modules-to-plugins into trunk is waiting for two approvals :)

@joemcgill
Copy link
Member

This may not make the most sense now that I think about it, but so far it's been like that. For the current situation I'd prefer we'd have a dedicated branch for 2.9.x (which could be called 2.9.x or just 2.9). We could iterate on the overall branching strategy in the future.

Thanks for the explanation. Given that we also have tags for each release, having additional branches that are release specific, and not for the purpose of being able to handle bug/security fixes related to one of our previous major releases, probably isn't useful, but we can discuss updating our branching strategy elsewhere.

@felixarntz
Copy link
Member Author

I have opened issues for the additional polishing work discussed earlier today, which includes removing modules entirely and revising the UI to focus on features rather than plugins.

See the 2c entry in the issue description for those issue links.

@joemcgill
Copy link
Member

I've changed #1032 to be an overview issue where we can define and collect the tasks to be done to enhance the onboarding experience as a separate epic. We can now consider the initial project for transitioning modules to standalone projects to be complete and close this epic.

@sstopfer sstopfer added [Plugin] Performance Lab Issue relates to work in the Performance Lab Plugin only and removed Creating standalone plugins [Plugin] Performance Lab Issue relates to work in the Performance Lab Plugin only labels May 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Infrastructure Issues for the overall performance plugin infrastructure [Issue] Overview Provides an overview of a specific project [Plugin] Performance Lab Issue relates to work in the Performance Lab Plugin only
Projects
Status: Done 😃
Development

Successfully merging a pull request may close this issue.

7 participants