Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Bird to Elephant: Starting a New Journey o...

From Bird to Elephant: Starting a New Journey on Mastodon — Devoxx Greece 2023

With the recent turmoil at Twitter, like many others, I’ve been wondering about migrating my social presence to Mastodon. But it’s a brand new world I know nothing about! So how does one get started on Mastodon? Which instance should I choose? What’s the netiquette there? What are the faux-pas to avoid? Should I cross-post to both networks? Who to follow, and how to gain followers? In this presentation, we’ll talk about the journey from the bird’s feathers to the elephant tusks, share some tips and tricks, to get the best of this new experience.

In this presentation, we’ll talk about this migration, we’ll share tips and tricks to get the best experience on Mastodon. Furthermore, we’ll have a look under the hood, to better understand how the “fediverse” operates, and particularly at the underlying protocols, including ActivityPub/ActivityStream and WebFinger.

Guillaume Laforge

May 04, 2023
Tweet

More Decks by Guillaume Laforge

Other Decks in Technology

Transcript

  1. From Bird to Elephant: Starting a New Journey on Mastodon

    Guillaume Laforge Developer Advocate Google Cloud @[email protected]
  2. What is Mastodon? How different is it from Twitter? A

    network of federated servers Open source and open protocols
  3. What is Mastodon? How different is it from Twitter? A

    network of federated servers Open source and open protocols Not owned by a single company
  4. What’s the experience like? Mooaarrr characters! You can edit your

    posts! Chronological order No algorithm for your timeline
  5. What’s the experience like? Mooaarrr characters! You can edit your

    posts! Chronological order No algorithm for your timeline No search! (just #hashtags) No ads!
  6. What’s the experience like? Mooaarrr characters! You can edit your

    posts! Chronological order No algorithm for your timeline No search! (just #hashtags) No ads! Privacy: fine grained controls Content warnings
  7. Choose a server that resembles you! Pick up a region,

    a topic, a language. Change your mind? You can migrate to a new server and not lose your followers & following. JoinMastodon.org
  8. Use the web frontend of your server on your computer.

    On mobile: • Tusky on Android • Metatext on iOS Pick up a client
  9. Increase your chances to be followed back, by completing your

    profile to make it more meaningful, more you! Would you follow this one? Create your profile before following anyone
  10. Your first “toot” should be your introduction. Tell everyone who

    you are, and use the #introduction hashtag. Be sure to pin that introduction toot to the top of your timeline. Introduce yourself!
  11. Extra step for discoverability, check the box to suggest your

    account to others, via “trends” and other features. Suggest your account to others
  12. Double check that the “opt-out of search engine indexing” checkbox

    is unchecked, which would make your account not findable easily. Don’t opt out of search engine indexing
  13. No need to pay a subscription to be officially verified.

    Add a <a rel="me" href="..."> tag in the pages mentioned in your profile metadata links. Verify yourself
  14. You’re not alone migrating to Mastodon. Check if the people

    you followed on Twitter are also on Mastodon. Find your Twitter friends on Mastodon • twitodon.com • movetodon.org • fedifinder.glitch.me
  15. Put your Mastodon link in your Twitter bio. Your Twitter

    handle might be taken by someone else impersonating you 30 days after you’ve relinquished your account. If you really quit, request your Twitter archive, for posterity. Don’t delete your Twitter account (yet?)
  16. Moa.party is a tool you can use to cross-post on

    Twitter and Mastodon. Cross-posting is frowned upon though. Avoid automated cross-posting
  17. Use #CamelCase for your #HashTags. Screen readers will appreciate! Use

    hashtags liberally, to participate in the conversations on that topic. CamelCase HashTags
  18. When sharing pictures in your toots, be sure to specify

    an “alt” tag, so that screen readers can read the description. Use “Alt” tags for your images
  19. Be mindful and hide content that may affect others behind

    “content warnings” (politics, adult, violence, mental health, food…) A label is visible, click on “show more” to read the rest. Same for pictures, click on “sensitive content” to make it appear. Content Warning
  20. Running an instance isn’t free. If you can, help sustain

    your instance administrators by funding it. You can also support the Mastodon developers via Patreon. Help sustain your instance
  21. • ActivityPub — W3C protocol based on ActivityStream, and JSON-LD

    • WebFinger — RFC to resolve links to resources • MicroFormats — open CSS based format to embed metadata in HTML • Security — HTTP signatures and OAuth 2 The importance of standards
  22. How to implement a basic ActivityPub server? blog.joinmastodon.org/2018/06/ how-to-implement-a-basic-activitypub-server/ {

    "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1" ], "id": "https://my-example.com/actor", "type": "Person", "preferredUsername": "alice", "inbox": "https://my-example.com/inbox", "publicKey": { "id": "https://my-example.com/actor#main-key", "owner": "https://my-example.com/actor", "publicKeyPem": "-----BEGIN PUBLIC KEY-----..." } } JSON-LD syntax ActivityStream vocabulary A “person” actor An “inbox” to receive messages Asymmetric key cryptography, to sign your messages The “Actor”
  23. How to implement a basic ActivityPub server? blog.joinmastodon.org/2018/06/ how-to-implement-a-basic-activitypub-server/ {

    "subject": "acct:[email protected]", "links": [ { "rel": "self", "type": "application/activity+json", "href": "https://my-example.com/actor" } ] } /.well-known/webfinger?resource=acct:[email protected] Alice’s account ActivityStream vocabulary URL to our actor definition WebFinger to link an account resource to the actor’s URL
  24. How to implement a basic ActivityPub server? blog.joinmastodon.org/2018/06/ how-to-implement-a-basic-activitypub-server/ {

    "@context": "https://www.w3.org/ns/activitystreams", "id": "https://my-example.com/hello-world", "type": "Create", "actor": "https://my-example.com/actor", "object": { "id": "https://my-example.com/hello-world", "type": "Note", "published": "2023-04-12T10:08:46Z", "attributedTo": "https://my-example.com/actor", "inReplyTo": "https://my-example/@bob/100254678717223630", "content": "<p>Hello world</p>", "to": "https://www.w3.org/ns/activitystreams#Public" } } The message: a “note” creation activity JSON-LD syntax & ActivityStream vocabulary Actor’s URL Note creation Can reply to another message Lightweight HTML with Microformat classes
  25. How to implement a basic ActivityPub server? blog.joinmastodon.org/2018/06/ how-to-implement-a-basic-activitypub-server/ POST

    /users/bob/inbox HTTP/1.1 HOST: my-example.com Date: 12 Apr 2023 10:08:46 GMT Digest: e37e179c75071a291f90a5fd4f848da87b491f1282f7bb8509ef2115b81ee0f4 Signature: keyId="https://my-example.com/actor#main-key",headers="(request-target) host date digest",signature="Y2FiYW...IxNGRiZDk4ZA==" Content-Type: application/ld+json; profile="http://www.w3.org/ns/activitystreams" Cryptographically signed the message payload RSA-SHA256 digest hash of the message body (request-target): get /users/bob/outbox host: my-example.com date: 12 Apr 2023 10:08:46 GMT digest: e37e179c75071a291f90a5fd4f848da87b491f… RSA-SHA256 digest hash of those headers Same set of headers
  26. Unlike Twitter, no way to know how many views your

    “toots” got. Let’s calculate your maximum potential reach, with the following formula: No analytics! potential_reach = me.followers + ∑ boosters i .followers n i=1
  27. Vue.js for the frontend with Shoelace web components Java &

    Micronaut for the server backend Hosted on Google Cloud Run Firebase hosting for the nice URL Cloud Scheduler for scheduling Vue.js + Micronaut
  28. Vue.js for the frontend with Shoelace web components Java &

    Micronaut for the server backend Hosted on Google Cloud Run Firebase hosting for the nice URL Cloud Scheduler for scheduling Vue.js + Micronaut
  29. Vue.js for the frontend with Shoelace web components Java &

    Micronaut for the server backend Hosted on Google Cloud Run Firebase hosting for the nice URL Cloud Scheduler for scheduling Vue.js + Micronaut
  30. Vue.js for the frontend with Shoelace web components Java &

    Micronaut for the server backend Hosted on Google Cloud Run Firebase hosting for the nice URL Cloud Scheduler for scheduling Vue.js + Micronaut