Skip to content

Commit 6ae408d

Browse files
STRATEGY.md: the ecosystem position and the realistic play
One data plane, many protocol views — the square nobody else occupies. Head-to-head vs WordPress/Drupal/Nextcloud (architecture flatters us; distribution is why they win), the ecosystem map by distance (ATProto PDS the closest live competitor, Sandstorm the frozen cousin, container platforms the inverse model), why the square is a graveyard (demand and distribution killed FreedomBox/Diaspora/Unhosted/Sandstorm, never technology), what changed (PDS is a mainstream word, homelab rails exist, plugin build cost collapsed to ~one agent-session), the five honest gaps, and the wedge: lead with the demo, ride Bluesky/Nostr onboarding, get into the homelab catalogs, close the self-description loop via REPORT.md's seams.
1 parent fc64b4e commit 6ae408d

2 files changed

Lines changed: 134 additions & 1 deletion

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ thirty-three plugins on one server from pure config, pods + WAC intact
9797
beside them. Findings consolidated in [NOTES.md](./NOTES.md); the full
9898
plugin-tagged backlog triaged in [ISSUES.md](./ISSUES.md); the build guide
9999
is [AGENT.md](./AGENT.md); the maintainer-facing summary — what to add
100-
to the api next, ranked, with evidence — is [REPORT.md](./REPORT.md).
100+
to the api next, ranked, with evidence — is [REPORT.md](./REPORT.md);
101+
where this sits in the ecosystem and the realistic play is
102+
[STRATEGY.md](./STRATEGY.md).
101103

102104
```
103105
<name>/plugin.js the port <name>/test.js real-JSS tests <name>/README.md findings

STRATEGY.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# STRATEGY.md — where this sits, and whether it has a shot
2+
3+
Companion to [REPORT.md](./REPORT.md) (what to build into the api next).
4+
This file answers the other question: **where does a JSS + plugins stack
5+
sit in the ecosystem, what's missing, and what's the realistic play?**
6+
Written 2026-07, at 33 plugins / 374 tests.
7+
8+
## The one-line position
9+
10+
**One data plane, many protocol views.** A single small Node process
11+
where your data lives once — and Mastodon clients, Bluesky clients,
12+
Element, CalDAV phones, IndieWeb editors, remoteStorage apps, aws-cli,
13+
JMAP mail clients, nostr, and WebDAV mounts are all just *views of the
14+
same pod*, each behind WAC. `serve.js` runs this today. Nothing else in
15+
the ecosystem does.
16+
17+
## Head-to-head with the incumbents
18+
19+
| | **JSS + plugins** | **WordPress** | **Drupal** | **Nextcloud** |
20+
|---|---|---|---|---|
21+
| Core domain | personal data server (pods, WAC, identity) | CMS/publishing | CMS/framework | file sync + groupware |
22+
| Plugin model | route-ownership + loopback; plugins **cannot** touch core's pipeline (measured, [NOTES.md](./NOTES.md) #564) | hooks/filters everywhere — plugins *are* pipeline modification | hook system, heavyweight | PHP apps, signed, runtime enable/disable |
23+
| Ecosystem size | 33 | ~60,000 plugins, 20 years | ~50,000 modules, declining | ~300–400 apps |
24+
| Marketplace / install | none — boot-time config (the #200 gap) | wp.org + one-click + auto-update | drupal.org | in-app store, `occ app:enable` |
25+
| Admin | read side ✅ (`admin/`), write side impossible — each absence names a seam | the gold standard | strong | strong |
26+
| Identity | WebID / did:nostr / Bearer — protocol-grade | email+password | email+password | email+password, LDAP/SSO |
27+
| Protocol reach | Mastodon, Bluesky, Matrix, AP, JMAP, DAV×3, S3, remoteStorage, Micropub, oEmbed, WebFinger, nostr — one pod behind all | RSS + REST | similar | DAV family, some AP via app |
28+
29+
The architecture comparison flatters JSS: WordPress's hook soup is
30+
exactly what the #564 line forbids, and it's why WP plugins conflict and
31+
are a security tar pit. But architecture has never been why WordPress
32+
wins. **Distribution is.**
33+
34+
## The ecosystem map
35+
36+
Grouped by distance from what JSS actually is:
37+
38+
**Same square — personal data servers with a protocol identity**
39+
40+
| Project | Note |
41+
|---|---|
42+
| ATProto PDS (+ Tranquil, Cocoon) | closest live competitor for "PDS" mindshare; real momentum, genuinely easy self-hosting — but single-protocol |
43+
| Solid siblings (CSS, Inrupt ESS, NSS) | spec-complete, app-light, a decade of that; none has a plugin ecosystem — that is JSS's differentiator *within* Solid |
44+
| Nostr relays (strfry, nostream…) | event stores, no personal data plane; JSS embeds a relay as one plugin |
45+
| remoteStorage / 5apps | near-dormant; `remotestorage/` here may be among the more complete servers anywhere |
46+
| Peergos | strong E2E-crypto story, weak protocol-bridge story |
47+
48+
**Adjacent — self-hosted groupware/CMS**: Nextcloud (the giant),
49+
ownCloud/oCIS, Seafile; WordPress/Drupal on the publishing side. They
50+
win on distribution and end-user UI, not architecture.
51+
52+
**Adjacent — "run apps on your box" platforms**: Umbrel (the app-store
53+
UX bar), CasaOS/Cosmos (lowest-friction onboarding), YunoHost (best
54+
operator experience — built-in SSO is what the `api.isOperator` finding
55+
gestures at), Cloudron/Start9 (packaging-as-product), Sandstorm (the
56+
philosophical cousin — capability-secure, effectively frozen, no
57+
successor). Key structural difference: these run apps as **isolated
58+
containers side by side** — apps don't share data. JSS is the inverse.
59+
60+
**Adjacent — single-protocol servers people actually self-host**:
61+
Mastodon/GoToSocial, Matrix (Synapse/Conduit), Owncast, micro.blog.
62+
Each is one protocol and one silo. The pitch to exactly these users:
63+
*one* small process instead of five, one identity, one `backup/`.
64+
65+
## Why the square is empty (the graveyard)
66+
67+
It is not sparse because nobody noticed it. FreedomBox, Diaspora,
68+
Unhosted/remoteStorage, Sandstorm, arguably a decade of Solid itself —
69+
smart people kept entering this square and finding that technology was
70+
never the bottleneck. **Demand and distribution were.** Most people
71+
won't run a server; the ones who will already have opinions. An empty
72+
square can be an opportunity or a kill zone; this one has been both.
73+
74+
## What changed (why now is different)
75+
76+
1. **The concept has mainstream legs.** Bluesky made "PDS" a word.
77+
Nobody must explain *why* you'd want your own data server the way
78+
Diaspora had to in 2011.
79+
2. **The homelab wave built the rails.** Umbrel/CasaOS/YunoHost users
80+
already run boxes and browse app stores. The habit exists; be in the
81+
catalog.
82+
3. **The build cost collapsed.** What killed most graveyard projects
83+
was ecosystem starvation — years to twenty apps. This repo added
84+
eleven protocol implementations in a day, each ~one agent-session,
85+
findings included ([AGENT.md](./AGENT.md) is the contract that makes
86+
that repeatable). The historical moat — thousands of developer-years
87+
of plugins — deflates when plugins cost hours. This is the one
88+
structural trend running in our favor.
89+
90+
## The honest gaps (ours)
91+
92+
1. **Distribution** — no marketplace, no one-click hosting, no
93+
auto-update. 90% of why WordPress is WordPress. (#200 + the
94+
runtime-lifecycle seam in REPORT.md.)
95+
2. **End-user UI** — everything here is protocol surface. WP gives a
96+
human a website; Nextcloud gives them files; a pod gives them a URL.
97+
Solid's decade-old killer-app problem.
98+
3. **Identity UX** — WebID/bearer beats passwords technically and loses
99+
at onboarding every time.
100+
4. **Trust signals** — 0.0.x versioning; no third-party-plugin security
101+
story (and plugins can intercept each other today — NOTES.md #9).
102+
5. **Bodies** — one maintainer + agents vs. twenty-year communities.
103+
(But see "what changed", point 3.)
104+
105+
## The play
106+
107+
**Not** a WordPress/Nextcloud competitor. The realistic wedge, in order:
108+
109+
1. **Lead with the demo nobody else can run** — one pod, every
110+
protocol, live (`npm run serve`, front door `/admin/`). This is the
111+
asset; Solid-the-spec is not the pitch.
112+
2. **Ride existing networks' onboarding** — Bluesky PDS self-hosters
113+
and Nostr users are the two crowds already primed to run a personal
114+
server. Be the PDS that *also* does their calendar, files, mail.
115+
3. **Get into the catalogs** — one Umbrel/CasaOS/YunoHost app that
116+
replaces five. The rails exist; use them.
117+
4. **Close the self-description loop** — the four seams + `api.plugins`
118+
(REPORT.md's order of work), then a registry/marketplace story, so
119+
the ecosystem can grow and describe itself.
120+
5. **Keep the findings discipline.** The repo's real moat is not the 33
121+
plugins; it's the measured, evidence-per-claim method that produced
122+
them and can produce the next 33.
123+
124+
## Verdict
125+
126+
An uncrowded space with a high body count, entered at the first moment
127+
all three historical causes of death — no demand, no distribution, no
128+
ecosystem — are weakening at once. The technology position is genuinely
129+
strong and the ecosystem-growth cost just dropped by orders of
130+
magnitude. The execution risk lives almost entirely in distribution and
131+
onboarding, not in anything built in this repo. That's a real shot.

0 commit comments

Comments
 (0)