One of a number of take-aways from #ATmosphereConf —
I felt like Paul Frazee (from Bluesky Org) was encouraging people deploy their own relays.
And, to think of the Bluesky Firehose Relay of everything — as a temporary thing to use, when first developing your app or platform. And then later, to deploy your own relay.
what does it mean to run a relay?
The short answer is — it depends on the application or platform the developer is creating.
The long answer is —
(I don't know how familiar you are with Bluesky / ATProto, so I might be explaining stuff you already know.)
User data on Bluesky is stored in a PDS (personal data server).
At least currently, most applications don't get data directly from the PDSes.
(Not even for "hydrating" at-uri.)
New data in a PDS goes to a Relay — and the Relay broadcasts it to everyone who is listensing. Including applications.
...
The Relay the Bluesky team created has certain API end-points that work a certain way.
Ex: path "/xrpc/com.atproto.sync.subscribeRepos" opens a web-socket and outputs CBOR, etc.
But — alternative APIs have been tried out, too. Such as outputting JSON rather than CBOR.
...
Someone standing up their own Relay could decide to have the "/xrpc/com.atproto.sync.subscribeRepos" API end-point ooutputting CBOR over a web-socket (just like the Bluesky Firehose Relay).
Or something outputting JSON.
Or something completely different.
...
Also, where the Bluesky Firehose Relay receives data from ALL KNOWN PDSes — someone else's Relay does not have to do that — and could decide to receive (new) data from only a subset of PDSes.
In fact, that (the subset) seems to be what is common currently.
...
I suppose the key feature of the Relay is that it is something anyone can listen to — and receive new data from the PDSes that participate in that Relay.
What API end-point is used is up to the developer. Whether it is CBOR, JSON, or something else is up to the developer.
And all the questions of what PDSes are included are also up to the developer.