OER Exchange
| OER Exchange | |
|---|---|
| Type | Local plugin |
| Set | N/A |
| Downloads | https://marketplace.moodle.com/plugins/local_oerexchange |
| Issues | https://github.com/adamjenkins/moodle-local_oerexchange/issues |
| Discussion | https://marketplace.moodle.com/plugins/local_oerexchange |
| Maintainer(s) | Adam Jenkins (WiseCat) |
OER Exchange is a local plugin that turns a Moodle site into a shared catalogue of open educational resources (OER). Teachers publish courses and activities to it from their own Moodle sites, and other teachers find that material, preview it, try it in the browser and import it into their own courses. This page describes the whole platform and the Exchange site; the other plugins of the platform have pages of their own (see below).
The OER Exchange platform
The platform has two sides:
- The Exchange is one dedicated Moodle site with this plugin installed. It holds the catalogue, the uploaded backup files, the reviews, the moderation queue and the educator profiles. A platform usually has one Exchange, run for example by a consortium, a university or a subject association.
- Client sites are ordinary Moodle sites of schools, departments or teachers, with the OER Exchange client plugin installed. A client site connects to one Exchange. From it, teachers share a course or an activity to the Exchange and import resources back, without a manual backup and restore. Any number of client sites can connect to the same Exchange.
You do not need a client site to use an Exchange: browsing, trying and downloading work in a web browser, and resources can also be uploaded on the Exchange itself.
The platform is made of these plugins:
| Plugin | Installed on | What it does |
|---|---|---|
| OER Exchange (this page) | Exchange | The catalogue, publishing, reviews, moderation, profiles, collections and the web services that client sites use |
| OER Exchange client | Client sites | Share courses and activities to the Exchange, browse it and import from it |
| OER Exchange client block | Client sites | A Dashboard block with the site's shares and the newest resources on the Exchange |
| OER Exchange browse block | Exchange | A search box and recently published resources |
| OER Exchange shares block | Exchange | The viewer's own shared resources and their status |
| OER Exchange quick links block | Exchange | The resources the viewer recently tried, with Try it and Download buttons |
| OER Exchange moderation queue block | Exchange | What needs a moderator's attention |
| OER Exchange contributors block | Exchange | The people who publish to the Exchange |
A resource in the catalogue is one of:
- a Course: a whole Moodle course, shared as a backup;
- an Activity: a single activity, such as a quiz or a lesson, without the course around it;
- a Data resource: a file that is not a Moodle backup, such as a Glossary export or a Question bank export.
Installation
Install the plugin on the Exchange site from the Moodle plugins directory, or download the ZIP file and follow Installing plugins. The files go in the folder local/oerexchange. The plugin supports Moodle 5.0 to 5.3. The Exchange blocks listed above are optional and need this plugin.
After installation:
- Make sure Cron runs. Uploaded backups are checked by background tasks, so without cron new shares stay pending and never reach the catalogue.
- Client sites call the Exchange through Web services with the REST protocol. In Site administration > Server > Web services, turn on Enable web services and enable the REST protocol in Manage protocols. Moodle's REST server also requires the capability webservice/rest:use for every account that calls it, so allow it for the accounts that client sites use: each site's account and the teachers who link their own accounts. The simplest way is to allow it for the Authenticated user role (see Site registration and account linking).
- Link to the catalogue, at
/local/oerexchange/index.php, from your site, or make it the home page (see Catalogue and front page).
Site registration and account linking
A client site must be registered with the Exchange, and approved, before it can share or import.
- The client site's administrator enters the Exchange's address in the client plugin's settings and sends a registration request (see OER Exchange client). The request carries the site's name, address and a contact email address.
- On the Exchange, the request appears under Pending sites in Site administration > Plugins > Local plugins > OER Exchange > Registered sites. Check that the address and the contact are genuine, then click Approve.
- Approving creates a dedicated account for that site, which cannot be used to log in, and a web service token for it (the "site key"). The site key is emailed to the contact address, and the client's administrator pastes it into the client settings.
Revoke blocks a site's calls at once, and deletes the personal tokens that its account links created. Resources already shared from that site stay in the catalogue: they belong to their authors. A repeated registration request for the same address returns the pending request instead of adding another. Registrations are limited per hour, both site-wide and per network address, and pending requests that are never approved are removed after 30 days.
Account linking. Shared resources are attributed to a person, not only to a site. The first time a teacher shares from a client site, the client offers to link their account: the teacher is sent to the Exchange page Link your Exchange account, signs in (or creates an account), and confirms with Link my account. The Exchange then gives the client a one-time code, which expires after five minutes and can be used only once, and the client exchanges it for a personal token. This is done once per teacher.
Finding and trying resources

The catalogue page, Browse OER catalogue, shows the published resources as cards with a cover image, the title, a short summary, the type, the licence and the numbers of downloads and imports. Above the cards are a search box, which matches titles, summaries and tags, and the filters Type, Licence and Language, which offer only the values used in the catalogue. Resources that are hidden or taken down are never listed. Browsing and viewing resource pages need no account.

A resource page shows:
- Created by the author, linked to their educator profile, and With any co-authors;
- the licence, the course format, the Moodle version it was shared from, the file size and, for an adaptation, Adapted from with a link to the original;
- the summary, the tags and the cover image;
- the buttons Try it, Download, Share this resource, Star and Add to collection;
- Required plugins: the plugins that are not part of standard Moodle that the backup needs (activity modules, course formats, question types and behaviours, subplugins, advanced grading methods and blocks). Each is labelled Included in trial, Attempted in trial — may not fully work or Not in trial — won't appear when you try it.
- Structure preview: the sections and activities inside the backup, so you can see what is inside before you download anything;
- Adaptation stories: reviews by people who reused the resource.
Download gives the backup file (.mbz) or the uploaded data file, to restore by hand on any Moodle (see Course restore). On a client site, teachers import resources directly instead (see OER Exchange client).
Try it starts the resource in a complete Moodle that runs inside the visitor's browser. The resource is restored into it, the visitor is enrolled in the trial course as a teacher and as a student, and nothing they do there reaches the Exchange. The trial opens in the language the visitor is using, where the sandbox has that language. Try it is optional; see The Try it sandbox. There is no Try it button when the sandbox is off, for data resources, for resources whose author turned it off, or above the size limit that the administrator set.
Downloading and Try it need a login unless the administrator turns on Allow anonymous download.
Sharing resources
Teachers share in two ways:
- From a client site: Share to OER Exchange on a course or an activity. The client builds a backup without user data and uploads it. See OER Exchange client.
- On the Exchange: the page Share a new resource (
/local/oerexchange/share_new.php, also linked from the OER Exchange shares block) offers Upload a course or activity backup (.mbz) and Upload a data resource. Both ask for a Title, a Summary, a Licence and Tags (comma-separated). A backup also needs its Type (Course or Activity), and a data resource its Data resource type.
Sharing needs the capability local/oerexchange:share, which every authenticated user has by default. The guest account can never share.
What happens to an upload:
- The upload page shows a progress bar, then opens the new resource's page, which says that the upload is being checked and updates itself when the check is done. A data resource is published at once.
- A background task checks the backup and reads its structure before the resource is listed. A backup that contains user data is refused, by its own backup settings and by an independent check of its user records, and the uploaded file is deleted. The author sees the reason on the resource page, and a client site is told too.
- Maximum upload size (500 MB by default) is the only size limit that refuses an upload.
Licences. The licence must be one of the Allowed licences that the administrator chose (by default the Creative Commons licences; see Licences). Client sites ask the Exchange for this list, so their share forms offer the same licences. The licence list preselects the sharer's last licence (when Remember user licence preference is on), then the Default site licence, then CC BY-SA, whichever is allowed first. The licence cannot be changed after publishing, because people may already have imported the material under it.
One version at a time. Sharing the same course again, or Replace the file, replaces the file of the same catalogue entry. The entry keeps its page, its address, its reviews and its first-published date, and the old file is served until the new one has been checked.
Looking after a resource

Authors manage a published resource on its page, in the card Your resource, which only people who can edit the resource see. It starts with the resource's status, for example Published — visible in the catalogue. or Pending — waiting for this resource's file to be validated.
- Edit details: change the title, the summary (a rich-text field), the tags and the thumbnail (Upload a new thumbnail image: PNG, JPEG, GIF or WebP, up to 5 MB). The licence and the type cannot be changed here.
- Replace the file: upload a new backup or data file of the same kind for the same entry.
- Hide from the catalogue and Show in the catalogue again. Hiding does not break links; the page tells visitors that the resource is no longer listed.
- Turn off "Try it" for this resource, with an optional reason shown to visitors.
- Show this resource only as part of its collections: while the resource is in at least one public collection, it is left out of the catalogue, search, profiles and the browse block, and is shown only in its collections.
- Co-authors: type a username in Username or email address and click Add co-author. The person receives an invitation and becomes a co-author only when they Accept it. Invitations expire after 14 days. An email address works only where the site shows email addresses in Show user identity and the inviter has moodle/site:viewuseridentity. A co-author has the same rights as the author, including adding and removing co-authors, but cannot remove the original author. Co-authors are named publicly on the resource page.
- Still fresh: see Abandoned courseware.
- Delete this resource: deletes the file, the version history, the reviews and the reports. A short "Resource deleted" page stays at the address, so existing links do not simply break. This cannot be undone.
While a moderator holds a resource, its author and co-authors can still edit it, but cannot show it again or delete it.
Reviews, stars and reports
- Adaptation stories: signed-in users who reused a resource click Share your adaptation story and answer How did you use this?, What did you change? and How did it go?, with an optional Rating (optional). The author is notified.
- Star: any signed-in user can star a resource or a collection. Starred resources are listed publicly under Liked resources on the person's educator profile, once that person has shared something. Stars are stored in Moodle's own favourites.
- Report: signed-in users report a resource (or, with Report this collection, a collection) with a Reason (Copyright concern, Quality issue, Spam or Other) and Details. The report goes to the moderators and the author is notified. A user can have one open report per item.
Collections

A collection is an ordered list of catalogue resources, by any authors, with a Curator's note on each. Users with the capability local/oerexchange:createcollection (every authenticated user by default) create one with Create collection on their profile, or from Add to collection on a resource page.
- Who can see this collection: Draft — only me, Unlisted — anyone with the link or Public — listed on this site. Public collections are listed at
/local_oerexchange/collections, appear in catalogue search and on the owner's profile, and each has its own address,/local_oerexchange/c/followed by its name. - Each collection has a Cover image, or a mosaic of its first resources' thumbnails.
- The owner can invite Curators (Add curator) who manage its items; invitations work as for co-authors. Let any signed-in user add resources opens the collection to contributions from anyone signed in.
- Curators add and remove resources one by one or with Add selected and Remove selected, and reorder them.
- Download collection (.zip, …), with the size in place of the dots, gives all its files as one ZIP, with a list of each item's author, licence and link. The ZIP is built in the background; collections above the size limit offer their resources one by one instead.
The administrator can turn collections off, and can feature chosen public collections on the catalogue page (see Collections settings).
Educator profiles and contributors
Every author gets a public Educator profile at /local_oerexchange/u/ followed by a short name. It is created automatically when the person first publishes. It shows their bio, expertise areas, badges, the number of resources, downloads and the average rating, their shared resources, their collections, Liked resources and the site's additional user profile fields that the administrator has set to Visible to everyone (see User profile fields). With Edit profile the owner changes the Profile URL slug, Bio, Expertise areas (comma-separated) and Show my profile publicly.
Badges are awarded every night. The Trusted Contributor badge goes to authors who meet all three thresholds that the administrator sets (by default 10 published resources, 500 downloads and an average rating of 4.0; an author with no rating yet is not held back by the rating).
The Contributors page, /local_oerexchange/contributors, lists everyone who publishes to the Exchange, sorted by the most resources, the most courses or the most recent share. The OER Exchange contributors block shows the same cards.
Moderation

Users with local/oerexchange:moderate (managers by default) moderate the Exchange. The OER Exchange moderation queue block summarises what needs attention.
- The Moderation queue (Site administration > Plugins > Local plugins > OER Exchange > Moderation queue) lists Open reports, Moderated resources, Failed parses (uploads that could not be checked) and Reported collections. A report can be resolved (Resolve, with a Note) or dismissed (Dismiss). A resource can be hidden (Hide), removed (Remove) or restored (Restore).
- On a resource page, moderators see Moderator controls with Take down and Restore to the catalogue. A collection can be taken down and restored the same way.
- Resources hidden by moderators lists every resource a moderator has taken down, when and by whom, and whether the author has changed it since. Its Moderator notes are shared by all moderators (Save notes).
A moderator's takedown is separate from the author's own hide: the author cannot lift it and cannot delete the resource while it is held, so the complaint and the record of the takedown are kept. Every moderation action can be reversed with restore.
Abandoned courseware
This feature is off by default. When Flag and remove abandoned resources is on, a nightly task warns the author of any published resource that has not been updated for longer than Consider a resource abandoned after (2 years by default). The resource page then shows a banner with the removal date. The author can update the resource or click Still fresh. If neither happens within the Grace period after the warning (60 days by default), the resource is removed from the catalogue into the moderation queue's Moderated resources, where a moderator can restore it. Resources whose author's account has been deleted are left for a moderator.
The Try it sandbox
The Try it sandbox is optional and off by default. It runs Moodle Playground, a Moodle that runs in the browser with WebAssembly, so trials do not run on your server. The Exchange only builds the launch address. You build and host the sandbox yourself with the separate oer-sandbox kit, which builds the Moodle Playground files, then you enter their address in Sandbox base URL and turn on Enable sandbox (Try it).
Two further pages in Site administration > Plugins > Local plugins > OER Exchange prepare the sandbox:
- Sandbox bundle configuration (capability local/oerexchange:managesandbox): the language packs to include and the default trial language, the Moodle versions to build, the text filters and other site settings for trials, and the features to switch off. Download config file gives a file for the oer-sandbox build scripts; this page does not build anything itself. After you have rebuilt and redeployed the sandbox, tick These settings are bundled in the deployed sandbox, and the page checks whether the deployed sandbox matches the saved configuration.
- Sandbox plugin allowlist (capability local/oerexchange:managesites): the plugins that are not part of standard Moodle that trials may install. Add a plugin by its Plugin address or a ZIP file; the page looks up the plugin's dependencies and the Moodle versions it supports. Entries can be enabled, disabled and deleted, and Offer an existing selection on another Moodle version copies a selection to another Moodle version. Bake into bundle marks a plugin to be built into the sandbox instead of installed when a trial starts. These entries decide the Included in trial and Attempted in trial labels on resource pages.
Site settings

The plugin has its own category, Site administration > Plugins > Local plugins > OER Exchange, with the pages General settings, Registered sites, Sandbox plugin allowlist, Moderation queue, Resources hidden by moderators and Sandbox bundle configuration.
Sandbox
- Enable sandbox (Try it) (off by default): show the Try it button.
- Sandbox base URL: the address of the deployed Moodle Playground files.
- Allow an insecure sandbox base URL (off): only for a sandbox on a private network or with a self-signed certificate.
- Warn about slow trials above (50 MB by default): above this size the resource page warns that a trial will be slow. If your oer-sandbox build raises the fast download limit, set the same value here. 0 never warns.
- Never offer a trial above (0, no limit): above this size there is no Try it button.
Anonymous access
- Allow anonymous download (off): let visitors download a resource and use Try it without logging in.
- Maximum upload size (500 MB): the largest backup or data file the Exchange accepts, on every upload path. It is also sent to client sites.
Catalogue and front page
- Show the catalogue to visitors at the site home page (off): a visitor who is not logged in and opens the site home page sees the catalogue at that address instead of the login page. Force users to log in still applies to every other page. The catalogue is not shown in maintenance mode, and
/?redirect=0always opens the normal front page. For logged-in users, the plugin adds OER catalogue to Site administration > Appearance > Navigation > Start page for users. - Show a content area on the catalogue (off) and Catalogue content: HTML shown above the search box, such as a welcome message. Turning the checkbox off keeps the text.
Collections settings
- Enable collections (on).
- Largest collection download (MB) (100): 0 switches whole-collection downloads off.
- Busy threshold for building downloads (20): collection ZIP files are built when fewer signed-in users than this have been active in the last five minutes. 0 builds without waiting.
- Feature collections on the landing page, Where the featured collections go (Above the resources, Below the resources or Instead of the resources) and Heading above the featured collections.
Sharing
- Share destinations: Copy link, Share… (the device's own share menu), Mastodon, Facebook, X, LinkedIn, Email and SMS. Every one is a plain link; no third-party script is loaded.
- Share buttons: Collapsed behind a "Share" button (default), Show the buttons, not collapsed or Do not show share buttons.
Badge colours
- Course badge colour, Activity badge colour, Data resource badge colour and Collection badge colour: hex colours for the type labels on cards and pages.
Licences
- Allowed licences: the licences that sharing may use, from the licences enabled in the site's licence manager (see Licences). Until the setting is first saved, the Creative Commons licences are allowed. A change affects only future shares.
- Show licence codes in capitals (on): show for example
CC-SA-4.0instead ofcc-sa-4.0. This changes only the display.
Badges
- Trusted Contributor: minimum published resources (10), Trusted Contributor: minimum total downloads (500) and Trusted Contributor: minimum average rating (4.0).
Abandoned courseware
- Flag and remove abandoned resources (off), Consider a resource abandoned after (2 years) and Grace period after the warning (60 days).
Scheduled tasks and events
The plugin's Scheduled tasks include Compute educator badges and Check for abandoned resources (nightly), Queue out-of-date collection downloads and Clean up expired link codes, registrations and invitations. Re-scan stored backups for required plugins is disabled by default: run it once with Run now after an upgrade that improves the detection of required plugins.
The events Resource shared and Resource updated can be used in Event monitoring rules, for example to be notified of new shares. The plugin also sends notifications to authors (imports, reviews, reports, abandoned resources) and invitations to co-authors and curators; users choose how to receive them in their notification preferences (see Notifications).
Capabilities
- local/oerexchange:share (Share resources on the Exchange): share and replace resources, on the upload pages and through the web service. Authenticated user by default.
- local/oerexchange:createcollection (Create collections of catalogue resources): create collections. Authenticated user by default.
- local/oerexchange:moderate (Moderate reports and failed parses): the moderation queue, the list of resources hidden by moderators, and taking down and restoring resources and collections. Manager by default.
- local/oerexchange:managesites (Manage registered client sites and the sandbox plugin allowlist): approve and revoke client sites, and manage the allowlist. Manager by default.
- local/oerexchange:managesandbox (Configure the Try it sandbox bundle): the sandbox bundle configuration page. Manager by default.
All are system-level, and each opens its own admin page without full site administration rights. Editing a resource depends on being its author or co-author, not on a capability. See Capabilities.
Privacy
The plugin implements the Moodle Privacy API, so users' data can be exported and deleted with the site's data request tools. It stores:
- the resources a user shares, their educator profile, badges, reviews, reports, imports and trials;
- co-authorships, curatorships, collections and the resources they added to collections, and invitations;
- account link codes and the moderators' notes and takedown records;
- the contact email address of each registered site.
Stars are stored in Moodle's favourites. Published resources, author names, reviews and public collections are public. Shared backups never contain user data, but authors should still check their content, for example for names of students in files or text.
When a user's data is deleted, their resources are really deleted, not only made anonymous: a short "deleted" page stays at the old address, with no title, summary or author. Their own co-authorships and curatorships are removed; rights they gave to other people remain but no longer name them. A moderator's takedown remains in force without the moderator's name. For a registered site, only the contact email address is removed, so the connection of another institution is not broken. Uninstalling the plugin also removes the accounts and tokens it created for registered sites.