[Proposal] Stackable Catalog

[Proposal] Stackable Catalog

Overview

The Stackable Catalog is a modern replacement for the outdated Discovery service in Open edX. It aims to provide a flexible, modular, and taxonomy-driven course catalog infrastructure that improves how courses and learning objects are published, discovered, and related across platforms.

Problem

The lack of a standardized, feature catalog service in Open edX has resulted in fragmented publishing experiences and poor discoverability of content, leading to user confusion and a significant barrier to adoption.

Use cases

  • As a course author, I need to define reusable catalog courses that can link to multiple course runs so that I can maintain consistency and reduce duplication in the discovery process for learners.

  • As a learner, I need to discover courses (and other learning objects) based on subject area, topic, or organization in order to find offerings that align with my goals.

  • As a platform administrator, I need to control course visibility and scheduling options to ensure learners only see what’s relevant and current.

  • As a marketing or CMS team, I need to embed or synchronize catalog information in external platforms to promote offerings across channels.

Supporting market data

Section being drafted still - coming soon

Proposed solution

We propose developing the Stackable Catalog as a standalone service that will:

Core Capabilities

1 - Read / Reference Learning Object Metadata

  • Capture metadata from course runs, and any other learning contexts plugged into the platform (ex: sequences, programs, groupings, etc.)

  • Power interfaces for enrollment pages (aka about pages) for metadata that is catalog object / publishing related

2 - Make Catalog Objects from Learning Objects
Take learning objects (like course runs) and package them as needed for catalog publishing (ex: catalog course).

  • Define learning object relationships - For example, perhaps courses are contained with a program plugin, or sequences contained within a course, pre-requisites, etc.

  • Provide basic publishing logic for catalog objects (to be configured / viewed in a location TBD) for visibility (public, hidden, searchable), publish dates, enrollment dates, etc.

  • This is somewhat like the edX Publisher experience, built for the [deprecated] edx Discovery service.

    • Detail - support / consider publishing filters

  • Commerce Data into Catalog Objects via Commerce Plugin of choice

3- Configure Taxonomies for Catalog Object Organization

  • Support taxonomies like subject and topic to categorize content. (Perhaps leverage eox-tagging?)

  • Support flexible grouping of publishable objects into categories (related to Programs, Grouping concept, etc.)


Plugin Capabilities - Publishing / CMS Integration

4a - Basic Catalog Publishing Plugin:
Define Catalog(s), Catalog Object Enrollment Pages, Catalog Search, Catalog Browse Views

Powers a basic set of pages to represent the catalog(s) on your Open edX site Define full or fractional catalog views to power catalog search or browse views.

  • Some sites have 1 catalog, others have private, enterprise, test, or stage catalogs that might not be the same as what is fully public.

  • Catalog Objects should have basic Enrollment / View Pages

  • Basic Catalog Search Views / Tools

    • Define search indexes, etc

  • Catalog Browse Views

    • Subject / Topic Pages

    • Organization Pages

    • Instructor Pages

    • Custom Category Pages (fractional catalog views)

  • Optional Catalog Stats tool for reporting back simplified catalog stats for Open edX community size info

For these views, we propose partnering with institutions already managing external catalogs to run usability tests, conduct interviews, and validate real-world publishing workflows.

4b - Optional CMS Plugin Point

Here we expect that other headless CMS plugins / alternatives should be able to take the information from 1, 2, and 3 and ingest it into a CMS tool of choice for your instance.

Other approaches considered

Several alternative approaches were considered before arriving at the Stackable Catalog proposal:

  • Enhancing the existing Discovery service with new capabilities, which was rejected due to technical debt and architectural limitations.

  • Adopting a third-party catalog solution, which raised concerns about integration complexity and long-term sustainability within the Open edX ecosystem.

  • Building catalog functionality directly into the LMS, which would limit flexibility and potentially create performance issues.

Competitive research

Research on competitive platforms reveals several key insights that can inform our Stackable Catalog development:

Coursera's catalog offers advanced filtering by skills, level, and duration - features our stakeholders have specifically requested. Their course-to-program stackability echoes the need for the catalog to be able to represent groupings of content objects flexibly. (related: Grouping Concept Product Proposal)

Canvas Catalog demonstrates strong integration with LMS functionality while maintaining a distinct discovery experience, which aligns with our architectural approach. Their institution-specific catalog views could inform our multi-tenant capabilities.

Implementation Plan

Section coming soon

Plan for long-term ownership/maintainership

Section coming soon

Open questions for rollout/releases

  • What is the best strategy for migrating from Discovery to the Stackable Catalog?

  • How will permissions and roles be managed across course authors, marketing teams, and admins?