Tue, Oct 25, 2022
- pfrazee21:00eh XRPC is currently the plan. You might be able to use IPFS wire protocol stuff but that's not how we're currently thinking about it
- bnewbold21:04the XRPC 'sync' stuff (in theatproto.comlexicon) seems pretty minimal. like, by default
syncGetRepowould return the entire history as a single CAR file, right? if you could get the entire root object (instead of just CID) from 'syncGetRoot', then you could request "everything since previous CID" which would be like a shallow clone of the current state of repo, as a CAR. - 21:04maybe i'm overthinking this, i'm sure there will be iteration and it will all work out
- pfrazee21:05oh yeah the xrpc sync methods are a hold-over from a much earlier iteration. Essentially it's unimplemented
- bnewbold21:06i'm mostly curious from the standpoint of implementing an aggregation service and how efficient that could be. and whether it will be easy/common to gossip repo content around from multiple services (aka, instead of needing to download only from the current PDS for the user/repository)
- 21:09w/r/t XRPC: it is a little too bad that there isn't a more REST-like interface to individual records in repositories. eg, "get" an individual record from a collection and TID with the obvious HTTP path. I get that having consistency is important (aka, that all methods are XRPC methods)
- pfrazee21:09not sure yet how we'll approach gossiping. There's no technical barriers -- just a question of the economics of rehosting and when we can expect it to be done
- 21:09
In reply to this message
fwiw theat://URL scheme is certainly closer to that, though it only supports GET atm - 21:10eg
at://pfrazee.com/app.bsky.post/1234is the canonical URL for a post with key 1234 - bnewbold21:11right, but I can't just
curl --get https://pfrazee.com/xrpc/app.bsky.post/1234 - 21:13but maybe we will be able to
atp-cli get at://pfrazee.com/app.bsky.post/1234or whatever, and that is good enough - pfrazee21:14yeah that would be
https://pfrazee.com/xrpc/com.atproto.repoGetRecord?uri=at://pfrazee.com/app.bsky.post/1234 - 21:14yeah, we can also talk about whether there's upside to a kind of REST passthrough for records
- bnewbold21:15oh yeah, another question I had:
- 21:15how would you implement a 140 character limit :)
- pfrazee
- 21:17the website's rendering of the lexicons doesnt currently capture all of the constraints
- bnewbold21:17oh, it is actually JSON schema or whatever which allows those extra constraints. great
- pfrazee21:17yeah
- bnewbold21:17cool cool that makes codegen much easier
- pfrazee21:17yeah
- bnewbold21:18I wasn't sure what the schema DSL in the docs was. ok great. that was probably mentioned in docs and I just skimmed that part
- 21:19another question was to confirm was whether there was actually any need to have branching and merging in the repo history format. I think it mentions that the "previous" commit CID reference could be plural (which would be an N-way merge)
- 21:20but as I understand it there would only be one canonical PDS for a repository at a time, and XRPC requests would presumably be fielded in transactions or something. so even with multiple user devices trying to write in parallel, would end up as a simple linear history
- pfrazee21:21no current plans to use it but not impossible that it can be relevant in the future
- bnewbold21:27as a DX thing, you might want to clarify that even if all the records in repositories are serialized as CBOR, clients can always use 100% JSON to interact with the system over XRPC. except the 'sync' methods I guess. and I sort of presume that HTTP headers can be used so clients can communicate in either JSON or CBOR. by my reading there is a huge developer win that the client application stuff can all be agnostic to the binary dweb/p2p format things going on in the PDS backend, and just do regular ol' web tech APIs
- pfrazee21:27yeah ^ that is the situation
- bnewbold21:30I haven't followed the GraphQL space much, but I wonder if it will be possible to ~deterministically derive a GraphQL schema from Lexicons. eg, as a parallel/alternate API as a layer on top of the XRPC API
- pfrazee21:31might be possible for us to use graphql at some point. The broader question is whether the graphql queries are efficient and dont over-tax the PDS
- lk25122:35Is there anything I can do to increase my chances of being approved to join the private beta ?
Wed, Oct 26, 2022
- 10:57Jeremy Kauffman joined the room
- brh2814:18Recloned the repo, ran
yarn(v1.22.19) and got a build issue, which I created an issue for: https://github.com/bluesky-social/atproto/issues/274 - djspacebunny15:55i am willing to host a server if i can. things are weird in life right now.
- brh2816:24Playing around with the repl, how do I execute schema methods (e.g createAccounts) on a PDS server running locally?
- Daniel Holmgren19:33
In reply to this message
we haven't added the ability to make xrpc requests from the repl yet. you'd have to do it withcurlor programmatically (which you can see examples of inpds/tests) - bnewbold19:34here is a quickstart I just wrote about getting the prototype server running, and interacting with
http(aka HTTPie): https://pad.robocracy.org/s/f2_HTquiu - 19:38remember that this is all ephemeral, in-RAM, and all content and accounts will be lost after shutting down. work in progress, everything will get hacked, not all implemented, yadda yadda
- Daniel Holmgren
- bnewbold19:57
In reply to this message
whoops, I mucked up the permissions for a minute, I think it should work again now Thu, Oct 27, 2022
- Harlan Wood
- Harlan Wood04:38
In reply to this message
Are these the tests you’re referencing? https://github.com/bluesky-social/atproto/blob/main/packages/pds/tests/crud.test.ts - 05:51jplegard joined the room
- 08:50@jwnz:matrix.org joined the room
- 17:55@cel:pussy.accountants changed their profile picture
- 18:03@toranosora:matrix.org joined the room
- 18:10karetski joined the room
- mikuhl20:17Twitter honestly might implode lmao. Hopefully there will be a perfectly timed escape boat. 🙂
- @wclayferguson:matrix.org20:22I hope Elon embraces BlueSky and realizes this is the path to create the kind of social media everyone wants, regardless of any politics.
- mikuhl20:2399% sure he will make it a dogecoin platform
- 20:23He's too deep into that shit
- karetski20:23I hope Elon has nothing to do with Bluesky to be honest
- @wclayferguson:matrix.org20:24I hope he provides more funding to BlueSky, but yes, he should basically let the tech guys take the lead.
- 20:24(but we're probably "off topic" since this room is really about 'development'... my apologies if that's true)
- karetski20:24Just funding — maybe. But looking at his track record, it's very unlikely.(edited)
- @wclayferguson:matrix.org20:28We'd probably need a room called "BlueSky Opinions & Politics" where random discussions can happen. There's probably a room like that I forgot about.
- Aaron Goldman
- pfrazee21:20@wclayferguson:matrix.org: appreciate you keeping us on topic! Yall are fine but yeah, just because we could spend all day talking about it
- @penaiple:midov.pl
- 21:32good thing that elon would never use XMR for any of his crap
- 21:32otherwise it would be more successful
- 21:34hampson joined the room
- 21:51bf6dmbmdsv joined the room
- 23:25@nurpu:matrix.org left the room
- arcalinea23:33Bottom line is we're going to keep building and (try to) stay focused. Very curious to see what will happen, but Elon's approach of changing Twitter from the top down is philosophically the opposite of our approach: changing the nature of social platforms from the bottom up by making the core pieces neutral, protocol-based infrastructure. It's our job right now to prove that this approach is usable, scalable, and compelling.(edited)
Fri, Oct 28, 2022
- 00:34Father Maurer joined the room
- 01:22gabisous joined the room
- Anton Kent - Anytype
- 03:31Greetings :-)
- 03:33Waiting for Jay Graber’s talk
- 05:1745kwv8q6s9 joined the room
- @wclayferguson:matrix.org06:59
In reply to this message
I think Elon is saying he wants people to be in control of their own feeds, rather than power to censor being algorithms and centralized in the hands of a small unelected group of individuals. So in that regard all of us and Elon too, are thinking the same thing. There are already successful protocols like Matrix and ActivityPub/Fediverse so I'm excited to see what BlueSky can bring to the table, and if you believe what Elon has said publicly about open source and freedom he should be very much behind all of the above as well. - whyrusleeping08:11I think what Jay is saying is not that the goals are necessarily different, but that the approach is
- 09:01Brad Brown joined the room
- lk25110:28Those of us building an iOS client for bluesky, should we wait for (test?) indexing services to be available, or is there anything we can do right now?
- pfrazee10:29
In reply to this message
it's 🔥 that you are but you're going to be in for pain right now. We don't even have a fully working client yet. I'm able to make a dev build work because I know where all the TODOs are - 10:30we're not trying to slow you up! It's just not done yet. This is also why we dont communicate a lot of the dev tooling to yall yet, because we'd just be handing you a sandwich full of glass
- 10:31part of why we want to do this private beta is so that we can stabilize this stuff. Having been on both sides of the process, when you're building something and upstream keeps changing in dramatic ways, it's super frustrating
- 10:32(and to fully give my credentials on this) prior to this project I've done ~8 years of foss decentralized projects where we did the opposite -- we would share and explain everything with devs as we worked
- 10:32my last project, in fact, I live streamed all development (https://ctzn.network/dev-vlog)
- 10:33even then it was frustrating for folks, and I just didnt want to repeat that. So that's why we're doing it this way
- 10:59dogod M joined the room
- 11:31rangak joined the room
- arcalinea11:54
In reply to this message
To use a LOTR metaphor, it's possible to seize the "one ring to rule them all" in order to destroy it, but very difficult, and most end up keeping that ring. So we'll see what character Elon ends up playing in this next chapter of the saga. - 12:19Michael Calvey joined the room
- 12:53@penaiple:midov.pl changed their profile picture
- 13:37alextoma joined the room
- alextoma13:37Hello
- 13:38I'm kind of a newbie developer
- 13:38was wondering where you guys think the best place to start would be - I want to eventually build on top of ATProtocol
- 13:39I have a good idea of what frontend development is like but am less clear about backend
- 13:39would greatly appreciate any help or advice
- 13:41drstrangeknight joined the room
- 13:42alextoma set a profile picture
- pfrazee
- drstrangeknight13:44Hi guys, I am a Data Scientist/Tech Entrepreneur (with PhD in AI), currently a Data Architect/Tech Lead, and I am all for a safe, connected and progressive world. I would love to know what bluesky is about and see if I can be of help.(edited)
- alextoma13:44
In reply to this message
I'm new to development and have mostly just been doing frontend Angular/React stuff - but no real backend development. Do you have nay suggestions or can you maybe point me to some resources that would position me nicely once we're stable enough to build stuff here - 13:45for fullstack development ^(edited)
- pfrazee13:45at this stage, https://atproto.com really has everything
- alextoma13:47👍🏼
- alextoma13:47Message deleted
- 14:19testgonzo joined the room
- testgonzo14:19New here. How are Bluesky and Matrix the same and different?
- alextoma14:36I believe Matrix is built on top an open source decentralized protocol built specifically for decentralized communication
- 14:36AT protocol is being built for social applications
- 14:37social networking specifically
- pfrazee14:40yep that pretty much nails it. Different purpose, so different design choices
- 14:50David Cueter joined the room
- 15:22tehhp joined the room
- 15:58sanequest joined the room
- Daniel Holmgren18:17yup! as well as the various views tests
- 19:57anath4ema joined the room
- 20:22@qeboos:matrix.org joined the room
- 20:23@qeboos:matrix.org left the room
- bnewbold20:32I started working on a CLI too to poke at PDS implementations: https://gitlab.com/bnewbold/adenosine
- 20:33was able to poke at the CAR repo output (from atproto implementation) using the 'ipfs' command line tool, which was kind of cool: https://gitlab.com/bnewbold/adenosine/-/blob/main/notes/ipld_car_explore.md
- Aaron Goldman20:39https://github.com/web3-storage/ipfs-car Is a good model for working with car files
- bnewbold20:43
Aaron Goldman: that looks like it is mostly oriented around IPFS files (aka, files and directories encoded as UnixFS, including all the tree metadata and raw content blocks) in CAR files.
In the case of atproto, the content is in IPLD dag-cbor blocks (including both the MST tree and user records), which can then get serialized out at CAR files - 20:44so, "unpacking" the CAR file to disk probably wouldn't work. though it might make sense to have a tool that would "unpack" a user's repository in to record files on disk, and then "repack" that in to a CAR? hmm...
- Aaron Goldman20:45Yeah this one is for UnixFS not ATP
- bnewbold20:46I actually couldn't find a full CAR implementation in rustlang. 'fvm_ipld_car' seems unmaintained, and I didn't see an implementation in libipld. this code hasn't been pushed as a crate, but I noticed other folks have vendored it out: https://github.com/n0-computer/iroh/tree/main/iroh-car
- Aaron Goldman20:51I like CAR files but am still not sure if it would be better to have SQLite as the default on disk format so we could have the block store, the DID Document store, and a table with the DID to latest comment mapping all in a single file
- 20:53If clients are doing a lot of syncing are they better off just appending more blocks to the end of a CAR or inserting into a database.
- bnewbold20:53there are several IPLD-in-sqlite implementations out there, it looks like. I think CAR is a good interchange format (just about the simplest thing). the CARv2 stuff would work better for working from disk. but yeah for anything "online" (heavy reads/writes) a different blockstore makes sense
- 20:55the "heavy" client use case isn't very clear to me reading the current docs. there are hints of UCANs and delegated authority? but i'm not sure that most clients ever need to look at the actual repo format (binary, MST, IPLD, CBOR) as opposed to just records in JSON that they can cache locally
- 20:57Max (@max:maxstuff.net) joined the room
- lk25121:18
In reply to this message
Thanks for the information, I understand why you may want to build this way. My client is for twitter right now but will make it bluesky compatible as soon as you guys open up. Forgive me for this terrible terrible question but is there an ETA? 😄 - 21:22
In reply to this message
Here in the EU we now take natsec extremely seriously and we urgently need an open version of Twitter one way or the other. The thinking is , list of “tweets” is Creative Commons and then private sector builds clients with their own content curation capabilities - 21:27Børlaag joined the room
- bnewbold21:33i'm pretty curious if the ATP model would work well for things like reddit or forums. it's certainly technically possible implement, but I would guess that expectations around tight coupling and experience could be hard to achieve. eg, comment threads updating immediately. in that case you would expect moderation to be local to the group or specific content, but it probably won't work that way
- 21:35authors could manage comments on a blog post by curating comments from the full atp-space (?) and marking them as interesting via link as a specific record type. eg, similar to howarstechnica.comhas author-curate interesting comments (plus a full feed of comments). I think some newspapers work this way now also?
- 21:37bookmarking and link tagging (like delicious), or webannotations, also interesting to think about. fit well with the local + aggregation model
- 22:36Tauqueer Khan joined the room
Sat, Oct 29, 2022
- Gerben00:44
In reply to this message
- 00:51duc [they] joined the room
- 01:13lethargicpanda joined the room
- 01:22Neil M joined the room
- 03:10jrevi joined the room
- arcalinea03:19
In reply to this message
The protocol development is taking place on Github, but we're not publicly committing to timelines as to when we think it'll be "done" right now because there are still unknown unknowns in getting everything to work right. We'll definitely let people know when we think it's mature enough to handle serious usage. - 04:34izotos joined the room
- 06:12yukaii joined the room
- 06:57@tehaess:mozilla.org joined the room
- 07:29@likecoin:matrix.org joined the room
- 07:36alkabir joined the room
- lk25107:55Is this gentleman just pulling this out of his posterior? https://twitter.com/davetroy/status/1586166535592509440?s=46&t=aUQ9XTXiqSrYiKgUY_PDNA
- 07:58Forgive me if off-topic, I’m not sure if it is.
- 07:59
In reply to this message
Oh fantastic!! Yes that is totally understandable. Thank you for answering my questions. I believe your work is extremely important. Hope I can somehow contribute in the future (I’m a machine learning guy with some experience in iOS dev) - 08:00PS. I’ll totally be interested in hearing when you guys are ready for un-serious usage too.
- 08:15hazycrow joined the room
- 08:18flo24 joined the room
- 08:58@tehaess:mozilla.org left the room
- 09:42realgizmoo joined the room
- 09:52maia joined the room
- whyrusleeping09:57I dont know if anyone outside of elons head knows what elon is going to do
- 09:57We would welcome the challenge of migrating twitter to bluesky
- @penaiple:midov.pl10:12if its free speech now that means you can tell elon to go fuck himself for making proprietary software
- 10:12if he censors it, its not free speech
- realgizmoo10:26I have already migrated from Twitter. We can turn Twitter to yahoo
- Aaron Goldman10:27
In reply to this message
more a discussion for #general-bsky:matrix.org then the dev channel but censoring speech that is designed to disrupt the ongoing conversation can enable more free speech.
Like how having rules for how you use roads can enable more freedom of movement. The fact that we restrict to driving in the right side of the road enable cars to move further faster despite removing some movement options. - @penaiple:midov.pl10:28speech doesnt get in the way, especially on text
- 10:28unlike cars or other physical things
- 10:28ignore it if you feel annoyed by it
- Aaron Goldman10:44
In reply to this message
It would be a shame it there where only delegated clients this would leave the ability to post as you and move your home sever in the hands of the PDS. One of my goals is that the PDS can go out of business with no warning and you from your client can authorize a new PDS and upload a full copy of your repo with no assistance from the old/non-existent server.
This means that you need a client with a always up to date repo of your content. For something like the "my twitter data" archive or ,i think, the mastodon migrate your data archive it is expensive to export an archive everyday and infeasible to do it on every action.
For a Merkel Search Tree it is a persistent data structure with good structural sharing so the diffs are small. You can compose your change(posts) commit locally and then upload to the PDS. You have an up to date repo and the PDS lags only by what is committed locally but not pushed to the server.
Users could use only the delegate client but that like using GitHub but only ever the web editor would lose much of the value of repos.
(edited) - 10:46
In reply to this message
happy to disuse this in a different channel so as not to disrupt this one - 11:06naturaprodet joined the room
- 11:13Boofcario joined the room
- 11:14naturaprodet set a profile picture
- 11:15Boofcario set a profile picture
- 12:41thursdays joined the room
- 15:43neo joined the room
- 15:43Melinda Black joined the room
- 15:58doodlewhale joined the room
- 18:19Phillip Ressler joined the room
- 20:20@swelch:matrix.org joined the room
- 20:37sq76gz6xgr joined the room
- 21:57yancyscot joined the room
- 22:10@kitdiesel:matrix.org joined the room
- bnewbold22:39
In reply to this message
For sure I think the ability to keep a local mirror/copy important. the existing client/structure allows that easily; it is the same mechanism by which aggregators would scrape, etc.
The open question to me is whether the "append records locally and push to PDS" makes much as much sense. my read between the lines is that it is probably possible/supported for folks that really want to do that, but the majority of users would not do things that way Sun, Oct 30, 2022
- 00:29bala thebug joined the room
- 01:04hajx joined the room
- hajx01:04Hi guys, I can't seem to access bluesky. Can someone help me out?
- 01:05
In reply to this message
So are you using Mastodon now while waiting for bluesky to release or are you not using any socials now? - 03:23MN joined the room
- 03:46probegalaxy joined the room
- probegalaxy03:47gr8 to be in this new world..
- 03:55Anders C. Sørby joined the room
- 05:39@joejenett:matrix.org left the room
- MN06:41
Find here from IPFS Camp 👋
- 06:42astrohsu changed their display name to MN
- 06:56gooseism joined the room
- 08:51whintr joined the room
- 09:36jeff_barutt joined the room
- 09:51sevensixseven joined the room
- 09:55Pilot_51 joined the room
- 10:04rexamazing joined the room
- 10:45teksquisite joined the room
- 11:32awestin joined the room
- 11:37c8lin joined the room
- 12:06Ilan Shamir joined the room
- 12:25@jerrylerman:matrix.org joined the room
- 12:49salted joined the room
- 14:06korvv joined the room
- 14:45@null_radix:matrix.org changed their profile picture
- 15:39Magnolia 🇺🇦 joined the room
- 15:40incloud joined the room
- 16:48@daniel793:matrix.org joined the room
- 16:57@oscarrdg:matrix.org joined the room
- 17:04Mark Diaz joined the room
- 17:07skopintsev.denis joined the room
- 18:07frh2pqtgzx joined the room
- 18:32@rimuru:gentoo.chat changed their profile picture
- 18:38Rimuru changed their display name to spooky spook 🎃
- 18:46Human Mirjalali joined the room
- 18:53otsaloma joined the room
- 19:40@hms_brexit:matrix.org joined the room
- 20:00alrg joined the room
- 21:31Dwayne joined the room
- 21:55Alex (@ajs1998:matrix.org) joined the room
- 22:10Andrew joined the room
- 22:24Zufrizal Yordan joined the room
Mon, Oct 31, 2022
- 00:20u64 joined the room
- 00:20Ennis joined the room
- 01:10@washran:matrix.org joined the room
- 02:25tapatio joined the room
- 03:56hslim joined the room
- 05:01Tony Catapano joined the room
- 05:19Søren Gravesen-Hvass joined the room
- 08:18alexozy joined the room
- 08:30@dk:effektio.org joined the room
- 08:3897dv77c46q joined the room
- willscott08:39
arcalinea's talk on "Bluesky and IPLD" from IPFS Camp this weekend is also on youtube: https://www.youtube.com/watch?v=jGbBZbl-V8Y
- 09:00Michael Trainor joined the room
- 09:38jacobrussell joined the room
- 09:45jzs joined the room
- 09:56puemos joined the room
- 10:12zekarlos joined the room
- 10:27@vinay-keshava:mozilla.org joined the room
- 10:33@alexandro:foilhat.tk joined the room
- George Antoniadis10:35
I'm trying to wrap my head around what options indexers/crawlers have and was wondering about a couple of things I couldn't find information on.
a. Can everyone methods that sync repos from a PDS? ie
com.atproto.syncGetRepo?
b. Is a client allowed to rewrite their commits to the MST/history after the fact? If so will the PDS complain/warn the user?
c. Is there a plan for the PDSes to provide aggregates about their repos, or will the indexer/crawler have do deal with retrieving updates for individual repos from the same PDS? I'm wondering mainly about how actions such as follows/likes can be easily retrieved without having to pull all repos from all "relevant" PDSes.ps. Although I tried searching in this channel as well as the github repo, I still might have missed something so I do apologise. In which case a link or pointer to where I should be looking at would be appreciated :D
- 10:42@alexandro:foilhat.tk left the room
- 11:08vicente depdel joined the room
- 11:13mustafa_123 joined the room
- 11:23@lisko:matrix.org joined the room
- Mark Foster SSI: @mfoster.io12:07Good Morning today’s forecast calls for Blue Skies
- pfrazee12:07haha you have no idea how often that song gets stuck in my head
- Mark Foster SSI: @mfoster.io
- sylphrenetic12:07for me it's Goodbye Blue Sky by Pink Floyd
- @lisko:matrix.org12:08Does the project have an official soft drink? Because I have an idea
- pfrazee
- Mark Foster SSI: @mfoster.io
- pfrazee12:10
In reply to this message
I know! It's a very lively and hopeful song. We need to get the rights or something if we ever do media - Mark Foster SSI: @mfoster.io12:11I saw Pink Floyd in concert with all my high school buddies, it was a memory that I will never forget!
- pfrazee
- 12:12(this is so totally breaking the on-topic rules but I'm abusing my power as moderator to allow it)
- 12:31@char.mitro:matrix.org joined the room
- bnewbold12:38
In reply to this message
(not an authority, just my thoughts)
a: I assume anybody can pull repos at any time... and also mirror/redistribute them, though not canonically. unclear what the norms will be about bandwidth and rate-limiting, but HTTP/XRPC has a rate-limit status code (429). checking if things have changed is a lightweight read. I think of https://www.softwareheritage.org/ bulk scraping git repos, or RSS feed readers, as prior art
b: I'm not sure how clients could, via the existing protocol. pushing new commits via sync import which are not children of the current HEAD commit? the related issue I would see, which would impact the whole ecosystem (aggregators, etc) is if a user updates their DID doc to point to a new PDS location, which has a new origin commit. the analogy there would be swapping out a git repo with an entirely new commit history with no shared origin commit
c: it feels like one would need to do at least partial repo pulls to have accurate follow/like counts. eg, could just pull the follow/like 'collection' key prefix parts of MST trees. I sort of assume an ecosystem of big providers/aggregators that have relatively "complete" picture of the graph, and then some fraction of smaller PDS instances. the small instances can just aggregate "small world" stuff (eg, direct follows/likes then one or two hops), and then users of those could optionally use the large aggregators to discover new folks to follow or links back, if they are curious. most users would probably go with a large/complete provider if care about seeing all backlinks - 13:00Ghanshyam Ramawat joined the room
- 13:36Ghanshyam Ramawat set a profile picture
- Mark Foster SSI: @mfoster.io14:27
In reply to this message
Oh man, you are going to force me to show my age. It was 1994 right when I graduated highs school, yikes! - 14:32protonwav joined the room
- 14:50codebarber joined the room
- 15:00Patrick van Kleef joined the room
- 15:02committed joined the room
- pfrazee15:28haha okay 10 years before I did, it's cool. In tech years we're the olds around here
- 15:29but that's awesome, I would've loved to see that. I have a live pink floyd album called Pulse that I think was recorded around then. It's my favorite version of many of their songs
- 15:29anyway we now return to our previously-schedule channel topic
- Mark Foster SSI: @mfoster.io
- pfrazee16:24ah man, super jealous
- 16:28zdeexploit joined the room
- Aaron Goldman16:43
In reply to this message
B) The latest head of the repo is the one that the home server returns and is signed by the key from the DID Document.
If the server updated to a commit that had no previous pointer or one that did not point to the last commit that is its wright. The old stale head is still valid just stale but there is no obligation that it be reachable from the latest head. Useful if you need to purge data from the repo.
C) The problem with aggregates is that you are trusting whoever made the aggregates that they are not adding or removing data. The servers will likely public some materialized views like the list and number of likes but to validate any particular like you would need to pull the repo with that like in it. Fortunately the repos are trees so a server that wanted to validate a like could do a narrow checkout of the repo with only the one record and the path to it. log(n) in the number of records in the repo.The value of an indexer is that it is doing the work of pulling from many repos and building the aggregates so that a PDS that wants to show big would data like the set of replies to a post.
- 17:01snarfed joined the room
- 17:10snarfed set a profile picture
- bnewbold17:34have problematic CIDs been a problem for IPFS? aka, brute-forcing block content to generate a CID (hash) with an offensive word in it. not much of a problem if the CID is never included in a URL or user-visible I guess
- pfrazee17:35yeah we dont use CIDs in URLs, usually just as a strong version identifier (and then, ofc, internally within the repo data structure)
- 17:35what attack vector do you have in mind?
- bnewbold17:36just people being trolls
- pfrazee17:36sure but how are you thinking?
- whyrusleeping17:38With my brain, i think
- pfrazee17:38therefore you are
- bnewbold17:39I guess it would be something like generating a post or piece of content, getting other folks to link or reply to it without seeing the CID/URI, and then some alternative user interface might show the full CID/URI/whatever by default. then it looks like the person has reposted/etc something with content in it
- whyrusleeping17:39Im just your friendly neighborhood ipfs developer here to tell you that brute forcing cids isn’t real
- 17:39Breaking a 256 bit hash is hard
- pfrazee17:39heh yeah shouldnt be a concern
- bnewbold17:39^ I don't think this is a real/serious concern
- pfrazee17:40good to check in on it though
- bnewbold17:40separately, I was thinking about users being able to brute-force arbitrary MST structures (eg, a top-level node with like 100k entries). I guess that just makes things slow though, you would presumably already have some other limit on receiving IPLD blocks with weird/large sizes. so I think this also isn't a real/serious concern
- pfrazee17:40separately but related, we use CIDs in various places to minimize this exact kind of concern
- 17:41for instance, likes and reposts include the CIDs of the content so that future edits cant be used to troll people
- bnewbold17:41oh yeah, I saw that and was wondering if it was the CID of the content, or the commit CID of the repo tree containing the content at that point in time
- pfrazee17:42I believe the CID of the record,
Daniel Holmgren would have to confirm
- 17:42they have similar meaning but record CID is more convenient IMO
- 17:43and would continue to be valid if the repo ever had to rebase itself, which would be a strong positive
- bnewbold17:43
In reply to this message
I mean, brute-forcing .onion URL prefixes is a thing, right? I guess even that is sort of expensive/hard - pfrazee17:43it is but only to create vanity prefixes
- 17:43@vecn:halogen.city joined the room
- pfrazee17:43meaning they brute-force a small subset of the output hash
- 17:44I'm not a cryptologist, but I believe it's supposed to be computationally infeasible to bruteforce a full sha256
- bnewbold17:44right, but that is all I meant by CID trolling earlier. creating a CID where the first 5 characters or whatever are a slur
- pfrazee17:45oh yeah. Well. Yeah I suppose you could do that.
- mikuhl17:45People create vanity Bitcoin addresses like that, it's possible yeah
- pfrazee17:46I dont think CIDs will ever show up in the UI. DIDs will but in very rare cases
- 17:46I suppose if you were going to mine for naughty words, that's where you'd do it
- bnewbold17:48I can already foresee a market for did:plc identifiers with as many leading "lucky 8" digits as possible
- mikuhl17:48When do you guys think you'll have some UI to show off or use?
- 17:48I am excited to see what the client looks like 😌
- pfrazee17:49got the dev build right in front of me
- mikuhl
- pfrazee
- 17:49here's a small preview screenshot:
- mikuhl
- 17:50I think I see that!
- pfrazee17:50haha oh no I've shared too much
- mikuhl17:52That must be a home icon or something though 😂
- pfrazee17:52heh yep
- Aaron Goldman18:52
In reply to this message
And fortunately because did:plc allows the rotation of the account and recovery keys a user can buy a did:plc and still have full control independent from the original creator. - 18:54`did:plc:[2-7a-z]{24}` but maybe not '8's
- 18:54I believe it was b32
- 18:58-=DIESEL=- joined the room
- 19:02@hms_brexit:matrix.org left the room
- 19:09-=DIESEL=- set a profile picture
- 19:40random() joined the room
- Mark Foster SSI: @mfoster.io20:03
whyrusleeping:
pfrazee I had an idea to see if I could create a CID Hash for some the common W3 rdf vocabularies and use them in SPARQL queries I did run into a problem and had to build a cloud flare worker to create content-type:turtle I didn't see a way to do this in dns link
- pfrazee20:13yeah you were showing me this earlier right?
- Mark Foster SSI: @mfoster.io20:14Yeah not really a BlueSky question more of a dns link and IPFS question
- pfrazee20:15right yeah
- Mark Foster SSI: @mfoster.io20:15It did get me to thinking about the context of blue sky and IPLD
- 20:15multiformats
- @wclayferguson:matrix.org20:20I'm just glad ATP is using Merkle Trees! I've had "marketing geniuses" telling me for decades to stop using the word 'tree'...and I always politely decline that advise!
- 20:21There's a good reason that since about 1967 "trees" have been how humans organize our info. :)
- Mark Foster SSI: @mfoster.io20:33
pfrazee: I am finally getting around to read through the docs, what I am picking up on is there are two Lexicon examples
atproto.comandbsky.app. I am interpreting it as if I want to createcats.combuild ontology and shapes around cats I would do that in JSON Schema and only allow that Lexicon in my app atcats.com. Is this correct thinking?(edited) - 20:40Medhat Yassin changed their display name to -=DIESEL=-
- 20:43민주 joined the room
- Aaron Goldman
- Daniel Holmgren21:01
In reply to this message
yup this is right. CID of the record & for the reasons you said: that the CID stays the same through rebases & doesn't require having the repo history - 21:02CIDs also have a multiformats prefix on them (usually "bafy") so you can't mine for the first letters in it. basic you could do is
bafy${word}...which is less obvious & CIDs will basically never make it into userland - Mark Foster SSI: @mfoster.io21:03
In reply to this message
Absolutely I am ready to give Small Kizzle an account! @SmallKizzle.com - @wclayferguson:matrix.org21:16...but the young kidz (i.e. under 30) are all gunna be mining for 80085 in the first chars.
- 21:17we simply cannot allow them to "abuse" hexadecimal in this way.
- pfrazee
- 21:43Cas Hoefman joined the room
- @wclayferguson:matrix.org22:12I used to type naughty numbers into my radio shack calculator as a kid, and my teachers would bust me by hitting the memory recall buttons on the dang thang.
- @lisko:matrix.org22:36That sounds extreme
- Mark Foster SSI: @mfoster.io22:37What people call Web3 I call Webπ because the SemanticWeb is Web3.0. Is the IPFS IPLD web considered Webπ? We have a group called SemGems 🧠💎 for us Web3.O guys by the way. I’m working on Web^(Ω1+Ω2+Ω3+Ω𝝅+Ω5+∞) = Future Internet or FutureWeb, all the webs!
- @planetoryd:matrix.org
- 23:00@prof.seagull:matrix.org joined the room
- 23:03prof.seagull changed their display name to zack
- 23:04zack changed their display name to zack (he/him)
- 23:04zack (he/him) changed their display name to Zack (he/him)
- 23:04@prof.seagull:matrix.org removed their display name (Zack (he/him))
Tue, Nov 1, 2022
- 00:57DFPintol joined the room
- 04:27Ashish Tandi joined the room
- mib128905:20
In reply to this message
I’m adding nothing to the conversation here, but that is literally the greatest metaphor ever….. - 05:50day27182 joined the room
- 05:52day27182 set a profile picture
- 05:57@vecn:halogen.city left the room
- 05:58day27182 changed their profile picture
- whyrusleeping06:22Alright y’all stay on topic
- 06:23Mark and planetoryd those posts both sound like something youd see under a tweet that mentions metamask, lets keep the discussion focused on bluesky development
- @lisko:matrix.org06:28#general-bsky:matrix.org is a good room
- 07:19@daniel793:matrix.org left the room
- 07:58Matteo Totaro joined the room
- 09:46donflaminggo changed their display name to DFPintol
- 10:17ozguner joined the room
- 10:21doesitsoeasley joined the room
- 10:26@georgishere:matrix.org joined the room
- 11:26@secu:mtrx.nz joined the room
- 12:01@toranosora:matrix.org removed their display name (Eren)
- Mark Foster SSI: @mfoster.io12:06
whyrusleeping: Definitely, I had some questions about IPLD and how it will allow tree repositories to person data stores. Is there some documentation or previous project references on some of the approaches in the Context of BlueSky?
- Aaron Goldman
- pfrazee12:14do we use ADLs?
- Aaron Goldman12:17I think most of the HAMTs where replaced by MSTs
- pfrazee12:17yeah I think that's right. I think we use IPLD for multiformats/codecs/etc, the canonicalized cbor encoding, the CAR file format, and the general tooling
- Aaron Goldman12:17But it is an example of IPLD trees
- pfrazee12:18I dont think we ever got into using ADLs (advanced data layouts) to abstract it
- 12:18anyway
Daniel Holmgren is the canonical source of knowledge here, but why might know too
- Mark Foster SSI: @mfoster.io12:45
In reply to this message
What are your thoughts on Schema mapping to ADL? https://ipld.io/specs/advanced-data-layouts/hamt/spec/#schema - pfrazee12:46it can be a useful abstraction but I'm not in a position to evaluate if ATP should use it
- 12:46which really should indicate how much the IPLD elements bubble up to the application developers' concerns: almost not at all
- 13:00@yamcube:halogen.city joined the room
- 13:09Kaisa joined the room
- Mark Foster SSI: @mfoster.io13:38
In reply to this message
I agree, I need to dig into IPLD more and haven’t had time., where are the communities congregating around this topic? - 13:57sindri_la_mancha joined the room
- 14:07@yamcube:halogen.city removed their display name (yamcube)
- 14:09@yamcube:halogen.city left the room
- 15:10Savi🌹🥰 joined the room
- 15:19Obi Sopulu changed their display name to Savi
- 15:19Savi changed their display name to Savi🌹🥰
- 15:56jasondavies joined the room
- 17:51SwyZe joined the room
- Daniel Holmgren17:52We haven't formally specified an ADL, but it's in essence what we're doing with the MST that we use. We use an MST instead of the already-specified HAMT because we want sort-ordered keys while retaining log(n) proof size
- 17:53SwyZe set a profile picture
- 17:53swyze changed their display name to SwyZe
- Daniel Holmgren
- 17:54@cranelab:matrix.org joined the room
- Daniel Holmgren17:55I used to work at Fission. They heavily use IPLD, and their Discord is a great place to hang out. Not spammy & lots of interesting discussions :)
- 18:03@cranelab:matrix.org left the room
- 18:34@mks:matrix.org joined the room
- 18:46@rimuru:gentoo.chat removed their display name (spooky spook 🎃)
- 18:50@rimuru:gentoo.chat set their display name to rimuru
- 18:54@rimuru:gentoo.chat changed their profile picture
- 19:53Wilian Valle joined the room
- 19:55Cyanic Cipher joined the room
- 20:17b0gg3r joined the room
- DFPintol20:25so...
- 20:25does this mean we can use IPLD for indexing web3?
- 20:25i.e. ipfs sites
- @wclayferguson:matrix.org22:06
Have you guys thought much about how ATP might be able to introduce users to the Semantic Web? I mean like how to perhaps let users enter Duck-Typed data into the system without even having to have a special type-specific GUI. One interesting concept is to just have a "standard" (really a convention) where people can just embed YAML directly into their markdown like this:
123
name: first: Clay last: FergusonThat would be a way to get the Semantic Web booted up. Apps could choose to strip out the YAMO for most displays, or have a "Display Properties" kind of feature to render it as text, and yes, in some cases even present the typed text as a GUI Editor. Regardless, the indexing engine would be a billion times more powerful if people could just arbitrarily put in typed info that can become searchable, if the DB is something like MongoDB and can hold arbitrary key/values on records, etc.
- 22:07Sales Manager joined the room
- @wclayferguson:matrix.org22:09
In 10 years from now, people can just be told, "Cast your vote by putting something like the following in your Gov't Record"
12
potus: MrWhoeverAnd that can literally be how voting is done.
- 22:09That's a "pie in the sky" example, but proves the power of the concept.
- 22:13Remember when HTML was first invented people would've said Markdown was completely silly and outdated. :) Simpler always wins. Another analogy: XML v.s. JSON.
- @wclayferguson:matrix.org22:27...but really even a variation on the #hashtag that has an extra delimiter allowing key/value might even be better since the entire planet already knows what a hashtag is and does.
- 22:29(not to mention "microformats"...but I'll leave it at that)
- pfrazee22:30I'm not totally sure whether at this stage whether RDF support like that will be big gainz, but let's ignore that for the moment --
- 22:30lexicon and ATP have at least one key property that's important for RDF support and that's global term names
- 22:31lexicon has a URI scheme,
lex:, and ATP has a schemeat: - @wclayferguson:matrix.org22:31cool, like a namespace.
- pfrazee22:31so the URI for a post record schema is
lex:app.bsky.post - 22:31and the URI for a post record is eg
at://alice.com/app.bsky.post/1234 - 22:32both of these URI schemes also have a defined behavior for the hash segment: they're interpreted as JSON pointers
- @wclayferguson:matrix.org22:33I started thinking about this last week because I have an index of about a million Fediverse Usernames (collected by crawling) and I was going to build a searchable index using each person's Bio Text but there's really no structure there. Would be nice if data had some structure to it, for searching purposes.
- pfrazee22:34so within the
app.bsky.postyou'll find{..., "record": "properties": {"text": {......}. Aka atpostSchema.record.properties.textyou'll find the definition of the text field for posts - 22:34which means the text field in a post should be globally termed as
lex:app.bsky.post#/record/properties/text - @wclayferguson:matrix.org22:35BTW, I'm aware of your Beaker work and how much you've had experience with typing, etc.
- pfrazee22:35haha cheers yeah, lots of years
- 22:35so anyway, my point is that I think the RDF graph triple for a post's text record would be
- 22:36
<at://alice.com/app.bsky.post/1234> <lex:app.bsky.post#/record/properties/text> "Hello, world!"@en - @wclayferguson:matrix.org22:36I'm glad you mentioned RDF I had temporarily forgotten about that.
- 22:36But yeah that RDF is mostly "computer consumable" not "human editable" tho, which is good for what it's doing, of course
- pfrazee22:37yeah I mean, RDF has a design constraint that we don't: it has to generalize to systems that share almost zero assumptions
- @wclayferguson:matrix.org22:38Even if the world knew what "#hobbies=cars,motorcycles,coffe,linux" meant it would be cool, but maybe just plain hashtags gets us 75% of the way towards that.
- 22:38Anyway I just wanted to bring up the topic, that's all.(edited)
- pfrazee22:40yeah np, it's something I've been idling over recently
- 22:40I understand RDF decently well -- more than the average dev, but I've never spent real time programming against RDF databases or anything
- 22:41but even then I'm only... 80% sure I formed the graph triple correctly above
- @wclayferguson:matrix.org22:42I need to dig into RDF much more myself, for sure.
- pfrazee22:42RDF is extremely elegant for what it's trying to do, but it's like the assembly-language of semantics. It's really hard to get to basic comprehension and it's super verbose
- 23:53Troubletortuga joined the room
Wed, Nov 2, 2022
- 00:04Abhishek Gedela joined the room
- Aaron Goldman01:04
In reply to this message
I think the query parameters syntax dose this with already existing parsers
1
?arg1=value+1&arg2=value2&arg3=123abcABC-_&arg4=true&arg5=5one could image a syntax like
1
lex:app.bsky.rel_me?did=did:plc:abc&handle=alice.example.comthat rendered oddly
(edited) - @wclayferguson:matrix.org01:30
Aaron Goldman: What I had been thinking about was if there were some sort of way to embed structured information in the actual content text, like how hashtags are used, and I guess it would be some sort of extension of the Markdown syntax or even a slight variation on the hashtag "syntax". Of course "syntax" is a big word I'm using just for saying it's something that starts with "#" hash symbol.
- 01:31Of course, embedding YAML in a fenced code block in Markdown can do it beautifully, actually without a new syntax, and all existing parsers can basically handle it.(edited)
- 01:31By 'fenced code block' I mean between three backticks above and below the YAML.
- 01:33so...for example people could include that in their Bio Text (like an ActivityPub User Bio) and specify things like name, email, gender pronouns, hobbies, interests, etc.
- 01:33but really it just opens up a whole new world of "Semantic Web" if apps start finding and parsing that.
- 03:21vinay-keshava changed their display name to vinay
- 05:43uguboz joined the room
- 05:49Kev Cas joined the room
- 05:55@jeromu:matrix.org left the room
- 06:04digharatta joined the room
- 06:18@obsmatr:matrix.org joined the room
- digharatta06:20
In reply to this message
Please check the work done in this regard at the Open Recognition Framework https://www.openrecognition.org . This would really open up a whole new world of "Semantic Web". - 06:24Video conference started by arcalinea
- 06:44zeandrn joined the room
- 06:48André LFV joined the room
- 10:09Video conference ended by arcalinea
- arcalinea10:10Oops -- I don't even know what I clicked to start a video conference in here
- pfrazee
- 10:10maybe one of those
- @numero6:codelutin.com10:13
In reply to this message
I think it's still jitsi but in the future, it will be element call (still in beta but with some P2P in it) https://call.element.io/ give it a shot 😉(edited) - arcalinea10:14i don't recall even opening element. might've just clicked it when reshuffling screens. anyways, didn't mean to start a video call, sorry for the interruption.
- 10:33tmw (he/they) changed their profile picture
- 10:33Henrique S. Oliveira joined the room
- b0gg3r12:02Been digging into the docs onatproto.comI realise it's early days, but is there a "shape" for what server-to-server syncing might look like? Trying to get a sense for how public data like posts, etc are stored compared to DMs, etc.(edited)
- 12:23pho joined the room
- pfrazee13:20
In reply to this message
the core of server-to-server sync is akin to git repo sync. The servers are replicating each others' data repos. - 13:20there are two "parameters" to a sync: narrow (yes/no) and shallow (yes/no)
- 13:20narrow is where you're syncing a subset of a repository, aka just the record types you're interested in
- 13:20shallow is where you're not interested in the full history, just the latest state
- 13:21narrow & shallow will be the most common form of sync we expect, since it gives just the data needed to run a given application
- 13:21default sync is pull based; my PDS actively syncs the repos I follow
- 13:22events which require a push, like mentions & replies & etc, will do a very-narrow & shallow push of the relevant record
- 13:22selectively-shared data like DMs are not fully specced yet but have been actively discussed by the team and we have solutions in mind. Just dont want to talk about them before we're sure, to avoid confusing folks
- @wclayferguson:matrix.org13:52Merkle Tree syncing algorighm will be super simple (and efficient) too because once you hit a branch with matching hash (or even the root of someone's repo) you'll know the entire subgraph is a match and not even have to drill down into that node of the tree. Don't tell my ActivityPub Frenz I said so, but it'll be light-years ahead of how ActivityPub outboxes work. :)(edited)
- b0gg3r13:55Yeah, kinda blown away at how viable crazy architecture is made by merkle trees
- 13:56Would be interesting to integrate SIEM style/little snitch style security alerts on the PDS Would catch scraping, or if an application attempts to access data it shouldn't. Could be federated as well if applications are known to be malicious
- 13:57I'm sure ye've considered this. Just spitballing
- @wclayferguson:matrix.org13:58Probably secret data will be encrypted, so it won't matter if the entire repo is publicly accessible.
- pfrazee13:59I'm personally not a huge fan of handling selectively-shared data by published encrypted records
- b0gg3r13:59Would my photos be encrypted, and then I furnish a key to an application? Or would they be considered public (in a instagram style scenario)
- pfrazee13:59yeah. It's a supportable choice but you're allowing your ciphertext to be distributed widely. If that key leaks somehow, you're going to be pwned in a very public fashion
- 14:00I'd prefer we use at-rest encryption plus an alternative system for sending the data
- b0gg3r14:00So decrypt within the PDS, then re-encrypt and send when requested over the network?
- pfrazee14:01honestly I'd rather just use a separate protocol. Every user has a public server. You can just send POST requests to them
- @wclayferguson:matrix.org14:02I was thinking along the lines of if my repo root has one hash, that has to contain all the data.
- 14:02I guess there could be a public repo, and a separate one for each secret group of friends or something. But I'll quit speculating until I read the latest docs, which I haven't done yet. :)
- b0gg3r14:04
In reply to this message
I think what pfrazee: was proposing is that the entire repo is shared publicly, but that the access control is not done via the decryption key. Instead the PDS manages access.
Lmk if I got that wrong
- @wclayferguson:matrix.org
- 14:08I was thinking in terms of big indexing services eating up all the data and making it searchable, but it sounds like you mean something more "peer-to-peer" than I had thought...where a server sends data only to, and directly to, the users who are allowed to see it.(edited)
- pfrazee14:09that's actually not 100% my position right now but yeah, this is what I meant with not talking about it publicly -- because we haven't nailed down how we think this can work and I dont want to give half baked answers
- b0gg3r14:10You gave a pretty good "this ain't done" disclaimer
- 14:10It's an interesting exercise
- pfrazee14:10yeah this one is spicy, it has big implications and it's a difficult problem
- 14:11to roughly encapsulate my position, I believe it's possible to provide fine-grained selective sharing with at rest encryption, but I'm pursuing a solution that does that "off repo" so to speak
- 14:11having worked on very similar systems through the years (SSB and Dat/Hyper both had repo-like structures at their core) I've just never been satisfied with the "on repo" solutions to selective sharing
- @wclayferguson:matrix.org14:13One thing I see is that for merkle-optimizations of syncing all public data will need to be under a single root/branch, and the stuff that's fine-grain shared would need to be in it's own separate "branch".
- pfrazee14:14if you put private data in a branch then you end up producing new commit heads for private writes
- 14:15so you reveal when you do a private write, plus it adds a lot of useless data sync
- @wclayferguson:matrix.org14:16well if you touch anything on a tree the merkle-root changes. All nodes that are an ancestor of the one written to will change their hash.
- 14:16For a merkle write you have to walk up the tree at every level updating the hash and eventually the root hash has to chagne.
- 14:17IPFS cannot do this, which is why they require that you can only add children, and unless you're using something like MFS you can't do that "walk up to the root" kinda thing. if I' making sense.
- 14:18That's the benefit of a merkle-tree for syncing. If the root hash matches then the whole tree is a match.
- pfrazee14:18right, that all supports my point though
- @wclayferguson:matrix.org
- pfrazee14:20I think the system remains much simpler if you don't try to put access control within a repo
- 14:20repo-level access controls, that might be doable (can I access anything or nothing)
- 14:20at-rest encryption in the repo doesnt complicate the system too much, but it's hard to produce the exact security properties you want
- @wclayferguson:matrix.org14:21Right, I was thinking more about efficiencies of syncing rather than the "who can even see data" part of it.
- pfrazee14:21yeah
- @wclayferguson:matrix.org14:21but both are equally important things of course.
- b0gg3r14:35Seems like branches wouldn't solve it either since you'd need a branch for every DM conversation, group chat, private forum, etc
- pfrazee14:37right
- b0gg3r14:40And if it's left to the application layer, portability isn't as guaranteed?
- pfrazee14:41generally that's true, but we intend to solve this
- b0gg3r14:42So an alternate protocol might be some way of storing private data such that the access issues and portability is enforced, and that protocol would be part of the ATP stack? Really appreciate the explanations(edited)
- pfrazee14:42that's the route I'm advocating/pursuing within the team. Nothing here is settled
- b0gg3r14:43I look forward to the next spec revision :)
- pfrazee14:44:)
- 15:38@micbz:matrix.org left the room
- 16:15quiltmeow joined the room
- 18:54@bjf:matrix.org joined the room
- 19:39bsjdjjdj joined the room
- 20:38Mert Topkar joined the room
- 20:43molonelaveh joined the room
- 22:50Mark Rachapoom joined the room
- Mark Rachapoom22:57hello, I am new to @protocol and I have read everything on the dev section onatproto.comand, am, not quite sure where to start building. Any suggestion would be really appreciated!
- b0gg3r
- 23:22Are you comfy sending http requests?
- Mark Rachapoom23:23yuppp
- 23:23I am
- 23:24I am familiar with axios
- b0gg3r23:25That was enough to get me going, get a feel for things. At this time the code is a lot of the documentation
- Mark Rachapoom
- pfrazee23:26It’s worth noting that we don’t intend to leave things this difficult to use
- 23:27It’s just very unfinished atm
- pfrazee23:28Also, if you look in the pds package’s tests, you can learn a lot — including how to use the API package, which completely wraps everything with well defined types
- b0gg3r23:28Yeah, like it says V0.0.1 when it starts up
- 23:28EARLY days
- pfrazee23:29Ya
- 23:36Asha Ramegowda changed their display name to alrg
- 23:38instantchow joined the room
Thu, Nov 3, 2022
- 05:58Pavel Kofman 🇺🇦 joined the room
- 06:09steffen joined the room
- 06:19ztr joined the room
- 06:45Martin Shaw joined the room
- 08:24tangmo1994 joined the room
- 10:53@maxi:kayla.horse joined the room
- 13:10wolix joined the room
- wolix13:10Hello there
- 14:51@vx_omega:matrix.org joined the room
- 15:16mayydayyy joined the room
- 17:27Ismail Esuola joined the room
- 19:50u joined the room
- 19:51Usman Maqsood changed their display name to u
- 21:11heli0s joined the room
- @bjf:matrix.org23:15Hi All, I have an idea for a web app that I was planning on using bubble for as I have no real coding skills. This protocol seems to have attributes, like decentralization, portability, etc that I think would be really important to my users and the product. Can some help explain what languages are used for the UI layers for all this? I'm having trouble picturing data and task flow beginning from the user interface. Is it possible to use JavaScript? Thanks for any help!
Fri, Nov 4, 2022
- b0gg3r01:30Anything that can send HTTP requests
- 01:46nuhae joined the room
- 01:52kedas joined the room
- 04:48@halfor:matrix.org joined the room
- 06:13Alessandro Festa joined the room
- 06:26j joined the room
- 06:32victorguedes joined the room
- 06:35@wasp:wasp.dev joined the room
- @bjf:matrix.org07:57Thank you
- 09:21Dean joined the room
- 09:52SURGAT joined the room
- Dean11:03
Hey guys, I'm trying to use the api to create a sessionClient. Currently running into this error when connecting
sessionClient123
const sessionClient: SessionClient = (await import('../atproto/packages/api/src')) .sessionClient; const client: SessionServiceClient= sessionClient.service('http://localhost:2583');Results in:
1234567
session.ts:37 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'sessionManager') at new SessionServiceClient (session.ts:37:37) at SessionClient.service (session.ts:25:12) at +page.svelte:17:47 - 11:06
It's related to
xrpcbeing undefined when initializing a new SessionClient. Fromapi/session.ts:12345678
export class SessionServiceClient extends ServiceClient { xrpc: SessionXrpcServiceClient sessionManager: SessionManager constructor(baseClient: Client, xrpcService: SessionXrpcServiceClient) { super(baseClient, xrpcService) this.sessionManager = this.xrpc.sessionManager } } - pfrazee
- Dean
- 11:11atnorl joined the room
- Steven Franssen
- @planetoryd:matrix.org
- Aaron Goldman14:30
In reply to this message
Odds of Sha256 collision:
1/(2^256) + p(algorithm broken) ≈ p(algorithm broken)
- b0gg3r17:15Plus I presume the hashing function could be swapped out if that day comes
- @wclayferguson:matrix.org17:18That's why IPFS built a type of CID where the first byte (or two?) indicates the type of hashing algorithm used, but I think even Bitcoin relies on SHA256 so who knows when it will become obsolete.
- b0gg3r17:18Infinite timeline I guess
- @wclayferguson:matrix.org17:18People keep worrying about Quantum Computing, and i'm not up to speed on all that shenanigans. :)(edited)
- whyrusleeping18:01Bluesky uses CIDs (which contain multihashes) switching hash algo down the road will be not too hard if we have to
- 18:03But realtalk, sha256 is fine, we really dont need to worry about hash collisions. Theres like ten billion other more likely to happen bad things
- 18:48mrtsunami4 joined the room
- 19:41orcam joined the room
- 20:48cz88 joined the room
- 22:49@bewildee:matrix.org joined the room
- @bewildee:matrix.org22:51
Hey everyone 👋
Was checking out the site and saw the matrix link. Super excited for blue sky.
- Aaron Goldman23:00
In reply to this message
Quantum is not a problem for sha256 but bluesky does use elliptical curve signatures that are not quantum safe - 23:02nickrick joined the room
- 23:09Rhino Unknown joined the room
- 23:24hrjet joined the room
Sat, Nov 5, 2022
- 00:42@mrhacking:matrix.org joined the room
- @mrhacking:matrix.org00:42Also interested in Bluesky. Thanks for having this chat. Hacker here, if anyone needs me to poke around and try to help iron out some bugs.
- 02:30mathieu joined the room
- b0gg3r02:41Some folks have sha256 collision concerns if you can report back @mrhacking
- @mrhacking:matrix.org03:06I can report that I don't have quantum computing capacity lol. The security of sha256 will undoubtedly be tested when quantum computing becomes the norm.
- 03:08However, that won't happen for awhile and if it does the hashing algorithm can be switched.
- Aaron Goldman03:58
In reply to this message
At the moment I would bet there are work application attacks that would slow down a home server but those are fixable. I would worry more about ways to spoof someone else's repo.
The only one that comes to mind is games with the Handels. DNS unicode lookalikes, http interception, PDS login
If you can spoof a binding between a handle and a DID they will know you by the DID there after. Not clear how to recover from this
- 04:03Abhishek Rajan joined the room
- @mrhacking:matrix.org
- 05:02desilin joined the room
- 06:38MightySpaceman (OLD -> m_spaceman:matrix.org) joined the room
- 06:54xbolo joined the room
- 07:01Winning Together joined the room
- 07:53bnxs joined the room
- 08:15Shibby Shabba changed their display name to Shibby Shabba (Old)
- 08:36Shibby Shabba (Old) changed their display name to bnxs
- 08:36bnxs set a profile picture
- 09:08kolijoe joined the room
- 09:43Stefan joined the room
- 10:06@jdmark:matrix.org joined the room
- 10:38dome joined the room
- Aaron Goldman11:11
In reply to this message
Pen-testing will more interesting once there is a beta instance to get into the details. - 11:13@vx_omega:matrix.org left the room
- 11:15josam joined the room
- 11:18Joan Samper changed their display name to josam
- 11:24daviding joined the room
- @mrhacking:matrix.org
- 11:52rogama25 joined the room
- 11:56rogama25 set a profile picture
- Aaron Goldman12:27
In reply to this message
I suppose it's a good idea to go ahead and set upsecurity@blueskyweb.xyzas a google group so that engineers can be emailed about vulnerabilities rather than public issues in GitHub 🤔 - 12:30Some things are nice to have setup before you need them 😜
- 13:03MainTobias joined the room
- 13:23@jebba:matrix.org joined the room
- @jebba:matrix.org13:23First thing I read is about setting up a google group.... yikes.
- 13:41@snzeh:matrix.org joined the room
- @snzeh:matrix.org13:48Hey
- @snzeh:matrix.org13:55Is it possible to change you user id?
- 13:56@asdflance3030:matrix.org joined the room
- 13:57@asdflance3030:matrix.org left the room
- pfrazee
- @snzeh:matrix.org13:58Yes please
- pfrazee13:58yeah, that's doable
- 13:58everybody has a DID and (at least one) handle
- 13:58the DID is like a UUID that you use internally. It's persistent
- 13:58the handle is a domain name, and it can change
- @snzeh:matrix.org13:59the @snzeh bit before the :matrix.org
- pfrazee13:59...you mean, in matrix?
- 14:00if you meant matrix, dunno, I imagine
- @snzeh:matrix.org14:00The "snzeh" part.
- 14:00I just get the option to upgrade to my domain
- pfrazee14:01yeah no idea. It's definitely possible but I havent poked around
- @snzeh:matrix.org14:01:-)
- 14:18Alejandro_ joined the room
- Alejandro_14:19Hello
- 14:22alejandro_ changed their display name to Alejandro_
- 14:22Alejandro_ set a profile picture
- snarfed14:26hi all! I'm trying to follow the federation part of ATP. https://atproto.com/guides/overview#federation implies that it happens via sync, eg com.atproto.sync.updateRepo. is that right?
- 14:26so for example, when a bsky user creates a post, would their client send something like com.atproto.repo.createRecord with anapp.bsky.feed.postto their PDS, and then their PDS would make com.atproto.sync.upateRepo calls to each of their followers' PDSes?
- 14:54@dennethan:matrix.org joined the room
- 15:00Alberto Robles joined the room
- Pavel Kofman 🇺🇦
- 15:31mark roth joined the room
- 15:35@secu:mtrx.nz set a profile picture
- whyrusleeping15:40Im sure theres more interesting things to talk about than quantum cryptography
- 15:40Id love it if the channel could move on from being worried about hash functions breaking
- 15:42
In reply to this message
Thats roughly the idea, we havent worked out the algorithm precisely but since we have everything in merkle trees the incremental updates are cheap - George Antoniadis15:57
If a repo contains records from a single user, that means that replies are stored in the repo of the person replying?
If so, how does replying to a thread/user on a different pds work?
ie thread’s repo R1 is on pds S1, user with repo R2 from pds S2 replies. Does R2 now needs to be synced to S1 for let’s say
app.bsky.getPostThreadto work on S1?Does that means S2 needs to announce to S1 that there is update to a repo it cares about? And does that happen with
updateRepoor is it different method? - whyrusleeping16:17That is correct, replies are stored in the replyers repo. The interesting thing about this is that it forces you to rethink what replies mean. Every random person reacting to a post doesn’t necessarily deserve to be included in the same thread, and you dont even necessarily want to notify the poster about that all the time
- 16:17There are some tricky questions about notifications here, but for the most part it will look like the replier (or the repliers pds) notifying the OPs pds of the post
- 16:18Then its up the the OPs policy whether or not to do anything about thay
- 16:18You could say only include replies from people i follow, or only include replies from a trusted set of PDSs, or only from people with a particular badge
- 16:19The default will be set by your pds, and likely will be “all replies from users of our selected set of PDSs”
- @snzeh:matrix.org16:39Does anyone know how long the waitlist takes?
- whyrusleeping16:50lol
- snarfed16:51thanks
whyrusleeping! I'm starting to implement parts of ATP based on the docs. thinking of building a bridge to/from indieweb. I know you all are early and probably not fully ready for that yet, I'll be patient and keep expectations low 😀
- whyrusleeping16:51Oh sweet
- 16:51Its definitely in the phase where people can tinker with it
- 16:52Not production ready by any means, and things are evolving pretty regularly, but ive been having fun hacking with it
- snarfed16:58nice!
- 17:01@jebba:matrix.org left the room
- 17:21s3k joined the room
- 17:37@alxjsn:matrix.org joined the room
- 17:41totalolage joined the room
- George Antoniadis17:43Is an official go server or any sort of client sdk being worked on or planned?
- 18:3064BitAsura joined the room
- 18:31SAMBATH KUMAR LOGAKRISHNAN changed their display name to 64BitAsura
- 18:38David Phoenyx joined the room
- whyrusleeping
- 18:43Not official, but ive been writing things as i need them
- 18:43Just finishing up some code gen for lexicon
- 18:45David Phoenyx set a profile picture
- George Antoniadis18:49Thanks, this looks like a solid start. I'd like to find some time playing around with how indexers/scrapers would work.
- whyrusleeping18:55Thats my goal too
- 18:55Probably gonna wire things up to elasticsearch or something and see how far that gets me
- @wclayferguson:matrix.org19:18I couldn't really understand the elasticsearch license. https://github.com/elastic/elasticsearch/blob/main/LICENSE.txt
- 19:18I tend to only go for MIT License, or GPL.
- 19:19Definitely the Lucene technology itself is awesome. It's what powers search in MongoDB too. Then there's SOLR, which is cool.
- George Antoniadis19:19I think the TL;DR is "It's Apache (fixed) unless you want to offer elastic search service for money" which AWS was trying to do.(edited)
- @wclayferguson:matrix.org19:20I'd personally never touch AWS with a ten foot pole. Proprietary.(edited)
- George Antoniadis19:21You can probably find more about the server side license thingie from mongo's' faqs who I think started this whole thing. https://www.mongodb.com/licensing/server-side-public-license/faq
- @wclayferguson:matrix.org19:22I'm using MongoDB and their license basically says you can't compete directly with them by providing any "MongoDB as a service" offerings. Other than that you're free.
- 19:23Free to use it in a product that makes money.
- George Antoniadis19:24That's pretty much the same with Elastic afaik
- @wclayferguson:matrix.org19:24They say it's "Elastic License 2.0" but don't define what that means. Definitely hiding some details in there, imo.
- George Antoniadis19:25Yeah true, that's annoying
- @wclayferguson:matrix.org19:25I wonder if the text even exists in github. Should be in the LICENSE file if you ask me. In full text.
- 19:26If it was good news they wouldn't be hiding it. lol.
- 19:27And Amazon has shut down customer websites (built on AWS) for political reasons. They are to be avoided like the plague.(edited)
- 20:03Felipe Garcia joined the room
- Felipe Garcia20:17Hey guys! Got interested in bluesky work and saw the atproto project. Are you guys encouraging open-source contributions atm? If so, is there any guide for running a local environment + any part of the project that are needing extra hands?
- 20:42Willow Rubenstein joined the room
- Willow Rubenstein20:44curious if anyone has details on what we can actually expect from bluesky? It obv isn't going to be 1:1 to twitter, but looking at what is public, it seems relatively similar. If any of you have access, can you elaborate on whether or not there is direct messaging functionality (iirc I saw this when I looked through, not sure)
- @elsif:matrix.org20:44are you planning to use mongodb? 🙁
- George Antoniadis20:50@elsif:matrix.org: the above discussion was an off-topic rant about the licensing of elastic search and mongodo, nothing to do with what the Bluesky devs are working on. Sorry for any confusion it might have caused.(edited)
- @elsif:matrix.org21:01okay, cool 🙂
- @10allday:matrix.org21:07Why isn't usenet used instead of creating a new protocol?
- MightySpaceman (OLD -> m_spaceman:matrix.org)
- 21:13Bunnings moment
- 21:13Im in Bunnings
- Aaron Goldman22:44
In reply to this message
Usenet doesn't sign messages for authentication. The Identity concept didn't migrate from server to server. There is no negative caching for an indexer to tell you that a publisher hasn't published a post with that name. It tends to assume you will download all the post titles and then discard rather than a narrow query for a subset of the collections. - 22:46That said it is certainly an inspiration and I still recommend anyone developing a distribution protocol to read about it's history as they think through their design.
- whyrusleeping22:53Lol, i feel like the usenet comment must be a troll
- Aaron Goldman23:13
In reply to this message
Perhaps I have spent slightly too much time researching all the previous content distribution protocols.
Usenet is much better than the BBS(Bulletin Bord System)s that preceded the internet.
Sun, Nov 6, 2022
- 01:54Fernando Rey joined the room
- Fernando Rey01:56I dont understand what does they mean by "Portable accounts"???
- 01:36kickboxer changed their display name to Pavel Kofman 🇺🇦
- 01:42Pavel Kofman 🇺🇦 set a profile picture
- whyrusleeping01:58You can take your data out at any time, switch to a different service, and everything still works
- 01:59Your followers can still see your posts
- 02:00You can still engage with the world without starting over
- 03:11@kf.walkow:converser.eu joined the room
- Steven Franssen
- 03:15
In reply to this message
you can change servers with the same id, in a system like nostr you can use a combination of servers at anytime, their pubkey based ids have no real home - MightySpaceman (OLD -> m_spaceman:matrix.org)
- 03:15MightySpaceman (OLD -> m_spaceman:matrix.org) changed their profile picture
- MightySpaceman (OLD -> m_spaceman:matrix.org)
- 03:16hm
- Steven Franssen03:16um
- MightySpaceman (OLD -> m_spaceman:matrix.org)
- 03:16me right now
- @lisko:matrix.org03:45will change this to xmpp, fedora, and pleroma or something
- @penaiple:midov.pl03:59ubuntu is nonfree software
- @lisko:matrix.org04:03Close enough
- 04:04kalkant joined the room
- 04:40@massimo:kanik0.wtf joined the room
- 06:09wstier072 joined the room
- 06:26unholy0 joined the room
- unholy0
- 06:55@lisko:matrix.org changed their profile picture
- 08:18Miloš Havlíček joined the room
- 08:37irazorx0 joined the room
- Dean08:48Do I understand correctly that any front-end application can authenticate users by reading the
root domain in theirhandle? So bluesky (if they allow it) could log in a user by authenticatingalice.some-other-atp-provider.com?(edited) - 08:48Sorry not the root domain, but the full handle contains a response that has the ATP DID data, correct?(edited)
- Dean08:54So with the current dev-env prototype server you can enter any URL to create a handle with (using
app.blsky.createAccount()), but I suppose a public production server would only be allowing handles to be created using subdomains from its root domain?(edited) - Aaron Goldman09:15
In reply to this message
LAN may not be the best analogy as the BBS(Bulletin Bord System) used phone calls you could sync up with any BBS you wanted just a long distance charge may apply.
Certainly no push.
The gossip strategy is interesting.Because the repo's are self authenticating it makes sense when you establish a connection with a peer PDS to let it send you repos it has but is not the PDS for.
If there ends up being a clique in the PDS graph it would take O(log(n)) time and O(log(n)) messages to gossip the repo around rather than O(n) time and O(n²) messages.
- Aaron Goldman09:22Granted my expectations based on no evidence is that the indexers will cache most of the popular repos and the narrow checkouts of the responses to popular repos so a PDS could get most of its updates from an indexer and only for unpopular content need to contact PDSs directly. If this is true most of the scaling pain is pushed to the indexes and the PDSs will only need to serve a small number of syncing requests
- 10:20schultzter joined the room
- 10:21@bradstewart:matrix.org joined the room
- 10:35txusblack.eth joined the room
- 10:41txusblack.eth set a profile picture
- txusblack.eth10:43Hi everyone. I'm Diego, also interested in Bluesky. Thank you for creating this community. I'm a devops leader in a startup and developer, I would like to contribute to the project if possible
- 10:44Diego Moreno changed their display name to txusblack.eth
- 10:48Ozan Duman joined the room
- mikestaub11:18
arcalinea: It may soon be time to create a
CONTRIBUTING.mdfile in the main repo. There are many devs now that want to volunteer, leveraging them in a smart way would accelerate the roadmap. The core team should likely focus on "vertical" slices through the stack, "horizontal" should be left to the community. What do you think? - 11:23Wes Souza joined the room
- 11:24wessouza changed their display name to Wes Souza
- 11:24Wes Souza set a profile picture
- 12:18Laurent Bouchard joined the room
- 13:25EMMANUEL ADUSU joined the room
- whyrusleeping14:05Speaking from my experience with ipfs and Filecoin, this is much much easier said than done. We absolutely want the communities involvement, but doing that in a way that serves as an accelerant takes thought. Most random PRs ive gotten in the past decade have cost me more time than they have saved me. The real value add of open source tends to be bug reports and “third party” libraries— people hacking integrations and publishing them to their own repos.
That said, we have gotten a lot of very good contributors who have turned full time over the years, but its definitely not the bulk of it - 14:06I really want to enable the open source community here, but also want to temper expectations, and the vertical vs horizontal framing i think is a pretty good starting point





