Wrote up a blog post with my initial ideas and stance on writing an ActivityPub/Fediverse server: https://aeracode.org/2022/11/14/takahe-new-server/

I also have thoughts on federation, UX, scaling, and what any successful medium-scale ecosystem might look like, more to come there.

Takahē: A New ActivityPub Server - Aeracode

@andrew OMG that was fast! I'm thrilled that you released it under a permissive license by the way, massive thank you. I know it's early but I'm actually looking forward to using it. Not sure I understood how the "serverless" part works though, will give it a closer look.
@astrojuanlu It just means you can run it somewhere that doesn't let you use background processes. It's mostly just for how I like running things.
@andrew I am so sad that nobody seems to create a server using compiled languages, and performance in general. 😔

@grin Most of the performance slowdown in the server is HTTP calls and database calls, so I don't think it would make a huge difference.

Plus, there's a lot of JSON and not-entirely-typed objects flying around, so it would be tricky to handle in a totally statically typed language.

@andrew I've already seen that at matrix and it barely works. I remember when they realised python is single-threaded, memory-leaking and slow as a dead snail in a pool of glue.
JSON handling is not particularly tricky even in rust which is about the strictest I could come up with. 🙂 (https://github.com/serde-rs/json-benchmark)

Still I'm glad for every alternative! Thank you! 🙇

GitHub - serde-rs/json-benchmark: nativejson-benchmark in Rust

nativejson-benchmark in Rust. Contribute to serde-rs/json-benchmark development by creating an account on GitHub.

GitHub

@andrew Great post. I'll be going over the code to see how you did the aliasing part, separating the user addresses from the server address. It's something I've been meaning to check out.

Do you have a rough estimate of how many calls a typical user would generate, to estimate costs for running a single user instance? Or alternately, how CPU intensive this approach is, for running on a RaspberryPi?

@lisardggy It depends heavily on the shape of the user's social graph. It's mostly a linear function of the number of followers they have and people they are following, with some efficiency saving if a lot of those are on only a few servers.

I'll be writing a whole post about the aliasing part too, soon!

@andrew Extremely cool, looks like it will be a great fit for people who want to run private instances with low overhead, compared to vanilla Mastodon. Will have to try it out soon, and will be following the project!

@andrew love it ❤️

I was considering a use-case like this: Organization X wants to join the Fediverse but they do not want to be @[email protected] - they want to be @[email protected] *and* also they don't want to run Mastodon. They want to run the most minimal stack possible to federate official updates into the Fediverse.

They would also like to build their own logic for automatically propagating blog contents, videos and events to the Fediverse, so they are very happy that it's written in Django :)

@andrew Hi Andrew! I'm wondering why did you not use an exiting Python library for ActivityPub? Is it because none of them is async, or some other reason? (I'm just guessing here, haven't delved into that yet.)
@isagalaev Partially the async thing, partially I just wanted to write one to learn the spec!
@andrew got it :-) I'm thinking about putting my old blog on the Fediverse, and I'm not sure if I want to play with it or just get it done :-)
@andrew This is fantastic. I'll be eagerly awaiting more news. I love the idea of a low JS frontend
@andrew @stevelord This looks really neat. I’m at the beginning stages of thinking about some ActivityPub projects (not so much like Takahē/Mastodon, more like bots/agents), and I’m having a hard time getting the federation flows right. I’m doing it from scratch; no libraries. Do you happen to have things like example ActicityPub conversations you used, or similar notes you’d be willing to share?
@andrew @stevelord Of course, I’ll likely end up with my own “normal” instance soon enough anyway, and I have a better shot reading Takahē than Mastodon. Maybe I should just install it and start pulling it apart. :-)