[Community Proposal] Open edX Extensions Marketplace
- 1 Abstract
- 2 Context & Background
- 3 Scope & Approach
- 3.1 What existing Open edX solutions that might contribute to the launch of Open edX Extensions Marketplace?
- 3.2 Comparison of the existing marketplace solutions on the market
- 3.3 Prototypes for Open edX Extensions marketplace
- 3.4 Utilizing Tutor Plugins Index to add new extensions to marketplace
- 3.5 Process for maintaining Open edX Extensions Marketplace
- 4 Open questions
- 5 Milestones
- 6 Timeline
- 7 Future opportunities for OeX Marketplace
- 8 Authors
Abstract
This community proposal aims to establish a global Open edX extensions marketplace. The marketplace will increase the platform's visibility by attracting new operators seeking customizable and modular LMS solutions. It will also expand the platform's capabilities and strengthen community engagement.
In this proposal, we analyze existing marketplace solutions and identify key features that can serve as prototypes for the Open edX marketplace. We also outline a process for maintaining and supporting the marketplace through community working groups.
Additionally, we propose a technical approach for integrating new solutions into the marketplace using Tutor plugins, along with centralized and third-party Tutor Plugin Indexes. These extensions may include, but are not limited to, Python and ReactJS extensions of the platform core, infrastructure extensions via Tutor plugins, mobile plugins for Open edX apps, xBlocks, and integrations with third-party systems through Tutor plugins.
The work on this proposal was started as Marketing-wg initiative and can be tracked using this GitHub issue.
Context & Background
According to the core product strategy, the Open edX platform aims to become the leading open-source online learning management system for adult education by growing its community and encouraging greater contributions. To support this strategy, the Marketing Working Group (marketing-wg) proposes to reimagine and create a centralized directory for Open edX plugins and extensions: the Open edX Extensions Marketplace.
The main objectives for this new centralized marketplace are:
Improve User Experience and Boost Platform Adoption:
Provide current and potential Open edX operators and developers with an easy way to explore third-party tools and services within the Open edX community.
Simplify the integration of plugins, enabling operators to build comprehensive educational solutions without extensive custom development.
Standardize support and documentation for plugins, making it easier for users to find the resources they need for successful integration.
Contribute to the Development and Growth of the Open edX Platform:
Encourage developers within the Open edX community to adopt pluginization patterns, extending the platform with more extension points over time.
Create a centralized hub where community developers and Open edX providers can share and showcase their solutions, indirectly promoting their services.
Enable Data-Driven Decision-Making:
Provide analytics and insights on plugin usage, helping the Open edX community make informed decisions about future development priorities.
This proposal is inspired by a range of market-leading platforms that offer users the possibility to easily adjust the main solution according to their needs by integrating extensions developed and maintained by platform developers, as well as by third parties. Examples of the existing marketplaces include: Shopify, WordPress, Odoo, Atlassian, Google Workspace, Salesforce, and Moodle. In addition, several simpler community plugin sharing options were evaluated - https://backstage.io/plugins/ (https://github.com/backstage/community-plugins/tree/main), https://github.com/apache/superset/wiki/Superset-Third%E2%80%90Party-Plugins-Directory.
The Open edX community has developed a range of tools, technologies, and approaches designed to extend the platform. By leveraging these existing resources, the effort required to establish the Open edX Extensions Marketplace can be significantly reduced compared to previous attempts.
Scope & Approach
What existing Open edX solutions that might contribute to the launch of Open edX Extensions Marketplace?
Open edX extensions directory
The existing Open edX extensions directory is the second iteration of the XBlocks Directory. While it lists many available extensions, xBlocks, and plugins for Open edX, along with categorization and search features, it faces several issues that hinder its effectiveness in achieving the goals of this initiative.
The lack of detailed descriptions for extensions results in limited SEO capabilities and a poor user experience.
There is no indication whether the extension is maintained or which Open edX named releases are supported, resulting in a significant number of extensions being outdated.
There is no information about how to integrate the extension to the Open edX instance.
Direct feedback, ratings, and support options are not available.
Unspecific instructions for community developers on how to publish extensions on the marketplace.
Edly Tutor Plugins & Themes
The list of official Tutor plugins and themes available at https://edly.io/tutor/plugins-and-themes/ offers a much better user interface, providing detailed plugin descriptions, links to source code, and information about supported versions, addressing many user experience challenges. However, the lack of clarity regarding the publication process for Tutor plugins by community developers, the absence of feedback and rating options, and the focus solely on officially supported plugins distinguish this plugin index from the proposed Extensions Marketplace.
Tutor plugins (infrastructure and deployment plugins)
Tutor provides an easy-to-use and flexible way to deploy Open edX installations. It is well-supported and thoroughly documented. Additionally, Tutor includes a plugin system that significantly simplifies the deployment process for Open edX.
Tutor plugins offer a convenient method to programmatically describe and share Open edX extensions within the community. Many third-party Tutor plugins follow the naming convention "tutor-contrib-*" and can be found on GitHub by searching here.
These plugins can also be discovered through the Tutor plugin indexes.
In the future, Tutor plugins could enable "one-click" installation of extensions for Open edX operators, further streamlining the setup process.
Hooks&Filters framework
Introduced in the https://open-edx-proposals.readthedocs.io/en/latest/architectural-decisions/oep-0050-hooks-extension-framework.html , the Hooks Extension Framework initially saw limited adoption, primarily due to the small number of implemented events and filters. However, the framework now offers enough extension points in the edx-platform, as seen in the openedx-filters repository, to support plugin development while following the Open-Closed Principle.
Frontend Plugin Framework
The recently introduced in Redwood - Frontend Plugin Framework provides a much-needed mechanism to extend Micro-Frontends (MFEs) in Open edX using external NPM and React.js modules or by adding iframe plugins into extension points called plugin slots.
However, this technology is not yet fully ready to support a seamless plugin experience without additional MFE development.
Some caveats for using the frontend-plugin-framework, as discussed during a frontend-wg meeting, include:
Very few plugin slots are available in MFEs as of the Redwood release.
Operators must configure the use of plugins directly in the MFE via JavaScript environment configuration.
The MFE application must be rebuilt to install or update plugins.
Although these limitations prevent us from creating complete end-to-end solutions without extra configuration and setup, work on the frontend-plugin-framework is ongoing. Once these issues are resolved, it may become much easier for the community to create one-click installable "full-package" solutions using the Marketplace.
Comparison of the existing marketplace solutions on the market
During the preparation of the proposal, common marketplace solutions were analyzed to cover all the necessary functionalities that the marketplace should include.
The marketplaces included in the analysis are Shopify, WordPress, Odoo, Atlassian, Google Workspace, Salesforce, and Moodle.
In the following image, you can see a matrix comparison of the functionalities across these marketplaces, as well as a categorization of attributes that every marketplace entry should include.
Link to the whiteboard with analysis - Analysis Matrix
More details about each marketplace solution with screenshots - Marketplaces screenshots
Prototypes for Open edX Extensions marketplace
Based on the preliminary analysis of marketplace solutions, Figma mockups for the future marketplace UI/UX were prepared. These mockups incorporate all the necessary elements a marketplace should have, mapping general ideas to the Open edX context and presenting each marketplace entry as a Tutor plugin.
Figma mockups can be found there:
What extensions will be available on the marketplace?
The marketplace may include, but is not limited to, Python and ReactJS extensions of the platform core, infrastructure extensions using the Tutor plugins mechanism, mobile plugins for Open edX mobile apps, xBlocks, and integrations with third-party systems in the form of a Tutor plugin. Additionally, Open edX themes for the platform and the Paragon design system can be published on the marketplace under the separate category "Themes."
Catalog page mockup
The marketplace catalog should include a search field and filters.
Each entry includes title, description, and a set of additional attributes, described below.
It is proposed for the Marketplace catalog page to include the following categories:
Official Plugins
Official xBlocks
3rd-Party Plugins
3rd-Party xBlocks
Themes
Each plugin should have additional attributes for filtering:
Compatible versions - named release from All Open edX releases
Supported Languages
Maintainer / Vendor / Author
Rating / reviews
Other named attributes are considered to be added to enhance user experience, e.g., attr - Solution Type with values Python extension, MFE extension, Mobile extensions, etc., or attr - Domain with values Micro-credentials, Learning, Teaching, etc.
Extension details / overview page
Plugins should be downloadable from the site and/or include a "View Source" button with a direct link to the GitHub repository.
Each catalog entry should include all the necessary attributes used for filtering the content. We propose using a tabbed layout on the details page, including the following tabs:
Overview: Main information about the plugin. The idea is to either use
Readme.md
parsed directly from the repository or an additional markdown document that can be placed in the repository’s docs directory.More Details: Include all the extension attributes in table form.
Reviews: Functionality for leaving comments and reviews.
Versions: Table view of all available versions of the package in relation to the named release, with "View Source" and "Download" buttons.
Installation: Detailed instructions on how to install and configure the plugin.
Additional options such as privacy, security, or support can be considered for future additions. However, for the initial milestones, they might include just generic text.
Installation details
Plugin reviews
Utilizing Tutor Plugins Index to add new extensions to marketplace
To enhance maintenance tooling and streamline the community flow for publishing plugins on the marketplace, the Tutor Plugin Indexes concept is planned for implementation. More information on plugin indexes can be found in the official documentation.
It is proposed to create a centralized Plugin Indexes repository within the Open edX GitHub organization. This will involve transferring official Tutor plugins maintained by AXIM and Open edX CCs from the original overhang.io repository (https://github.com/overhangio/tpi/). The repository will be managed by the Maintenance Working Group (maintenance-wg) and will be updated with new plugins as they are officially released.
Additionally, the centralized Tutor indexes repository may include an index file for third-party extensions (similar to the contrib plugin index in https://github.com/overhangio/tpi/). Community developers can add their extensions by opening a pull request.
In later phases, it will be necessary to evaluate the possibility of including vendor-managed Tutor indexes (e.g., Edly, OpenCraft, eduNEXT, RG) to provide even more marketplace entries that should not be centrally managed.
It is likely that the Tutor plugin index needs to be enhanced with additional attributes to provide more relevant metadata for the Open edX Marketplace.
As of August 2024, there is a requirement to create a separate plugin index for each Open edX version, which may not be suitable for the marketplace concept. Therefore, it is proposed to evaluate whether it is feasible to create multi-version plugin indexes, incorporating a support matrix attribute or something similar.
Process for maintaining Open edX Extensions Marketplace
The context diagram for the Open edX Extensions Marketplace identifies five key stakeholder roles: Marketing Working Group, Maintenance Working Group, OeX Community Developers, Entities using OeX, and Entities looking for LMS solutions. Although this list of stakeholders is considered comprehensive for the initial phases, additional stakeholders such as the Product Working Group can be added as the OeX Marketplace continues to grow.
The selected activities in the OeX Marketplace context are described in the table below
Stakeholder | Activity | Process Description | Outcome |
---|---|---|---|
Marketing Working Group | Develop Marketplace that is available on http://openedx.org | Create and continually enhance the OeX Extension Marketplace, both in terms of technical capabilities and operational procedures. |
|
Maintain Process and operate OeX Extensions Marketplace | The Marketing Working Group will continuously review and and update processes within the Marketplace of Open edX Extensions including moderation extenstions that were reported by users. |
| |
Review extension application | Marketing Working Group review plugins descriptions and visual materials before publishing |
| |
Promote marketplace | The Marketing Working Group undertakes search engine optimization of the marketplace and promotes it through its various channels. |
| |
Collect analytics | The marketing team conducts an analysis of extension popularity, user feedback, and platform visit changes to gain insights into user and market requirements. |
| |
Maintenance Working Group | Maintain official plugins | The maintenance working group updates versions and maintains official plugins so that they correspond to the declared criteria for publishing on marketplace. |
|
OeX Community Developers | Develop extensions | OeX Community Developers constantly develop new extensions for Open edX |
|
Apply to publish extension | OeX Community Developers have a clear guidance how to publish the extensions on Marketplace. After development extensions are applied to be shared on OeX Extension Marketplace |
| |
Maintain extension | OeX Community Developers update their extensions to keep it up to date with new releases of OeX |
| |
Integrate plugins from marketplace | OeX Community Developers incorporate extensions from the Marketplace into their instances |
| |
Leave feedback | OeX Community Developers provide feedback on enhancements or issues of extensions |
| |
Entities using OeX | Discover additional OeX capabilities | Entities using OeX discover further capabilities of OeX LMS available through extensions on OeX Extensions Marketplace |
|
Integrate plugins from marketplace | Entities using OeX incorporate extensions from the Marketplace into their instances |
| |
Use extensions & leave feedback | Entities using OeX provide feedback on enhancements or issues of extensions |
| |
Entities looking for LMS | Discover OeX capabilities | Entities looking for LMS discover further capabilities of OeX LMS available through extensions on OeX Extensions Marketplace and take this into considiration |
|
Open questions
Maintenance cost for keeping marketplace up to date?
How to scale the process without losing quality overtime?
Changes to named release preparation process, how to allow operators to update versions for their plugins in repo swiftly with ease?
@Juan Camilo Montoya's question: How to showcase 3rd party plugins that didn’t meet criteria set for publishing on the marketplace, can it be included in the marketplace with some specific markings or similar?
Milestones
We suggest splitting the implementation for new marketplace into several milestones, assessing results and gathering more feedback in between.
Discovery: Jun 2024 - September 2024
Creation of the proposal
Community feedback gathering
Enhancements to the proposal
Milestone #1: Marketplace pilot development for official and selected plugins
WP development of the marketplace according to UI mockups
Creation of the Tutor Plugin index with official plugins in the openedx GitHub organization.
Documenting and onboarding community in the process
Milestone #2: Establishing process for using Tutor plugin indexes as the mechanism to discover and include extensions on the marketplace
TBD
Milestone #3: Include OeX extension marketplace as part of tutor tooling (Web frontend for Tutor plugin indexes)
TBD
Milestone #4: One-click installations from marketplace
TBD
Timeline
Discovery: Jun 2024 - September 2024 (in progress)
Milestone #1: Marketplace pilot development for official and selected plugins - Q3 - Q4 2024
Milestone #2-4: Q4 2024 - Q2 2025
Future opportunities for OeX Marketplace
Include marketplace into each Tutor-based Open edX installation
LTI Tools catalog
Paid extensions
AI recommendation
Authors
Proposal prepared by @Glib Glugovskiy and @Mykhailo Marshalok