3 93390e9f 2024-03-14 o ### 1.1. Motivation, Communication
5 93390e9f 2024-03-14 o I signed up for Twitter account back in 2007.
6 93390e9f 2024-03-14 o I was 15 years old and didn't really get it.
7 93390e9f 2024-03-14 o All I knew was that the people whose blogs I subscribed to via RSS were now also *microblogging*.
8 93390e9f 2024-03-14 o Since that time I've doubled in age and still don't get it.
9 93390e9f 2024-03-14 o But I *still* use
14 93390e9f 2024-03-14 o and Apple's Mail.app
15 93390e9f 2024-03-14 o across OpenBSD, Linux, macOS and iOS.
17 93390e9f 2024-03-14 o Reddit and Twitter lost the plot around the same time
18 93390e9f 2024-03-14 o (see [2023 Reddit API controversy] and [3rd Party Twitter Apps]).
21 93390e9f 2024-03-14 o Here and there I would read posts to smaller communities on Reddit (via RSS)
22 93390e9f 2024-03-14 o and read the comment threads (`old.reddit.com` forever).
23 93390e9f 2024-03-14 o Links to Twitter get thrown around sometimes too.
24 93390e9f 2024-03-14 o But I knew us nerds wouldn't settle until we had our artisanally crafted apps back.
25 93390e9f 2024-03-14 o What would we come up with next?
27 93390e9f 2024-03-14 o I'd heard of [Mastodon] before,
28 93390e9f 2024-03-14 o maybe [Lemmy], too.
29 93390e9f 2024-03-14 o I looked at screenshots of the default interfaces and immediately thought "nope".
31 93390e9f 2024-03-14 o As a lover of [Plan 9]
32 93390e9f 2024-03-14 o and weirdo who mucks around with network protocols for fun,
33 93390e9f 2024-03-14 o platforms are boring.
34 93390e9f 2024-03-14 o What excites me is *communication*!
35 93390e9f 2024-03-14 o Exchanging messages *between* people, systems, and places we can't think of yet!
36 93390e9f 2024-03-14 o It's what makes receiving even just a single email from a random person such a viscerally distinct experience from
37 93390e9f 2024-03-14 o thousands reading your post you uploaded somewhere.
38 93390e9f 2024-03-14 o We're communicating!
40 93390e9f 2024-03-14 o Then I heard that Lemmy can interact with Mastodon.
41 93390e9f 2024-03-14 o "That's cool", I thought.
42 93390e9f 2024-03-14 o But nothing excited me more when I read this about how it actually worked:
44 93390e9f 2024-03-14 o > ActivityPub is a lot like email.
45 93390e9f 2024-03-14 o > You post stuff to inboxes and people read your outbox.
47 93390e9f 2024-03-14 o Maybe these new systems weren't platforms after all.
48 93390e9f 2024-03-14 o Maybe there was no platform.
50 93390e9f 2024-03-14 o ### 1.2 Lemmy API
54 93390e9f 2024-03-14 o ### 1.2 Mastodon API
56 93390e9f 2024-03-14 o It started with a script.
57 93390e9f 2024-03-14 o `mastodump` read my timeline via the Mastodon HTTP API,
58 93390e9f 2024-03-14 o then wrote each status as a [RFC5322] message – an email – to the filesystem:
60 93390e9f 2024-03-14 o for status in timeline():
61 93390e9f 2024-03-14 o if os.path.isfile(status.id):
63 93390e9f 2024-03-14 o with open(status.id) as f:
64 93390e9f 2024-03-14 o print("From: <%s>\n" % status.owner, file=f)
65 93390e9f 2024-03-14 o print("Subject: %s\n" % status.body, file=f)
66 93390e9f 2024-03-14 o print("Message-ID: <%d>\n" % status.id, file=f)
67 93390e9f 2024-03-14 o print("\n", file=f)
68 93390e9f 2024-03-14 o print(status.body, file=f)
70 93390e9f 2024-03-14 o `cron` executed `mastodump` every 5 minutes for me.
72 93390e9f 2024-03-14 o To create posts, I wrote `mastopost`.
73 93390e9f 2024-03-14 o It was a small SMTP server which received messages over SMTP and created posts to Mastodon:
75 93390e9f 2024-03-14 o laptop --SMTP--> mastopost --HTTP--> Mastodon --> fediverse
79 93390e9f 2024-03-14 o The problem with both of these approaches is that what I'm really doing is
80 93390e9f 2024-03-14 o I'm not really communicating with the world.
81 93390e9f 2024-03-14 o Instead, I'm uploading some data to a platform.
82 93390e9f 2024-03-14 o My client keeps track of the state of my little platform (my Mastodon/Lemmy instance).
83 93390e9f 2024-03-14 o My instance manages communication with the outside world for me.