Conversation
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-playground | 92444a8 | Apr 21 2026, 06:57 AM |
Scope checkThis PR changes 1,131 lines across 3 files. Large PRs are harder to review and more likely to be closed without review. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
PR template validation failedPlease fix the following issues by editing your PR description:
See CONTRIBUTING.md for the full contribution policy. |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/blocks
@emdash-cms/cloudflare
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Establishes rfcs/ as the home for EmDash's lightweight RFC process, with a README describing the two-step Discussion -> PR flow (simplified from Astro's) and a template for future RFCs. RFCs are required to link back to their motivating Discussion(s) via the frontmatter. Moves the in-progress plugin registry proposal from plans/ into rfcs/0001-plugin-registry.md with frontmatter citing #296 and #307 as prior discussions.
aa184b6 to
b9f7c20
Compare
|
One immediate thought is that supporting native plugins that bypass the sandbox may be worth digging into. It somewhat goes against the idea of EmDash bringing secure plugins as a replacement to Wordpress. Mainly because the majority of end users likely won’t know/understand/care about the difference. All end users are likely to look at is functionality and more than likely just blindly install the plugin if it looks to do what they expect, regardless of if it’s sandboxed. At that point it negates the whole idea of the sandbox. Also, it disincentivizes plugin authors from building for the sandbox and to rather just take the easier, native, path. |
|
@BenjaminPrice yeah, that's a valid concern. The reason I thought that it was ok on balance is because the install process for a sandboxed plugin is so much easier: just click and it works, vs needing to npm install and add it to the config. There's also the fact that this RFC doesn't specify how these will actually be displayed – and some clients may choose to not display native plugins at all. I'd say this would probably be the case for managed hosts. |
|
Oh this is exciting, fantastic work @ascorbic. Reading this mostly through an atproto lens... Overall, this feels very protocol-native: publishing to author's PDS, using the Relay and App View to aggregate, with clients to query. Love it! There's also the old familiar problem of recentralization creeping in via the biggest App View being the one Emdash maintains. It's a familiar one! The atproto primer is so good. Lexicons Are you certain you want to tie everything to The longer text fields for Bundling the icon and screenshots into the tarball feels like it could be problematic. Does this mean the App View, or any directory client, would need to download the full bundle and extract the images in order to display them? I think a more idiomatic approach would be to include them in the Lexicon, maybe similar to how a bsky record includes embeds. Setting There's a lot of variability in the Lexicon based on the type of package it is (native vs. sandboxed). Feels like a good candidate for a A sandboxed release: {
"$type": "com.emdashcms.registry.release",
"package": "at://did:plc:abc/com.emdashcms.registry.package/gallery",
"version": "1.0.0",
"integrity": "sha256-...",
"source": {
"$type": "com.emdashcms.registry.defs#sandboxedSource",
"url": "https://...",
"capabilities": ["read:content"],
"allowedHosts": ["images.example.com"]
},
"createdAt": "..."
}A native release: {
"$type": "com.emdashcms.registry.release",
"package": "at://did:plc:abc/com.emdashcms.registry.package/seo",
"version": "1.0.0",
"integrity": "sha256-...",
"source": {
"$type": "com.emdashcms.registry.defs#nativeSource",
"npmVersion": "@example/emdash-seo@1.0.0"
},
"createdAt": "..."
}One way to test this would be to add a hypothetical third type — if it doesn't break existing records, it's probably correct. If it requires new upstream fields, not there yet. Consider making The Lexicon evolution section is smart and a good set of best practices. CLI Really love the commitment to using OAuth over app passwords. Not always an easy thing on the CLI, excited to see your implementation! Misc The moderation/squatters issue is potentially quite real; the directory landing before review/reports/labelers could be problematic. There's a period where Is there a migration story for existing plugins? Or a plan for communicating to them directly? Related, what's the discovery mechanism for updates once a plugin is installed? How does an admin know there's a new version, if there are breaking changes, security issues, etc. Consider adding a deprecation mechanism (maybe that's just a field in the lexicon?) Multiple authors feels like something worth resolving sooner rather than later. |
Draft RFC for decentralised plugin registry.
Rendered markdown: https://github.com/emdash-cms/emdash/blob/wip/plugin-rfc/rfcs/0001-plugin-registry.md