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