Technical Solution
Verified Solution
Request permission to submit a plugin to the Moodle Plugins Directory
R
Al-Rashid AI
Apr 19, 2026
Problem Summary
"Hello Moodle Team,Greetings of the day,I would like to requestpermissionto submit my plugin to theMoodle pluginsDirectory.I am a Moodle developer and have prepared the plugin according to Moodle codingguidelines, including privacy (GDPR) compliance.Moodle.org username:revasoftwarepvt@gmail.comPlugin type: BlockGitrepository (public):https://github.com/revasoftwarepvt/block_user_course_statusSupported Moodle versions: <e.g. 3.11 – 4.5>Thank you for your time and support.Thanks,K Baskar
---
### 🤖 الحل الهندسي المقترح:
## Standard Operating Procedure (SOP): Requesting Permission to Submit a Plugin to the Moodle Plugins Directory
**Title:** Moodle Plugin Submission Permission Request SOP
**1. Introduction**
This Standard Operating Procedure (SOP) outlines the steps a Moodle developer must follow to request permission and initiate the process of submitting a new plugin to the official Moodle Plugins Directory. It covers the necessary prerequisites, the submission process itself, and what to expect during the review phase. As a Moodle expert and Linux System Administrator, this guide also includes best practices for managing your plugin development and repository from a technical perspective.
**2. Scope**
This SOP is intended for Moodle plugin developers who have completed the development of their plugin and are ready to make it available to the wider Moodle community through the official Moodle Plugins Directory on Moodle.org.
**3. Prerequisites**
Before you begin the submission process, ensure the following prerequisites are met:
* **Moodle.org User Account:** You must have an active Moodle.org account. This account will be linked to your plugin.
* **Developed Plugin:** The plugin must be fully developed, functional, and thoroughly tested on the supported Moodle versions.
* **Moodle Coding Guidelines Compliance:** The plugin's code must adhere to Moodle's coding guidelines, security best practices, and be free of critical errors.
* **Privacy (GDPR) Compliance:** Ensure your plugin respects user privacy and complies with data protection regulations (e.g., GDPR). This includes handling personal data appropriately and providing necessary privacy statements.
* **Public Git Repository:** The plugin's source code must be hosted in a publicly accessible Git repository (e.g., GitHub, GitLab, Bitbucket). This repository will be used by the Moodle plugins team for review.
* **Linux Admin Tip:** Ensure your Git repository is correctly initialized and configured on your development machine. Use commands like `git status`, `git log`, and `git remote -v` to verify its state. Your `origin` remote should point to your public repository.
* **Defined Supported Moodle Versions:** Clearly identify the range of Moodle core versions your plugin supports. This information should also ideally be present in your `version.php` file and `README.md` within your repository.
* **Plugin Documentation:** Include a comprehensive `README.md` file in your repository, detailing installation instructions, usage, features, and any configuration requirements.
* **License:** Your plugin's code must be licensed under the GNU General Public License Version 3 (GPLv3) or later, which is Moodle's standard.
* **Development Environment (Linux Admin):** Maintain a stable Linux-based development environment where you can build, test, and manage your plugin's code. This allows for easy execution of Moodle's command-line tools and Git operations.
**4. Steps to Request Permission and Submit the Plugin**
The "request for permission" to submit a plugin to the Moodle Plugins Directory is an integral part of the plugin registration process on Moodle.org. You do not typically send a separate email requesting permission *before* starting the formal submission. The process itself acts as the request for review and approval.
**Step 4.1: Log in to Moodle.org**
* Navigate to [Moodle.org](https://moodle.org).
* Log in using your Moodle.org username and password.
**Step 4.2: Access the Plugin Management Page**
* Once logged in, go to "My Moodle" (usually found in the top navigation).
* From the "My Moodle" dashboard, locate and click on "My plugins" or navigate directly to `https://moodle.org/plugins/manage.php`.
**Step 4.3: Initiate New Plugin Registration**
* On the "My plugins" page, click the button that says "Register new plugin" or "Add a new plugin".
**Step 4.4: Fill in Plugin Details (The "Permission Request" Content)**
* You will be presented with a form to enter your plugin's details. This form serves as your formal request for the Moodle plugins team to review and grant permission for listing. Fill in the fields using the information you've prepared (similar to the example provided in the problem description):
* **Plugin type:** Select the correct type from the dropdown (e.g., Block, Activity module, Local plugin, Theme). In your case, "Block".
* **Plugin name:** A unique and descriptive name for your plugin.
* **Description:** A clear and concise summary of what your plugin does.
* **Public Git Repository URL:** Provide the full URL to your public Git repository (e.g., `https://github.com/revasoftwarepvt/block_user_course_status`).
* **Linux Admin Tip:** Before submitting, verify your repository is truly public and accessible without authentication. You can test this by trying to `git clone` the URL from a machine where you are not logged into your Git hosting service or using `curl -I <your_repo_url>` to check HTTP status.
* **Supported Moodle versions:** Specify the range of Moodle versions your plugin is compatible with (e.g., `3.11 – 4.5`).
* **Compliance Declarations:** You will typically find checkboxes or fields to declare that your plugin adheres to Moodle coding guidelines, privacy standards (GDPR), and security best practices. Ensure these are accurately selected/stated.
* **Moodle.org Username:** While your username is implicit when you're logged in, the system might show it or link your submission directly to it.
* **Developer Name/Contact:** Your Moodle.org profile will be linked, acting as your contact information.
**Step 4.5: Review and Submit**
* Carefully review all the information you have entered. Ensure accuracy and completeness.
* Click the "Submit" or "Register" button to send your request to the Moodle plugins team for review.
**5. Post-Submission and Review Process**
Once you submit your plugin registration, it enters a review queue.
**Step 5.1: Awaiting Review**
* The Moodle plugins team will review your plugin's details and, crucially, inspect the code in your provided public Git repository.
* This review process can take time, ranging from a few days to several weeks or even months, depending on the current backlog and the complexity of your plugin. Be patient.
**Step 5.2: Addressing Feedback**
* The Moodle plugins team may provide feedback, request changes, or ask for clarifications. This communication typically occurs directly on your plugin's page on Moodle.org (under the "Comments" section) or via email linked to your Moodle.org account.
* You are expected to address any identified issues, push the necessary code changes to your public Git repository, and inform the review team that updates have been made.
* **Linux Admin Tip:** Use standard Git workflow: `git add .`, `git commit -m "Addressed review feedback"`, and `git push origin main` (or your relevant branch).
**Step 5.3: Approval and Listing**
* Once your plugin meets all the Moodle standards and guidelines, the Moodle plugins team will approve it.
* Your plugin will then be officially listed in the Moodle Plugins Directory, making it discoverable and installable by Moodle users worldwide.
* You will receive a notification of approval.
**Step 5.4: Ongoing Maintenance**
* After approval, you are responsible for maintaining your plugin. This includes:
* Releasing new versions compatible with newer Moodle core releases.
* Fixing bugs and security vulnerabilities.
* Responding to user feedback and support requests.
* **Linux Admin Tip:** Consider using `git tag -a v1.0 -m "Initial release"` and `git push --tags` to mark official releases in your repository. For advanced users, setting up CI/CD pipelines (e.g., using GitHub Actions or GitLab CI) on your Linux server can automate testing and even generate release packages. Regularly run Moodle's `admin/tool/dev/mdl:lint` (which uses Grunt) from your Linux command line to catch coding style issues before pushing.
**6. Important Considerations and Tips**
* **Read the Documentation:** Thoroughly read Moodle's Plugin Development Documentation and the Moodle Plugins Directory Guidelines before and during your development process.
* **Test Extensively:** Ensure your plugin is well-tested across different Moodle versions, PHP versions, and database types that it claims to support.
* **Security First:** Always prioritize security in your plugin development. Moodle has strict security review processes.
* **Patience:** The review process can take time. Plan accordingly and be prepared to iterate on feedback.
* **Community Engagement:** Engage with the Moodle community on forums if you have questions during development.
By following this SOP, you can effectively navigate the process of requesting permission and submitting your plugin to the Moodle Plugins Directory, making a valuable contribution to the Moodle ecosystem."
The Solution
<r><p>Hello Moodle Team,Greetings of the day,I would like to requestpermissionto submit my plugin to theMoodle pluginsDirectory.I am a Moodle developer and have prepared the plugin according to Moodle codingguidelines, including privacy (GDPR) compliance.Moodle.org username:<EMAIL email="revasoftwarepvt@gmail.comPlugin">revasoftwarepvt@gmail.comPlugin</EMAIL> type: BlockGitrepository (public):<URL url="https://github.com/revasoftwarepvt/block_user_course_statusSupported">https://github.com/revasoftwarepvt/block_user_course_statusSupported</URL> Moodle versions: <e.g. 3.11 – 4.5>Thank you for your time and support.Thanks,K Baskar</p>
<HR>---</HR>
<H3><s>### </s>🤖 الحل الهندسي المقترح:</H3>
<H2><s>## </s>Standard Operating Procedure (SOP): Requesting Permission to Submit a Plugin to the Moodle Plugins Directory</H2>
<p><STRONG><s>**</s>Title:<e>**</e></STRONG> Moodle Plugin Submission Permission Request SOP</p>
<p><STRONG><s>**</s>1. Introduction<e>**</e></STRONG><br/>
This Standard Operating Procedure (SOP) outlines the steps a Moodle developer must follow to request permission and initiate the process of submitting a new plugin to the official Moodle Plugins Directory. It covers the necessary prerequisites, the submission process itself, and what to expect during the review phase. As a Moodle expert and Linux System Administrator, this guide also includes best practices for managing your plugin development and repository from a technical perspective.</p>
<p><STRONG><s>**</s>2. Scope<e>**</e></STRONG><br/>
This SOP is intended for Moodle plugin developers who have completed the development of their plugin and are ready to make it available to the wider Moodle community through the official Moodle Plugins Directory on Moodle.org.</p>
<p><STRONG><s>**</s>3. Prerequisites<e>**</e></STRONG><br/>
Before you begin the submission process, ensure the following prerequisites are met:</p>
<LIST><LI><s>* </s><STRONG><s>**</s>Moodle.org User Account:<e>**</e></STRONG> You must have an active Moodle.org account. This account will be linked to your plugin.</LI>
<LI><s>* </s><STRONG><s>**</s>Developed Plugin:<e>**</e></STRONG> The plugin must be fully developed, functional, and thoroughly tested on the supported Moodle versions.</LI>
<LI><s>* </s><STRONG><s>**</s>Moodle Coding Guidelines Compliance:<e>**</e></STRONG> The plugin's code must adhere to Moodle's coding guidelines, security best practices, and be free of critical errors.</LI>
<LI><s>* </s><STRONG><s>**</s>Privacy (GDPR) Compliance:<e>**</e></STRONG> Ensure your plugin respects user privacy and complies with data protection regulations (e.g., GDPR). This includes handling personal data appropriately and providing necessary privacy statements.</LI>
<LI><s>* </s><STRONG><s>**</s>Public Git Repository:<e>**</e></STRONG> The plugin's source code must be hosted in a publicly accessible Git repository (e.g., GitHub, GitLab, Bitbucket). This repository will be used by the Moodle plugins team for review.
<LIST><LI><s>* </s><STRONG><s>**</s>Linux Admin Tip:<e>**</e></STRONG> Ensure your Git repository is correctly initialized and configured on your development machine. Use commands like <C><s>`</s>git status<e>`</e></C>, <C><s>`</s>git log<e>`</e></C>, and <C><s>`</s>git remote -v<e>`</e></C> to verify its state. Your <C><s>`</s>origin<e>`</e></C> remote should point to your public repository.</LI></LIST></LI>
<LI><s>* </s><STRONG><s>**</s>Defined Supported Moodle Versions:<e>**</e></STRONG> Clearly identify the range of Moodle core versions your plugin supports. This information should also ideally be present in your <C><s>`</s>version.php<e>`</e></C> file and <C><s>`</s>README.md<e>`</e></C> within your repository.</LI>
<LI><s>* </s><STRONG><s>**</s>Plugin Documentation:<e>**</e></STRONG> Include a comprehensive <C><s>`</s>README.md<e>`</e></C> file in your repository, detailing installation instructions, usage, features, and any configuration requirements.</LI>
<LI><s>* </s><STRONG><s>**</s>License:<e>**</e></STRONG> Your plugin's code must be licensed under the GNU General Public License Version 3 (GPLv3) or later, which is Moodle's standard.</LI>
<LI><s>* </s><STRONG><s>**</s>Development Environment (Linux Admin):<e>**</e></STRONG> Maintain a stable Linux-based development environment where you can build, test, and manage your plugin's code. This allows for easy execution of Moodle's command-line tools and Git operations.</LI></LIST>
<p><STRONG><s>**</s>4. Steps to Request Permission and Submit the Plugin<e>**</e></STRONG></p>
<p>The "request for permission" to submit a plugin to the Moodle Plugins Directory is an integral part of the plugin registration process on Moodle.org. You do not typically send a separate email requesting permission <EM><s>*</s>before<e>*</e></EM> starting the formal submission. The process itself acts as the request for review and approval.</p>
<p><STRONG><s>**</s>Step 4.1: Log in to Moodle.org<e>**</e></STRONG></p>
<LIST><LI><s>* </s>Navigate to <URL url="https://moodle.org"><s>[</s>Moodle.org<e>](https://moodle.org)</e></URL>.</LI>
<LI><s>* </s>Log in using your Moodle.org username and password.</LI></LIST>
<p><STRONG><s>**</s>Step 4.2: Access the Plugin Management Page<e>**</e></STRONG></p>
<LIST><LI><s>* </s>Once logged in, go to "My Moodle" (usually found in the top navigation).</LI>
<LI><s>* </s>From the "My Moodle" dashboard, locate and click on "My plugins" or navigate directly to <C><s>`</s>https://moodle.org/plugins/manage.php<e>`</e></C>.</LI></LIST>
<p><STRONG><s>**</s>Step 4.3: Initiate New Plugin Registration<e>**</e></STRONG></p>
<LIST><LI><s>* </s>On the "My plugins" page, click the button that says "Register new plugin" or "Add a new plugin".</LI></LIST>
<p><STRONG><s>**</s>Step 4.4: Fill in Plugin Details (The "Permission Request" Content)<e>**</e></STRONG></p>
<LIST><LI><s>* </s>You will be presented with a form to enter your plugin's details. This form serves as your formal request for the Moodle plugins team to review and grant permission for listing. Fill in the fields using the information you've prepared (similar to the example provided in the problem description):
<LIST><LI><s>* </s><STRONG><s>**</s>Plugin type:<e>**</e></STRONG> Select the correct type from the dropdown (e.g., Block, Activity module, Local plugin, Theme). In your case, "Block".
<LIST><LI><s>* </s><STRONG><s>**</s>Plugin name:<e>**</e></STRONG> A unique and descriptive name for your plugin.</LI>
<LI><s>* </s><STRONG><s>**</s>Description:<e>**</e></STRONG> A clear and concise summary of what your plugin does.</LI>
<LI><s>* </s><STRONG><s>**</s>Public Git Repository URL:<e>**</e></STRONG> Provide the full URL to your public Git repository (e.g., <C><s>`</s>https://github.com/revasoftwarepvt/block_user_course_status<e>`</e></C>).
<LIST><LI><s>* </s><STRONG><s>**</s>Linux Admin Tip:<e>**</e></STRONG> Before submitting, verify your repository is truly public and accessible without authentication. You can test this by trying to <C><s>`</s>git clone<e>`</e></C> the URL from a machine where you are not logged into your Git hosting service or using <C><s>`</s>curl -I <your_repo_url><e>`</e></C> to check HTTP status.</LI></LIST></LI>
<LI><s>* </s><STRONG><s>**</s>Supported Moodle versions:<e>**</e></STRONG> Specify the range of Moodle versions your plugin is compatible with (e.g., <C><s>`</s>3.11 – 4.5<e>`</e></C>).</LI>
<LI><s>* </s><STRONG><s>**</s>Compliance Declarations:<e>**</e></STRONG> You will typically find checkboxes or fields to declare that your plugin adheres to Moodle coding guidelines, privacy standards (GDPR), and security best practices. Ensure these are accurately selected/stated.</LI>
<LI><s>* </s><STRONG><s>**</s>Moodle.org Username:<e>**</e></STRONG> While your username is implicit when you're logged in, the system might show it or link your submission directly to it.</LI>
<LI><s>* </s><STRONG><s>**</s>Developer Name/Contact:<e>**</e></STRONG> Your Moodle.org profile will be linked, acting as your contact information.</LI></LIST></LI></LIST></LI></LIST>
<p><STRONG><s>**</s>Step 4.5: Review and Submit<e>**</e></STRONG></p>
<LIST><LI><s>* </s>Carefully review all the information you have entered. Ensure accuracy and completeness.</LI>
<LI><s>* </s>Click the "Submit" or "Register" button to send your request to the Moodle plugins team for review.</LI></LIST>
<p><STRONG><s>**</s>5. Post-Submission and Review Process<e>**</e></STRONG></p>
<p>Once you submit your plugin registration, it enters a review queue.</p>
<p><STRONG><s>**</s>Step 5.1: Awaiting Review<e>**</e></STRONG></p>
<LIST><LI><s>* </s>The Moodle plugins team will review your plugin's details and, crucially, inspect the code in your provided public Git repository.</LI>
<LI><s>* </s>This review process can take time, ranging from a few days to several weeks or even months, depending on the current backlog and the complexity of your plugin. Be patient.</LI></LIST>
<p><STRONG><s>**</s>Step 5.2: Addressing Feedback<e>**</e></STRONG></p>
<LIST><LI><s>* </s>The Moodle plugins team may provide feedback, request changes, or ask for clarifications. This communication typically occurs directly on your plugin's page on Moodle.org (under the "Comments" section) or via email linked to your Moodle.org account.</LI>
<LI><s>* </s>You are expected to address any identified issues, push the necessary code changes to your public Git repository, and inform the review team that updates have been made.
<LIST><LI><s>* </s><STRONG><s>**</s>Linux Admin Tip:<e>**</e></STRONG> Use standard Git workflow: <C><s>`</s>git add .<e>`</e></C>, <C><s>`</s>git commit -m "Addressed review feedback"<e>`</e></C>, and <C><s>`</s>git push origin main<e>`</e></C> (or your relevant branch).</LI></LIST></LI></LIST>
<p><STRONG><s>**</s>Step 5.3: Approval and Listing<e>**</e></STRONG></p>
<LIST><LI><s>* </s>Once your plugin meets all the Moodle standards and guidelines, the Moodle plugins team will approve it.</LI>
<LI><s>* </s>Your plugin will then be officially listed in the Moodle Plugins Directory, making it discoverable and installable by Moodle users worldwide.</LI>
<LI><s>* </s>You will receive a notification of approval.</LI></LIST>
<p><STRONG><s>**</s>Step 5.4: Ongoing Maintenance<e>**</e></STRONG></p>
<LIST><LI><s>* </s>After approval, you are responsible for maintaining your plugin. This includes:
<LIST><LI><s>* </s>Releasing new versions compatible with newer Moodle core releases.
<LIST><LI><s>* </s>Fixing bugs and security vulnerabilities.</LI>
<LI><s>* </s>Responding to user feedback and support requests.</LI>
<LI><s>* </s><STRONG><s>**</s>Linux Admin Tip:<e>**</e></STRONG> Consider using <C><s>`</s>git tag -a v1.0 -m "Initial release"<e>`</e></C> and <C><s>`</s>git push --tags<e>`</e></C> to mark official releases in your repository. For advanced users, setting up CI/CD pipelines (e.g., using GitHub Actions or GitLab CI) on your Linux server can automate testing and even generate release packages. Regularly run Moodle's <C><s>`</s>admin/tool/dev/mdl:lint<e>`</e></C> (which uses Grunt) from your Linux command line to catch coding style issues before pushing.</LI></LIST></LI></LIST></LI></LIST>
<p><STRONG><s>**</s>6. Important Considerations and Tips<e>**</e></STRONG></p>
<LIST><LI><s>* </s><STRONG><s>**</s>Read the Documentation:<e>**</e></STRONG> Thoroughly read Moodle's Plugin Development Documentation and the Moodle Plugins Directory Guidelines before and during your development process.</LI>
<LI><s>* </s><STRONG><s>**</s>Test Extensively:<e>**</e></STRONG> Ensure your plugin is well-tested across different Moodle versions, PHP versions, and database types that it claims to support.</LI>
<LI><s>* </s><STRONG><s>**</s>Security First:<e>**</e></STRONG> Always prioritize security in your plugin development. Moodle has strict security review processes.</LI>
<LI><s>* </s><STRONG><s>**</s>Patience:<e>**</e></STRONG> The review process can take time. Plan accordingly and be prepared to iterate on feedback.</LI>
<LI><s>* </s><STRONG><s>**</s>Community Engagement:<e>**</e></STRONG> Engage with the Moodle community on forums if you have questions during development.</LI></LIST>
<p>By following this SOP, you can effectively navigate the process of requesting permission and submitting your plugin to the Moodle Plugins Directory, making a valuable contribution to the Moodle ecosystem.</p></r>
Did this solution help you resolve the issue?