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

New moderation and report processing flow #7535

Open
19 of 29 tasks
jonasfj opened this issue Mar 6, 2024 · 0 comments
Open
19 of 29 tasks

New moderation and report processing flow #7535

jonasfj opened this issue Mar 6, 2024 · 0 comments

Comments

@jonasfj
Copy link
Member

jonasfj commented Mar 6, 2024

The things we have to do are:

  • Moderation actions:

    • Introduce moderatedAt and isModerated on
      • Package
      • PackageVersion
      • Publisher
      • User
    • Enforce moderated semantics for:
      • Package (not available in API, public bucket, search, and web page says moderated)
      • PackageVersion (not available in API, public bucket, and web page says moderated)
      • Publisher (web page says moderated, packages owned by publisher can't be updated)
      • User (can't sign-in on pub.dev or publish using dart pub; packages owned exclusively by the user are marked discontinued)
    • Administrative actions to:
      • Set or clear Package.isModerated/moderatedAt
      • Set or clear PackageVersion.isModerated/moderatedAt
      • Set or clear Publisher.isModerated/moderatedAt
      • Set or clear User.isModerated/moderatedAt
      • Add optional case tracking: --case=<caseId> (use --case=none)
      • Add optional email-body for content-owners
    • Periodic task to delete entities and associated resources if now() - moderatedAt > 3 years
      (users are still just user.isDeleted = true with Likes being deleted).
  • In-take report form

    • content about the process and what to expect
    • form submitting + processing
    • linking from public pages
    • setup deep linking for other systems
  • notifications

    • confirmation emails on form submission
    • notification emails on case resolution (with appeal-link)
    • notification emails on restrictive action (with appeal-link)
  • statistical reporting


Implementation details of isModerated/moderatedAt

To ensure that we reverse moderation decisions, we're going to add properties:

  • isModerated, true, if moderated, otherwise false, and,
  • moderateAt, date-time when entity was moderated, otherwise null.

We are adding these properties to the following entities:

  • Package,
  • PackageVersion,
  • Publisher, and,
  • User.

With the effect that being moderated means that:

  • Entity is not visible in API
  • Entity is not visible on website, if direct URL for the entity is accessed a message will state that it was moderated.
  • Entity is not available in search (not even with include:unlisted).
  • Entity can't be used for authentication or authorization, meaning
    • A moderated user can't sign-in, and,
    • Packages of a moderated publisher can't be updated.

We'll default to deleting entities and related resources 3 years after moderatedAt.

When setting isModerated on Publisher or User this can cause packages that are solely owned by said entity to be marked as isDiscontinued. When clearing isModerated we do not change this back, it's simply too much information to track.

@jonasfj jonasfj changed the title Introduce moderatedAt date-time Introduce moderatedAt date-time / moderation actions Apr 11, 2024
@isoos isoos changed the title Introduce moderatedAt date-time / moderation actions New moderation and report processing flow Apr 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant