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

Filter and blur sensitive results by term matching #377

Closed
10 tasks done
zackkrida opened this issue Feb 6, 2023 · 44 comments
Closed
10 tasks done

Filter and blur sensitive results by term matching #377

zackkrida opened this issue Feb 6, 2023 · 44 comments
Assignees
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🌟 goal: addition Addition of new feature 🧭 project: thread An issue used to track a project and its progress 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend

Comments

@zackkrida
Copy link
Member

zackkrida commented Feb 6, 2023

Start Date Project Lead Actual Ship Date
2023-02-06 @sarayourfriend TBD

Description

This project matches Openverse images against a list of sensitive terms. All sensitive single image results on the frontend are blurred and viewing them is opt-in for all users.

Development work is ongoing and tracked in a milestone: https://github.com/WordPress/openverse/milestone/12

Documents

Issues

Prior Art

@zackkrida zackkrida converted this from a draft issue Feb 6, 2023
@zackkrida zackkrida added the 🧭 project: thread An issue used to track a project and its progress label Feb 6, 2023
@zackkrida zackkrida changed the title Filtering results by sensitive term matching Filtering and blur sensitive results by term matching Feb 6, 2023
@zackkrida zackkrida changed the title Filtering and blur sensitive results by term matching Filter and blur sensitive results by term matching Feb 6, 2023
@obulat obulat moved this from Not Started to In Progress in Openverse Project Tracker Feb 9, 2023
@obulat obulat moved this from In Progress to Not Started in Openverse Project Tracker Feb 9, 2023
@zackkrida zackkrida moved this from Not Started to In Kickoff in Openverse Project Tracker Feb 9, 2023
@zackkrida zackkrida moved this from In Kickoff to Not Started in Openverse Project Tracker Feb 9, 2023
@zackkrida zackkrida moved this from Not Started to In Kickoff in Openverse Project Tracker Feb 22, 2023
@zackkrida zackkrida added 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend labels Feb 28, 2023
@zackkrida zackkrida assigned zackkrida and unassigned sarayourfriend Mar 7, 2023
@zackkrida zackkrida moved this from In Kickoff to In RFC in Openverse Project Tracker Mar 7, 2023
@zackkrida zackkrida assigned sarayourfriend and unassigned zackkrida Mar 7, 2023
@zackkrida
Copy link
Member Author

zackkrida commented Mar 7, 2023

Update 2023-03-07

Frontend design work is taking place here. This work assumes that the MVP of this functionality will allow the user to show sensitive results, and to elect to blur sensitive results in the search results view (with blurring as the default value).

We also assume the MVP of this functionality does not display or allow the user to enable specific sensitive content subcategories. However, this active design work will be easily adaptable and compatible with such functionality if we decide to include it.

Done

Next

Blockers

I have been delayed in publishing my recommendations for a sensitive content terms list for Openverse, but will do so by the end of the week.

@sarayourfriend
Copy link
Collaborator

@zackkrida This project currently has the "In RFC" status, but it looks like that means we're skipping the project planning step of this. Is that intentional? I want to clarify before I get to deeply into writing the implementation plan.

@sarayourfriend
Copy link
Collaborator

This work assumes that the MVP of this functionality will allow the user to show sensitive results, and to elect to blur sensitive results in the search results view (with blurring as the default value).

Further clarification: are these separate features? Is this re-wording of the quoted summary accurate? "We will enhance our data for what a "sensitive" result might be, thereby filtering them out of queries that do not have mature=True. Additionally, when mature=True and we are including results with sensitive terms, then we will by default blur those results until the user designates that they do not want the blurred results."

The part I want to clarify here is whether we expect results with sensitive terms to appear in queries where mature is not True (i.e., the default query) or if blurred results would only appear for when mature=True.

@zackkrida zackkrida moved this from In RFC to In Kickoff in Openverse Project Tracker Mar 8, 2023
@zackkrida
Copy link
Member Author

zackkrida commented Mar 8, 2023

Hi @sarayourfriend! I've fixed the project status to 'In Kickoff'. I erroneously moved it there when the design proposal was created, as I forgot this project included the full scope of the term matching and not just the frontend blurring implementation.

I was of the opinion that we'd want a proposal and implementation plan here, but would like your opinion.

To clarify the update points about the design work:

Users opt-in to seeing sensitive search results. After opting in, blurred sensitive results will be displayed in their search results. If desired, they can further opt-in to unblur these results.

Users will not see sensitive results (those marked as mature internally) in the default query.

For single results, how does this sound:

Individual results will be blurred for all users when visited directly by url, regardless of specified user preferences. Sensitive results will only be unblurred when navigated to from a search results view where 'show sensitive results' is enabled and 'blur sensitive results' is disabled.

@zackkrida
Copy link
Member Author

zackkrida commented Mar 8, 2023

@panchovm and I decided that it might be best to pause design work after soliciting feedback on the latest iteration of the design. This is primarily to prevent us from having to make further assumptions that may contradict the upcoming planning documents. The designs are in a place where some preliminary development can start (or resume, considering #824) behind a feature flag while we continue to plan.

@sarayourfriend
Copy link
Collaborator

Thanks for the clarifications on all accounts. They sound great. I've got about half a technical implementation plan written for this, it turns out the most difficult part will probably be designating which results have sensitive terms in their textual content in the search API in a way that does not degrade performance.

I'll write the kickoff post first and get the project planning generally started. Having technical implementation plans is a good idea here. Blurring likely deserves its own consideration unless we decide to just use regular CSS blurring, but it's something we can discuss in the kickoff discussion.

@zackkrida
Copy link
Member Author

One other idea for that sync session:

  • Should we show the eye-closed icon on top of the blurred results? I noticed google does this and it does seem clearer:

Image

Image

@fcoveram
Copy link
Contributor

fcoveram commented Aug 2, 2023

I also like Google's solution, but there are other product-wise considerations pointed out here. But definitely something to keep in mind.

@zackkrida
Copy link
Member Author

I am thinking of the icon like a label, rather than proposing any changes to the flow or behavior.

There are certain contexts where the blur alone may not be a strong enough visual cue, like the following results:

Screenshot_20230802-093719.png

@fcoveram
Copy link
Contributor

fcoveram commented Aug 3, 2023

Oh, I see. You are right. The interface needs to provide more context. Good point.

@obulat obulat added 🌟 goal: addition Addition of new feature 🕹 aspect: interface Concerns end-users' experience with the software labels Aug 8, 2023
@dhruvkb
Copy link
Member

dhruvkb commented Aug 18, 2023

I am not sure the global player needs to be blurred because for it to appear, the user must click a result, choose to unblur that result from the content safety wall, see everything in the single result view, play the audio and then go back to all results. After this has happened, the result item itself is unblurred so the global player playing that item need not be blurred.

As for the eye icon on the blurred images, I would be in favour of a visual context but I am not sure what the best way to indicate this is. I played a bit with the idea and have three thoughts.

  • The icon will need to be colored in a way that ensures visibility irrespective of the background. The easiest way to do this is to put the icon in a box with a fixed color (like we do for the licenses).
    Screenshot 2023-08-18 at 6 31 16 PM
    image

  • The icon looks a bit different and is placed separately from other iconography associated with the image.
    Screenshot 2023-08-18 at 6 31 28 PM

  • The audio results do not have a corresponding icon. Is that because we can safely believe that text being blurred is unambiguous? What can be done about consistency between different media types?

@fcoveram your design input about these points will be very helpful, thanks.

@WordPress WordPress deleted a comment from openverse-bot Aug 18, 2023
@fcoveram
Copy link
Contributor

Global player

I am not sure the global player needs to be blurred because for it to appear, the user must click a result, choose to unblur that result from the content safety wall, see everything in the single result view, play the audio and then go back to all results. After this has happened, the result item itself is unblurred so the global player playing that item need not be blurred.

I agree with this. I'm referring to the flow when users play a blurred audio track in the search results page. If the item has not been unblurred, and you click on play, the global player should also show blurred info. In other words, global player should mirror the audio track state.

Here is a quick prototype of this flow.

Global.player.blurred.mp4

Icon indicator

I tried different styles for the icon, and a black icon over a white layer with 60% opacity might work. The ratio contrast required for graphics is lower than for texts. However, the consistency between media types is my main concern.

After testing some ideas, I concluded that the designed consent flow (landing in the search results and enabling the sensitive results) is sufficient for conveying why some content (images and texts) is blurred. The change in the results area is very clear in that new content was added.

@dhruvkb
Copy link
Member

dhruvkb commented Sep 6, 2023

The project is very close to completion, with a total of 5 tickets, including 1 blocked ticket (#2550 that needs legal input) and 3 that already have PRs associated with them.

The API ticket for sensitivity in single results #2926 is the biggest blocker to roll-out so getting it assigned and resolved is the next priority item.

@WordPress WordPress deleted a comment from openverse-bot Sep 6, 2023
@sarayourfriend
Copy link
Collaborator

I'm reaching out to the legal team again to ask for clarification on when we can expect a response. The last time I asked they didn't respond 😕

@openverse-bot
Copy link
Collaborator

Hi @dhruvkb, this project has not received an update comment in 14 days. Please leave an update comment as soon as you can. See the documentation on project updates for more information.

@dhruvkb
Copy link
Member

dhruvkb commented Sep 25, 2023

The latest on this is that we have heard back from legal and these discussions brought up some actionable items:

  1. wording changes in the draft document
  2. wording changes for "mature" to "sensitive" in our products
  3. additional features for the moderation tools project

@sarayourfriend has already implemented points 1 and 2 (thanks! 👏) so I think it should be time to formalise the text into a page on Openverse.org. The third will soon be implemented as a part of that project.

@openverse-bot
Copy link
Collaborator

Hi @dhruvkb, this project has not received an update comment in 14 days. Please leave an update comment as soon as you can. See the documentation on project updates for more information.

@dhruvkb
Copy link
Member

dhruvkb commented Oct 10, 2023

This has been shipped to production 🎈 🥳 🎉 ! One issue #3081 remains in the milestone blocked on the official translations to be written for the content safety explanation page.

@dhruvkb
Copy link
Member

dhruvkb commented Oct 12, 2023

The last issue in the milestone has also been resolved now. The project is shipped!

@dhruvkb dhruvkb closed this as completed Oct 12, 2023
@github-project-automation github-project-automation bot moved this from 📋 Backlog to ✅ Done in Openverse Backlog Oct 12, 2023
@github-project-automation github-project-automation bot moved this from In Progress to Shipped in Openverse Project Tracker Oct 12, 2023
@AetherUnbound
Copy link
Collaborator

I've drafted an announcement post for the feature here: Google Docs Link. @dhruvkb and @WordPress/openverse-maintainers - please take a look and let me know if it sounds okay! I can post it this week and we can move this to "Success" 😄 🚀

@fcoveram
Copy link
Contributor

fcoveram commented Dec 6, 2023

I will share the document with rmartinezduque asking for feedback.

@rmartinezduque
Copy link

Congrats on shipping this new feature! The post looks great to me. I think it clearly communicates the new feature and the benefits it brings. I only suggested a few minor edits, mostly to correct a grammar mistake. If possible, I think it would also be nice to include an image to accompany the announcement (perhaps you already have it in mind). 🙂

@fcoveram
Copy link
Contributor

fcoveram commented Dec 7, 2023

I can work on a visual for the post ⭐

@AetherUnbound
Copy link
Collaborator

Thank you @rmartinezduque and @fcoveram!

@AetherUnbound
Copy link
Collaborator

Our announcement P2 has been made: https://make.wordpress.org/openverse/2023/12/11/introducing-enhanced-content-safety-features-on-openverse/

And I've also made an amplification request for the marketing team here: WordPress/Marketing-Team#330

With that, I'm going to move this project to "Success"!

@AetherUnbound AetherUnbound moved this from 🚢 Shipped to ✅ Success in Openverse Project Tracker Dec 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🌟 goal: addition Addition of new feature 🧭 project: thread An issue used to track a project and its progress 🧱 stack: api Related to the Django API 🧱 stack: frontend Related to the Nuxt frontend
Projects
Archived in project
Archived in project
Development

No branches or pull requests

8 participants