GitHub user yangzhang75 created a discussion: Proposal: Report a Public Workflow


# Proposal: Report a Public Workflow

## What it does

Texera lets any user make a workflow **public** (`workflow.is_public`), after 
which it shows up on the public **Hub** where everyone can browse, view, like, 
and clone it. Today there is **no way for a viewer to flag a public workflow** 
that contains inappropriate content — offensive text in operator/comment 
fields, misleading or harmful pipelines, spam, copyrighted data, etc. The only 
recourse is to email a maintainer out of band, and admins have no in-product 
action to take a bad workflow down.

This proposal adds a lightweight **"Report" flow**: any logged-in user can 
report a public workflow with a reason, and admins get a moderation queue where 
they can review reports and, if warranted, unpublish it.

```mermaid
flowchart LR
    A[User sees a public<br/>workflow on the Hub] -->|clicks Report,<br/>picks 
a reason| B[(Report saved)]
    B --> C{Admin reviews<br/>the report}
    C -->|looks fine| D[Dismiss]
    C -->|inappropriate| E[Unpublish<br/>removed from Hub]
```

**Use case:** A public workflow's operator labels contain harassing language 
toward a named person. A viewer clicks *Report → "Harassment / offensive 
content"*. An admin sees it in the queue, confirms, and unpublishes it with one 
click — the workflow is no longer discoverable on the Hub, without deleting the 
author's private copy.

## How it works

### Reporting (any logged-in user)

- On the Hub workflow card and the public-workflow detail view, add a 
**Report** action.
- It opens a small dialog: a **reason category** (dropdown) + an optional 
**free-text detail** field.
- Suggested categories: *Offensive / hateful content*, *Harassment*, *Spam / 
advertising*, *Copyright / privacy violation*, *Other*.
- Guardrails: only **public** workflows are reportable; a user can't report the 
same workflow twice while an open report exists; the workflow **owner** can't 
report their own.

### Moderation (admins only)

- A new **Reports** tab in the existing admin dashboard.
- It lists reports **grouped by workflow**, sorted by report count / recency, 
showing: workflow title + owner, number of distinct reporters, reason 
breakdown, latest detail.
- From a row an admin can:
  - **Dismiss** → close the workflow's open reports, no action taken.
  - **Unpublish** → set the workflow back to private (reuses the existing 
public/private mechanism) so it disappears from the Hub. The author keeps their 
private copy.
- Every action is recorded (who acted, when, resolution) for accountability.

## Implementation sketch

There is no report/moderation concept in Texera today, so this is greenfield. 
At a high level it needs: a new table to store reports, a user-facing endpoint 
to submit a report, admin-only endpoints to list and resolve them (mirroring 
the existing admin resources), and a bit of frontend — a report dialog on the 
Hub plus a Reports tab in the admin dashboard. "Unpublish" reuses the 
workflow's existing public/private toggle, so no new take-down machinery is 
required. Exact schema and API can be worked out in the PR.

## Open questions

1. **Take-down semantics** — should "Unpublish" (keep author's private copy, my 
default) be the only admin action, or do we also want hard-delete for egregious 
cases?
2. **Anonymity & abuse of reporting** — reporter identity is stored for 
accountability, but should it be visible to admins only? Do we need a per-user 
report rate limit to prevent report spam?
3. **Author notification** — should the author be told their workflow was 
unpublished, and why? In scope or a follow-up?
4. **Scope** — start with workflows only, or design it generically so 
**datasets** (also public via the Hub) can be reported with the same mechanism 
later?
5. **Thresholds** — purely manual admin review, or auto-unpublish once N 
distinct users report the same workflow?


GitHub link: https://github.com/apache/texera/discussions/6242

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to