[Community Proposal] Open edX Extensions Marketplace

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:

  1. 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.

  2. 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.

  3. 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.

OeX Marketplace Brainstorm Space.png

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:

https://www.figma.com/design/EtOhGYUsv9E2Sm68oGJcCU/Open-edX-Marketplace?node-id=0-1&t=lJ4fASw8D7T3bE6E-1

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.

image-20240815-131427.png

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

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.

  • Improved Open edX Market postion

  • Developed Marketplace

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.

  • The extensions on marketplace are up to date

  • It is clear of OeX community how to publish extensions on the marketplace

  • Marketplace is actively used by OeX stakeholders

Review extension application

Marketing Working Group review plugins descriptions and visual materials before publishing

  • All extensions on the marketplace are well described

Promote marketplace

The Marketing Working Group undertakes search engine optimization of the marketplace and promotes it through its various channels.

  • OeX website has visits growth

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.

  • Data-driven decision making on OeX strategy

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.

  • Official extensions on the marketplace are functional and operational with the latest versions and supported versions of Open edX

OeX Community Developers

Develop extensions

OeX Community Developers constantly develop new extensions for Open edX

  • New features and capabilities are included in OeX

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

  • All existing functional and operational extensions to Open edX will be published in the OeX

  • After publishing, the extension indirectly promotes developer’s service

Maintain extension

OeX Community Developers update their extensions to keep it up to date with new releases of OeX

  • All extensions on the marketplace are functional and operational

Integrate plugins from marketplace

OeX Community Developers incorporate extensions from the Marketplace into their instances

  • Less custom development is needed for OeX instances

Leave feedback

OeX Community Developers provide feedback on enhancements or issues of extensions

  • All extensions on the marketplace are functional and operational

  • Extensions are constantly improved

Entities using OeX

Discover additional OeX capabilities

Entities using OeX discover further capabilities of OeX LMS available through extensions on OeX Extensions Marketplace

  • Less custom development is needed for OeX instances

  • All capabilities of OeX LMS are used

Integrate plugins from marketplace

Entities using OeX incorporate extensions from the Marketplace into their instances

  • Less custom development is needed for OeX instances

Use extensions & leave feedback

Entities using OeX provide feedback on enhancements or issues of extensions

  • All extensions on the marketplace are functional and operational

  • Extensions are constantly improved

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

  • More entities choose OeX as their LMS. Number of OeX instances is growing.

 

 

 

 

 

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