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]