Block Directory plugin guidelines

As mentioned in this week’s meta meeting, the draft guidelines for plugins submitted to the Block Directory are available for discussion:

http://wayback.fauppsala.se:80/wayback/20200212163045/https://github.com/WordPress/wporg-plugin-guidelines/pull/68

Your feedback and suggestions are welcome.

As a general update on the Block Directory status:

  • Blocks can be submitted to the directory using the regular plugin submission form. Make it clear that it’s a block in your description and/or correspondence with the plugin review team, and we’ll include it in the Block Directory.
  • The Block Directory has a small number of block plugins already available. We’d love to add more, so please submit your plugins or let us know about any existing plugins that meet the guidelines.
  • If you’re running Gutenberg as a plugin, you can install block plugins directly from the editor by enabling the Block Directory experimental flag:

Is there any discussion going on regarding the potential nightmare of external frontend dependencies that installing single blocks from a block directory will open up?

The last thing we need is more copies of fontawesome or select2 being enqueued…

That’s a great question. It’s something we’re aware of but don’t yet have a clear solution to. It’s likely that it needs to be tackled as a Gutenberg architectural problem. It doesn’t only affect single block plugins, it’s an issue for all blocks (and indeed themes and plugins in general).

I’m not sure I agree with the guidelines surrounding naming and promotional links/messages.

While it makes sense to require the downloaded block itself provide features that don’t need any payment, why would a link to learn more about additional premium features (sales of which can help the developer support the free version) not be allowed? For example on the bottom of the block’s settings output? Having guidelines around taking over other parts of the UI or not including any admin notices above the editor would make sense, though.

Also if blocks should be generically named “Image Grid” how would a user differentiate one image grid block from another in the block listing?

I agree with this.

As it stands, the intention of the guidelines appears to be to keep the size of the block directory as small as possible by removing any commercial interests from the table.

Would the WordPress plugin directory have been as vibrant as it is if these guidelines were applied there?

I think not, and I don’t really understand why there has to be such a different standard applied here.

From my understanding, the purpose of the block directory is to make it easy and seamless to create content. That’s why it’s built into the block editor itself as part of the flow. Otherwise, it could just be a section in the regular plugin directory.

To that effect, any upsells here are the definition of obtrusive. (Which @ericdaams is forbidden by the theme directory, and that one seems to be doing just fine). Something that’s prompting you to leave the creation process.

Maybe there’s room to concede an upsell link in the info box before installing it sure, and dashboard notification spam, albeit hated by users, should be allowed too imo. But let’s please leave the content creation flow distraction free. No need to clutter up the block settings (ps: for donation links too – please keep them off post-edit page).

Personally I’d rather an in-context, relevant link when managing the block versus having all my blocks spewing forth dashboard notifications. 🙂

I get that aggressive upselling sucks and is distracting. But why is offering more features related to the direct functionality of the block considered harmful?

Consider also that a block is purely client side, with the bare minimum of PHP scaffolding to set it up. That means that some functionality is effectively impossible to build into the block plugin itself. Why then not allow for the possibility of a single block plugin that does what it says it does, but can be coupled with a more feature-rich partner plugin that provides enhanced functionality?

Wouldn’t that be a win for users?

I totally hear ya – dashboard spam is (almost) the worst.

To be clear, it’s not the act of upselling that I think it’s harmful – it’s the act of trying to send someone out of their workflow.

If a user is creating a post – let them. That’s not the time to be trying to get them to leave the page to install something else (even more ardorous if it’s premium, and requires you visiting a website, paying, and then uploading the plugin, all just to get back to editing).

PS: perhaps I’m just not imaginative enough, but while I can picture a block paywalling some of its settings, I’m struggling to imagine a ‘more feature-rich partner plugin’ that would somehow be relevant to the user once they’re already in the block editor. If so, there’s no benefit to the user for it being advertised in Gutenberg vs the dashboard.

Again it comes down to the purpose of the block directory (and Gutenberg in general I guess): it’s there to make content creation easy and immediate. IMO anything that gets in the way of that (be it a clickbait block that requires you to ‘unlock’ it to do what you want it to, a recommended block for something you’re not trying to use and thus didn’t search the block directory, or an upsell link taking you out of the editing process) is not a win for users.

(Reminder: I’m pro upsells for block directory plugins, just not in the editor itself).

I’m looking ahead to when the primary method of creating and editing a website is via the block editor, both in the front end and the back end. Because that’s not yet the case there are other opportunities for themes and plugins to upsell elsewhere in the dashboard.

If there is a premium version of the same block with additional features, and those features would allow them to do what they’re looking to do (ie. additional design or filtering options for content), showing a link in the block setting itself seems relevant.

Ideally there would be a way for them to seamlessly purchase and install the premium supported plugin without leaving the flow but I think that’s a long way off 🙂

What would be the best way to get an edit in place to be a little more inclusive of at least a subtle upsell link within the block settings itself?

There has to be some sort of middle ground here. If the current number of block plugins is any indication, the number of people willing to make blocks is pretty small. If you take away any possibility of making money off blocks that small number will drop even further.

The community needs blocks and unless someone is going to pay developers to make and maintain free blocks they need to have a way to be compensated for their time. We’ve trained users to believe that anyone who tries to make them pay for themes or plugins is bad and I think that’s a mistake. Guidelines like this just reinforce that belief. Companies wouldn’t have to resort to “dashboard spam” if there was an easy way to ask for donations and users weren’t conditioned to believe that they are entitled to get everything for free.

If it was me I’d let people do whatever they want on the block properties tab just don’t let them put crap anywhere else and I think that would be fine. It wouldn’t interfere with the use of the block nor would be cause undue interference with WordPress in general. I think a better solution would be to build in a mechanism that made is easy to ask for donations and better yet trained users that if they find something useful and want to see it continue they really should donate to the developers.

A first version of the directory has to be very restrictive, in order to define the thing in a way which makes sense. The idea here is to build a subset of the plugin directory with a very specific purpose and a very different interface. So yes, commercial interests are definitely not welcome in version 1. This is an open source project, if you’re expecting to use freely provided community resources as advertising, you’re not going to be welcomed to the new thing.

That said, first version. Multiple block plugins are also not welcome. Because that’s way more complicated and you don’t build a project backwards. You have to work your way towards the goal, one step at a time.

As for your suggestion that we condition users to expect payment mechanisms… “free software”. I think you need to examine the implications of that phrase. We allow some types of upsell in plugins. “Allow” being the important word there. We don’t have to do that.