Dropping my post here to see if we can kick off discussion. What is an atproto repository? - The Book of Eli
But here’s real-world use case and I’d love to hear peoples’ takes on how we should handle this: we want to allow paid subscribers to see a creator’s VODs three days before they go live for the rest of the world. That includes likes and comments on this “unreleased” content.
The part that seems clearest to me: we can implement this by having a separate space for each video, owned by the creator:
at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22
The video itself would be at:
at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22/did:web:creator.example.com/place.stream.video/3mqumd5c5nf22
And then all the likes and comments can live there too:
at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22/did:web:fan.example.com/place.stream.like/3mqumeppy2z22
{
"$type": "place.stream.like",
"subject": "at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22/did:web:creator.example.com/place.stream.video/3mqumd5c5nf22"
}
at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22/did:web:fan.example.com/place.stream.vod.comment/3mqumfkzuv622
{
"$type": "place.stream.vod.comment",
"subject": "at://did:web:creator.example.com/space/place.stream.videoSpace/3mqumd5c5nf22/did:web:creator.example.com/place.stream.video/3mqumd5c5nf22",
"text": "I love this video!"
}
So far so good, all of this makes sense to me. Now the video needs to become public. So do all of the likes and comments. AFAICT, the recommended way to do this: leave the video in the space, but admit anyone who asks; it’s now a “public space” of sorts. I don’t love it for a few reasons:
- There’s overhead associated with spaces; it seems a shame to incur that overhead for content that is private for 3 days and then public for 10,000 years.
- We now need a new mechanism to advertise this public data on the public firehose so it may be discovered by apps listing public Streamplace VODs. Doable, but more conceptual complexity for anyone implementing this stuff.
- Spaces are apparently designed to scale to “millions” of users, but not hundreds of millions. The most liked MrBeast video on YouTube has about 57,000,000 likes, so we’re right up against the scaling boundary there.
- It should be possible to create a dashboard of all public Streamplace content prior to a single user signing into that dashboard. Do we have a pattern for anonymous access to a space? I guess the syncer could just mint itself a did:web identity and use that to get access to everything.
Perhaps not insurmountable, but it feels really weird and counterintuitive to be on the AT Protocol forums talking about all these hacks we’re gonna need to do to make data public. If only someone had invented a way for us to do that!
In my article I propose allowing me to sync spaces using the public sync mechanism. (As it happens, the aturi-record pairs themselves don’t know or care whether they’re organized into a MST and signed or deniably LtHashed and HMAC’d.) I’m cognizant of the fact we wouldn’t want this to happen accidentally – I could even imagine for some cases you might want a protocol-level guarantee that a particular space will never be made public. That’s fine!
TLDR: I’ve got a bunch of spaces full of public data, may I please publish them on the public firehose?