elan-ev / tobira

Video portal for Opencast
https://elan-ev.github.io/tobira/
Apache License 2.0
22 stars 17 forks source link

Improve "Admin UI Workflow" for deleting series #1176

Open LukasKalbertodt opened 4 months ago

LukasKalbertodt commented 4 months ago

("workflow" in this comment never refers to "Opencast workflows", but to the generic meaning of the word, i.e. how someone works)

CC @oas777 @dagraf as we just talked about this.


Out there, there are some different views/approaches on how Tobira is used. The ETH for example likes to mainly automatically "publish series to Tobira" so that they can be reached via the main navigation, similar to their current video portal. But "series publication" is not a concept/term that Tobira understands. Tobira has a different data model of content pages with blocks. Currently, we have this Admin UI functionality that connects those two worlds/ways of looking at things. It does this by, when creating a series in the admin UI, creating a content page in Tobira with a single series block and configuring the content page to derive its name from the series.

But this mapping is imperfect, mostly notable when the series is deleted in the admin UI. In that case, Tobira will learn of the series' deletion and when attempting to display said content page, in place of the series block, it will show an error box saying "The series referenced here was deleted". Which is correct from Tobira perspective, but unhelpful in the workflow of the Opencast admin. This situation needs to be improved as this workflow is important for at least some.

However, I don't think there is one obviously correct solution, but many each with their own quirks.

Summary: I prefer solution (d). I still wanted to post the full text below as it helped me come to that decision, but if you are short on time, I don't expect anyone to read it.


(a) Add marker to pages "delete when series X is deleted"

When creating a content page for a series through the admin UI, this special marker is attached to that page. When Tobira learns that a series is deleted, it will automatically delete all content pages with that special marker with the fitting series. (Alternatively, each series in Tobira could store a special marker "when deleted, also delete page XY", but I think that's just implementation detail and not relevant for users.)

(b) Auto delete all content pages that look like created by the Admin UI

The content pages created by the admin UI always look the same: they have one series block, their name is derived from that series and they have no sub-pages. If Tobira learns of a series' deletion, it could just delete all pages that look like that.

(c) Treat admin UI created pages as "different kind of page" that have to be converted before being usable as normal content page.

We could somehow mark these pages as special and disallow editing the name and the content blocks, and disallow adding subpages for these. But offer a button "Convert to normal page" in the settings. When series are deleted, all these "special pages" referring to that series are also deleted. But once converted to a normal page (which is a one way process!), it is editable as one would expect, but will not be deleted automatically anymore. This solution can also be thought of not as "creating a special page", but "mounting a series into the navigation tree directly".

Historical note This is actually how we first tried to implement this whole thing anyway. We didn't plan on having this "derive name" functionality for example, but just have two kinds of pages: content pages and pages only referring to a series. The problem with this is that if a user wants to add a single block to the page, they couldn't retain the feature of deriving the name from the series, which is annoying. So we added this "name deriving" feature separately. Sadly, I didn't find any detailed reasoning for this decision. But if that's indeed the only reason, it might be fine going with this solution now, but keeping the "name derive" feature of course. Some relevant links: - https://github.com/elan-ev/tobira/issues/351 - 22f83e22f5d9e781539417855c8a3a3fb72d6546

(d) Change admin UI "delete" button and make it also delete page in Tobira

Instead of adding this logic to Tobira, we could also add it to the admin UI like we did with the "creation" part of this workflow. The admin UI "delete series" button and confirmation dialog could be changed, so that it shows a list of pages that the series is linked in (like in the series properties right now). But each entry has a checkbox, which decides if said page is deleted. Each entry could also show the number of blocks and subpages.

The default values of these check boxes is interesting: one could default-check all that look like created by the admin UI (similar to (b)); or Opencast could store which page was created to begin with and only tick that one by default. (To be clear, in almost all cases, only one page will be shown in this dialog and that will be checked by default.)


Now that I've written this all down, I think it's pretty clear that I prefer (d).

LukasKalbertodt commented 4 months ago

Of course, if you have other ideas or pros/cons for these ideas, let me know. Maybe I'm missing something.

oas777 commented 3 months ago

Thanks, Lukas, for laying out the options. Some initial comments to get this started, mainly looking at my preferred option (a) while also referring to others:

On a higher level, this issue goes back to responsibility, accountability, and authority (not ownership though). And about dogs and their tails. Series "from the admin UI" have been created by an OC administrator, who is therefore responsible for their fate. That person should be able to follow through with deleting (better word is "unpublish") that series as part of that person's authority over the video portal. If you allow users to mess with that publication by adding blocks or creating sub-pages, that's your decision to make life miserable for the OC admin. Those users can still create that little eco-system of theirs on their own pages and the fact that they might end up with deleted series/videos is part of a policy a video portal should have. Unless you have the time to look at each series/video individually (which I think is where (d) is going).

More to the point, commenting your comments on option (a):

LukasKalbertodt commented 3 months ago

Thanks for your comment. I understand your points. For completeness, could you comment on what you dislike about my preferred solution (d)? What disadvantages do you see there?

Your comment only mentions that it might be time intensive going through all entries. Which is a fair point, but I think it's not a big deal in practice. >99% of series you are talking about will be included in exactly one page which will be marked as "delete" by default in said popup dialog. So most of the time, it's just a quick glance by the admin seeing "ah yes also delete that page". The admin only actually needs to pay attention if there is something unusual (which I expect to be very rare), which the UI can make very obvious. And to be clear: I wouldn't mention user pages in the described dialog. User pages work as you say: "the fact that they might end up with deleted series/videos is part of a policy a video portal should have".

oas777 commented 3 months ago

I think my answer is in your question: For <1% of the use cases, I currently wouldn't invest any additional work. Or the other way round: How important is a feature that covers less than 1% of uses cases?

LukasKalbertodt commented 3 months ago

I'm not sure that (a) is really less work than (d). Sorry if I implied this. Also, rereading your general statement:

On a higher level, this issue goes back to responsibility, accountability, and authority (not ownership though). And about dogs and their tails. Series "from the admin UI" have been created by an OC administrator, who is therefore responsible for their fate. That person should be able to follow through with deleting (better word is "unpublish") that series as part of that person's authority over the video portal.

That does rather sound like solution (d) to me actually. You want Opencast to be the central hub, controlling the rest, right? With the page creation in Tobira we already do that: the Admin UI instructs Tobira exactly what to do. And I feel like for deletion/unpublishing the same should happen: Opencast telling Tobira exactly what to do. Instead of Tobira just randomly deleting stuff without explicit control from Opencast/the Opencast admin. And it would make the data flow more consistent with the "page creation" process.

Sorry that I'm arguing strongly in favor of (d) right now, even though I invited feedback :D I asked my colleagues now whether my current preference has any merit to it.

oas777 commented 3 months ago

iguess_wide

oas777 commented 3 months ago

I'm not sure that (a) is really less work than (d).

PS: If it is, we'll have to talk again.