Brief: A Vision for Content Libraries


It’s critical to arrive at a unified understanding of the purpose and function of Content Libraries, because Content Libraries intersect multiple short- and medium-term projects, many of which are key strategic investments for the platform, including content reuse, content modularity, and content sharing.

Current State: What’s included in the Libraries relaunch? 

What’s the plan for Content Libraries after the relaunch?

While the relaunch moves Content Libraries closer toward supporting more robust content reuse and modularity use cases, there are still many feature enhancements needed to bring Content Libraries to their full potential. Content Libraries intersect the following use cases around content reuse and modularity at the junction of: Where the content needed for these initiatives is created, organized, accessed, managed and stored. Thus, additional features and enhancements will be needed to make Content Libraries more robust and functional spaces for creating, organizing and managing large and diverse types of course content for reuse and modular delivery.

Community Use Cases

Community use cases for content reuse and modularity that will rely on Content Libraries:


Harvard Medical School has a catalog of dozens of courses. They want to be able to modularize their catalog by extracting lessons from their courses (where lesson = section) and delivering them independently. They also want to create custom learning pathways by remixing sections from different courses. They need a place to store, organize and manage the extracted sections and new learning pathways. [Note: the delivery environment of new learning contexts/presentations is out of scope for this Content Libraries document.]


Western Governors University is taking a different approach to their general education requirements. They are breaking down their catalog of gen ed courses into competencies (where competency = section). Advisors will be able to custom select which competencies a student needs in order to meet their gen ed requirements. They need a place to create, organize and manage these competencies independently of the courses. They want to be able to create a competency as a stand-alone entity, in an authoring environment that is independent from the course. They may also want to extract sections from previously existing courses and be able to manage each section as an independent entity. They also need to be able to tag sections with competency metadata. [Note: the delivery environment of new learning contexts/presentations is out of scope for this Content Libraries document.]


Western Governors University wants easier ways for authors to customize course content for different audiences by substituting specific pieces of content (a problem, a unit, a section) to effectively create two versions of a course. For example, a course may have a unit on design thinking. The content within that unit was created for a business course. The IT college wants to use the same course, but swap out the unit for a different one that has content catered to the IT audience. Authors want to build a library with various iterations of the units that can be used and reused in different courses. [Note: an adjacent feature to copy a course run and remix is out of scope for this Content Libraries document.]


MITx has a similar use case, where they want to iterate on the same course for two different audiences, such that audience 1 can take V1 of the course and audience 2 can take V2 of the course, and the courses are the same except for one section, or a few units. They need a place to create, store and manage the swappable course components. [Note: an adjacent feature to copy a course run and remix is out of scope for this Content Libraries document.]


MRI Online wants to create dozens or hundreds of case studies (where case study = unit) that can be offered to administrators in a catalog and administrators can pre-select which case studies will be offered to learners. Case studies can be stacked to count to CME credits. They need an authoring environment to create these units, and to manage them. They also need to be able to add tags from learning taxonomies to the units. 


The Spanish Consortium wants to be able to reuse sections of courses. “This section is good for another course that I am teaching and I want to reuse it in that other course and I don’t want to recreate it from scratch.”


Penn State wants to be able to create a library of evergreen course lessons (where lesson = section) that they can use over and over without needing to rebuild it each time. 


Penn State wants to be able to create libraries of course lessons (where lesson = section) that can be offered as stand-alone credits. [Note: the delivery environment of new learning contexts/presentations is out of scope for this Content Libraries document.]


MITx wants better ways to organize content in their libraries, to make it easier to find content. 


Western Governors University is looking for ways to create modularized content at scale, more quickly and efficiently. They want authors to be able to create content templates at the unit level that can be copied and quickly populated with component xblocks.


User Stories

The above use cases can be distilled into the following high-level user stories for Content Libraries:

As a content author: 

  • I want to create a unit or a section independently from the course, so that I can reuse the unit or section in many different courses, [or future state: deliver it as a stand-alone learning objective, or sequence it into a custom learning pathway.]

  • I want to be able to extract units or sections from courses that already exist and put them into a Library for reuse later. I may want to do this with individual units or sections, or pull all the sections from a course into a library. 

  • I want to be able to reuse any content that I create in a Library - whether a component xblock, a unit or a section -  in any course, as many times as I want to. 

  • I want to be able to update Library content in the Library and push out updates to courses using the content. Course teams can make the decision to accept or reject updates.

  • I want to be able to search and find units, sections, components and any other content in my Library easily with tools like keyword searches, sorts and filters.

  • I want to be able to add tags to content in my Libraries, so that I can align my content to learning competencies, or subjects, or skills. This will help me to find the right content for reuse later.

  • When I am ready to use content from my Library in a course, I want an easy way to search the content in my library while I’m in the course authoring environment. 

  • I want to be able to organize or categorize content in my library, maybe into playlists, or into folders, or by tags, so that I can easily find what I need later. 

  • I want to be able to create a template for a unit or a section, then copy that template and quickly populate it with the right component content.


Features and Requirements

(Epic level, need further refinement and incremental delivery planning)




More robust authoring environment in Content Libraries

  • Create a unit or a section in a Library

  • Authoring environment that leverages the same authoring tools that exist for authoring a unit or a section in a course, such as component selection on the Unit Editor page

  • Ability to add component xblocks to units by creating them from scratch or choosing from pre-existing components in a library

  • Ability to add units to subsections or sections by creating them from scratch or choosing from pre-existing units

  • No configuration capabilities (such as grading schema, schedule or release date, etc) would be possible within the Library.

Enhancements to the randomization tool


UX/UI enhancements

  • Improvements to randomize toggle

  • Improvements to the experience of choosing content from a library in the course outline

Enhancements to Library Reference block/content selection tool in courses

  • An easier-to-use interface within the course editing pages that authors can use to search for content in a Content Library and pull content from a library into a course.

  • When choosing content from a library to use in a course, the ability to search for content in a library by keyword and with facets, filters directly from the course authoring environment

Expand content syncing options to units and sections

  • A syncing function that enables an author to make a change to content in a Library and push that change out to all courses where the content is being used, and an option for course teams to accept or reject the changes within the course.

Export from course to library

  • A feature that allows an author to extract content from a course and put it into a Content Library for later reuse

  • Extract individual units or sections

  • Extract all the units or sections in a course

Expand content tagging feature to all content in a Library

  • Ability to tag any component, unit or section in a library, with tags from a taxonomy enabled at the organization or instance level, or a free-form tag

  • The same taxonomies that are enabled at the org or instance level for use in a course would be extended for use in Content Libraries

  • When content is pulled from a library into a course, any tags that were added in the library remain with the content when it is used in a course

Using tags to create subsets of content to randomize

  • Ability to group subsets of content within a library by tag that can be used with the randomized content block (so authors don’t have to create a new library every time they want to use the randomized content block)

Better content management tools

  • Ability to group/categorize content by tag

  • Ability to create playlists or put content into folders

Search function

  • Ability to search content in a library by keywords with a free-text keyword search, and to sort, filter and facet

Content templates feature

  • An authoring environment that enables authors to create a unit or a section template (eg, a unit template is comprised of a text block, a video block and a problem block)

  • The ability to copy that template and populate it with content

  • Each copy would be housed in the Library and have all of the above functionality applied to it - reuse it in courses, add tags to it, put it into a playlist or folder, etc

At-a-glance information about library-course relationship

  • Information at the component/unit/section level in a library that tells authors where/in which course the content is used

  • Information at the library-level that tells authors which courses are referencing content from that library

Upload of static assets



Open Product Questions

  • What’s the strategy for Files & Uploads? Do course-level files and uploads continue to live at the course level, or do we leverage Content Libraries as the home for them? This could enable authors to easily reuse external content across many courses and to take advantage of the content organization tools available in Libraries to manage their external content.

  • When the Content Tagging MVP launches and authors have the ability to add tags to components in Libraries, what additional enhancements do we need to add to make it possible for authors to group subsets of components in a Library by tag to use with the randomized content block?

Open Process Questions

  • How can we leverage the V2 release to create user feedback mechanisms that can inform how we prioritize from the above list of user stories and Features & Requirements? And to identify gaps or incorrect assumptions in the V2 functionality?

  • How do we pull edX partner voices into the mix to check where their expectations for Content Libraries may or may not align?

Open Technical Questions

  • In terms of implementation: should this be built on Blockstore, Learning Core, or ?

  • How do we represent structures larger than a unit within libraries? (Both in terms of UX and technically)

  • At what point in the editing/publishing process do we need to make this decision [the decision to break links or sync between shared content] when reusing a content object?

    • Does the original content author get any say here, or is it only the reusing content author?

    • With automated updates, do we still need a UI to show the upstream changes made over time?

  • Do content libraries become the defacto way for all content to be stored, even if it’s created first in a course rather than a library?

  • If someone creates a structure, call it a section, and that structure contains 5 units, are those units  imprisoned in that structure, the section?  I understand that what a unit is is fuzzy.  It might, for example, be learning content, plus a formative assessment, because they are seen as inextricably bound together.  But if there were 5 pairs of content + formative assessment -- units -- in a section and all that was shareable was the section, that feels sub-optimal.