Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic 2: Collections #1084

Open
5 of 20 tasks
jmakowski1123 opened this issue Jun 11, 2024 · 10 comments
Open
5 of 20 tasks

Epic 2: Collections #1084

jmakowski1123 opened this issue Jun 11, 2024 · 10 comments

Comments

@jmakowski1123
Copy link

jmakowski1123 commented Jun 11, 2024

@jmakowski1123 jmakowski1123 changed the title Epic 2: Implement Collections in Libraries Epic 2: Collections Jun 11, 2024
@jmakowski1123 jmakowski1123 modified the milestone: Lib Relaunch 2: Collections Jun 11, 2024
@pomegranited
Copy link
Contributor

@jmakowski1123 @bradenmacdonald Do we have a story for deleting collections? I don't see it in any of the frontend tickets yet. Also asking because openedx/modular-learning#225 introduced an enabled flag which we assume could be used to "soft delete" a collection, and so we need to know how the the Delete part of the REST API should work. Thanks!

@bradenmacdonald
Copy link
Contributor

I'm not sure. @jmakowski1123 or perhaps @lizc577 or @sdaitzman can answer.

@pomegranited
Copy link
Contributor

pomegranited commented Aug 12, 2024

@jmakowski1123 @lizc577 @sdaitzman I've created an issue for this question, please see openedx/modular-learning#231

@bradenmacdonald could you please add that issue to this ticket? I don't have access to edit this.

@pomegranited
Copy link
Contributor

Hi @jmakowski1123 CC @bradenmacdonald -- is it possible for me to get edit access to issues for this epic? I've made a few notes in comments, but it would be helpful if I could edit them directly.

@pomegranited
Copy link
Contributor

Searching/filtering/sorting a list of Collections

@jmakowski1123 @bradenmacdonald CC @lizc577 @sdaitzman @marcotuts I can't find any frontend tickets in this epic to handle searching/filtering/sorting the Collections lists shown on the Home page and the Collections tab.

Note that this is different from sorting/filtering the Collection's Components, which will be done when viewing a single Collection, and is handled by these tickets:

If we need to be able to do this, we'll need some frontend tickets.
But it also raises a Product question, since there's two ways to think about maintaining Collections data in the search index.

Option 1: Index only the Collection metadata

This option is simpler, and ignores the Collection Components' metadata, i.e

  • Keyword search applies only to Collection title + description
  • Filtering by Collection Tags uses only Tags added by [Libraries] [Collections] [Backend] Add tags to collections modular-learning#228
  • Filtering by (block) Type does not apply to Collections.
  • Sorting has these caveats:
    • "Recently Modified" is only relevant to changes to the Collection title and description; the modified date is not updated when adding/removing Components.
    • "Recently Published" does not apply (Collections can't be published).
    • "Title", "Newest", "Oldest" are straightforward, using the Collection title and created dates.

The backend work to support this is already being handled by openedx/modular-learning#229, but we need to add some simple frontend tickets.

Option 2: Include the Collection Components metadata in the indexed Collection

Whenever a Component is added/removed from a Collection, the search metadata for the Collection is updated to reflect this change. Since there can be many Components in a Collection, this could result in very large indexes and performance issues. But we gain the following features:

  • Keyword search applies to Collection title + description + the Component fields we decide to store with the Collection.
  • Filtering by Tag means we can locate Collections by Tag and Collections that contain Components with the given Tags.
  • Filtering by (block) Type means we can locate Collections that contain Components of the given block type.
  • Sorting:
    • "Recently Modified" could reflect whether a Collection has had Components recently added/removed.
    • "Recently Published" could use the most recent published date of a Collection's Components.
    • "Title", "Newest", "Oldest" is unchanged, using the Collection title and created dates.

The frontend work is still straightforward with Option 2. But it's a more difficult lift for the backend, and requires planning for performance and search data usability, and to guard against race conditions.

@bradenmacdonald
Copy link
Contributor

@pomegranited

I can't find any frontend tickets in this epic to handle searching/filtering/sorting the Collections lists shown on the Home page and the Collections tab.

I think that will be covered by #1102 . Maybe we can explicitly add it to the scope, but I think that since we've already implemented the keywords search and the sorting and filtering for "components" and "home", I think it should mostly be already implemented on the components tab.

Re your other questions, I feel pretty clearly that we should go for Option 1 for the MVP at least; I think it's not only simpler, but it also makes more sense to me.

However, there is a simple and clear product question that affects either option: when we modify a component that's part of one or more collection(s), do we consider that collection(s) to have been modified too? Should both the component and the collection(s) then show up as "Recently Modified"?

@bradenmacdonald
Copy link
Contributor

OK: answer to the above from Slack seems to be that modifying a component should modify the collection(s) too.

@pomegranited
Copy link
Contributor

Noted, will do ^ as part of openedx/modular-learning#227

@pomegranited
Copy link
Contributor

@jmakowski1123 @bradenmacdonald Some additional tasks to consider adding to the scope here:

@bradenmacdonald
Copy link
Contributor

Thanks @pomegranited - I put those into the description now. But I'll let @jmakowski1123 decide what's in scope.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: EPICS
Development

No branches or pull requests

3 participants