Social/Profile
This page describes an adoption pattern for profile and social surfaces (web profile pages, public identity views, and optional indexing flows).
Boundary: normative vs non-normative
Section titled “Boundary: normative vs non-normative”- Normative contract: Specification and Conformance
- Non-normative guidance: projection patterns in this page
What you implement (minimum checklist)
Section titled “What you implement (minimum checklist)”Inputs
Section titled “Inputs”- A valid Universal Manifest (
um:Manifest) - Resolver or direct retrieval path to fetch current manifests
- Surface policy for privacy/consent enforcement
Outputs
Section titled “Outputs”- A deterministic public profile projection
- Explicit handling for expired/invalid manifests
- Optional export for indexing/search when consent allows
Minimum behaviors
Section titled “Minimum behaviors”- Enforce TTL and reject expired manifests for active use
- Ignore unknown fields safely
- Respect consent fields before rendering/indexing
- Treat implementation-specific conventions as optional extensions
Core idea: Manifest → projection
Section titled “Core idea: Manifest → projection”Universal Manifest is a portable state capsule, not “the profile page itself”.
Typical flow:
- A system receives a manifest (
um:Manifest) about asubject. - It verifies (or otherwise trusts) the manifest (TTL rules; signature when available).
- It derives a projection appropriate for the surface:
- a web profile page
- a public display capsule
- a social identity view
- a search/index document (opt-in)
Minimum fields for a profile projection
Section titled “Minimum fields for a profile projection”subject— stable identifier (recommended: DID; allowed: any URI)issuedAt,expiresAt— freshness for useshards— embed or reference profile fragmentspointers— canonical source references (website, pod, social actor URL, etc.)consents— whether the profile may be public/indexed/rendered
Schema strategy (avoid inventing the world)
Section titled “Schema strategy (avoid inventing the world)”For cross-system adoption, prefer embedding standard vocabularies inside shards when helpful:
schema:Personfor creators (basic public profile fields)schema:Organization/schema:Placefor venues
In v0.1, consumers can still interoperate by reading only the fields they understand and ignoring unknowns safely.
ActivityPub pointer (optional)
Section titled “ActivityPub pointer (optional)”ActivityPub can start as a pointer without forcing every consumer to implement ActivityPub:
- pointer name:
activityPub.actor - value:
https://example.social/@alice
Privacy & consent
Section titled “Privacy & consent”Consumers should default to deny for any use not explicitly consented to.
Suggested consent keys (strings):
social.profilePublicsocial.indexingpublicDisplay
Reference fixtures
Section titled “Reference fixtures”Use these fixtures as implementation aids:
- Social profile fixture
- Manifest with shards fixture
- Unknown fields fixture
- Minimal signed fixture (v0.2 readiness)
These examples are implementation aids and should not be treated as extra conformance requirements.