Libraries Support for Units

The MVP for the Content Libraries Overhaul enables course authors to create and manage course components (text, video and problems) independently of the course outline, and to reuse components in as many courses as they wish, with the ability to sync updates centrally.

The next phase expands Library support to units, subsections and sections.

This expansion will enable Libraries to support the full range of use cases identified in initial product discovery phases. Most importantly, it will enable course authors to create units, subsections and sections - in other words, full learning sequences - independently of the course outline, and reuse these learning sequences freely.

Quick Read - What’s in Teak?

Library support for units:

  • Units can be created in Libraries

  • Units are searchable and discoverable in Libraries

  • Units can be reused in courses

  • Units in courses can be synced with Library updates

Library support for subsections and sections

  • Subsections and sections can be viewed as read-only content in Libraries

  • Subsections and sections are searchable and discoverable in Libraries (feasible?)

Library support for import

  • Full courses can be imported into Libraries and content can be disaggregated at the unit, subsection or section level

  • Content can be imported into Libraries from external sources, starting with Common Cartridge conversion support

    • Content from third party sources can be synced so updates carry through into the Libraries (feasible?)

Functional Requirements

Similar to the Libraries MVP, this phase of work includes user stories that bridge workflows in both Libraries and in courses, more specifically the Course Outline page.

Functional requirements: Library Side

Units function as independent, bounded entities in Libraries

  • Libraries support units (defined as a pre-determined sequence of components) as independent, bounded entities. In other words, the sequence of components – the unit – is treated as a singular object.

  • Units are considered a “content type” in the filter

 

Units exhibit many of the same behavior patterns in Libraries as do Components:

Creating and Editing Units

  • Units can be created from scratch in the +New workflow. When a new Unit is created, components can be added, rearranged or removed to the Unit.

  • Units can be edited, meaning components within them can be added, rearranged or removed

  • There are 3 pathways for adding components to a unit from within the unit editor

    • New components can be created

    • Existing components can be added

    • Components copied in the clipboard

  • Components must have some visual reference to the unit where it’s being edited, and all the units where it’s being referenced.

Expected behavior of Components in relation to Units

  • We assume valuable reusable potential for all components in a Library, whether they exist as standalone entities or as part of units. Thus, all components in a Library can/could exist as both a standalone component and / or as part of a unit or many units.

  • When a component is created within the context of a unit, it does not automatically populate in the Library as a standalone component, but authors are prompted at the time of creation or edit whether they want the component to be added to the Component Tab.

    • If a Component is added to the Component tab, it remains synced to the unit(s) where it is referenced

  • Components can be copied from a unit and pasted into the Library as a standalone component, or into a collection.

    • If a Component is pasted elsewhere in the Library, it remains synced to the unit(s) where it is referenced

  • When a Component is reused as an existing component in a Unit, it maintains its reference to the original component.

  • When authors edit a component that is referenced in a unit, they are prompted to choose whether they are editing within that usage or as a new block.

    • If they choose as a new block, the reference is broken.

    • If they choose to edit within that usage, all changes are synced across all references and standalone instances of that component within the library.

Presentation of Units in the Library UI

  • Each unit in a Library has a tile representation with a title and description

  • Units populate among the components and collections on the library home

  • Units turn up in search results and can be sorted and filtered

  • There is a Unit Tab, which is a filter on unit as a content type

  • Each unit has a sidebar, with

    • Previews that display which components are contained within the unit

    • Publish status

    • Tags

    • Usage details

    • Version history

Unit behaviors

  • Units can be published. Once published, units are available for reuse.

    • Publishing can happen at the Unit level. When a unit is published, all components within it are published. If a component in a unit also exists independently of a unit, it will also be published.

    • Quick publish concept for reused components: If a component is published, it will auto-publish in any unit where it is referenced, unless there has been an override of that component in a unit, in which case authors will be prompted manually to accept the changes.

    • When a Unit has been published, it is available for reuse in a library. If some individual components in a unit are published but not all components, the unit is not available for reuse yet.

  • Units can be tagged

  • Units can be copied

  • Units can be pasted

  • Units can be added to, and removed from, collections

    • Collections can contain a mix of both components and units

 

Subsection and Section support

  • Subsections and sections can be imported into Libraries (see import requirements below)

  • Subsections and sections are read only, to start. They cannot be edited, nor created from scratch in libraries.

  • Each subsection/section in a Library has a tile representation with a title and description

  • Subsections/sections populate among the components and collections on the library home

  • Subsections/sections turn up in search results and can be sorted and filtered

  • There is a Subsection tab and a Section tab, which is a filter on each respective as a content type

Functional requirements: Course Side

Units can be reused in Courses

  • Units can be reused via the Course Outline page in a course

  • Library search can be accessed from within the course so authors can find which units they want

  • Library units can be synced/updated from the Course Outline page

Units can be updated in a library and synced at the course level

  • Users receive notifications about content updates made in a library

  • Users can review and accept/deny content updates

    • Accept the updates and override any local edits that may have been made to the unit

    • Accept the updates while keeping any local edits that may have been made to the unit

    • Deny the updates

    • A refresh of the library will update the course, but will not affect unmanaged content (unless its parent is removed).

Units can be edited locally

  • Course authors can add content, in the course, to library-managed content items.  For example, a course author can add an LTI component to a unit that is contained in a subsection that is managed by a library.

    • Locally, components within a unit can be rearranged into different orders (parity with current experience with units in courses.)

 

Import requirements

Import from Open edX Course to Open edX Library

  • Units can be copied from a course and pasted into a library

  • Full courses can be imported into a Library. Authors can decide at the time of import what level they want to disaggregate the content in the library - unit level or component level.

    • Subsections and sections will be read-only, to start

  • On import, content get added as published components, but there is no sync to the original course, the content in the library does not reference the course, it becomes the defacto source of truth version

Import from external source to Open edX Library

  • Libraries will support ingestion of content from third-party sources, starting with Common Cartridge.

  • When content is ingested into a Library from a non-native source (not natively authored on an Open edX platform), there may be a need to maintain a reference/connection between the original source and the Library versions, such that if the original source is updated, the Library versions can be synced.

    • FEASIBILITY QUESTION: What capabilities does Studio have to maintain references/connections between non-natively authored content and the Library versions of that same content?

  • There is no expectation that Library versions of content authored non-natively and used in a course would maintain a sync between the original source content and the course versions.

 

 

 

UX/UI Needs

Library-side

  • Libraries must support a creation workflow for creating new units, subsections and sections

  • Libraries must support an editing workflow/editor environment for units, subsections and sections

  • In-context sidebars must be expanded such that each unit, subsection and section has a sidebar.

    • Needs discovery: Are previews necessary? Even possible?

  • Library Home must contain one tab each for units, subsections and sections, where users see a filtered view by content type

  • All of the searching, sorts and filters that apply to components must be extended to units, subsections and sections.

Course-side

  • Course outline page must be redesigned to include the ability for authors to access a library from within a course, search for content, choose a unit, subsection or section, and pull it into a course

    • Needs discovery: How will authors choose where in the course outline to place the library content? What would it take to make the “reuse content” workflow a persistent option from the course outline page?

  • Library sync page must be updated to include any content syncs from re-used units, subsections and sections

  • Content blocks from Libraries must contain fine-grained editing/modification capabilities, so that authors can add content to a re-used section while retaining the sync on the original content

Out of scope

  • Unit page additions. For now, authors will not be able to add library content to the horizontal course nav bar from the Unit page. Instead, all library content at the unit level and above will be added from the Course Outline page.

 

Implementation Contingencies

Open Questions

I’m not too familiar with the plans of this feature. If my questions are off-topic or already answered, feel free to remove them.

  • When the course author is editing a section or a subsection, how/can the UI display the context of the unit being edited? Current implementations replace the entire browser window with the editor, obscuring information about the section and subsection. See this comment for more details.

  • A common workflow for larger courses is for multiple authors and editors to collaborate in another tool (e.g. Google docs) and then copy and paste the content into the editor. Can this be supported, and streamlined?

  • Can we establish minimum performance expectations for opening content for editing? These should be based on real-world legacy content.