[wp-trac] [WordPress Trac] #63966: Database Extensions for Federation Support and Compatibility at the WordPress Core Level
WordPress Trac
noreply at wordpress.org
Fri Sep 12 13:54:13 UTC 2025
#63966: Database Extensions for Federation Support and Compatibility at the
WordPress Core Level
-----------------------------+-----------------------------
Reporter: kimjiwoon | Owner: (none)
Type: feature request | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Database | Version:
Severity: normal | Keywords:
Focuses: |
-----------------------------+-----------------------------
### Database Extensions for Federation Support and Compatibility at the
WordPress Core Level
The extension of the ActivityPub protocol in WordPress is currently being
developed not by the community but under the leadership of Automattic.
However, this is only because the current implementation has not yet
matured enough to be directly integrated into the Core. This does not mean
that the Core team can simply ignore the issue.
Of course, I should not state it too definitively, but personally I am
convinced that in the future it will inevitably be integrated into
WordPress Core. Therefore, even if this issue is not yet being directly
addressed at the global community level, I would like to raise it as
something that should be considered.
* https://wordpress.org/plugins/activitypub/
* https://wordpress.com/support/enter-the-fediverse/fediverse-blocks/
* https://wordpress.com/blog/2023/10/11/activitypub/
* https://www.theverge.com/2023/10/11/23913278/wordpress-activitypub-
official-plugin-automattic-fediverse-mastodon
For these reasons, I believe it is important to raise compatibility
concerns on Trac as well. If the philosophical gap between WordPress Core
logic and the ActivityPub protocol grows larger, it will become
increasingly difficult to align them in the future.
And I do not think this is unrelated to improving the structure of Core
itself. If WordPress evolves toward a more modern and interoperable
structure, future integration will be smoother and WordPress will avoid
drifting into a “Galápagos” model that ignores broader web standards.
The reason I am raising this issue is that (if I remember correctly) the
ActivityPub plugin prioritizes integration with the existing structure and
does not add separate database tables, so that it can be cleanly removed
if needed.
Simply put, the ActivityPub vocabulary has **actor, activity, and
object**. Actors can be understood as WordPress authors, and objects as
WordPress posts or media.
On the other hand, activities (likes, reposts, follows, etc.) are handled
in a way similar to [WordPress.com Reader
Notifications](https://wordpress.com/reader/notifications).
Does Core DB have a table to handle notifications? No, it does not. Isn’t
that why notifications are implemented by mass-sending emails?
Why can’t self-hosted WordPress receive in-app notifications via PWA? Why
must it always be connected to Jetpack or flood users with email
notifications?
Why, when we visit another WordPress blog and leave a comment, do we have
to enter our name, email, and URL as “anonymous”? Why must impersonation
and spam be tolerated?
Why can’t we “follow” another site from “My Site” or compose a comment on
my site and have it “sent” directly to a post on another site?
In conclusion, it seems inevitable that ActivityPub integration into Core
will eventually happen. Currently, there is no table in Core to handle
activities (which is why they are being stored in `comments`, but that is
actually incorrect). What is needed is not only a local profile but also a
remote actor table capable of handling proxy profiles, and a remote object
table to subscribe to and “repost” those actors.
However, such tables may not be strictly necessary in the existing Core,
and since the ActivityPub plugin does not add new tables, a situation has
arisen where responsibility is shifted back and forth. If the integration
of the ActivityPub protocol into WordPress Core is to be seriously
considered, then even if the operational logic is implemented by the
plugin, the database tables themselves should be implemented at the Core
level. That is my conclusion.
---
### Four Key Points
1. **Current Reality**
* The ActivityPub plugin is currently developed by Automattic as a
third-party project.
* It avoids creating new DB tables and instead forces mapping onto the
existing `comments` structure.
* This was intentional, to ensure *removability* and *compatibility
with existing structures*.
2. **Problem Statement**
* The ActivityPub object model (actor, object, activity) does not map
1:1 to the WordPress DB schema.
* In particular, *activities* (likes, follows, reposts, notifications)
have no corresponding table in Core.
→ The lack of a `notifications` table means Core still relies on bulk
email delivery.
* As federation grows, this creates a “responsibility gap” between Core
and the plugin.
3. **Philosophical Concern**
* If Core remains indifferent, the gap between WP’s comment structure
and federated replies will widen.
* Later, when Core integration is attempted, “Galápagos-style”
divergence could make compatibility or refactoring impossible.
* Core needs to evolve toward a more modern and interoperable DB
schema.
4. **Conclusion & Proposal**
* ActivityPub integration into Core is, in the long term, *virtually
inevitable*.
* Even if plugin logic handles the functionality, **Core should provide
base DB tables (actors, activities, objects, notifications)**.
* This ensures federation standards can be adopted, without pushing all
responsibility to plugins.
---
### For Trac
Since Trac focuses on specific bug/ticket-level issues, the higher-level
schema discussion should eventually be raised as a *Core proposal* or *dev
note*. If you open a Trac ticket, keep it concise, for example:
* “The current ActivityPub plugin avoids extending the DB schema, but
long-term federation support will require Core-level DB tables for
compatibility.”
* “Core currently lacks tables for concepts like Notifications and
Activities. At minimum, schema design discussions are needed to ensure
future interoperability.”
--
Ticket URL: <https://core.trac.wordpress.org/ticket/63966>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list