Skip to content

dknauss/author-identity

Author Identity

CI License: GPL-2.0-or-later PHP 7.4+ WordPress 6.0+

Structured authorial identity that travels with the work across feeds, search, the fediverse, and AI from one source of truth.

What this project is

This repository ("Author Identity") houses research and planning documents for an experiment in exposing richer, more textured WordPress user metadata that supports a more meaningful conception of authorship on the web.

It also includes the Byline Feed WordPress plugin, which implements the Byline extension vocabulary plus additional author-identity output channels. A normalized author-data layer in WordPress drives multiple outputs.

The mental model: WordPress as a Personal Data Server for authors. Ultimately, with a federated identity, any WordPress user's profile can become their "everything" folder for any content across the web that they're associated with through its production and/or ownership. Most commonly, this association is one of authorship. The Byline Feed plugin makes WordPress speak the open web's existing and emerging formats for asserting authorship. Output channels are reactive to the normalized author data — none of them own it.

What this repository contains

This repository has two related parts:

  1. A documentation set defining the vision, protocol landscape, implementation strategy, and quality gates for portable author identity in WordPress.
  2. A WordPress plugin, byline-feed, that implements the MVP portion of that strategy.

Current shipped scope for the plugin:

  • Normalize authorial user data from core WordPress, Co-Authors Plus, PublishPress Authors, and the Human Made Authorship plugin.
  • Emit structured Byline metadata in RSS2, Atom, and JSON Feed.
  • Expose new authorial user metadata like byline:perspective for feed consumers.
  • Accommodate new authorial user metadata like byline:perspective in WordPress data model and user interface.
  • Emit fediverse:creator meta tags in HTML heads for singular content by authors with configured fediverse handles.
  • Emit multi-author JSON-LD Article + Person output for singular content, including Yoast SEO and Rank Math schema integration modes.
  • Enrich Yoast SEO and Rank Math schema output when present, or emit standalone multi-author JSON-LD when no schema-owning SEO plugin is active.
  • Preserve all standard feed elements so Byline output remains additive.
  • AI-consent signaling: per-author and per-post consent, feed-level and denied-item rights metadata, robots meta for denied posts, TDMRep headers, ai.txt, and admin-side audit logging.

Next planned tranches:

  • Molongui adapter support
  • Pre-1.0 Byline spec alignment and terminology cleanup

Longer-range identity work such as did:web: remains in the vision/research layer, not the active roadmap. Current work focuses on the output and adapter tranches without expanding the active roadmap into broader identity-framework work.

Documentation map

Area Items
Layout docs/codebase-map.md: Curated repository and plugin tree map
Vision author-identity-vision.md: Full project vision and positioning
Planning implementation-spec.md: Authoritative plugin implementation spec, roadmap, and release gates
byline-spec-plan.md: Byline spec assessment — what the plugin validates, current divergences, and pre-1.0 priorities
byline-adoption-strategy.md: Adoption strategy — audiences, workstreams, and post-Gate-A product direction
fediverse-identity-design.md: Future source-model design for explicit vs derived fediverse identity
Research docs/README.md: Documentation tree index
docs/research/README.md: Curated research index with current vs exploratory tiers
multi-author-matrix.md: Comparison of WordPress multi-author systems
protocol-coverage-map.md: Protocol coverage by output channel
architecture.md: HM Authorship architecture notes
landscape.md: Plugin ecosystem and historical lineage
metadata-models-for-publishers.md: JSON-LD background and longer-term publication metadata context
nlweb-yoast-context.md: How Yoast Schema Aggregation and NLWeb relate to the plugin's schema strategy
Playground playground/README.md: Playground demo index
playground/output-demo/README.md: Stable output-demo bundle for feeds, fediverse:creator, and JSON-LD
Quality ASSESSMENT.md: Project assessment and recommendations
TEST_COVERAGE_MATRIX.md: Coverage status and remaining gaps
TDD_TESTING_STANDARD.md: Testing workflow and definition of done
Release RELEASE_CHECKLIST.md: Short operational checklist for packaging and publishing a Byline Feed release
Work Packages wp-01.md to wp-06.md: Detailed delivery specs by package
gap-analysis.md: Audit of code against the specs
implementation-spec.md: Supplemental strategy details and cross-cutting concerns
code-review-plan.md: Post-Gate-A hardening backlog from source/test review
Legacy byline-rss-spec-adoption/: Earlier planning and legacy positioning documents

Plugin status

Status Items
Implemented adapter interface plus core, Co-Authors Plus, PublishPress Authors, and HM Authorship adapters
RSS2, Atom, JSON Feed, and JSON-LD output, including profile / now / uses for linked WordPress users via plugin-owned meta
Yoast SEO and Rank Math schema integration modes for multi-author JSON-LD enrichment
content perspective storage and editor UI
fediverse:creator meta tags for authors with configured fediverse handles
conservative ap_actor_url resolution for linked WordPress users when ActivityPub identity can be resolved
AI-consent signaling: per-author/per-post consent, feed-level and denied-item rights metadata, robots meta output, TDMRep headers, ai.txt, and admin-side audit logging
runtime validation for the normalized author contract
PHPUnit, PHPCS, Playwright E2E, and GitHub Actions CI scaffolding
Not yet implemented Molongui adapter
Primary references byline-feed/
byline-feed/docs/output-reference.md
implementation-spec.md
wp-01.md to wp-06.md

For a maintained repository tree, see docs/codebase-map.md.

Development and verification

PHP tooling

From byline-feed/:

composer install
composer lint
bash bin/run-phpunit-local.sh

Alternative when you already have a WordPress test suite and database configured:

WP_TESTS_DIR=/tmp/byline-wp-tests composer test

Use bash bin/run-phpunit-local.sh for the default local path on this repo because it provisions a disposable Docker MySQL instance and avoids stale machine-specific socket config. Use composer test directly only when you already have a valid WP_TESTS_DIR plus database configuration in place.

JavaScript build

From byline-feed/:

npm install
npm run build

Development-tooling note:

  • current npm advisory state is clean after targeted dependency overrides
  • npm run start still uses development-only tooling and should be treated separately from shipped plugin runtime behavior
  • current policy and maintenance expectations are documented in SECURITY.md

CI

Check Scope
PHPUnit PHP 7.4 through 8.3 and WordPress 6.0, 6.4, and latest
PHPCS WordPress Coding Standards
Node build Asset build validation
Workflow .github/workflows/ci.yml

Playground

The current Playground strategy is intentionally two-tiered:

  • playground/output-demo/ is the stable source-of-truth bundle for demonstrating shipped outputs
  • a later adapter-demo blueprint will showcase real Co-Authors Plus and PublishPress Authors integration without burdening the primary public demo

The output-demo README includes direct inspection routes for:

  • feeds
  • singular fediverse:creator and JSON-LD output
  • denied rights-signaling routes
  • /ai.txt

The public Playground demo runs the actual byline-feed plugin code, but uses synthetic fixture authors/content via a small demo mu-plugin so the inspection routes stay deterministic.

Try in Playground

Use the output-demo bundle locally with:

npx @wp-playground/cli@latest server --blueprint=playground/output-demo/blueprint.json

Build a shareable snapshot ZIP with:

playground/bin/build-output-demo-snapshot.sh

Refresh the published public demo assets with:

playground/bin/publish-output-demo.sh

The public Try in Playground CTA now targets the stable codex/playground-assets blueprint URL. Each refresh republishes that stable blueprint while pinning the installed plugin to a fresh immutable source tag for the current commit. Local snapshot ZIPs remain useful for offline sharing, archived demos, and reproducible local inspection.

Current RC

Governance

File Purpose
CONTRIBUTING.md Development, verification, and AI-attribution guidance
CHANGELOG.md Human-readable project change history and release baseline
RELEASE_NOTES.md Release-note convention and release checklist, including AI-assistance disclosure
.github/CODEOWNERS Default review ownership
.github/dependabot.yml Automated dependency update policy
.github/PULL_REQUEST_TEMPLATE.md PR checklist and verification prompts
SECURITY.md Security reporting guidance and accepted-risk notes for development tooling

Release discipline:

  • build the distributable plugin zip with byline-feed/bin/build-plugin-zip.sh
  • update CHANGELOG.md when shipping real releases
  • draft public release notes using RELEASE_NOTES.md
  • include the AI-assistance disclosure note in release notes when AI materially affected the release

Design constraints

Key architectural rules carried through the docs and plugin:

  • Byline output is additive and must not replace standard feed elements.
  • All output channels consume the same normalized author contract.
  • Optional upstream plugin integrations remain optional adapters, not hard dependencies.
  • Scope is intentionally constrained to the defined work packages.

AI assistance disclosure

This repository includes material changes produced with AI assistance (OpenAI Codex and Anthropic Claude).

Preferred attribution model:

  • Repository ownership and accountability remain with the human maintainer.
  • Commits with substantial AI-generated changes may include an Assisted-by: trailer naming the tool used.
  • AI assistance is disclosed explicitly rather than represented as human co-authorship.

Practical note:

  • GitHub's contributor graph reflects commit author identity, not assistance trailers.
  • AI tools are disclosed in repository documentation and commit trailers, but are not represented as separate GitHub contributor accounts.

See also:

About

Structured author identity that travels with the work — across feeds, search, the fediverse, and AI — from one source of truth in WordPress.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors