openedx / platform-roadmap

Tracking the maintenance, enhancement, and advancement of the Open edX project.
11 stars 0 forks source link

Idea — Course Element Clipboard #371

Open MarshMike opened 1 month ago

MarshMike commented 1 month ago

Abstract

The primary goal of the Initiative is to enhance the user experience for course authors within the Open edX platform. This will be achieved by introducing the ability to save up to 10 course elements (units, sections, subsections) to clipboard and reuse them during the course creation. The intended outcome is to significantly reduce the time and effort required to build courses, ensure consistency in course design and structure. The proposal aims to elevate the overall quality of educational content and user experience from the point of instructor.

The proposal is aimed to provide the idea and vision to Open edX Community, discuss it and get feedback. If there will be interest of Open edX community in this proposal, the technical implementation part will be developed and decomposed based on discussion and feedback.

Context & Background (in brief, if a Product Proposal is linked above)

One of the primary challenges in any Learning Management System (LMS) is creating an exceptional user experience (UX) for course authors. These individuals are integral to the educational process, dedicating substantial time and effort within the LMS to develop and deliver high-quality courses. However, many course authors encounter significant difficulties due to complex and hard-to-navigate interfaces, which can hinder their ability to create the courses they envision. This challenge not only demotivates course authors but also impacts the overall quality of the learning materials provided to students. In some cases, the frustration caused by these usability issues can lead organizations to consider migrating to more user-friendly LMS platforms.

With each release, the Open edX Community introduces new features to enhance and streamline the course creation experience. For instance, the addition of Copy & Paste functionality allows course authors to copy components from the course outline to a clipboard for easy reuse. The next logical improvement would be to enable users to access the number of previously copied elements in the clipboard and pin them there, facilitating their reuse in future courses.

In addition, the improved clipboard can become a part of new content libraries by allowing users to access the last copied content there.

Scope of the feature

  1. Add element to clipboard — instructor can add course elements such as components, units, subsections, and sections to personal clipboard.

    • The clipboard can accommodate up to 10 course elements
    • When a user adds a new course element to a clipboard that already contains 10 course elements, the earliest added course element in the clipboard is removed.
  2. Paste element from clipboard — instructor can paste course elements from clipboard into the course outline.

  3. Pin course elements — instructor can pin course element in the clipboard, so that it will be not removed from the clipboard when the limit of clipboard is achieved.

Value & Impact (in brief, if a Product Proposal is linked above)

The primary beneficiaries of the clipboard functionality will be the course staff who use Open edX for the course creation. This includes:

Milestones and/or Epics

Milestone 1: Component and Unit Clipboard

In the first milestone, we aim to implement the extended clipboard functionality for units and course components, as these elements are the most frequently copied by users.

1. As a user, I want my copied course component was automatically added to the clipboard, so that I could easily find them and paste in the new educational materials.

Acceptance criteria (AC):

  1. Each course element should have its own dedicated clipboard.
  2. User can copy up to 10 course elements in the clipboard.
  3. When a user copies a course element and clipboard already contains 10 course elements, the earliest added course element in the clipboard is removed.
  4. User can paste any course element that was aded to the clipboard.

2. As a user, I want to manage the clipboard so that it contains the most relevant and frequently used course elements.

AC:

  1. User can pin course elements in the clipboard. a. Pinned course element will be not removed from the clipboard when the limit is achieved. b. User can pin up to 9 elements in the clipboard. d. User can unpin course element in the clipboard.
  2. User can manually delete the course element from the clipboard Note: The ability to manually delete the course element from the clipboard seems to be optional and can be removed from the scope.

Component clipboard design: image

Unit clipboard design: image image

Milestone 2: Integrate Clipboard into the New Content Libraries

As a user I want easily access the content I previously copied to the clipboard in the content libraries interface so that I could easily tag them, add to my collections and reuse as part of templates. AC:

  1. Users can see the clipboard content as a collection titled "Clipboard" in the content libraries.
  2. Users can perform all actions with course elements in the "Clipboard" collection as they can with other course elements.

image

Milestone 3: Subsection and Section Clipboard

In this milestone we plan to implement the ability of instructors to copy subsections and section into the clipboard and paste in course outline in the same way as described in Milestone 1.

Named Release

TBD based on discussion

Timeline (in brief, if a Product Proposal is linked above)

TBD

Proposed By

Raccoon Gang

Additional Info

github-actions[bot] commented 1 month ago

Thanks for your submission, @openedx/openedx-product-managers will review shortly.

jmakowski1123 commented 1 month ago

Thanks so much for the proposal @MarshMike! This is exactly the direction we were hoping to go with future phases of copy/paste.

Currently, the copy/paste function only supports the ability to copy and paste components (text, video, problems), and units. It does not yet support the ability to copy/paste subsections and sections. @bradenmacdonald and @ormsbee did some initial discovery work on the added complexity of making subsections and sections fully extractable and composable, which they can share.

I would suggest phasing this work in the following way:

  1. Clipboards can hold multiple (10?) components
  2. Clipboards can hold multiple (10) units
  3. The platform supports the ability to copy/paste subsections and sections
  4. The clipboard can hold multiple (10?) subsections and/or sections

I actually think we need some more discovery work around 3 and 4. The overhaul of content libraries will include the ability to create, store and manage all levels of the course (components, units, subsections and sections). With that in mind, does copy/paste ALSO need to support subsections and sections, or is Library support sufficiently enough to meet authoring efficiency needs? I'm not sure about the answer to this question, and maybe you have insight from your clients that can help guide us?

I'll leave it to @cassiezamparini and @ali-hugo and other UI folks to weigh in on clipboard designs and other product considerations, etc!

Would also love @bradenmacdonald to weigh in on considerations around load/performance time when dealing with a clipboard with many large units - would this be a problem?

Is this a project RG is planning to resource?

COTOHA commented 1 month ago
  1. Clipboards can hold multiple (10?) components
  2. Clipboards can hold multiple (10) units
  3. The platform supports the ability to copy/paste subsections and sections
  4. The clipboard can hold multiple (10?) subsections and/or sections

our (rough) idea here is that 1 & 2 should be covered via clipboard operations - a quick way to easily author multiple verticals by reusing different units. Rationale: when the course editor adds course-content she makes many sequential inserts of different type of units (e.g. text - video - media - quizz, repeat)

3 & 4 should be covered via templates feature - a way to start off with some pre-defined structure (a subject for a further proposal) Rationale: when the course editor thinks about the course structure she might do this once per course/section.

jmakowski1123 commented 1 month ago

Yes, that division makes sense to me.

cassiezamparini commented 1 month ago

@MarshMike It's really exciting that you're proposing extending this feature! Could you share the Figma designs for Product / UX comments? 😄

@sarina In terms of the product review process - It would be easier to comment on parts of this proposal within the Wiki, even if it seems like a smaller feature update. Would a proposal like this be necessary to add to the Wiki? Or where do we draw the line? @jmakowski1123 Before any comments are added from my side - should this not be triaged at the next Core Product WG so a coordinator and reviewers are assigned next? I have offered to be a reviewer but I just want to ensure we follow the new process.

ali-hugo commented 1 month ago

@MarshMike This is great to see! I'd love to be a product reviewer on this as well. I'll wait for you to answer @cassiezamparini's question about Figma files before leaving any comments.

MarshMike commented 1 month ago

@ali-hugo @cassiezamparini I am thrilled to see such enthusiasm about this proposal. You can find the designs through the link. I have also made slight adjustments to the designs to better align with the Paragon Design System.

cassiezamparini commented 1 month ago

Thanks @MarshMike. I've added some comments to get the convo going! Thank you for laying out such an easy to follow flow 😄

@ali-hugo I haven't @ed you directly but I'm "talking" to you in a few comments. Would appreciate your thoughts!

ali-hugo commented 1 month ago

@MarshMike Thanks for the Figma link! I will take a look tomorrow and leave my comments.

On another note, I’d love to share your designs with the UX/UI Working Group during our meeting this Thursday at 11am EST. Would you be available to attend and walk the group through your designs for feedback? If not, I'm happy to present them on your behalf.

@cassiezamparini I will be sure to read and respond to your comments on the file. Thanks for the heads up.

ali-hugo commented 1 month ago

@MarshMike Thank you making the Figma file so easy to understand. I have added some comments there, but would like to ask a couple of questions here too:

  1. Could you please describe the use case for the "quick copy" functionality? My initial instinct is that there should be only one way to copy content, with all copied content being added to a single clipboard. However, I might not fully understand the purpose of "quick copy". Could you shed some light?

  1. These two sentences from the ticket description seem to contradict one another. From the designs, it looks like the first sentence is the route you chose. Is that correct?

    When a user adds a new unit to a clipboard that already contains 10 course elements, the system prompts user to delete unwanted unit(s) from clipboard

    When a user adds a new course element to a clipboard that already contains 10 course elements, the earliest added course element in the clipboard will be removed.


Thanks again for this proposal! 👏 I am eager to see clipboard functionality up-and-running!

cassiezamparini commented 1 month ago

@MarshMike Perhaps you could address the comments we've made, and then start the product review process? ie. Next step is to bring this to the Core Product WG so a Coordinator can be selected (you can also volunteer as the coordinator).

I think the major thing from both Ali and myself is understanding the "Quick copy" use case 😄

jmakowski1123 commented 1 month ago

@cassiezamparini I'm happy to coordinate this one, since I took a first pass review of it! The WG has already been pinged about it, so we can follow up on status updates at the next WG meeting. I'll tap you and Ali to do the reviews :)

I'd also like @bradenmacdonald to weigh in on possible performance issues based on his discovery work with very long units, but I think he's on vacation until the end of the month.

jmakowski1123 commented 1 month ago

Copy and paste functionality is part of the Core Product authoring experience, so any enhancements, like those proposed here, would also need to be built as part of the Core Product.

cassiezamparini commented 1 month ago

Awesome! Thanks @jmakowski1123 😄

bradenmacdonald commented 1 month ago

I'm not a product person, but to me the "clipboard" paradigm is not the right way to approach this. "Clipboards" always hold a single item, not a set of items. In some cases, you can view the history of "Recently Pasted" items, and change what's in the clipboard to a previously copied item, but that's different than what's being proposed here. I think calling this sort of thing a "clipboard" is going to confuse users - it would certainly confuse me.

I would suggest that what's being described here is a better fit with the "Template Gallery" pattern, i.e. users can define custom templates and then the NEW button gives options like "New from template...", "Paste from clipboard", etc.

But there is also overlap with the content libraries feature. After all, you can use a content library to hold "up to 10 course elements", and that functionality is already being built. The only thing missing is a way to "favorite" a content library so that elements from that particular library can be pasted into any course in one click without prior setup. If we had that, would we need this?

bradenmacdonald commented 1 month ago

I'd also like @bradenmacdonald to weigh in on possible performance issues based on his discovery work with very long units, but I think he's on vacation until the end of the month.

Copying is fast in any case. Pasting can be slow-ish (5-15 seconds) for very large units, or when pasting across courses and a lot of static assets are involved. This mostly means it's important to show a "Pasting in progress..." indicator to the user. It doesn't block anything that's being proposed here. Details here.

MarshMike commented 1 month ago

@MarshMike Thanks for the Figma link! I will take a look tomorrow and leave my comments.

On another note, I’d love to share your designs with the UX/UI Working Group during our meeting this Thursday at 11am EST. Would you be available to attend and walk the group through your designs for feedback? If not, I'm happy to present them on your behalf.

@cassiezamparini I will be sure to read and respond to your comments on the file. Thanks for the heads up.

@ali-hugo Sure! I will be happy to present the proposal. Where can I find the link to the meeting?

MarshMike commented 1 month ago

@MarshMike Thank you making the Figma file so easy to understand. I have added some comments there, but would like to ask a couple of questions here too:

  1. Could you please describe the use case for the "quick copy" functionality? My initial instinct is that there should be only one way to copy content, with all copied content being added to a single clipboard. However, I might not fully understand the purpose of "quick copy". Could you shed some light?

  2. These two sentences from the ticket description seem to contradict one another. From the designs, it looks like the first sentence is the route you chose. Is that correct?

    When a user adds a new unit to a clipboard that already contains 10 course elements, the system prompts user to delete unwanted unit(s) from clipboard

    When a user adds a new course element to a clipboard that already contains 10 course elements, the earliest added course element in the clipboard will be removed.

Thanks again for this proposal! 👏 I am eager to see clipboard functionality up-and-running!

@ali-hugo

  1. The idea is that the current copy/paste functionality will remain unchanged but will be renamed to "Quick Paste." Additionally, a new "Copy to Clipboard" feature will be introduced, enabling users to copy content to the clipboard for easy reuse later.
  2. Thank you for pointing out this contradiction. There is a mistake caused by different phases of idea development. Initially, we considered removing the earliest added content when the clipboard limit is reached, and the user wants to add more content. Then taking into account that unwanted content can be removed in this way we came to the flow described in the Milestones section.
MarshMike commented 1 month ago

I'm not a product person, but to me the "clipboard" paradigm is not the right way to approach this. "Clipboards" always hold a single item, not a set of items. In some cases, you can view the history of "Recently Pasted" items, and change what's in the clipboard to a previously copied item, but that's different than what's being proposed here. I think calling this sort of thing a "clipboard" is going to confuse users - it would certainly confuse me.

I would suggest that what's being described here is a better fit with the "Template Gallery" pattern, i.e. users can define custom templates and then the NEW button gives options like "New from template...", "Paste from clipboard", etc.

But there is also overlap with the content libraries feature. After all, you can use a content library to hold "up to 10 course elements", and that functionality is already being built. The only thing missing is a way to "favorite" a content library so that elements from that particular library can be pasted into any course in one click without prior setup. If we had that, would we need this?

@bradenmacdonald Thank you for sharing your thoughts. Considering all previous comments and ideas, I believe we can merge the use cases of the "Clipboard" and "Template Gallery".

The use cases can be following:

  1. As a user I want my copied course elements was automaticaly added to the clipboard, so that I could easily find them and paste. AC: a. System can store up to 10 elements in the clipboard. b.When a user copies a course element and clipboard already contains 10 course elements, the earliest added course element in the clipboard is removed.

  2. As a user, I want to pin copied elements in the clipboard so that the system does not remove them when the clipboard limit is reached. AC: a. User can pin up to 9 elements in the clipboard. b. User can unpin course element in the clipboard. c. The system does not removes the pinned elements from the clipboard Given the clipboard has reached its limit of 10 elements, When the system needs to remove an element to add a new one, Then the system does not remove any pinned elements, And the earliest non-pinned element is removed instead.

The idea how it can look like image

ali-hugo commented 1 month ago

Sure! I will be happy to present the proposal. Where can I find the link to the meeting?

@MarshMike Great, thanks! You can find a link to the meeting in the Community Calendar. It's called "UX/UI Working Group" and takes place at 11am EST today. See you then 🙂 .

I wanted to ping you on the wiki but couldn't find your username in Confluence, so here's a link to the updated meeting agenda.

ali-hugo commented 1 month ago

@bradenmacdonald Here's an update after the latest UX/UI meeting where we discussed this proposal in some depth:

"Clipboards" always hold a single item, not a set of items. [...] I think calling this sort of thing a "clipboard" is going to confuse users - it would certainly confuse me.

But there is also overlap with the content libraries feature. After all, you can use a content library to hold "up to 10 course elements"...

Let me know if you have any questions. @MarshMike will be updating the designs and sharing them here when they're ready. That might be a good time to do another review if you'd like to be involved.

sarina commented 1 month ago

@cassiezamparini

@sarina In terms of the product review process - It would be easier to comment on parts of this proposal within the Wiki, even if it seems like a smaller feature update. Would a proposal like this be necessary to add to the Wiki? Or where do we draw the line?

I would LOVE to avoid codifying a million edge cases and making the process hard to approach. I think if the reviewers or coordinator. would like the proposal to be in a wiki, then just ask the proposer to do so.

@jmakowski1123 Before any comments are added from my side - should this not be triaged at the next Core Product WG so a coordinator and reviewers are assigned next? I have offered to be a reviewer but I just want to ensure we follow the new process.

I would 100% hope we can async manage this process. If someone is volunteering to coordinate or review outside of the core product meeting, great!

ormsbee commented 1 month ago

Apologies for the late comments–I only just got back from PTO.

I agree with @bradenmacdonald that this sounds more like a template use case than copy-paste, and that merging the two adds unnecessary confusion. It's true that there are popular clipboard extensions that allow clipboards with multiple values in them, but those are generally power-user features, and the vast majority of people interact with their clipboards one item at a time.

But more than that, I think the lifecycle and features for a template gallery are different than the more ephemeral copy-paste. feature. Copy-paste is scoped to a single user, but across all content they have access to, which makes sense when you want to copy-paste a Unit from one course run to another.

Templates like what are being described here sound like they belong as part of the course content data itself, to be shared across the various authors–e.g. there should be one canonical "Case Study Unit" template that everyone working on the course uses and has access to. When a course re-runs, its templates should come along for the ride. There's no need to cap at 10 items, because a course should have as many templates as makes sense. You should probably also be allowed to rename things in the template gallery, in case the original thing you copied from is a specific instance of a thing (e.g. Costco Wages and Benefits), but the template naming represents the more generic thing (e.g. Case Study).

MarshMike commented 1 month ago

Hi! I finally found the time to update the proposal based on the UX/UI working group discussion from July 25.