Skip to content

Commit

Permalink
[docs] Migrate Plugin contribution docs
Browse files Browse the repository at this point in the history
  • Loading branch information
vmdef committed Aug 7, 2023
1 parent 3c696a3 commit dd55a2a
Show file tree
Hide file tree
Showing 23 changed files with 684 additions and 10 deletions.
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"stylelint.packageManager": "yarn",
"cSpell.enabled": true
"cSpell.enabled": true,
"cSpell.words": [
"prechecks"
]
}
27 changes: 27 additions & 0 deletions data/migratedPages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1485,15 +1485,42 @@ Peer_reviewing:
Plagiarism_API:
- filePath: "/docs/apis/subsystems/plagiarism.md"
slug: "/docs/apis/subsystems/plagiarism"
Plugin_QA_prechecks:
- filePath: "/general/community/plugincontribution/qaprechecks.md"
slug: "/general/community/plugincontribution/qaprechecks"
Plugin_code_prechecks:
- filePath: "/general/community/plugincontribution/codeprechecks.md"
slug: "/general/community/plugincontribution/codeprechecks"
Plugin_contribution:
- filePath: "/general/community/plugincontribution/index.md"
slug: "/general/community/plugincontribution"
Plugin_contribution_checklist:
- filePath: "/general/community/plugincontribution/checklist"
slug: "/general/community/plugincontribution/checklist"
Plugin_documentation:
- filePath: "/general/community/plugincontribution/documentation.md"
slug: "/general/community/plugincontribution/documentation"
Plugin_files:
- filePath: "/docs/apis/commonfiles.md"
slug: "/docs/apis/commonfiles"
Plugin_types:
- filePath: "/docs/apis/plugintypes/index.md"
slug: "/docs/apis/plugintypes/"
Plugin_with_third_party_libraries:
- filePath: "/general/community/plugincontribution/thirdpartylibraries.md"
slug: "/general/community/plugincontribution/thirdpartylibraries"
Plugins_adoption_programme:
- filePath: "/general/community/plugincontribution/adoption.md"
slug: "/general/community/plugincontribution/adoption"
Plugins_directory:
- filePath: "/general/community/plugincontribution/pluginsdirectory.md"
slug: "/general/community/plugincontribution/pluginsdirectory"
Plugins_directory_API:
- filePath: "/general/community/plugincontribution/pluginsdirectoryapi.md"
slug: "/general/community/plugincontribution/pluginsdirectoryapi"
Plugins_guardians:
- filePath: "/general/community/plugincontribution/guardians.md"
slug: "/general/community/plugincontribution/guardians"
Preference_API:
- filePath: "/docs/apis/core/preference/index.md"
slug: "/docs/apis/core/preference/"
Expand Down
2 changes: 1 addition & 1 deletion docs/apis/_files/changes.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!-- markdownlint-disable first-line-heading -->
If your plugin includes a changelog in its root directory, this will be used to automatically pre-fill the release notes field when uploading new versions of your plugin to the [Plugins directory](https://docs.moodle.org/dev/Plugins_directory). This file can be in any of the following locations:
If your plugin includes a changelog in its root directory, this will be used to automatically pre-fill the release notes field when uploading new versions of your plugin to the [Plugins directory](/general/community/plugincontribution/pluginsdirectory). This file can be in any of the following locations:

- `CHANGES.md`: as a markdown file; or
- `CHANGES.txt`: as a text file; or
Expand Down
2 changes: 1 addition & 1 deletion docs/apis/_files/readme.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- markdownlint-disable first-line-heading -->
We recommend that you include any additional information for your plugin in a project readme file. Ideally this should act as an offline version of all information in your plugin's page in the [Plugins directory](https://docs.moodle.org/dev/Plugins_directory).
We recommend that you include any additional information for your plugin in a project readme file. Ideally this should act as an offline version of all information in your plugin's page in the [Plugins directory](/general/community/plugincontribution/pluginsdirectory).

We recommend creating your readme file in either a `README.md`, or `README.txt` format.
2 changes: 1 addition & 1 deletion docs/apis/_files/styles-css.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- markdownlint-disable first-line-heading -->
Plugins may define a '/styles.css' to provide plugin-specific styling. See the following for further documentation:

- [Plugin contribution checklist#CSS styles](https://docs.moodle.org/dev/Plugin_contribution_checklist#CSS_styles)
- [Plugin contribution checklist#CSS styles](/general/community/plugincontribution/checklist#css-styles)
- [CSS Coding Style](https://docs.moodle.org/dev/CSS_Coding_Style)

:::tip Avoid custom styles where possible
Expand Down
2 changes: 1 addition & 1 deletion docs/apis/commonfiles/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -161,4 +161,4 @@ import extraLangDescription from '../_files/lang-extra.md';
- [Plugin types](../plugintypes/index.md) - list of all supported plugin types
- [Moodle plugins directory](https://moodle.org/plugins/) - repository of contributed plugins for Moodle
- [Moodle plugin skeleton generator](https://moodle.org/plugins/tool_pluginskel) - allows to quickly generate code skeleton for a new plugin
- [Checklist for plugin contributors](https://docs.moodle.org/dev/Plugin_contribution_checklist) - read before submitting a plugin
- [Checklist for plugin contributors](/general/community/plugincontribution/checklist) - read before submitting a plugin
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions general/community/plugincontribution/adoption.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Plugins adoption programme
sidebar_position: 9
tags:
- Guidelines for contributors
- Plugins
- Plugin documentation
---
The Plugins adoption programme is a process for making it clear that a plugin is orphaned and is looking for a new maintainer. The programme is one of the mechanisms helping to minimise the risks of relying on additional plugins. The programme helps to find new maintainers for plugins whose original authors can't work on the plugin fully any more.

The programmes started in 2014 by announcing it in [a forum post](https://moodle.org/mod/forum/discuss.php?d=260354#p1128482) and since then, many plugins found their new maintainers since then through it.

### Motivation

Having an additional plugin installed at a Moodle site is always a risk. One of the essential aspects (apart from the code quality itself) that potential plugin users have to consider is how well the plugin is being maintained. Does the maintainer release regular updates and bug fixes? Is the plugin updated every six months for the new Moodle major release? Is there a place to report bugs and feature requests? And when reported, are they reflected?

It's not that difficult to write a new Moodle plugin these days. Many students do that as a part of their school or thesis projects, for example. But can one rely on the author of plugin to provide sufficient (or at least some) support for it? To be a responsible maintainer of a plugin is much harder than to be an author of it. Many maintainers work on their plugins in their free time. And even if they are lucky enough to be paid for doing that, it's just time consuming (as everything).

At certain moment, maintainers can realise they are not able to give enough love to their plugins any more. In the essay The Cathedral and the Bazaar, Eric Steven Raymond says

:::note

When you lose interest in a program, your last duty to it is to hand it off to a competent successor.

:::

And that is what Moodle plugins adoption programme is about.

### Programme rules for plugin maintainers

1. It is not a shame to give up on a plugin maintenance. Unmaintained plugin is worse than no plugin. We appreciate that you as the original author do not want to harm Moodle reputation just because your old code broke someone's site.
1. If you decide to offer your plugin for adoption, let the world know via posting into the [Plugins traffic forum](https://moodle.org/mod/forum/view.php?id=8149).
1. Your plugin will be put into a [special set in the Plugins directory](https://moodle.org/plugins/?q=set:maintainer-needed).
1. Once there is a volunteer who would like to take over the maintenance, please reply to the forum. It will help if the candidate proves their skills via a reference or a patch for existing issue etc. So we all know the plugin is passed over to good hands.
1. Finally, the successor is given the lead maintainer role for the plugin with all the permissions (edit the plugin record, release new versions etc). The previous maintainer will be still listed as the original author in the directory.

### Applying to become a maintainer

If you would like to become a new maintainer of a plugin that has been put up for the adoption, please reply to the relevant post in the [Plugins traffic forum](https://moodle.org/mod/forum/view.php?id=8149). It will help to demonstrate that you would be able to maintain the plugin - ideally with existing pull requests or other contributions to the plugin.

### Notes

- The `@author` tag in the phpDocs block of a file should never be changed even after the whole file is rewritten eventually. It's GPL legal statement, not a credits line.
- If the plugin was originally using Github as its repository, it is recommended to transfer the ownership of the repo. That way, all the reported issues in the github tracker, pull requests and all other information is kept.

### Forced adoption

As discussed in [MDLSITE-5354](https://tracker.moodle.org/browse/MDLSITE-5354), there are cases when a plugin becomes effectively orphaned due to maintainer's inactivity. In most cases, we can get in touch with the maintainer and agree on putting the plugin up for adoption. In rare cases when the maintainer can't be reached, the following procedure applies.

- Given that the maintainer has not logged in to the moodle.org site for 90 or more days
- When the maintainer does not reply to an email sent to their address (obtained from their moodle.org user profile, last commit message and tracker account) within a period of 30 days
- And the maintainer does not reply to a personal message sent to them via moodle.org messaging features within a period of 30 days
- Then plugins directory curators can consider the plugin maintainer disappeared and the plugin orphaned. It is then allowed to put the plugin up for adoption on behalf of the maintainer or assign it to another maintainer.

### Initiating forced adoption

If you are aware of a plugin that seems abandoned and you would like to help and become a new maintainer of it:

- Try to contact the current maintainer and let them know about this Plugins adoption programme. It is always better to have the plugin put for adoption by the current maintainers.
- If you do not get any response within a reasonable period, please publish your offer and intention via a new post in the [Plugins traffic forum](https://moodle.org/mod/forum/view.php?id=8149) to make the community aware of it.
- The plugins directory curators are subscribed to that forum and will be notified about your post there. They will help you with further process.
Loading

0 comments on commit dd55a2a

Please sign in to comment.