Tech Talk: Rudy Fraser on implementing AT Protocol in Rust for Blacksky
Rudy Fraser has implemented AT Protocol in Rust to support the Blacksky project: Building custom social media algorithms to promote and amplify Black content. Join us to learn from Rudy in what he has built so far, what his roadmap is, and how you can help.
Rudy Fraser has implemented AT Protocol in Rust to support the Blacksky project: Building custom social media algorithms to promote and amplify Black content.
Deeply invested in building open source software for and with marginalized communities. With Blacksky I am building a new Black internet not owned or controlled by a single company or entity. With Papertree I am providing community organizations and nonprofits with tools to collectively manage a shared pool of funds.
Join us to learn from Rudy in what he has built so far, what his roadmap is, and how you can help.
All I do is write code, make quippy posts, and watch Blacksky organically grow. — Rudy Fraser
rsky: AT Protocol Rust implementation
rsky (/ˈrɪski/) is intended to be a full implementation of AT Protocol in the Rust language. Most of the code here are general purpose implementations while some (like rsky-feedgen) are specific to the use cases of the Blacksky community.
Rust Services:
rsky-pds
: "Personal Data Server", hosting repo content for atproto accounts. It differs from the canonical Typescript implementation by using Postgres instead of SQLite, s3 compatible blob storage instead of on-disk, and mailgun for emailing. All to make the PDS easier to migrate between cloud hosting providers and more maintainable.rsky-feedgen
: Bluesky feed generator that closely follows the use cases of the Blacksky community.rsky-firehose
: Firehose consumer.
Blog Post
Any VCs funding closed source, proprietary network social media startups in 2024 should be sued or something for wasting their LPs' investments. It's a waste of human potential to start a network from scratch when there are 3 growing protocols they could be building on between atproto, activitypub, and nostr.
Support Rudy in Building Blacksky
Open Collective is used to transparently collect funds and track expenses.
This includes support for the team with Cybersecurity protections:
Blacksky has grown nearly 10x in the last year as has the AT Protocol ecosystem overall. If that trend continues, it will be even bigger this time next year. As beautiful and exciting as that is, it likely guarantees future attacks on Blacksky (this wasn't the first and likely isn't the last).
Video
Here is the GSlides presentation from Rudy:
Chatlog
00:16:22 Rudy Fraser: Reacted to "I saw Dionne Warwick..." with 🔥
00:16:23 Chad Kohalyk: Reacted to "Independent appview ..." with 🙌
00:18:41 Boris Mann: Replying to "Independent appview ..."
Got a link?
00:20:14 @laurenshof.online: Replying to "Independent appview ..."
Yes but not now as bsky is currently dying lol
00:21:23 Boris Mann: Ozone is the moderation admin tool
00:21:38 Boris Mann: https://github.com/bluesky-social/ozone
00:21:41 Chris Boscolo: Replying to "Ozone is the moderat..."
Lol, you can read my mind
00:22:02 jon: Replying to "Ozone is the moderat..."
Yeah, Ozone could use some love
00:22:06 Sebastian: Reacted to "Yes but not now as …" with 😭
00:22:20 Boris Mann: Chad and I have been looking at a lot of back office / fiscal hosting — needed all over the world
00:23:36 Chad Kohalyk: https://opencollective.com/pact_collective
00:23:49 jon: Yeah the context-awareness is such a key point, no way for a single mod team to be able to do that for all contexts worldwide
00:24:13 @laurenshof.online: Damn those stats
00:24:30 @laurenshof.online: That’s awesome
00:24:36 Kukuwa (she/her): Incredible!!
00:26:59 Boris Mann: @Chris Boscolo this is roughly where Open Frames would come in
00:27:08 Boris Mann: Personalized content
00:28:12 rafael: Those 315k are visits to https://bsky.app/profile/rudyfraser.com/feed/blacksky?
00:28:51 rafael: thx
00:30:28 James Walker (@walkah): Caddy is a webserver / proxy (a la nginx)
00:30:35 James Walker (@walkah): https://caddyserver.com/
00:32:06 Chris Boscolo: Reacted to "@Chris Boscolo this ..." with ❤️
00:33:05 drew mcarthur: i haven't used ozone before - how easily can you invite other moderators to your instance? how many people are handling that queue?
00:33:10 Chad Kohalyk: Forwarding requests to a different moderating service is an interesting idea
00:34:08 Chad Kohalyk: Bluesy is down
00:34:10 Chad Kohalyk: ish
00:34:15 Nick Gerakines (he/him): Everything is wonky at the moment
00:34:41 Chad Kohalyk: We need a Fail Butterfly being carried by whales image
00:35:46 jon: I think of the current Ozone as a prototype getting used in production
00:36:11 Boris Mann: Replying to "I think of the curre..."
Yeah it’s a database admin view they threw an interface on
00:37:45 Will Corrigan: nobody understands how messed up moderation is on a big scale until they do it 😢
00:37:53 Nick Gerakines (he/him): Reacted to "nobody understands..." with ☝️
00:40:02 jon: Reacted to "nobody understands h..." with 💯
00:42:28 Christoph: Reacted to "nobody understands h..." with 💯
00:42:30 Boris Mann: Lot of talkers. Rudy is a builder and a shipper.
00:42:40 Boris Mann: Also: PRs welcome 😂
00:42:46 drew mcarthur: Reacted to "Also: PRs welcome 😂" with 😁
00:43:22 Christoph: Replying to "Also: PRs welcome 😂"
I got my fork
00:43:59 Cathy Sandifer: Reacted to "nobody understands h..." with 💯
00:49:58 Nick Gerakines (he/him): moderation and the subsequent therapy
00:50:05 Jacob Chapel: also need more people so you can rotate them, it is likely only going to be harder to moderate as more people join
00:50:09 jon: 100%. Moderation is emotional labor
00:53:25 @laurenshof.online: Jazstream
00:53:40 Jacob Chapel: rust :D
00:53:41 drew mcarthur: cause rust is so fast
00:53:44 Ryan Barrett: same here, re firehose vs jetstream
00:53:52 Will Corrigan: rust consumers for life
00:53:52 James Walker (@walkah): Reacted to "cause rust is so fas..." with 🦀
00:53:53 Ryan Barrett: biggest motivation right now would be as a courtesy to the bluesky team
00:53:56 Boris Mann: Reacted to "rust :D" with 🦀
00:53:57 James Walker (@walkah): Reacted to "rust consumers for l..." with 🦀
00:54:04 Boris Mann: crabsky
00:54:10 James Walker (@walkah): Reacted to "crabsky" with 🦀
00:54:11 Chad Kohalyk: Reacted to "crabsky" with 🦀
00:54:24 James Walker (@walkah): Reacted to "biggest motivation r..." with 🙌
00:54:37 Christoph: Reacted to "rust consumers for l..." with 🦀
00:54:42 Christoph: Reacted to "rust :D" with 🦀
00:54:43 Christoph: Reacted to "cause rust is so fas..." with 🦀
00:54:47 Christoph: Reacted to "crabsky" with 🦀
00:54:49 Will Corrigan: Reacted to "crabsky" with 🦀
00:55:17 Ryan Barrett: yuuup
00:55:45 Boris Mann: https://github.com/bluesky-social/atproto/discussions/2350
00:55:53 James Walker (@walkah): Reacted to "https://github.com/b..." with 🙏
00:58:19 Boris Mann: This would be more easily activitypub compatible
00:58:34 Nick Gerakines (he/him): Oh snap, did DO ever resolve the grant issue?
00:58:58 Nick Gerakines (he/him): :
00:59:00 dgaff: Sorry, I have to jump for a call! Thank you so much Rudy!
00:59:07 Boris Mann: Reacted to "Sorry, I have to jum..." with 👋
00:59:53 rafael: That's intended to change, BTW
01:02:46 Ryan Barrett: testing++
01:03:15 James Walker (@walkah): @Boris Mann are you posting recordings? (Gotta drop for another call)
01:03:38 Boris Mann: Replying to "@Boris Mann are you ..."
Yes! https://atprotocol.dev/video
01:03:44 Ryan Barrett: yeah it's a lot of fine grained bookkeeping
01:03:52 James Walker (@walkah): Replying to "@Boris Mann are you ..."
Yeah, just found it. Thanks for hosting! 👋
01:04:01 Boris Mann: Oh yeah I forget, we actually have a “fail Alf” https://bsky.app/profile/danni.id/post/3lawg6wp3fs2p
01:05:24 Chad Kohalyk: And I have seen this today: https://bsky.app/profile/samuel.bsky.team/post/3lawgam3dhs2e
01:06:12 Ryan Barrett: god yes, the crypto. secp256k1 and especially the low-S mitigation, ugh
01:07:50 Boris Mann: https://cbor.me
01:07:51 Nick Gerakines (he/him): Neat!
01:08:15 Ryan Barrett: gotta run, wish I could stay. love your work @Rudy Fraser! thanks @Boris Mann @Chad Kohalyk et al!
01:08:25 rafael: like multibase?
01:08:34 Chad Kohalyk: Reacted to "gotta run, wish I co..." with 👋
01:09:09 Chad Kohalyk: Drop your questions here if you have to leave and we will pick them up and ask them at the end!
01:10:02 rafael: Gotta jump to another call, thanks everyone!
01:10:29 Nick Gerakines (he/him): Reacted to "gotta run, wish I ..." with 👋
01:10:50 chadoakenfold: Have to drop as well. Thanks for sharing your knowledge. Love the project
01:11:05 drew mcarthur: I've also gotta drop 🥲 thanks for this!! I've got more questions about moderation, but it may be a whole separate conversation - I'm thinking through how peer-moderation might work, a-la wikipedia editing / reddit voting. would love to hear any thoughts y'all have!
01:11:36 Boris Mann: Replying to "I've also gotta drop..."
Yeah I’ll put this on the backlog to discuss. Trey next week is running Ozone as well for the Games Industry Labeler
01:11:47 Nick Gerakines (he/him): 16 million!
01:11:54 Chad Kohalyk: Reacted to "16 million!" with 🙌
01:11:57 Boris Mann: Reacted to "16 million!" with 🙌
01:12:09 Kukuwa (she/her): Congrats!!!!!
01:12:13 @laurenshof.online: Reacted to "16 million!" with 🙌
01:12:46 Boris Mann: Reacted to "16 million!" with 🦋
01:13:03 Boris Mann: Lots of links here https://atprotocol.dev/tech-talk-rudy-fraser-on-implementing-at-protocol-in-rust-for-blacksky/
01:13:28 Boris Mann: You can make one time or recurring donations here https://opencollective.com/blacksky
01:13:50 @laurenshof.online: Reacted to "16 million!" with 🦋
01:14:24 Rudy Fraser: Reacted to "16 million!" with 🦋
01:14:25 Rudy Fraser: Reacted to "16 million!" with 🙌
01:14:27 Rudy Fraser: Reacted to "Congrats!!!!!" with 🖤
01:19:22 jon: Thanks!
01:20:17 Sebastian: Rudy what a badass. Just on the fly learning for the people. Very impressive and inspiring.
01:20:26 Boris Mann: Reacted to "Rudy what a badass. ..." with 🙌
01:25:36 Rudy Fraser: I have a “put in limbo” script to put some people on timeout instead of just banning them
01:27:56 Nick Gerakines (he/him): Large Language Vibe Models
01:28:46 jon: I think a lot of this stuff is much more subjective and context-dependent than is generally relaized
01:29:16 Rudy Fraser: Reacted to "I think a lot of thi..." with ‼️
01:29:37 Chad Kohalyk: Is this forkable? Like, if there is a sub-community of blacksky that wants to handle their own moderation etc, is that easy? Or, will it be?
01:30:23 Nick Gerakines (he/him): Yeah, I think communal ownership or having some amount of critical mass of community ownership is essential.
01:30:53 Rudy Fraser: Replying to "Is this forkable? Li..."
Forkable but not super easy unless very technical and known rust
I put a callout to build a self-serve frontend for it
01:31:14 Will Corrigan: great talk thank you
01:31:21 Jim Pick: Inspiring stuff!
01:31:24 @laurenshof.online: Thanks a lot Rudy!
01:31:54 Will Corrigan: will keep you updated re:communal ownership of communities possibly soon
01:31:59 Chad Kohalyk: Reacted to "Forkable but not sup..." with 🙇
01:32:02 Sebastian: Awesome! So happy to receive this. You’re doing amazing work.
01:32:49 Chris Boscolo: Thank you, Rudy! Amazing work!