Tue, Sep 12, 2023
- Aaron Goldman12:47I assume no one is still seeing the outage
- shreyan13:04yup everything is good now
- Aaron Goldman15:44
I get questions sometimes about the
.car
files.
If I respond with this python script is it more clear what a car file is?12345678910111213141516171819202122232425262728293031
# pip install multiformats # pip install cbor2 import multiformats import cbor2 import sys # # usage # > cat something.car | python3 car_view.py # CAR file format # | length | Header | # | length | CID | block | # ... # | length | CID | block | car_bytes = sys.stdin.buffer.read() # read the car file from stdin length, _, rest = multiformats.varint.decode_raw(car_bytes) # file starts with the header length varint head = cbor2.loads(rest[:length]) # read the header CBOR object {'roots': [CID], 'version': 1} rest = rest[length:] # move up the pointer print(head) while rest: # | length | CID | block | length, _, rest = multiformats.varint.decode_raw(rest) # read the block length varint cid_and_block = rest[:length] cid = multiformats.CID.decode(cid_and_block[:36]) # CID first 36 bytes block = cid_and_block[36:] # block rest bytes obj = cbor2.loads(block) if cid.codec.name == "dag-cbor" else block rest = rest[length:] # move up the pointer print(cid.encode(base="base16"), obj)
- 19:21@marciapalmeiras2:matrix.org joined the room
- 19:22@marciapalmeiras2:matrix.org left the room
- xb5krnf297
- Aaron Goldman21:15endpoints like
https://bsky.social/xrpc/com.atproto.sync.getRepo?did=did:plc:toxy3kpelhv5gwubytayrsbw
return aapplication/vnd.ipld.car
but that is a binary file so you can't view it in the browser. - 21:16
In reply to this message
If you wan't to understand the repo you need to understand the format that we transport them in. Wed, Sep 13, 2023
- 05:09@laurin.1212118914:matrix.org joined the room
- 05:09@laurin.1212118914:matrix.org left the room
- 08:50Ricardo joined the room
- nighthaven09:02Hello, again.
- 09:03nighthaven changed their profile picture
- 11:38gnunesm joined the room
- nighthaven17:06Is this channel still up and running? Or have users moved to the APT Toucher channel on Discord?
- 🦋17:06Hi Not sure whether this is the right place to ask but how do you delete your published custom feed from bsky?
- Aaron Goldman19:08I would say we are still running and a good place for questions about the protocol and data structures. APT Toucher on discord is better for questions specific to the PDS implementation and it's API
- 21:47@literallyme:matrix.org left the room
Thu, Sep 14, 2023
- 06:41@cyberbiopunk:matrix.org left the room
- 🦋07:46Does anyone have a link to that discord?
- Aaron Goldman
- 08:20Also if you know of any local meetups let us know so we can add it to the community groups page
- 08:21Or if you want to start one in your city 😈
- 09:16@farribeiro:matrix.org left the room
- 15:12@sterence:sleeby.cafe left the room
- 17:08sinclair_abbya joined the room
- 17:30@s1mple008:matrix.org joined the room
- 17:34@s1mple008:matrix.org left the room
- 22:20@softinio:matrix.org left the room
Sat, Sep 16, 2023
- 08:15alexanderniki changed their profile picture
- Marshal10:22
Hi! I bring awesome news 🙃 Python SDK has been updated! Added
update_params
to keep the cursor of firehose up to date, export and import of session string to deal with rate limit v3, ability to passbase_uri
to firehose client, and updated lexicon!- Release notes: https://github.com/MarshalX/atproto/releases/tag/v0.0.28
- Example of session export and import: https://atproto.blue/en/latest/xrpc_clients/client.html#atproto.xrpc_client.client.client.Client.export_session_string
- Example of how to use
update_params
: https://github.com/MarshalX/bluesky-feed-generator/commit/3aa6428f77769bf83e036d5e43f48a0e4a5a107a
- 10:23And if you missed SDK recently got an incredible performance boost thanks to Rust 😅 https://github.com/MarshalX/atproto/releases/tag/v0.0.26
- 10:26
In reply to this message
Feel free to use https://github.com/MarshalX/python-libipld to decode CAR files with good performance ✌️ - shreyan16:56
In reply to this message
It's worth noting that theprev
field still exists if you wish to create a chain of commits, but is completely optional now - 16:56Although it will be mostly unused and is primarily retained for backwards compatibility
- 23:24Remember#me changed their display name to The0x7c26
- 23:45@0x7c26:hashi.sbs changed their profile picture
Sun, Sep 17, 2023
- 01:42@0x7c26:hashi.sbs left the room
- 09:56@laurin.1212118914:matrix.org joined the room
- 09:57@laurin.1212118914:matrix.org left the room
- 10:04chrishable1119 joined the room
- 16:30@neilalexander:matrix.org left the room
Mon, Sep 18, 2023
- 11:56Karl Abbott changed their display name to Karl Abbott (Away)
Tue, Sep 19, 2023
- Aaron Goldman00:38
1234567891011
PDS did count delta count sum bytes first last | https://bsky.social | 1,093,014 | 1,219,035 | 840,591,800 | 2022-11-17T00:35:16.391Z | 2023-09-19T05:22:38.013Z | | https://uwu | 11,714 | 11,714 | 86,648,128 | 2023-05-30T06:32:05.019Z | 2023-06-30T18:52:10.965Z | | https://stems.social | 5,044 | 5,897 | 4,048,359 | 2023-04-16T09:28:40.041Z | 2023-07-05T17:31:28.795Z | | https://boobee.blue | 1,645 | 3,073 | 2,177,336 | 2023-03-12T15:11:56.675Z | 2023-09-19T04:55:53.900Z | | localhost:4989 | 95 | 95 | 47,786 | 2023-02-21T19:31:07.150Z | 2023-09-10T01:56:38.643Z | | https://atproto.forza7.org | 53 | 63 | 43,612 | 2023-04-13T14:10:14.176Z | 2023-09-11T11:09:06.646Z | | https://bluesky.nokotaro.com | 54 | 58 | 40,637 | 2023-05-27T01:42:52.573Z | 2023-08-23T13:24:34.095Z | | http://localhost:2583 | 40 | 40 | 26,727 | 2023-04-13T23:57:47.589Z | 2023-05-22T14:26:37.835Z | | https://bsky.syui.ai | 24 | 27 | 18,208 | 2023-03-25T01:49:54.257Z | 2023-08-09T17:10:21.538Z | | https://redocean.one | 22 | 23 | 15,785 | 2023-06-14T04:59:26.525Z | 2023-08-31T03:39:17.387Z |
How the federation vs centralization is going.
- shreyan00:40https://uwu seems set to become a major player in the decentralized social media space
- jcon00:41still betting onlocalhost:4989
- 21:14xormetric changed their profile picture
Wed, Sep 20, 2023
- 04:58Karl Abbott (Away) changed their display name to Karl Abbott
- 05:48merkurov joined the room
- 10:10Karl Abbott changed their display name to Karl Abbott (Away Until 4-October-2023)
- foxlet15:51Has federation been enabled yet?
- shreyan17:25Nope
Thu, Sep 21, 2023
- Aer0xander06:38Could you already run your own PDS already in production before federation is live, and federate it later?
- Aaron Goldman09:52You can and https://stems.social dose.
- 14:11Nad changed their display name to Nad // away
Fri, Sep 22, 2023
- 02:13sailormikey joined the room
- sailormikey02:20Hello, I'm new to the server so bare with me here. So I have a question. I have looked into this blog https://atproto.com/blog/create-post , and my question is, in the section "Image Embeds", do you know what's the HTTP REST URL and JSON body to upload image embeds? See, I am using Make (formally Integromat) to automaticlly post to Bluesky, I have been able to post a simple status page to Bluesky using Make.
- shreyan02:22I think that's covered in that section, but it's
com.atproto.repo.uploadBlob
- sailormikey02:24
In reply to this message
and if successful, would the output JSON look something like this?
12345678
{ "$type": "blob", "ref": { "$link": "bafkreibabalobzn6cd366ukcsjycp4yymjymgfxcv6xczmlgpemzkz3cfa" }, "mimeType": "image/png", "size": 760898 }
(edited) - shreyan02:24Yep
- 02:26If you don't embed the image within a post though, after a little bit the server will clean it up and delete images which aren't attached to posts
- sailormikey02:31Message deleted
- sailormikey02:35oh ok, I almost forgot, can this URL accept the content type
multipart/form-data
? - 07:30@wahidislamlinad:matrix.org changed their profile picture
- 09:06Midou changed their display name to Midou (Old)
Sat, Sep 23, 2023
- 06:16@wahidislamlinad:matrix.org removed their profile picture
- 06:19@wahidislamlinad:matrix.org removed their display name (linad)
- 06:20@wahidislamlinad:matrix.org left the room
Sun, Sep 24, 2023
- 08:26@srid:matrix.org left the room
- 09:31@morpheus:matrix.gridp7.de left the room
- 13:27@lily:lilysthings.org joined the room
- @lily:lilysthings.org13:32I'm running a PDS on the dev sandbox right now and it's running with sqlite and I was wondering if there's a way to migrate it to postgres without losing data
- 13:42Derrick Hammer joined the room
- Derrick Hammer13:49Hello, I am digging into the AT protocol and im interested to understand how the personal repo data is expected to be stored. I am researching how this data could be computed client side and uploaded to the sia storage network which im using blake3 to identify data. I can see AT is designed around the server being trusted to an extent, so im trying to understand how some of the protocol can be translated to be fully client side. I see references to CAR/IPLD data which makes me concerned that recomputing things might be too much effort in browser with lots of data? Thanks!(edited)
- 13:58red ⚡️ joined the room
Mon, Sep 25, 2023
- 01:57Nad // away changed their display name to Nad
- 15:07ruza changed their profile picture
Tue, Sep 26, 2023
- 12:44Kaisa changed their profile picture
- Ricardo13:04
In reply to this message
this code works, Linus2punkt0/bluesky-crossposter - GitHub https://github.com/Linus2punkt0/bluesky-crossposter - 13:07
today I dropped this on the Chrome store
It's not perfect, still have to iron some things but it's a working Bluesky client for Chrome like browsers.
it can use (or not) the URL of any given tab you open the extension from and use OpenGraph data to publish along with user input text
https://chrome.google.com/webstore/detail/ograph-bluesky-poster/kiddamcckmefboigpmhdemfccdbfmago/
Wed, Sep 27, 2023
- Aaron Goldman00:04Cool 😎
- 04:07@cesvlc:matrix.org joined the room
- 04:08@cesvlc:matrix.org left the room
- 04:30Midou (Old) changed their display name to Midou (Moved to envs.net, same username. Please invite me to another room if it seems necessary, and if i do happen to be admin somewhere ping me. 1 week left before deactivating my account.)
- 04:43@frabrunelle:matrix.org left the room
- 04:50Midou (Moved to envs.net, same username. Please invite me to another room if it seems necessary, and if i do happen to be admin somewhere ping me. 1 week left before deactivating my account.) changed their display name to Midou (Moved to envs.net, same username. Please invite me to another room if it seems necessary, and if i do happen to be admin somewhere ping me.)
Thu, Sep 28, 2023
- sailormikey02:43Ok, I tried using the upload to bluesky, and sent a POST request to Bluesky post, that worked, but apparently the media came out blank.
- 02:43Any idea what I did wrong? is it a chunked upload rather than a simple upload?
- Ågent
- shreyan
- 17:20rettetdemdativ set a profile picture
Fri, Sep 29, 2023
- 10:18kait joined the room
- 10:19kait changed their profile picture
- 10:23tomo changed their display name to kait
- 14:40@tommy_pacs:matrix.org joined the room
- 15:13jamesog joined the room
- 19:46@lily:lilysthings.org changed their profile picture
Sat, Sep 30, 2023
- 14:49Naafiyan Ahmed joined the room
- Naafiyan Ahmed14:56Hey all, I was wondering if anyone had experience with the pds server caching mechanisms as well as scaling for users on a global scale? I'm interested in exploring the possibility of cross-posts being marked with a TTL after which the pds serverA's cache entry would be invalidated and thus have to refetch from pds serverB. I could also be understanding the architecture completely wrong(edited)
- @tommy_pacs:matrix.org18:44Message deleted by Matthew
- 18:53@tommy_pacs:matrix.org left the room
Sun, Oct 1, 2023
- 00:53Keagan Luttrell joined the room
- 12:57tom (@tom@mstdn.axtch.net) joined the room
- 15:26ball stretcher joined the room
- 18:41ball stretcher changed their profile picture
- 18:41ball stretcher changed their profile picture
Mon, Oct 2, 2023
- 02:14Max (@ikymax:matrix.org) joined the room
- 02:21@temp4096:matrix.org joined the room
- 21:17mulligan_ott joined the room
Tue, Oct 3, 2023
- 04:44@temp4096:matrix.org left the room
- 10:43Igor Goryachev joined the room
- 12:33Богдан Зажигин changed their display name to богдан зажигин
- 12:33богдан зажигин changed their profile picture
- 13:50stillerbenjamin joined the room
- 13:50stillerbenjamin left the room
- 13:55stillerbenjamin joined the room
- 13:56stillerbenjamin left the room
- 13:56stillerbenjamin joined the room
- 14:07stillerbenjamin set a profile picture
- stillerbenjamin14:54Does anyone have an invitation code left? Please drop me a line. [...]
- Ricardo14:59stillerbenjamin i have
- 15:01@maxlange:matrix.org left the room
- 15:58@dennethan:matrix.org left the room
- damon/19:54Do any of you guys know how Atproto will handle de-federating?
- @lily:lilysthings.org20:00afaik there is no defederation in it
- ball stretcher20:44yeah not sure its currently possible
- Aaron Goldman21:22Best to split the question. Who is allowed to download the repos? Who's repos are you willing to download? The first mostly protects from a PDS getting a giant bandwidth bill and the second storing questionable content.
Wed, Oct 4, 2023
- 07:13Karl Abbott (Away Until 4-October-2023) changed their display name to Karl Abbott
- damon/10:01Regarding the first question, it is done in an allow-list manner?
- Aaron Goldman10:31When a repo on a PDS follows a repo the PDS can look up the PDS of the newly followed repo. You could imagine just adding all those PDSs to your PDSs sync list but it's probably wise to just add them to a list for the PDS operator to look at and approve.
Thu, Oct 5, 2023
- Eidolon00:14In practice, how expensive is it to subscribe to the full firehose via
com.atproto.sync.subscribeRepos
? i.e. for feed generators - shreyan00:24not very. if you're running a feed generator that's the most lightweight way to do it.
- 02:26@laurin.1212118914:matrix.org joined the room
- 02:27@laurin.1212118914:matrix.org left the room
- 13:07Karl Abbott changed their display name to Karl Abbott (Away until 9 October 2023)
- Eidolon19:01I guess it depends on the billing of whatever hosting you're using for your feed generator, if ingress traffic costs you... but it does seem like that would become increasingly inaccessible to consume from right?
- shreyan19:05I think they're aiming to make it easier to get a lighter stream by filtering for specific things you want, but no promises
Fri, Oct 6, 2023
- 11:44@jadedctrl:tedomum.net left the room
Sat, Oct 7, 2023
- magicofazi01:34How is At Protocol different than Matrix? Isn’t matrix theoretically capable of broadcast based social?
- 02:34svin in the matrix (Old) changed their display name to svin matrixman
- 02:34svin matrixman changed their profile picture
- 08:40Fatih joined the room
- 08:46Fatih set a profile picture
- 08:46fatihsvr changed their display name to Fatih
- Fatih08:59Hi All,
Does anyone of you know how long it takes to respond tothe developer formmentioned on GitHub? Thanks. - Aaron Goldman10:14There is no real "normal" time. They let in a few thousand, performance of the API tanks, they fix the scale issue, then let in a few thousand more. 🤷♂️
- Eidolon10:40
In reply to this message
In theory yes. ATProto allows migration of user data between PDSes, which is fundamentally different from Matrix's current storage model for rooms and users. The API layer between PDS, BGS and Appview servers is a much more constrained subset of HTTP called XRPC that could theoretically communicate over any transport, whereas Matrix embraces HTTP. - magicofazi13:21
In reply to this message
Couldn’t you store user data and rooms and replicate the rooms. Basically use rooms as a PDS - Eidolon13:22yes
- magicofazi13:24I like the XRPC element of Bluesky though
Sun, Oct 8, 2023
- 02:43lankalanka123 joined the room
- 04:15shuntingyard joined the room
Mon, Oct 9, 2023
- 07:49Karl Abbott (Away until 9 October 2023) changed their display name to Karl Abbott
- 15:20@kabbott:element.io changed their profile picture
Wed, Oct 11, 2023
- 07:08emre joined the room
- 11:04@cauanzorzenon:matrix.org left the room
- 13:33jimpick joined the room
Thu, Oct 12, 2023
- Chris Lace18:00wth is Graysky, is that a beef with BlueSky ?
- sirodoht
- Chris Lace
- shreyan20:26???
- Fatih22:18
In reply to this message
After 5 days, I received my invitation code. I think that's a pretty reasonable amount of time. - Fatih
Fri, Oct 13, 2023
- 03:52kate_nym changed their display name to kate_nym (OOO till Oct 25)
- 11:36@itechgeek:matrix.org left the room
- 12:03Alex (@alsivx:mozilla.org) changed their profile picture
- Aaron Goldman14:09yet
- 15:10Pablo Dorado changed their display name to Pablo Dorado | OOO til. 16th Oct
Sat, Oct 14, 2023
- 03:11@laurin.1212118914:matrix.org joined the room
- 03:12@laurin.1212118914:matrix.org left the room
Sun, Oct 15, 2023
- 06:40@philhug:matrix.org joined the room
- 07:08Nekron joined the room
- 18:19Pablo Dorado | OOO til. 16th Oct changed their display name to Pablo Dorado
Mon, Oct 16, 2023
- 18:43tolo set a profile picture
- 18:44tolo changed their profile picture
- 19:34@plausibledenial:matrix.org left the room
Thu, Oct 19, 2023
- 06:43alperenalb changed their profile picture
- 07:18@sdfman:matrix.org joined the room
- 07:18@sdfman:matrix.org left the room
- 15:19Nil Kraunis removed their profile picture
Fri, Oct 20, 2023
- 12:01@timbray:matrix.org left the room
- 13:18@karl_klammer:matrix.org joined the room
- 13:21@karl_klammer:matrix.org left the room
Sat, Oct 21, 2023
- 13:36Ondřej Holan joined the room
Sun, Oct 22, 2023
- 03:33@oliver.falvai:oliverfalvai.xyz left the room
- 17:06Nick changed their profile picture
Mon, Oct 23, 2023
- 00:43@ewan:gilchrist.scot left the room
- 09:29Quentin Dommerc joined the room
- damon/
- 10:40Can anyone verify this?
- shreyan11:07where is this from? sounds completely false
- Aaron Goldman11:10
In reply to this message
If you want to understand the timeline algorithm I would probably start with https://github.com/bluesky-social/atproto/blob/main/packages/bsky/src/api/app/bsky/feed/getTimeline.ts - shreyan11:12yep, it's all pretty straightforward, non-proprietary and definitely does not use location or other such information
- Aaron Goldman11:22As for proprietary timeline ranking algorithms. The design goal is very much to support such things. AtProto will not and cannot come up with the "right" timeline ranking algorithm. User need the fixability to choose a ranking algorithm and change that choice at any time. The open source ranking algorithms that anyone can run themselves and the proprietary timeline ranking algorithms that must be run on the algorithm owner's servers are competing in the same market for timeline ranking. But unlike Google vs Bing where you have to pick index and algorithm together the hope with AtProto is that the BGS indexers can do the expensive indexing and many timeline ranking algorithms can share the cost by paying a BGS for access to the indexes rather than having to maintain their own. If we can share the cost of the index then hopefully, we get far more innovation and competition in ranking algorithms. Open ranking, proprietary ranking may the best algorithms servive. https://blueskyweb.xyz/blog/5-5-2023-federation-architecture
- damon/11:24
In reply to this message
A Mastodon user that states they are a Data Scientist and knows how this stuff works - 12:16workbear joined the room
- Aer0xander13:06How could I actually edit the alsoKnownAs list (Typescript API/XRPC)? Plus is it an actual list and not a string, so it won't start breaking other code when I make it a list?
- shreyan13:09you would need direct access to your recovery key for that
- Aer0xander13:17
In reply to this message
This isn't possible yet from what I've seen? I suppose I could just give users control over their own keys (as in my app they'll likely have a crypto wallet/private-public keypair anyway) - shreyan13:17yeah
- 13:18eventually the plan is for everyone to have their own, and if you provide one on account creation then you can own it, but by default, you do not
- 13:18(at least, that's how it is right now)
- Aer0xander13:19Ok thanks, I'll look into it!
- shreyan13:20just be prepared for potential breakage! :)
- 13:44@lexx:nitro.chat left the room
- Aaron Goldman18:13
In reply to this message
You can look at the "alsoKnownAs" list for your DID.
https://plc.directory/did:plc:2zlzmv2xujgpohsvay3xhpbr/log/audit - 18:15looks like you don't have a key you control in your "rotationKeys" list. You would need to set on with your PDS first. then you will be able to edit your DID Document with the directory.
- Aaron Goldman18:22
I will say the fact that 1,817,104
did:plc
s have12
"rotationKeys": ["did:key:zQ3shhCGUqDKjStzuDxPkTxN6ujddP4RkEKJJouJGRRkaLGbg", "did:key:zQ3shpKnbdPx3g3CmPf5cRVTPe1HtSwVn5ish3wSnDPQCbLJK"],
1,817,104 DIDs with the same secret keys feels weird to me.
- 18:25"Why have a nonce?" I said "The secret keys will all be unique" I said Note to self: include a nonce somebody will make 1,817,104 DID with the same keys 🤦
Tue, Oct 24, 2023
- 02:14@leohoo_sdu:matrix.org left the room
- 18:52kate_nym (OOO till Oct 25) changed their display name to kate_nym
- 18:52kate_nym set a profile picture
- 19:13Thomas Reggi changed their display name to thomas (they/them)
Wed, Oct 25, 2023
- 04:05Administrator changed the server ACLs for this room.
- 12:03Skyler Hawthorne changed their profile picture
- 19:52@marciosantos2391:matrix.org joined the room
- 19:52@marciosantos2391:matrix.org left the room
Thu, Oct 26, 2023
- 05:40joelotter joined the room
- joelotter05:41Hi all, curious about ATproto URIs and resolving them. My understanding is that e.g.
at://joelotter.com/app.bsky.feed.post/3kciw4eeuzc2x
(handle instead of DID) is a valid URI. However, doing a getPostThread against bluesky gives a not-found - is it on me to resolve that handle to a did myself? - Aaron Goldman11:23
In reply to this message
Looks like the current implementation looks at the local PDS database so it would only find the thread if it is synced to the PDS.
To decide if a PDS should pull the post from
joelotter.com
's PDS would be a matter for the local PDSs allow/deny list of PDSs it is willing to resolve content from. - joelotter11:26Hmm, I'm exclusively working with the main Bluesky instance here
- Aaron Goldman11:28Dose the did:plc version of the api call work?
- joelotter11:28It does!
- Aaron Goldman11:28hmm that may be a bug
- joelotter11:30It sounds like I ought to handle this properly anyway for the future case with multiple PDSs, what's the recommended approach for that? Should I be actually hitting DNS to find the DID for that handle or is there a way to do it through ATproto?
- 11:33For context I'm trying to convert from a web URL to an ATP URI in a consistent way :)
- Aaron Goldman11:46If you get a handle you should look up the PDS that is in the DID Document. If the PDS is on the denylist the give an error that you can't resolve because $PDS is in denylist. Otherwise you should resolve
- shreyan12:28
In reply to this message
you can use https://api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=(edited) - 12:30you can also use the dns method, and if it doesn't find it, https://domain/.well-known/atproto-did
- 12:44@parfait:filly.chat left the room
- joelotter13:25thanks all!
- 14:01@leon:vmst.io left the room
- 14:35@sterkte:matrix.org removed their display name (sterkte)
- 14:35@sterkte:matrix.org left the room
- 15:33@courv:matrix.org joined the room
- 16:11@courv:matrix.org left the room
Fri, Oct 27, 2023
- 03:05@kaorit:matrix.org left the room
Sat, Oct 28, 2023
- Elementeer05:59Is Bluesky and Nostr using similiar tech or completely separate?
- joelotter10:01Totally unrelated AFAIK
- Aaron Goldman11:18
In reply to this message
Depends how far you zoom in.
Both are identifying blocks by their Sha256 and controllers by Ed25519 signatures.
So both are Authenticated Data protocols.Nostr events stand on their own. One object one signature.
AtProto is organized as repos. Each comment adds/removes objects from the repo that is a (path, value) store like a git repo.
Nostr allows multiple relay servers to store and forward the events. This means that you have eventually consistently depending on whether that relay has that event.
Bluesky has the PDS(personal data server) that has the full repo and is the authoritative source of "latest" so a strict consistent update is possible even across objects in the repo.
Nostr is more about simple and do what you want. This gives them robustness.
AtProto is more about correct atomic updates. This requires a source of truth to be highly available. Sun, Oct 29, 2023
- Elementeer
- Aaron Goldman
- 19:10cities joined the room
- 20:53Andrew Flynn changed their display name to stevie komputer
- 20:54stevie komputer changed their profile picture
Mon, Oct 30, 2023
- erlend_sh08:06
Would you kindly expand a bit on what it means to be ‘more about correct atomic update’? Are we talking atomic-clock kind of correctness, or is this more about the atomicity (self-contained, composable etc.) of each update?
- Aaron Goldman09:34
In reply to this message
I find this site explains it well but does assume a lot of background knowledge. https://jepsen.io/consistency - Aaron Goldman09:43By atomic update I mean transition from one completely set of records to a new consistent set of records. There are no torn writes. In a file system it is possible to update one document without updating another. Document A references Document B page 10 but you see a 5 page long older version. An atomic update like git could update both documents without any time when one was newer. They update together or not at all as a single atom of state. If you check for international consistency before each commit then you get atomic and consistent. If you save to durable media before each commit you get durability. If you allow independent writing without having to re-read the state inbetween you get isolated updates. Together we call this an ACID database. Atomicity, Consistency, Isolation, and Durability
- 09:45AtProto is at base a way to make ACID things Nostr is at base a way to make Available things. But it is a bit of a subtle detail since Bluesky doesn't use ACID properties and could have been built on Nostr.
- 09:50@fudan10u:matrix.org left the room
- joelotter10:42Is it still fair to say that Nostr is a decentralised protocol while ATproto is a federated one? Or is that implementation specific/no longer the case/never was the case
- @lily:lilysthings.org10:47I don't even consider ATproto federated because of how federation seems to rely on a central relay.
- joelotter10:48I would definitely call Mastodon/ActivityPub federated and there's no central relay there as far as I know?
- @lily:lilysthings.org10:49Activitypub has no central relay
- joelotter10:49So you wouldn't call Mastodon federated?
- @lily:lilysthings.org10:50I'd call activitypub federated
- 10:50I wouldn't call atproto
- 10:51
Federation should work with no central server. if the relay goes down then atproto federation doesn't work.
- joelotter10:51ahhh gotcha, i misunderstood your first message
- whyrusleeping10:52You can use many different relays, a “single central relay” is somewhat misleading
- 10:53There will tend towards being a small number of relays, its a lot of data and bandwidth to process
- 10:54But you can run a smaller slice of the network if you like, or even operate without relays, and go directly pds to pds ssb style
- joelotter10:57sounds a little like mastodon's relays, though to be honest i've never actually seen those used in practice
- @lily:lilysthings.org10:58I've used relays
- 10:59They're more for just dumping content onto tiny like single person instances until the people on it follow enough people for federation alone can get enough content
- joelotter11:00yeah I looked into them when I set my instance up, as it's essentially a single-person instance, but couldn't find much in the way of documentation
- @lily:lilysthings.org11:00I just added a few random ones when I initially set mine up
- 11:01Once I followed enough people I turned them off
- Aaron Goldman11:23
In reply to this message
With AtProto it may be worth breaking down the protocol into pieces to talk about it.
1. Finding the PDS that is the current host of a
at://DID/path
URL. This is analogous to a DNS request. Pull the DID out of the URL and resolve it. If it is a did:plc then talk to the PLC directory. If it is a did:web do a http request to resolve the document. Most of the time this DID to PDS mapping will be chached.2. Finding the current head of the repo. Only the PDS can give you this 32 bytes. It is the fact that the PDS can give you an authoritative latest for the head that gives you the ACID possibilities. If you don't care about those ACID properties you could ask anyone with a copy of the repo to give you the latest they happen to have.
3. Get the repo from anyone who has a copy and validate that it hashes the head commit. The repo can be stored and served long after the controller and their PDS is gone.
The PDS also serves as a repo durability of last resort. If no one else has the content you can always go back to the PDS. For unpopular content the PDS can handle the few requests and for popular content it will be in caches around the Internet.1 is not really federated as you need either the PLC directory or the DNS,CA system for did:web
2 is not federated as you are pulling the single 32 bytes of the Head from a specific PDS.
3 is perfectly decentralizable as the content delivery heavy lifting is just hash address content. As long as you are willing to accept bounded stillness you can get content from anyone and validate it with hashes and signatures. - joelotter11:30thanks for the detailed response!
- Aaron Goldman11:41AtProto gets key and PDS rotation at the cost of a centralized Identity server.plc.directoryfor did:plc and the web server for did: web. Nostr gets not having a centralized Identity server at the cost of immutable keys. Can't be stale if it can't ever change. AtProto get Atomic updates at the cost of a PDS(centralized but rotatable without PDS cooperation). Nostr avoids a centralized "owning" relay and enables use of many relays by giving up on a authoritative latest. You find the notes you find and don't find what you don't find there is no larger repo structure. There is only the subset of the event before you.
- Aaron Goldman11:52It could be fun to redirect
https://plc.directory/did/plc/toxy3kpelhv5gwubytayrsbw/did.json
to
https://plc.directory/did:plc:toxy3kpelhv5gwubytayrsbw/
that waydid:web:plc.directory:did:plc:toxy3kpelhv5gwubytayrsbw
and alldid:plc
s would be validdid:web
's by just prependingdid:web:plc.directory:
to the start.(edited) - 11:55granted you would not get the security of
did:plc
you would just be trustingplc.directorybut that is what did web means. - 15:20Anselm Schumacher (@schumi:tchncs.de) changed their profile picture
Wed, Nov 1, 2023
- 00:32expectus.fyi joined the room
- 10:56Nikolay changed their display name to Nikolay Kolev
- 23:11Vince Harkiewicz joined the room
Thu, Nov 2, 2023
- 09:31Bruno P set a profile picture
Fri, Nov 3, 2023
- Fatih05:27Hey all, How to pronounce AT Protocol? Like the @ sign or by spelling it out? Examples: Like @: https://youtu.be/wJBCpzM1VfM?si=0TNMU11LZfNfDxt4&t=567 Spell out: https://www.youtube.com/live/9tZrxSyRPH0?si=djoa_hZapkHCt_we&t=295 Which is the correct pronunciation? Or are both correct?
- 05:28Fatih changed their profile picture
- 06:12hug joined the room
- 06:12@philhug:matrix.org left the room
- 07:36@asierm:matrix.org left the room
- 09:27michael changed their display name to MICHAEL
- 09:28MICHAEL changed their display name to Michael
- 09:38Michael changed their profile picture
- Aaron Goldman14:41We usually say AtProto "at proto" /at prōdə/ saying the
@
as a word and then abbreviating protocol as proto. I don't know if that help. Typing how to say something is tricky. - 16:15gerg0 joined the room
- Aaron Goldman20:30
In reply to this message
It's very weird (humbling) to watch a video of someone explaining something from your documentation. Sat, Nov 4, 2023
- Fatih01:44Thank you Aaron. I get it, it's very clear. 🙏
- urp11:10Message deleted
- urp12:17Hello, I wonder why it is required to be logged in to be able to fetch a profile information. Using the@atproto/api, with
agent.getProfile({ actor: "example.bsky.social" });
it logsUncaught (in promise) Error: Authentication Required
. Is this something from thebsky.social
server? Or is this generally a choice from the atproto? Sun, Nov 5, 2023
- 14:34@blueb:matrix.org left the room
- stevie komputer15:51Hi
- 15:52Ok
Mon, Nov 6, 2023
- urp01:16
Hi! Not sure how to import from "
@atproto/identity"1
import { DidResolver, HandleResolver } from "@atproto/identity";
seems to throw (tested on
node
&bun
, usingvite
)12345678910111213141516171819202122232425
[→ delayed_stream.js:15:5] Uncaught TypeError: util2.inherits is not a function stream 1.0.0/node_modules/delayed-stream/lib/delayed_stream.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:2487 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 stream 1.0.8/node_modules/combined-stream/lib/combined_stream.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:2566 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 data 4.0.0/node_modules/form-data/lib/form_data.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:11549 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/defaults/env/FormData.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:11860 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/defaults/index.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:11954 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/core/transformData.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:11978 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/core/dispatchRequest.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:12000 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/core/Axios.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:12179 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/lib/axios.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:12396 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 axios 0.27.2/node_modules/axios/index.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:12429 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:198 node_modules atproto/identity/dist/index.js@http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:21242 __require http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:3 <anonymous> http://localhost:5173/node_modules/.vite/deps/@atproto_identity.js?v=bafe161c:28360
Not sure if that is me doing a wrong import, or if a known issue, or if I should post here or open an issue on github?
Cheers in advance!(edited) - 09:41sefidel changed their profile picture
- expectus.fyi19:18Has anyone played with PDS / federation using Cloudflare workers and D1?
Tue, Nov 7, 2023
- 04:40sefidel changed their profile picture
- 10:12@thomcat:thomcat.rocks joined the room
- @thomcat:thomcat.rocks
- 10:53LinkedIn Julian Dumitrascu changed their display name to GitHub Julian Dumitrascu
- @thomcat:thomcat.rocks
- 12:04@lily:lilysthings.org left the room
Wed, Nov 8, 2023
- 04:34@man2dev:matrix.org left the room
- 14:00@davidprieto:matrix.org left the room
- 18:04ni5arga changed their profile picture
Thu, Nov 9, 2023
- 09:35dietrich changed their profile picture
- 15:55Karl Abbott changed their display name to Karl Abbott (Away until 13-November-2023)
Fri, Nov 10, 2023
- shreyan00:22federation is happening! loads of us are no longer onbsky.social
- @thomcat:thomcat.rocks
- Steven Franssen07:15federation is an obsolete idea
- @thomcat:thomcat.rocks07:17
he unironically said in a federated chat room
- Steven Franssen07:17yep
- 07:18while there is now p2p rooms that can match matrix
- 07:19just because there is better technology doesnt mean it has the people using it yet
- 07:20network effects
- 07:20why musk bought twitter
- 07:23keet.ioif you want to test p2p #keet:matrix.org
- @thomcat:thomcat.rocks07:24Why are you spamming a different product in here
- Steven Franssen07:25you will be able to develop bluesky on it
- joelotter07:56exciting to see federation happening :)
- 07:57should prob have mentioned here actually, for those interested, we've added bluesky support to bridgy (tool for using your website as your canonical social media feed)
- 07:57have really enjoyed working with ATproto :)
- 07:59(hope that doesn't count as spamming!)
- 09:27@ajcxz0:matrix.org left the room
- shreyan11:48Nice!
- 11:49
In reply to this message
It exists in prod, although it's still (temporarily) only for approved PDSes, and they are very close to switching it on for anyone - 11:49Another nice thing is that federated users now have independent signing keys
- retr0id12:18independent repo signing keys at least, not yet independent did:plc rotation keys
- 12:18unless they byo'd
- shreyan12:22if someone byo'd it would probably not be possible for them to automatically migrate
- retr0id12:25not necessarily!
- 12:26you could set up your rotationKeys array so that the first two keys are your own, followed by bsky's usual rotation keys
- 12:27so bsky can issue updates, but you could always veto their ops
- shreyan12:30oh cool!
- retr0id13:31although, you only have a 72h window to veto them in
- 13:31would be cool if there was a 3rd party did:plc monitoring tool/service
- 13:32so you could get alerts when your did document is updated
- Aaron Goldman
Sat, Nov 11, 2023
- 01:37Igor Jagec changed their profile picture
Sun, Nov 12, 2023
- Kjartan08:16I'm not fully excited about the 72h window though - even if you get notified via a 3rd party service, I kinda don't want to be forced into reacting on such short notice (or risking to lose my account/identity). Let's say I'm on holiday (probably somewhere without internet connection) or in hospital and not able to react. I fully understand why it was done this way, but I can't think of any other situation (online or offline) in which I would have to react so quickly for something potentially so important(edited)
- Kjartan08:24Or in a more likely scenario, 72h might be just a weekend followed by a single bank holiday(edited)
- 09:42@omasanori:matrix.org left the room
- Aaron Goldman11:11
In reply to this message
It was a trade-off between transferability and transferability.
If people would manage their own keys we'll then you would not need window key rotation would just be first come first serve. We added the window for two cases. Firstly if your key is stolen and they rotate to their keys you want to be able to recover. Second is if you trust your PDS to update your DID Document for you and they try to take your repo. In either case you don't want the rotation to be final you want to be able to override it.
So why not allow priority key override forever and never have a key rotation be final? This would prevent transferability of the repo. Many, probably most, users will let PDS generate the repo for them only after having a repo for awhile will it be valuable enough to be worth managing their own keys. At that point they should be able to take control of their repo in a way that the PDS that created it can't revert months or years later. When you take control of your repo it should be yours and the transfer should be final.
- Kjartan11:39I haven't thought about it thoroughly, but one improvement might be, if a key wouldn't be able to add or remove keys to its left/with a higher priority.
If my pds wants to invalidate my private keys, I need to notice it (solvable by 3rd party service) and react quickly. But if my private keys are safe according to their trust level, there probably wouldn't be too much harm even if I miss the opportunity to revert the changes directly - 11:40And a pds would still be able to do whatever it needs to do 🤔
- 11:43I guess I wouldn't even care anymore about the 72h opportunity at all
- Aaron Goldman12:15The only problem with that is if I had a recovery key I lost. The sanareo in my head. 1. I set up a repo on a PDS. 2. I ignore the strongly worded message begging me to put the recovery code in a safe place. 3. Years later I decide I care a lot about my repo and want to take key management seriously. 4. The PDS uses it's key to rotate out all the old not well secured keys for the new generated ones in TPMs you control and a key escrow service you trust. 5. The recovery key you ignored years ago hangs over your head since you can't remove it. All you can do is say I probably lost it forever so it's probably fine.
- 12:16I would like to be able to revoke all old keys and get to a clean state.
- 12:19The other idea we discussed was only having 72 hours as a time to contest not necessarily a time to get them recovery. After a rotation let any key register a contention and then a higher key needs to unlock whenever it gets to it. Let your monitoring service have the right to lock it. The find your recovery code when you get home
- Igor Jagec12:34Hi there, I wanna create my own custom feed and I come across this below as a starting point. How difficult it is to build and deploy a custom feed, and what programming languages I should be fluent in? Cheers! 👍🏻 https://github.com/bluesky-social/feed-generator#readme
- 12:46Igor Jagec changed their display name to TwinPeakTechie
- 12:46TwinPeakTechie changed their display name to Igor Jagec
Mon, Nov 13, 2023
- madiator201106:18Question does Bluesky supports gif either linked or direct uploads?
- 06:59Karl Abbott (Away until 13-November-2023) changed their display name to Karl Abbott
- 15:14Anselm Schumacher (@schumi:tchncs.de) changed their profile picture
- 15:41Anselm Schumacher (@schumi:tchncs.de) changed their profile picture
Tue, Nov 14, 2023
- chinchillas
- 17:32Captain Stacks joined the room
Wed, Nov 15, 2023
- 04:30@toyohaji:matrix.org left the room
- 15:04leitmedium joined the room
- lamrongol16:20Sorry for the abrupt question, I have used com.atproto.sync.subscribeRepos API to get all posts of Bluesky but now it gets few posts. It may be caused by that Bluesky is separated to many PDSs, how can I get all posts? Must I connect to all PDSs not only 'wss://bsky.social/xrpc/com.atproto.sync.subscribeRepos'? Or is there a new API?
- shreyan16:21You need to use the Relay (BGS) to get posts from all the different PDSes
- lamrongol
- 19:02matrixuser12931 joined the room
Thu, Nov 16, 2023
- Captain Stacks08:36What are the main differences between AT and AP?
- joelotter08:58
In reply to this message
there's a summary here https://atproto.com/guides/faq#why-not-use-activitypub - 13:51juansucks joined the room
- 14:27kait changed their display name to name jeff
- 16:25name jeff changed their display name to ball stretcher
Fri, Nov 17, 2023
- 13:56Karl Abbott changed their display name to Karl Abbott (Away until 27-November-2023)
- joelotter14:33So timestamps on the Bluesky API are user-defined, meaning posts can be effectively backdated - really quite nice for the tools we're working on. Was wondering what the dev team's thought process behind this decision was :)
- 14:33(e.g. here's something I posted in 1923 https://bsky.app/profile/joelotter.com/post/3kefvompqeu2y)
- Captain Stacks14:36
In reply to this message
I think that goes along with the nature of a decentralized system, nostr events are the same way - joelotter14:36mm, repos are user-owned, that kind of thing?
- Captain Stacks14:37in the case with nostr, there is no authority to verify the legitimacy of a timestamp, so they are user-defined
- joelotter14:38yeah, i guess i just would have assumed that by default a PDS would be that authority, like how it works on mastodon. but i guess if something can be gotten around so easily it makes sense to make it user-submitted for everyone, rather than a sort of "secret hack" style thing
- Captain Stacks14:39I am trying to learn more about AT architecture, is PDS an AT server?
- joelotter14:40yeah, Personal Data Server: https://atproto.com/guides/overview
- 14:40but there are other types of server
- Captain Stacks14:41is that similar to ActivityPub?
- joelotter14:44ehhh. sort of, in that it is a federated architecture, but the network topology looks quite different imo
- Captain Stacks14:46I need to look into it more
- joelotter14:48the docs are really good!
- Captain Stacks14:49is it easy to be a Bluesky developer?
- joelotter14:50You mean using the API etc? Or contributing?
- Captain Stacks14:51I guess using the API to create third party apps
- joelotter14:52I'm finding it easy enough :) The big missing piece right now (imo) is some kind of OAuth-like auth flow, but the app passwords work well
- Captain Stacks14:52nice, what are you developing?
- joelotter14:54I've been adding Bluesky support to https://github.com/snarfed/bridgy/
- Captain Stacks14:56oh nice, Alex Gleason spoke highly of Bridgy Fed 🫡
- Steven Franssen
- 21:12@thomcat:thomcat.rocks left the room
Sat, Nov 18, 2023
- 23:28machinecode joined the room
Sun, Nov 19, 2023
- 00:17Mafkees joined the room
- 14:56golden_lib changed their profile picture
Mon, Nov 20, 2023
- Ivor Stodolsky08:09hey, can anyone get me 2+ invites? friends are so pissed off with X! we need to move now, otherwise it'll just be Threads. there's big opportunity in the EU, where Threads is still not working.
- Aaron Goldman08:38
In reply to this message
The thought process was that in a distributed system there isn't really a time when events happen there is only the time when events are witnessed. If I link to your post, say a like or comment, then your post happened before my comment. If your PDS is tracking when it first sees commit from foreign ropos it can use the Merkel DAG to find some event it witnessed at at a time to bookend the event.
To "know" the time of a commit C find to witnessed events A, and B where A < C < B.
'A < B' here meaning that there is a path in the Merkel DAG from B to A. - 08:40It is up to the controller of a repo if they want the timestamps to be trustworthy. Most repo controllers wouldn't care much but for example a repo of a Certificate Authority with cert grants and revocation lists would make promises around the truthfulness of their timestamps.
- 08:40Promises that would be subject to outside audit.
- Aaron Goldman08:50I personally don't think it is the protocol's place to tell you how to treat time this is very dependent on the use case for the repo how much effort true time is worth.
- Steven Franssen09:04you can infer time and trust
- 09:05i had an idea with nostr to witness other events inside new events and so help guard against fake events
- Aaron Goldman09:42What specifically are the witnesses asserting?
- 09:42Just an events existence as of some time?
- 10:25@chrishobcroft:matrix.org left the room
- 17:26Dalite Fur 🦊 changed their profile picture
- Steven Franssen19:02
In reply to this message
yes, so some number of proximal events at the time of creation of the new event, like part of a thread structure or timeline would be mentioned in the new event - 19:03with most events doing this it would form like a block chain
- 19:04any forged event would not have any or many mentions
- Steven Franssen19:27and if there where mentions those mentioning events would at some point be disconnected and not mentioned
- 19:28Aaron Goldman: has bluesky looked at usingholepunch.toto become p2p?
- 19:29looks like some sort of repo model is likely needed to get p2p social to scale
- 19:32things seem to be moving fast in the distributed scene now
- Steven Franssen19:40i still like the nostr data structure
- 19:40i think forming repos around topics and people will work well
- 19:43there is elegance to single signed notes, i wish most communication especially media was like that and in such prevent rewriting history as so much media does now
- Aaron Goldman19:51I don't remember talking about keet. 🤔
- Steven Franssen19:55i dont think you did
- 19:56i did mention it here earlier
- 19:56worth having a look as it seems it works atleast as well as matrix but p2p #keet:matrix.org
- 19:57or should i say 🍐2🍐
- 19:58the pear room has the devs in it and the desktop app is most updated
- 19:58Pear room link pear://keet/yrb38u4y5hw3dpeazx54hspo59q1pz1py1u74om7yxtt19aa5r5mtofwp46ohw4u1w63o6is6sax6j3swgdi66dmti8p8nfuyypfwewbud3gradf
- whyrusleeping20:02Thats an understatement lol
- Steven Franssen20:05its interesting their ideas seem to still run parallel and bluesky should be able to go p2p withholepunch.toquite easily
- 20:06the p2p pear runtime is scheduled for open source release in 3 months
- shreyan20:08if somebody does want to implement a p2p bluesky, i suspect it wouldn't be toooo hard - bluesky's federation model already reminds me a lot of p2p sync
- 21:18Proudmuslim | مسلم فخور joined the room
Tue, Nov 21, 2023
- Captain Stacks08:16Bluesky dev talk reminds me a lot of nostr dev talk
- Aaron Goldman09:30
In reply to this message
To some extent the p2p would just be one more PDS. With a bridge literally, without a bridge PDS/Client would need to embed the keet client.(edited) - 09:49ball stretcher changed their profile picture
- 13:55Erasmus | Pendulum changed their display name to Erasmus
- Steven Franssen20:35
In reply to this message
you wouldnt embed the keet app but the p2p 'pear' runtime it uses, yes clients or servers would need it or need a bridge but at the point most of the software is p2p enabled and thats working better than federation why would you use federation? or even have many dedicated servers? - 20:37if p2p can work it seems to solve a lot of problems
- 20:38holepunch seems to want to perfect p2p tech while others build on top of it, as also veilid and freenet and others are doing
- 20:39keet is the demonstration/concept app for them
- 20:41i think ideally bluesky or matrix which i think seem very compatible would work on social ideas building on it
- Aaron Goldman21:35
In reply to this message
As to "what is the point of dedicated servers". This tends to come down to the Consistency, Availability tradeoff. If I am building an application where the data can be modeled as a CRDT then grate P2P. If I am building something that requires atomic Compare and Swap, Mutual Exclusion locks, or globally ordered queues then I must have a consensus group. By choosing consistency over availability by availability is now limited by the uptime and reachability of a quorum of the consensus group. The best way to get highly available quorums is with dedicated servers. - 21:43Xe Iaso changed their profile picture
- Steven Franssen22:58Aaron Goldman: you can still provide dedicated servers in a p2p platform, its that you dont need to and they will have much less work, p2p availability greatly exceeds any dedicated servers, torrents have proven this with their history of shutdown attempts, i am not sure what sort of consensus we need in a social situation where we have individuals signing events?
Wed, Nov 22, 2023
- 06:11Elio Qoshi changed their profile picture
- Aaron Goldman06:24Sure you can split the PDS into an Atom service and a Blob service. The Atom service doing the CaS (Compare and Swap) for the repo tips (commit at the repo head). The blob service is just transferring blobs identified by hash. That's all immutable and thus a great match for available systems with P2P.
- 06:26If you have a server the item service can be made highly available. If you don't want to have a server a dedicated set of clients can form the consensus group from which a quorum must be reachable for updates
- 06:53@kitdiesel:matrix.org left the room
- 07:53Melvin Carvalho joined the room
- 08:09@null_radix:matrix.org left the room
- Captain Stacks08:11I really need to learn the AT architecture
- 08:11any good YouTube videos on it?
- 08:58pere changed their profile picture
Thu, Nov 23, 2023
- 09:59golden_lib changed their profile picture
Sat, Nov 25, 2023
- 04:22redblock joined the room
- 05:25@intrnl_:matrix.org removed their display name (intrnl_)
- 05:25@intrnl_:matrix.org left the room
Sun, Nov 26, 2023
- Aaron Goldman21:08
In reply to this message
Why do you need to learn the AT architecture?
https://atproto.com/guides/data-repos
It is more detailed than any video I know of.
That said.Joe Beda has a talk I liked
https://youtu.be/9tZrxSyRPH0 - Aaron Goldman21:24I like to short version it as Authenticated data Transfer Protocol, aka atproto by comparing it to http. http is an authenticated connections protocol. The data is transferred in an authenticated way but once it is downloaded the data loses authenticity. By contrast with an atproto repo when you download the data and then reshare it the data is every bit as authenticated as it you got it directly from the PDS. This means that the repo can live outside the PDS. It can be cached with or without the cooperation of the repo controller. Repos can out live the controller, the PDS, even the Bluesky PBC. If facebook, twitter, blogger, youtube, ... shutdown tomorrow the content would be gone. If they were in Authenticated Data repositories then anyone that had a copy of some of the content could keep that content around. If http is like calling an expert on the phone and asking questions AtProto is like an expert publishing a book.
- 21:28Authenticated Data is the combination of the authenticity of HTTPS with TLS and the CA system, with the manageability of files, and the atomicity of database transactions. It is a data storage and transfer system for atomic authenticated transactions that can be cached across space and time without loosening ether atomicity or authenticity.
- 21:32granted if you ask not about AtProto but just about Bluesky that would be different answer that is a activity pub like protocal build on AtProto that is only realy interested in AtProto for its ability to shed load by letting other PDSs, and BGS cache repos, and move a repo to a different PDS.
- 21:36Should I take the time to make a video about
Authenticated Data
vsAuthenticated Channels
?
I give this talk sometimes but have never recorded it for my YouTube. Not sure if there is much demand for this talk? - shreyan21:36Sure, it would probably be pretty helpful for some
Mon, Nov 27, 2023
- 06:50Karl Abbott (Away until 27-November-2023) changed their display name to Karl Abbott
- 10:08stereosteve joined the room
- 11:25kolami joined the room
- stereosteve20:59Any advice on defining a new Lexicon (e.g.
com.example.clap
) and add it to a dev server? Tue, Nov 28, 2023
- joelotter04:11is appview down atm?
- joelotter05:28ah i think it's just the web app
Wed, Nov 29, 2023
- 05:36Roberto joined the room
- 05:37Roberto Oliveros changed their display name to Roberto
Fri, Dec 1, 2023
- 06:07@kabbott:element.io removed their profile picture
- 06:07@kabbott:element.io left the room
- 10:25nerd changed their profile picture
Sat, Dec 2, 2023
- 02:03@kumarpalsinh25:matrix.org joined the room
- 09:09Flummery joined the room
Sun, Dec 3, 2023
- 04:23Sybil joined the room
- 17:58@packsman:matrix.org joined the room
- 17:58Administrator banned @packsman:matrix.org: spam
- kk liang19:42am I still alive ??
- 19:42I already forget what is the purpose of this community
- Steven Franssen
- 21:45is there a short doc on who and where is signing what?
- Aaron Goldman
- Aaron Goldman21:54
In reply to this message
This is a good place to discuss the protocol limits vs the PDS made by Bluesky PBC.
The protocol has the repo controller sign the repo commits.
The controller needs not run a server and the PDS need not ever touch a controller's keys. Unlike TLS where the server must have authority over the content it serves the PDS servers authenticated data without the need for any cryptographic material.That said the current implementation stores "your" keys on the PDS and the PDS signs the repo. The users don't update their repos they request that the PDS update the repo for them in the PDS politely acquiesces. If you wanted to not be at the mercy of your PDS you would have to store key material.
- Steven Franssen21:57does the user sign anything?
- 21:58i take it no with the 'current implementation'(edited)
- 22:00is every commit a single event?
- Aaron Goldman22:27The current PDS has a rest API with a password auth to ask the PDS to update the repo
- 22:28A repo can update as many records as it wants in a single commit. For a dramatic example deleting all records in the repo could be a single commit.
- Aaron Goldman22:43This was one of the debates I had with Jay when I was still working for her. I thought we should have a demo PDS that never had any key material and a demo client that did all the signing client side. I wanted this to show how disempowered the PDS could be. Having no repo keys and no concept of the contents of the repo. This would be a PDS that knew as little about your application as GIT or the file system does. It would only accept comments and host them. Jay was concerned that users don't trust themselves to manage their own key material. You can lose your phone, you probably won't lose your PDS. Better to have a web2 style rest API for Bluesky specific actions like a post or comment rather than a file system like actions like insert/delete record at path. So we moved the application specific updates and the keys to the server. This turned the demo PDS from a generic AtProto PDS to an application specific Bluesky PDS and defaults to the PDS as the controller of the repo until the user asks for control and the PDS politely acquiesces.
- Captain Stacks22:58
In reply to this message
I think it would have been nice if you had won that debate, but I'm hoping this decision doesn't impact the long term direction of the protocol. I want to be able to run a generic AtProto PDS server that hosts content from users that manage their own key material - Captain Stacks23:06Idea would be to make it more appealing to Nostr users
- Aaron Goldman23:13I still think (hope) the plan is to go more generic AtProto PDS over time. It would be weird if that came from a community contribution rather than the corporation
- shreyan23:14yeah, at this point i think the social parts have already been ripped out of the PDS and moved to the aggregation services (AppView)
- Aaron Goldman23:15I get the desire to build a viable social network first and distribute the protocol second once Twitter pulled out of the project
- 23:15But still a bummer 😔
- Captain Stacks23:23
In reply to this message
I think more community contribution is necessary for AtProto because the protocol should meet the needs of stakeholders besides just the corporation. The plan for it to eventually have a consortium makes sense to me Mon, Dec 4, 2023
- Steven Franssen
- 08:58Nasudonguri changed their display name and profile picture
- shreyan13:34
In reply to this message
even nostr is moving in the server-held keys direction now:
https://bsky.app/profile/rabble.nz/post/3kfhmutv6wz2u - 14:10@kumarpalsinh25:matrix.org left the room
- Captain Stacks14:11sad
- Steven Franssen
- shreyan18:32??
- Steven Franssen18:46the irony too you cant even open that link without a bluesky account3 replies
- Steven Franssen18:47it shows the stark difference between people that value freedom and those that do not
- 18:47self sovereign permissionless
Tue, Dec 5, 2023
- 04:36wsam wsam top joined the room
- retr0id
- Roberto10:21
Hi all. What would be the correct way to update a profile in my PDS server? Previously, handles were appearing as "Invalid Handle" but this problem was due my DNS settings, more
here. New accounts show handle correctly but old accounts still showing "Invalid Handle". If I do a getProfile request to my PDS for an old account, I get:{
"did": "did:plc:my-did-here",
"handle": "handle.invalid",
"displayName": "Roberto",
"followsCount": 0,
"followersCount": 0,
"postsCount": 3,
"indexedAt": "2023-12-02T11:23:22.915Z",
"viewer": {
"muted": false,
"blockedBy": false
},
"labels": []
}I assume my server has this in its DB. But how do I update it? If possible. Thanks.
- Golda Velez15:23well - i post stuff on bluesky i probably wouldn't post on the permissionless web and def would not post on twitter, because i like the ecosystem with the blocks and mutes. if the link was permissionless to open we couldn't have blocks. i think, freedom to choose to limit association is freedom too. not to start a war here or anything.
- 15:23oh yay and element does threads now cool!!
- Aaron Goldman15:52Carful not too over promise on the privacy properties. https://blue.amazingca.dev/user/rabble.nz/post/3kfhmutv6wz2u
- shreyan
- joelotter
- 17:1537h4n joined the room
- Steven Franssen19:28
In reply to this message
fake screen shots are lame link works https://snort.social/e/note1crl44xk24yc2ym5xlyyfjdeumxueyguzxetseg8r0prqzmqts47sghnmgp - retr0id19:29continues to not work on my machine
- Steven Franssen19:29use another app
- 19:31you are using one app which only has a few relays as default
- retr0id
- Steven Franssen19:31you can reach bluesky via nostr and mastodon now
- retr0id19:31there's more than one bsky app too :P
- Steven Franssen19:32bluesky is not federated
- 19:32the main server
- 19:33you have been able to use a third party to sign in nostr for a while
- 19:34mainly signing extensions
- 19:34point is to protect your key from other software
- 19:35it however has always been nostrs focus its your key not someone elses
- 19:40has any one done a comparison of nostr to bluesky?
- 19:42seems the fundemental of nostr is it hash and signs each event and you own the keys
- Aaron Goldman19:49Not your keys not your repo. I don't think who holds the keys is a fundamental distinction between the protocols but an implementation detail of the example PDS. I think the more fundamental distinction is the difference between having repositories vs single events. Moving the signing keys to the client is a major change in the balance of power but a minor change in the code base. AtProto was designed from day one to allow client side signing with the PDS serving as an acceptor for swapping the old head commit with the new one.
- Aaron Goldman19:58The example PDS is in JS in the hope that the repo update logic can run in the browser or server with the same library.
- shreyan
- 20:28even in its current form people have brought their own recovery keys
Thu, Dec 7, 2023
- 07:51alperenalb left the room