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

Learning Pathway: Intermediate Plugin Developer #2044

Open
51 tasks
jonathanbossenger opened this issue Nov 29, 2023 · 59 comments
Open
51 tasks

Learning Pathway: Intermediate Plugin Developer #2044

jonathanbossenger opened this issue Nov 29, 2023 · 59 comments
Assignees

Comments

@jonathanbossenger
Copy link
Collaborator

jonathanbossenger commented Nov 29, 2023

Learning Pathway: Intermediate Plugin Developer

The intermediate plugin developer has the fundamental knowledge needed to develop for WordPress gained in the Beginner Developer Learning Pathway and has decided to focus on plugin development.

See the all the Developer pathways outlined in this document.

It is estimated that a single content creator working full-time on this content, at an average of 2.5 video lessons per week, will take approximately 21 weeks to complete all the lessons in this learning pathway.

The estimated date for completion is 20 December 2024.

Call for contributors post: https://make.wordpress.org/training/2024/07/30/call-for-contributors-intermediate-plugin-developer-learning-pathway/

Public GitHub repository for all lesson scripts: https://github.com/wptrainingteam/learn-wp-content/
Location of scripts for this learning pathway: https://github.com/wptrainingteam/learn-wp-content/tree/main/plugin-developer-learning-pathway

Module 1: Plugin Development Practices

Lessons

Module 2: Advanced Hooks

Lessons

Module 3: Advanced Blocks

Lessons

Module 4: Advanced WP REST API

Lessons

Module 5: Advanced Custom Post Types

Lessons

Module 6: Advanced Metadata

Lessons

Module 7: Custom database tables

Lessons

Module 8: Advanced Internationalisation

Lessons

Module 9: Users

Lessons

Module 10: Developing with Roles and Capabilities

Lessons

Module 11: Privacy

Lessons

Module 12: Cron

Lessons

Module 13: Rendering Content

Module 14: Developer tools

Lessons

Module 15: The Plugin Directory

Lessons

Module 16: The Block Directory

Lessons

On hold till WordPress 6.7

@jonathanbossenger
Copy link
Collaborator Author

Note: Once the Interactivity API has landed in core, add it to this learning pathway

@jonathanbossenger
Copy link
Collaborator Author

Related: Custom Database Tables

@jonathanbossenger
Copy link
Collaborator Author

Consider adding a new module on advanced WP REST API Authentication covering

@jonathanbossenger
Copy link
Collaborator Author

Update, moved the Roles and Capabilities module from the beginner pathway to here. Moved the lesson on enqueuing CSS and JS to the Introduction to plugin development module in the beginner pathway.

@jonathanbossenger
Copy link
Collaborator Author

Consider adding an advanced WP REST API module covering

@jonathanbossenger
Copy link
Collaborator Author

Consider including #2461

@jonathanbossenger
Copy link
Collaborator Author

How can we include The Storybook into the module on advanced block development

@jonathanbossenger
Copy link
Collaborator Author

Note to self, once #1984 is launched, re-review the modules/lessons in this pathway, to ensure the content is still relevant.

@eirichmond
Copy link

@jonathanbossenger I believe I've seen a response to my question in another Learning Pathway issue, but I would like to clarify it here as well. Firstly, I must say that this proposal appears to be a comprehensive and valuable Learning Pathway for plugin development. My question is: are you proposing to complete this project individually, or is there an opportunity for others, like myself, to contribute a single module collaboratively? Apologies if this seems like a basic question; I just want to ensure I understand the commitment required.

@jonathanbossenger
Copy link
Collaborator Author

@eirichmond great question.

I would greatly appreciate any and all help I can get 😁

As a team, one of our primary goals for the Learning Pathways project is to create "clear, user-friendly pathway for learners of different levels, roles, and use-cases.".

This, and the other developer-focused pathways, form part of that goal.

As you may have seen from the beginner and theme developer , the more folks we can onboard to help us create this content, the faster it gets created.

an opportunity for others, like myself, to contribute a single module collaboratively?

I also wanted to highlight this point. I think it's important for each module to be self-contained. This means it would be ideal if the design and presentation of all the lessons in any specific module were the same. You will see this in the Introduction to WordPress themes module that Cynthia created for the beginner pathway and any of the modules she worked on in the theme developer pathway.

So if possible, it would be great if individual collaborators were able to take ownership of a specific module, instead of only working on specific lessons.

Final note, the planned deadline for this learning pathway is the end of 2025, so we do have some time. Please only take on that which you feel you have time for, it's important to me that contributors are able to balance life, work, and their volunteer contributions.

@jonathanbossenger jonathanbossenger pinned this issue Jul 19, 2024
@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Jul 20, 2024

  • Consider removing Administration Menus and Settings, with the upcoming admin overhaul, these might be redundant soon
  • Consider removing module Shortcodes for v1 of this learning pathway

@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Jul 20, 2024

Module: Administration Menus

Objective:

Lessons

Module: Settings

Objective:

Lessons

Module: Shortcodes

Objective:

Lessons

  • Basic Shortcodes
  • Enclosing Shortcodes
  • Shortcodes with Parameters

@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Jul 20, 2024

Content creation resources

Documentation

Example Module/lessons

Beginner Developer Module 4: WordPress Hooks

Title GitHub Issue Script URL Lesson URL
WordPress Hooks #2079 Script Lesson
WordPress Action Hooks #2080 Script Lesson
WordPress Filter Hooks #2081 Script Lesson
Working with hooks #2209 Script Lesson

@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Jul 24, 2024

To anyone interested in contributing to this learning pathway, please share in which of the areas listed in the original post you think you'd be able to help out with?

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Voice recording: Taking an existing script and recording the audio portion of a video lesson.
  3. Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  4. Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  5. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

@courtneyr-dev
Copy link
Collaborator

Hey @olafleur-godaddy when you are back, tagging you in based upon some of our chats at WordCamp Canada and thinking you might be interested in some of this area.

@CrochetFeve0251
Copy link

CrochetFeve0251 commented Jul 30, 2024

Hey @jonathanbossenger ,

I saw you were looking for some contributors.

I would be glad to help.

Concerning module 2 about custom hooks, I am wondering about something.
Should we talk about the fact filters are not returning a guaranteed type? (I didn't saw it mentioned anywhere in the documentation)

I think that could help them adopt good practices from the standard and not spend hours trying to figure out what is the problem in their code when it comes from a wrong callback on the website from a client.

I also did some page about that topic here which explains the issue and how we are currently solving this at WP Media. Maybe it could inspire us for this tutorial.

@jonathanbossenger
Copy link
Collaborator Author

Hey @CrochetFeve0251

Thanks for your interest. Perhaps you could leave the comment on the issue for the Custom Hooks lesson, and we can discuss it further there?

@courtneyr-dev
Copy link
Collaborator

I've asked the plugin review team to especially take a peek at Modules 15 & 16 https://wordpress.slack.com/archives/C1LBM36LC/p1722373446911739

@thisismyurl
Copy link

@jonathanbossenger, I'd be interested in contributing if you're still looking for a developer with a background in plugin development.

@DevinWalker
Copy link

Hey hey! I'm also interested in contributing.

@tarecord
Copy link

tarecord commented Aug 1, 2024

Hey @jonathanbossenger, I'm totally down, this sounds right up my alley 🤘🏼

@jonathanbossenger
Copy link
Collaborator Author

Thanks for your interest @thisismyurl @DevinWalker @tarecord

To anyone interested in contributing to this learning pathway, please share in which of the areas listed in the original post you think you'd be able to help out with?

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Voice recording: Taking an existing script and recording the audio portion of a video lesson.
  3. Video editing: Merging a script with a voice recording and compiling a clear and engaging video lesson.
  4. Content creation: Taking an existing script (or researching and writing your own) and producing an entire video lesson
  5. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

Please also indicate if there are any modules above that you have a strong desire to collaborate on.

@CrochetFeve0251
Copy link

@jonathanbossenger

For my part, I can help on:

  1. Scriptwriting: Research lesson topics and write draft scripts that meet the lesson’s learning outcomes.
  2. Reviewing: Watching a completed video lesson and reviewing it for technical accuracy.

For Voice recording: Taking an existing script and recording the audio portion of a video lesson I can try to make as well, but I am not sure about the quality so far.

Concerning modules, I think I would be more useful in theses:

I can help on other parts, but I think that it is where I have the most experience.

@jonathanbossenger
Copy link
Collaborator Author

@CrochetFeve0251, that all sounds great to me.

For Voice recording: Taking an existing script and recording the audio portion of a video lesson I can try to make as well, but I am not sure about the quality so far.

I understand, we can experiment with this, and see how it goes.

For now, shall we start with you scriptwriting the lessons in Module 2: Advanced hooks? I'd rather focus on assigning one set of lessons at a time, that try to overload you with too many lessons at once.

@jonathanbossenger
Copy link
Collaborator Author

In order to help with notifying folks of updates to the development of this learning pathway, I have assigned everyone who indicated their interest to this tracking issue. If you don't want to be notified of updates to this issue, please let me know, and I will unassign you.

@jonathanbossenger
Copy link
Collaborator Author

Today, I created an unplanned lesson on PHP code structure, which aims to introduce beginners to using classes in PHP.

The main reason behind this lesson is to introduce the concept of classes in PHP, as one of the examples of avoiding naming collisions in plugins is to use a class with static methods.

The Advanced developer learning pathway has an entire module on Object Oriented PHP development for WordPress, (which still needs to be fleshed out) and so it's probably best to leave the bulk of that learning in that module, but introduce some basic concepts here.

If anyone would like to review the script, it's linked in the lesson issue. Please feel free to leave your feedback in the comments on that issue.

@CrochetFeve0251
Copy link

Today, I created an unplanned lesson on PHP code structure, which aims to introduce beginners to using classes in PHP.

The main reason behind this lesson is to introduce the concept of classes in PHP, as one of the examples of avoiding naming collisions in plugins is to use a class with static methods.

The Advanced developer learning pathway has an entire module on Object Oriented PHP development for WordPress, (which still needs to be fleshed out) and so it's probably best to leave the bulk of that learning in that module, but introduce some basic concepts here.

If anyone would like to review the script, it's linked in the lesson issue. Please feel free to leave your feedback in the comments on that issue.

Mmmm while it is a good idea to actually teach them how to prevent clashes between plugins or themes, I am wondering if teaching them to use namespaces wouldn't be a better option rather than using a unique class name.

That would make them learn only one notion instead of learning a first one then having to change it with another which is the modern way of doing it.

@eirichmond
Copy link

Just realised I might have put my comment on the wrong thing >< it's been a while since revisiting this and there has been some awesome work done here, it's great 👍 I'd be more than happy to take on one of these modules to show an example of how I would create a video with graphic elements to demonstrate what I can contribute to this?

@jonathanbossenger
Copy link
Collaborator Author

Mmmm while it is a good idea to actually teach them how to prevent clashes between plugins or themes, I am wondering if teaching them to use namespaces wouldn't be a better option rather than using a unique class name.

@CrochetFeve0251 I agree with you there. While I was working on the script for #2696 I realised that the documentation on doesn't even include namespaces, probably because it was written in a time before namespaces were common place. So I'm going to include namespaces as a solution in #2696, and look at getting the docs updated at the same time.

@jonathanbossenger
Copy link
Collaborator Author

Just realised I might have put my comment on the wrong thing >< it's been a while since revisiting this and there has been some awesome work done here, it's great 👍 I'd be more than happy to take on one of these modules to show an example of how I would create a video with graphic elements to demonstrate what I can contribute to this?

Thanks @eirichmond. At the moment we do have video creators paired with script writers for the first two modules, but I will certainly reach out to you if we have more scripts that need video creation.

@jonathanbossenger
Copy link
Collaborator Author

Update on learning pathway deadline.

I want to share an update on the proposed deadline for this learning pathway.

In the original description of this issue, I indicated it would take approximately 20 weeks to complete all the lessons in this learning pathway. With the original call for contributors post shared on 30 July 2024, 20 weeks would mean aiming for completion on 13 December 2024.

Since then, additional lessons have been added to the pathway, bringing the total up to 53 lessons (from the original 50). This means we need approximately another week, pushing the deadline to 20 December 2024.

From now on, I will ask all contributors to share their ETAs for whatever they are working on in the individual GitHub issues so that we can plan specific tasks and work towards completion by this date. I will also post monthly updates on progress here at the end of every month. These updates will be shared with the training team during weekly training meetings at the start of every new month.

@MichelleBlanchette
Copy link

Including myself here on the main thread. 👋

I'm happy to help with reviewing for technical accuracy, proper language, typos, offering suggestions, and maybe even writing scripts for any lessons as needed to help us meet the December deadline.

If you need anything, just @ me.

This is my first time contributing to Training, but I'm excited to finally have the chance to help!

Cheers!

@MichelleBlanchette
Copy link

@jonathanbossenger I just realized there's no mention of making plugins compatible with WordPress multisite installations, unless I'm missing something.

Should a lesson be added to quickly note some considerations that plugin developers should be aware of? There's particularly considerations when it comes to custom database tables and uninstalling data across all subsites, so maybe it could be a lesson under that module.

@jonathanbossenger
Copy link
Collaborator Author

Hi @MichelleBlanchette thanks for your interest.

I'm happy to help with reviewing for technical accuracy, proper language, typos, offering suggestions, and maybe even writing scripts for any lessons as needed to help us meet the December deadline.

Currently, modules 1-3 have script writers, so feel free to comment on any of the lessons from module 4 onward, if you'd like to write scripts for them.

I just realized there's no mention of making plugins compatible with WordPress multisite installations, unless I'm missing something.

There is a lesson on developing for multisite in the Multisite module on the Beginner developer learning pathway

If there's anything you feel is missing from those lessons, you're welcome to suggest it. However, it might have to wait until there's an available content creator or once this learning pathway's content wraps up.

@jonathanbossenger
Copy link
Collaborator Author

Content update: 2024-09-12

I've moved two lessons, #2708 and #2764 into a TBD (to be determined) section.

  • Interactive blocks is an incorrect title for a lesson on the Interactivity API. Also, that probably needs to be it's own module and include a couple of lessons.
  • The WordPress Components Storybook isn't a fully formed lesson yet, I need to do some research on what would typically be included there.

Once these modules/lessons are fleshed out better, we could perhaps add them to the learning pathway later.

@jonathanbossenger
Copy link
Collaborator Author

There seems to be a limit to how many contributors can be assigned to a single GitHub issue. Therefore, I will only assign people to this tracking issue who are currently actively working on individual lesson content. If you want to receive updates on this issue, please consider subscribing.

@jonathanbossenger
Copy link
Collaborator Author

A note to all contributors to this (and any other developer-focused content for learn.wordpress.org): for the past year or so, I've been maintaining a GitHub repository of all my notes and scripts (online workshops, lessons, courses, etc). I find it easier to maintain these scripts in markdown in GitHub to allow for better collaboration.

Today I moved this repository to the wptrainingteam GitHub organisation, so that it's available more publicly. If you are working on content for learn.wordpress.org, and you'd like to use this repository as well, please go ahead and fork it, and start creating PRs.

https://github.com/wptrainingteam/learn-wp-content

If you want to add your lessons in this pathway to that repository, all the plugin developer lesson scripts are available here https://github.com/wptrainingteam/learn-wp-content/tree/main/plugin-developer-learning-pathway

@MichelleBlanchette
Copy link

@jonathanbossenger I'd like to claim Module 7: Custom Databases if it's available. I can do all the writing and video recording for it—possibly even the video editing, too. But I'll definitely be happy to receive any feedback and reviews along the way.

I'm actually interested in several of the other module topics, too, but I'll just have to see how long it takes me and how much time I have to work on these, so I'll just claim the one for now. 🙂

@jonathanbossenger
Copy link
Collaborator Author

I'd like to claim Module 7: Custom Databases if it's available.

@MichelleBlanchette it's yours! 🎉 I will assign you to the first lesson.

@jessecowens
Copy link

Hi @jonathanbossenger I'd like to claim the REST API module if no one's volunteered for it yet

@jonathanbossenger
Copy link
Collaborator Author

I am moving these TBD items out of the requirements for this pathway at this time, and I will review them once the core of the learning pathway is completed.

TDB

@jonathanbossenger
Copy link
Collaborator Author

Hi @jonathanbossenger I'd like to claim the REST API module if no one's volunteered for it yet

@jessecowens welcome, and it's yours! 😁

Could I confirm, are you volunteering for script writing, video recording/editing, or both? No pressure, I just need to know if I need to pair you up with someone or not.

@jessecowens
Copy link

Hi @jonathanbossenger I'd like to claim the REST API module if no one's volunteered for it yet

@jessecowens welcome, and it's yours! 😁

Could I confirm, are you volunteering for script writing, video recording/editing, or both? No pressure, I just need to know if I need to pair you up with someone or not.

I can do the whole process, though I saw one script may already be ready for review?

@jonathanbossenger
Copy link
Collaborator Author

I can do the whole process

Great stuff @jessecowens. Please comment on the issues for those lessons, thanks to the weird way GitHub works, I can't assign you unless you comment on them.

I saw one script may already be ready for review?

Not in that module, no. There are other scripts in other modules, but those are currently in production.

@jonathanbossenger
Copy link
Collaborator Author

Production update - 2024-09-20

This is a high-level update of the course progress. I will do my best to post an update every Friday going forward.

Module 1: Plugin Development Practices

Script writing and audio recording: @jonathanbossenger, video creation @agiljulio

Module 2: Advanced Hooks

Script writing: @CrochetFeve0251, video creation @webcreativeng

Module 3: Advanced Blocks

Script writing and video creation @jonathanbossenger

Module 4: Advanced WP REST API

Script writing and video creation @jessecowens

Module 7: Custom database tables

Script writing and video creation @MichelleBlanchette

@MichelleBlanchette
Copy link

@jonathanbossenger Thank you for the concise update! I see many have items pending review. Am I able to help with that? That's at least something easier I can help with during the week, while I only really have time to make content on the weekends.

@jonathanbossenger
Copy link
Collaborator Author

You are welcome to review any videos that are available @MichelleBlanchette. The guidelines for reviewing content are available here.

@jonathanbossenger
Copy link
Collaborator Author

This is a quick note to all contributors: I am away on spring family vacation this coming week, so I will not be as active as usual. I'll still check emails/pings, etc, but response times might be delayed. Thanks.

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

No branches or pull requests