WordPress.org

Making WordPress.org

Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#1584 closed task (fixed)

Plugin Directory v3 MVP

Reported by: dd32 Owned by:
Milestone: Priority: normal
Component: Plugin Directory Keywords:
Cc:

Description

Some of the Meta team are currently working on a new enhanced version of the Plugins Directory.

This serves as a ticket for the initial MVP import of

  • Basic WordPress theme modeled off the existing bbPress theme
  • Basic plugin with bare-bones functionality.

A number of things will change as the functionality is fleshed out, a number of items will still be filled with test data as the feature isn't yet implemented.

Change History (70)

#1 @dd32
3 years ago

In 2499:

Plugins Directory: Adding the initial plugin directory plugin & theme.
These include a lot of hard-coded test data still, which will be iterated upon.

#2 @ramiy
3 years ago

Related: #1585 - Add missing i18n functions to the new plugin theme.

#3 @obenland
3 years ago

In 2501:

W.org Plugins: Code reformatting.

  • Splitting out classes in their own files.
  • Let the automated code formatter run over the plugin.

It should break too many things.

See #1584.

#4 @obenland
3 years ago

In 2502:

W.org Plugins: After [2501], use new class names.

See #1584.

This ticket was mentioned in Slack in #meta by obenland. View the logs.


3 years ago

#6 @dd32
3 years ago

In 2554:

Plugins Directory: Create the tab/section links correctly (no double slashes, no multiple endpoints in one url) and add support for the Screenshots & Other Notes tabs/sections.
See #1584

#7 @dd32
3 years ago

In 2555:

Plugins Directory: Implement basic Banner & Icon support (including porting the autotomatically generated icons plugin over) to give plugins a bit of individuality.
See #1584

#8 @dd32
3 years ago

In 2556:

Plugins Directory: Add a basic screenshots shortcode.
See #1584

#9 @dd32
3 years ago

In 2557:

Plugins Directory: The plugins directory is available at many different localised domains, such as de.wordpress.org/plugins/ or fr.wordpress.org/plugins/.
This change works in conjuction with a sunrise.php hack to allow the plugins site to be loaded at all of the domains we need it to be, and yet respect the rosetta network customizations we've made (including language and extra plugins).

See #1584

#10 @dd32
3 years ago

In 2558:

Plugins Directory: - is a valid character within a Rosetta subdmain.
Props @ocean90
See #1584, r2557

#11 follow-up: @obenland
3 years ago

@dd32 Re [2555]: What was your idea behind WPorg_Plugin_Directory::get_or_create_plugin_post()? Shouldn't uploading a zip be the only way to create a plugin in the repo?

Also: Given the premise that plugin posts don't get deleted when the plugin gets rejected, uploading a plugin zip "secures" a specific slug. What would keep us then from adding it to SVN on upload vs. after approval?

/cc @otto42, @coffee2code

#12 follow-up: @Otto42
3 years ago

Plugin post slugs should be renamed or otherwise invalidated after rejection, much the same as the existing system does now. Rejected slugs cannot be reserved forever, and we should not upload anything into the SVN until after the plugin is approved.

If the system is designed such that anybody can reserve a slug by merely requesting it, then the system needs redesigning to avoid that problem.

The current directory renames rejected plugin topics to "rejected-abc-rejected" without creating SVN directories for them.

Last edited 3 years ago by Otto42 (previous) (diff)

#13 @obenland
3 years ago

In 2560:

Plugins Directory: Prefix main plugin file.

See #1584.

#14 in reply to: ↑ 12 ; follow-up: @obenland
3 years ago

Replying to Otto42:

If the system is designed such that anybody can reserve a slug by merely requesting it, then the system needs redesigning to avoid that problem.

I think themes currently work that way. Should that be changed?

#15 in reply to: ↑ 11 ; follow-up: @dd32
3 years ago

Replying to obenland:

@dd32 Re [2555]: What was your idea behind WPorg_Plugin_Directory::get_or_create_plugin_post()? Shouldn't uploading a zip be the only way to create a plugin in the repo?

That will be the main way in the end, however I needed something to create them on-demand for the CLI import script. I expect we'll split the method in half in the end. None of the post handling should be done within the uploader script.

#16 in reply to: ↑ 15 @obenland
3 years ago

Replying to dd32:

None of the post handling should be done within the uploader script.

Where should it be done? Besides the import, which is not ongoing, when else would we create a post?

#17 @dd32
3 years ago

In 2561:

Plugins Directory: Split get_or_create_plugin_post() into get_plugin_post() and create_plugin_post().
See #1584

#18 @dd32
3 years ago

In 2563:

Plugin Directory: Use the Description header when a short description isn't provided in a readme.
See #1584

#19 @dd32
3 years ago

In 2611:

Plugin Directory: Switch to using namespaces instead of implemeting them through classnames.
This change introduces an autoloader and relies upon it for most file inclusions, this should encourage us to keep a standard naming schema and writing more component classes going forward.
See #1584

#20 @dd32
3 years ago

In 2612:

Plugin Directory: Update the theme to reference the new namespaced class names.
See #1584, r2611

#21 @obenland
3 years ago

In 2621:

Plugins Directory: Formatting update.

  • Updates phpdocs throughout the plugin.
  • Breaks out classes into their own files.
  • Some minor namespace-related tweaks.

See #1584.

#22 @dd32
3 years ago

In 2638:

Plugin Directory: Update the readme parser with a newer version of MarkdownExtra and support far more of our edgecases in readme's.
This also adds back Github readme.md formatting for most things (inline screenshots still not supported).
See #1584

#23 @dd32
3 years ago

In 2649:

Plugin Directory: Add a bin script to import a WordPress plugin into the directory. This is by no means final, and assumptions may have been made about plugin structures that will need to be supported.

See #1584

#24 @dd32
3 years ago

In 2654:

Plugin Directory: Remove the version number from the Download version, adding it to the plugin meta instead.

See #1584

#25 @dd32
3 years ago

In 2655:

Plugin Directory: Add several metaboxes for the Plugin Review/Admin.
This change includes switching to custom taxonomies, a custom publish metabox, a custom tags metabox, and the start of a plugin-reviewer metabox.

See #1570, #1584

This ticket was mentioned in Slack in #meta by obenland. View the logs.


3 years ago

#27 @obenland
3 years ago

  • Resolution set to fixed
  • Status changed from new to closed

#28 in reply to: ↑ 14 @Otto42
3 years ago

Replying to obenland:

Replying to Otto42:

If the system is designed such that anybody can reserve a slug by merely requesting it, then the system needs redesigning to avoid that problem.

I think themes currently work that way. Should that be changed?

Themes currently do work that way, however the theme process is different than the plugin process. There's a lot more plugins and therefore slugs, and reserving them for merely requesting is going to create a lot of problems and a lot of extra work.

If the choice is between changing the themes system to match or allowing plugin slugs to become polluted, then yes, themes needs to change. Plugin slugs can not become polluted this way. The workload will significantly increase because of it.

The ideal choice is to leave themes as is (for now) and make plugins behave differently.

#29 @obenland
3 years ago

In 2973:

Plugins Directory: Remove wordblog dependency.

Makes it usable in the meta environment where it was considered broken before.

See #1584.

#30 @dd32
3 years ago

In 2992:

Plugin Directory: Suport mac-style line-endings in readme's.
file() only detects \r\n and \n line endings unless the auto_detect_line_endings option is enabled.
By handling this in PHP instead, we avoid relying upon the PHP configurations.

See #1584

#31 @obenland
3 years ago

In 2994:

Plugin Directory: Housekeeping.

  • Updates and corrects doc blocks.
  • Simplifies overqualified class references.
  • Corrects function args and return types.
  • Adds missing labels to input elements.
  • Makes sure variables are set before using them.

See #1584.

#32 @dd32
3 years ago

In 2997:

Plugin Directory: Readme parsing: Trim off all whitespace surrounding the title, not just spaces.

See #1584

#33 @dd32
3 years ago

In 2999:

Plugin Directory: SVN Helpers: Use shell_exec() instead of exec() so as to get all the lines of output, instead of just the last.

See #1584

#34 @dd32
3 years ago

In 3008:

Plugin Directory: Tighten up the regular expression when parsing assets to avoid notices where unrecognised assets may be matched (for example, an error using a unicode cross rather than x in a banner filename).

See #1584

#35 @dd32
3 years ago

In 3009:

Plugin Directory: Add a Review Widget to the theme, and all the other required things for Widgets.
This adds a namespace to the theme and begins to reduce the duplication of template functionality between wp-admin and the theme.

See #1584.
Fixes #1575.

#36 @dd32
3 years ago

In 3010:

Plugin Directory: The plugin_category taxonomy needs to be public in order to query by it.
See #1584

#37 @dd32
3 years ago

In 3011:

Plugin Directory: Implement the 'popular' category as number of active_installs.

See #1584, #1596

#38 @dd32
3 years ago

In 3019:

Plugin Directory: When importing, store a list of the SVN tags for later reference.

See #1584

#39 @dd32
3 years ago

In 3083:

Plugin Directory: Autloader: Allow the autoloader to be used outside of a WordPress pageload.

See #1584

#40 @dd32
3 years ago

In 3084:

Plugin Directory: Cache the $post_id of the plugin slugs in Plugin_Directory::get_plugin_post().

See #1584

#41 @dd32
3 years ago

In 3163:

Plugin Directory: Readme parsing: Sanitize the stable tag from the readme, plugins often fill it with unexpected values.

This change also allows for a instance to be created without a file, and avoids a scenario where the plugin description may get picked up as the plugin name.

See #1584

#42 @dd32
3 years ago

In 3164:

Plugin Directory: Imports: Many fixes to the import processes, optimizations, bugfixes, etc.

See #1584

#43 @dd32
3 years ago

In 3188:

Plugin Directory: Allow the post date to be specified.
See #1584

#44 @dd32
3 years ago

In 3290:

Plugin Directory: Remove the tab handling code, as the design doesn't currently need it.

See #1584

#45 @dd32
3 years ago

In 3320:

Plugin Directory: Attempt to attach our custom post_meta fields to the result of get_post_meta( $post_id, false) to aid with ElastcSearch indexing and other plugin interactions.

WordPress lacks a post-get_post_meta() filter so the way to attach custom meta is ajuggling act of $post_meta.

See #1584

#46 @obenland
3 years ago

In 3326:

Plugin Directory: Docs cleanup.

For a more at ease IDE.

See #1584.

#47 @dd32
3 years ago

In 3369:

Plugin Directory: Update the plugin headers, we've been calling this 3.0 for long enough.

See #1584

#48 @dd32
3 years ago

In 3376:

Plugin Directory: Handle various redirects we need

  • /$plugin/faq (the old plugin tabs) should redirect to /$plugin/#faq
  • /browse/ should have something on it, we're going with the popular view by default.
  • /browse/favorites/$user should list that users favourites.

See #1584 #1719

#49 @obenland
3 years ago

In 3409:

Plugin Directory: Redirect tags to their new categories.

Redirects to a search if it's not one of the 1,000 most popular tags, or to the
home page if the tags page was requested.

See #1584.

#50 @obenland
3 years ago

In 3410:

Plugin Directory: Continue to track subpage views on plugin detail.

See #1584.

#51 @dd32
3 years ago

In 3448:

Plugin Directory: Proper escaping for the readme validator.

See #1584

#52 @obenland
3 years ago

In 3450:

Plugin Directory: Show readme notices underneath the header.

See #1584.

#53 @dd32
3 years ago

In 3452:

Plugin Directory: Readme Validator: Remove unused headers/sections from the validator and use the correct requires/tested fields.

See #1584

#54 @dd32
3 years ago

In 3453:

Plugin Directory: Redirect ?s=term to /search/term/

See #1584

#55 @obenland
3 years ago

In 3455:

Plugin Directory: Re-create the list of newest plugins.

See #1584.

#56 @dd32
3 years ago

In 3456:

Plugin Directory: Move the /about/ page to /developers/

See #1584

#57 @dd32
3 years ago

In 3458:

Plugin Directory: Show the Committers & Stats metaboxes for anythign but a newly-submitted plugin.

See #1584

#58 @obenland
3 years ago

In 3467:

Plugin Directory: Let's open it up to plugin authors.

See #1584.

#59 @dd32
3 years ago

In 3469:

Plugin Directory: Avoid fatal erros on import after r3467 when the user can't be found, trigger a Jetpack Search re-import after incase the post has changed.

See #1584

#60 @dd32
3 years ago

In 3475:

Plugin Directory: Fix the readme validator again for the FAQ and Screenshots checks.

See #1584

#61 @obenland
3 years ago

In 3477:

Plugin Directory: Move readme classes into their own namespace.

See #1584.

#62 @dd32
3 years ago

In 3496:

Plugin Directory: Update the handling for Plugin Authors in the API.

See #1584

#63 @dd32
3 years ago

In 3499:

Plugin Directory: Allow for the custom query logic to be applied to all WP_Query instances, not just the main query.
Also removes a weird SQL hack to remove the browse query var from queries, and replaces it with an equally weird closure hack.

See #1584

#64 @dd32
3 years ago

In 3501:

Plugin Directory: Fix the query_plugins API endpoint to use Jetpack Search.

See #1584

#65 @dd32
3 years ago

In 3502:

Plugin Directory: The order should only be for archives.

See #1584

#66 @obenland
3 years ago

In 3511:

Plugin Directory: Documentation and formatting updates.

See #1584.

#67 @obenland
3 years ago

In 3512:

Plugin Directory: Documentation and formatting update.

See #1584.

#68 @dd32
3 years ago

In 3527:

Plugin Directory: Fix a variable typo which caused stable plugin zips not to be rebuilt upon commit.

See #1584

#69 @dd32
3 years ago

In 3530:

Plugin Directory: Ensure that only valid WP_User objects are returned from Tools::get_plugin_subscribers().

See #1584

#70 @dd32
3 years ago

In 3547:

Plugin Directory: Add a custom /search/ rewrite rule that is matched prior to our old-plugins-tabs redirect rule so that /search/stats/ continues to work.

See #1584

Note: See TracTickets for help on using tickets.