The Meta team is responsible for maintaining and managing WordPress.org websites. Our work is mostly done on the meta trac. If you see a bug, file a ticket!
Plugins that are in the Block-Enabled section of the Plugin Directory can now automatically list the blocks that they provide. For example:
If available the list is displayed for now in the Description section, between screenshots and the FAQ. As you can see it’s a rudimentary list to begin with, that simply lists the block names and titles. We plan to improve that over time, and to do that we could use your feedback and help.
Because of the difficulty of reliably extracting block metadata from code, the best way plugin developers can ensure their blocks are reliably indexed is to use block.json files as recommended by the Block Registration RFC. We’ve done our best to parse this info out of existing source code, but less than half of Block-enabled plugins were easily discoverable this way. The RFC isn’t yet final, but by experimenting with it now plugin developers can help with feedback and suggestions both for the RFC and for the plugin directory’s use of that metadata.
I’ve opened a general ticket #4345 for discussing improvements to the plugin directory side. The RFC for the block.json specification can be discussed over on GitHub. Feedback, suggestions, and questions are welcome.
The plugin directory already has a block section, and there has been some fragmented discussion about expanding or improving it. I’d like to share some thoughts on this and propose a more expansive solution. First I’ll outline some of the main problems that need solving.
Issues:
Many plugins already register blocks, but often the plugin name and description doesn’t give a good indication of what those blocks are.
There is no way to search by block name.
Installation of plugins is far removed from the business of using blocks.
Developing blocks is a steep learning curve for new and experienced plugin developers alike.
A proposed solution:
Put briefly, I’d like to propose a new type of WordPress plugin that provides blocks and nothing else: Single Block Plugins. These will be hosted in a separate Block Directory section of the Plugin Directory. They will be JavaScript-based, and each plugin will register a single Block. And they will be searchable and installable from within the Gutenberg editor itself.
Let me break that down with some more detail.
A Single Block Plugin is intended to be a relatively small, simple plugin that provides a single Gutenberg block. The plugin is the block, essentially.
Single Block Plugins are WordPress plugins that conform to a few rules, including:
They register a Gutenberg block.
They’re written in JavaScript, and are front-end only.
They include readme.txt and header metadata as required.
This is not set in stone; we’ll work out the exact rules in collaboration with plugin developers and the community on Make WordPress Plugins.
The Block Directory will be a section within the Plugin Directory, that contains only Single Block Plugins.
It will be separate from the main plugin directory: you’re either browsing regular WordPress Plugins, or Single Block Plugins.
Single Block Plugins will be searchable by block name and description, as per the Block Registration RFC.
The Block Directory will probably use a simplified version of the plugin page layout for Single Block Plugins.
There will be an API endpoint for searching blocks by name and description.
Inclusion in the Block Directory requires following the rules for Single Block Plugins.
Regular WordPress plugins in the main Plugin Directory can continue to register Gutenberg Blocks.
Regular plugins will also be searchable by block name and description.
Regular plugins can register as many blocks as they like, and are not required to follow the same rules as for Single Block Plugins.
Regular plugins can continue to do all the amazing things they can now, including back-end code, wp-admin UI, and so on.
In other words, Single Block Plugins are for blocks; Regular WordPress Plugins are for anything at all.
Single Block Plugins will be JavaScript-based.
The block code will be entirely written in JavaScript.
The plugin can contain other assets like images and css.
To begin with, Single Block Plugins will contain a single PHP file containing plugin headers and initialization code only. Eventually, this should become unnecessary.
They won’t have any back-end code.
Any UI will be contained within the editor.
We’ll help onboard new (and new-to JS) developers with templates, samples, and other tools.
Single Block Plugins will be searchable and installable from within the Gutenberg editor.
The Block Inserter will use the above-mentioned search API to discover and display relevant Single Block Plugins from the Block Directory.
Installation will (eventually) be seamless, without leaving the editor.
We’ll make use of and improve the block management features that are already on their way into core.
Obviously this will entail plenty of design, UX, and accessibility work, which will start over on Make Design.
This post is intended as a starting point for discussion and new ideas. We’ll post more details on the Plugins, Meta, and Design Make sites in the coming days to focus on those particular areas.
Here’s a list of the WordCamp.org feature developments and maintenance work that was accomplished in February 2019:
Committed code for the first shortcode-to-block conversion: Speakers
Updated wordcamp.org to WordPress 5.1
Added 5.1 blog meta table
Removed a duplicate notification to the slack channel when a WordCamp or Meetup listing is put into Active/Scheduled status, and already has been put into that status in the past.
Reviewed code from community to automate VAT invoices, and proposal from community to build WordCamp.org PWA
Here’s what folks working on WordCamp.org hope to accomplish in March:
Complete the rest of the shortcode-to-blocks conversions (Sessions, Organizer, Sponsors, Schedule) — this will probably be the majority of the work in March
WordCamp.org’s code currently uses SVN as the primary tool of version control hosted on the Meta SVN repo. For the last several months we have also been experimenting with Git to see if it improves the development workflow.
Currently there is a GitHub repo which is set up as the mirror of the official SVN repo of WordCamp.org’s code. This repo is used to hold code reviews, and sync with SVN with every new commit.
So far this setup has been a big help in making it easier to get and give reviews, therefore improving code quality. Many basic features in Git like commit, stash, branch etc have been a delight to use in place of their SVN counterparts because of Git’s decentralized nature.
At this point it’s worth discussing removing SVN altogether, from at least the local development flow. Right now the process is prone to errors, not easy to set up, and has an extra step of manually syncing Git with latest changes in SVN.
New proposed process
It seems like a good idea to change the version control system as follows:
Make the Github repo the primary destination for code reviews. It will be configured on the local system of whoever wants to contribute to WordCamp.org’s code, and will be the primary place to work and develop.
Keep SVN as part of the release process. That is, whenever code is deployed changes will be synced from Git to SVN and start the deploy process. This process will be manual (or at least will be triggered manually) and SVN will be used only as a release tool (i.e. aim is not to preserve commit metadata like author, commit message etc). This approach has two main benefits:
No changes to deploy scripts will be necessary to use Git. These script are used while pushing code from latest SVN revision to WordCamp.org’s server. They would continue using SVN as before.
No dependence on an external tool in order to deploy changes. For example, Github going down will not affect us in case we want to push an emergency fix.
Commits with their authors have already been imported from the SVN repo into the Github repo.
Share your thoughts
Do you have any technical concerns about moving from SVN to Git? Do you suggest any changes to the process?
If the development process is indeed changed, it might be a good idea to also think about importing issues from Meta Trac to Github that are reported for WordCamp.org and its components. Do you have any concerns about importing issues into Github, or should they continue to exist in Trac?
Please leave your suggestions and feedback in a comment on this post.