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.
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 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.(breadcrumbs?)
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
View-only and Edit modes/Managed vs externally managed vs unmanaged [we need to clarify what the expected behaviors, permissions etc are for each of these?]
Requirements TBD
Managed content item - any level of content (section, subsection, unit, component) that exists in a library.
Externally managed content item - any level of content that exists in a library that is ‘connected’ to an external CMS.
Unmanaged content item - any course content not from a library
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
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. (Later, section level )
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
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.