Atproto Spaces Alpha is nu live
Atproto Spaces, voorheen bekend als het "permissioned data protocol", is een nieuwe uitbreiding voor atproto die niet-publieke data mogelijk maakt. De alpha is nu officieel open. Hier lees je hoe je ermee kunt ontwikkelen en wat je kunt verwachten terwijl we werken naar de volledige release.
De grootste update van atproto sinds de lancering is nu beschikbaar als alpha waar je vanaf nu mee aan de slag kunt!
Dit project is al lang in ontwikkeling, wat blijkt uit de vele namen die het heeft gehad (eerst private data, daarna permissioned data, kortstondig buckets, en nu atproto spaces). Van vroege discussies op het forum en het eerste ontwikkelingsdagboek in februari tot het volledige voorstel: het ontwerp van het protocol is geëvolueerd door feedback, bijdragen en discussies binnen het ecosysteem. Dit is een enorme onderneming, niet alleen voor het Bluesky-team, maar voor de gehele Atmosphere.
Herinner je dat, door het ontwerp, alle data die momenteel op het protocol wordt opgeslagen openbaar is — elke post, elke follow, elke like, elke block. Al deze data wordt opgeslagen op een gedistribueerd netwerk van servers die door iedereen gehost kunnen worden, en die worden verzameld en opnieuw uitgezonden door een wereldwijde firehose waar iedereen op kan aansluiten. Dit maakt het mogelijk om grootschalige applicaties zoals Bluesky en Tangled te bouwen op een netwerk dat volledig open staat.
Er zijn echter functies en volledige producten die afhankelijk zijn van data die niet openbaar is. Instellingen, privé-bladwijzers, forums met variërend van tientallen tot miljoenen leden en publicatie-apps die alleen toegankelijk zijn via een abonnement, vereisen allemaal een datamodel dat niet volledig openbaar is.
Spaces, een nieuwe protocol-primitieve, biedt een manier om niet-publieke data op te slaan en te synchroniseren, terwijl de voordelen van atproto behouden blijven, zoals draagbare identiteit, interoperabele/remixbare data en permissieloze participatie.
Vandaag maken we de alpha beschikbaar met werkende code, gepubliceerde SDK's, een voorbeeldapp en zelfs een gehoste PDS waarop je een account kunt aanmaken en tegen kunt ontwikkelen. Dit is echt een alpha. Er zullen breaking changes zijn, en je zou er absoluut geen productiecode tegen moeten draaien.
Wat is een space?
Je kunt een atproto space zien als een miniatuur-atproto-netwerk dat afgeschermd kan worden, zodat alleen bepaalde mensen en applicaties toegang hebben tot de data die erin wordt gepubliceerd. Het klinkt misschien wat zwaar om te zeggen dat elke space een "mini-atproto" is, maar spaces zijn in werkelijkheid zeer lichtgewicht en hebben weinig overhead. Een space kan één enkel record bevatten met minimale overhead, of opschalen naar een miljard records.
Afgezien van de space zelf, zouden de zaken bekend moeten aanvoelen. Gebruikers hebben DIDs. Gebruikers hosten hun data in hun repositories. Records zijn JSON en worden gedefinieerd door Lexicons. Applicaties synchroniseren repos en bouwen weergaven van de data.
Toegang tot een space wordt beheerd door een space authority, wat simpelweg een DID is zoals elk ander account (en in sommige gevallen is dit ook daadwerkelijk je eigen account!). De space authority bepaalt welke andere DIDs toegang hebben tot de space. Records bevinden zich in per-space gemachtigde repos op de PDS van de auteur.
Het is belangrijk om te onthouden dat spaces toegangscontrole bieden, geen vertrouwelijkheid. De data in een space is leesbaar voor elke gebruiker of applicatie met toegang tot die space; het is niet versleuteld.
Spaces zijn een zeer flexibele primitieve en het scala aan toepassingen is bewust breed:
- Kleine spaces: kunnen precies één lid bevatten en zijn nuttig voor het opslaan van data zoals instellingen, concepten, bladwijzers en andere privédata die een app wil opslaan.
- Gated content: zoals een uitgever die een publicatie wil distribueren die alleen toegankelijk is via een abonnement.
- Gedeelde sociale context: dit is waar spaces echt uitblinken en waarvoor ze in zekere zin zijn ontworpen. De grootste spaces zullen gemeenschappen zijn die kunnen groeien tot miljoenen deelnemers.
Het synchronisatieprotocol voor spacedata is aanzienlijk lichter en biedt faciliteiten voor real-time synchronisatie. Dit komt omdat er, in tegenstelling tot het publieke broadcast-protocol, geen concept van een relay bestaat voor data die in een space is opgeslagen. Voor publieke data helpt de relay applicaties om toegang te krijgen tot alle data in het hele netwerk. Voor spaces is het echter vaak niet wenselijk om content opnieuw uit te zenden. Applicaties synchroniseren spacedata rechtstreeks van PDS-hosts.
Een gehoste PDS voor experimenten
Als je het protocol wilt testen zonder zelf infrastructuur te draaien, hebben we een PDS voor je gehost die we up-to-date houden met de nieuwste wijzigingen.
Ga naar je BPS-account voor een uitnodigingscode en een link naar de alpha PDS.
Dit is een gedeelde sandbox en we zijn van plan deze bruikbaar te houden. Als je moderatieproblemen veroorzaakt, misbruik maakt van het netwerk of de PDS probeert te gebruiken voor andere doeleinden dan het experimenteren met spaces, word je permanent verbannen uit de alpha.
Houd er rekening mee dat de data die in de PDS wordt opgeslagen noch permanent noch stabiel is. Het datamodel zal veranderen en we kunnen zelfs alles zonder waarschuwing verwijderen. De PDS als geheel zal worden verwijderd na de alpha.
We zijn van plan de gehoste PDS en SDK's op donderdagen bij te werken. Wij plaatsen wijzigingen in de aankondigingsthread op atmosphere.community; we raden aan je hierop te abonneren.
Een PDS draaien die Spaces ondersteunt
Als je je eigen PDS wilt draaien, onderhouden we een getagde Docker-image op ghcr.io/bluesky-social/atproto:pds-spaces-alpha met ondersteuning voor spaces. Deze image is compatibel met de referentie PDS-distributie en vereist geen nieuwe configuratie.
LET OP: DIT IS ALPHA-SOFTWARE. GEBRUIK DIT NIET IN PRODUCTIE. Er zullen breaking changes optreden en databaseschema's kunnen veranderen zonder schone migraties. We raden sterk af om je echte accounts naar deze versie te migreren. Verwacht niet dat je naadloos tussen versies kunt upgraden.
Wel moedigen we je aan om de nieuwe PDS met testdata te gebruiken. Verken spaces en de soorten applicaties die je ermee kunt bouwen. Meld bugs en laat ons weten of iets anders werkt dan je had verwacht.
We hebben al een paar projecten in het ecosysteem gezien die zijn begonnen met het implementeren van de voorgestelde specificatie:
- ZDS: een PDS geschreven in de programmeertaal Zig.
- atproto-crates PDS: een Rust PDS.
- rsky PDS: een andere Rust PDS, beheerd door Blacksky.
- HappyView: een AppView-framework.
Echte protocollen hebben veel interopererende implementaties, en het is geweldig om te zien dat het ecosysteem hierin het voortouw neemt.
Voorbeeldapp en alpha SDK
Er draait een voorbeeldapp op https://bulletin.my. Deze app stelt je in staat om een bulletinboard te hosten (als een space!) waarop je mutuals briefjes kunnen achterlaten. Alleen je volgers kunnen je bord zien. De code is beschikbaar op https://github.com/bluesky-social/bulletin. Draai het lokaal, of fork het en remix het tot iets nieuws! Als je een eigen PDS-implementatie hebt, probeer dan in te loggen om te zien of alles naar behoren werkt.
Om dit te ondersteunen, hebben we de TypeScript @atproto-pakketten uitgebracht als alpha snapshot-versies. Deze kunnen worden geïnstalleerd met de alpha-tag. Bekijk de bulletin-repo om ze in actie te zien.
Het voorstel en de code
Als je dieper in het protocol wilt duiken, is de nieuwste versie van de protocolspecificatie te vinden in de proposals repo. Als je werkt aan je eigen implementatie van atproto spaces, is dit het centrale punt voor samenwerking. We houden het voorstel up-to-date met de huidige referentie-implementatie. Als je ambiguïteiten vindt of punten waar de implementatie en het voorstel uiteenlopen, open dan een issue.
De referentie-implementatie is te vinden op de atproto spaces branch van de atproto repo. Deze branch is in actieve ontwikkeling en kan tijdelijk afwijken van de gepubliceerde pakketten en PDS.
Onthoud: dit is een alpha
Zoals al meerdere malen vermeld, moet je rekening houden met wijzigingen terwijl we de code verder ontwikkelen. Specifiek betekent dit:
- Beveiliging: De code is nog niet onderworpen aan een zorgvuldige security-review. Upload geen gevoelige informatie. Niet die van jezelf, en zeker niet die van anderen.
- Back-ups: We maken geen back-ups en we kunnen destructieve datamigraties uitvoeren. Upload geen content die je niet bereid bent te verliezen. Er is geen herstelmogelijkheid.
- Levensduur: De alpha PDS verdwijnt aan het einde van de alpha-fase. Accounts hierop zijn geen accounts waar anderen op moeten vertrouwen. Verwijs geen niet-ontwikkelaars naar deze PDS.
- Ontwerp: Het protocolontwerp, de SDK's en het databaseschema zijn niet definitief. Alles wat je bouwt, zal waarschijnlijk moeten worden herzien.
Hoe begin je met het testen van atproto spaces?
We zullen gedurende de herfst blijven itereren en tooling bouwen, met als doel later dit jaar te lanceren. Volg de aankondigingspost in het Atmosphere Community-forum voor updates over nieuwe builds, die we plannen voor de donderdagen.
Voel je vrij om apps te bouwen met testdata (geen productiegegevens) tegen de gehoste PDS. Of host je eigen PDS — gebruik hiervoor de referentie-implementatie of een van de door de community beheerde versies. Draai de voorbeeldapp of bouw je eigen app. Meld problemen waar je ze tegenkomt.
We zijn enthousiast over de geheel nieuwe klasse applicaties die atproto spaces mogelijk maakt en kijken ernaar uit dat ontwikkelaars met de code aan de slag gaan.
Groetjes,