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

Mechanism vs. Communication #5

Open
megphillips91 opened this issue Mar 18, 2022 · 7 comments
Open

Mechanism vs. Communication #5

megphillips91 opened this issue Mar 18, 2022 · 7 comments

Comments

@megphillips91
Copy link

megphillips91 commented Mar 18, 2022

Maybe we could tackle this in two parts and benefit in two ways.

Two Parts:

  • how do we accomplish requiring plugins from plugin code? (the mechanism)
  • how do we communicate to the site administrator and provide freedom of choice? (the communication)

Two Benefits:

  • we could encapsulate the solutions with better separation of concerns
  • we could establish and seek more partners across the community who are already working on the communication vehicle and therein make the solution more 'future proof'

Just a suggestion :)

@megphillips91 megphillips91 changed the title The mechanism vs. Communication Mechanism vs. Communication Mar 18, 2022
@afragen
Copy link
Member

afragen commented Mar 18, 2022

At this particular time we're really looking for architecture and design feedback. Once we've settled on those decisions we can tackle code specifics, ie mechanism. The current implementation is to use a Requires Plugins header. I believe that decision has been made and it provides for a simple implementation by the plugin developer.

It's a bit out of scope to build a new user notification system in core. My assessment is that the project will utilize whatever core methods are available to it for a notification system. Currently that is using the admin_notices hook.

@megphillips91
Copy link
Author

I think there is a group exploring options here: https://jonathanbossenger.com/2022/02/28/what-does-a-better-notification-system-for-wordpress-actually-look-like/

@mrwweb
Copy link

mrwweb commented Oct 19, 2022

In my recent testing, I noticed a number of instances where the placement of action links/buttons seemed to impede clear communication of the mechanics. Rather than opening a new issue, I'll just leave my suggestions here for now:

I wish the [notification] message included the name of the plugin with the dependency. Something like “There are additional plugins required by {Plugin Name}. Go to Dependencies to install.”

I also saw a “There are additional plugins that must be installed.” notice on the Dependencies page. It’s unclear that you’re on the page that requires taking action, so I wonder about hiding that message all together or making it clearer like “Install plugin dependencies in the list on this page.”

The fact that “Cannot Activate” and the “Requires” line are visually far apart was confusing to me, even when I knew what I was looking for. What about “Cannot Activate without Dependency” or even “Install Dependency Before Activating” and the moving the “Requires” line below the other plugin action links.

When the dependency is inactive, the plugin that requires a dependency still cannot be activated, but there isn’t an obvious forward path anymore. Could the “Cannot Activate” message become “Activate this plugin and dependencies” link?

When clicking the installed dependency’s plugin name in the “Requires” list, the modal’s button is deactivated and says “Latest Version Installed”. I would expect this to be an activate “Activate”.

@afragen
Copy link
Member

afragen commented Oct 20, 2022

I wish the [notification] message included the name of the plugin with the dependency. Something like “There are additional plugins required by {Plugin Name}. Go to Dependencies to install.”

We have opted for a single generic admin notice as opposed to an admin notice for each plugin with a dependency. The notice also provides a link to a new Dependencies tab on the Install Plugin page.

I also saw a “There are additional plugins that must be installed.” notice on the Dependencies page. It’s unclear that you’re on the page that requires taking action, so I wonder about hiding that message all together or making it clearer like “Install plugin dependencies in the list on this page.”

It should be clear that from the Install Plugins page and uninstalled plugin should have an Install button. If there is no button the plugin is likely a premium plugin and/or not hosted in the plugin repository.

There is some actual text on that page but there is no method of having the plugin inject it. It is in the original PR. https://github.com/afragen/wordpress-develop/blob/9472bd992aacdda73106372bfc1d5f014260931d/src/wp-admin/includes/plugin-install.php?L410-412#L410-L412

The fact that “Cannot Activate” and the “Requires” line are visually far apart was confusing to me, even when I knew what I was looking for. What about “Cannot Activate without Dependency” or even “Install Dependency Before Activating” and the moving the “Requires” line below the other plugin action links.

Cannot Activate is replacement text for the normal Activate link. The Requires and Required by lines are located in the description of the plugin.

When the dependency is inactive, the plugin that requires a dependency still cannot be activated, but there isn’t an obvious forward path anymore. Could the “Cannot Activate” message become “Activate this plugin and dependencies” link?

You cannot activate a plugin that has outstanding dependencies. A dependency must be installed AND active.

When clicking the installed dependency’s plugin name in the “Requires” list, the modal’s button is deactivated and says “Latest Version Installed”. I would expect this to be an activate “Activate”.

This View details modal is the standard one in core. I assume that the plugin is installed. There has never been an Activate button here.

@mrwweb
Copy link

mrwweb commented Oct 20, 2022

@afragen Everything you clarified I understood before providing this feedback. The gist of all my comments are that the way the feature and its limitations are communicated—both the words themselves and the link/message placement—felt like they could be improved to reduce user frustration and confusion. Hopefully with that lens my comments will make more sense. I'm happy to clarify if that would be helpful.

@afragen
Copy link
Member

afragen commented Oct 21, 2022

@mrwweb Can you provide mock-ups of what your ideas would look like?

Assume there are 10 dependencies that need to be installed for purposes of illustration.

Thanks.

@mrwweb
Copy link

mrwweb commented Oct 27, 2022

The fact that “Cannot Activate” and the “Requires” line are visually far apart was confusing to me, even when I knew what I was looking for. What about “Cannot Activate without Dependency” or even “Install Dependency Before Activating” and the moving the “Requires” line below the other plugin action links.

I want to call out a similar comment on this point from @carolinan:

I found this experience confusing. I think there needs to be a notice explaining why I can not select or deactivate the plugin.

I think doing something like this would go a very long way toward addressing the concern:

Plugin details in WordPress admin where "Requires" line is directly below the activate plugin link position

When the dependency is inactive, the plugin that requires a dependency still cannot be activated, but there isn’t an obvious forward path anymore. Could the “Cannot Activate” message become “Activate this plugin and dependencies” link?

Plugin details in WordPress admin where the "Activate" link is replaced with "Activate plugin and dependencies"

This View details modal is the standard one in core. I assume that the plugin is installed. There has never been an Activate button here.

It sounds like it wouldn't be possible to add a "Activate" button to the modal for when the plugin is activated. Therefore, it would be much more valuable to provide a way forward that lets the user activate it.

Plugin details in WordPress admin where the Required plugin's name is not a link and an "Activate Plugin" link is after it

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

No branches or pull requests

3 participants