<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mastodon Blog</title><link>https://blog.joinmastodon.org/</link><description>Recent content on Mastodon Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.joinmastodon.org/index.xml" rel="self" type="application/rss+xml"/><item><title>New t-shirts, pins and posters</title><link>https://blog.joinmastodon.org/2026/04/new-t-shirts-pins-and-posters/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/04/new-t-shirts-pins-and-posters/</guid><description>&lt;p&gt;We’ve just released two new t-shirts on our &lt;a href="https://shop.joinmastodon.org"&gt;shop&lt;/a&gt;, based on slogan suggestions from the community, and featuring lovely artwork from our artist &lt;a href="https://mastodon.social/@dopatwo"&gt;Dopatwo&lt;/a&gt;. One is “My friends are not for sale”, and the other is “I write ALT text”. We’ve chosen quality over quantity, as we often do, by screen printing the designs on high-quality, organic cotton. As someone who’s bought a lot of band merch over the years, I can tell you - they feel good to the touch.&lt;/p&gt;
&lt;p&gt;Our merch is not a big money maker for us compared to &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;direct donations&lt;/a&gt; (remember, Mastodon is crowdfunded by the community — there’s no venture capital or investors, no ads or monetization), but it is fun and it helps bring awareness to the platform. We also try to create bespoke, high quality items in limited runs. If we can sell these t-shirts it will allow us to make more cool things in the future, from more cool t-shirt designs, to beanies, hoodies, and more.&lt;/p&gt;
&lt;p&gt;&lt;video src="trailer.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’ve also restocked on our enamel pins (have you seen how shiny and glittery the “Live, laugh, federate” pin is?), and there’s some leftover stock of various other items as well. Take a look around the &lt;a href="https://shop.joinmastodon.org"&gt;store&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;On a related note, if you’d like to help spread awareness of Mastodon in real life, &lt;strong&gt;we now offer &lt;a href="https://joinmastodon.org/branding"&gt;printable poster designs&lt;/a&gt; in multiple languages&lt;/strong&gt;. Check it out!&lt;/p&gt;
&lt;form method="post" action="https://newsroom.joinmastodon.org/subscription/form" class="not-prose rounded-md bg-eggplant p-4 py-6 flex flex-col items-center shadow-lg text-white mt-8"&gt;
 &lt;input type="hidden" name="l" value="da95e48a-3a52-46d6-9184-65ab73877994" /&gt;

 &lt;h3 class="text-lg font-bold mb-2 text-nightshade-50"&gt;Join the mailing list&lt;/h3&gt;
 &lt;p class="text-md mb-8 font-semibold"&gt;Get notified when new merch becomes available for sale&lt;/p&gt;

 &lt;div class="flex gap-4 mb-8"&gt;
 &lt;input type="email" name="email" placeholder="Your e-mail address" required="required" class="block text-sm rounded-md bg-white border-0 bg-transparent shadow-sm ring-1 ring-inset ring-nightshade-50 py-1.5 text-gray-900 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blurple-500" /&gt;
 &lt;button type="submit" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex"&gt;Subscribe&lt;/button&gt;
 &lt;/div&gt;

 &lt;footer class="text-sm"&gt;
 See our &lt;a href="https://joinmastodon.org/privacy-policy" class="text-nightshade-100 hover:underline"&gt;privacy policy&lt;/a&gt;
 &lt;/footer&gt;
&lt;/form&gt;
</description></item><item><title>Trunk &amp; Tidbits, March 2026</title><link>https://blog.joinmastodon.org/2026/04/trunk-tidbits-march-2026/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/04/trunk-tidbits-march-2026/</guid><description>&lt;p&gt;Welcome to the &lt;em&gt;24th edition&lt;/em&gt; of Trunk &amp;amp; Tidbits 🎉 We’ve been publishing this monthly series, “behind the scenes of the code” from the Mastodon team, for a whole two years now!&lt;/p&gt;
&lt;p&gt;We’re getting close to the release of Mastodon 4.6. In the past few weeks we published two feature updates about things you’ll see in the next version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;firstly, there was a post about &lt;a href="https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/"&gt;a redesign for profile pages&lt;/a&gt;, now available to try out on &lt;code&gt;mastodon.social&lt;/code&gt; and coming to other servers with version 4.6;&lt;/li&gt;
&lt;li&gt;we also posted &lt;a href="https://blog.joinmastodon.org/2026/04/designing-collections/"&gt;a more detailed update on Collections&lt;/a&gt; (previously &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;briefly&lt;/a&gt; known as “Packs”).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our goal in posting these updates is to offer a community-driven design process, and to provide visibility into &lt;em&gt;how&lt;/em&gt; and &lt;em&gt;why&lt;/em&gt; we reached implementation choices - similar to the transparency we’ve been offering via Trunk &amp;amp; Tidbits, but at a slightly less technical level.&lt;/p&gt;
&lt;p&gt;One more thing on a related topic - &lt;a href="https://mastodon.social/@imanijoy"&gt;Imani&lt;/a&gt; spoke at &lt;a href="https://26.foss-backstage.design/"&gt;FOSS Backstage Design&lt;/a&gt;, about the journey of being a designer at Mastodon, and some of the challenges and opportunities of working on federated software at scale. You can &lt;a href="https://www.youtube.com/watch?v=oNxpTvbTy54"&gt;watch the talk on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;Last month, we released updates for the Mastodon server software across the three active branches. These point releases all include security updates, as well as fixes to compatibility with GoToSocial features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.8"&gt;4.5.8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.15"&gt;4.4.15&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.21"&gt;4.3.21&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As usual, we strongly encourage server owners to update to the most recent version, in order to get the most stable and secure code and up-to-date user experience.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Note that this is the final month for the 4.3.x branch - the end of support date for this version is May 6th 2026.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In March 2026 we reviewed and merged 347 Pull Requests (268 with translation and dependency updates removed), from 13 contributors.&lt;/p&gt;
&lt;p&gt;We’re continuing to focus on the &lt;a href="https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/"&gt;new profile design&lt;/a&gt; work, and Collections, both of which will be major features of Mastodon 4.6 - so again this month, much of the work has been around these two areas. Thank you for the feedback shared about the updates to profiles, in particular - this is being used to shape the final full release version.&lt;/p&gt;
&lt;div class="features-list"&gt;
We’ve also worked on improving the accessibility of the Mastodon Web UI. This has involved focusing on the sign-up and login flows, better colour contrast, and improved navigation with skip links, with more to come in the near future. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38006"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38006&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38188"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38188&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38036"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38036&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;

&lt;p&gt;Hidden behind a feature flag for now, we’ve added the ability for account owners to allow anonymous visitors to subscribe to their posts via e-mail, without a Mastodon account. This feature is &lt;em&gt;not yet ready for testing&lt;/em&gt; - we are working on the missing pieces right now. The work has been funded by &lt;a href="https://nlnet.nl/project/Mastodon-for-institutions/"&gt;an NGI0 grant through NLNet&lt;/a&gt;, to improve Mastodon&amp;rsquo;s suitability for use by institutions.&lt;/p&gt;
&lt;p&gt;Mastodon now supports two additional &lt;a href="https://fediverse.codeberg.page/fep/"&gt;Fediverse Enhancement Proposals&lt;/a&gt;, &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/2c59/fep-2c59.md"&gt;FEP-2c59&lt;/a&gt; (&lt;em&gt;Discovery of a Webfinger address from an ActivityPub actor&lt;/em&gt; &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38239"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38239&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
) and &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/3b86/fep-3b86.md"&gt;FEP-3b86&lt;/a&gt; (&lt;em&gt;Activity Intents&lt;/em&gt; &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38120"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38120&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/38130"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #38130&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
). This will improve interactions with other Fediverse servers.&lt;/p&gt;
&lt;p&gt;On the API side, as part of the profile redesign we are introducing &lt;a href="https://docs.joinmastodon.org/methods/profile/"&gt;a new dedicated &lt;code&gt;profile&lt;/code&gt;&lt;/a&gt; endpoint, allowing client apps to access the current profile and update it. App developers are encouraged to add support for this new set of functions - they also allow brand new capabilities, such as setting a text description for profile pictures and header banners.&lt;/p&gt;
&lt;p&gt;Lastly, there have been a lot of technical improvements and refactoring in the codebase, including: support for Ruby 4.0; the removal of the &lt;code&gt;oj&lt;/code&gt; gem for JSON handling in the backend; and, an upgrade of our web client toolchain to Vite 8, which should make the web assets build step both faster and more memory efficient.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;We continued working on the profile redesign, and made two releases with minor bug fixes.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We shipped version 2026.02 with a number of technical improvements that will help us keep moving forward, and some visible fixes as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can now manage multiple logged-in accounts from the Settings screen (this has always been accessible by long-pressing the current account avatar, but was not easy to discover).&lt;/li&gt;
&lt;li&gt;Fix for &lt;a href="https://github.com/mastodon/mastodon-ios/issues/1505"&gt;No audio while playing videos or audio before going full screen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix for &lt;a href="https://github.com/mastodon/mastodon-ios/issues/1516"&gt;Quoted posts that are &lt;em&gt;long&lt;/em&gt; are not truncated&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix for &lt;a href="https://github.com/mastodon/mastodon-ios/issues/1528"&gt;Encoded HTML entities in display names are applied&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;One of the benefits of building open platforms is that people can build interfaces that work well for different scenarios. We’ve got &lt;a href="https://joinmastodon.org/apps"&gt;a number of client apps&lt;/a&gt; listed on our website (and you can add your own, if it is not listed there yet - &lt;a href="https://github.com/mastodon/joinmastodon"&gt;send a pull request on our website repository&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Not everyone uses the latest and greatest devices, and even if you do, maybe you also like small and simple interfaces as well? In these cases, check out &lt;a href="https://codeberg.org/adele/smolfedi"&gt;smolfedi&lt;/a&gt; - a lightweight, cross-fedi-platform front end that works with Mastodon as well as with several other Fediverse services.&lt;/p&gt;
&lt;p&gt;If you run a Mastodon server, or any kind of Fediverse server - or even if you ran a server, and then closed it down - the Social Web Foundation has a new survey to gather data for a sustainability report. The &lt;a href="https://socialwebfoundation.org/2026/04/06/fediverse-sustainability-survey/"&gt;Fediverse Sustainability Survey&lt;/a&gt; is anonymous, and the report will be published on the SWF site in the future.&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you&lt;/h2&gt;
&lt;p&gt;As &lt;a href="https://macaw.social/@andypiper"&gt;the initiator and author&lt;/a&gt; of twenty four editions of Trunk &amp;amp; Tidbits, and on behalf of the Mastodon team, I’d like to say, directly to &lt;em&gt;you&lt;/em&gt; - Thank You, for all of your support over the past couple of years. Please do “chip in” with a recurring donation to the project - Open Source, not-for-profit software and movements like ours, need to be sustained.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Designing Collections</title><link>https://blog.joinmastodon.org/2026/04/designing-collections/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/04/designing-collections/</guid><description>&lt;p&gt;People come to the Fediverse to connect with others around communities and topics of interest. We’ve seen people enjoy their time on Mastodon the most, when they can follow and engage with individuals and organisations that have interesting things to share. We want to help those who are new to the Fediverse discover these communities more easily.&lt;/p&gt;
&lt;p&gt;Back in October 2025, we &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;shared our initial ideas about a new feature&lt;/a&gt; that’s coming in Mastodon 4.6, that we’re calling &lt;em&gt;Collections&lt;/em&gt;. Collections are a way for people on Mastodon to curate and share bundles of accounts that they’d recommend to others - helping to grow these connections more quickly, instead of newcomers hunting around for the accounts they might be interested in.&lt;/p&gt;
&lt;p&gt;The team has been working hard on the feature since then, and in this post we’re providing an update on what you’ll see when Collections start to appear in the next few weeks. Importantly, this is just the beginning for Collections! Think of this as the “version 1” release for feedback - we’re taking a slow and intentional approach to building them out.&lt;/p&gt;
&lt;blockquote class="info"&gt;&lt;p&gt;We want to give a shout-out to some of the &lt;em&gt;other&lt;/em&gt; great resources that help people to navigate and discover new content across the Fediverse - for example, &lt;a href="http://fedi.tips"&gt;fedi.tips&lt;/a&gt; and their &lt;a href="https://social.growyourown.services/@FediFollows"&gt;@FediFollows account&lt;/a&gt;, the &lt;a href="https://fedidevs.com/starter-packs/"&gt;starter packs from fedidevs.com&lt;/a&gt;, and more. There’s room for all of these to offer alternative discovery options, and we appreciate the community initiatives; we hope Collections will be a useful addition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="our-approach"&gt;Our approach&lt;/h2&gt;
&lt;p&gt;We had three primary inputs that shaped our thinking as we designed Collections.&lt;/p&gt;
&lt;h3 id="learning-from-bluesky"&gt;Learning from Bluesky&lt;/h3&gt;
&lt;p&gt;We reviewed public feedback around Bluesky’s Starter Packs to inform our approach before building this feature. The biggest influence this had on us, was that we knew that we needed to have a way to for people to review Collections they are added to, and to remove themselves without having to resort to blocking or reporting.&lt;/p&gt;
&lt;p&gt;We made the decision early on that people are not automatically included in their own collections. Curators can add themselves, but it’s not a requirement. This also influenced our choice for smaller Collection sizes, at least at the start - we may revisit this later.&lt;/p&gt;
&lt;h3 id="learning-from-the-mastodon-community"&gt;Learning from the Mastodon community&lt;/h3&gt;
&lt;p&gt;We wanted to understand what information would be &lt;em&gt;most&lt;/em&gt; helpful for people in deciding whether to follow accounts within a collection. Accounts currently display in list form, and we can’t show the entire profile - trade-offs must be made.&lt;/p&gt;
&lt;p&gt;To understand what information to prioritise, we distributed a survey to people on Mastodon in late 2025. We found, unsurprisingly, that an account’s posts and bio text both have a huge influence on trust and interest. Additionally, being aware of mutuals (e.g. “people I follow who are following this account”) scored high on both points. Interestingly, recency of the account’s last post scored higher than the presence of a verified link, follower count, post count, and several other factors in influencing following behaviour (these findings also informed &lt;a href="https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/"&gt;the redesign of Profiles&lt;/a&gt;). This study was conducted with limited resources - while not statistically significant, it offered us a starting point in understanding how Collections would be best represented.&lt;/p&gt;
&lt;h3 id="technical-constraints"&gt;Technical constraints&lt;/h3&gt;
&lt;p&gt;Technical challenges limit our ability to show posts within a Collection for v1, but we’d like to explore this as the feature matures.&lt;/p&gt;
&lt;p&gt;Collections are similar to our existing Lists feature, in that they’re account-based. Many people asked for public, shareable lists, but we don’t currently have the infrastructure to build something of that scale. However, we plan to reduce confusion through naming and navigational updates in a future release of Mastodon.&lt;/p&gt;
&lt;h2 id="collections-whats-included-in-46"&gt;Collections: What’s included in 4.6&lt;/h2&gt;
&lt;p&gt;We’re moving intentionally with this feature, using the 4.6 launch as an opportunity to learn more from the community. As such, we’ve taken a lightweight approach.&lt;/p&gt;
&lt;h3 id="creation"&gt;Creation&lt;/h3&gt;
&lt;p&gt;People with accounts on participating servers will be able to create Collections. Collections may include a short description and topic – a single hashtag to aid in discovery. Additionally, Collections may be marked as sensitive (this setting hides the description and accounts behind a content warning).&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="creation.jpg" alt="Creating a Collection, which includes fields for the Collection name, description, topic, and visibility."&gt;
 &lt;figcaption&gt;A screenshot showing creation of a Collection.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="sharing-and-discovery"&gt;Sharing and discovery&lt;/h3&gt;
&lt;p&gt;Collections can be set to either &lt;em&gt;Public&lt;/em&gt; or &lt;em&gt;Unlisted&lt;/em&gt;, and shared via a link.&lt;/p&gt;
&lt;p&gt;There’s a caveat here - the initial launch focuses on &lt;em&gt;creation&lt;/em&gt;, with search and discovery coming soon. There are three reasons we’re doing this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The number of community-created Collections needs to hit a critical mass before certain discovery experiences become impactful. For example, we’d like server owners to be able to recommend Collections to follow during onboarding (this would be a replacement for the current Recommended Accounts feature).&lt;/li&gt;
&lt;li&gt;We’d like to observe how the community creates and shares Collections first; this will help us to understand how and where to showcase public Collections.&lt;/li&gt;
&lt;li&gt;Implementing Collections in search and discovery is technically expensive.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This means that &lt;em&gt;Public&lt;/em&gt; and &lt;em&gt;Unlisted&lt;/em&gt; Collections will function very similarly at first, except that public Collections are also included in the curator’s Featured tab on their profile.&lt;/p&gt;
&lt;h3 id="privacy-and-moderation"&gt;Privacy and moderation&lt;/h3&gt;
&lt;p&gt;You can opt out of having your account be eligible for inclusion in Collections by disabling the existing &lt;em&gt;“Feature profile and posts in discovery algorithms”&lt;/em&gt; account setting.&lt;/p&gt;
&lt;p&gt;If you are opted into discovery, you will be notified when another account adds you to a Collection. From there, you can view the contents of the Collection, and remove your account if desired.&lt;/p&gt;
&lt;p&gt;In cases of potential harassment, you are encouraged to report or block the other account. Reporting a Collection allows a decision to be made by server moderators; blocking removes you from any collections curated by the blocked account, &lt;em&gt;and&lt;/em&gt; prevents the blocked account from adding your account to future Collections.&lt;/p&gt;
&lt;h2 id="whats-not-in-the-initial-release"&gt;What’s &lt;em&gt;not&lt;/em&gt; in the initial release&lt;/h2&gt;
&lt;h3 id="super-large-collections"&gt;Super large Collections&lt;/h3&gt;
&lt;p&gt;In this release, Collections can include up to 25 accounts.&lt;/p&gt;
&lt;p&gt;Collections on Mastodon will continue to focus on quality over quantity. We suspect that smaller Collections will cut down on the type of spammy behaviour that was sometimes seen on Bluesky (where there is a limit of 150 accounts on Starter Packs). However, we don’t know &lt;em&gt;exactly&lt;/em&gt; what the magic number is; we’ve talked to several industry leaders, and suspect the number is between 25 and 80. This is still a wide range, and we’re starting on the lower end because it’s far easier from a technical perspective to &lt;em&gt;increase&lt;/em&gt; this limit later, than it is to reduce it.&lt;/p&gt;
&lt;p&gt;Find yourself maxing out a Collection and then creating a “Volume 2”? Send us your Collection, if you want; or, tell us about it, so we can understand your use case.&lt;/p&gt;
&lt;h3 id="a-follow-all-button"&gt;A ‘Follow All’ button&lt;/h3&gt;
&lt;p&gt;We’re not including a bulk follow action on day one.&lt;/p&gt;
&lt;p&gt;This is something we’re considering, but we want to approach it with care. We read feedback that people on Bluesky often found themselves mass following accounts from stale Starter Packs, only to have a subpar feed afterwards.&lt;/p&gt;
&lt;p&gt;We also recognise that there are scenarios that require more thought. For example, imagine you follow all accounts in a Collection, but then, some of the accounts are &lt;em&gt;removed&lt;/em&gt; from the Collection. Do you expect to be able to bulk unfollow all of the accounts you previously followed from that Collection, even if they no longer exist there? Many people look to Mastodon to be the straightforward and authentic platform, so including a bulk follow action without an “escape hatch” is a dark pattern that we wish to avoid.&lt;/p&gt;
&lt;p&gt;In short, we’re open to this in the future, but we’d like to understand the demand first. We hope to hear from the community about the experience of using “Collections v1”, and we may add a ‘Follow All’ button, potentially with proper undo controls, &lt;em&gt;if&lt;/em&gt; there’s strong demand for reducing friction in the experience.&lt;/p&gt;
&lt;h2 id="availability"&gt;Availability&lt;/h2&gt;
&lt;p&gt;We’ll be enabling Collections on &lt;code&gt;mastodon.social&lt;/code&gt; in the coming week. As usual, we take a moment to test out these features on our own servers ahead of a release. This initial release of Collections will become generally available for all Mastodon servers as part of Mastodon 4.6, coming in a few weeks.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;note: we plan to add more screenshots to this post soon&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="open-to-feedback"&gt;Open to feedback&lt;/h2&gt;
&lt;p&gt;We’re focused on user privacy, and this means that we have very limited analytics to inform decisions. We also believe in community-driven design, and we want to be transparent about our thinking as we build new features. Our small team is counting on the insights from your experiences as you create, use, and test Collections! If you have things you’d like to let us know related to these updates, contact us at &lt;a href="mailto:feedback@joinmastodon.org"&gt;&lt;strong&gt;feedback@joinmastodon.org&lt;/strong&gt;&lt;/a&gt;. We might not be able to respond individually, but rest assured that we’ll be reading every piece of feedback.&lt;/p&gt;
&lt;h3 id="thanks"&gt;Thanks&lt;/h3&gt;
&lt;p&gt;We are grateful to &lt;a href="https://www.gccofficial.org/en"&gt;GCC&lt;/a&gt; for a grant that supported the development of this feature.&lt;/p&gt;</description></item><item><title>A Redesign for Profiles</title><link>https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/03/a-redesign-for-profiles/</guid><description>&lt;p&gt;Profiles are the primary way for people using Mastodon to ‘meet’ one another on a deeper level – beyond a threaded conversation or search results. You might have noticed that the overall design of Profiles hasn’t been explored in a while, and in the meantime, we’ve heard requests and challenges from people who use Mastodon every day.&lt;/p&gt;
&lt;p&gt;The profile redesign supports some of our current priorities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make the Fediverse Intuitive.&lt;/strong&gt; We want people who are new to Mastodon and the Fediverse to be able to discover and connect with interesting accounts, without having to understand the details of decentralisation. The new Profiles view includes an updated handle explainer, and a new editing experience delivers a more consistent, unified experience across web and native mobile apps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Home for Everyone.&lt;/strong&gt; As well as individuals, Mastodon is also home to organisations (NGOs, local governments, software projects, etc) that want to share news and interact with their communities. The layout changes offer us a solid starting point from which to explore features that will help these “institutional users” to make their most out of their presence in the Fediverse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="our-approach"&gt;Our approach&lt;/h2&gt;
&lt;h3 id="learning-from-the-community"&gt;Learning from the community&lt;/h3&gt;
&lt;p&gt;In addition to reviewing community requests related to profiles, we surveyed more than 500 people across over 300 servers, to understand what profile information they prioritise when it comes to identifying whether an account is trustworthy (and therefore, worth following). We also analysed patterns from other apps that respondents mentioned they frequently use.&lt;/p&gt;
&lt;h3 id="technical-constraints"&gt;Technical constraints&lt;/h3&gt;
&lt;p&gt;We’re currently constrained within the existing 3-column layout on desktop.&lt;/p&gt;
&lt;p&gt;We also know that improvements could be made to the custom fields feature, but structural and backend changes to custom fields were out of scope for this work.&lt;/p&gt;
&lt;h2 id="whats-changing"&gt;What’s changing&lt;/h2&gt;
&lt;h3 id="profile-viewing"&gt;Profile viewing&lt;/h3&gt;
&lt;h4 id="the-new-activity-tab-offers-granular-filtering-of-posts"&gt;The new ‘Activity’ tab offers granular filtering of posts&lt;/h4&gt;
&lt;p&gt;Previously, there have been two tabs for “Posts” and “Posts and replies.” It turns out that this was misleading (the “Posts” tab also included boosts); and, that there was no way for you to view an account’s activity with the granularity that you can after following them – no view for Posts only, for example.&lt;/p&gt;
&lt;p&gt;There are, in fact, 4 distinct views that you may want to see: &lt;em&gt;Posts&lt;/em&gt;, &lt;em&gt;Posts+boosts&lt;/em&gt;, &lt;em&gt;Posts+replies&lt;/em&gt;, or &lt;em&gt;Posts+boosts+replies&lt;/em&gt;. Providing this granularity led us to adopt a more appropriate UI over displaying each of these as tabs.&lt;/p&gt;
&lt;p&gt;The new Activity tab has a dropdown menu, allowing you to view any of these combinations by filtering both boosts and replies. It is optimised to work equally well for you on the desktop as on mobile, and also if you use the advanced interface for desktop.&lt;/p&gt;
&lt;p&gt;&lt;video src="activity-dropdown.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h4 id="featured-hashtags-are-more-discoverable-and-contextual"&gt;Featured hashtags are more discoverable and contextual&lt;/h4&gt;
&lt;p&gt;Hashtags can provide you with topic-based discovery. In the new Profile view, you can view hashtags contextually within the Activity tab, and click on them for a filtered view of the account’s tagged posts.&lt;/p&gt;
&lt;p&gt;&lt;video src="featured-filter-hashtags.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h4 id="its-easier-to-view-all-pinned-posts"&gt;It’s easier to view all pinned posts&lt;/h4&gt;
&lt;p&gt;Some people have expressed frustration over pinned posts being buried in a carousel. We understand this concern, and are also balancing the needs of people who are browsing others’ profiles who have shared that they want easy access to &lt;em&gt;recent&lt;/em&gt; posts.&lt;/p&gt;
&lt;p&gt;Informed by data on the number of pinned posts across Mastodon profiles, we’ve replaced the carousel with an alternative form of progressive disclosure that allows you to reveal all pinned posts in a single click.&lt;/p&gt;
&lt;p&gt;&lt;video src="revealing-pinned.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h4 id="updated-handle-explainers"&gt;Updated handle explainers&lt;/h4&gt;
&lt;p&gt;One of our objectives is to make the Fediverse more intuitive for people who are non-technical. We’ve updated the handle explainer card to clarify what handles and servers are.&lt;/p&gt;
&lt;p&gt;Additionally, the full profile handle (&lt;code&gt;@user@domain.com&lt;/code&gt;) now displays beneath the account’s display name, even if the account is on the same server as yours.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="handle.jpg" alt="The new profile handle explainer"&gt;
 &lt;figcaption&gt;The updated explainer for profile handles.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="custom-fields-are-more-compact"&gt;Custom fields are more compact&lt;/h4&gt;
&lt;p&gt;Custom fields display side-by-side when possible, making smarter utilisation of the Profile’s vertical space so that you get to the account’s content more swiftly.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="compact.jpg" alt="The new compact fields design"&gt;
 &lt;figcaption&gt;A more compact design for custom fields.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="additional-changes-reduce-visual-load"&gt;Additional changes reduce visual load&lt;/h4&gt;
&lt;p&gt;People must be able to find the content they need. However, when &lt;em&gt;all&lt;/em&gt; information displays at once, it impacts your ability to focus and complete tasks.&lt;/p&gt;
&lt;p&gt;You might notice we’ve given less prominence to a few pieces of information. When introducing changes that add friction, we take into account both the frequency and importance of related actions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Personal notes:&lt;/strong&gt; The ‘Add a personal note’ action does not display as prominently on the profile; it is now accessed within the profile’s overflow menu. If a note exists, it still displays on the profile page, just as it has in the past.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;‘Following you’:&lt;/strong&gt; The ‘Following you’ badge no longer displays on the profile. People we surveyed ranked this information remarkably low in terms of establishing both trust and interest an account. You still have numerous options to understand whether someone is following you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The ‘Follow’ button:&lt;/strong&gt; When you’re not following an account but the account follows you, the primary button label displays as “Follow back”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The accounts ‘Following’ list:&lt;/strong&gt; If the account is following you, you will see yourself at the top of that account’s ‘Following’ list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile overflow menu:&lt;/strong&gt; If the account is following you, a ‘Remove follower’ option appears in the overflow menu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview cards (desktop):&lt;/strong&gt; When hovering over an account, the preview cards still show ‘Follows you’ and ‘You follow each other’ statuses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: we&amp;rsquo;ve heard your feedback in the early roll-out, and the ‘Following you‘ badge has been brought back in the current development build; we&amp;rsquo;re still iterating on these changes, so look out for the release announcement (when 4.6 launches) for information about any other tweaks between now and then.&lt;/p&gt;
&lt;h2 id="profile-editing"&gt;Profile editing&lt;/h2&gt;
&lt;h3 id="a-unified-editing-experience"&gt;A unified editing experience&lt;/h3&gt;
&lt;p&gt;Previously, profile editing on web was hidden within account settings. You had to take multiple steps to navigate back to your profile view.&lt;/p&gt;
&lt;p&gt;The new profile editing experience combines featured hashtags, link verification, and all other profile customisation in a single view. It’s easily accessible from an ‘Edit profile’ button directly on your profile – making switching between viewing and editing more seamless.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="unified-editing.jpg" alt="The new profile editing view"&gt;
 &lt;figcaption&gt;A screenshot of the redesigned profile editing experience on desktop web. The page shows sections for profile and cover photo editing, display name and bio editing, custom fields, featured hashtags, and profile tab settings.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="more-control-during-image-upload"&gt;More control during image upload&lt;/h3&gt;
&lt;p&gt;You can now crop images, and add alt text to profile and cover photos.&lt;/p&gt;
&lt;figure&gt;
&lt;video src="profile-photo.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;
&lt;figcaption&gt;A screen recording showing a user zooming and cropping a profile photo within a modal, then clicking on the “Next” button. On the next step, the modal displays a preview of the cropped image and a text field where the user can enter alt text.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="custom-fields-and-verified-links"&gt;Custom fields and verified links&lt;/h3&gt;
&lt;p&gt;Previously, custom field editing was only available on web, and lacked accessible form labels. Additionally, link verification – a powerful feature for establishing credibility – was hidden in profile settings.&lt;/p&gt;
&lt;p&gt;Now, you can access link verification instructions directly from the custom field editing experience. You can also now add and edit custom fields in our iOS and Android apps.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="custom-field-editing.jpg" alt="The new profile handle explainer"&gt;
 &lt;figcaption&gt;A zoomed-in view of the interface for editing custom fields, which contains buttons for adding, reordering, changing, and deleting custom fields. Beneath the custom fields, a hyperlinked text reads “How do I add a verified link?”&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="featured-hashtags"&gt;Featured hashtags&lt;/h3&gt;
&lt;p&gt;Featured hashtags are a useful way of helping others discover topics you frequently post about. We’ve decreased the friction and guesswork in adding featured hashtags on web: Suggested hashtags will appear on your profile view, and can be bulk added in a single click.&lt;/p&gt;
&lt;p&gt;For more granular control, hashtags can also be managed within the profile editor.&lt;/p&gt;
&lt;p&gt;Basic functionality for featured hashtags is now supported on iOS and Android.&lt;/p&gt;
&lt;figure&gt;&lt;video src="featured-hashtags.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;
&lt;figcaption&gt;A screen recording showing the interaction of a user viewing a banner on their own profile that contains suggested hashtags with options to add or dismiss. The user clicks on “Add” and the suggested hashtags are immediately added to their profile.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="customising-tab-displays"&gt;Customising tab displays&lt;/h3&gt;
&lt;p&gt;The editing experience includes profile tab display settings, allowing you to hide the ‘Media’ and ‘Featured’ tabs if desired.&lt;/p&gt;
&lt;p&gt;Replies can also be excluded from the ‘Media’ tab, allowing for a more accurate gallery where creative people may showcase their work. We hope that these additional controls empower both people who use Mastodon day-to-day, and people who represent institutions.&lt;/p&gt;
&lt;p&gt;Before the 4.6 release, profile tab customisations will only impact a few servers that are testing the new profile experience. After the 4.6 release, these customisations will be reflected on most servers running the latest version of Mastodon. Displays may vary on third-party apps and independent servers.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="profile-tab-settings.jpg" alt="The new profile handle explainer"&gt;
 &lt;figcaption&gt;A screenshot of the Profile tab settings modal, which contains three settings allowing users to show/hide the Media tab, show/hide replies on the Media tab, and show/hide the Featured tab. A banner at the bottom of the modal explains that displays may vary on other servers.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="availability"&gt;Availability&lt;/h2&gt;
&lt;p&gt;The new design will be visible on &lt;code&gt;mastodon.social&lt;/code&gt;, and other servers that run nightly builds of Mastodon, from today. The goal is to do some testing ahead of the 4.6 release, and make any adjustments based on feedback (see below). The new look will roll out to all Mastodon servers, as part of Mastodon 4.6, coming in a few weeks.&lt;/p&gt;
&lt;h3 id="were-open-to-feedback"&gt;We’re open to feedback&lt;/h3&gt;
&lt;p&gt;We’ve shared our thinking, and the choices we made in this redesign, in this post. If you have things you’d like to let us know related to these updates, contact us at &lt;a href="mailto:feedback@joinmastodon.org"&gt;&lt;strong&gt;feedback@joinmastodon.org&lt;/strong&gt;&lt;/a&gt;. We may not be able to respond to every individual message, but we’ll be reading every piece of feedback to inform our future plans.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, February 2026</title><link>https://blog.joinmastodon.org/2026/03/trunk-tidbits-february-2026/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/03/trunk-tidbits-february-2026/</guid><description>&lt;p&gt;Welcome to our monthly engineering update. The team is continuing to work on the next major version of Mastodon (4.6), as well as maintaining the current stable releases.&lt;/p&gt;
&lt;p&gt;Before we dive in to our regular review of code changes and updates from the past month, there are a number of items that we wanted to highlight this time around.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We are hiring! We’re looking for two Ruby on Rails developers to work with us on the backend of the software. More information &lt;a href="https://mastodon.social/@MastodonEngineering/116103936616513460"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;re pleased to be able to share that Mastodon GmbH has formally joined the World Wide Web Consortium (W3C), the multi-stakeholder community organisation that develops standards like ActivityPub. We look forward to collaborating in the evolution of the open social web through the Social Web Working Group. Several members of the team &lt;a href="https://github.com/w3c/socialwg/blob/main/meetings/2026/2026-03-06-WG-kickoff.md"&gt;took part in the first meeting of the group&lt;/a&gt; at the end of last week, and we are excited to be part of this important work.&lt;/li&gt;
&lt;li&gt;Authenticity and connection are core elements of Mastodon&amp;rsquo;s mission. The project has now added an &lt;a href="https://github.com/mastodon/.github/blob/main/AI_POLICY.md"&gt;AI Contribution Policy&lt;/a&gt; to the set of documents that define how we work. Many other open source projects have been adopting similar policies over the past year or so. We are grateful for the work of projects such as CloudNativePG and Ghostty (as well as others), from whom we&amp;rsquo;ve borrowed in creating our guidance.&lt;/li&gt;
&lt;li&gt;In case you missed it: back in November 2025, we adopted the Contributor Covenant, version 3.0, as our &lt;a href="https://github.com/mastodon/.github/blob/main/CODE_OF_CONDUCT.md"&gt;community Code of Conduct&lt;/a&gt;. We want to remind everyone that participation in the Mastodon project and community spaces is subject to the Code of Conduct - it is a crucial part of how we keep our community safe and welcoming for everyone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;At the end of February, we shipped point updates for each of the current release streams: &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.7"&gt;4.5.7&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.14"&gt;4.4.14&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.20"&gt;4.3.20&lt;/a&gt;. Note that versions 4.5.7 and 4.4.14 specifically include security fixes.&lt;/p&gt;
&lt;p&gt;As usual, we strongly recommend that server operators upgrade to the most recent release of the version they are running. This helps keep your systems up-to-date with bug fixes, and provides a more consistent experience for people who use Mastodon.&lt;/p&gt;
&lt;p&gt;Also, we need to remind you that version 4.3.x will not be supported after 06 May 2026 - please move to a more current version before then.&lt;/p&gt;
&lt;p&gt;Beyond the Mastodon server code, we also shipped something new - &lt;a href="https://blog.joinmastodon.org/2026/03/a-new-share-button/"&gt;a Share button that anyone can include in their websites&lt;/a&gt;. There have been a number of other ways to implement sharing before now - thank you to everyone who has been promoting the Fediverse! We’ve regularly been asked to create something like this, and that is why we built it. The &lt;a href="https://github.com/mastodon/share"&gt;code is open source&lt;/a&gt;, so feel free to have a look at how it works.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In February 2026 we reviewed and merged 230 Pull Requests (166 with translation and dependency updates removed) from 14 contributors.&lt;/p&gt;
&lt;p&gt;Version 4.6 will include a couple of changes that we plan to share separate blog posts about in the coming weeks. The first of these is Collections; we &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;previously wrote about&lt;/a&gt; this new way to curate follower recommendations, and this is well into implementation. Another update is an overhaul and redesign of the profile page, and we&amp;rsquo;ll have more to explain about the design choices here soon. As a result, a lot of the work this month is clustered in these two areas.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 More work on implementing Collections. On the backend, work is in progress to implement federation, based on our &lt;a href="https://github.com/mastodon/featured_collections"&gt;&lt;code&gt;FeaturedCollection&lt;/code&gt; proposal.&lt;/a&gt; Editing, viewing, reporting, and sharing Collections is being implemented on the frontend. We will publish a blog post showing our progress and what to expect for this feature later this month.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Continued work on the profile redesign, releasing the experimental account view as work on in-app profile editing continues.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Accessibility improvements: New &amp;ldquo;Jump to content/navigation&amp;rdquo; links, improved keyboard focus indicators in posts with images, more accessible alt-text popup.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 Merged the final step for our theming rework. Now there is a single default &amp;ldquo;Mastodon&amp;rdquo; theme, with user settings for contrast and colour scheme. Mastodon theme authors can update their themes to support these options. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37612"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37612&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 Custom emojis are now properly purged when a domain is suspended. Admins can run &lt;code&gt;tootctl emoji purge --suspended-only&lt;/code&gt; to clean up the emojis from servers that were already suspended. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37808"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37808&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37808"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37808&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-pink-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;security&lt;/span&gt;
 Added a setting on roles to require all users with the role to enable two factor authentication (2FA). We have a few improvements to implement to this feature before we recommend enabling it, but in future this will be strongly recommended for admins and moderators. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37701"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37701&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;Most of the Android work during February was related to the upcoming profile redesign.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;A small update should be arriving soon (as version 2026.02), but most effort continues to go into the profile redesign implementation.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;A bumper month for news and projects from around the community!&lt;/p&gt;
&lt;p&gt;The new share button can be used in different ways. &lt;a href="https://coywolf.social/@coywolf"&gt;Coywolf&lt;/a&gt; explains &lt;a href="https://coywolf.com/news/social-media/mastodon-now-has-an-official-share-button-for-sites/"&gt;how to customise it for a WordPress site&lt;/a&gt;, and &lt;a href="https://yoroy.eu/@roy"&gt;Roy Scholten&lt;/a&gt; has a similar post &lt;a href="https://blog.royscholten.nl/nl/posts/2026/share-on-mastodon/"&gt;for Hugo and static site generators&lt;/a&gt; (as a side note, we&amp;rsquo;ve been using the button on our blog for a while now - you can see it in the top right corner of this page!).&lt;/p&gt;
&lt;p&gt;There are a couple of other interesting blog posts from around the community. &lt;a href="https://mastodon.social/@edent"&gt;Terence Eden&lt;/a&gt; writes about &lt;a href="https://shkspr.mobi/blog/2026/03/adding-log-in-with-mastodon-to-auth0/"&gt;adding Log In With Mastodon to Auth0&lt;/a&gt;. &lt;em&gt;Multi-time Trunk &amp;amp; Tidbits featured contributor&lt;/em&gt; &lt;a href="https://stefanbohacek.online/@stefan"&gt;Stefan Bohacek&lt;/a&gt; has a &lt;a href="https://stefanbohacek.com/project/fediverse-invitation/"&gt;new tool for sending Fediverse Invitations&lt;/a&gt; to friends, where you can include recommended apps and other information of your choice.&lt;/p&gt;
&lt;p&gt;On the code projects side of things, we spotted &lt;a href="https://github.com/xsukax/xsukax-RSS-to-Mastodon"&gt;an RSS-to-Mastodon app&lt;/a&gt; that can help with cross-posting, if that is something you might find useful.&lt;/p&gt;
&lt;p&gt;There were also a few client apps released over the past month that may be of interest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://elefeed.app/"&gt;Elefeed&lt;/a&gt; is an experimental web client that allows you to view your feed with and without followed hashtags, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/gb/app/crowfi/id6756513753"&gt;CrowFi&lt;/a&gt; is a recently-released iOS client app;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/oliphaunt-for-mastodon/id6745527185?mt=12"&gt;Oliphaunt&lt;/a&gt; is a macOS client app;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mastoblaster.com/"&gt;MastoBlaster&lt;/a&gt; is an iOS app currently on TestFlight, that works with Mastodon servers and with other Fediverse servers, specifically &lt;a href="https://codeberg.org/grunfink/snac2"&gt;snac&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is exciting to see so many interesting new things happening around the ecosystem!&lt;/p&gt;
&lt;h2 id="we-appreciate-you"&gt;We appreciate you&lt;/h2&gt;
&lt;p&gt;As always, we want to take the time to say Thank You for following our project, and for being a part of the community. We&amp;rsquo;re building a more human internet together, and we value your support. See you back here next month!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>A new Share button</title><link>https://blog.joinmastodon.org/2026/03/a-new-share-button/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/03/a-new-share-button/</guid><description>&lt;p&gt;Have you ever wondered why news articles around the web have buttons to share to some of those other social sites, but not on Mastodon? There used to be a legitimate reason for this: unlike legacy social, Mastodon isn’t a single monolithic website you can link to; there are over 8,000 places where a person could have a Mastodon account! Their account could be on &lt;code&gt;mastodon.social&lt;/code&gt;, the large, official server run by us. Or &lt;code&gt;hachyderm.io&lt;/code&gt;, a sizeable server for tech enthusiasts operated by Nivenly. Or &lt;code&gt;social.coop&lt;/code&gt;, a Mastodon server operated like a co-operative, where all members pay towards the costs and vote on decisions together. Some people run their own Mastodon servers, on their hardware at home. The distributed nature of the network is the greatest strength of Mastodon, but it also means that having a share button that takes you to the “correct” Mastodon server for your account, is a lot more involved than a simple hyperlink. Third party solutions have existed before now, but none of them have become ubiquitous, or easy to discover for website owners. This changes today, with our new official &lt;a href="https://share.joinmastodon.org"&gt;Share tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are a website owner, you can go to &lt;a href="https://share.joinmastodon.org"&gt;share.joinmastodon.org&lt;/a&gt; to find instructions describing how to integrate this on your website. Of course, we’ve also &lt;a href="https://github.com/mastodon/share"&gt;made the code available and open source&lt;/a&gt;, the same as the rest of Mastodon’s code. That means you can check how it works, and even host a share page of your own (you don’t need to host anything, but you can, if you don’t want to use the version that we’re hosting - it’s your choice).&lt;/p&gt;
&lt;p&gt;To try out what sharing something looks like right now, click “Share on Mastodon” on this very blog post (there&amp;rsquo;s a button to do it, at the top right of the page). The tool itself works entirely in your browser: there is no tracking data, and it does not store any information on the server. If you have multiple Mastodon accounts, you can add more than one, and choose which one to share to when you post.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2026/03/a-new-share-button/share-button.png" alt="The Share Button"&gt;&lt;/p&gt;
&lt;p&gt;One more thing to mention here: back when we released Mastodon version 4.4, tucked away in &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0#:~:text=referrer"&gt;the release notes&lt;/a&gt;, we mentioned that server administrators have the option to send a referrer header when a link is clicked. If the owner of your server has enabled that setting, then websites whose links get shared will see traffic coming from Mastodon - yet another way to share how the community is growing.&lt;/p&gt;
&lt;p&gt;We’re looking forward to seeing the Mastodon logo on more websites - possibly, alongside other social media platforms; and maybe even as the “main” sharing link, like here on our blog.&lt;/p&gt;</description></item><item><title>Mastodon is for the people</title><link>https://blog.joinmastodon.org/2026/02/mastodon-is-for-the-people/</link><pubDate>Thu, 19 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/mastodon-is-for-the-people/</guid><description>&lt;p&gt;Hi, I&amp;rsquo;m Hannah. I&amp;rsquo;m a community builder and long-time professional social media poster, though most of my “greatest hits” weren’t under my own name. I’ve managed and contributed to social accounts for a blowtorch manufacturer, a fancy hand soap maker, a Chicago-based foodservice company, and ultimately, tech companies. (That last one is how I found my way to open source — but that’s a &lt;a href="https://hannahaubry.online/no-more-montages"&gt;rerun episode&lt;/a&gt; for another day)&lt;/p&gt;
&lt;p&gt;Now, I’m Mastodon’s Community Director. I joined because this work is personal to me. My early professional experience gave me a front-row seat to the ways traditional social media companies do harm to &lt;a href="https://www.bbc.com/news/technology-28051930"&gt;people&lt;/a&gt; and &lt;a href="https://www.amnesty.org/en/latest/news/2019/07/the-great-hack-facebook-cambridge-analytica/"&gt;society&lt;/a&gt;. I believe that the social web, and Mastodon as part of it, has a vital role to play in charting a new path forward for our digital social spaces. I’m thrilled to be here building with you.&lt;/p&gt;
&lt;p&gt;Alright — enough about me. :) Let’s get to the part where we talk about what Mastodon is doing for you this year!&lt;/p&gt;
&lt;h2 id="introducing-the-mastodonsocial-help-centre"&gt;Introducing the Mastodon.social Help Centre&lt;/h2&gt;
&lt;p&gt;Our team runs mastodon.social to provide a safe landing place for anyone, especially for newcomers to the social web. It’s also an important example to others of what a Mastodon server looks like when it’s up and running. For those reasons, and because we feel it’s the right thing to do, we want mastodon.social to be accessible and safe for anyone who chooses to host their account there.&lt;/p&gt;
&lt;p&gt;Today, we’re announcing a new resource for mastodon.social users: the &lt;a href="https://help.joinmastodon.org/"&gt;Help Centre&lt;/a&gt;. We intend for the Help Centre to be a place where people can learn how to use Mastodon’s software. It will also include more information about participating on mastodon.social in a healthy, safe, and accessible way. In the future, we’re planning to migrate this site to a &lt;a href="https://en.wikipedia.org/wiki/Free_and_open-source_software"&gt;free and open source software (FOSS)&lt;/a&gt; backend, and integrate links to user-facing tutorials directly into Mastodon’s software.&lt;/p&gt;
&lt;p&gt;We have a lot of ideas about the kinds of resources we want to add to the Help Centre. We’re announcing it now because we think it’s important to show our work as we go, and we want your help. Throughout 2026 community team members Zora and Amelia will continue to add guides and tutorials about Mastodon, and we’ll ask for your input along the way: What kinds of resources should we add? Are we on the right track? How can we improve? Let us know by getting in touch with &lt;a href="https://mastodon.social/@staff"&gt;@staff@mastodon.social&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We also haven’t forgotten about &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt;. We want to do something wildly different there and push the limits of what the software can do. We have some thoughts, but we don’t really know what this looks like yet! If you have ideas about neat or useful things we could do with mastodon.online, send a message to &lt;a href="https://mastodon.online/@staff"&gt;@staff@mastodon.online&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="default-server-recommendations-and-server-discovery"&gt;Default server recommendations and server discovery&lt;/h2&gt;
&lt;p&gt;As people fled from traditional social media in late 2022, we made a strategic decision to send new sign-ups directly to mastodon.social. This choice was driven by our desire to reduce cognitive load for new users and ensure a stable onboarding experience. While we want people to feel safe and welcome on mastodon.social, we also know we can do more to help deliver on Mastodon’s decentralised promise. Our ultimate goal is to reimagine Mastodon&amp;rsquo;s onboarding process (&lt;a href="https://blog.joinmastodon.org/2026/02/our-technical-direction/"&gt;you heard about that yesterday from Renaud and Imani&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;For now, we want to run some onboarding experiments to test our ideas and learn what can work for us and for everyone on the network. Our first experiment is Default Server Recommendations. (If you were at FOSDEM or following along at home, you may have seen &lt;a href="https://fosdem.org/2026/schedule/event/HJYRFF-tending-the-herd/"&gt;Andy Piper and I announce this&lt;/a&gt; or &lt;a href="https://mastodon.social/@Mastodon/115989801184595302"&gt;post about it&lt;/a&gt;!). Practically, we will replace the “join mastodon.social” button with a button that recommends a server from an opt-in pool that we will be hand selecting to start.&lt;/p&gt;
&lt;p&gt;At first, we’re planning to recommend the closest geographic server in the correct language based on data surfaced by the app store, so it will only be available initially on the Android and iOS apps. We may also experiment with other logic for recommending a server, including random distribution. We’re listening to your feedback as we move forward with our planning. (We hear you on open sign-ups and spam. We’re already talking about what we can do.) No matter how we’re routing sign-ups, the experiment will be designed to ensure that server admins remain in control: meaning, they will have the power to opt in and out as needed, or reduce the percentage of sign-ups flowing their way. If you want to be a part of these experiments, &lt;a href="https://forms.gle/7FqK8Y1TJADoZvbE6"&gt;complete this form.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We also intend to improve server discovery by improving our Server Directory. This starts with moving the directory to a new pull-request-based system so admins can submit, update, or remove entries themselves. Another change we want to make is to add more and new ways to “classify” different types of servers including demographics, interests, and geographic regions. Once we have that kind of information, we can start to explore new ways to incorporate it into the onboarding process.&lt;/p&gt;
&lt;h2 id="were-getting-off-discord-join-us-on-zulip"&gt;We’re getting off Discord: Join us on Zulip&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re taking concrete steps to demonstrate our commitment to our values by moving as much of our digital infrastructure to FOSS as possible. This is a long-term project. We’re going to move slowly, and we’re not committing to moving everything to FOSS. We’re taking our time because we need to balance achieving our mission with evolving our operations. That being said — today, we’re taking an important step that we feel will make a big difference for us and for our community: We’re starting the process of moving our community chat space from Discord to Zulip.&lt;/p&gt;
&lt;p&gt;Our first step will be to migrate the people on our existing Discord servers to Zulip, which we plan to do soon. Currently, only Patreon donors are granted access to the Discord. On Zulip, we’ll grant access to donors no matter where their gift comes from. We also want to extend access to more and different kinds of people who are deeply engaged and actively contributing to Mastodon and the social web. However, we want to be thoughtful about how we do that. Running these spaces is important, but they do add coordination and moderation overhead to our small team. We’ll keep you updated as we make progress.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="stay-tuned"&gt;Stay tuned&lt;/h2&gt;
&lt;p&gt;That’s all for now, folks! Thanks for reading and stay tuned: We plan to start sharing more stories and exciting things happening from across Mastodon and the social web right here on our blog.&lt;/p&gt;
&lt;p&gt;If you liked the projects and direction you read about here and over the last two days, please consider &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;sending a donation&lt;/a&gt; our way to support this work and Mastodon’s future. If you’re already a donor: Thank you!&lt;/p&gt;
&lt;p&gt;Next up: a feature interview with Yehuda and Tzipporah, the Indigenous grandfather/daughter duo that runs &lt;a href="http://turtleisland.social/"&gt;turtleisland.social&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See you there 👋&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Our technical direction</title><link>https://blog.joinmastodon.org/2026/02/our-technical-direction/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/our-technical-direction/</guid><description>&lt;p&gt;Hello everyone! I’m Renaud, and I’m the Technical Director at Mastodon. I’ve also been the technical lead for delivering Mastodon releases for several years now. This post is co-written with Imani, our lead product designer.&lt;/p&gt;
&lt;p&gt;Mastodon continues to grow as more people seek alternatives to centralised social media and closed social networks. Today, we&amp;rsquo;re sharing our vision for making the Fediverse more accessible, diverse, and empowering for everyone—from first-time users to established creators.&lt;/p&gt;
&lt;p&gt;At its core, Mastodon remains a microblogging, or short form text app. We’re building an app that enables anyone to connect with their friends, and share their thoughts and creativity. We are part of an ecosystem of interconnected social apps known as the Fediverse - built on common standards and protocols, a space where you can choose the apps and communities that are the right fit for how you want to express yourself, and participate how and where you are most comfortable.&lt;/p&gt;
&lt;p&gt;Over the past 18 months, we’ve focused on growing our core development team and improving our processes to set us up for this phase of the project. We’ve gone from having one or two full-stack developers, to a broader team with expertise and experience across backend, web, and mobile apps, working with a dedicated designer who helps us to think deeply about how people encounter and use the social web.&lt;/p&gt;
&lt;p&gt;You’ve seen us increase the rate of updates over the past eighteen months - three major new versions (&lt;a href="https://blog.joinmastodon.org/2024/10/mastodon-4.3/"&gt;4.3&lt;/a&gt;, &lt;a href="https://blog.joinmastodon.org/2025/07/mastodon-4.4/"&gt;4.4&lt;/a&gt; and &lt;a href="https://blog.joinmastodon.org/2025/11/mastodon-4.5/"&gt;4.5&lt;/a&gt;), each with headline new features that the community has been waiting for: improved discovery; better onboarding; list management upgrades; new tools for server owners; and, of course, Quote Posts!&lt;/p&gt;
&lt;p&gt;We’re far from done, and we plan to continue to deliver regular updates. It is important to understand that Mastodon is vital infrastructure for many, so we will also continue to spend a large proportion of our time on ensuring that the platform remains safe, stable and secure. This is a key reason why we take our time when it comes to evaluating new features.&lt;/p&gt;
&lt;h2 id="the-broader-roadmap"&gt;The broader roadmap&lt;/h2&gt;
&lt;p&gt;We recently reworked our &lt;a href="https://joinmastodon.org/roadmap"&gt;roadmap&lt;/a&gt;, to make it more specific about what we are working on in the immediate future (three to six months). The roadmap on our site represents what we’re directly building in the current and following release cycles: we deliberately keep it focused, and want to avoid committing to add functionality when we may not yet be ready to support it.&lt;/p&gt;
&lt;p&gt;As we think about our plans, we recognise that we are also part of the broader Fediverse. We make an effort to implement features in an open and interoperable manner, creating new specifications when needed. Recent examples include &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;Quote Posts&lt;/a&gt;, &lt;a href="https://github.com/mastodon/featured_collections"&gt;Collections&lt;/a&gt;, and the &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;Fediverse Auxiliary Service Provider&lt;/a&gt; specification - we’re excited to see other people build new implementations.&lt;/p&gt;
&lt;p&gt;It’s also useful to provide a longer-term view of where we are going, so with that in mind, here&amp;rsquo;s a broader view of what we&amp;rsquo;re planning to build over the next 1-2 years.&lt;/p&gt;
&lt;h3 id="a-social-web-for-everyone"&gt;A social web for everyone&lt;/h3&gt;
&lt;p&gt;A thriving Mastodon ecosystem is one where anyone can participate, regardless of technical knowledge. We&amp;rsquo;re redesigning core parts of the experience to make this a reality: a streamlined sign-up flow that explains server choice without overwhelming newcomers, improved search and discovery tools to help you find communities and conversations, and clearer navigation throughout the app.&lt;/p&gt;
&lt;h3 id="promoting-indie-servers"&gt;Promoting indie servers&lt;/h3&gt;
&lt;p&gt;Right now, too many newcomers default to the largest servers. We want to change that - because Mastodon is best when communities are spread across many independent servers, each with its own character and focus.&lt;/p&gt;
&lt;p&gt;We’ll be shipping new admin tools to help independent server operators manage moderation and maintenance more easily, like a feature to use external blocklists, extensible ways to set up content scanning to detect illegal content or spam, and ways to reduce your media storage usage by delegating serving remote posts media files from a trusted third party.&lt;/p&gt;
&lt;p&gt;We’ll also be redesigning server discovery to showcase the diversity of communities available. You’ll hear more about this from Hannah, our Community Director, in tomorrow’s post.&lt;/p&gt;
&lt;h3 id="a-decentralised-platform-for-content-creators"&gt;A decentralised platform for content creators&lt;/h3&gt;
&lt;p&gt;Public figures, journalists, and institutions are looking for alternatives to mainstream platforms – and we want Mastodon to be their first choice. We’re introducing features designed specifically for creators: a redesigned profile view that better showcases their work, and an enhanced compose experience. For organisations like public institutions, we’re working on a new email notification option that allows people to follow their updates even if those people don’t have a Mastodon account yet. This means creators can reach their audiences wherever they are – whether they’re active in the Fediverse or still exploring their options. Our goal is to give audiences and creators a way to connect on their own terms, free from algorithmic manipulation.&lt;/p&gt;
&lt;h3 id="onward-together"&gt;Onward, together&lt;/h3&gt;
&lt;p&gt;These upcoming changes represent our commitment to building a social web that puts people first. Mastodon won’t ever harvest your data or chase engagement metrics. We’re focused on creating spaces where authentic connection can flourish. If you have thoughts on software improvements, &lt;a href="mailto:feedback@joinmastodon.org?subject=Technical%20direction%20blog%20post"&gt;send us an email&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="support-mastodon"&gt;Support Mastodon&lt;/h3&gt;
&lt;p&gt;We’re a small team building software to power the Fediverse. Unlike ad-driven platforms, we operate entirely on donations – and &lt;em&gt;every contribution matters&lt;/em&gt;. See &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;our donation page&lt;/a&gt; for ways to support us.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Connecting the world through thriving online communities</title><link>https://blog.joinmastodon.org/2026/02/connecting-the-world-through-thriving-online-communities/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/connecting-the-world-through-thriving-online-communities/</guid><description>&lt;p&gt;Over the past couple of decades, the concept of the “social” internet has come a long way - from the first interactive websites and the Web 2.0 era, blogs and self-publishing, the ability for people to create and share their own content online, through microblogging to broadcasting at scale. Today, what we know as “social media” is having a huge impact on society - often, taken advantage of in unhealthy ways.&lt;/p&gt;
&lt;p&gt;We believe that the open social web can be better than this. We’ve seen the &lt;em&gt;positive&lt;/em&gt; impact that online social platforms can have, and we treat our roles as builders of resources in this space with great responsibility. Our focus on community ownership, trust &amp;amp; safety features, organic user &amp;amp; server growth, and financial sustainability - for the non-profit project, the server administrators, the moderators, the developers and translators, and the creators in the Fediverse - will enable us to build a better way of being online.&lt;/p&gt;
&lt;p&gt;To begin, we sat down together to figure out who we are, what we do, and how we operate. This is a first step in building community ownership and governance, which we &lt;a href="https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/"&gt;kicked off in November last year&lt;/a&gt;. We may seem to be moving slowly compared to our better funded competitors and even friends in our space, but we think this is the right speed for something as important as the digital fabric of our society.&lt;/p&gt;
&lt;p&gt;Today we’re sharing our Vision, Mission, and the Pillars for our 2026 strategy.&lt;/p&gt;
&lt;h2 id="our-vision"&gt;Our vision&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;A human-centred social web that serves the common good.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="our-mission"&gt;Our mission&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Connect the world through thriving online communities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="our-strategy"&gt;Our strategy&lt;/h2&gt;
&lt;p&gt;Here’s how we’re going to do it:&lt;/p&gt;
&lt;h3 id="governance-create-obvious-pathways-and-opportunities-for-the-social-web-community-to-help-shape-the-future-of-mastodon"&gt;Governance: Create obvious pathways and opportunities for the social web community to help shape the future of Mastodon&lt;/h3&gt;
&lt;p&gt;First, we will finalise a governance model that makes everyone feel consulted and informed about the future of Mastodon. Second, we&amp;rsquo;re forming and founding an EU-based non-profit parent entity to ensure Mastodon stays European forever. Third, we are developing a funding strategy to reach sustainable operations, including building capabilities into Mastodon that allow users to donate easily without leaving the app. Fourth, we will be moving more of our team and project infrastructure to open platforms for greater autonomy - with the first example being a migration (soon) from Discord to Zulip for our community discussions. Finally, we are investing in our internal systems, to remain a welcoming and well-functioning workplace for our team.&lt;/p&gt;
&lt;h3 id="network-health-redefine-what-it-means-to-be-safe-on-mastodon"&gt;Network Health: Redefine what it means to be safe on Mastodon&lt;/h3&gt;
&lt;p&gt;Everyone on today’s internet is directly exposed to regulations like GDPR, the Digital Services Act (DSA), the Digital Markets Act (DMA), and lately numerous age verification (or assurance) laws and related social media bans for minors. We will perform a regulatory audit to ensure full legal compliance of our own servers, and explore how this knowledge can be shared with the community. We are also forming an interdisciplinary age-verification working group, to help us navigate the complex nature of these international laws. Simultaneously, the team will draft and publish new community guidelines and moderation policies for the servers we operate. Additionally, we are updating the terms of service (we &lt;a href="https://github.com/mastodon/mastodon/discussions/36368"&gt;ran a community consultation on this in October 2025&lt;/a&gt;) and privacy policy for our own servers.&lt;/p&gt;
&lt;h3 id="product--ecosystem-growth-build-a-beautiful-and-intuitive-social-networking-application-that-helps-people-discover-the-fediverse-and-find-their-friends"&gt;Product &amp;amp; Ecosystem Growth: Build a beautiful and intuitive social networking application that helps people discover the fediverse and find their friends&lt;/h3&gt;
&lt;p&gt;The Mastodon project is planning a global redesign to improve usability and discovery across the next software versions. These releases will include shipping our &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;extension capabilities&lt;/a&gt; to all servers (initiated thanks to the EU-funded &lt;a href="https://fediscovery.org"&gt;“Fediscovery” project&lt;/a&gt;); creating a specification for automated content detection; and establishing processes to support network growth and health. Additionally, the team will focus on improvements for server administrators, by making Mastodon easier to install, update, and administer, with efforts to reduce hosting costs and enhance documentation.&lt;/p&gt;
&lt;p&gt;Over the next two days, my fellow directors will share more information about their plans for the coming year. Stay tuned, and let us know what you think about this plan by posting to us on Mastodon via &lt;a href="https://mastodon.social/@mastodon"&gt;@mastodon@mastodon.social&lt;/a&gt; or by &lt;a href="mailto:hello@joinmastodon.org?subject=Mission%20and%20vision%20blog%20post"&gt;sending us an email&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Administrative updates</title><link>https://blog.joinmastodon.org/2026/02/administrative-updates/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/administrative-updates/</guid><description>&lt;p&gt;In November 2025, we &lt;a href="https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/"&gt;shared our new organisational structure&lt;/a&gt;, and explained that the process to establish a new, non-profit, home for the project in Europe is well underway.&lt;/p&gt;
&lt;p&gt;In the same post, we also mentioned that our German-based organisation has had its former charitable status removed. As a result, we are making necessary changes to some of the legal terminology across the project, and on our websites.&lt;/p&gt;
&lt;p&gt;Specifically, in most places where Mastodon gGmbH was previously mentioned (including in the about pages of Mastodon servers) we’re revising the text, to refer to Mastodon GmbH. The “g” stands for non-profit (German: &lt;em&gt;gemeinnützig&lt;/em&gt;), and this adjustment is being made to reflect the change of status of this part of our organisation structure, in Germany.&lt;/p&gt;
&lt;p&gt;Furthermore, Marius Rothermund was appointed in January 2026 as second managing director of Mastodon GmbH, in addition to Felix Hlatky. The reason for this is to distribute management tasks over more shoulders and ensure full compliance during this critical phase of restructuring. The &lt;a href="https://joinmastodon.org/about#impressum"&gt;imprint for our German organisation now reflects this change&lt;/a&gt;. Marius will accompany us until we establish our new European non-profit holding structure.&lt;/p&gt;
&lt;p&gt;These changes are to fulfil legal requirements, and reflect our current operational status. There is no change to our mission, or direction (mentioned &lt;a href="https://fosdem.org/2026/schedule/event/HJYRFF-tending-the-herd/"&gt;in our recent FOSDEM presentation&lt;/a&gt;, with more to come on the blog next week); overall, Mastodon remains a non-profit with a fiscal sponsor in Germany (&lt;a href="https://blog.joinmastodon.org/2025/11/mastodon-joins-forces-with-we-aid/"&gt;via WE AID&lt;/a&gt;) and via &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/"&gt;our 501(c)(3) entity&lt;/a&gt; in the United States.&lt;/p&gt;
&lt;p&gt;The next steps will be to form a Belgian non-profit parent organisation. You can expect to see more news before the Summer.&lt;/p&gt;</description></item><item><title>FOSDEM 2026 Recap</title><link>https://blog.joinmastodon.org/2026/02/fosdem-2026-recap/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/fosdem-2026-recap/</guid><description>&lt;p&gt;This year, the Mastodon team returned to &lt;a href="https://fosdem.org"&gt;FOSDEM&lt;/a&gt; for the third time. FOSDEM is an annual gathering of open source developers, held in Brussels. We’re excited to report that the Fediverse is feeling vibrant!&lt;/p&gt;
&lt;p&gt;FOSDEM has become a central element of &lt;a href="https://opensourceweek.eu/"&gt;EU Open Source Week&lt;/a&gt; - a series of events, meetups and workshops that have formed around the conference itself. The range of events makes this trip to Brussels valuable for our team, with opportunities to meet other projects, non-profit organisations, open source foundations, and policymakers.&lt;/p&gt;
&lt;p&gt;On Friday evening before FOSDEM, a group of around forty Fediverse supporters, builders and enthusiasts got together for a social meetup. This was the first time that several prominent developers across the ActivityPub ecosystem had met in person, and there was an immediate sense of excitement and anticipation! We enjoyed the chance to meet up with both community members, and also developers working on other ActivityPub-related projects.&lt;/p&gt;
&lt;p&gt;FOSDEM itself runs across Saturday and Sunday. The team had a table with handouts that explained the project; a slideshow covering improvements since last year’s event as well as our roadmap; and some pins and stickers for sale. A few lucky visitors were able to pick up a special &lt;em&gt;limited-edition&lt;/em&gt; sticker featuring a “My friends are not for sale” tagline. The &lt;a href="https://shop.joinmastodon.org/products/mastodon-stuffed-toy-mini"&gt;Plushtodons&lt;/a&gt; also made an appearance, for photo opportunities - unfortunately we were not able to transport any for sale, but folks were able to order new friends directly from the online store.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="sticker.jpg" alt="My friends are not for sale stickers"&gt;
 &lt;figcaption&gt;My friends are not for sale stickers - only available at FOSDEM (so far)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Reflecting on our third trip to FOSDEM, we&amp;rsquo;ve been thinking a lot about how things have developed in only three years:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in 2024, Mastodon was the first (and so far, remains the only) Fediverse project to get a stand at the event&amp;hellip; and there was no specific conference track for Social Web discussions;&lt;/li&gt;
&lt;li&gt;last year, the Social Web track - partly created from the popular demand seen the previous year - &lt;a href="https://fosdem.org/2025/schedule/track/social-web/"&gt;was a (packed) half-day&lt;/a&gt; affair, with spill over birds of a feather and after hours events;&lt;/li&gt;
&lt;li&gt;this year, the track &lt;a href="https://fosdem.org/2026/schedule/track/social-web/"&gt;ran throughout the day on Saturday&lt;/a&gt;, with &lt;em&gt;29 speakers&lt;/em&gt; from countries worldwide, covering both technical and non-technical topics - &lt;em&gt;and&lt;/em&gt; there were additional meetups and sessions outside of that!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://hachyderm.io/@haubles"&gt;Hannah&lt;/a&gt; (Community Director) and &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; (Head of Communications) co-presented &lt;a href="https://fosdem.org/2026/schedule/event/HJYRFF-tending-the-herd/"&gt;a session on Mastodon’s mission, governance and community&lt;/a&gt;, and they also announced a forthcoming experiment to extend default server recommendations.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Mastodon/115989801184595302/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Mastodon/115989801184595302" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Mastodon@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Overall, this year&amp;rsquo;s Social Web track highlighted the &lt;a href="https://macaw.social/@andypiper/115990728131445794"&gt;diversity of projects and discussions&lt;/a&gt; in the Fediverse ecosystem. It was also a hub of conversation around &lt;a href="https://blog.joinmastodon.org/2025/12/the-world-needs-social-sovereignty/"&gt;the need for greater autonomy&lt;/a&gt; in technology choices in Europe. It was a very exciting day.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="get-started.jpg" alt="Some speakers at the end of the Social Web track"&gt;
 &lt;figcaption&gt;Some speakers at the end of the Social Web track&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;(thank you to &lt;a href="https://mastodon.social/@sturmsucht"&gt;@Sturmsucht&lt;/a&gt; for being with us throughout the day and for sharing the photo!)&lt;/p&gt;
&lt;p&gt;On Sunday, our Executive Director &lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; was part of &lt;a href="https://fosdem.org/2026/schedule/event/W8RCMT-the_fediverse_and_the_eus_digital_services_act_solving_the_challenges_of_modern_/"&gt;a discussion about the Fediverse and the EU’s Digital Services Act&lt;/a&gt;. Conversations like these provide opportunities to share our mission, and they help to educate policymakers on the values of the Fediverse. Members of the team also took part in other sessions related to the Fediverse; and the others were kept busy with conversations at our table - although, by Sunday, we&amp;rsquo;d run out of most of the merchandise items we&amp;rsquo;d taken along&amp;hellip;&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Mastodon/115994886880576861/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Mastodon/115994886880576861" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Mastodon@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;At Mastodon, we value everyone across the community - our fellow developers, people who run Fediverse servers, and the people who use Mastodon and other connected applications every day. We were happy to be back in Brussels for FOSDEM, and we hope to return to continue the important conversations that happen there. Thank you to everyone who visited our table, for their interest and kind words about the project. We&amp;rsquo;re building a better social web for everyone, and we were happy to see you there! If you&amp;rsquo;re curious about what you missed, have a look at the &lt;a href="https://fosdem.org/2026/schedule/track/social-web/"&gt;recordings&lt;/a&gt; from the Social Web track.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, January 2026</title><link>https://blog.joinmastodon.org/2026/02/trunk-tidbits-january-2026/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/02/trunk-tidbits-january-2026/</guid><description>&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;
&lt;p&gt;Welcome to Mastodon&amp;rsquo;s monthly product and engineering update, looking back at January 2026.&lt;/p&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve just published &lt;a href="https://blog.joinmastodon.org/2026/02/fosdem-2026-recap/"&gt;a recap of our visit to FOSDEM 2026&lt;/a&gt;. We&amp;rsquo;ve had feedback that some event updates were a bit buried in the Trunk &amp;amp; Tidbits posts; and, that the results and outcomes of our team presence at events could be made more clear. We&amp;rsquo;ve heard you, and we&amp;rsquo;ll be posting these sorts of update in standalone format in the future.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;In the past month, we released the following point versions - these contain bugfixes, and a fix for a security issue, so we strongly recommend that server operators update to a current version.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.6"&gt;4.5.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.13"&gt;4.4.13&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.19"&gt;4.3.19&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the associated release notes at the links above for instructions on upgrading, and remember that these processes sometimes require asset recompilation.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Note that all versions of Mastodon from the 4.2.x release branch and below are now out of support, and support for version 4.3.x will end on &lt;strong&gt;May 6, 2026&lt;/strong&gt;. Read more about &lt;a href="https://github.com/mastodon/mastodon/blob/main/SECURITY.md"&gt;end-of-life dates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In January 2026 we reviewed and merged 242 Pull Requests (157 with translation and dependency updates removed) from 16 contributors, 11 of which were from the broader community. Thank you!&lt;/p&gt;
&lt;p&gt;Progress towards the next major release of Mastodon continues. Here&amp;rsquo;s what the team has been working on.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 We’ve been creating new accessible &amp;amp; redesigned form components for use in the editing interfaces for Collections and Profiles&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 Work on the editing UI for the upcoming Collections feature is in progress, so is work on federation of Collections&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 Continued work on the new Profile design: expect some visible changes in the coming weeks, for users running nightly releases&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Fix a performance issue with the status batch delete SQL query &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37469"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37469&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Add new &lt;code&gt;data-color-scheme&lt;/code&gt; and &lt;code&gt;data-contrast&lt;/code&gt; attributes on &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; to let themes easily get the correct color scheme and contrast settings for the user &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37477"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37477&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Shortened caching duration for pending quote post approvals, which should help to reduce the number of times a quote is displayed as pending &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37570"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37570&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Removed support for ImageMagick, which has been deprecated for the last 2 versions. Mastodon now requires &lt;code&gt;libvips&lt;/code&gt; &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37488"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37488&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Added storage of image descriptions for profile pictures and headers when they come from federation. This does not have any impact in the UI, nor can they be set by Mastodon users for now. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37634"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37634&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We started off the year releasing 2026.01, with a few important improvements:&lt;/p&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Avoid triggering post actions accidentally while scrolling.&lt;/li&gt;
&lt;li&gt;Display Lists in alphabetical order, as on the web.&lt;/li&gt;
&lt;li&gt;Improved hashtag statistics layout for longer translations.&lt;/li&gt;
&lt;li&gt;Avoid publishing the same post twice by accidentally double tapping the publish button.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Most of our iOS work lately has been on the new profile view, which is not yet in released builds.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;We spotted some terminal-based Mastodon apps! Have you tried &lt;a href="https://codeberg.org/ihabunek/tooi"&gt;tooi&lt;/a&gt; (below)? There&amp;rsquo;s also &lt;a href="https://mastui.app/"&gt;mastui&lt;/a&gt;, which is an alternative.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@ihabunek/115819612141229264/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@ihabunek/115819612141229264" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @ihabunek@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;If you&amp;rsquo;re looking to make yourself more discoverable, then &lt;a href="https://mastodon-account-checker.playground.54gradsoftware.de/"&gt;this tool&lt;/a&gt; may help you to find ways to do that, by completing more information in your profile.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re building with the Mastodon API, please let us know so we can share with the community!&lt;/p&gt;
&lt;h2 id="thank-you-and-until-next-time"&gt;Thank you, and until next time&lt;/h2&gt;
&lt;p&gt;We believe that it is always important for us to humbly acknowledge the community that supports our work. Thank you - your contributions mean a lot to all of us on the team, and to our mission. We really appreciate your donations.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, December 2025</title><link>https://blog.joinmastodon.org/2026/01/trunk-tidbits-december-2025/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2026/01/trunk-tidbits-december-2025/</guid><description>&lt;p&gt;Welcome back, friends: and, happy 2026. Our team is anticipating a lot of exciting developments this year!&lt;/p&gt;
&lt;p&gt;As we write this update in early January, &lt;a href="https://fosdem.org/2026"&gt;FOSDEM&lt;/a&gt; is just a few weeks away. We will have a stand at the event for the third year in a row, where you’ll be able to talk to folks from the team. If you’ve visited us at FOSDEM in the past, you should expect a different setup this year. We will have less merchandise to pick up from us in person, for logisical reasons: you can still &lt;a href="https://shop.joinmastodon.org"&gt;order merch online&lt;/a&gt;, but we don’t plan to have t-shirts, plushies or mugs with us this year, only some of the smaller items.&lt;/p&gt;
&lt;p&gt;Apart from our table, we also have a presence in a couple of devrooms. Our Community Director, &lt;a href="https://hachyderm.io/@haubles"&gt;Hannah&lt;/a&gt; will be on stage in the &lt;a href="https://fosdem.org/2026/schedule/track/social-web/"&gt;Social Web Devroom&lt;/a&gt; with a session entitled &lt;a href="https://fosdem.org/2026/schedule/event/HJYRFF-tending-the-herd/"&gt;Tending the Herd&lt;/a&gt;, and will be on a panel on another track as well. We hope to meet some Trunk &amp;amp; Tidbits readers in the Social Web Devroom, so please say hello 🫶🏻&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;In the past week, we released versions &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.4"&gt;4.5.4&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.11"&gt;4.4.11&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.17"&gt;4.3.17&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.29"&gt;4.2.29&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These versions contain fixes for various bugs, and include important security fixes (one high severity, and one moderate severity). We recommend that all server administrators update to the new point releases for the Mastodon version they are running.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Note the &lt;a href="https://github.com/mastodon/mastodon/blob/main/SECURITY.md"&gt;end-of-life dates&lt;/a&gt;. Mastodon v4.2.29 will be the final update for the Mastodon v4.2 branch. Coming up, the 4.3 branch will reach EOL on &lt;strong&gt;May 6, 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In December 2025 we reviewed and merged 183 Pull Requests (137 with translation and dependency updates removed) from 10 contributors. A quieter month - mostly as expected at this time of year, when folks take a break for the holiday.&lt;/p&gt;
&lt;p&gt;Thank you to everyone who helped with code contributions and issue triage.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Wrapstodon (our end-of-year summary of your activity) was updated, based on feedback from last year. It no longer requires action from administrators, and is enabled for everyone (but, it can be disabled). It is now generated on-demand, and has a new appearance. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37093"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37093&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37055"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37055&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37106"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37106&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37109"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37109&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37121"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37121&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37169"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37169&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37188"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37188&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37273"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37273&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The work on &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;Collections (formerly known as starter packs)&lt;/a&gt; is continuing, and the first APIs are implemented. This is still highly experimental and will change. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37053"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37053&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37110"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37110&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37117"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37117&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37139"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37139&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 There is an ongoing refactor aimed at improving our theming system. This will allow 3rd party themes to support a user setting for dark/light mode 😎 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37095"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37095&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Fixed an issue where &lt;code&gt;Referer&lt;/code&gt; headers were not sent even if the administrator configured them to be sent. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37107"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37107&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;ui&lt;/span&gt;
 Fixed YouTube embeds not being displayed. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37126"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37126&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37139"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37139&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We shipped 2025.09 with Liquid Glass controls, better scrolling on iPad, some crash fixes, and a few more localized languages. It was followed quickly by 2025.10, to correct the appearance of the new Liquid Glass icon on the App Store.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you like the multi-column view of Mastodon&amp;rsquo;s Advanced Mode, you might also like to take a look at &lt;a href="https://fedideck.app/"&gt;FediDeck&lt;/a&gt;, an in-progress app with some similarities. It is marked as alpha, so be kind!&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re an iOS user, our friends at Tapbots &lt;a href="https://tapbots.social/@ivory/115849434866292703"&gt;shipped an update for Ivory&lt;/a&gt; with support for Mastodon&amp;rsquo;s consent-respecting quote posts feature.&lt;/li&gt;
&lt;li&gt;Finally, &lt;a href="https://github.com/fediway/fediway"&gt;Fediway&lt;/a&gt; is &amp;ldquo;a recommendation engine for Mastodon&amp;rdquo; that you may be curious to investigate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always: if you&amp;rsquo;re building with the Mastodon API, let us know!&lt;/p&gt;
&lt;h2 id="we-appreciate-you"&gt;We Appreciate You&lt;/h2&gt;
&lt;p&gt;As we enter a new year, we&amp;rsquo;re tremendously grateful for your support and contributions. We&amp;rsquo;re building a people-powered social web, and depend on your donations. Please click below to help out. Thank you!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Annual Report 2024</title><link>https://blog.joinmastodon.org/2025/12/annual-report-2024/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/12/annual-report-2024/</guid><description>&lt;p&gt;We are happy to release our 2024 Annual Report. We&amp;rsquo;re a non-profit, and open-source; we value transparency, and we are committed to informing our users and supporters about how we operate.&lt;/p&gt;
&lt;p&gt;Our 2024 was transformative in ways we didn&amp;rsquo;t anticipate, and we wanted to capture the full story before sharing it with you. As you&amp;rsquo;ll see in the report, a &lt;em&gt;lot&lt;/em&gt; happened in 2024; and 2025 brought along new challenges and accomplishments, which we look forward to sharing with you much sooner this time.&lt;/p&gt;
&lt;p&gt;So: what&amp;rsquo;s inside? As always, we&amp;rsquo;ve got a lot of numbers, recaps, and details to share! How did we expand our budget? How many additions did we make to our small and ambitious team? What did we achieve, and how did our progress prepare us for the changes that arrived in 2025? You will find answers to questions like these in the report.&lt;/p&gt;
&lt;p&gt;&lt;div class="not-prose flex items-center gap-4"&gt;&lt;a href="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202024.pdf" class="text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600"&gt;Download&lt;/a&gt;&lt;span class="font-semibold"&gt;PDF, 4.2MB&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;
&lt;iframe src="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202024.pdf" width="100%" height="600rem" class="rounded-md shadow-lg"&gt;&lt;/iframe&gt;
&lt;p&gt;Thank you to our designer &lt;a href="https://hellopierre.fr/"&gt;&lt;strong&gt;Pierre Vincent&lt;/strong&gt;&lt;/a&gt; for another visually delightful annual report, and to &lt;a href="https://youtube.com/dopatwo"&gt;&lt;strong&gt;Dopatwo&lt;/strong&gt;&lt;/a&gt; for some cute new illustrations. Thanks also to the team for their efforts in putting this together - especially Zora, for the coordination 🙏🏻&lt;/p&gt;
&lt;p&gt;We extend extra special thanks to you, our supporters, for your patience and generosity. Your donations enable us to continue building a better social web.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>The world needs social sovereignty</title><link>https://blog.joinmastodon.org/2025/12/the-world-needs-social-sovereignty/</link><pubDate>Tue, 09 Dec 2025 10:00:01 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/12/the-world-needs-social-sovereignty/</guid><description>&lt;p&gt;Elon Musk’s X platform has &lt;a href="https://www.bbc.com/news/articles/c0589g0dqq7o"&gt;blocked the European Commission from making advertisements&lt;/a&gt;, presumably in response to the €120 million fine for its misleading verification system and overall lack of transparency. We’re grateful to Elon Musk for proving once again why the world needs to log off corporate-owned, centrally-controlled social media platforms and log on to a better way of being online. The world needs an open social web through the fediverse and Mastodon.&lt;/p&gt;
&lt;p&gt;Calls for public institutions to invest in digital sovereignty are increasing across civil society. The term &lt;a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI%282020%29651992_EN.pdf"&gt;digital sovereignty&lt;/a&gt; means that an institution has autonomy and control over the critical digital infrastructure, data, and services that make up their online presence. Up until this point, social media has not been a part of this conversation. We think it is time to change that.&lt;/p&gt;
&lt;p&gt;In any free society, it is the right of every citizen to access and comment on the news, decisions, and reasonings of their government. We believe it is a government’s responsibility to ensure this right for its constituents. Public institutions should communicate with their citizens on open platforms, not ones that require creating an account and sending personal data to a self-serving tech company. Today, institutions often communicate through the censorious filter of corporations that do not have the best interests of people or society at heart. They let their message be governed by the whims of out-of-touch and overpaid people who believe they should have unchecked power. We cannot let this stand. Mastodon offers a path forward for any institution that wants to take control of their communications, and &lt;a href="https://joinmastodon.org/hosting"&gt;we can help you get started&lt;/a&gt; today.&lt;/p&gt;
&lt;p&gt;One of the tools these corporate social media platforms use to control an institution’s communications is the algorithm. Platforms strategically tune their algorithms to make it difficult, if not impossible, for institutions to reach their people without paying the platform ad money. Musk’s move to turn off the European Commission’s advertising capabilities feels like a perverse power play over a legitimate fine, one that effectively silences a crucial avenue for public discourse. We should be horrified that any single individual can wield such influence over the relationship between governments and the people they represent. We should be especially concerned when that individual doesn’t think our governments should exist in the first place.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/12/the-world-needs-social-sovereignty/post-screenshot.png" alt="post-screenshot.png"&gt;&lt;/p&gt;
&lt;p&gt;Mastodon’s chronological timeline means that no institution needs to game an algorithm to keep their people informed. By using hashtags, it’s easy for people who care about the topics you discuss to find you. What’s more, your constituents don’t need to be on Mastodon to follow your posts. They can subscribe via open protocols like RSS and &lt;a href="https://joinmastodon.org/roadmap"&gt;soon via email&lt;/a&gt;. When it comes to the source of the fine in the first place—X’s infamous blue checks, a.k.a. verification—Mastodon also offers a better way. We empower people to &lt;a href="https://joinmastodon.org/verification"&gt;verify themselves&lt;/a&gt; by linking their social profile to their official (or personal) website. This allows for greater transparency and trust than relying on the often less-than-reputable verification practices of a single corporate entity, especially one that is willing to sell reputation for a low monthly fee. (Meanwhile, another corporate social media platform made $16 billion, 10% of their 2024 revenue, from &lt;a href="https://www.reuters.com/investigations/meta-is-earning-fortune-deluge-fraudulent-ads-documents-show-2025-11-06/"&gt;advertisements for scams and banned goods&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;In an era where information is power, it’s disheartening to see our institutions yield so much to the whims of industry and individuals. In contrast, the European Commission is leading the way in taking ownership of social sovereignty on behalf of their people. They own a Mastodon instance, &lt;a href="https://ec.social-network.europa.eu/about"&gt;ec.social-network.europa.eu&lt;/a&gt;, to reach Europeans directly and keep them well informed. Mastodon is proud to help them manage the technical side of things. If you are someone on the fediverse who would like to see their government own their social sovereignty, we encourage you to get in touch with your local representative and tell them why you think they should start using open social media networks like the fediverse. We’re starting a thread on Mastodon of resources to help you get in touch with your local representative &lt;a href="https://mastodon.social/@Mastodon/115689200885022091"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By making the news and truth contingent on advertising budgets we’ve created an environment where any narrative can win, as long as the storyteller is willing to pay. If we allow these conditions to continue, we will leave behind the voices that truly matter; the people and their public institutions. It is critical that those voices not be silenced forever. The promise of the fediverse is the promise of a better way forward: free from ads and manipulative algorithms, a place built by and for people like you, where our sovereignty is a right and not a privilege.&lt;/p&gt;
&lt;p&gt;It will take all of us working together to build a better way of being online. If you want to start an instance or have ideas about how we can encourage more institutions to take control of their social sovereignty, get in touch with us at &lt;a href="mailto:hello@joinmastodon.org"&gt;hello@joinmastodon.org&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, November 2025</title><link>https://blog.joinmastodon.org/2025/12/trunk-tidbits-november-2025/</link><pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/12/trunk-tidbits-november-2025/</guid><description>&lt;p&gt;Hello, friends! Last month was momentous and exciting: &lt;a href="https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/"&gt;we announced a new organisation structure&lt;/a&gt;; &lt;a href="https://blog.joinmastodon.org/2025/11/my-next-chapter-with-mastodon/"&gt;Eugen changed roles&lt;/a&gt;; and, we also announced a new path for donors to support us in Europe, &lt;a href="https://blog.joinmastodon.org/2025/11/mastodon-joins-forces-with-we-aid/"&gt;thanks to fiscal sponsorship from WE AID&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alongside these changes, we&amp;rsquo;ve also started a series of social posts to encourage folks to visit the new donation portal. You may see these posts, with a #SupportMastodon hashtag - feel free to boost them, to spread the word about our mission 🙏🏻&lt;/p&gt;
&lt;p&gt;Oh, and also, this happened&amp;hellip; 🎉&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://aus.social/@shlee/115627130637372701/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://aus.social/@shlee/115627130637372701" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @shlee@aus.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://aus.social/" async src="https://staticcdn.aus.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="events-in-november-and-ahead"&gt;Events in November, and ahead&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; was at Decidim Fest in Barcelona, as part of &lt;a href="https://meta.decidim.org/conferences/DecidimFest25/f/1980/meetings/2118"&gt;the panel &amp;ldquo;Can Decentralization Fix Social Media?&amp;rdquo;&lt;/a&gt;. There were some lively conversations about digital sovereignty and technical standards, but the core of the event itself was participatory technology for democracy. The concept that civic institutions should own their own social channels, aligns strongly with Mastodon&amp;rsquo;s own vision and values.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; joined the &lt;a href="https://www.sfscon.it/tracks/fediverse-track-2025/"&gt;in-person Fediforum track at SFSCon&lt;/a&gt; in Bolzano, Italy. It was great to connect with a number of our friends from around the Fediverse.&lt;/p&gt;
&lt;p&gt;Last month also saw the &lt;a href="https://bmds.bund.de/aktuelles/eu-summit/programme"&gt;European Digital Sovereignty Summit&lt;/a&gt; held in Berlin. Our new Executive Director Felix, and our Chief of Staff, &lt;a href="https://mastodon.social/@philipkristians"&gt;Philip&lt;/a&gt;, were able to attend, and connect with other organisations that share a similar mission to Mastodon.&lt;/p&gt;
&lt;p&gt;Looking ahead into early 2026, we will have &lt;a href="https://fosdem.org/2026/news/2025-11-16-accepted-stands/"&gt;a stand&lt;/a&gt; at &lt;a href="https://fosdem.org/2026/"&gt;FOSDEM&lt;/a&gt;. We’re excited to be heading back to Brussels, where we will also be present in the Social Web Devroom.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;The current stable release of Mastodon is &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.3"&gt;&lt;strong&gt;4.5.3&lt;/strong&gt;&lt;/a&gt;, released yesterday (alongside &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.10"&gt;4.4.10&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.16"&gt;4.3.16&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.28"&gt;4.2.28&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/115685146644084254/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/115685146644084254" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;During November, we shipped two fixes for the 4.5 release (&lt;a href="https://github.com/mastodon/mastodon/re%3Eleases/tag/v4.5.1"&gt;4.5.1&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.2"&gt;4.5.2&lt;/a&gt;), and backported equivalent updates for the 4.4 and 4.3 branches: version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.9"&gt;4.4.9&lt;/a&gt; and version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.15"&gt;4.3.15&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We recommend that all Mastodon server owners should be running the latest point version for their release branch, and ideally, to upgrade to the newest stable version of Mastodon.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Please pay attention to the &lt;a href="https://github.com/mastodon/mastodon/blob/main/SECURITY.md"&gt;upcoming end-of-life dates&lt;/a&gt;. The 4.2 branch will no longer receive updates after &lt;strong&gt;January 8, 2026&lt;/strong&gt;, and the 4.3 branch will reach EOL on &lt;strong&gt;May 6, 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In November 2025 we reviewed and merged 237 Pull Requests (159 with translation and dependency updates removed) from 20 contributors. This was huge. We appreciate the contributions!&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The experimental &lt;code&gt;theme_tokens&lt;/code&gt; feature flag as well as our legacy styles have been removed from our codebase, and our new theme tokens (based on CSS variables) are now live on mastodon.social and mastodon.online (and any other servers using our nightly builds). If you are maintaining a third-party theme or a server with custom CSS, now is a good time to ensure your styling tweaks play well with this update. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37056"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37056&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Implementation of &amp;ldquo;Collections&amp;rdquo; (&lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;our take on Starter Packs&lt;/a&gt;) has begun. We are slowly laying foundations, so nothing to see yet, but we are getting there! &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37049"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37049&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37020"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37020&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37005"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37005&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36977"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36977&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added notifications about interactions between quote posts and Direct Messages &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36696"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36696&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Updated the media modal with smoother scrolling experience &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36673"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36673&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 (and multiple others)&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Fixed issues with emoji caching and web worker &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36808"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36808&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36897"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36897&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Fix post and keyboard navigation issues &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37052"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37052&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 (and multiple others)&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Move &amp;ldquo;Privacy and reach&amp;rdquo; from &amp;ldquo;Public profile&amp;rdquo; to top-level navigation in settings &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/27294"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #27294&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaelCodes" class="underline"&gt;ChaelCodes&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Fix duplicated counters in some languages &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32614"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32614&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/xatier" class="underline"&gt;xatier&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36844"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36844&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaoxExAnima" class="underline"&gt;ChaoxExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Improve viewing non-public hashtag pages when not logged in &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36961"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36961&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Prevent vertical videos from overflowing the viewport &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36966"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36966&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-lime-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;developer&lt;/span&gt;
 Fix Accept headers when fetching ActivityPub objects to match spec (AP integrity/interoperability) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30354"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30354&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/TheOneric" class="underline"&gt;TheOneric&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Fix &lt;code&gt;/api/v1/statuses/:id/context&lt;/code&gt; sometimes returning Mastodon-Async-Refresh without result_count &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36779"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36779&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Increase HTTP read timeout for expensive S3 batch delete operations &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37004"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37004&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36971"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36971&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36996"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36996&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Increase nginx proxy_read_timeout to avoid long-request failures &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30599"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30599&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/shleeable" class="underline"&gt;shleeable&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Optimize nginx location blocks &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/19644"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #19644&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Izorkin" class="underline"&gt;Izorkin&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Fix &lt;code&gt;tootctl status remove&lt;/code&gt; removing quoted posts and remote quotes of local posts &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/37009"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #37009&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Separate remote thumbnails into cache/ directory &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36911"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36911&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/shugo" class="underline"&gt;shugo&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Add systemd service file for Prometheus exporter &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35130"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35130&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Rely on Puma default environment and remove legacy AR connection boot from Puma config &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36760"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36760&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36757"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36757&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;We released an update that adds loading all replies, and several smaller updates that improve the stability of the app.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We shipped version 2025.08 on December 1st, with better loading and scrolling performance, an all-new audio player, and improvements to video playback. Major work on rewriting/refactoring is starting to pay off as more areas of the app are replaced with new multi-purpose code and old code files are deleted. This version also saw us replace our complex and outdated localization system with modern &lt;code&gt;.xcstrings&lt;/code&gt; format files, which will be much easier for developers and translators moving forward.&lt;/p&gt;
&lt;h2 id="devops"&gt;DevOps&lt;/h2&gt;
&lt;p&gt;If you have an interest in our Helm charts to deploy Mastodon, we would like to hear from you.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/115604304459044751/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/115604304459044751" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="documentation"&gt;Documentation&lt;/h2&gt;
&lt;p&gt;Shout-out to &lt;a href="https://github.com/mjankowski"&gt;Matt Jankowski&lt;/a&gt; for a huge effort on issue triage &amp;amp; merge support, closing 81 issues in total (most of which merged fixes and updates), backed by 13 contributors in total.&lt;/p&gt;
&lt;h2 id="translations"&gt;Translations&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve posted a call for proofreaders for translations across our apps and website. If you are already translating our apps and would like to coordinate the work for your language, see &lt;a href="https://crowdin.com/project/mastodon/discussions/406"&gt;this discussion post&lt;/a&gt;. If you would like to help translating Mastodon into your language, you can join the many volunteers who already do so on Crowdin: for &lt;a href="https://crowdin.com/project/mastodon/"&gt;the web app&lt;/a&gt;, &lt;a href="https://crowdin.com/project/mastodon-for-ios/"&gt;the iOS app&lt;/a&gt; and &lt;a href="https://crowdin.com/project/mastodon-for-android/"&gt;the Android app&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Version 3.2.0 of Pachli for Android &lt;a href="https://mastodon.social/@pachli/115639792255551687"&gt;was released just over a week ago&lt;/a&gt;; it includes support for Quote Posts, and makes lots of useful search options available.&lt;/li&gt;
&lt;li&gt;Version 7 of Mona for iOS &lt;a href="https://mastodon.social/@MonaApp/115672546858050601"&gt;will be available soon&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reminder that if you&amp;rsquo;re building on the Mastodon API, we&amp;rsquo;d love to hear about your project.&lt;/p&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s it for another month of behind-the-scenes updates. We&amp;rsquo;re grateful for your support for our mission. Please donate to help us if you are able.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon Joins Forces with WE AID</title><link>https://blog.joinmastodon.org/2025/11/mastodon-joins-forces-with-we-aid/</link><pubDate>Thu, 27 Nov 2025 00:00:01 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/11/mastodon-joins-forces-with-we-aid/</guid><description>&lt;p&gt;We are happy to announce fiscal sponsorship via &lt;a href="https://www.we-aid.org/en/project-details/106/"&gt;WE AID&lt;/a&gt;, a German nonprofit organisation that supports charitable projects within an established legal framework. This move is part of &lt;a href="https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/"&gt;Mastodon’s transformation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This partnership offers donors tax-deductible contributions in Germany and ensures verified integrity through WE AID’s oversight. It also enables Mastodon to operate as a nonprofit entity, strengthening our commitment to a user-first, community-driven platform, free from algorithmic manipulation and corporate control.&lt;/p&gt;
&lt;p&gt;With WE AID’s support, Mastodon joins the ranks of nonprofit tech pioneers we have long admired, like Wikipedia, Signal, and Tor. This move reinforces the digital commons as a shared resource: not a corporate asset.&lt;/p&gt;
&lt;p&gt;Through this partnership, WE AID provides Mastodon with the infrastructure to continue to thrive as a public-benefit project, rooted in Europe. Together, we’re proving that social media can be community-owned, ethically governed, and globally accessible.&lt;/p&gt;
&lt;p&gt;Mastodon’s home, the Fediverse, mirrors Europe’s own decentralised ethos. Just as the European Union is home to diverse cultures, languages, and jurisdictions, the Fediverse empowers communities to connect across barriers, fostering unique spaces, no matter their size, for linguistic, cultural, and technical diversity. This alignment embodies the EU’s vision of unity in diversity, ensuring the digital commons remain open, inclusive, and resilient.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>The Future is Ours to Build - Together</title><link>https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/</link><pubDate>Tue, 18 Nov 2025 00:00:01 +0100</pubDate><guid>https://blog.joinmastodon.org/2025/11/the-future-is-ours-to-build-together/</guid><description>&lt;p&gt;Earlier this year, we announced that Mastodon would be &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;transitioning its legal and operational structures&lt;/a&gt; to better reflect our mission.&lt;/p&gt;
&lt;p&gt;Today, we’re marking another momentous step in this ongoing process as our Founder and now former CEO Eugen Rochko begins his transition into a new role with Mastodon. We are thrilled that he will continue on in an advisory role with our team.&lt;/p&gt;
&lt;p&gt;In this post, we’re looking ahead to what comes next. We’re pleased to introduce Mastodon’s new leadership team, and share some other exciting updates.&lt;/p&gt;
&lt;h2 id="meet-the-team"&gt;&lt;strong&gt;Meet The Team&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;When we first set out to design a leadership structure for Mastodon, our aim was to represent the needs of Mastodon as a software project, and the needs of the people that make up the Mastodon community. We also wanted to create a structure that would balance fast decision-making with including more voices at the table.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Executive Director: Felix Hlatky&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Felix has been involved with Mastodon since March 2020. He cares about Mastodon and the Fediverse because it feels like the single most impactful project touching diverse areas such as freedom of expression, politics, media, and technology. As Mastodon’s Executive Director, he’s excited to grow the user base across Mastodon and the Fediverse. His goals include simplifying the process of running servers safely and efficiently, expanding the team to better compete with commercial platforms, and ensuring the project’s long-term financial sustainability, so Mastodon can remain independent forever. You can get in touch with him at &lt;a href="https://mastodon.social/@mellifluousbox"&gt;@mellifluousbox@mastodon.social&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Technical Director: Renaud Chaput&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Renaud has been involved with Mastodon since late 2022, first working on the project infrastructure, then as CTO. Over the last three years, he&amp;rsquo;s been instrumental in growing the Mastodon engineering team (now nine people), shipping new features, and establishing more efficient development processes. He’s excited to continue building a strong and modern open-source social media platform as Mastodon’s Technical Director. You can get in touch with him at &lt;a href="https://oisaur.com/@renchap"&gt;@renchap@oisaur.com&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Community Director: Hannah Aubry&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hannah has been involved with Mastodon since early 2023, first as a partner and champion of the project during her time running the Fast Forward program at Fastly, then as a volunteer on our outreach team. Earlier this year, she joined our Board of Directors. In her role as Community Director, she’ll oversee the strategy and growth of Mastodon’s community. She brings her valuable experience in community, social media, and free and open-source software. You can get in touch with her at &lt;a href="https://hachyderm.io/@haubles"&gt;@haubles@hachyderm.io&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="not-prose ma0 w-75"&gt;
 &lt;img src="team.jpg" class="rounded-lg shadow-lg"
 alt="A photograph of some of the Mastodon team, with their mascot"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Hannah, our former team-mate Inga, Felix, and Eugen. Friend-shaped #plushtodon, too!&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;An extended leadership team includes &lt;a href="https://mastodon.social/@gargron"&gt;Eugen Rochko&lt;/a&gt;, &lt;a href="https://macaw.social/@andypiper"&gt;Andy Piper&lt;/a&gt;, and &lt;a href="https://mastodon.social/@philipkristians"&gt;Philip Schröpel&lt;/a&gt;. As Strategy &amp;amp; Product Advisor, Eugen will leverage his deep knowledge about the Fediverse / social media and product expertise to support Mastodon&amp;rsquo;s long-term vision and development. Andy will continue in his role as Head of Communications, and Philip as Chief of Staff.&lt;/p&gt;
&lt;p&gt;Our next step is to build more ways for the community to get involved with Mastodon at all levels. Our efforts to define community governance are well underway, and we’re looking forward to getting everyone involved in that soon. With that in mind — are you someone who wants to get involved with Mastodon? We’d love to &lt;a href="https://joinmastodon.org/about#contact"&gt;hear from you&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id="organisational-update"&gt;&lt;strong&gt;Organisational Update&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;A vital aspect of our restructuring initiative is transitioning Mastodon to a new European not-for-profit entity. Our intent is to form a Belgian AISBL as the future home of the Mastodon organisation.&lt;/p&gt;
&lt;p&gt;As an update on our current status, Mastodon is continuing to run day-to-day operations through the Mastodon gGmbH entity (the Mastodon gGmbH entity automatically became a for-profit as a result of its charitable status being &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/#mastodons-non-profit-status-in-germany"&gt;stripped away in Germany&lt;/a&gt;). The US-based 501(c)(3) continues to function as a strategic overlay and fundraising hub, and as a short-term solution until the AISBL is ready, the 501(c)(3) will own the trademark and other assets. We intend to transfer those assets as soon as the AISBL is ready. To enable tax-deductible donations for German donors, we partnered with WE AID as our fiscal sponsor.&lt;/p&gt;
&lt;p&gt;In the meantime, we’re moving forward with defining who we are, how we operate as a team, and how we engage more transparently with the community. To start, we sat down and defined our vision, mission, and values. We’ll be publishing these on our blog soon. Stay tuned!&lt;/p&gt;
&lt;h2 id="a-fundraising-update"&gt;&lt;strong&gt;A Fundraising Update&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;When we announced our restructuring earlier this year, we asked for your help with fundraising, to support us in furthering our efforts around usability, discovery, and trust &amp;amp; safety. With their express consent to disclose, we deeply appreciate the generosity of Jeff Atwood and the Atwood Family (EUR 2.2M), Biz Stone, AltStore (EUR 260k), GCC (EUR 65k), and Craig Newmark. We’re excited to share how we’ve put your contributions to good use.&lt;/p&gt;
&lt;p&gt;One of our main expenditures from the fundraising initiative has been &lt;a href="https://blog.joinmastodon.org/2025/05/evolving-the-team/#recent-team-changes"&gt;hiring across our engineering, product, marketing, and operations&lt;/a&gt;. Our larger team is making it possible to move faster on important new features like launching &lt;a href="https://blog.joinmastodon.org/2025/09/introducing-quote-posts/"&gt;Quote Posts&lt;/a&gt;, co-developing &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;Mastodon’s Collections (our take on &amp;ldquo;Starter Packs&amp;rdquo;)&lt;/a&gt;, and thinking big thoughts about Mastodon v5.0 (👀). What’s more, our larger team has made it possible to &lt;a href="https://blog.joinmastodon.org/2025/09/service-offerings-from-mastodon/"&gt;launch our commercial service offerings&lt;/a&gt; — an important step to ensuring organisations without the technical and moderation resources to start a Mastodon server can finally do so while contributing to our long-term financial sustainability.&lt;/p&gt;
&lt;p&gt;For our team, a vital aspect of getting this restructuring right was making sure that Eugen was compensated fairly for Mastodon’s brand trademark, assets, and the 10 years he spent building Mastodon into what it is today (while taking less than a fair market salary). Based on replacement costs, Eugen’s time and effort, and the fair market value of the Mastodon brand, its associated properties, and the social network, we settled on a one-time compensation of EUR 1M. We are deeply grateful for his past contributions, and look forward to his contributions still to come.&lt;/p&gt;
&lt;p&gt;We want to thank the generous individual donors that participated in our fundraising drive. We put individual donations entirely towards Mastodon’s operations (primarily, paying our full-time employees to improve Mastodon), which totalled EUR 337k over the past 12 months (September 2024 - September 2025).&lt;/p&gt;
&lt;p&gt;We also want to thank the law firm &lt;a href="https://www.paulhastings.com/"&gt;Paul Hastings&lt;/a&gt; for their generous support by advising us pro bono.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s Next&lt;/h2&gt;
&lt;p&gt;So what’s next for our team? A different configuration but the same mission: &lt;em&gt;Ensure that our online social spaces belong to the people forever, and provide a safe place for public discourse&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If you believe in that mission too, we’d love your support. Grassroots efforts like Mastodon and the Fediverse require &lt;a href="https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md"&gt;&lt;strong&gt;creative&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;&lt;strong&gt;monetary&lt;/strong&gt;&lt;/a&gt; contributions from their communities to survive. It will take all of us working together to build resilient, governable, open and safe digital spaces.&lt;/p&gt;</description></item><item><title>My next chapter with Mastodon</title><link>https://blog.joinmastodon.org/2025/11/my-next-chapter-with-mastodon/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0100</pubDate><guid>https://blog.joinmastodon.org/2025/11/my-next-chapter-with-mastodon/</guid><description>&lt;p&gt;After nearly 10 years, I am stepping down as the CEO of Mastodon and transferring my ownership of the trademark and other assets to the Mastodon non-profit. Over the course of my time at Mastodon, I have centered myself less and less in our outward communications, and to some degree, this is the culmination of that trend. Mastodon is bigger than me, and though the technology we develop on is itself decentralized—with heaps of alternative fediverse projects demonstrating that participation in this ecosystem is possible without our involvement—it benefits our community to ensure that the project itself which so many people have come to love and depend on remains true to its values. There are too many examples of founder egos sabotaging thriving communities, and while I&amp;rsquo;d like to think myself an exception, I understand why people would prefer better guardrails.&lt;/p&gt;
&lt;p&gt;But it would be uncouth for me to pretend that there isn&amp;rsquo;t some self-interest involved. Being in charge of a social media project is, turns out, quite the stressful endeavour, and I don&amp;rsquo;t have the right personality for it. I think I need not elaborate that the passion so many feel for social media does not always manifest in healthy ways. You are to be compared with tech billionaires, with their immense wealth and layered support systems, but with none of the money or resources. It manifests in what people expect of you, and how people talk about you. I remember somebody jokingly suggesting that I challenge Elon Musk to a fight (this was during his and Mark Zuckerberg&amp;rsquo;s martial arts feud), and quietly thinking to myself, I am literally not paid enough for that. I remember also, some Spanish newspaper article that for some reason, concluded that I don&amp;rsquo;t dress as fashionably as Jeff Bezos, based on the extremely sparse number of pictures of myself I have shared on the web. Over an entire decade, these tiny things chip away at you slowly. Some things chip faster. I steer clear of showing vulnerability online, but there was a particularly bad interaction with a user last summer that made me realise that I need to take a step back and find a healthier relationship with the project, ultimately serving as the impetus to begin this restructuring process.&lt;/p&gt;
&lt;p&gt;As for what the legacy of my run will be, I find hard to answer. For one, I think it is not up for me to judge. On the other hand, it is as much about what didn&amp;rsquo;t happen as it is about what did. I&amp;rsquo;ve always thought that one of the most important responsibilities I had was to say &amp;ldquo;no&amp;rdquo;. It is not a popular thing to do, nor is it a fun thing to do, but being pulled into too many different directions at once can spell disaster for any project. I&amp;rsquo;d like to think I avoided some trouble by being careful. But I&amp;rsquo;m also aware that my aversion to public appearances cost Mastodon some opportunities in publicity. Ultimately, while I cannot take sole credit for it, I am nevertheless most proud of how far we&amp;rsquo;ve made it over these last 10 years. From the most barebones project written out of my childhood bedroom, to one of the last remaining and thriving pieces of the original, community-centred internet.&lt;/p&gt;
&lt;p&gt;I have so much passion for Mastodon and the fediverse. The fediverse is an island within an increasingly dystopian capitalist hellscape. And from my perspective, Mastodon is our best shot at bringing this vision of a better future to the masses. This is why I&amp;rsquo;m sticking around, albeit in a more advisory, and less public, role.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, October 2025</title><link>https://blog.joinmastodon.org/2025/11/trunk-tidbits-october-2025/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/11/trunk-tidbits-october-2025/</guid><description>&lt;p&gt;We started the Trunk &amp;amp; Tidbits series to provide greater visibility into what we&amp;rsquo;re building, and the decisions that go into making Mastodon. At the start of October, we &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;published our ideas on an upcoming feature - that we&amp;rsquo;re &lt;em&gt;temporarily&lt;/em&gt; describing as &amp;ldquo;Packs&amp;rdquo;&lt;/a&gt;, or collections or lists of people to recommend to follow. As with our work on Quote Posts, we&amp;rsquo;re publishing our thinking early, and intend to follow up with a &lt;a href="https://fediverse.codeberg.page/fep/"&gt;Fediverse Enhancement Proposal&lt;/a&gt; to share with the broader Fediverse community.&lt;/p&gt;
&lt;p&gt;Also, following on from &lt;a href="https://blog.joinmastodon.org/2025/09/service-offerings-from-mastodon/"&gt;our announcement of service offerings&lt;/a&gt;, we were excited to share the news that &lt;a href="https://rileytestut.com/blog/2025/10/07/evolving-altstore-pal/"&gt;AltStore are making the Fediverse their home&lt;/a&gt;, including generous donations to a number of projects, and the launch of &lt;a href="https://explore.alt.store/public/local"&gt;a new Mastodon server&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Mastodon/115344340617525318/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Mastodon/115344340617525318" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Mastodon@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;On a completely different note, we also &lt;a href="https://blog.joinmastodon.org/2025/10/plushtodon-mini/"&gt;shared that the adorable #Plushtodon is making a comeback&lt;/a&gt; 🥳 this time in two colours and a more compact form factor, but still perfectly squeezable. Look out for new mug designs, too - all of these should be hitting &lt;a href="https://shop.joinmastodon.org/"&gt;the merch store&lt;/a&gt; later this month 🤞🏻&lt;/p&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;October was a busy month of events for the team.&lt;/p&gt;
&lt;p&gt;We kicked off with &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; speaking at &lt;a href="https://berlinfedi.day/en/"&gt;Berlin Fedi Day&lt;/a&gt; in Germany, to talk about sovereignty, freedom, and hope.&lt;/p&gt;
&lt;div style="position: relative; padding-top: 56.25%;"&gt;&lt;iframe title="#fediday2025 Andy Piper - For Freedom and Sovereignty" width="100%" height="100%" src="https://c-tube.c-base.org/videos/embed/wC1XV5ziCV6fPyXbMA5tcv?muted=1&amp;amp;title=0&amp;amp;warningTitle=0" frameborder="0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups allow-forms" style="position: absolute; inset: 0px;"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Andy was also on stage at EmpoderaLIVE in Malaga, Spain, to talk about Mastodon and the Fediverse. You can watch the interview (on YouTube) &lt;a href="https://www.youtube.com/watch?v=JU601oy61FE"&gt;in English&lt;/a&gt;, or &lt;a href="https://www.youtube.com/watch?v=ev8ndJ0JXt0"&gt;with a Spanish translation&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@espiritusanto/115419347613344157/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@espiritusanto/115419347613344157" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @espiritusanto@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Several members of the team dropped in to sessions at &lt;a href="https://fediforum.org/"&gt;Fediforum online&lt;/a&gt;, and &lt;a href="https://fediforum.org/2025-10/session/1-d/"&gt;hosted a conversation about Packs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; attended a number of discussions around policy, cooperation, and healthy online spaces at OSCE on his &amp;ldquo;home turf&amp;rdquo; in Vienna, Austria. It remains vital that we engage in these conversations with organisations to spread awareness and understanding of the Fediverse.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@mellifluousbox/115417851503228073/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@mellifluousbox/115417851503228073" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @mellifluousbox@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.joinmastodon.org/2025/11/mastodon-4.5/"&gt;Mastodon &lt;strong&gt;4.5&lt;/strong&gt; is now available&lt;/a&gt; as the latest stable release of the software. This follows three release candidates during October. Mastodon 4.5 brings the long-awaited consent-respecting quote posts feature (&lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;FEP-044f&lt;/a&gt;), as well as greater customisation for server owners, and other features (see the announcement post).&lt;/p&gt;
&lt;p&gt;As we approached the release, we published a blog post all about the &lt;a href="https://blog.joinmastodon.org/2025/10/mastodon-4-5-for-devs/"&gt;changes that developers need to know about in Mastodon 4.5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For previous stable release branches, we also shipped:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.8"&gt;&lt;strong&gt;4.4.8&lt;/strong&gt;&lt;/a&gt; (and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.6"&gt;4.4.6&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.7"&gt;4.4.7&lt;/a&gt; before that)&lt;/li&gt;
&lt;li&gt;version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.14"&gt;&lt;strong&gt;4.3.14&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.27"&gt;&lt;strong&gt;4.2.27&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, we recommend that all Mastodon server owners should be running the latest point version for their release branch, and ideally, to upgrade to the newest stable version of Mastodon. There are a lot of new features in version 4.5, particularly since this release makes display and authoring of quote posts available to everyone.&lt;/p&gt;
&lt;p&gt;The release of Mastodon 4.5 also updates our list of supported versions, and &lt;a href="https://github.com/mastodon/mastodon/blob/main/SECURITY.md"&gt;upcoming end-of-life dates&lt;/a&gt;. In particular, the 4.2 branch will no longer receive updates after January 8, 2026, and the 4.3 branch will reach EOL on May 6, 2026.&lt;/p&gt;
&lt;h3 id="looking-ahead"&gt;Looking ahead&lt;/h3&gt;
&lt;p&gt;You will find that &lt;a href="https://joinmastodon.org/roadmap?ref=webtechnology.news"&gt;the Roadmap page on the website&lt;/a&gt; has had a complete overhaul. We know that the previous roadmap was outdated and did not reflect what we are currently working on, or considering for future versions - particularly with our expanded team and the increased pace of development.&lt;/p&gt;
&lt;p&gt;The page is now simplified into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;features we&amp;rsquo;ve recently shipped (current stable release);&lt;/li&gt;
&lt;li&gt;those we are actively working on (for the next major release);&lt;/li&gt;
&lt;li&gt;and those we are exploring (this may include research and specification work, usually for a version after the next major update).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The road map is simply to provide a little more insight into where the team&amp;rsquo;s efforts are directly focused. The existence of this page and its contents, does not exclude other changes and adjustments that we make along the way.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;Reflecting the pace of change in the final weeks before 4.5 shipped, we reviewed and merged 202 Pull Requests (134 with translation and dependency updates removed) from 21 contributors. It was a huge month. We appreciate the support and contributions from the community.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The refactor of Mastodon&amp;rsquo;s UI colours to use semantic theme tokens is almost complete. We&amp;rsquo;re planning to merge this change in two phases starting soon after Mastodon 4.5 is released. This is a large PR with countless changes across our SCSS files, and very likely to affect third-party themes and forks. Please let us know your feedback or any concerns directly in the Pull Request. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36640"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36640&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 We updated our supported emoji to 16. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36501"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36501&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Refactored the Emoji handling code to be more efficient, simpler to work with, and allow rendering native emojis instead of the Twemoji SVGs, depending on the user browser and preference.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Added granular settings for the various live feeds. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36338"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36338&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36607"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36607&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Improved display of CWs, link previews and quote posts in the admin UI. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35958"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35958&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35935"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35935&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35964"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35964&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Small fixes and improvements to the &amp;lsquo;fetch all replies&amp;rsquo; widget, and periodic checks for new replies. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36334"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36334&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36383"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36383&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36547"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36547&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-lime-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;developer&lt;/span&gt;
 Changed the identifiers used in ActivityPub URLs for new users to not contain the username, which will enable account renames (for these accounts) in a future version. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36316"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36316&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36365"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36365&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added a new setting to allow one-click boosting, which moves the quote option into the status three dots menu. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36516"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36516&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Changed the minimum characters required for a logged out account search from five to three. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36487"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36487&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Enabled receiving “modern” RFC 9421 HTTP signatures for all servers. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36610"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36610&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Added support for &lt;code&gt;Update&lt;/code&gt; to non-natively handled ActivityPub object types. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36322"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36322&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;There were two small updates fixing some crashes during October.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We shipped an all-new timeline layout and support for quote posts in the 2025.06 release at the start of October, and followed up with several important bug fixes in 2025.07. More coming soon!&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;On the community side of things, the project now uses the &lt;a href="https://github.com/mastodon/.github/blob/main/CODE_OF_CONDUCT.md"&gt;Contributor Covenant version 3 as the Code of Conduct&lt;/a&gt; for contributors and community members.&lt;/p&gt;
&lt;p&gt;As usual, we wanted to highlight a few fun things we&amp;rsquo;ve seen on the internet this month, built using the Mastodon API.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://files.burning.homes/experimental/hall-of-toots/index.html"&gt;Hall of Toots&lt;/a&gt; is an immersive way to explore your Mastodon feeds!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/TootSDK/TootSDK/releases/tag/20.3.0"&gt;TootSDK&lt;/a&gt; continues to follow our API updates closely, and has been updated to support quote posts and timeline visibility options. Thanks to &lt;a href="https://mastodon.online/@dale_price"&gt;Dale Price&lt;/a&gt; and other contributors.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Important note&lt;/em&gt; there are a range of other &lt;a href="https://docs.joinmastodon.org/client/libraries/"&gt;libraries available for the Mastodon API&lt;/a&gt; - let us know if we are missing something 🙂&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The prolific &lt;a href="https://stefanbohacek.online/@stefan"&gt;Stefan Bohacek&lt;/a&gt; continues to impress, with a game to see &lt;a href="https://data.stefanbohacek.com/projects/fediverse-follows"&gt;how well you know your Fediverse Follows&lt;/a&gt; (there&amp;rsquo;s a brief explanation &lt;a href="https://stefanbohacek.com/project/fediverse-follows-quiz/"&gt;on his projects page&lt;/a&gt;). Stefan also has &lt;a href="https://fediverse.stefanbohacek.com/"&gt;a collection of typographical experiments around the Fediverse&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="onwards-with-thanks"&gt;Onwards, with thanks&lt;/h2&gt;
&lt;p&gt;The Mastodon team is deeply grateful to everyone for their support of what we&amp;rsquo;re building. We do this thanks to your donations. If you&amp;rsquo;re able to help us, please consider adding a recurring donation. Thank you!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 4.5</title><link>https://blog.joinmastodon.org/2025/11/mastodon-4.5/</link><pubDate>Thu, 06 Nov 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/11/mastodon-4.5/</guid><description>&lt;p&gt;Mastodon 4.5 has arrived, with enhanced conversations across communities, expanded moderator tools, and new ways for admins to showcase their server communities. Read on for more details.&lt;/p&gt;
&lt;p&gt;As always, if you use &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt;, you may already have seen some of the updates as they gradually showed up across the user experience. Rolling out a new stable release enables us to share all of that goodness across the whole Mastodon community. We encourage all server operators to &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.0"&gt;upgrade to Mastodon 4.5&lt;/a&gt;, starting today.&lt;/p&gt;
&lt;p&gt;🔍 If you’re a developer building on Mastodon, you should check out our &lt;a href="https://blog.joinmastodon.org/2025/10/mastodon-4-5-for-devs/"&gt;Mastodon 4.5 for Developers&lt;/a&gt; post, for all the additions and changes in the Mastodon API. 🛠&lt;/p&gt;
&lt;h2 id="quote-posts-consent-and-conversation"&gt;Quote Posts: Consent and Conversation&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/11/mastodon-4.5/quote-posts.png" alt="image.png"&gt;&lt;/p&gt;
&lt;p&gt;Quoting has been integral to deepening discussions online, and it&amp;rsquo;s now available in Mastodon 4.5. This release not only introduces authoring capabilities but also mechanisms prioritizing user safety and privacy. Authors can limit and disable quoting, both globally on the new Posting Defaults page, and individually on specific posts. Also, when quoted, they can easily revoke the use of their post.&lt;/p&gt;
&lt;p&gt;Learn more about Quote posts in our &lt;a href="https://blog.joinmastodon.org/2025/09/introducing-quote-posts/"&gt;previous blog post&lt;/a&gt;, our &lt;a href="https://docs.joinmastodon.org/user/quote-posts/#faq"&gt;FAQ&lt;/a&gt;, and our &lt;a href="https://docs.joinmastodon.org/client/quotes/"&gt;developer implementation guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="fetch-all-replies-completing-the-conversation-flow"&gt;Fetch All Replies: Completing the Conversation Flow&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/11/mastodon-4.5/fetch-all-replies.png" alt="image.png"&gt;&lt;/p&gt;
&lt;p&gt;Users on servers running 4.4 and earlier versions have likely experienced the confusion of seeing replies appearing on other servers but not their own. Mastodon 4.5 automatically checks for missing replies upon page load and again every 15 minutes, enhancing continuity of conversations across the Fediverse.&lt;/p&gt;
&lt;h2 id="enhanced-features-for-server-administrators"&gt;Enhanced Features for Server Administrators&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/11/mastodon-4.5/admin-features.png" alt="image.png"&gt;&lt;/p&gt;
&lt;p&gt;For server operators, especially those running smaller, organisational instances, we continue to deliver new tools that enable greater instance customisation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feed Management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ability to disable some of the content feeds for either visitors or logged-in users, offering greater control over content flow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Visitor Homepage&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In addition to trends or about pages, administrators can now set the local feed as the home page for visitors. This is useful for small organization servers where there are seldom any trending posts, allowing visitors to see local activity immediately.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Targeted Blocking&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Server owners now have tools to block specific usernames. This process can be configured with options for partial matches or character variations, or to mark a potential user match as needing review by a moderator.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Moderation Context&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The moderator interface has received improvements to display crucial context, such as link previews and quote posts in messages, supporting more rapid and informed decision-making.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="native-emoji-support"&gt;Native Emoji support&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/11/mastodon-4.5/native-emoji.png" alt="image.png"&gt;&lt;/p&gt;
&lt;p&gt;The web interface now includes support for displaying native emoji. A new setting is available to manage how emoji appear to you.&lt;/p&gt;
&lt;h2 id="looking-ahead"&gt;Looking ahead&lt;/h2&gt;
&lt;p&gt;Our team is already working on Mastodon 4.6 (tentatively planned for the first quarter of next year). We shared our &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;early explorations around Packs&lt;/a&gt; and are planning to include the first parts of this feature in our next version. It will also include improvements to onboarding, and some features targeted toward institutions with a presence on Mastodon, thanks to a &lt;a href="https://nlnet.nl/project/Mastodon-for-institutions/"&gt;grant by NLNet and NGI Zero Commons Fund&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We just updated &lt;a href="https://joinmastodon.org/roadmap"&gt;our public roadmap&lt;/a&gt; to provide better transparency on what is currently in the works, and what we are planning to focus on next.&lt;/p&gt;
&lt;h2 id="support-mastodon"&gt;Support Mastodon&lt;/h2&gt;
&lt;p&gt;Thank you to everyone that contributed to this release, including our team, our community, and the many contributors from across the Fediverse. We’re excited to continue building Mastodon together with you.&lt;/p&gt;
&lt;p&gt;We’re going through a formal process of &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;setting up a new European non-profit organisation&lt;/a&gt; (more update on this topic very soon!) so that Mastodon remains free, open, and not owned by any single individual . &lt;strong&gt;We depend on your support&lt;/strong&gt; as we build, support, and advocate for decentralised and non-commercial social media.&lt;/p&gt;
&lt;p&gt;We don’t take venture capital, we don’t sell ads, and we don’t sell your data - unlike many other platforms out there. &lt;strong&gt;Please support our mission&lt;/strong&gt;, so that we can continue to make Mastodon better.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 4.5 for Developers</title><link>https://blog.joinmastodon.org/2025/10/mastodon-4-5-for-devs/</link><pubDate>Wed, 29 Oct 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/10/mastodon-4-5-for-devs/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update October 31:&lt;/strong&gt; Added a missing section about new timeline settings.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mastodon 4.5 is almost ready. We just released the first (and hopefully only) &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.0-rc.1"&gt;release candidate&lt;/a&gt;, and the final release should be coming along very soon. This is once again a good time to highlight some of the new features and changes that are important to anyone building on top of Mastodon and its APIs.&lt;/p&gt;
&lt;p&gt;This post has two major sections: updates that are likely to be most relevant for developers of Mastodon client applications, and updates that are more applicable to the broader Fediverse and other ActivityPub-compatible services.&lt;/p&gt;
&lt;p&gt;Remember that we also post a monthly engineering update (our &lt;a href="https://blog.joinmastodon.org/categories/trunk-and-tidbits/"&gt;Trunk and Tidbits&lt;/a&gt; series). If you’ve been reading them every month, some of these changes may be familiar. You’ll see below that there are a lot of useful new additions that have arrived during this development cycle.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at what&amp;rsquo;s new here.&lt;/p&gt;
&lt;h2 id="client-apps"&gt;Client apps&lt;/h2&gt;
&lt;h3 id="quote-posts"&gt;Quote Posts&lt;/h3&gt;
&lt;p&gt;Mastodon 4.4 included the ability to verify and display consent-respecting quote posts, as defined by a Fediverse Enhancement Proposal that we shared: &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;FEP-044f&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We previously introduced two new API entities to represent quotes, &lt;a href="https://docs.joinmastodon.org/entities/Quote/"&gt;Quote&lt;/a&gt; and &lt;a href="https://docs.joinmastodon.org/entities/ShallowQuote/"&gt;ShallowQuote&lt;/a&gt;. Mastodon 4.5 improves these by adding new states: &lt;code&gt;blocked_account&lt;/code&gt;, &lt;code&gt;blocked_domain&lt;/code&gt;, and &lt;code&gt;muted_account&lt;/code&gt;. These are cases where the quote is authorized, but should not be displayed by default to the user currently viewing the post. Mastodon 4.4 returned a state of &lt;code&gt;unauthorized&lt;/code&gt; in those cases, but we decided that applications should be able to offer a way to see the quoted posts anyway. See the documentation of the entities above, and &lt;a href="https://github.com/mastodon/mastodon/pull/36619"&gt;this PR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The biggest change compared to 4.4 is of course that we now allow authoring of quote posts! In the REST API this can be as simple as adding a &lt;code&gt;quoted_status_id&lt;/code&gt; attribute when creating a new status. As a minimum however, clients should make sure that quoting the status in question is allowed. To help you get acquainted with all of the relevant changes to the API, we added an &lt;a href="https://docs.joinmastodon.org/client/quotes/"&gt;&amp;ldquo;Implementing quote posts&amp;rdquo; guide&lt;/a&gt; to the developer documentation.&lt;/p&gt;
&lt;h3 id="fetch-all-replies-and-asyncrefresh"&gt;Fetch all replies, and AsyncRefresh&lt;/h3&gt;
&lt;p&gt;Mastodon 4.4 introduced a new feature to fetch missing replies to a remote status. This was not enabled by default, and had no immediate effect in any user interfaces. Mastodon 4.5 enables the feature by default, and also includes some user-facing changes in the web UI that support it.&lt;/p&gt;
&lt;p&gt;The challenge here is that finding out &lt;em&gt;whether replies are missing&lt;/em&gt;, and the actual &lt;em&gt;fetching of missing replies&lt;/em&gt;, both happen in asynchronous background jobs; tasks that are independent of the client&amp;rsquo;s API request. We face this problem in a number of places across the Mastodon code base, so we wanted to come up with a generic solution.&lt;/p&gt;
&lt;p&gt;To support the pattern, we added a new API called &lt;a href="https://docs.joinmastodon.org/methods/async_refreshes/"&gt;AsyncRefresh&lt;/a&gt;. When an endpoint has an associated background refresh job, its response may include the &lt;code&gt;Mastodon-Async-Refresh&lt;/code&gt; HTTP header to indicate that there are additional tasks being performed. Clients can then poll the AsyncRefresh endpoint to check the status of the job, and decide when to re-request the original resource. This is covered in the new documentation linked above.&lt;/p&gt;
&lt;p&gt;We decided to make &amp;ldquo;Fetch all replies&amp;rdquo; the first use-case to try out this new API. When querying the &lt;a href="https://docs.joinmastodon.org/methods/statuses/#context"&gt;&lt;code&gt;/api/v1/statuses/:id/context&lt;/code&gt; endpoint&lt;/a&gt; you might now encounter the new custom HTTP header.&lt;/p&gt;
&lt;p&gt;Please note that the new AsyncRefresh API is still marked as being &lt;em&gt;experimental&lt;/em&gt;. We want to ensure that it works for at least one other use-case before declaring it final. We commit to keeping the experimental endpoint around for one Mastodon version after releasing the final endpoint, to help ease the transition.&lt;/p&gt;
&lt;h3 id="new-timeline-settings"&gt;New timeline settings&lt;/h3&gt;
&lt;p&gt;Mastodon 4.5 offers server administrators granular options to decide which timelines can be accessed by everyone, only by signed in users or not at all. See the documentation of the &lt;code&gt;Instance&lt;/code&gt; entity, &lt;a href="https://docs.joinmastodon.org/entities/Instance/#timelines_access"&gt;specifically this attribute and all the following&lt;/a&gt; for what is possible and how to detect a server&amp;rsquo;s current settings.&lt;/p&gt;
&lt;p&gt;When you request a timeline through one of the &lt;a href="https://docs.joinmastodon.org/methods/timelines/"&gt;timeline endpoints&lt;/a&gt; without an access token you can now get a &lt;code&gt;401&lt;/code&gt; response, meaning either a signed-in user is required or the feed has been disabled altogether. If you use a valid access token and the user is authenticated successfully, you will receive a successful response, &lt;code&gt;200&lt;/code&gt;, just like before, but the result will be empty in the case that the feed has been disabled completely. When in doubt, always check the new settings mentioned above.&lt;/p&gt;
&lt;p&gt;There is one notable exception: Even if access to timelines is disabled completely, they might still be useful as a tool for moderators to scan for new statuses proactively. That is why there is a new role permission to override the settings. See the &lt;a href="https://docs.joinmastodon.org/entities/Role/#permission-flags"&gt;&lt;code&gt;Role&lt;/code&gt; entity&lt;/a&gt; documentation. You will still be able to request timelines on behalf of users with this permission, even when access is disabled for everyone else.&lt;/p&gt;
&lt;h2 id="fediverse-ecosystem"&gt;Fediverse ecosystem&lt;/h2&gt;
&lt;p&gt;Mastodon is part of a much larger constellation - the Fediverse, powered by ActivityPub and related open standards. We want to contribute to the whole system, and integrate well with other apps and services in the Fediverse.&lt;/p&gt;
&lt;h3 id="quote-posts-1"&gt;Quote Posts&lt;/h3&gt;
&lt;p&gt;We released the specification for consent-respecting quote posts (aka &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;FEP-044f&lt;/a&gt;) a little while ago now. At this point, there is a fully featured implementation in Mastodon. This means it could be a good time to implement the FEP in other Fediverse software.&lt;/p&gt;
&lt;p&gt;The FEP itself allows some leeway for implementation - for example, when defining the audience in quote policies. If you are interested in the choices that Mastodon made in those cases, the content of the FEP itself has been updated with additional clarifications. You may also want to have a look at our &lt;a href="https://docs.joinmastodon.org/client/quotes/"&gt;&amp;ldquo;Implementing quote posts&amp;rdquo; guide&lt;/a&gt; to get a more complete picture how this works inside of Mastodon, even if you are not planning on using our APIs.&lt;/p&gt;
&lt;h3 id="http-signatures"&gt;HTTP Signatures&lt;/h3&gt;
&lt;p&gt;Mastodon 4.4 added experimental support for receiving HTTP Message Signatures (&lt;a href="https://www.rfc-editor.org/rfc/rfc9421"&gt;RFC9421&lt;/a&gt;) behind a feature flag.&lt;/p&gt;
&lt;p&gt;The feature flag has been &lt;em&gt;removed&lt;/em&gt; in Mastodon 4.5. Servers running Mastodon 4.5+ will accept incoming HTTP Message Signatures that can be verified. See &lt;a href="https://docs.joinmastodon.org/spec/security/#http-message-signatures"&gt;our documentation&lt;/a&gt; for additional details.&lt;/p&gt;
&lt;h2 id="keep-on-building-with-us"&gt;Keep on building with us!&lt;/h2&gt;
&lt;p&gt;It means a lot to us that developers want to spend their time working on apps for the Mastodon community, and the broader Fediverse as a whole. Thank you.&lt;/p&gt;
&lt;p&gt;Finally, this is blog post is only a summary of the developer-centric features in the new release. We encourage you to have a dig into the &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.5.0-rc.1"&gt;changelog for 4.5&lt;/a&gt; for full details of all the updates.&lt;/p&gt;</description></item><item><title>Plushtodon Mini</title><link>https://blog.joinmastodon.org/2025/10/plushtodon-mini/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/10/plushtodon-mini/</guid><description>&lt;p&gt;Last year, we launched our first batch of plushies, and our community has &lt;a href="https://mastodon.social/tags/plushtodon"&gt;embraced the #Plushtodon literally and figuratively&lt;/a&gt;. It sold out in Europe within a few weeks. Sadly, that means a lot of you missed out on the chance to get one. We’ve listened to your feedback and decided to bring the creature back with a few amendments: Size and color. For the first time, the #Plushtodon will be available in &lt;strong&gt;two flavourful colors, and half the size&lt;/strong&gt;, making it much easier to fit within every household or mode of transport, while maintaining the delightful softness and squishiness that it’s come to be known for.&lt;/p&gt;
&lt;div class="grid grid-cols-3 grid-rows-2 gap-4 not-prose my-8"&gt;
 &lt;div class="col-span-2 row-span-2"&gt;&lt;figure&gt;
 &lt;img src="PA172510.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="PA172511.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="PA172514.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Our plushies are &lt;strong&gt;made in an ICTI Ethical Toy Program and Intertek WCA certified factory in China&lt;/strong&gt;, are surface-washable, and are &lt;strong&gt;suitable for children 3+&lt;/strong&gt;. The materials are &lt;strong&gt;super soft velboa on the outside, and polyester fiberfill on the inside&lt;/strong&gt;. It is worth noting that due to the challenges associated with tariffs in the US, this time, the #Plushtodon will &lt;strong&gt;only be available in Europe&lt;/strong&gt; (EU, Norway, Switzerland, and the UK). Like before, there will be a &lt;strong&gt;limited number available&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We expect them to go on sale at the end of November&lt;/strong&gt;. If you would like to be notified ahead of the public, you can join our merch-specific mailing list below. We only send updates about new merch through it, and your membership helps us gauge interest for future products. Of course, you can also expect us to post about the launch on &lt;a href="https://mastodon.social/@Mastodon"&gt;our official Mastodon account&lt;/a&gt;. If you want to ensure that you don’t miss a post from us, click the bell button next to the follow button.&lt;/p&gt;
&lt;div class="grid grid-cols-2 gap-4 not-prose my-8"&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="Untitled.png" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="Untitled2.png" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Along with our new line of plushies, you can expect reprints of our winter and summer mugs, along with two brand new seasonal designs for spring and autumn, so keep an eye on our store over the coming months!&lt;/p&gt;
&lt;form method="post" action="https://newsroom.joinmastodon.org/subscription/form" class="not-prose rounded-md bg-eggplant p-4 py-6 flex flex-col items-center shadow-lg text-white mt-8"&gt;
 &lt;input type="hidden" name="l" value="da95e48a-3a52-46d6-9184-65ab73877994" /&gt;

 &lt;h3 class="text-lg font-bold mb-2 text-nightshade-50"&gt;Join the mailing list&lt;/h3&gt;
 &lt;p class="text-md mb-8 font-semibold"&gt;Get notified when the toy becomes available for sale&lt;/p&gt;

 &lt;div class="flex gap-4 mb-8"&gt;
 &lt;input type="email" name="email" placeholder="Your e-mail address" required="required" class="block text-sm rounded-md bg-white border-0 bg-transparent shadow-sm ring-1 ring-inset ring-nightshade-50 py-1.5 text-gray-900 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blurple-500" /&gt;
 &lt;button type="submit" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex"&gt;Subscribe&lt;/button&gt;
 &lt;/div&gt;

 &lt;footer class="text-sm"&gt;
 See our &lt;a href="https://joinmastodon.org/privacy-policy" class="text-nightshade-100 hover:underline"&gt;privacy policy&lt;/a&gt;
 &lt;/footer&gt;
&lt;/form&gt;
</description></item><item><title>Trunk &amp; Tidbits, September 2025</title><link>https://blog.joinmastodon.org/2025/10/trunk-tidbits-september-2025/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/10/trunk-tidbits-september-2025/</guid><description>&lt;p&gt;Hello! September was an exciting month, as we started to enable &lt;a href="https://blog.joinmastodon.org/2025/09/introducing-quote-posts/"&gt;the ability to create Quote Posts&lt;/a&gt; on &lt;code&gt;mastodon.social&lt;/code&gt; and &lt;code&gt;mastodon.online&lt;/code&gt; (and, they also started to show up on other servers that run nightly builds of Mastodon). Coming to stable releases, very soon now!&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;In September, we made two sets of releases: version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.4"&gt;4.4.4&lt;/a&gt; / &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.12"&gt;4.3.12&lt;/a&gt; / &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.25"&gt;4.2.25&lt;/a&gt;, followed by version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.5"&gt;4.4.5&lt;/a&gt; / &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.13"&gt;4.3.13&lt;/a&gt; / &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.26"&gt;4.2.26&lt;/a&gt;. These addressed issues identified with display of quote posts (in v4.4), as well as various other smaller updates and fixes. If you run a Mastodon server, we recommend that you upgrade to the most recent minor update level for your major version.&lt;/p&gt;
&lt;p&gt;Looking ahead, we plan to release version 4.5 during October! Expect to see the first beta version in the next few days. After that, we&amp;rsquo;ll start to work on version 4.6 during November; we just &lt;a href="https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/"&gt;shared our initial thoughts on a Fediverse-friendly format for &amp;ldquo;Starter Packs&amp;rdquo;&lt;/a&gt;, which would be a focus in that release.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;We reviewed and merged 195 Pull Requests (123 with translation and dependency updates removed) from 16 contributors. All three metrics up over August! 🚀 We appreciate the contributions.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Lots of changes relative to quote posts to finish the work around this feature, which we enabled on our own servers. They are available on nightly releases without a feature flag now.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Recent quote posts change: you can now view the list of quotes on other people’s posts. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36291"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36291&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36301"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36301&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Changes to how we create new conversation URIs. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35959"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35959&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/jesseplusplus" class="underline"&gt;jesseplusplus&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36064"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36064&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added &lt;a href="http://schema.org"&gt;schema.org&lt;/a&gt; markup to posts, so they can appear with more information in search engines. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36075"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36075&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Changed the UI to notify the user that new replies are available. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36172"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36172&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Refactored the emoji-related code to modernise it, and allow using native emojis in the future &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36165"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36165&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/36293"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #36293&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Change the identifiers used in ActivityPub to numeric IDs (instead of their username) for new users. This is a first step towards allowing account renaming. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32724"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32724&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;The big changes in September were around Quote Post authoring. We also shipped the 2.11.1 release.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We put the finishing touches on 2025.06, which is now available in the App Store. This brings an all-new timeline layout throughout the app, including support for quote posts. This has been a major chunk of work that puts us in a better position to move forward with additional UI improvements from here. We hope you enjoy the new look (and, the bunch of bug fixes made along the way).&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://fediscovery.org"&gt;Fediscovery project&lt;/a&gt; is the initial implementation of a broader specification, &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;Fediverse Auxiliary Service Providers&lt;/a&gt;, aka FASPs.&lt;/p&gt;
&lt;p&gt;We’re happy to see that our friend &lt;a href="https://mastodon.me.uk/@Floppy"&gt;James aka @Floppy&lt;/a&gt; has been working on creating a &lt;a href="https://github.com/manyfold3d/fasp_client"&gt;client / non-provider side implementation of the FASP interface&lt;/a&gt;. In fact, he also added support for federated search based on Fediscovery into &lt;a href="https://manyfold.app/news/2025/09/16/release-v0-123-0.html"&gt;version 0.123.0&lt;/a&gt; of &lt;a href="https://manyfold.app/"&gt;Manyfold&lt;/a&gt;, an application for organising 3D print models that is also part of the Fediverse.&lt;/p&gt;
&lt;p&gt;If you’re interested in Fediscovery - or in creating FASP implementations - then we’d be curious to know what you’re working on&amp;hellip; 🧐&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;We have a couple of important discussions to highlight in our GitHub community this month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We plan to update our Code of Conduct for the Mastodon community and GitHub projects to the Contributor Covenant, version 3. The &lt;a href="https://github.com/mastodon/mastodon/discussions/36324"&gt;proposal for comment&lt;/a&gt; is open for the next month. Participants in our community look at this discussion, as this is an opportunity to comment on new Code of Conduct.&lt;/li&gt;
&lt;li&gt;We just posted a &lt;a href="https://github.com/mastodon/mastodon/discussions/36368"&gt;community consultation on new Terms of Service&lt;/a&gt; to be applied to the Mastodon servers hosted by Mastodon gGmbH (&lt;code&gt;mastodon.social&lt;/code&gt; and &lt;code&gt;mastodon.online&lt;/code&gt;) in the coming month. If you have an account on these servers, please take a look at this.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apart from these discussions, we love to discover new projects being built on the Mastodon API! 🔍&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://birchtree.me/blog/introducing-best-o-masto/"&gt;Best-o-Masto is a new single-purpose iOS client app&lt;/a&gt; for highlighting the top posts from the people you follow.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Enichan/feditag"&gt;Feditag&lt;/a&gt; is a JavaScript-based embed to pull in hashtagged posts from a specific Mastodon account, for display on a web page.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="thank-you-for-your-support"&gt;Thank you for your support&lt;/h2&gt;
&lt;p&gt;We’re always grateful for your support, and we’re committed to building a better social web. Please donate if you are able. Thank you!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Our ideas about Packs</title><link>https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/</link><pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/10/our-ideas-about-packs/</guid><description>&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Mastodon’s timeline doesn’t rely on dopamine-driven algorithms – it is chronological and consent-based, showing only posts from accounts you (the person using Mastodon) have followed.&lt;/p&gt;
&lt;p&gt;This focus on privacy and conscious consumption is what leads many people to join the Fediverse in the first place. It also places an unfair ultimatum on incoming users: You’ll have to make an effort to figure out who to follow, or your timeline will mostly be empty.&lt;/p&gt;
&lt;p&gt;Bluesky pioneered a brilliant solution to this “empty feed problem” in 2024, with the introduction of “Starter Packs”, a feature that allows users to curate and share their own collections of recommended accounts.&lt;/p&gt;
&lt;p&gt;We believe that these kinds of user-generated, curated collections could help people to find their tribe more quickly when they join the Fediverse. At the same time, envisioning a similar feature that prioritises user consent, &lt;em&gt;and&lt;/em&gt; works across a constellation of independent servers, is no small feat.&lt;/p&gt;
&lt;p&gt;In this blog post, we want to talk about bringing a similar concept to Mastodon and the Fediverse. We’ll use the word “Packs” to refer to the shareable collections of identifiers throughout, but we’ve not yet landed on final terminology - so, consider this word a placeholder, and not what this will definitely be called in Mastodon.&lt;/p&gt;
&lt;blockquote class="info"&gt;&lt;p&gt;update, April 2026: the final name we&amp;rsquo;ve chosen for this feature is &lt;em&gt;Collections&lt;/em&gt; - you can expect to see the first implementation as part of Mastodon version 4.6.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="challenges-and-considerations"&gt;Challenges and considerations&lt;/h2&gt;
&lt;p&gt;We know that there have been existing efforts to make it easier to discover curated collections of users (for example, &lt;a href="https://fedidevs.com/starter-packs/"&gt;fedidevs.com&lt;/a&gt; offers “Starter Packs”). We’ve been happy to see these being shared, as they can help people discover interesting individuals and organisations to follow. We&amp;rsquo;d be equally happy to have the creators of these tools provide feedback on our own ideas 🙂&lt;/p&gt;
&lt;p&gt;We believe that there are several ways to improve on the existing examples, that are more aligned with the values we try to bring to the Fediverse, and that offer more to the decentralised ecosystem as a whole.&lt;/p&gt;
&lt;p&gt;Firstly, it’s important to us that users have control over whether they appear in Packs on Mastodon. Early design explorations with our concept of Packs led us to the following possibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Packs will become an extension of discovery. Users who wish to opt out entirely from Packs will be able to do so by disabling the existing setting, labelled &lt;em&gt;“Feature profile and posts in discovery algorithms”&lt;/em&gt;. This will signal that an account cannot be added to a Pack.&lt;/li&gt;
&lt;li&gt;Users will be notified when they are included in a Pack. Unlike on Bluesky, where users wishing to remove themselves from a Starter Pack must either report the Starter Pack, or block the user, users on Mastodon will have a more neutral mechanism to remove themselves from a Pack they do not wish to be part of.
(note: we implemented something similar with the Quote Posts feature, where an original post can be removed from a quote post; this same idea would flow through to Packs).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, federation presents its own challenges. Just as Mastodon users can follow people on other Fediverse servers, our goal is for them to also be able to find and interact with Packs created elsewhere in the Fediverse. When Alice creates a Pack on her server &lt;code&gt;example.com&lt;/code&gt;, how does Bob on &lt;code&gt;example.online&lt;/code&gt; get to know about it, and come to interact with it? What if &lt;code&gt;example.com&lt;/code&gt; and &lt;code&gt;example.online&lt;/code&gt; run different ActivityPub-compatible software? These questions can be addressed via established Fediverse discussion processes.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;We’re in the process of collaborating with other Fediverse developers on a &lt;a href="https://codeberg.org/fediverse/fep"&gt;Fediverse Enhancement Proposal (FEP)&lt;/a&gt;, so that a common implementation for Packs can be made available to developers of any ActivityPub software. The initial work is &lt;a href="https://github.com/mastodon/featured_collections"&gt;now available on GitHub&lt;/a&gt;. The FEP process will be the place to direct any technical questions.&lt;/p&gt;
&lt;p&gt;Meanwhile, we’re also conducting broader research to understand overarching themes related to user onboarding, and how we can make things easier for people to get started on Mastodon.&lt;/p&gt;
&lt;p&gt;We expect to release an initial version of Packs, plus other minor improvements to onboarding, in Mastodon 4.6. In the meantime, the next stable release (Mastodon 4.5) is right around the corner!&lt;/p&gt;
&lt;h3 id="we-want-to-hear-your-thoughts"&gt;We want to hear your thoughts&lt;/h3&gt;
&lt;p&gt;We want to make Packs a great feature for discovery and onboarding! If you have thoughts on the ideas described above (beyond the technical aspects that will be part of the FEP), contact us at &lt;a href="mailto:feedback@joinmastodon.org"&gt;feedback@joinmastodon.org&lt;/a&gt;. We may not be able to respond to every individual message, but we’ll be reading every piece of feedback to learn more about your ideas.&lt;/p&gt;</description></item><item><title>Service offerings from Mastodon</title><link>https://blog.joinmastodon.org/2025/09/service-offerings-from-mastodon/</link><pubDate>Fri, 19 Sep 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/09/service-offerings-from-mastodon/</guid><description>&lt;p&gt;In a &lt;a href="https://blog.joinmastodon.org/2025/06/mastodon-2025/"&gt;recent post&lt;/a&gt;, we shared that one of our priorities for 2025 is to establish a more sustainable financial base for the Mastodon organisation.&lt;/p&gt;
&lt;p&gt;In 2024, Mastodon gGmbH took over hosting of the &lt;a href="https://ec.social-network.europa.eu/"&gt;European Commission’s Mastodon service&lt;/a&gt;. We also signed a support contract with &lt;a href="https://social.schleswig-holstein.de/"&gt;the state of Schleswig-Holstein in Germany&lt;/a&gt;. More recently, we started working with the city of Blois, in France. While all of these are public institutions, we&amp;rsquo;re also very proud having added AltStore as a customer in the last few weeks.&lt;/p&gt;
&lt;p&gt;At the time, each of these were one-off opportunities. They also added some much-needed predictable elements to our income.&lt;/p&gt;
&lt;p&gt;Continuing towards our goal of financial sustainability, we’re now ready to expand on the success of providing these services to organisations. Institutions with an interest in operating their own Mastodon servers can contact us via the &lt;a href="https://joinmastodon.org/hosting"&gt;new page on our website&lt;/a&gt;, to discuss options. This could be a fully operated server under the organisation’s own domain run by our team (with moderation included, on request); or, we can work with an organisation’s in-house operations team, via a support contract.&lt;/p&gt;
&lt;p&gt;We’re taking this step of offering paid hosting, moderation, and support for larger organisations to establish a reliable recurring revenue stream. It is vital that we broaden our income - but, our aspiration remains that Mastodon should be predominantly funded through community contributions in the future.&lt;/p&gt;
&lt;p&gt;It is also fundamental that Mastodon as a network must not be centrally hosted or managed. The Fediverse is decentralised, by design. This makes it resilient to change, and it means that people have a free choice to join communities that match their interests, needs, and cultural expectations. To be clear, we’re extremely grateful to everyone that runs a Mastodon server as part of the network, including all the companies that manage Mastodon services for groups, communities, organisations, and individuals. Your support is invaluable.&lt;/p&gt;
&lt;p&gt;These new commercial offerings will not be a singular focus for Mastodon. We’ll continue to build the software, alongside operating our own server that can act as an entry point to the Mastodon community for anyone who wants to join. We want to work together with everyone in the ecosystem, in order to ensure that a range of Mastodon servers support the community, and that the Fediverse as a whole remains diverse, free and open to all.&lt;/p&gt;</description></item><item><title>Introducing quote posts</title><link>https://blog.joinmastodon.org/2025/09/introducing-quote-posts/</link><pubDate>Thu, 11 Sep 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/09/introducing-quote-posts/</guid><description>&lt;p&gt;Over the years, we’ve learned just how essential quoting is to many of you. When done responsibly, quoting allows us to expand discussions, make new connections, and amplify underrepresented voices.&lt;/p&gt;
&lt;p&gt;Quoting is a powerful tool, and like any tool, it can be misused. That’s why we’ve taken time to introduce quotes in a way that aligns with Mastodon values, focusing on safety and mental health – not just on engagement. We shared our thinking about &lt;a href="https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/"&gt;bringing quote posts to Mastodon&lt;/a&gt; earlier in the year.&lt;/p&gt;
&lt;p&gt;Found something inspiring? Quote your favourite posts from where you typically boost them. Don’t want to be quoted? Disable quoting by default for all posts, or turn off quoting for a specific post. Want your thoughts to inspire a wider audience? Keep the default setting enabled to ‘Anyone’. &lt;strong&gt;You’re in control of how much or how little you engage.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quote post functionality will arrive on &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt; and &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; next week, and will be available in Mastodon 4.5 soon thereafter. Read on for a more detailed look at how quote posts will look and function in Mastodon 4.5.&lt;/p&gt;
&lt;h2 id="quote-anyone-who-wants-to-be-quoted"&gt;Quote anyone who wants to be quoted&lt;/h2&gt;
&lt;h3 id="quoting-from-the-boost-menu"&gt;Quoting from the Boost menu&lt;/h3&gt;
&lt;p&gt;If an author of a post has enabled quoting, you’ll see an option to quote their post under a new menu accessed from the &lt;em&gt;Boost&lt;/em&gt; button.
Your post will then appear within the composer window, where you can add your comment and post to continue the discussion.&lt;/p&gt;
&lt;p&gt;&lt;video src="initiate.mp4" autoplay loop playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Power booster?&lt;/strong&gt; You can still boost quickly using &lt;code&gt;Shift + Click&lt;/code&gt; on the &lt;em&gt;Boost&lt;/em&gt; button or using the &lt;code&gt;B&lt;/code&gt; hotkey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quote responsibly.&lt;/strong&gt; Authors can remove their post if they’re uncomfortable with the way you’ve quoted them. See &lt;a href="https://blog.joinmastodon.org/2025/09/introducing-quote-posts/#revoke"&gt;Notifications and Revocation&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id="fediverse"&gt;Quoting across the Fediverse&lt;/h3&gt;
&lt;p&gt;Mastodon shares space in the Fediverse with other software that may behave differently. In practice, it means it&amp;rsquo;s possible that when you quote a post from another Fediverse platform, it may take some time for the quote to appear. When the content is available, it will automatically update on your post.&lt;/p&gt;
&lt;p&gt;We worked on a &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;technical specification for the Fediverse that offers the concept of consent-respecting quote posts&lt;/a&gt;. We’ve also collaborated with other apps and services to make this work between platforms. We expect that not every platform will update to use this specification right away, but we hope to see more of them do so in the future.&lt;/p&gt;
&lt;h2 id="controls"&gt;You’re in control of who quotes you&lt;/h2&gt;
&lt;h3 id="default-settings"&gt;Default settings&lt;/h3&gt;
&lt;p&gt;Disable or limit quotes by navigating to &lt;em&gt;Settings -&amp;gt; Preferences -&amp;gt; Posting Defaults&lt;/em&gt;. These defaults will apply to all &lt;em&gt;future&lt;/em&gt; posts you create.&lt;/p&gt;
&lt;p&gt;(Note: if your server is running Mastodon 4.4.x, you will find this setting under &lt;em&gt;Settings -&amp;gt; Preferences -&amp;gt; Other&lt;/em&gt; instead)&lt;/p&gt;
&lt;p&gt;&lt;video src="defaults.mp4" autoplay playsinline controls muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Your visibility setting controls options for who can quote. When you make a followers-only post, others (including followers) won’t be able to quote it – this ensures that your post remains visible to only your followers.&lt;/p&gt;
&lt;h3 id="post-level-settings"&gt;Post-level settings&lt;/h3&gt;
&lt;p&gt;Override your global settings for an individual post by navigating to &lt;em&gt;Visibility and interaction settings&lt;/em&gt; within the composer.&lt;/p&gt;
&lt;p&gt;&lt;video src="individual-post.mp4" playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id="revoke"&gt;Notifications and revocation&lt;/h3&gt;
&lt;p&gt;When someone quotes one of your posts, you’ll be notified. You can easily remove your original post from theirs, using the ••• Options menu.&lt;/p&gt;
&lt;p&gt;&lt;video src="revoke.mp4" playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Sometimes, removing your post from a single quote may not be enough. If you believe someone is abusing the ability to quote you, you can also take the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Block the user. While this action won’t retroactively remove your post from posts the user has already published, it will prevent the user from quoting you in future posts.&lt;/li&gt;
&lt;li&gt;Change the quote settings for your published post. The next section outlines how to do this.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="changing-quote-settings-on-a-published-post"&gt;Changing quote settings on a published post&lt;/h3&gt;
&lt;p&gt;On your own published posts, edit the quote settings from the ••• menu. Changes will prevent users from quoting your post in the future, but will not apply retroactively to quotes already published.&lt;/p&gt;
&lt;p&gt;&lt;video src="change-post.mp4" playsinline controls muted class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Only public and quiet public posts can be edited this way; your followers-only posts and direct mentions can only ever be quoted by you.&lt;/p&gt;
&lt;h2 id="stay-tuned"&gt;Stay tuned&lt;/h2&gt;
&lt;p&gt;As we mentioned at the start, quote post functionality will arrive on &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt; and &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; next week. If you use a third-party app, the feature may not show up right away, and you may need to wait for the author to add it. It will be available more widely when Mastodon 4.5 is released in the near future.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Developing a Mastodon client?&lt;/strong&gt; Visit our &lt;a href="https://github.com/mastodon/documentation/pull/1710"&gt;draft developer implementation guide and documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information on how to use quote posts, &lt;a href="https://docs.joinmastodon.org/user/quote-posts/#faq"&gt;have a look at the FAQ section of the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you’d like to preemptively opt out of being quoted, you can do so on Mastodon 4.4 under &lt;em&gt;Settings -&amp;gt; Preferences -&amp;gt; Other&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;We’re committed to making quote posts a tool for meaningful discourse. If you have thoughts on our quote post feature, contact us at &lt;a href="mailto:feedback@joinmastodon.org"&gt;feedback@joinmastodon.org&lt;/a&gt;. We may not be able to respond to every individual message, but we’ll be reading every piece of feedback to learn more about your ideas.&lt;/p&gt;
&lt;h3 id="gratitude"&gt;Gratitude&lt;/h3&gt;
&lt;p&gt;We’d like to thank &lt;a href="https://nlnet.nl/project/Mastodon-Quoting/"&gt;the NGI Entrust Fund and NLNet&lt;/a&gt; for their support towards building this feature for Mastodon and ActivityPub.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, August 2025</title><link>https://blog.joinmastodon.org/2025/09/trunk-tidbits-august-2025/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/09/trunk-tidbits-august-2025/</guid><description>&lt;p&gt;Welcome to the 17th edition of Trunk &amp;amp; Tidbits: your monthly update from inside the Mastodon core engineering team. Let’s get into what we were working on in August 2025.&lt;/p&gt;
&lt;p&gt;It has been summertime in the northern hemisphere, and various team members have been taking time away. As a result, things were a little more quiet than usual, but progress continues.&lt;/p&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;The main event during August was &lt;a href="https://froscon.org/"&gt;FrOSCon&lt;/a&gt;, held in Sankt Augustin, Germany. &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; and &lt;a href="https://upp2.com/@dave"&gt;David&lt;/a&gt; attended and spoke at the event.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Andy’s keynote: &lt;a href="https://media.ccc.de/v/froscon2025-3408-decentralising_freedom_open_source_for_sovereignty"&gt;Decentralising Freedom - Open Source for Sovereignty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;David’s talk: &lt;a href="https://media.ccc.de/v/froscon2025-3346-taking_a_fresh_look_at_the_fediverse"&gt;Taking a Fresh Look at the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested in new features in Mastodon, and our upcoming plans, David’s talk is particularly worth watching. You can also read &lt;a href="https://andypiper.co.uk/2025/08/22/talks-and-travels-froscon-germany/"&gt;Andy’s personal blog post&lt;/a&gt; about the event.&lt;/p&gt;
&lt;p&gt;In addition to our own team, shout out to &lt;a href="https://chaos.social/@ge0rg"&gt;Georg Lukas&lt;/a&gt;, who gave a great talk (based on &lt;a href="https://op-co.de/blog/posts/samsung_nx_mastodon/"&gt;his blog post&lt;/a&gt;) about &lt;a href="https://media.ccc.de/v/froscon2025-3304-samsung_camera_to_mastodon_bridge"&gt;creating a bridge from Samsung NX cameras to post to Mastodon&lt;/a&gt;. Pretty detailed, and also very interesting and entertaining!&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;There were no new backend software releases since the previous Trunk &amp;amp; Tidbits ⛱ the current releases of the Mastodon server software are &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.3"&gt;4.4.3&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.11"&gt;4.3.11&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.24"&gt;4.2.24&lt;/a&gt;. It is always best to keep your server up-to-date with the current code, as this ensures that you keep up with patches for any pesky bugs, and the community can enjoy the latest features.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;In August, we reviewed and merged 176 Pull Requests (117 with translation and dependency updates removed) from 14 contributors. Thank you!&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Lots of work on Quote Posts, now with the ability to create them, change the related settings and retract them. The feature is nearly finished, and you can expect a full blog post on it very soon!
If you are a Mastodon client developer, you can already look at &lt;a href="https://github.com/mastodon/documentation/pull/1710"&gt;this draft implementation guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Our FASP implementation now track the status of every provider, and stops trying to send data to them if they are not responsive &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35723"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35723&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The refactor of the web UI theme colours (implementing our new theme tokens) is well underway.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-violet-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;container&lt;/span&gt;
 Our container image is now using the latest Debian release &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35768"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35768&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;We finished working on displaying quote posts, and fixed some more minor bugs and crashes. Released version 2.10.1.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;Furious paddling beneath the surface continues!&lt;/p&gt;
&lt;p&gt;The new post layout is in good shape, and we are pushing through the todo list to deliver quote posts, as well.&lt;/p&gt;
&lt;h2 id="documentation"&gt;Documentation&lt;/h2&gt;
&lt;p&gt;We’d like to say thanks to several folks for their contributions to the &lt;a href="https://github.com/mastodon/documentation"&gt;documentation repository&lt;/a&gt; last month. The docs can be a good place to help out if you’re looking to get involved, but have less knowledge of Ruby or other coding areas (for example).&lt;/p&gt;
&lt;p&gt;We recently updated the README, and added a &lt;a href="https://github.com/mastodon/documentation/blob/main/DOCSTYLE.md"&gt;DOCSTYLE&lt;/a&gt; guide, to work towards better consistency in the documentation.&lt;/p&gt;
&lt;p&gt;Thanks to iioflow, Tak, cobrachili and joshuajung for helping to improve things for everyone.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;There have been a lot of releases from projects across the developer ecosystem lately 💗&lt;/p&gt;
&lt;p&gt;There’s a new release of &lt;a href="https://www.colino.net/wordpress/en/mastodon-for-apple-ii/"&gt;Mastodon for the Apple II&lt;/a&gt;! (and, if you love retro computing, check out &lt;a href="https://joinmastodon.org/apps"&gt;the Retro computing category on the third-party apps list&lt;/a&gt;)&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://piaille.fr/@colin_mcmillen/115085414289701797/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://piaille.fr/@colin_mcmillen/115085414289701797" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @colin_mcmillen@piaille.fr&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://piaille.fr/" async src="https://piaille.fr/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;If you’re into more modern platforms, the Android app Tusky reached version 30! (and version 31 was just published as well) 👏🏻&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Tusky/115004655628945040/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Tusky/115004655628945040" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Tusky@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Here are just a couple more highlights of other recent releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/TootSDK/TootSDK/tags"&gt;TootSDK&lt;/a&gt;, a Swift library, made a number of releases during August.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/halcy/Mastodon.py/releases/tag/v2.1.0"&gt;Mastodon.py&lt;/a&gt;, a Python library, brought functionality up-to-date with Mastodon 4.4.3 (and made a few more releases in August, as well).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;p&gt;First and foremost: Thank You for using Mastodon, and for believing in a better social web, one outside of corporate interests and without obscure algorithms.&lt;/p&gt;
&lt;p&gt;We recently ran a small experiment with an in-app donation banner (visible to people on our own Mastodon servers), and appreciated the financial support that it generated. Even without that banner though, you can support us any time: we find recurring donations particularly helpful. If you become &lt;a href="https://www.patreon.com/mastodon"&gt;a Patreon supporter&lt;/a&gt;, you can also follow our updates over there, for even more news about what the team is doing to support the Fediverse!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, July 2025</title><link>https://blog.joinmastodon.org/2025/08/trunk-tidbits-july-2025/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/08/trunk-tidbits-july-2025/</guid><description>&lt;p&gt;It’s time for another recap of project progress, particularly from the engineering side of the team. Welcome!&lt;/p&gt;
&lt;h2 id="news"&gt;News&lt;/h2&gt;
&lt;p&gt;In July, we &lt;a href="https://blog.joinmastodon.org/2025/07/a-nudge-to-fund-our-future/"&gt;announced that we’d be running a donation campaign in our mobile apps&lt;/a&gt;, visible to people on the &lt;code&gt;mastodon.social&lt;/code&gt; and &lt;code&gt;mastodon.online&lt;/code&gt; servers. This is an exploratory step, as we look at different ways to grow our funding. In the future we plan to extend this to the web, and (longer term) we have a plan to make this banner feature available to the operators of other Mastodon servers as well.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;At the start of August (just before publishing this update) we released version &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.3"&gt;4.4.3&lt;/a&gt;, along with &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.11"&gt;4.3.11&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.24"&gt;4.2.24&lt;/a&gt;. These are the &lt;em&gt;current, recommended releases&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;These releases contain bugfixes, a fix for a moderate severity rate limit issue, and a fix for a security issue if you use SAML. In version 4.4.3 there are also changes to how quote posts are handled, as we continue to work towards full support for quote posts in the next main release (see below for more on this).&lt;/p&gt;
&lt;p&gt;During July we also released version 4.4.2, 4.3.10, and 4.2.23.
You can find the full list of changes for these by checking their entries in the &lt;a href="https://github.com/mastodon/mastodon/releases/"&gt;release notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We recommend that all server operators upgrade to the latest point release for the main version they are running, to stay up-to-date with fixes and to provide people with the best available experience. We announce new version releases via our &lt;a href="https://mastodon.social/@MastodonEngineering"&gt;@MastodonEngineering account&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and Web&lt;/h2&gt;
&lt;p&gt;This month, we made a lot of progress on quote posts. We finalised designs for quote post authoring and settings, considering ways to provide both creative freedom and privacy with this new feature. Backend work on quote posts authoring is underway.&lt;/p&gt;
&lt;p&gt;We are also working on adding Starter Packs to Mastodon, with early interface and ActivityPub exploration done in the last few weeks. We are planning to publish a feature explainer detailing our decisions (for example, how to let users control if they want to be included in a Starter Pack) in the coming weeks, and will share a &lt;a href="https://codeberg.org/fediverse/fep"&gt;Fediverse Enhancement Proposal&lt;/a&gt; (FEP) so that they can be implemented in other ActivityPub-based software.&lt;/p&gt;
&lt;p&gt;Other technical work is moving along. We are refactoring our Emoji code, and beginning a rework of the way we write stylesheets, to make them more tuned for performance, and more future-proof.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Work is in progress to replace Mastodon’s emoji handling code to improve performance and avoid loading a lot of unused emoji data &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35229"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35229&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35282"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35282&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35253"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35253&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35424"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35424&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35505"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35505&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35568"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35568&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Rewrote the keyboard shortcut code to remove an unmaintained dependency &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35425"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35425&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added the ability for the web interface to automatically fetch replies from other servers and show a button if there are new ones &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35210"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35210&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35575"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35575&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Started to add quote posts authoring (behind a feature flag). This is API-only for now, and still being worked on. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35355"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35355&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35578"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35578&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Updated the design of quote posts to align with our latest design &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35584"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35584&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Updated trending statuses criteria to account for quote posts (a post with a quote can only trend if the quoted post is allowed for trending) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35507"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35507&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Added the ability to block specific usernames from registering. This handles homoglyphs, partial matches, and either require approval, or deny registration entirely. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35407"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35407&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35614"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35614&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;Fixed some minor bugs and started working on displaying quote posts.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;Finished work on 2025.04, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigations should no longer look broken (fixes &lt;a href="https://github.com/mastodon/mastodon-ios/issues/1448"&gt;#1448&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Editing a post now gives the same progress indication as publishing a post for the first time (filling up the button)&lt;/li&gt;
&lt;li&gt;Efficiency improvements to avoid the “too many requests” error (fixes &lt;a href="https://github.com/mastodon/mastodon-ios/issues/1449"&gt;#1449&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Behind-the-scenes, there is work in progress to completely rework the way posts and timelines are handled.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;We spotted a couple of interesting new app releases this month.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;toot, a text-based UI (TUI) for Mastodon, &lt;a href="https://github.com/ihabunek/toot/releases/tag/0.49.0"&gt;hit version 0.49.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tuba, a GNOME / GTK client (Linux), had &lt;a href="https://www.omgubuntu.co.uk/2025/08/tuba-0-10-mastodon-client-linux-new-features"&gt;what OMG Ubuntu called “a huge update”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a reminder: if you’re building something cool, fun, unusual, or useful on Mastodon or using the Mastodon API, let us know, so we can share it here!&lt;/p&gt;
&lt;h2 id="wrapping-up"&gt;Wrapping up&lt;/h2&gt;
&lt;p&gt;That’s all for another month of progress. We’re very grateful to everyone supporting us, as we work to make the social web a better place to be. Thank you.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>A nudge to fund our future</title><link>https://blog.joinmastodon.org/2025/07/a-nudge-to-fund-our-future/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/07/a-nudge-to-fund-our-future/</guid><description>&lt;p&gt;For too long, the internet has been shaped by platforms funded by venture capital and advertising. The Fediverse is testament to a different kind of social media: one built for its users, not corporate interests. This independence is what makes Mastodon and the wider Fediverse special, fostering a diverse and resilient network of communities. We are showing the world every day, that this model works!&lt;/p&gt;
&lt;p&gt;Independence comes with its own set of challenges. Running a server, moderating content, and developing the software that powers this network requires resources. We want to make it easier for those who value Mastodon to make donations directly, to “flip the script” from corporations funded by surveillance capitalism, to sustainable support built from many small donations. When the people who use the platform are its primary backers, the platform’s loyalty remains with them.&lt;/p&gt;
&lt;p&gt;Over the next few days, we will be taking a deliberate and measured step forwards, by making the donation feature more visible. We will be rolling out a campaign on the Mastodon servers that we operate (&lt;a href="https://mastodon.social/"&gt;mastodon.social&lt;/a&gt; and &lt;a href="https://mastodon.online/"&gt;mastodon.online&lt;/a&gt;). This will allow us to gather feedback and understand the process, so we can learn whether it feels right for our community.&lt;/p&gt;
&lt;p&gt;The initial campaign will appear via a banner to people that use our Android and iOS apps, if they are signed-in to an account on one of our instances, and only if their account has existed for four weeks or more. The banner will be easy to dismiss, of course, and we will not continually prompt users to donate. This will only show up in our mobile apps for now - in a future campaign, we hope to extend the feature to the web as well. The banner is separate from the existing Donate button that appears in the app settings for users on our instances.&lt;/p&gt;
&lt;p&gt;If this works well, we would like to make this fundraising option available to all other Mastodon instances. This would empower individual server administrators to receive direct support from their users. Each instance could then choose whether or not to enable this feature, giving them another tool to ensure their long-term viability. We expect this to have a number of detailed requirements, and it would take effort to build out as a broader feature; it is something we consider a medium to longer term concept, rather than an immediate next step.&lt;/p&gt;
&lt;p&gt;We know that collecting money can present complexities and questions. We’d like to figure out how to do this well, together with the community. This is not a corporate fundraising campaign: it’s an effort to secure the future of a more ethical and independent social web. It’s an invitation to help us build a platform that truly belongs to all of us. Thank you for your support as we take another small step forwards in our fundraising efforts.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, June 2025</title><link>https://blog.joinmastodon.org/2025/07/trunk-tidbits-june-2025/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/07/trunk-tidbits-june-2025/</guid><description>&lt;p&gt;It was another busy month in June, as we moved into the final stretch of the 4.4 release process. We also covered a lot of events during the month. Here’s what was happening.&lt;/p&gt;
&lt;h2 id="team"&gt;Team&lt;/h2&gt;
&lt;p&gt;We welcomed &lt;a href="https://mastodon.social/@imanijoy"&gt;Imani&lt;/a&gt; to the team, as our new designer. Very excited to have Imani join us!&lt;/p&gt;
&lt;p&gt;We also said goodbye to &lt;a href="https://mastodon.social/@inganomads"&gt;Inga&lt;/a&gt;, who has been instrumental in building the team. Thank you, Inga 🙏🏻&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@inganomads/114678177720568140/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@inganomads/114678177720568140" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @inganomads@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;Beyond the work of the engineering team:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; spoke at PublicSpaces in Amsterdam and at ECAS Day in Brussels;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; was at the Internet Governance Forum in Oslo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hachyderm.io/@haubles"&gt;Hannah&lt;/a&gt; spoke about &lt;a href="https://blog.joinmastodon.org/2025/06/mastodon-dpga/"&gt;Mastodon being recognised as a Digital Public Good&lt;/a&gt;, at the UN Open Source Week;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oisaur.com/@renchap"&gt;Renaud&lt;/a&gt; represented us at the NGI Forum in Brussels;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@zoraxzora"&gt;Zora&lt;/a&gt; co-hosted a Mastodon workshop at the Publix day in Berlin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Relatedly, we were happy that our most recent grant application to the NGI0 Commons fund was approved. This means that we will have some funding to work on &lt;a href="https://nlnet.nl/project/Mastodon-for-institutions/"&gt;institutional features&lt;/a&gt; over the next year.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;In June, there were two beta releases and one release candidate for version 4.4.0. As we slid over into July, we released 4.4.0 and then &lt;a href="https://github.com/mastodon/mastodon/releases/v4.4.1"&gt;4.4.1&lt;/a&gt; in quick succession. We recommend that server owners upgrade directly from 4.3.x to 4.4.1, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0"&gt;check the release notes for 4.4.0 in detail for important migration information&lt;/a&gt;, particularly around versions of other software that Mastodon depends on.&lt;/p&gt;
&lt;p&gt;What’s new in version 4.4? We got you covered! Here’s &lt;a href="https://blog.joinmastodon.org/2025/07/mastodon-4-4-for-devs/"&gt;a blog post for developers&lt;/a&gt;, and &lt;a href="https://blog.joinmastodon.org/2025/07/mastodon-4.4/"&gt;our 4.4 launch blog post&lt;/a&gt; that covers some of the most visible new features.&lt;/p&gt;
&lt;p&gt;We also released patch versions &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.9"&gt;4.3.9&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.22"&gt;4.2.22&lt;/a&gt;, for server owners that remain on the 4.3.x or 4.2.x branches.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re already hard at work on version 4.5 🧑🏻‍💻&lt;/p&gt;
&lt;h3 id="bonus-releases-"&gt;Bonus releases 🎉&lt;/h3&gt;
&lt;p&gt;We released &lt;a href="https://signal.art/addstickers/#pack_id=43a9c3e16e24b2f182e2d3e03a7e1338&amp;amp;pack_key=87a129905fbe7371568eef6485f93a81b7569a963bf711063bf804123a075083"&gt;a pack of stickers for Signal users to use&lt;/a&gt; when talking with friends and contacts. Help share Mastodon via our cute mascot!&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Mastodon/114749156199964168/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Mastodon/114749156199964168" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Mastodon@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;We shipped an &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;improved donation widget&lt;/a&gt; for the website. It is now easier to donate directly to the project (although you are free to use Patreon, GitHub sponsors, and others if you wish).&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and web&lt;/h2&gt;
&lt;p&gt;In June, we reviewed and merged 189 Pull Requests (137 with translation and dependency updates removed) from 11 contributors.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Add support for receiving RFC9421 HTTP signatures (under an experimental flag for now) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34814"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34814&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Update the navigation layout on small screens &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34910"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34910&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Replaced the dropdown menu near the composer with a “More” button in the main navigation &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34987"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34987&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Renamed “Explore” to “Trending” &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34985"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34985&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Reordered the items in the main navigation panel &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35029"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35029&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Added Fediscovery support to follow recommendations &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35218"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35218&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Added Fediscovery support for account search &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34033"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34033&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Added support for writing moderation notes for instances &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31529"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31529&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Added support for a second set of SMTP credentials for non-transactional emails &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/35203"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #35203&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 
 
 
 &lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Many small fixes to the backend and interface, to polish the 4.4 release&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;No updates of note in June.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;Version 2025.03 is now available on the App Store for all users, bringing an improved iPad layout and support for the 4.4 updates to server rules display, including translations.&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;Our &lt;a href="https://github.com/mastodon/fediscoverer"&gt;reference discovery provider&lt;/a&gt; has become easier to install as we added documentation and an official helm chart. We started testing this in a production setting with a few select servers.&lt;/p&gt;
&lt;p&gt;On the Mastodon side, we merged support for account search and follow recommendations. Both are in 4.4, but still behind a feature flag (server administrators need to enable these features). The integrations do not have immediate user-visible effects, but should help smaller servers to fill their local database with remote accounts. Once available, these then improve account discoverability across the Fediverse.&lt;/p&gt;
&lt;p&gt;Although the additions do not have an instant effect, we already have an experimental API in place to help track the fetching of those remote accounts (and other things). Next steps will be to figure out an acceptable user experience to make the results available as they come in.&lt;/p&gt;
&lt;h2 id="community-news"&gt;Community news&lt;/h2&gt;
&lt;p&gt;In June, we spotted that the excellent &lt;a href="https://social.lol/@robb"&gt;Robb&lt;/a&gt; (maker of &lt;a href="https://echofeed.app/"&gt;EchoFeed&lt;/a&gt;) created &lt;a href="https://github.com/rknightuk/trmnl-mastodon-profile"&gt;a plugin for TRMNL&lt;/a&gt;, an e-Ink display device, to show Mastodon profile information. A fun little display! 📊&lt;/p&gt;
&lt;p&gt;There’s ➡ more space here ⬅ for another one or two projects 😉 As a reminder, if you are building on Mastodon and our API, we’d love to hear about your project. Let &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; know about it, so we can include a shout-out and tell the community about it.&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you&lt;/h2&gt;
&lt;p&gt;Thanks for reading, and apologies that this update was shared a little later than usual and intended - we’ll get them back on track.&lt;/p&gt;
&lt;p&gt;One of our &lt;a href="https://blog.joinmastodon.org/2025/06/mastodon-2025/"&gt;key strategic goals for 2025&lt;/a&gt; is to make Mastodon more sustainable, and we really want to grow both the number of people using Mastodon, and the number of people who donate to help us. We depend on your support - no ads, no venture capital, fully independent: better social networking, for the people.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 4.4</title><link>https://blog.joinmastodon.org/2025/07/mastodon-4.4/</link><pubDate>Tue, 08 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/07/mastodon-4.4/</guid><description>&lt;p&gt;Mastodon 4.4 is here, bringing you new ways to showcase yourself, manage your growing network, and enjoy what&amp;rsquo;s in your timeline. Administrators and moderators also gain new tools for keeping communities safe.&lt;/p&gt;
&lt;p&gt;As always, if you use &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt;, you may already have seen some of the updates as they gradually showed up across the user experience. Rolling out a new stable release enables us to share all of that goodness across the whole Mastodon community. We encourage all server operators to &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.1"&gt;upgrade to Mastodon 4.4&lt;/a&gt;, starting today.&lt;/p&gt;
&lt;p&gt;🔍 If you’re a developer building on Mastodon, you should check out our &lt;a href="https://blog.joinmastodon.org/2025/07/mastodon-4-4-for-devs/"&gt;Mastodon 4.4 for Developers&lt;/a&gt; post, for all the additions and changes in the Mastodon API. 🛠&lt;/p&gt;
&lt;h2 id="profiles-and-managing-your-network"&gt;Profiles, and managing your network&lt;/h2&gt;
&lt;p&gt;Your profile is the main way that people find out more about you on Mastodon, and we want to make it easier to navigate it and highlight what you’re about.&lt;/p&gt;
&lt;p&gt;&lt;video src="profile.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Do you post all of your cat pictures under #CatsOfMastodon? Simply tap “Feature on my profile” on the hashtag page, and people will be able to browse all of your #CatsOfMastodon posts specifically from the new “Featured” tab on your profile. Do you want to promote cool and interesting accounts? Tap “Feature on my profile” on a person’s profile, and they will likewise appear on your “Featured” tab.&lt;/p&gt;
&lt;p&gt;On Mastodon, you can pin up to 5 posts on your profile, so you can feature your best work, or plug your latest project. The downside is that if you wanted to see someone’s most recent post, it introduced a bit of scrolling to get there. No more! We’ve reduced the amount of scrolling you have to do, by combining all pinned posts in a single carousel at the top of the profile.&lt;/p&gt;
&lt;p&gt;To make it easier to see at a glance if the profile belongs to someone you might know, we’ve added a little widget showing how many of the people you follow are following that person to the top of their profile. This also shows up in the profile preview that appears when you hover over their name somewhere else. Don’t want someone to follow you anymore? You don’t have to block them, simply tap “Remove follower” in the dropdown menu on their profile.&lt;/p&gt;
&lt;h2 id="enhanced-list-management"&gt;Enhanced list management&lt;/h2&gt;
&lt;p&gt;Lists in Mastodon allow you to declutter your home feed by organising accounts you follow into arbitrary alternative feeds. Creating and managing lists has been significantly streamlined, and it’s easier than ever to add and remove accounts from your lists both directly from profiles and from your own follows and followers listings.&lt;/p&gt;
&lt;p&gt;&lt;video src="lists.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h2 id="media-controls"&gt;Media controls&lt;/h2&gt;
&lt;p&gt;Mastodon doesn’t just support pictures and videos—you can upload audio on the platform. Since every Mastodon profile comes with an RSS feed, some people actually publish their podcasts this way. We’ve just given our audio player a facelift, making it a bit more visually pleasant and a lot easier to use by putting the play and pause front and centre and adding quick shortcuts for skipping forward and backward. We’ve also expanded hotkey controls for audio and video: left and right arrow to skip around, up and down arrow to control the volume, “m” to mute, “f” for full screen, and so on.&lt;/p&gt;
&lt;p&gt;&lt;video src="media.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;If you like to pixel-peek images, or admire the pleasant grain of scanned in analogue photos, we’ve made zooming in more intuitive: simply double tap the image once you’ve clicked to open it. Panning around has also been made smoother. On touch devices, you can now pinch the image with your fingers to zoom it to the desired level, and swiping up when the image is zoomed out will close it, like you would expect from your native photo app.&lt;/p&gt;
&lt;p&gt;We are proud of Mastodon’s strong accessibility and inclusivity culture, which has fostered a larger presence of vision impaired users. To support this community, we’ve added a new reminder to add alt text when posting images or video. Alt text isn’t just helpful to those who use screen readers: it can provide extra context to sighted users, and as it’s indexed in Mastodon’s search system, it can help you and others find your post better. Of course, this reminder can be disabled from preferences. We’ve also added some tips on writing good alt text into the user interface.&lt;/p&gt;
&lt;h2 id="navigation-enhancements"&gt;Navigation enhancements&lt;/h2&gt;
&lt;p&gt;We’ve revamped the mobile web interface to mimic native apps, with important actions easily accessible in a bottom toolbar that frees up more space for your timeline. We’ve also begun experimenting with ways to make navigation more consistent across devices, and to make relevant content (like followed hashtags and trending content) more easily discoverable. The Explore item has been renamed to Trending, to reduce the need for banners within the Explore page to explain each feed. The navigation sidebar is divided into three sections. At the top is a section for the main navigation areas, which mirrors the bottom navigation bar on smaller screens. Next, a “Library” section, which contains your own curated content - bookmarks, favourites, and lists, and your followed hashtags, now in a more visible location (in response to community feedback). Finally, other elements are in the last section. This brings all the navigation elements into a single place.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2025/07/mastodon-4.4/nav-demo.png" alt="navigation demo"&gt;&lt;/p&gt;
&lt;p&gt;We’ve also streamlined the onboarding flow for new users. What used to be a list of four items you could check off as part of onboarding, has become a simpler two-step process where you first fill out your profile, and then follow a few users of your choosing. Importantly, we’ve made search an integral part of this process so people don’t feel confined to the list of recommended accounts we’ve generated for them, but can feel free to immediately begin searching for people they might know.&lt;/p&gt;
&lt;h2 id="features-for-administrators"&gt;Features for Administrators&lt;/h2&gt;
&lt;p&gt;We’ve made a range of updates and improvements for people who operate their own Mastodon servers. Some of these are &lt;a href="https://blog.joinmastodon.org/2025/05/legal-features-updates/"&gt;legal compliance features&lt;/a&gt;, such as adding and managing Terms of Service, offering translations of server rules into different languages, and optionally setting a minimum age requirement for new user sign-ups. Our earlier blog post covers each of these topics in more detail.&lt;/p&gt;
&lt;p&gt;As well as the legal features, there are a couple of other useful items that administrators should look at. Server owners can now send important announcements to all users via email, for critical communications that cannot be opted out of (essential for emergency notifications, or major policy changes). There is also a new system for moderators to keep internal notes about moderation decisions and user interactions. This should help to improve coordination across moderation teams, and help to keep track of decision making.&lt;/p&gt;
&lt;h2 id="quote-posts-part-one"&gt;Quote Posts (part one)&lt;/h2&gt;
&lt;p&gt;Earlier in the year, we shared our thought process about &lt;a href="https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/"&gt;bringing the much-requested Quote Posts feature to Mastodon&lt;/a&gt;. We’ve worked hard on bringing this capability to the platform while maintaining the strong safety principles that Mastodon is known for. Since Mastodon runs on over 8,000 independent servers that together form the platform you know, releasing features like this requires a two-pronged approach: first we release code that supports processing and displaying this new format, and then release code that allows our users to actively use the feature. This ensures all of our users can see this new type of content before anyone can create it. As part of our 4.4 release, you will be able to see quotes from compatible Fediverse platforms (including future Mastodon releases), but you will not yet be able to quote posts yourself. That capability will come in 4.5.&lt;/p&gt;
&lt;h2 id="looking-ahead"&gt;Looking ahead&lt;/h2&gt;
&lt;p&gt;We’re really happy that this is the first version released by &lt;a href="https://blog.joinmastodon.org/2025/05/evolving-the-team/"&gt;our expanded team&lt;/a&gt; as a whole! We have some exciting plans, and will get moving towards version 4.5 right away.&lt;/p&gt;
&lt;p&gt;Key items for the next few months include: enabling anyone to create Quote Posts; some new features for organisations that run their own servers (for example, greater instance customisation); and, the ability to fetch replies to posts from many different instances, to improve the ability to follow conversations that include people your server is not yet aware of.&lt;/p&gt;
&lt;p&gt;We plan to have 4.5 ready for everyone later in the year, and we have a lot of other exciting things to work on once the next release is ready. Stay tuned!&lt;/p&gt;
&lt;h2 id="support-mastodon"&gt;Support Mastodon&lt;/h2&gt;
&lt;p&gt;Thank you to everyone that contributed to this release, including our team, our community, and the many contributors from across the Fediverse. We’re excited to continue building Mastodon together with you.&lt;/p&gt;
&lt;p&gt;We’re going through a formal process of &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;setting up a new European non-profit organisation&lt;/a&gt; so that Mastodon remains free, open, and not owned by any single individual (more updates on our progress, very soon). &lt;strong&gt;We depend on your support&lt;/strong&gt; as we build, support, and advocate for decentralised and non-commercial social media.&lt;/p&gt;
&lt;p&gt;We don’t take venture capital, we don’t sell ads, and we don’t sell your data - unlike many other platforms out there. &lt;strong&gt;Please support our mission&lt;/strong&gt;, so that we can continue to make Mastodon better.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 4.4 for Developers</title><link>https://blog.joinmastodon.org/2025/07/mastodon-4-4-for-devs/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/07/mastodon-4-4-for-devs/</guid><description>&lt;p&gt;Mastodon 4.4 is just around the corner: the &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0-rc.1"&gt;release candidate is now available&lt;/a&gt;, and the final release should be coming along very soon. Just before the final version arrives, we wanted to shine a spotlight on some of the new features and changes that will be particularly important to anyone building apps or integrations.&lt;/p&gt;
&lt;p&gt;As a reminder, we also share a monthly engineering update (our &lt;a href="https://blog.joinmastodon.org/categories/trunk-and-tidbits/"&gt;Trunk and Tidbits&lt;/a&gt; series) and if you’ve been following those, some of these changes may already be familiar. You’ll see below that there are a lot of useful new additions that have arrived during this development cycle.&lt;/p&gt;
&lt;p&gt;We’ve divided this post into two broad sections: updates that are likely to be most relevant for developers of client applications, and updates that are more applicable to the broader Fediverse, other integrations, or contributors to Mastodon itself. Let’s dive in.&lt;/p&gt;
&lt;h2 id="client-apps"&gt;Client apps&lt;/h2&gt;
&lt;h3 id="quote-posts"&gt;Quote Posts&lt;/h3&gt;
&lt;p&gt;We wrote about &lt;a href="https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/"&gt;our approach to implementing Quote Posts&lt;/a&gt; earlier in the year. Mastodon 4.4 brings the first element of this implementation - support for verifying and displaying remote quote posts that conform to &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;FEP-044f&lt;/a&gt;, a &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main"&gt;Fediverse Enhancement Proposal&lt;/a&gt; we shared with the broader developer community.&lt;/p&gt;
&lt;p&gt;In practical terms, this means that incoming quote posts can now be displayed in the web UI. We expect to update our own mobile apps to display quote posts in the coming months. Being quoted and quoting other people is not implemented yet (this is coming in Mastodon 4.5).&lt;/p&gt;
&lt;p&gt;In the REST API, quote posts are represented by a new &lt;code&gt;quote&lt;/code&gt; attribute on &lt;a href="https://docs.joinmastodon.org/entities/Status/#quote"&gt;Status&lt;/a&gt; and &lt;a href="https://docs.joinmastodon.org/entities/StatusEdit/#quote"&gt;StatusEdit&lt;/a&gt; entities.&lt;/p&gt;
&lt;p&gt;The special CSS class &lt;code&gt;quote-inline&lt;/code&gt; is used to represent backward-compatible information that is redundant with the display of quote posts, and can be safely hidden by clients which display quote posts. &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#backward-compatibility-considerations"&gt;Read more about this in the FEP&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="authentication-changes"&gt;Authentication changes&lt;/h3&gt;
&lt;p&gt;There have been a number of improvements to the security (authentication and authorization) model in version 4.4.&lt;/p&gt;
&lt;p&gt;The older (and much less-secure) OAuth password grant type was removed during this development cycle. There was also a fix for &lt;a href="https://www.rfc-editor.org/rfc/rfc6749.html#section-2.3"&gt;OAuth Client Auth&lt;/a&gt; with HTTP Basic Auth with SSO (&lt;a href="https://github.com/mastodon/mastodon/pull/34501"&gt;#34501&lt;/a&gt;), and a fix to prevent user tokens being used on the account creation API (&lt;a href="https://github.com/mastodon/mastodon/pull/34828"&gt;#34828&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;There is a new &lt;a href="https://docs.joinmastodon.org/methods/oauth/#userinfo"&gt;userinfo endpoint&lt;/a&gt; for retrieving OpenID Connect claims. Note: Mastodon is not an OpenID Provider, but we are providing a standard userinfo endpoint when using the &lt;code&gt;profile&lt;/code&gt; scope.&lt;/p&gt;
&lt;p&gt;We strongly recommend that developers make use of the &lt;code&gt;/.well-known/oauth-authorization-server&lt;/code&gt; &lt;a href="https://docs.joinmastodon.org/spec/oauth/#authorization-server-metadata"&gt;metadata endpoint&lt;/a&gt;, available since Mastodon 4.3, to discover how the server is configured.&lt;/p&gt;
&lt;p&gt;Many thanks to &lt;a href="https://hachyderm.io/@ThisIsMissEm"&gt;Emelia&lt;/a&gt; for continuing to help us improve these security features in Mastodon.&lt;/p&gt;
&lt;h3 id="account-management"&gt;Account management&lt;/h3&gt;
&lt;p&gt;Version 4.4 brings some updates to the featured content tab on user profiles on the web. There are related new REST API endpoints for managing that content:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add and manage &lt;a href="https://docs.joinmastodon.org/methods/accounts/#endorsements"&gt;endorsed accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add and manage &lt;a href="https://docs.joinmastodon.org/methods/tags/#feature"&gt;featured hashtags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also now an API for managing attribution domains for shared links, via the &lt;code&gt;accounts/update_credentials&lt;/code&gt; &lt;a href="https://docs.joinmastodon.org/methods/accounts/#update_credentials"&gt;endpoint&lt;/a&gt; (thanks &lt;a href="https://github.com/c960657"&gt;@c960657&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id="media"&gt;Media&lt;/h3&gt;
&lt;p&gt;There’s a new filter action to blur media (&lt;a href="https://docs.joinmastodon.org/entities/Filter/#filter_action"&gt;filter_action: blur attribute&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;There are new APIs for &lt;a href="https://docs.joinmastodon.org/methods/media/#delete"&gt;deleting media attachments that are not in use&lt;/a&gt;, and also for &lt;a href="https://docs.joinmastodon.org/methods/statuses/#delete"&gt;deleting associated media when deleting a status&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is now possible to query the instance metadata endpoint for the &lt;a href="https://docs.joinmastodon.org/entities/Instance/#description_limit"&gt;configured length for media descriptions&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="server-rules-and-terms-of-service"&gt;Server Rules and Terms of Service&lt;/h3&gt;
&lt;p&gt;We recently shared some changes that are being implemented to &lt;a href="https://blog.joinmastodon.org/2025/05/legal-features-updates/"&gt;provide additional legal features&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From an API perspective, there are several changes here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;About, Privacy Policy and Terms of Service URLs are now returned via &lt;code&gt;/api/v2/instance&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rule entities &lt;a href="https://docs.joinmastodon.org/entities/Rule/#translations"&gt;now have a new translations attribute&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Servers with a reason required with a reason required for registration &lt;a href="https://docs.joinmastodon.org/entities/Instance/#registrations-reason_required"&gt;now return this in their instance metadata&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://github.com/mastodon/mastodon/discussions/34495"&gt;breaking change in the sign-up API&lt;/a&gt; which enables the addition of an age check for new users. Server administrators now have a setting to set a minimum age requirement when creating a new server, asking users for their date of birth. The date of birth is checked against the minimum age requirement server-side, but not stored. If you are building a client app that supports account creation, you should be aware of this change and ensure that your app handles the date of birth field correctly.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registrations.min_age&lt;/code&gt; has been &lt;a href="https://docs.joinmastodon.org/entities/Instance/#registrations-min_age"&gt;added to the Instance entity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;date_of_birth&lt;/code&gt; parameter has been added to the &lt;a href="https://docs.joinmastodon.org/methods/accounts/#create"&gt;account creation API&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="miscellaneous-api-updates"&gt;Miscellaneous API updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Deprecated API endpoints &lt;a href="https://docs.joinmastodon.org/api/guidelines/#deprecations"&gt;now have &lt;code&gt;Deprecated&lt;/code&gt; headers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It is now possible to access &lt;code&gt;/api/v2/instance&lt;/code&gt; without authentication if limited federation mode is enabled.&lt;/li&gt;
&lt;li&gt;Favorite and boost counts will now match those provided by the remote server, if available.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fediverse-ecosystem"&gt;Fediverse ecosystem&lt;/h2&gt;
&lt;p&gt;We have also been working on improvements to how Mastodon interoperates and interacts with the rest of the Fediverse. Here are a couple of the most important things you should know about.&lt;/p&gt;
&lt;h3 id="http-signatures"&gt;HTTP Signatures&lt;/h3&gt;
&lt;p&gt;We’ve added experimental support for receiving HTTP Message Signatures (&lt;a href="https://www.rfc-editor.org/rfc/rfc9421"&gt;RFC9421&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;For now, this needs to be explicitly enabled through the &lt;code&gt;http_message_signatures&lt;/code&gt; feature flag (&lt;code&gt;EXPERIMENTAL_FEATURES=http_message_signatures&lt;/code&gt;). This currently only covers verifying such signatures (inbound HTTP requests), not issuing them (outbound HTTP requests).&lt;/p&gt;
&lt;h3 id="fediverse-auxiliary-service-providers"&gt;Fediverse Auxiliary Service Providers&lt;/h3&gt;
&lt;p&gt;We’re working on providing more useful services to the Fediverse as a whole, beyond just Mastodon. You can read the &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;Fediverse Auxiliary Service Provider specification&lt;/a&gt; on GitHub. We’re excited about the idea of shared, decentralised services that expand the scope of individual servers, help to balance the load between groups of instances, and provide augmented capabilities across diverse platforms. For example, there could be FASP implementations that provide link preview generation, anti-spam services, or improved search and discovery. None of these are limited to supporting Mastodon, so they offer some interesting possibilities for greater collaboration between different Fediverse software implementations. Curious to learn more? Take a look at &lt;a href="https://video.fosdem.org/2025/ud2208/fosdem-2025-4531-fediscovery-improving-search-and-discovery-on-the-fediverse.av1.webm"&gt;this session from FOSDEM 2025&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In version 4.4, we’ve enabled initial support for FASPs in Mastodon, via the &lt;code&gt;fasp&lt;/code&gt; feature flag. This is mostly of interest to developers who would like to implement their own FASP. In this initial step, it also includes the capability to share data with a discovery provider and use discovery providers to discover accounts through search and follow recommendations(see &lt;a href="https://www.fediscovery.org/"&gt;https://www.fediscovery.org&lt;/a&gt;). Let us know if you’re interested in trying out our existing discovery provider, or if you plan to work on additional FASP ideas.&lt;/p&gt;
&lt;h3 id="contributing-features-to-mastodon"&gt;Contributing features to Mastodon&lt;/h3&gt;
&lt;p&gt;One more interesting update, is for developers who wish to contribute to the Mastodon core code. We now have a simple feature flag system, configured via the &lt;code&gt;EXPERIMENTAL_FEATURES&lt;/code&gt; environment variable. This supports a comma-separated list of feature flags for configuring experimental features. In version 4.4, the supported feature flags are &lt;code&gt;fasp&lt;/code&gt; and &lt;code&gt;http_message_signatures&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the future, if you want to contribute a significant new feature, then you may wish to discuss with the team to potentially have it behind an experimental feature flag. There&amp;rsquo;s no specific requirement for new features to be marked as experimental, but it can be useful to have a way to selectively test, before they are fully integrated into the core codebase. This sets a foundation for doing so in the future.&lt;/p&gt;
&lt;h2 id="thanks-for-building-on-mastodon"&gt;Thanks for building on Mastodon!&lt;/h2&gt;
&lt;p&gt;We love to see all of the great apps and creative integrations that developers build on Mastodon and contribute to the Fediverse! Take a look at the &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0-rc.1"&gt;changelog for 4.4&lt;/a&gt; for full details of all the updates - it also includes links to relevant issues, pull requests with commits, and documentation.&lt;/p&gt;</description></item><item><title>Mastodon is a digital public good</title><link>https://blog.joinmastodon.org/2025/06/mastodon-dpga/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/06/mastodon-dpga/</guid><description>&lt;p&gt;This week is UN Open Source Week, and we&amp;rsquo;re happy to share that today, &lt;a href="https://www.digitalpublicgoods.net/r/mastodon"&gt;Mastodon&lt;/a&gt; was added to the Digital Public Goods Alliance’s &lt;a href="http://digitalpublicgoods.net/registry/"&gt;DPG Registry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A goal of the DPGA is to promote digital public goods in order to create a more equitable world. Being recognised as a DPG increases the visibility, support for, and prominence of open projects that have the potential to tackle global challenges. To become a digital public good, all projects are required to meet the &lt;a href="http://digitalpublicgoods.net/standard/"&gt;DPG Standard&lt;/a&gt; to ensure that they truly encapsulate open-source principles and what it means to be a digital public good.&lt;/p&gt;
&lt;p&gt;Digital public goods are defined as open source software, open standards, open data, open AI systems, and open content collections that adhere to privacy and other applicable best practices, do no harm, and are of high relevance for attainment of the United Nations 2030 &lt;a href="https://sdgs.un.org/goals"&gt;Sustainable Development Goals&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mastodon’s mission is to ensure that our online social spaces belong to the people forever, and provide a safe place for public discourse. Our vision is an open and safe social internet that encourages everyone to connect, create, feel welcome and be free to dream. We are part of the Fediverse, built on common shared standards, and an important element of digital public infrastructure (DPI). As concerns continue over the centralising power of legacy Big Tech platforms, Mastodon’s status as a recognised digital public good underscores the crucial role our project and software play in fostering democratic online spaces across the web.&lt;/p&gt;
&lt;p&gt;You can follow the Digital Public Goods Alliance on Mastodon at &lt;a href="https://mastodon.social/@DPGAlliance"&gt;@DPGAlliance@mastodon.social&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For any enquiry regarding this announcement, please contact &lt;a href="mailto:press@joinmastodon.org"&gt;press@joinmastodon.org&lt;/a&gt;. For more information on the Digital Public Goods Alliance please reach out to &lt;a href="mailto:hello@digitalpublicgoods.net"&gt;hello@digitalpublicgoods.net&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mastodon in 2025</title><link>https://blog.joinmastodon.org/2025/06/mastodon-2025/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/06/mastodon-2025/</guid><description>&lt;p&gt;We’re already well into 2025, and it has been a huge start to the year for Mastodon. We want to bring you an overdue update on exactly what we’re working on, from a strategic perspective.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mastodon’s mission is to ensure that our online social spaces belong to the people forever, and provide a safe place for public discourse.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In February, a few members of the team met in person to discuss next steps. Here are the three priorities we set for this year.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restructure the organisation&lt;/li&gt;
&lt;li&gt;Grow the user base&lt;/li&gt;
&lt;li&gt;Reach financial sustainability&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="restructuring"&gt;Restructuring&lt;/h2&gt;
&lt;p&gt;In January, we shared &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;a bold announcement&lt;/a&gt;: Mastodon must never be owned by a single individual, and serves the community. To that end, we said that we are going to create a new non-profit organisation based in Europe, to own the Mastodon assets; and, that we will be reorganising our team. We’re not yet fully through this process, and this remains a core goal and activity for 2025. There will be more news to share on this topic very soon.&lt;/p&gt;
&lt;p&gt;Related to the organisational changes, we have &lt;a href="https://blog.joinmastodon.org/2025/05/evolving-the-team/"&gt;grown the team&lt;/a&gt; over the past year, reflecting the broader range of conversations that have been going on around the project. We also assessed and improved contracts for as many of the team as possible, within budget constraints.&lt;/p&gt;
&lt;h2 id="growth"&gt;Growth&lt;/h2&gt;
&lt;p&gt;Another element to our strategy is to grow the number of users of the Mastodon network (and the Fediverse as a whole). Mastodon has always been about more than growth itself - we want to build better social spaces for people, and help people to leave legacy platforms. All of that remains true: this is a plan to work towards growth that aligns with our values.&lt;/p&gt;
&lt;p&gt;We’re thinking about this in three main ways: user growth, institutional growth, and ecosystem growth.&lt;/p&gt;
&lt;p&gt;There’s an element here of how we’re building and adding features to Mastodon, to make it more approachable and useful to more people - to that end, we’ve got new members of the team focused on user interfaces, user experience and design. We also plan to work on features that we’ve heard organisations ask us about, such as greater customisation for their instances. Finally, we’ve greatly increased our presence at community events and conferences, to talk about the broader Fediverse story.&lt;/p&gt;
&lt;h2 id="sustainability"&gt;Sustainability&lt;/h2&gt;
&lt;p&gt;Over the past few years, we’ve &lt;a href="https://blog.joinmastodon.org/2024/12/annual-report-2023/"&gt;shared annual reports&lt;/a&gt; that describe where our funding comes from: donations largely from individual / grass roots supporters (currently starting at &lt;a href="https://www.patreon.com/mastodon"&gt;$8 per month on Patreon&lt;/a&gt;), with an occasional substantial gift from an organisation or individual; and, some grants from EU programmes and institutions. We’ve always relied on these to sustain our small core team.&lt;/p&gt;
&lt;p&gt;In 2024, we were able to provide commercial services for the first time, by hosting the &lt;a href="https://ec.social-network.europa.eu/@EUCommission"&gt;European Commission’s Mastodon instance&lt;/a&gt;, and by signing a support contract with the German federal state of &lt;a href="https://social.schleswig-holstein.de/@landesregierung"&gt;Schleswig-Holstein&lt;/a&gt;. 2024 was also the first year we were able to raise donations from wealthy individuals, which gave us more financial freedom to make large changes to the organisation.&lt;/p&gt;
&lt;p&gt;A diverse range of incomes is great, because it reduces the risk of being dependent on a single source. We intend to build on the regular income channels, and in 2025, we will be offering additional services. We’ll be sharing more about these commercial offerings, as well as the restructuring, in the coming weeks.&lt;/p&gt;
&lt;p&gt;We will continue to rely on and appreciate your donations and support as we move forward.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, May 2025</title><link>https://blog.joinmastodon.org/2025/06/trunk-tidbits-may-2025/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/06/trunk-tidbits-may-2025/</guid><description>&lt;p&gt;Hello again! Thank you for reading our monthly engineering team update, we’re happy to share what we’ve been working on.&lt;/p&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;We had a busy May, with several events that we participated in, or organized. The biggest one was re:publica in Berlin, where several members of the Mastodon team were able to meet with the community, talk about the project, and share our plans for the future.&lt;/p&gt;
&lt;p&gt;In particular, the team hosted a community meetup at the Wikimedia offices, to discuss the latest developments in Mastodon. At re:publica itself, &lt;a href="https://mastodon.social/@philipkristians"&gt;Philip&lt;/a&gt; was on stage &lt;a href="https://www.youtube.com/watch?v=URmr3HcQgFI"&gt;for a conversation about Mastodon&lt;/a&gt; as open infrastructure, and &lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; joined &lt;a href="https://www.youtube.com/watch?v=6ceMDPJBqHE"&gt;a discussion about large scale adoption&lt;/a&gt; of independent social media platforms.&lt;/p&gt;
&lt;p&gt;There is a range of very active conversations about the Fediverse happening right now, particularly (but not exclusively) in Europe, and we are grateful to be taking part in them.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;At the very beginning of May (just before last month&amp;rsquo;s blog post) we released Mastodon versions &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.8"&gt;4.3.8&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.21"&gt;4.2.21&lt;/a&gt; - hopefully you&amp;rsquo;ll already have updated to one of these stable versions.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve now released the &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0-beta.1"&gt;first beta&lt;/a&gt; of Mastodon 4.4.0.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/114625074809479231/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/114625074809479231" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;The plan is to release a second beta in the next few days, with a release candidate to follow. We hope to make the final release by the end of June.&lt;/p&gt;
&lt;p&gt;There are a lot of great new features in this release, so take a look at the &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.4.0-beta.1"&gt;release notes&lt;/a&gt;. We will be sharing more details for developers and for users in the coming weeks as we get towards the final release.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and web&lt;/h2&gt;
&lt;p&gt;In May, we reviewed and merged 180 Pull Requests (114 with translation and dependency updates removed) from 17 contributors.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 New pinned / featured content design for user profiles, with carousel. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34858"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34858&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34754"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34754&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 New Followers you know widget, and relationship info on hover cards. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34652"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34652&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34792"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34792&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34769"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34769&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Server owners can now set whether a Referer header should be set &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34731"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34731&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;Multiple compatibility updates ahead of 4.4 beta release:
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Bumped minimum Redis version to 6.2 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30413"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30413&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 Also dropped Redis namespace support. See &lt;a href="https://github.com/mastodon/redis_namespace_migration"&gt;the migration details&lt;/a&gt; if your instance is using Redis namespaces. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34581"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34581&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34664"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34664&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34665"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34665&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Update to Sidekiq 7 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34745"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34745&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Drop support for PostgreSQL 12 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34744"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34744&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Update rack to version 3 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34816"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34816&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Change minimum Node.js version to Node 20 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34390"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34390&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;devops&lt;/span&gt;
 Libvips is now the default image processing library. ImageMagick support is deprecated,and will be removed in a future version. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34741"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34741&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Major migration from Webpack to Vite &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34469"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34469&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34454"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34454&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34450"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34450&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new-feature&lt;/span&gt;
 Add initial support for sharing data with Fediverse Auxiliary Service Providers (i.e. &lt;a href="https://fediscovery.org"&gt;Fediscovery&lt;/a&gt;) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34415"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34415&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Legal feature updates as described in a &lt;a href="https://blog.joinmastodon.org/2025/05/legal-features-updates/"&gt;recent blog post&lt;/a&gt; - ability to set Terms of Service, create rule translations, and set age requirements. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34527"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34527&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34494"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34494&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-stone-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;backend&lt;/span&gt;
 Support for displaying incoming quote posts based on &lt;a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md"&gt;FEP-044f&lt;/a&gt; &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34584"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34584&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34773"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34773&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34772"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34772&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34771"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34771&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34738"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34738&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/diondiondion" class="underline"&gt;diondiondion&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Refreshed audio player design for the web UI &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34520"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34520&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;No significant updates shipped in May.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;On iOS, work continues on overhauling the basic post layout (currently only available to beta testers). A few smaller fixes will likely be coming soon.&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;We implemented the &lt;code&gt;follow_recommendation&lt;/code&gt; capability in our discovery provider reference implementation, &lt;a href="https://github.com/mastodon/fediscoverer"&gt;fediscoverer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In May, work began to get fediscoverer closer to production readiness. There is still a way to go, but we are making steady progress.&lt;/p&gt;
&lt;h2 id="community-news"&gt;Community news&lt;/h2&gt;
&lt;p&gt;We are always happy to see the community building on Mastodon, and this month we have a few interesting tidbits to share:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tomkahe.com/@tom"&gt;Tom Casavant&lt;/a&gt; shared a &lt;a href="https://tomcasavant.com/i-posted-to-mastodon-1-mile-away-from-an-internet-connection/"&gt;post about using Meshtastic to post to Mastodon&lt;/a&gt; from over a mile away!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reddit.com/r/Mastodon/comments/1kikrlx/oliphaunt_a_native_macos_app_for_mastodon_now_on/"&gt;Oliphaunt&lt;/a&gt; is a native macOS app for Mastodon that can be tried via TestFlight.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://splinter.hastily.cc/"&gt;Splinter&lt;/a&gt; is a tool for Mastodon threads - it turns long articles into threads and posts them for you automatically.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.sdf.org/@beejjorgensen"&gt;Beej&lt;/a&gt; shared a &lt;a href="https://beej.us/blog/data/mastodon-comments/"&gt;blog post with a method for using Mastodon to add comments to a static blog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tzovar.as/masto2rss/"&gt;Masto2RSS&lt;/a&gt; creates RSS feeds containing links shared on Mastodon timelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="thank-you---and-we-need-your-help"&gt;Thank you - and, we need your help&lt;/h2&gt;
&lt;p&gt;If you appreciate the work we do, and want to support the project, consider becoming a patron or making a donation. We are a non-profit organisation, and we rely on your contributions. The team is grateful for your support.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Updating some legal features</title><link>https://blog.joinmastodon.org/2025/05/legal-features-updates/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/05/legal-features-updates/</guid><description>&lt;p&gt;Mastodon’s core purpose is to connect you with your friends and communities, to have conversations that matter to you.&lt;/p&gt;
&lt;p&gt;Communities need some ground rules; and, on the internet, we also need to be aware of any regulations that are relevant where our services are being operated. In the upcoming release of Mastodon (version 4.4), there are three key updates to our legal features that support server administrators in meeting these requirements.&lt;/p&gt;
&lt;h2 id="terms-of-service"&gt;Terms of Service&lt;/h2&gt;
&lt;p&gt;Mastodon servers already have &lt;em&gt;Server Rules&lt;/em&gt; and a &lt;em&gt;Privacy Policy&lt;/em&gt;, that owners need to define when they create their instance. There will also now be an optional &lt;em&gt;Terms of Service&lt;/em&gt;. To help you get started, in the future (post-4.4 final release) we will be providing a generator for the Terms of Service. The effective change date of the Terms of Service will be included, to allow users to review them before taking any action.&lt;/p&gt;
&lt;p&gt;If you operate a Mastodon instance, you should decide whether you need a Terms of Service - it &lt;em&gt;may&lt;/em&gt; not apply if you run a single-user instance where you are the only user, for example. If you do need one, you should look through the text that is provided by the generator, and decide whether this is appropriate for your server and jurisdiction (i.e. for the laws of the country where your server is located).&lt;/p&gt;
&lt;p&gt;On the client side, there is &lt;a href="https://docs.joinmastodon.org/methods/instance/#terms_of_service"&gt;a new API for developers to fetch and display a server’s Terms of Service&lt;/a&gt; (including versions and effective dates) inside their apps. We’ve also enhanced the &lt;a href="https://docs.joinmastodon.org/entities/Instance/#terms_of_service"&gt;information provided in the instance data&lt;/a&gt;, to provide the URLs for the Terms of Service and Privacy Policy.&lt;/p&gt;
&lt;h2 id="server-rules-translations"&gt;Server rules translations&lt;/h2&gt;
&lt;p&gt;We’re providing the ability for server rules to be translated into multiple languages. This means that the rules which apply to everyone that uses your Mastodon instance, will now be able to be read in different languages, as appropriate for your community.&lt;/p&gt;
&lt;p&gt;Administrators will now be able to optionally provide translations for each rule in the server settings. If no translated version is provided for a given language, the default text for that rule will be used instead.&lt;/p&gt;
&lt;p&gt;The API has been &lt;a href="https://docs.joinmastodon.org/entities/Rule/#translations"&gt;updated&lt;/a&gt; in version 4.4, and rules will now be returned with translations where these apply. Developers will need to update their apps to use translations where available (our own apps will be updated soon).&lt;/p&gt;
&lt;h2 id="setting-age-requirements"&gt;Setting age requirements&lt;/h2&gt;
&lt;p&gt;We are introducing a new option for server administrators to set a minimum age requirement for user sign-up. When the option is enabled, the Mastodon instance will require a date of birth to be provided when a new account is created. This value will be validated against the minimum age setting, and then discarded.&lt;/p&gt;
&lt;p&gt;It is important to note that Mastodon is not implementing age verification. This minimum age check data is not being stored. The feature only enables administrators to specify a baseline age requirement for new accounts on their servers, potentially to comply with local laws, or per their own preferred operating processes.&lt;/p&gt;
&lt;p&gt;There’s a change to the sign-up API to support this new feature (previously announced &lt;a href="https://github.com/mastodon/mastodon/discussions/34495"&gt;here&lt;/a&gt;). Our own mobile apps already support servers that have a minimum age specified.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The two Mastodon servers that we operate (mastodon.social and mastodon.online) run preview nightly releases of the next version, and we’ve started to enable these features there already.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you have an account on one of these servers, you will receive an email in the coming weeks notifying you about the new Terms of Service. We plan to publish these by 9th June 2025, with at least 30 days from the date of publication before they become effective.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Note:&lt;/em&gt; as at 20th June 2025 this process is on hold, as we are revising the Terms of Service text. We will update this post when we have a new date for publication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rules translations into a number of major languages have been added to these servers.&lt;/li&gt;
&lt;li&gt;An age requirement on sign-up (with a minimum age of 16) for these servers is enabled from today, 23rd May 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A beta release of Mastodon 4.4 will be available in the next couple of weeks, and we&amp;rsquo;ll be looking for feedback ahead of the final release. If you’re interested in testing the beta, please keep an eye on our &lt;a href="https://github.com/mastodon/mastodon"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you operate a Mastodon instance, we want to point out that there are some recent regulatory changes in different places around the world, that may affect your service depending on where you are located. We’re grateful to our friends at &lt;a href="https://about.iftas.org"&gt;IFTAS&lt;/a&gt; for sharing information on these changes - be sure to take a look at &lt;a href="https://connect.iftas.org/library/legal-regulatory/"&gt;their resources&lt;/a&gt; if you need some guidance around these.&lt;/p&gt;
&lt;p&gt;Finally, and very importantly - we want to thank you, for being a part of the Mastodon community. Unlike the legacy centralised networks, Mastodon is not “one size fits all”. It is important that there are many different Mastodon servers, reflecting the diverse groups and cultures around the world. We appreciate your support.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, April 2025</title><link>https://blog.joinmastodon.org/2025/05/trunk-tidbits-april-2025/</link><pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/05/trunk-tidbits-april-2025/</guid><description>&lt;p&gt;This edition of Trunk &amp;amp; Tidbits marks the one year anniversary of our monthly development updates 🎉&lt;/p&gt;
&lt;p&gt;Back at the beginning of 2024, we discussed how regular communication needed to be a part of our team&amp;rsquo;s culture, as a commitment to the people who help to make Mastodon what it is - everyone that uses Mastodon daily, the administrators who run servers, the moderators that help to manage community discussions, and the people that &lt;a href="https://joinmastodon.org/sponsors#donate"&gt;donate&lt;/a&gt; to the project to help us to keep moving forward.&lt;/p&gt;
&lt;p&gt;We hope you&amp;rsquo;re finding the updates and behind-the-scenes insights useful. We&amp;rsquo;re interested in your feedback, so please let us know if you have any suggestions for future posts. We&amp;rsquo;re &lt;a href="https://mastodon.social/@MastodonEngineering"&gt;in the Fediverse&lt;/a&gt;, and should be easy to find&amp;hellip; 🙂&lt;/p&gt;
&lt;h2 id="team-news"&gt;Team news&lt;/h2&gt;
&lt;p&gt;Last week, we published a blog post &lt;a href="https://blog.joinmastodon.org/2025/05/evolving-the-team/"&gt;sharing an update on the team as a whole&lt;/a&gt;, particularly with some news about a change to our 501(c)(3) fundraising board, and some non-engineering roles.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@Mastodon/114433296016318962/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@Mastodon/114433296016318962" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @Mastodon@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;One new member of the team was not included in that post, as it was just before they started - we&amp;rsquo;re very happy to welcome &lt;a href="https://indieweb.social/@diondiondion"&gt;Dion&lt;/a&gt; to the core team this week, as our second full-time front-end developer.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not all about the code, so we&amp;rsquo;re also sharing what we&amp;rsquo;re doing to help the Fediverse, outside of the work in our repositories. Interest in independent, non-commercial social platforms continues to grow, and we&amp;rsquo;re working to share the message about Mastodon and the Fediverse with a wider audience.&lt;/p&gt;
&lt;p&gt;During April, members of the team were at the International Journalism Festival in Perugia, and also visited The Hague and Amsterdam, to meet with policymakers and media organizations. We&amp;rsquo;ve even &lt;a href="https://www.radioeins.de/programm/sendungen/der_schoene_morgen/_/global-solution-summit.html"&gt;been on the radio in Germany&lt;/a&gt; (well, &lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; was interviewed there!). You can also watch &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt;&amp;rsquo;s participation in a panel at Fediverse House from March, &lt;a href="https://flipboard.video/w/fr6Ajy9YxgmW3ZGdAycBca"&gt;on Flipboard&amp;rsquo;s PeerTube channel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In each Trunk &amp;amp; Tidbits post this year, we&amp;rsquo;ve mentioned some events that the team has been at. We want to share our future plans as well, and as an initial step, we&amp;rsquo;ve added a new section to the Discord server &lt;a href="https://www.patreon.com/mastodon"&gt;for our Patreon supporters&lt;/a&gt;. This lists upcoming events, as well as the people from the team who will be there. In the future, we&amp;rsquo;re planning to add some of this information on the main project website as well. We&amp;rsquo;re also going to be using &lt;a href="https://mastodon.social/@Mastodon"&gt;our main Mastodon account&lt;/a&gt;, posting on &lt;a href="https://www.linkedin.com/company/joinmastodon/"&gt;LinkedIn&lt;/a&gt;, and using other channels to share our plans and broaden the ways we reach people.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;There were no new releases of the Mastodon server code in April, but we just released &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.8"&gt;4.3.8&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.21"&gt;4.2.21&lt;/a&gt; as we rolled over into May. These contain a few small bug fixes, and a minor security fix. We encourage administrators to update to the most recent release for their instances.&lt;/p&gt;
&lt;p&gt;Last month, Mastodon 4.1.x reached the end of support. If you are running a version of Mastodon on the 4.1 series (or earlier), &lt;em&gt;please upgrade&lt;/em&gt;. We are unable to help you if you hit issues while running older releases of the code.&lt;/p&gt;
&lt;p&gt;Looking ahead to future releases, there are a couple of upcoming technical changes that administrators and developers should know about.&lt;/p&gt;
&lt;p&gt;Firstly, for administrators, &lt;a href="https://upp2.com/@dave"&gt;David&lt;/a&gt; has provided some &lt;a href="https://github.com/mastodon/mastodon/discussions/34198#discussioncomment-12992222"&gt;next steps towards the removal of Redis namespaces in version 4.4.0&lt;/a&gt;. This is a change that was mentioned in &lt;a href="https://blog.joinmastodon.org/2025/04/trunk-tidbits-march-2025/"&gt;the last Trunk &amp;amp; Tidbits post&lt;/a&gt;, and it will be a breaking change for some instances. If you are running a Redis server with multiple Mastodon instances, please take a look at the discussion on GitHub.&lt;/p&gt;
&lt;p&gt;The second change is that we&amp;rsquo;re moving to implement the final version of RFC9421 HTTP Signatures in Mastodon (originally mentioned &lt;a href="https://blog.joinmastodon.org/2025/02/trunk-tidbits-january-2025/"&gt;back in February&lt;/a&gt;) &lt;a href="https://oisaur.com/@renchap"&gt;Renaud&lt;/a&gt; has put out a &lt;a href="https://oisaur.com/@renchap/114455531480422517"&gt;call for feedback with other ActivityPub implementers&lt;/a&gt;. This is a change that will affect how Mastodon interacts with other ActivityPub servers, and we are looking to test with other developers in the community.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and web&lt;/h2&gt;
&lt;p&gt;The team is hard at work finishing the few items left before the first Mastodon 4.4 release. We are planning for the first beta version to be released later in May.&lt;/p&gt;
&lt;p&gt;In April, we reviewed and merged 142 Pull Requests (77 with translation and dependency updates removed) from 12 authors. Thank you to everyone who contributed to the project this month!&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added a dropdown menu to list of accounts with quick actions. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34391"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34391&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added a new “Featured” tab on profiles, to showcase featured posts (previously pinned posts), hashtags and accounts, and allow those to be featured or unfeatured from the web UI. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34405"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34405&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ChaosExAnima" class="underline"&gt;ChaosExAnima&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34490"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34490&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34568"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34568&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added a dropdown menu on hashtags to browse the posts for the hashtag or mute it directly. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34393"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34393&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added a way to remove a follower when browsing their profile (previously you could achieve this by blocking then unblocking them). &lt;a href="https://github.com/mastodon/mastodon/issues/34473"&gt;Issue #34473&lt;/a&gt; from &lt;a href="https://github.com/ThisIsMissEm"&gt;thisismissem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added support for incoming quote posts (ActivityPub + backend). &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34370"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34370&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34479"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34479&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;a href="https://github.com/mastodon/documentation/pull/1630"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Changed &lt;code&gt;DEFAULT_LOCALE&lt;/code&gt; setting to not override unauthenticated users&amp;rsquo; browser language, and introduce &lt;code&gt;FORCE_DEFAULT_LOCALE&lt;/code&gt; to restore this behaviour. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34535"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34535&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Updated account search to be more forgiving of spaces. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34455"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34455&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Added an API for fetching a user&amp;rsquo;s endorsed accounts. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34421"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34421&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;a href="https://github.com/mastodon/documentation/pull/1633"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;In April, there were two releases of the app, with mostly minor changes. The most noticeable update is that you can now see which post you&amp;rsquo;re replying to in the compose screen. Also, the top bar in the Explore tab now scrolls away. The other changes were fixes for some rare crashes.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;Release 2025.02 brought improvements to new account registration, including support for the new minimum age server option and a less aggressive field-invalidation marking experience. Also, several types of notifications that had not previously been visible in the app will now appear. Admins have the option to filter out the potentially high-volume admin notifications.&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;We published a first draft of the &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/pull/55"&gt;&lt;code&gt;follow_recommendation&lt;/code&gt;&lt;/a&gt; capability specification. This API allows personalized follow recommendations to be fetched from a discovery provider.&lt;/p&gt;
&lt;h2 id="around-the-community"&gt;Around the community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Discourse team &lt;a href="https://blog.discourse.org/2025/04/discourse-and-the-fediverse/"&gt;announced&lt;/a&gt; support for ActivityPub and the Fediverse. Welcome!&lt;/li&gt;
&lt;li&gt;Looking for a fun Mastodon web client with themes and animations? &lt;a href="https://antijingoist.itch.io/hai"&gt;Hai&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Some &lt;a href="https://github.com/ryanatkn/fuz_mastodon"&gt;Mastodon components for Svelte&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/redoracle/n8n-nodes-the-mastodon"&gt;Mastodon for n8n&lt;/a&gt; = Mastodon functionality for n8n, a workflow automation tool.&lt;/li&gt;
&lt;li&gt;We don&amp;rsquo;t have an algorithm, but some other people have built some. A new release of FediAlgo &lt;a href="https://universeodon.com/@cryptadamist/114395249311910522"&gt;was announced&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Built something cool on Mastodon? Let us know! We love to see what the community is building, and we want to share it with everyone.&lt;/p&gt;
&lt;h2 id="we-appreciate-you"&gt;We appreciate you&lt;/h2&gt;
&lt;p&gt;The team has evolved, and we&amp;rsquo;re working hard to make Mastodon even better for you. We can only do this with your help - we&amp;rsquo;re not taking venture capital, and we don&amp;rsquo;t have a big company behind us. We are a small team, and we need your help to keep going. If you like what we&amp;rsquo;re doing, please consider supporting us. Thank you to everyone who contributes to the project, and who uses Mastodon every day.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Evolving the Team</title><link>https://blog.joinmastodon.org/2025/05/evolving-the-team/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/05/evolving-the-team/</guid><description>&lt;p&gt;As Mastodon continues to evolve and grow, we’re excited to announce several changes to our team (and also, to offer a brief update on our restructuring).&lt;/p&gt;
&lt;h2 id="restructuring-progress"&gt;Restructuring Progress&lt;/h2&gt;
&lt;p&gt;We’re currently forming a new foundation in Europe as a new home for the project and its assets. The terms papers have been finalised, and the process is underway. We’ll have more concrete information to share in the near future, but for now, we wanted to provide a short update that the &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;transition we previously announced&lt;/a&gt; is happening.&lt;/p&gt;
&lt;h2 id="board-updates"&gt;Board Updates&lt;/h2&gt;
&lt;p&gt;Our U.S.-based &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/"&gt;501(c)(3) organization&lt;/a&gt; continues to serve as both a fundraising entity, and as a resource in sharing its board members’ advice and experience. We’re deeply grateful to &lt;a href="https://mastodon.social/@aghavi"&gt;Amir Ghavi&lt;/a&gt; for his legal guidance during our structural transition. With his formal support of this process, Amir has recently stepped down from his board responsibilities.&lt;/p&gt;
&lt;p&gt;We’re delighted to welcome &lt;a href="https://hachyderm.io/@haubles"&gt;Hannah Aubry&lt;/a&gt; as a new 501(c)(3) board member! Hannah was a great partner and champion of the project during her time running the Fast Forward program at Fastly, and as part of our outreach team. She brings her valuable experience in community, communications, and free and open-source software to share with our leadership team.&lt;/p&gt;
&lt;h2 id="recent-team-changes"&gt;Recent Team Changes&lt;/h2&gt;
&lt;p&gt;We’ve made some additions and change to the &lt;a href="https://joinmastodon.org/about#team"&gt;team&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you’ve been following our &lt;a href="https://blog.joinmastodon.org/categories/trunk-and-tidbits/"&gt;Trunk &amp;amp; Tidbits series&lt;/a&gt;, you will already know that &lt;a href="https://upp2.com/@dave"&gt;David&lt;/a&gt;, &lt;a href="https://mastodon.social/@whattherestimefor"&gt;Shannon&lt;/a&gt; and &lt;a href="https://tech.lgbt/@chaosexanima"&gt;Echo&lt;/a&gt; joined the core engineering team in the past year. We’re also very happy to share that &lt;a href="https://social.coop/@scottjenson"&gt;Scott Jenson&lt;/a&gt; has joined the organisation on a part-time basis, as Product Strategy Adviser. We have a couple of additional folks joining shortly, so watch this space.&lt;/p&gt;
&lt;p&gt;In addition, there are some updates to the operational side of the organisation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://macaw.social/@andypiper"&gt;Andy Piper&lt;/a&gt; is now Head of Communications. Andy was previously working to support our Developer Relations efforts on a freelance basis, and transitioned to lead communications across the project.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@philipkristians"&gt;Philip Schröpel&lt;/a&gt; has taken on the role of Chief of Staff. Philip joined the Mastodon team as a Finance Associate in 2024. He is now leading a range of projects across Mastodon’s operations and partnerships.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@zoraxzora"&gt;Zora Steiner&lt;/a&gt; is joining us on 2 May as a Junior Project Manager, to support the team with a wide range of projects within Business Operations, like fundraising, grant applications, marketing and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We’ll have more to share about specific roles on the team as the transition to the new structure is finalised.&lt;/p&gt;
&lt;h2 id="looking-ahead"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;These changes reflect a commitment to building a stable organisation while maintaining our core mission: creating tools and digital spaces for authentic, constructive online communities free from ads, data exploitation, and corporate monopolies.&lt;/p&gt;
&lt;p&gt;While the team has grown substantially over the past 2 to 3 years, we’re still a small team of 15 people (with only 3 part-time/freelance team members). That’s a big change considering less than 2 years ago, we were a team of just 3 full-time engineers - however, it also reflects the diverse range of tasks we’re working on. There is a lot more to the project than just the code!&lt;/p&gt;
&lt;p&gt;Mastodon has taken the strategic decision not to accept venture capital investments for growth, but rather &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;restructure&lt;/a&gt; to a European non-profit organisation. This means that we’re reliant on your support to build a team to work full-time on new product features, maintain mastodon.social and mastodon.online, and represent Mastodon and the broader Fediverse to policy makers and to media organisations. The elements of our mission related to an open internet, privacy, and data ownership are more important than ever.&lt;/p&gt;
&lt;p&gt;We’ll share more news on all of these topics - our restructuring, people, and mission - in the coming months. In the meantime, be sure to &lt;a href="https://mastodon.social/@Mastodon"&gt;follow us on Mastodon&lt;/a&gt;, where you’ll start to see us share a broader range of updates - including news about events we’re attending, and other initiatives.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, March 2025</title><link>https://blog.joinmastodon.org/2025/04/trunk-tidbits-march-2025/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/04/trunk-tidbits-march-2025/</guid><description>&lt;p&gt;Greetings! We&amp;rsquo;re back, with our monthly update from the Mastodon engineering team.&lt;/p&gt;
&lt;p&gt;Remember how last month was a bit lighter for news? Well, this time, we are making up for it and have a lot to share! Take a look below for team updates, some significant new features, and updates to the mobile apps. We also have very important information about changes with new (and old) software versions. Finally, there&amp;rsquo;s a bumper round-up of community news, and some fun projects you may have missed.&lt;/p&gt;
&lt;h2 id="events-and-team-news"&gt;Events and team news&lt;/h2&gt;
&lt;p&gt;We are very excited to welcome &lt;a href="https://tech.lgbt/@chaosexanima"&gt;Echo&lt;/a&gt; to the core team as a front-end developer. We extended our recruitment to include a second front-end developer, and found another great individual who will be joining us soon as well. Also on the team side, we opened &lt;a href="https://mastodon.social/@MastodonEngineering/114235500948298378"&gt;a role for a designer to join the team&lt;/a&gt;, after we said goodbye to Sam recently.&lt;/p&gt;
&lt;p&gt;In March, &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; was on stage at &lt;a href="https://about.flipboard.com/fediverse-house/"&gt;Fediverse House&lt;/a&gt;, a side event at SXSW run by our friends from Flipboard. This was a fun space which created opportunities to finally meet some of the members of our community in person (hi, &lt;a href="https://mastodon.social/@box464"&gt;@box464&lt;/a&gt;!) and to talk about Mastodon and the Fediverse. Andy was also a guest &lt;a href="https://write.firesidefedi.live/firesidefedi/fireside-fedi-episode-7-andy-piper-mastodon"&gt;on the Fireside Fedi podcast&lt;/a&gt;, which you can watch as a video, or listen to in audio. Members of the team took part in more panels and events in March - for example, &lt;a href="https://mastodon.social/@mellifluousbox"&gt;Felix&lt;/a&gt; was part of an &lt;a href="https://www.youtube.com/watch?v=GrqHEL8QbgI"&gt;EFF &amp;ldquo;Effecting Change&amp;rdquo; livestream&lt;/a&gt; that you can also check out. We aim to continue our outreach and communication over the coming months as the new organisation comes into focus.&lt;/p&gt;
&lt;p&gt;If you have an account on one of our hosted instances (mastodon.social and mastodon.online), you may like to know that we now have an account that is run by the team that operates them - &lt;a href="https://mastodon.social/@staff"&gt;@staff@mastodon.social&lt;/a&gt; is where you can find updates and announcements related to these services. As noted in the account bio, you should continue to use the existing process for any account support and appeals requests.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget that we also post technical and team updates on &lt;a href="https://mastodon.social/@MastodonEngineering"&gt;@MastodonEngineering@mastodon.social&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re also free to check out our &lt;a href="https://www.linkedin.com/company/joinmastodon/"&gt;LinkedIn page&lt;/a&gt; for non-engineering updates. It doesn&amp;rsquo;t federate, but, we&amp;rsquo;re there too.&lt;/p&gt;
&lt;h2 id="releases-and-updates"&gt;Releases and updates&lt;/h2&gt;
&lt;p&gt;In March, we released a number of bugfixes, and a security fix. You should take a look at the most recent version for the Mastodon level you are running, but also check the release notes for any versions you may also have missed. In total, we shipped:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.5"&gt;4.3.5&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.6"&gt;4.3.6&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.7"&gt;&lt;strong&gt;4.3.7&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.18"&gt;4.2.18&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.19"&gt;4.2.19&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.20"&gt;&lt;strong&gt;4.2.20&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;: Mastodon 4.2.17 dropped support for Ruby 3.0 (this is no longer supported upstream). If you are running Mastodon 4.2 and Ruby 3.0, you can update as far as Mastodon 4.2.16 which contains the latest security fixes, but please note that this version has a known vulnerability if you are using SAML authentication with Mastodon. If you are running Mastodon 4.2.x with Ruby 3.0, we strongly encourage you to update to Ruby 3.2, and then use Mastodon 4.2.17 or above.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.24"&gt;4.1.24&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.25"&gt;&lt;strong&gt;4.1.25&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you are running Mastodon 4.1.x, note that it only supports Ruby 3.0 (which is no longer supported upstream) and is subject to the above SAML security issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Mastodon 4.1.25 is the &lt;strong&gt;final&lt;/strong&gt; version of the Mastodon 4.1.x lifecycle.
As of &lt;strong&gt;April 8, 2025&lt;/strong&gt; this version of the software is end of life and will no longer receive updates (including for security issues). You should upgrade to a supported version as soon as possible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looking ahead, we posted a notice about future versions of Mastodon (from 4.4 onwards), that will retire the use of Redis namespaces and the &lt;code&gt;REDIS_NAMESPACE&lt;/code&gt; environment variable. If you have questions related to this future change, there&amp;rsquo;s a &lt;a href="https://github.com/mastodon/mastodon/discussions/34198"&gt;discussion post&lt;/a&gt; on GitHub.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/114182605867500983/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/114182605867500983" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="backend-and-web"&gt;Backend and web&lt;/h2&gt;
&lt;p&gt;In March, we reviewed and merged 167 Pull Requests (106 with translation and dependency updates removed) from 14 authors. Thank you for all of the contributions!&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Added new fields in the instance endpoint to get the instance&amp;rsquo;s about, terms of service and privacy policy pages, so apps can display them (including during signup). &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33849"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33849&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Added an attribute to the instance endpoint to understand whether a reason is required for sign ups. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34280"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34280&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Updated the Terms of Service feature to add a publication date, allowing users to review the ToS before they take action. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33993"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33993&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added a way for admins to do basic age verification to help with local law compliance. It achieves this by asking for the user birth date when signing up and checking it against the configured age. The birth date is not stored anywhere. Right now, it will reject sign ups where the birth date is not provided (for example, from API clients that do not support entering it), but we plan to properly handle this case before the feature is released. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34150"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34150&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The Emoji picker now supports Emojis from Unicode 15.0 (and a PR is in the works for 15.1). &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33395"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33395&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/eramdam" class="underline"&gt;eramdam&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Add a way for admins to send an announcement by email to all users. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33928"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33928&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 &lt;a href="https://neuromatch.social/@jonny"&gt;Jonny&lt;/a&gt; has been working for several months to add a way to fetch replies from other servers, to solve the common issue of only seeing a part of conversations. The first part of this work has been merged. It is not enabled by default for now, as we need to ensure that it behaves correctly and does not significantly increase the requests made to other servers - but, this is a huge first step. Further PRs will be required to update the interface, and ensure that apps can support this as well. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32615"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32615&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/sneakers-the-rat" class="underline"&gt;sneakers-the-rat&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34147"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34147&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34151"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34151&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The API now supports the &lt;code&gt;Deprecation&lt;/code&gt; header from RFC9745. We recommend that application developers look for this header in responses, and display a warning when it is present in development mode, to detect usage of deprecated APIs. See &lt;a href="https://docs.joinmastodon.org/api/guidelines/#deprecations"&gt;the documentation for more information&lt;/a&gt;. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34262"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34262&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 A new v2 filter action has been added: &lt;code&gt;blur&lt;/code&gt;. It is similar to &lt;code&gt;warn&lt;/code&gt;, but only applies to attached media. If you&amp;rsquo;ve implemented v2 filters according to our documentation, your client should be handling unknown types as &lt;code&gt;warn&lt;/code&gt;, which is a reasonable fallback for &lt;code&gt;blur&lt;/code&gt;. Documentation: &lt;a href="https://docs.joinmastodon.org/methods/filters/#form-data-parameters"&gt;Create a filter&lt;/a&gt; and &lt;a href="https://docs.joinmastodon.org/entities/Filter/#filter_action"&gt;filter action entity&lt;/a&gt; &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34256"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34256&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Support for Fediverse Auxiliary Service Providers has been merged. No capabilities are implemented yet, but this is the first step towards supporting &lt;a href="https://fediscovery.org"&gt;Fediscovery&lt;/a&gt; in Mastodon, and opens the door for many other exciting features. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34031"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34031&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
The media modal behaviour on mobile has been improved, with better gesture support. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34210"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34210&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 &lt;code&gt;admin.sign_up&lt;/code&gt; notifications can now be grouped. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/34298"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #34298&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;Version 2.9.5 was released, with some minor bug fixes and tweaks. We&amp;rsquo;re also working on support for the age verification on sign-up changes mentioned above.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;With the release of 2025.01, grouped notifications are now available on iOS! Favorites, boosts, and follows that occur close together are grouped with similar notifications, as they are on the web. Also, follow requests can be approved or rejected right from the notifications list.&lt;/p&gt;
&lt;p&gt;You’ll also see a bunch of improvements around post visibility (&amp;ldquo;Public&amp;rdquo;, &amp;ldquo;Unlisted&amp;rdquo;, etc.) throughout the app. When composing a new post, the visibility setting is now just below the publish button, making it much more obvious. When viewing your timeline, private mentions and replies are now marked with headers similar to those on the web, and posts that are not public now show an icon to indicate their visibility. Several other long-standing issues around post visibility have also been resolved.&lt;/p&gt;
&lt;p&gt;Quite a few other fixes are included in this update as well, and we&amp;rsquo;re hard at work on a follow-up to address additional issues.&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;We merged the first Fediscovery-related PR into Mastodon (see above). This includes basic support for managing FASP (Fediverse Auxiliary Service Providers), of which Discovery providers will be the first kind. This is still behind a feature flag and does not provide any user-visible functionality, but it enables a couple of things. Expect to see more in the coming months.&lt;/p&gt;
&lt;p&gt;We also started work on the next discovery capability: &amp;ldquo;Account Recommendations&amp;rdquo;. A first specification draft will be published in April.&lt;/p&gt;
&lt;p&gt;Testing of an initial Fediscovery implementation is ongoing. Demonstrating that this is not a Mastodon-only service, the &lt;a href="https://github.com/grishka/Smithereen"&gt;Smithereen&lt;/a&gt; project has been working with the current code.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@grishka/114193410704161904/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@grishka/114193410704161904" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @grishka@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="community-news"&gt;Community news&lt;/h2&gt;
&lt;p&gt;This was a big month across the community.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://nivenly.org/"&gt;Nivenly Foundation&lt;/a&gt; - stewards of the &lt;a href="https://hachyderm.io"&gt;Hachyderm.io&lt;/a&gt; instance - announced their &lt;a href="https://nivenly.org/blog/2025/04/01/nivenly-fediverse-security-fund/"&gt;Fediverse Security Fund&lt;/a&gt;, which will sponsor contributors who responsibly disclose security vulnerabilities in popular open source Fediverse software. This is a great initiative, and we are happy to see it.&lt;/li&gt;
&lt;li&gt;There was a &lt;a href="https://mastodon.social/@cheeaun/114149642985452634"&gt;big update&lt;/a&gt; to &lt;a href="https://phanpy.social"&gt;Phanpy&lt;/a&gt;, a progressive web app client for Mastodon.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/fedi-archive/id6740432925"&gt;Fedi Archive&lt;/a&gt; is an iOS app that allows you to open and browse Mastodon account archives directly on device.&lt;/li&gt;
&lt;li&gt;The great &lt;a href="https://icosahedron.website/@halcy"&gt;@halcy&lt;/a&gt;, maintainer of the &lt;a href="https://github.com/halcy/Mastodon.py"&gt;Mastodon.py&lt;/a&gt; client library for Python, shared some fun posts, including &lt;a href="https://icosahedron.website/@halcy/114162499329644711"&gt;a FUSE filesystem built on Mastodon&lt;/a&gt; (!), &lt;a href="https://halcy.de/blog/2025/02/18/mastodonpy-in-the-browser/"&gt;demos of Mastodon.py with client-side PyScript&lt;/a&gt;, and &lt;a href="https://halcy.de/blog/2025/03/18/silly-mastodon-apps/"&gt;a series of fun and silly examples built on the Mastodon API&lt;/a&gt;. Take a look, you may get inspired!
&lt;ul&gt;
&lt;li&gt;&amp;hellip; &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; &lt;em&gt;did&lt;/em&gt; get inspired, and &lt;a href="https://github.com/andypiper/mastofs"&gt;ran with the FUSE idea&lt;/a&gt;, but it is still not something we recommend as a way to use Mastodon 😊&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tomkahe.com/@tom"&gt;Tom Casavant&lt;/a&gt; continues to contribute to getting Mastodon into all the right places, and submitted a &lt;a href="https://github.com/glanceapp/community-widgets/pull/8"&gt;pull request to add Mastodon trends as a widget for Glance&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A new iOS app called &lt;a href="https://sabertooth.xyz/"&gt;Sabertooth&lt;/a&gt; appeared.&lt;/li&gt;
&lt;li&gt;If you use Discord, then you should find that &lt;a href="https://social.treehouse.systems/@rcombs/114145509598513980"&gt;embeds of Mastodon posts just got much nicer&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;by the way, if you &lt;a href="https://www.patreon.com/mastodon"&gt;support us on Patreon&lt;/a&gt;, you can get access to our Discord server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@john_fisherman"&gt;Fred Rocha&lt;/a&gt; wrote a &lt;a href="https://fredrocha.net/2025/03/18/how-i-use-mastodon-in-2025/"&gt;blog post about how he uses Mastodon in 2025&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That was a lot of news! We are excited to see the community continuing to share interesting apps and examples. Let us know if you&amp;rsquo;re building something cool, and we may feature it in a future post.&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you&lt;/h2&gt;
&lt;p&gt;Mastodon is a platform that empowers communities and fosters connections. It thrives when people contribute! We appreciate all of the support. Please consider donating to help us to keep improving the software.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, February 2025</title><link>https://blog.joinmastodon.org/2025/03/trunk-tidbits-february-2025/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/03/trunk-tidbits-february-2025/</guid><description>&lt;p&gt;Hello again. Thanks for checking out our latest engineering updates. We hope that our monthly updates help you follow what we&amp;rsquo;ve been working on, and where we&amp;rsquo;re headed. This is a slightly lighter entry in the series, although there was plenty happening. At the start of the month we were recovering from our trip to FOSDEM (that was covered in &lt;a href="https://blog.joinmastodon.org/2025/02/trunk-tidbits-january-2025/"&gt;the previous edition&lt;/a&gt;), and we also spent time responding to community feedback in a number of areas.&lt;/p&gt;
&lt;h2 id="beyond-the-repositories"&gt;Beyond the repositories&lt;/h2&gt;
&lt;p&gt;Just after Trunk &amp;amp; Tidbits was published last month, we also shared &lt;a href="https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/"&gt;our thinking and plans around Quote Posts&lt;/a&gt;. Since then, there has been &lt;a href="https://socialhub.activitypub.rocks/t/pre-fep-quote-posts-quote-policies-and-quote-controls/5031"&gt;active discussion on SocialHub&lt;/a&gt; (a forum for ActivityPub and Fediverse developers) about the proposal. We appreciate the engagement!&lt;/p&gt;
&lt;p&gt;On the events and outreach side, it was a busy month: two of the team were at RightsCon in Taipei, where they had the opportunity to talk to a range of digital rights activists and experts; and our CTO, &lt;a href="https://oisaur.com/@renchap"&gt;Renaud&lt;/a&gt;, took part in a number of interviews with media organisations in France. We shared some of these in posts on &lt;a href="https://www.linkedin.com/company/joinmastodon/"&gt;our LinkedIn page&lt;/a&gt;, in case that is a site where you&amp;rsquo;d like to follow non-engineering news updates.&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s turn to the code!&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;We released Mastodon &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.4"&gt;4.3.4&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.17"&gt;4.2.17&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.23"&gt;4.1.23&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;: Mastodon 4.2.17 drops support for Ruby 3.0 (which is no longer supported upstream). If you are running Mastodon 4.2 and Ruby 3.0, you can update as far as Mastodon 4.2.16 which contains the latest security fixes, but please note that this version has a known vulnerability if you are using SAML authentication with Mastodon. If you are running Mastodon 4.2 with Ruby 3.0, we strongly encourage you to update to Ruby 3.2, and then use Mastodon 4.2.17 or above.&lt;/p&gt;
&lt;p&gt;If you are running Mastodon 4.1, note that it only supports Ruby 3.0 (which is no longer supported upstream) and is subject to the above SAML security issue.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Countdown to the end of life for Mastodon 4.1.x - this version will no longer receive updates (including for security issues) after &lt;strong&gt;April 8, 2025&lt;/strong&gt;. If you are running an instance on 4.1.x, you must update to 4.2.x or 4.3.x within the next ~30 days, in order to remain on a supported version of the software.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In related news, administrators of instances that are currently on &lt;a href="https://joinmastodon.org/servers"&gt;our servers list&lt;/a&gt; - that are &lt;em&gt;not&lt;/em&gt; running supported versions of the software - will soon be asked to upgrade if they would like to remain on that list. We are also working on updates to the Mastodon Server Covenant that will include a requirement to stay up-to-date on software levels. We also hope to streamline the process for adding new instances to the list&amp;hellip; unfortunately we are backlogged on updating it in general, due to various process changes; apologies if this applies to your submission. Thank you for your patience, and look out for more on these changes in the coming weeks.&lt;/p&gt;
&lt;h2 id="backend-and-web"&gt;Backend and web&lt;/h2&gt;
&lt;p&gt;In February, we reviewed and merged 119 Pull Requests (61 with translation and dependency updates removed) from 8 authors.&lt;/p&gt;
&lt;p&gt;We usually do a round up of more major backend and web UI changes in this section, but these were fairly light during the past month. The security releases, and the responses to feedback on Quote Posts, were the focus of the team&amp;rsquo;s efforts.&lt;/p&gt;
&lt;p&gt;Additional news from behind-the-scenes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We are growing the team! We are working on adding two front-end developers to the team, and have talked to some very strong candidates. We are at the end of the process at the moment, so you can expect to see some new faces in our repositories soon.&lt;/li&gt;
&lt;li&gt;As well as growing, we have also said goodbye to &lt;a href="https://hachyderm.io/@samhenrigold"&gt;Sam&lt;/a&gt;, who has been our designer for the past four years. Thank you, Sam! The plan is to open a position for a full-time designer to join us soon, so stay tuned for news on this opportunity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mobile"&gt;Mobile&lt;/h2&gt;
&lt;p&gt;No major updates in our mobile apps in the past month. On &lt;strong&gt;Android&lt;/strong&gt;, there were some minor UI tweaks, and some bug fixes. On &lt;strong&gt;iOS&lt;/strong&gt;, work continued on grouped notifications (which are coming very soon), along with a few additional bug fixes. There&amp;rsquo;s a lot of work happening, but less to discuss in terms of visible changes.&lt;/p&gt;
&lt;h2 id="fediscovery"&gt;Fediscovery&lt;/h2&gt;
&lt;p&gt;As a short reminder: Fediscovery is &lt;a href="https://www.fediscovery.org/"&gt;a project&lt;/a&gt; we&amp;rsquo;re working on independent of Mastodon itself, to explore decentralized search and discovery for the Fediverse as a whole. It defines a &lt;em&gt;Fediverse Discovery Provider&lt;/em&gt; as one type of potential &lt;em&gt;Fediverse Auxiliary Service Provider&lt;/em&gt; (FASP) that can offer additional functionality to any Fediverse service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We published a first draft of the &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/blob/main/discovery/account_search/v0.1/account_search.md"&gt;&lt;code&gt;account_search&lt;/code&gt;&lt;/a&gt; capability specification.&lt;/li&gt;
&lt;li&gt;We opened up the GitHub repository of our reference implementation, &lt;a href="https://github.com/mastodon/fediscoverer"&gt;fediscoverer&lt;/a&gt;. It is still (very) early days, but all of the different draft specifications have been implemented in some way. One of the next steps in the coming months is getting this production-ready.&lt;/li&gt;
&lt;li&gt;We published several draft PRs for Mastodon itself to integrate with a discovery FASP (&lt;a href="https://github.com/mastodon/mastodon/pull/34031"&gt;1&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/pull/34032"&gt;2&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/pull/34033"&gt;3&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="community-contributions"&gt;Community contributions&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re always on the lookout for interesting uses of the Mastodon API. Here are some that we spotted this month.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://monkedo.com/"&gt;Monkedo&lt;/a&gt; is no-code automation software designed for a range of users, both technical and non-technical. There is now a &lt;a href="https://monkedo.com/integrations/app/mastodon"&gt;Mastodon integration&lt;/a&gt; available over there (thank you Deniz and team for letting us know about this!). If you build anything with Monkedo and Mastodon, let us know what you think.&lt;/li&gt;
&lt;li&gt;Congratulations (and thank you!) to &lt;a href="https://icosahedron.website/@halcy"&gt;@halcy&lt;/a&gt; for releasing the major new version 2.0.x of &lt;a href="https://github.com/halcy/Mastodon.py"&gt;Mastodon.py&lt;/a&gt;. This powerhouse of a Python library is now fully updated with all the current core Mastodon API methods, and modernised for current Python versions. &lt;code&gt;pip install&lt;/code&gt; it today, and tell us what you build.
&lt;ul&gt;
&lt;li&gt;Relatedly, with the ability to run Python in a web browser&amp;hellip; there&amp;rsquo;s &lt;a href="https://halcy.de/blog/2025/02/18/mastodonpy-in-the-browser/"&gt;a blog post about using this to build web apps&lt;/a&gt;, and &lt;a href="https://kal-tsit.halcy.de/client_side_mastopy/api_explorer.htm"&gt;here is a Mastodon API Explorer&lt;/a&gt;. Pretty nifty!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Do you use Sphinx for a website? If you do, you can try &lt;a href="https://github.com/LivInTheLookingGlass/sphinx-fediverse?tab=readme-ov-file"&gt;&lt;code&gt;sphinx-fediverse&lt;/code&gt;&lt;/a&gt; to use Mastodon as a comments system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please let us know if you&amp;rsquo;re creating something interesting on top of Mastodon, so that we can help other people hear about your projects. Got something we should know about? Don&amp;rsquo;t forget to use the #MastodonAPI hashtag when you share it in the Fediverse.&lt;/p&gt;
&lt;h2 id="thank-you-for-supporting-us"&gt;Thank you for supporting us&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re grateful for every user of the platform, and every donation that we receive helps to sustain the project.&lt;/p&gt;
&lt;p&gt;As an independent project with a small team, Mastodon continues to depend on your support. We believe in authentic human connection, and we&amp;rsquo;re creating a social platform for everyone. Every contribution helps to keep Mastodon moving forward. Thank you.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Bringing Quote Posts to Mastodon</title><link>https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/02/bringing-quote-posts-to-mastodon/</guid><description>&lt;p&gt;Quote Posts are a popular feature of many social media platforms. They offer the ability to share another person&amp;rsquo;s post to one&amp;rsquo;s own followers, while adding a comment.&lt;/p&gt;
&lt;p&gt;We want to share our thinking process in implementing Quote Posts in Mastodon, and explain why it has taken us some time to do so.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In the past couple of years, as Mastodon has grown, we’ve spent time meeting with community leaders across a spectrum of interests, to understand their needs. We have learned that many groups use Quote Posts as their primary means to build consensus and community on other platforms. Quote Posts used in this way convey trust and respect for the original post, building on or enhancing an original idea.&lt;/p&gt;
&lt;p&gt;On the other hand, back when Mastodon was first developed, we had seen the feature used for malicious purposes on other platforms, for example, to intentionally quote someone out of context, to direct hate speech and harass people. At that time, it was an easy decision for us: Mastodon would not have quote posts.&lt;/p&gt;
&lt;p&gt;The continued popularity of requests for us to implement the feature has shown that their absence prevents many people from joining the Fediverse. We want to add Quote Posts to help people to transition away from proprietary, billionaire-owned social media to the open social web.&lt;/p&gt;
&lt;p&gt;If you’ve been following our project, we first mentioned that we were considering bringing Quote Posts to Mastodon &lt;a href="https://blog.joinmastodon.org/2023/05/a-new-onboarding-experience-on-mastodon/"&gt;back in 2023&lt;/a&gt;. During 2024, we applied for &lt;a href="https://nlnet.nl/project/Mastodon-Quoting/"&gt;a grant from the NGI0 Entrust Fund&lt;/a&gt;, to support our research and implementation efforts. With that support, we have done a lot of research and thinking, and we are sharing the outcomes of this work with you here.&lt;/p&gt;
&lt;h2 id="challenges"&gt;Challenges&lt;/h2&gt;
&lt;p&gt;There are two primary elements to bringing Quote Posts to Mastodon: user-centric, and technical.&lt;/p&gt;
&lt;p&gt;As explained above, the team started out with a shared view that Quote Posts can be misused. Many people simply do not want their content to be reframed by others; or they may find that if it is reposted, they receive unwelcome attention.&lt;/p&gt;
&lt;p&gt;In order to mitigate these issues, we plan to include several features in our implementation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You will be able to choose whether your posts can be quoted at all.&lt;/li&gt;
&lt;li&gt;You will be notified when someone quotes you.&lt;/li&gt;
&lt;li&gt;You will be able to withdraw your post from the quoted context at any time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also want to build a tight integration for Quote Posts with the reporting functionality, to help people to feel more safe.&lt;/p&gt;
&lt;p&gt;On the technical side, the concept of Quote Posts is not standardised - there is no agreed way to build this feature into a W3C ActivityPub implementation so that it is automatically interoperable with the other applications in the Fediverse. Today, some third party Mastodon clients approximate quote posts, by showing a preview if a post contains a link to another post - but those efforts do not come with any of the features that we want to include. We want to collaborate to create a specification, so that we can encourage a better (and safer) way for all clients to have this functionality. We’ve spent time talking with users, with other Fediverse software developers (which include user facing applications), and with the developers of our own client apps, about how they might expect to see or implement Quote Posts. The output from this will be concrete proposals to help everyone building on the Fediverse.&lt;/p&gt;
&lt;h2 id="the-process"&gt;The process&lt;/h2&gt;
&lt;p&gt;We are in the process of writing ActivityPub extensions (which we will publish as &lt;a href="https://codeberg.org/fediverse/fep"&gt;Fediverse Enhancement Proposals&lt;/a&gt;), in collaboration with other developers, to cover these features for any ActivityPub software that chooses to use them. These specifications can allow everyone to efficiently implement this same feature in an interoperable way. We’ve shared &lt;a href="https://socialhub.activitypub.rocks/t/pre-fep-quote-posts-quote-policies-and-quote-controls/5031"&gt;initial work on this&lt;/a&gt; for ActivityPub developers, and we&amp;rsquo;re also posting the &lt;a href="https://github.com/mastodon/specs-background/blob/main/quote-posts/quote-posts-research-and-goals.md"&gt;background research&lt;/a&gt; we performed, that was discussed with others - in both cases, these are being posted as deeper-dives for technical audiences and other implementers; they do not represent final outputs and choices.&lt;/p&gt;
&lt;p&gt;In addition to these proposals, this feature will impact many parts of the Mastodon codebase, including the ActivityPub-handling code, the public API, web user interface, moderation panel and capabilities, the administration panel, and the official iOS and Android applications. We’re working on it, but Quote Posts will still take more time to develop.&lt;/p&gt;
&lt;h2 id="the-future"&gt;The future&lt;/h2&gt;
&lt;p&gt;We know that Quote Posts are a source of concern for some members of the community, and highly-requested by others. We’re committed to sharing our progress, and listening to your feedback. Thanks for being a part of the federated open social web, and for using Mastodon.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, January 2025</title><link>https://blog.joinmastodon.org/2025/02/trunk-tidbits-january-2025/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/02/trunk-tidbits-january-2025/</guid><description>&lt;p&gt;Welcome back to our technical blog series: Trunk &amp;amp; Tidbits. This is where we share updates on what the development team has been working on, and what we have planned for the future. This month we have a lot to tell you about, including a brief recap of our time at FOSDEM (which technically happened at the very start of February rather than during January), and some exciting new features and improvements that we have been working on.&lt;/p&gt;
&lt;h2 id="general-news"&gt;General news&lt;/h2&gt;
&lt;p&gt;First of all, we want to again share the news that &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;we are working on restructuring the project&lt;/a&gt;, forming a new non-profit entity to be based in Europe to ensure good governance and sustainability. There was a flurry of activity outside of the technical side in January, as we talked to different organisations about this news. We do not expect this to have a big impact on the day-to-day development of Mastodon, but we hope that it will help to ensure the long-term future of the project.&lt;/p&gt;
&lt;p&gt;We had a great time at FOSDEM! Five members of the team - Eugen, Renaud, Felix, David, and Andy - spent time meeting members of the community at our stand, as well as explaining what Mastodon and the Fediverse are to newcomers. Andy helped to run the first ever &lt;a href="https://fosdem.org/2025/schedule/track/social-web/"&gt;Social Web Devroom&lt;/a&gt; (a FOSDEM Devroom is roughly equivalent to a talk track at a conference), where David presented the Fediscovery project; &lt;a href="https://blog.joinmastodon.org/2025/02/trunk-tidbits-january-2025/#fediscovery-project"&gt;more on that, below&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@_elena/113933826503119732/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@_elena/113933826503119732" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @_elena@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;&lt;em&gt;Thank you to the wonderful &lt;a href="https://mastodon.social/@_elena"&gt;Elena Rossini&lt;/a&gt; for taking photos of the team. Check out &lt;a href="https://blog.elenarossini.com/tag/the-future-is-federated/"&gt;her newsletter&lt;/a&gt;, where she writes about the federated future.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There were also two additional Social Web sessions: a &amp;ldquo;birds of a feather&amp;rdquo; set of short talks during FOSDEM itself, and an &amp;ldquo;After Hours&amp;rdquo; social event, where Andy delivered a talk entitled &lt;em&gt;Fediverse for Freedom&lt;/em&gt;. The buzz around the Fediverse at FOSDEM this year was incredible, and the sessions were all very well attended. There is so much great work happening in the space!&lt;/p&gt;
&lt;p&gt;During January, we received a large number of applications for our front-end developer role. We&amp;rsquo;ve now paused taking new applications, while we work through the candidates that we have. We hope to be able to share news on this soon.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;We released Mastodon &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.3"&gt;4.3.3&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.15"&gt;4.2.15&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.22"&gt;4.1.22&lt;/a&gt;. These versions contain a few bug fixes, as well as a fix for a medium severity security issue. We recommend that all instances update to the latest version as soon as possible.&lt;/p&gt;
&lt;blockquote class="warning"&gt;&lt;p&gt;Countdown to the end of life for Mastodon 4.1.x - this version will no longer receive updates after &lt;strong&gt;April 8, 2025&lt;/strong&gt;. If you are running an instance on 4.1.x, you must update to 4.2.x or 4.3.x within the next ~60 days, in order to remain on a supported version of the software.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="code-updates"&gt;Code updates&lt;/h2&gt;
&lt;h3 id="web--backend"&gt;Web &amp;amp; backend&lt;/h3&gt;
&lt;p&gt;In January, we reviewed and merged 250 Pull Requests (170 with translation and dependency updates removed) from 23 authors.&lt;/p&gt;
&lt;p&gt;These are some of the most visible or impactful changes that were made this month (if you are on mastodon.social or mastodon.online, you will see some of these before they are rolled out in a future release).&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Display language names in the native language (in addition to the current language) in the post language picker. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33402"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33402&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/c960657" class="underline"&gt;c960657&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Add support for the final specification of WebPush. We previously only supported an outdated draft of the protocol. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33528"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33528&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/p1gp1g" class="underline"&gt;p1gp1g&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Add an API to update the allowed attribution domains for an account. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33270"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33270&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/c960657" class="underline"&gt;c960657&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Add an indicator in the web interface when the selected language for the post does not match the language guessed from the post content. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33042"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33042&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33700"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33700&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Redesign the edit media modal. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33516"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33516&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33702"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33702&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Add an alert with posting a message that includes an image without alt text. This can be disabled in the preferences. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33760"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33760&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Add an optional metrics exporter in Prometheus format. This allows an administrator to get useful process-level metrics from Puma, Sidekiq and Ruby (memory/GC). &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33734"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33734&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;The team also made significant progress on the specification for Quote Posts. It needs a few minor changes, but we expect to publish it for comment in February, and start implementation right away. The current plan is to publish Mastodon 4.4 with support for displaying Quote Posts, and then add authoring in Mastodon 4.5.&lt;/p&gt;
&lt;p&gt;We also plan to support receiving and validating ActivityPub requests using RFC9421 signatures in Mastodon 4.4, and sign them using those signatures in Mastodon 4.5 (see the W3C SWICG &lt;a href="https://swicg.github.io/activitypub-http-signature/"&gt;ActivityPub and HTTP Signatures report&lt;/a&gt; for more context).&lt;/p&gt;
&lt;h3 id="android"&gt;Android&lt;/h3&gt;
&lt;p&gt;We released 2.9.4 on Jan 6, with the following changes:&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Fixed custom emojis not loading under some configurations.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 The app now sends `org.joinmastodon.android as referrer to websites opened from the app.&lt;/li&gt;
&lt;li&gt;Fixed some minor crashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;We also added the ability to accept or reject follow requests in the Android app, based on a &lt;a href="https://github.com/mastodon/mastodon-android/pull/965"&gt;contributed pull request&lt;/a&gt; (thank you &lt;a href="https://mastodon.social/@underoot"&gt;@underroot&lt;/a&gt;) but with much of it rewritten. This feature will be available in the next release.&lt;/p&gt;
&lt;h3 id="ios"&gt;iOS&lt;/h3&gt;
&lt;p&gt;There was no new release in January, but we are hard at work on bringing grouped notifications to our iOS app, along with some smaller bug fixes.&lt;/p&gt;
&lt;h2 id="fediscovery-project"&gt;Fediscovery Project&lt;/h2&gt;
&lt;p&gt;David presented our Fediscovery project at FOSDEM 2025. We were delighted to finally discuss the project with other implementers and interested parties. The talk gave an overview of the project itself, and an update about the current status. You can find links to the &lt;a href="https://www.fediscovery.org/#fediscovery--fosdem-2025"&gt;slides and video recordings of the talk&lt;/a&gt; on the Fediscovery website.&lt;/p&gt;
&lt;p&gt;We are currently working on the reference implementation for our first search and discovery provider. We rely a lot on Ruby (and Ruby on Rails) for Mastodon already, so it made sense to use Ruby on Rails here as well. The provider is not yet available, but we extracted two Rails plugins from it to help others build their own providers. One of these handles all of the low-level general interfacing with Fediverse servers, while the other includes building blocks to implement our “Data Sharing” specification, that is at the heart of the Fediscovery project. We have also built a small demo provider. All of this can be found &lt;a href="https://github.com/mastodon/fasp_ruby"&gt;in the &lt;code&gt;fasp_ruby&lt;/code&gt; project&lt;/a&gt;, a repository we released to coincide with the FOSDEM talk.&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;It was another exciting month watching what folks have been building on top of Mastodon. Here are a few highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This was missed last month, but in December the Linux GTK app &lt;a href="https://tuba.geopjr.dev/"&gt;Tuba&lt;/a&gt; got &lt;a href="https://floss.social/@Tuba/113657758389560981"&gt;a big update&lt;/a&gt; featuring account suggestions for new accounts, scheduled &amp;amp; draft posts, and hashtag extraction from posts (along with a bunch of nice GNOME-related UI enhancements).&lt;/li&gt;
&lt;li&gt;Multiple client libraries for the Mastodon API saw new releases in January; if you are a JavaScript developer check out &lt;a href="https://neet.github.io/masto.js/"&gt;Masto.js&lt;/a&gt; and &lt;a href="https://h3poteto.github.io/megalodon/"&gt;Megaladon&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://crystal.social"&gt;Crystal for Mastodon&lt;/a&gt; was released, allowing you to view beautiful slideshows of images from Mastodon posts on your Apple TV. We need a new category for third party apps on our website!&lt;/li&gt;
&lt;li&gt;Another text console / CLI / TUI app came along. If you live in the terminal, take a look at &lt;a href="https://github.com/Lo-Riot/fediboat"&gt;Fediboat&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codeberg.org/oliphant/posty"&gt;Posty&lt;/a&gt; allows you to self-host an archive of your Mastodon posts. It&amp;rsquo;s a simple static site generator that uses your Mastodon archive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;rsquo;t forget to let us know if you&amp;rsquo;re building something interesting on top of Mastodon. We love to hear about it!&lt;/p&gt;
&lt;h2 id="appreciation"&gt;Appreciation&lt;/h2&gt;
&lt;p&gt;We would like to thank everyone who has contributed to Mastodon in the past month, and to everyone that uses the platform every day. Your support is what keeps us going, and we are grateful for it.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re an independent open source project that &lt;em&gt;depends on your support&lt;/em&gt;. We&amp;rsquo;re not taking venture capital. We believe that social media should be for everyone. If you can, please consider making a donation to help us continue to build Mastodon.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>The people should own the town square</title><link>https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/</guid><description>&lt;p&gt;&lt;em&gt;For any enquiry regarding this announcement, please contact &lt;a href="mailto:press@joinmastodon.org"&gt;press@joinmastodon.org&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mastodon was founded on the principles that people should be able to control their social circle online, curate their own timeline, and convene freely with any community of their choosing. We believe social media should help users build bridges, not walls. And we believe this is best achieved through federation.&lt;/p&gt;
&lt;p&gt;Today, we are excited to announce that Mastodon is taking important steps to ensure its legal and operational structures better reflect and support the pursuit of these ideals.&lt;/p&gt;
&lt;h2 id="what-is-changing"&gt;What is changing&lt;/h2&gt;
&lt;p&gt;Simply, we are going to transfer ownership of key Mastodon ecosystem and platform components (including name and copyrights, among other assets) to a new non-profit organization, affirming the intent that Mastodon should not be owned or controlled by a single individual.&lt;/p&gt;
&lt;p&gt;When founder Eugen Rochko started working on Mastodon, his focus was on creating the code and conditions for the kind of social media he envisioned. The legal setup was a means to an end, a quick fix to allow him to continue operations. From the start, he declared that Mastodon would not be for sale and would be free of the control of a single wealthy individual, and he could ensure that because he was the person in control, the only ultimate decision-maker.&lt;/p&gt;
&lt;p&gt;This approach was efficient and expedient at first, but in time it was clear that the Mastodon structures needed to evolve as the community grew. Taking the &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/"&gt;first tentative steps almost a year ago&lt;/a&gt;, there are already multiple organizations involved with shepherding the Mastodon code and platform. The next 6 months will see the transformation of the Mastodon structures, shifting away from the early days’ single-person ownership and enshrining the envisioned independence in a dedicated European not-for-profit entity.&lt;/p&gt;
&lt;p&gt;It also means a different role for Eugen, Mastodon’s current CEO. Handing off the overall Mastodon management will free him up to focus on product strategy where his original passion lies and he gains the most satisfaction.&lt;/p&gt;
&lt;h2 id="what-is-staying-the-same"&gt;What is staying the same&lt;/h2&gt;
&lt;p&gt;Our core mission remains the same: to create the tools and digital spaces where people can build authentic, constructive online communities free from ads, data exploitation, manipulative algorithms or corporate monopolies.&lt;/p&gt;
&lt;p&gt;We will continue to host &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and &lt;a href="https://mastodon.online/explore"&gt;mastodon.online&lt;/a&gt;, two Mastodon social network servers where the public can sign up to participate in a social network created using the software, and support a federated network of instances. There will be no change in users experience at this stage, above and beyond the usual code development and releases. However, changes are definitely in the pipeline.&lt;/p&gt;
&lt;p&gt;Practically Mastodon will remain headquartered in and operate from Europe primarily. We will continue day-to-day operations through the Mastodon GmbH for-profit entity, which will become wholly owned by the new European not-for-profit entity. The Mastodon GmbH entity automatically became a for-profit as a result of its charitable status being &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/#mastodons-non-profit-status-in-germany"&gt;stripped away in Germany&lt;/a&gt;. The existing US-based non-profit entity, the 501(c)(3), will continue to function as a fundraising hub.&lt;/p&gt;
&lt;h2 id="what-comes-next"&gt;What comes next&lt;/h2&gt;
&lt;p&gt;We are in the process of a phased transition. First we are establishing a new legal home for Mastodon and transferring ownership and stewardship. We are taking the time to select the appropriate jurisdiction and structure in Europe. Then we will determine which other (subsidiary) legal structures are needed to support operations and sustainability.&lt;/p&gt;
&lt;p&gt;Throughout we will focus on establishing the appropriate governance and leadership frameworks that reflect the nature and purpose of Mastodon as a whole, and responsibly serve the community.&lt;/p&gt;
&lt;p&gt;The Mastodon team and the generous group of donors who made this transition possible, worked together to set a list of technical priorities for the project based on community feedback: usability, discoverability, and trust &amp;amp; safety. Our plan is to evolve the user experience with an eye towards simplicity and discoverability. We’re continuing to progress the &lt;a href="https://www.fediscovery.org/"&gt;Fediscovery&lt;/a&gt; project, a Mastodon-led and NGI Search funded project which is building an optional, privacy-respecting search tool for the entire Fediverse. Finally, and perhaps most importantly, we’re going to invest deeply in trust &amp;amp; safety. We want everyone, especially marginalized communities, to feel safe on our platform. We’re working on building a stronger trust &amp;amp; safety function—including hiring—which will contribute to new features, educate instance admins about best practices, assess community needs, and partner with organizations like &lt;a href="https://about.iftas.org/"&gt;IFTAS&lt;/a&gt; to share insights and expand the availability of resources in this critical area.&lt;/p&gt;
&lt;p&gt;As part of this transition we are committed to bringing you more &lt;a href="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202023.pdf"&gt;transparency&lt;/a&gt; about our operations. We want to show you what it takes to evolve, expand, maintain and manage this corner of the ActivityPub-enabled Fediverse, and support more direct community participation. We will be sure to share the progress incrementally. We recognize the importance of this transition and are committed to ensuring it is done right.&lt;/p&gt;
&lt;h2 id="will-you-join-us"&gt;Will you join us?&lt;/h2&gt;
&lt;p&gt;We want to be transparent about our operations and priorities for another reason too. &lt;strong&gt;We need your help.&lt;/strong&gt; Grassroots efforts like Mastodon and the Fediverse require &lt;a href="https://github.com/mastodon/mastodon/blob/main/CONTRIBUTING.md"&gt;creative&lt;/a&gt; and &lt;a href="https://joinmastodon.org/sponsors"&gt;monetary&lt;/a&gt; contributions from their communities.&lt;/p&gt;
&lt;p&gt;We need to grow our annual operating budget to €5 million in 2025. With these additional funds we will grow our team, invest in our community’s safety, and keep building the world’s most free and open social network — the Fediverse. To put it simply, every donation we receive will be put back into enriching the Mastodon software ecosystem and community.&lt;/p&gt;
&lt;p&gt;Only with your support can Mastodon and the Fediverse remain free and accessible to everyone. It will take all of us working together to build resilient, governable, open and safe digital spaces.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/auth/sign_up"&gt;Join Mastodon&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, December 2024</title><link>https://blog.joinmastodon.org/2025/01/trunk-tidbits-december-2024/</link><pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2025/01/trunk-tidbits-december-2024/</guid><description>&lt;p&gt;A belated &amp;ldquo;happy 2025!&amp;rdquo; wish, from the Mastodon team (although, if you&amp;rsquo;ve been paying attention, there has been &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;some important news already&lt;/a&gt; this month). We&amp;rsquo;re a little later than planned in posting a summary of the work that happened during December, but let&amp;rsquo;s get into it.&lt;/p&gt;
&lt;p&gt;Last month was a bit more quiet than usual, because most of the team took time off with friends and family over the annual holiday season.&lt;/p&gt;
&lt;h2 id="in-case-you-missed-it"&gt;In case you missed it&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;At the start of December, our Developer Relations lead, &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt;, gave the opening keynote at RubyWorld 2024 in Japan (including a video message from &lt;a href="https://mastodon.social/@gargron"&gt;Eugen&lt;/a&gt;). The topic was &lt;em&gt;The Social Web: Decentralization and Building a Better Internet&lt;/em&gt;, and included the important role that Ruby plays in Mastodon&amp;rsquo;s development. You can &lt;a href="https://andypiper.co.uk/2024/12/24/building-a-better-social-web/"&gt;read the full script of the talk&lt;/a&gt;, and also &lt;a href="https://andypiper.org/SocialWeb-RubyWorld2024/"&gt;access the slides&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;img src="rubyworld.jpeg" class="rounded-lg shadow-lg"
 alt="Talking about Mastodon in Japan"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Talking about Mastodon in Japan&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;During December, the project published the &lt;a href="https://blog.joinmastodon.org/2024/12/annual-report-2023/"&gt;Annual Report for 2023&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We secured a table at &lt;a href="https://fosdem.org"&gt;FOSDEM&lt;/a&gt; 2025: &lt;a href="https://fosdem.org/2025/stands/"&gt;find us at H14&lt;/a&gt;. We will also be part of the &lt;a href="https://fosdem.org/2025/schedule/track/social-web/"&gt;Social Web&lt;/a&gt; track (more on this below), and attend the &lt;a href="https://socialwebfoundation.org/2025/01/04/social-web-after-hours-at-fosdem-2025/"&gt;Social Web After Hours&lt;/a&gt; meetup.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ve opened a new role on the team, for a front-end web developer.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/113782664417082619/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/113782664417082619" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;No release updates during December: the latest released versions remain &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.2"&gt;4.3.2&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.14"&gt;4.2.14&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.21"&gt;4.1.21&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a reminder, Mastodon 4.1.x is now deprecated, which means that it will reach End of Life and no longer receive updates on April 8, 2025. If you own an instance running 4.1.x, please update to 4.2.x or 4.3.x soon.&lt;/p&gt;
&lt;p&gt;We recommend that owners / administrators of Mastodon instances upgrade to the latest available versions, as appropriate to their environments.&lt;/p&gt;
&lt;h2 id="code-updates"&gt;Code updates&lt;/h2&gt;
&lt;p&gt;In December, we reviewed and merged 187 Pull Requests (127 with translation and dependency updates removed) from 17 authors. This was a quieter month, as the team was away for the holiday break.&lt;/p&gt;
&lt;h3 id="backend"&gt;Backend&lt;/h3&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
Add an option to use the system scrollbars &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32117"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32117&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Do not direct unconfirmed users to the settings, but to the “Check your inbox” screen, to reduce confusion &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33209"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33209&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Adds optional Terms of Service, along with a generator based on a template from our law firm. This is not yet 100% finished, as we plan to update it based on feedback. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33055"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33055&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Allow instance to configure their HTTP Referer policy through a system setting. We previously disabled any &lt;code&gt;Referrer&lt;/code&gt; header on links to external websites to avoid any data leakage, but on instances with many users it makes sense to allow the referer domain, as you can not tie the visit to any user. It will help publishers to see traffic coming from Mastodon. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33214"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33214&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33239"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33239&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Changed the search feature so the parameters are in the URL. It allows copy and pasting of a search result page. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32949"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32949&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 New cute animation on the feed loading screen. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33311"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33311&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Simplify the design of the interaction modal to make it less confusing to users and focus on the important part. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33278"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33278&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Add a configuration option to configure Active Record query log tags, which will insert an SQL comment in every query with the controller and action that generated the query. This is very useful for SQL performance work. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/33342"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #33342&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id="android"&gt;Android&lt;/h3&gt;
&lt;p&gt;Nothing significant to report for December.&lt;/p&gt;
&lt;h3 id="ios"&gt;iOS&lt;/h3&gt;
&lt;p&gt;Our final release of 2024 brought improvements to the compose window and the timeline.&lt;/p&gt;
&lt;p&gt;The app is now less likely to freeze up while you’re typing out a post, and the post compose view won’t disappear (along with all your typing&amp;hellip;) until after the post has successfully published.&lt;/p&gt;
&lt;p&gt;In the timeline, link previews no longer show large blank spaces for images that never arrive, and compact link previews show all the expected information.&lt;/p&gt;
&lt;p&gt;We also fixed a problem where images and avatars could show up with posts they didn’t belong to, and one where GIFs in content-warned or filtered posts were not blurred out. Filters set to hide, really do remove posts from your timeline completely now, and tap targets in the post header are easier to hit (for the author name, action menu button, and show/hide button).&lt;/p&gt;
&lt;p&gt;In the coming months, we will continue improving stability and fixing small UI issues while working towards supporting grouped notifications, and updating post layouts to the latest design.&lt;/p&gt;
&lt;h3 id="documentation-and-website"&gt;Documentation and website&lt;/h3&gt;
&lt;p&gt;We continue to get great community contributions for the &lt;a href="https://github.org/mastodon/documentation"&gt;documentation repository&lt;/a&gt;, and will work on improving our rate of review here during 2025.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.org/mastodon/joinmastodon"&gt;code for the main joinmastodon.org website&lt;/a&gt; has a backlog of dependency updates via Renovate, including some with React components that contain breaking changes. If you would like to help out here, please &lt;a href="https://github.com/mastodon/joinmastodon/pulls?q=is%3Apr&amp;#43;is%3Aopen&amp;#43;label%3Adependencies"&gt;take a look&lt;/a&gt; - we would welcome the additional help to get things to a better state!&lt;/p&gt;
&lt;h2 id="fediscovery-project"&gt;Fediscovery Project&lt;/h2&gt;
&lt;p&gt;We merged our &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/pull/36"&gt;first draft of the data sharing specification&lt;/a&gt;. We also have a working proof of concept provider implementation, along with the Mastodon integration.&lt;/p&gt;
&lt;p&gt;Work is now focused on the first real capability, trends (for which we have a &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/pull/45"&gt;first specification draft&lt;/a&gt;), and the implementation of the reference provider software.&lt;/p&gt;
&lt;p&gt;You can learn more about Fediscovery at FOSDEM - check out &lt;a href="https://upp2.com/@dave"&gt;David&lt;/a&gt;&amp;rsquo;s &lt;a href="https://fosdem.org/2025/schedule/event/fosdem-2025-4531-fediscovery-improving-search-and-discovery-on-the-fediverse/"&gt;talk on Saturday afternoon&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;p&gt;The past year has been a period of change and growth, inside and outside of the Mastodon project - new team members, new organisations forming in the Fediverse, more people discovering that there is an opportunity to choose better social media. If you read &lt;a href="https://blog.joinmastodon.org/2025/01/the-people-should-own-the-town-square/"&gt;the news about the organisational change&lt;/a&gt; over the coming months, you will see that we plan to continue to build Mastodon for everyone.&lt;/p&gt;
&lt;p&gt;Thank you for your support, and for your contributions.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Annual Report 2023</title><link>https://blog.joinmastodon.org/2024/12/annual-report-2023/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/12/annual-report-2023/</guid><description>&lt;p&gt;If you&amp;rsquo;re curious how Mastodon is doing by the numbers, the 2023 Annual Report is finally here. A bit late in the year, perhaps, but we&amp;rsquo;ve got a lot more numbers to share this time! Mastodon is a non-profit, and open-source, so we revel in the transparency.&lt;/p&gt;
&lt;p&gt;How large is our budget, and where does it go? Who works on Mastodon? What have we accomplished, and where are our priorities for the future? For all of this and more, we&amp;rsquo;ve got an answer&amp;ndash;at least as far as 2023 goes.&lt;/p&gt;
&lt;p&gt;We have already started work on the 2024 one, though!&lt;/p&gt;
&lt;p&gt;&lt;div class="not-prose flex items-center gap-4"&gt;&lt;a href="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202023.pdf" class="text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600"&gt;Download&lt;/a&gt;&lt;span class="font-semibold"&gt;PDF, 4MB&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;
&lt;iframe src="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202023.pdf" width="100%" height="600rem" class="rounded-md shadow-lg"&gt;&lt;/iframe&gt;
&lt;p&gt;Thank you to &lt;a href="https://hellopierre.fr/"&gt;&lt;strong&gt;Pierre Vincent&lt;/strong&gt;&lt;/a&gt; for designing our annual report and to &lt;a href="https://www.youtube.com/dopatwo"&gt;&lt;strong&gt;Dopatwo&lt;/strong&gt;&lt;/a&gt; for such a quick turnaround on new illustrations, and thank you to the team, especially Inga and Philip, for headlining the efforts to put this together.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, November 2024</title><link>https://blog.joinmastodon.org/2024/12/trunk-tidbits-november-2024/</link><pubDate>Wed, 11 Dec 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/12/trunk-tidbits-november-2024/</guid><description>&lt;p&gt;Hi everyone! We&amp;rsquo;re back with our monthly engineering update, looking back at a busy November.&lt;/p&gt;
&lt;h2 id="general-news"&gt;General news&lt;/h2&gt;
&lt;p&gt;We were pleased to see our friends at NGI (Next Generation Internet) &lt;a href="https://ngi.eu/news/2024/11/29/ngi-projects-adopt-mastodon-and-peertube-as-main-communication-channels/"&gt;announce a major transition to using Mastodon and PeerTube&lt;/a&gt; as primary communication channels for many of their projects. 🎉&lt;/p&gt;
&lt;p&gt;Our application for a stand at &lt;a href="https://fosdem.org/2025/"&gt;FOSDEM 2025&lt;/a&gt; was accepted. We&amp;rsquo;re excited to be taking part in FOSDEM for the second year! We&amp;rsquo;ve started to plan what we will bring to share and talk about. We&amp;rsquo;re also going to be engaged in this year&amp;rsquo;s &lt;a href="https://socialwebfoundation.org/2024/11/01/fosdem-2025-social-web-devroom-call-for-participation/"&gt;Social Web Devroom&lt;/a&gt;. The Fediverse is growing, and we are happy to be a part of it.&lt;/p&gt;
&lt;p&gt;After the U.S. celebrates Thanksgiving, they&amp;rsquo;ve historically had so-called Black Friday and then Cyber Monday&amp;hellip; there&amp;rsquo;s also a more recent tradition of Giving Tuesday. This year, the &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/"&gt;Mastodon 501(c)(3) organisation&lt;/a&gt; - our U.S. non-profit entity - launched &lt;a href="https://givebutter.com/givingmastodon"&gt;a fundraising campaign&lt;/a&gt; to help us to fund a Trust &amp;amp; Safety Lead. We&amp;rsquo;re super &lt;a href="https://mastodon.social/@Mastodon/113631034747345380"&gt;grateful and happy that the campaign has started&lt;/a&gt; to raise these funds (also, the campaign remains open!).&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;In November, we released updates for each of the currently-supported Mastodon versions - &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.2"&gt;4.3.2&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.14"&gt;4.2.14&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.21"&gt;4.1.21&lt;/a&gt;. These contain a mixture of small fixes, and in the case of 4.3.2 and 4.2.14, a new administrative &lt;code&gt;tootctl feeds vacuum&lt;/code&gt; command for retroactively removing feeds that may have been left behind from deleted accounts.&lt;/p&gt;
&lt;p&gt;As a reminder, Mastodon 4.1.x is now deprecated, which means that it will reach End of Life and no longer receive updates on April 8, 2025 - this will be six months after the release of 4.3.0.&lt;/p&gt;
&lt;p&gt;We recommend that owners / administrators of Mastodon instances upgrade to the latest available versions, as appropriate to their environments.&lt;/p&gt;
&lt;h2 id="code-updates"&gt;Code updates&lt;/h2&gt;
&lt;p&gt;In November, we reviewed and merged 194 Pull Requests (133 with translation and dependency updates removed) from 18 authors.&lt;/p&gt;
&lt;p&gt;We always appreciate &lt;a href="https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md"&gt;contributions&lt;/a&gt;. If you would like to get involved, we have some &lt;a href="https://github.com/mastodon/mastodon/labels/help%20welcome"&gt;issues tagged &amp;ldquo;help welcome&amp;rdquo;&lt;/a&gt;, including &lt;a href="https://github.com/mastodon/mastodon/issues/32023"&gt;this one for Rails/backend&lt;/a&gt;. There are also a small number of &amp;ldquo;easy&amp;rdquo; (?) unmaintained React library replacements needed: &lt;a href="https://github.com/mastodon/mastodon/issues/30438"&gt;&lt;code&gt;react-notification&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/mastodon/mastodon/issues/30437"&gt;&lt;code&gt;react-motion&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/issues/30436"&gt;&lt;code&gt;react-hotkeys&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="backend"&gt;Backend&lt;/h3&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added support for Wrapstodon, a fun &amp;ldquo;year-in-review&amp;rdquo; feature. This currently needs to be generated from the console, and is not yet ready for general use, but it allowed us to run it on &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt; and test the feature in the wild. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32709"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32709&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32765"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32765&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added more reserved usernames, so they can not be registered by malicious actors. Big thanks to Jaz from &lt;a href="https://about.iftas.org/"&gt;IFTAS&lt;/a&gt; for this contribution. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32828"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32828&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/jmking-iftas" class="underline"&gt;jmking-iftas&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Improved display of statuses in admin interface. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30813"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30813&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Greatly improve the design of the list management screens &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32881"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32881&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 and automatically update list timelines when adding/removing accounts &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32930"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32930&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;ve also been busy working on bug fixes (which rolled up into the point releases), and are also working on Fediscovery and on quote posts.&lt;/p&gt;
&lt;p&gt;Among other contributors, we&amp;rsquo;d also like to say Thank You to Matt &lt;a href="https://github.com/mjankowski"&gt;@mjankowski&lt;/a&gt; for tirelessly triaging PRs and Issues and helping us to get our backlogs into better shape - for a popular project like this one, it can be a lot of work 🙏🏻&lt;/p&gt;
&lt;h3 id="android"&gt;Android&lt;/h3&gt;
&lt;p&gt;The most recent Android release had a number of visual updates: the ability to use a default Material palette; a redesign of the media viewer; and the ability to crop avatars are probably the most noticeable ones.&lt;/p&gt;
&lt;h3 id="ios"&gt;iOS&lt;/h3&gt;
&lt;p&gt;Just in time for Giving Tuesday, our update 2024.11 shipped with the ability to show members of &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt; a banner at the bottom of their timeline inviting support for Mastodon’s continued development.&lt;/p&gt;
&lt;p&gt;This version also made several improvements to filters and content warnings, most importantly that filtered posts now take up less space and tell you which filter they triggered! Also, filters with the “hide” action now really do remove posts from your feed completely. Finally, content warnings now function as they do on the web, blurring only the attached media if the content warning message is empty.&lt;/p&gt;
&lt;p&gt;We’ve fixed a few longstanding privacy issues, so that when you log out of an account (or delete the app from your device and reinstall it), you will be required to re-enter your username and password to regain access to the account. And we’ve made a few improvements to the experience of using the app with a brand new account: &amp;ldquo;Find people to follow&amp;rdquo; is now easier to exit from, and posts from anyone you’ve just followed will show up in your feed immediately.&lt;/p&gt;
&lt;p&gt;Finally, there are a few small visual improvements, including that the Dark Mode icon now has a dark ‘m’, and a large amount of code change that will hopefully mean fewer crashes right away and make further stability improvements in the future easier to achieve.&lt;/p&gt;
&lt;h2 id="fediscovery-project"&gt;Fediscovery Project&lt;/h2&gt;
&lt;p&gt;In case you missed it: &lt;a href="https://www.fediscovery.org/"&gt;Fediscovery&lt;/a&gt; (full title, Fediverse Discovery Providers) is a project to explore decentralised search and discovery for the Fediverse as a whole. This is a new service for ActivityPub-compatible platforms.&lt;/p&gt;
&lt;p&gt;Work on establishing a solid base for providers is ongoing, and we have been able to publish the first draft for a provider to register to data updates from a configured instance. This will allow discovery providers to know when there are new (or updated, or deleted) posts or accounts so it can index them. No data is directly sent to the provider, but only references that the provider can fetch over ActivityPub, using it’s own actor. You can read more about it (and leave your comments) &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/pull/36"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A proof of concept implementation is also in progress, as writing specifications without experimenting is not the best way to ensure that they are good in practice. This will help us ensure that the specifications can be translated to working code, and to show some real progress!&lt;/p&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;p&gt;As usual, we&amp;rsquo;ve been on the look out for interesting links and projects to share here on the blog. Here&amp;rsquo;s what came across &lt;a href="https://macaw.social/@andypiper"&gt;Andy&amp;rsquo;s&lt;/a&gt; radar this month&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://scholar.social/@gedankenstuecke"&gt;Bastian&lt;/a&gt; shared &lt;a href="https://tzovar.as/mastodon-rss/"&gt;a way to build an RSS feed from popular links shared in your Mastodon timeline&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Do things with your account archive!
&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://github.com/s427/MARL"&gt;lightweight way to read and explore a Mastodon account archive&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Build &lt;a href="https://github.com/lmorchard/fossilizer"&gt;a static site from your account archive&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Explore &lt;a href="https://github.com/AMNatty/Mastodon-Circles"&gt;a visual representation of your Mastodon follow graph&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An &lt;a href="https://s-h-gamelinks.github.io/activity-pub-relay/"&gt;ActivityPub relay&lt;/a&gt; written in Ruby.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And finally&amp;hellip; &lt;a href="https://fosstodon.org/@batvin3211/113624161661746400"&gt;mmm, cookies&lt;/a&gt;! 🍪&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you&lt;/h2&gt;
&lt;p&gt;Mastodon is an open source project - the team relies on donations to exist, and word-of-mouth to grow.&lt;/p&gt;
&lt;p&gt;This is a critical time in the history of the internet, and we strongly believe that a sustainable, free and open social web must continue to exist.&lt;/p&gt;
&lt;p&gt;We are so grateful for your support and contributions to our project!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, October 2024</title><link>https://blog.joinmastodon.org/2024/11/trunk-tidbits-october-2024/</link><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/11/trunk-tidbits-october-2024/</guid><description>&lt;p&gt;Welcome back to our monthly engineering series. In October, our long-anticipated plushies got out into the wild (mostly in Europe, for now), and we were busy tuning the code and planning what&amp;rsquo;s next.&lt;/p&gt;
&lt;p&gt;This is also a larger entry in our blog series, for updates from around our community.&lt;/p&gt;
&lt;h2 id="new-arrivals"&gt;New arrivals&lt;/h2&gt;
&lt;p&gt;We are really excited to welcome &lt;a href="https://mastodon.social/@whattherestimefor"&gt;Shannon Hughes&lt;/a&gt; to our core development team, to work on our iOS experience. Big thanks to our friends Marcus and Nathan for looking after the app over the past couple of years, as well. Shannon has already started to get to work on improvements, so look out for more in the coming months!&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://mastodon.social/@MastodonEngineering/113385884140450090/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://mastodon.social/@MastodonEngineering/113385884140450090" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @MastodonEngineering@mastodon.social&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://mastodon.social/" async src="https://mastodon.social/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Shannon was not the only newcomer! We aim to keep this blog series focused on the code, but we were excited that the initial batch of &lt;a href="https://mastodon.social/tags/Plushtodon"&gt;#Plushtodon&lt;/a&gt; took the world by storm in October - check out &lt;a href="https://mastodon.social/tags/Plushtodon"&gt;the hashtag&lt;/a&gt;, for photos of happy Mastodons finding their new homes! We&amp;rsquo;re working to help them reach the UK and the US, as well; stay tuned to &lt;a href="https://mastodon.social/@Mastodon"&gt;our Mastodon posts&lt;/a&gt; and &lt;a href="https://shop.joinmastodon.org/"&gt;merch store&lt;/a&gt; for more on this.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="wild_plush.jpeg" class="rounded-lg shadow-lg"
 alt="A wild #Plushtodon appeared!"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;A wild #Plushtodon appeared!&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;We released &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.1"&gt;version 4.3.1&lt;/a&gt;, which mostly features a number of smaller fixes and polish to the main 4.3.0 release. Instance administrators are encouraged to upgrade (if you have not already done so).&lt;/p&gt;
&lt;h2 id="recent-work"&gt;Recent work&lt;/h2&gt;
&lt;p&gt;In October, we reviewed and merged 234 Pull Requests (167 with translation and dependency updates subtracted from the total) from 24 authors.&lt;/p&gt;
&lt;p&gt;We really appreciate the contributions and support. If you would like to get involved, we have some &lt;a href="https://github.com/mastodon/mastodon/labels/help%20welcome"&gt;issues tagged &amp;ldquo;help welcome&amp;rdquo;&lt;/a&gt;, including &lt;a href="https://github.com/mastodon/mastodon/issues/32023"&gt;this one for Rails/backend&lt;/a&gt;, and &lt;a href="https://github.com/mastodon/mastodon/issues/29991"&gt;this one for React/frontend&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="backend"&gt;Backend&lt;/h3&gt;
&lt;p&gt;The month started with a focus on small bug fixes following the 4.3.0 release, that made it into 4.3.1.&lt;/p&gt;
&lt;p&gt;Here is a list of the notable changes that were merged in October, and will appear in the next Mastodon release:&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Removed support for authenticating to the API using username and password, as this can cause security issues, and this usage has been strongly discouraged by OAuth security recommendations for several years. This is a change that will affect API libraries that implemented username and password authentication, so check for compatibility if you&amp;rsquo;re using one of these - you&amp;rsquo;ll want to find a library that supports OAuth tokens, and generate one for your app. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30960"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30960&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/thisismissem" class="underline"&gt;thisismissem&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added back a 6 hour mute option, in addition to the existing 1, 7 and 30 days. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32522"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32522&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Group follow notifications. This can be disabled in the notification settings. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32520"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32520&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added a way for push notification endpoints to cancel a push subscription. This is especially useful if your push notification server handles things asynchronously and you know that a subscription token has been permanently invalidated. For example, we are &lt;a href="https://github.com/mastodon/webpush-apn-relay/pull/8"&gt;updating our own mobile notification server&lt;/a&gt; to benefit from this feature. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32626"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32626&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Improved the instructions to set up the &lt;code&gt;fediverse:creator&lt;/code&gt; tag. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32383"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32383&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The look of Filters and Content Warnings have been adjusted based on community feedback. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32543"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32543&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Text formatting in posts should look better (and is aligned with our latest design on Android). Right now it is not possible to post formatted text on Mastodon directly, but supporting this is on the roadmap. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32633"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32633&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Like and boost counts for remote posts should now be more accurate, as they are fetched when a status is refreshed. This is not real-time, and is only a first step toward better support for remote-content synchronisation. Thanks to &lt;a href="https://github.com/sneakers-the-rat"&gt;@sneakers-the-rat&lt;/a&gt; for this contribution, and other PRs that we are currently reviewing. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32620"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32620&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/sneakers-the-rat" class="underline"&gt;sneakers-the-rat&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 If you open a poll on a Mastodon instance other that your own, and try to vote, we now show a modal to direct you to your server. This is similar to boosting or following. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32609"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32609&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/thisismissem" class="underline"&gt;thisismissem&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id="android"&gt;Android&lt;/h3&gt;
&lt;p&gt;Many small quality of life improvements have been made to our app over the past month. You will also find that support has been added for displaying a subset of formatted text (bold, italic, strikethrough, code spans, lists, blockquotes); creating posts with this markup is not yet supported, but this is on our roadmap.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Added an option to use the Mastodon color theme (instead of Material You).&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Support for the color contrast setting in Android 15.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 New look for the media viewer.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 You can now crop your profile picture when editing your profile.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 You can now long-press &amp;ldquo;Add media&amp;rdquo; in the composer to bring up the file picker.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 New follower notifications now appear grouped.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Directional loading for gaps in timelines: load newer posts when scrolling up, older when down.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id="ios"&gt;iOS&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@whattherestimefor"&gt;Shannon&lt;/a&gt; has joined the core development team, to work on the iOS app.&lt;/p&gt;
&lt;p&gt;As well as learning the internals, Shannon has been fixing some &amp;ldquo;random&amp;rdquo; crashes tied to how authentication is handled, as well as making small UI fixes and improvements. Expect to see some more visible changes in the coming weeks, as she starts working on larger pieces.&lt;/p&gt;
&lt;h3 id="fediscovery"&gt;Fediscovery&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;specification&lt;/a&gt; work on Fediverse Auxiliary Service Providers (the archetype of &lt;a href="https://fediscovery.org"&gt;Fediverse Discovery Provider&lt;/a&gt;) is moving forwards, thanks to some good feedback from the community. We switched to a simpler authentication model that does not involve OAuth, as feedback showed that it was not the best technical way to achieve what we needed.&lt;/p&gt;
&lt;p&gt;Next, the focus is on having a way for providers to request data from an instance, so that the various discovery modules can build an index. We will open a Pull Request with this specification soon, to gather more community feedback.&lt;/p&gt;
&lt;h2 id="community-news"&gt;Community news&lt;/h2&gt;
&lt;p&gt;A busy month around our community!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We added a short list of our recently published blog posts to the main README on our &lt;a href="https://github.com/mastodon"&gt;GitHub organisation page&lt;/a&gt;. Hopefully, more people will discover Trunk &amp;amp; Tidbits, and follow along with our development progress.&lt;/li&gt;
&lt;li&gt;Our friends at Datadog &lt;a href="https://opensource.datadoghq.com/projects/mastodon/"&gt;published a case study featuring Mastodon&lt;/a&gt; as part of their Datadog for Open Source Projects program. In particular, this highlights the value of the &lt;a href="https://opentelemetry.io/"&gt;OpenTelemetry&lt;/a&gt; support in Mastodon 4.3.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fosdem.org/2025/"&gt;FOSDEM 2025&lt;/a&gt; is coming in February. We&amp;rsquo;re excited that &lt;a href="https://socialhub.activitypub.rocks/t/social-web-devroom-at-fosdem-2025/4709"&gt;a Social Web Devroom&lt;/a&gt; is happening (and, we&amp;rsquo;ll be submitting to the Call for Papers). The Mastodon team has also applied for a stand, after the success of our table in 2024 - look out for future news on this.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; from our team was a guest on &lt;a href="https://hackaday.com/2024/10/16/floss-weekly-episode-805-mastodon-bring-your-own-algorithm/"&gt;FLOSS Weekly episode 805&lt;/a&gt;, to talk about the version 4.3 release. There are video and audio versions of the conversation that you can check out, if you&amp;rsquo;re interested.&lt;/li&gt;
&lt;li&gt;The recent &lt;a href="https://www.altparty.org/"&gt;Alt Party&lt;/a&gt; had a neat photo printer that printed Mastodon posts, and &lt;a href="https://github.com/hacklab-fi/fediphoto"&gt;the code is available&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A number of folks have posted examples of integrating the author attribution feature, aka the &lt;code&gt;fediverse:creator&lt;/code&gt; tag, into different blog platforms:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://social.lol/@robb"&gt;Robb Knight&lt;/a&gt; wrote a &lt;a href="https://rknight.me/blog/setting-up-mastodon-author-tags/"&gt;general post&lt;/a&gt; about it.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fosstodon.org/@drfootleg"&gt;Dr Footleg&lt;/a&gt; shared &lt;a href="https://adventures-with-pi.blogspot.com/2024/10/setting-up-author-attribution-for.html"&gt;how to do this with Blogger&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; posted &lt;a href="https://macaw.social/@andypiper/113311819856439844"&gt;one example&lt;/a&gt; of how to do this with WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="bots-in-spaaaace"&gt;Bots&amp;hellip; In&amp;hellip; Spaaaace&lt;/h3&gt;
&lt;p&gt;Sadly, after many years, the &lt;a href="https://botsin.space"&gt;botsin.space&lt;/a&gt; Mastodon instance will be closing in December 2024 - if you&amp;rsquo;ve missed the news, you can &lt;a href="https://muffinlabs.com/posts/2024/10/29/10-29-rip-botsin-space/"&gt;read about it on the muffinlabs website&lt;/a&gt;. Folks with apps / bots / accounts on that instance should already have seen the announcement notification (and, depending on account settings, may have had an email) with a reminder to look for somewhere to migrate their apps.&lt;/p&gt;
&lt;p&gt;There are a number of options if you run one of the bots affected by this change. Here is a short list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look for a new Mastodon instance. One option &lt;em&gt;could&lt;/em&gt; be &lt;a href="https://mastodon.bot"&gt;mastodon.bot&lt;/a&gt; - although, it looks like it needs to be updated to the latest Mastodon version, so do look around, other instances are available! If you set up an account on a different server before botsin.space goes away, you can use the &lt;a href="https://docs.joinmastodon.org/user/moving/"&gt;move account option&lt;/a&gt; to migrate the bot&amp;rsquo;s follower and following networks to the new home instance.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://botwiki.org"&gt;Botwiki&lt;/a&gt; continues to be an amazing resource for bot developers of all kinds, and has a &lt;a href="https://botwiki.org/resources/fediverse-bots/"&gt;list of resources for Fediverse bot creators&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@edent"&gt;Terence Eden&lt;/a&gt; has created an interesting new single-purpose ActivityPub app - &lt;a href="https://shkspr.mobi/blog/2024/11/introducing-activitybot-the-simplest-way-to-build-mastodon-bots/"&gt;ActivityBot&lt;/a&gt;- that makes it easy to build and host your own bot directly, without needing to live on a Mastodon instance (but your app will still be accessible in the Fediverse as a whole).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;rsquo;d like to say &lt;strong&gt;Thank You&lt;/strong&gt; to &lt;a href="https://muffin.industries/@colin"&gt;Colin&lt;/a&gt;, the owner of botsin.space, for providing a nice home for so many bots on Mastodon over the past seven years. What a lovely space it was 💜 🤖 🙏&lt;/p&gt;
&lt;h2 id="gratitude"&gt;Gratitude&lt;/h2&gt;
&lt;p&gt;The whole Mastodon team values your support for our work and platform, your contributions, and your feedback.&lt;/p&gt;
&lt;p&gt;Now is a more important time than ever to create a social web that is open, independent, and sustainable! Our work depends on donations, and we appreciate your continued support.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, September 2024</title><link>https://blog.joinmastodon.org/2024/10/trunk-tidbits-september-2024/</link><pubDate>Thu, 10 Oct 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/10/trunk-tidbits-september-2024/</guid><description>&lt;p&gt;Hello, friends! It’s time for another installment of our engineering updates series. Here’s what’s been happening in the code this past month.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;Mastodon 4.3 is here! After 12 months of hard work, several beta versions, and a release candidate for testing, we’re excited to share version 4.3 with you. Check out the full details in our &lt;a href="https://blog.joinmastodon.org/2024/10/mastodon-4.3/"&gt;launch blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Additionally, we’ve released patch versions &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.13"&gt;4.2.13&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.20"&gt;4.1.20&lt;/a&gt;, and we recommend that all instances upgrade to these latest updates.&lt;/p&gt;
&lt;p&gt;Please note, the Mastodon 4.1.x series is now deprecated and will reach End of Life on April 8, 2025 (six months after the release of 4.3.0). We recommend updating to 4.2.x or 4.3.x as soon as possible.&lt;/p&gt;
&lt;h2 id="recent-work"&gt;Recent work&lt;/h2&gt;
&lt;p&gt;This update covers changes since the last edition of Trunk &amp;amp; Tidbits, so there may be some overlap with the 4.3 release notes.&lt;/p&gt;
&lt;p&gt;In September, we reviewed and merged 298 pull requests (224 excluding translation and dependency updates) from 14 contributors.&lt;/p&gt;
&lt;p&gt;Interested in getting involved? &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;Start here&lt;/a&gt; for issues covering both bug fixes and new features for the backend and frontend.&lt;/p&gt;
&lt;h2 id="web-and-backend"&gt;Web and Backend&lt;/h2&gt;
&lt;p&gt;Here’s a look at some key updates:&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 You can now allow domains to credit you in link previews using &lt;code&gt;fediverse:creator&lt;/code&gt;. This setting is available in your account settings under &lt;strong&gt;Profile &amp;gt; Verification&lt;/strong&gt; and is federated using a new &lt;code&gt;attributionDomains&lt;/code&gt; property in the &lt;a href="https://docs.joinmastodon.org/spec/activitypub/#properties-used-1"&gt;ActivityPub profile object&lt;/a&gt;. Learn more in &lt;a href="https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/"&gt;the blog post&lt;/a&gt;. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31819"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31819&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The media viewer has been improved. The alt badge can now be clicked to read the text, the show/hide button is more explicit, the styling has been slightly adjusted, and the media tab in profiles has a fresh look. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31807"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31807&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31852"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31852&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32058"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32058&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/319672"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #319672&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 You can now reorder media in the post composer via drag-and-drop. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32093"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32093&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 Redis Sentinel is now fully supported. Thanks to @&lt;a href="https://github.com/gmemstr"&gt;gmemstr&lt;/a&gt; for the initial work &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/26571"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #26571&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gmemstr" class="underline"&gt;gmemstr&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 and @&lt;a href="https://github.com/ThisIsMissEm"&gt;ThisIsMissEm&lt;/a&gt; for the streaming improvements that enabled this &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31623"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31623&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31744"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31744&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31767"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31767&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31768"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31768&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 If an instance administrator enables image processing using &lt;code&gt;libvips&lt;/code&gt; (we recommend it!), link preview images can now be up to 8MB, up from the previous 2MB limit. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31904"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31904&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Embedded posts now use the same components as the main Web UI, ensuring a consistent design. We&amp;rsquo;ve also improved the embed code in case the JavaScript fails to load, and updated the &amp;ldquo;Get Embed Code&amp;rdquo; modal. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31801"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31801&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31766"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31766&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Grouped notifications are now enabled for all users. We’ve also stabilized the API for grouped notifications, and encourage client developers to implement support for it. The backend also now supports grouping follow notifications, but this is not yet available in the Web UI. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31840"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31840&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31929"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31929&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32805"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32805&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 We now expose like and boost counts in ActivityPub &lt;code&gt;Note&lt;/code&gt; objects. This should allow more accurate counts for remote posts in the future. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32007"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32007&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The &lt;code&gt;summary&lt;/code&gt; field in non-&lt;code&gt;Note&lt;/code&gt; objects is now treated as HTML, supporting the same limited markup as posts. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/28629"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #28629&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Menrath" class="underline"&gt;Menrath&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 When receiving many follow notifications (e.g., during account migrations), the web UI previously made excessive API requests, potentially leading to rate-limiting. This has been resolved by batching those requests. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32042"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32042&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 When blocking a domain, the confirmation modal now shows how many follows and followers you will lose. There is also a new API endpoint available for app developers to retrieve this information. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32032"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32032&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Translators now have access to the translatable strings for the current stable Mastodon version, which will allow for updates in patch releases. If you&amp;rsquo;d like to help with translations, you can participate &lt;a href="https://crowdin.com/project/mastodon"&gt;via Crowdin&lt;/a&gt;. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/32174"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #32174&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Special thanks to @&lt;a href="https://github.com/JoeDupuis"&gt;JoeDupuis&lt;/a&gt;, for submitting &lt;a href="https://github.com/mastodon/mastodon/pull/32080"&gt;a PR to migrate to a new Paperclip Adapter for Azure Storage&lt;/a&gt;. This means Azure storage support will not be deprecated, and Mastodon 4.4 will switch to this new library.&lt;/p&gt;
&lt;p&gt;With the 4.3 release complete, we’re turning our focus to 4.4, which will include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quote Posts:&lt;/strong&gt; We are resuming work on this long-awaited feature, and it will be our main focus for the rest of the year.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block list improvements:&lt;/strong&gt; We are evaluating several improvements, including subscribing to external blocklists and offering an optional default “worst of the worst” blocklist for new Mastodon installs. We’re also exploring ways for operators to approve blocks from external lists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Post Parsing:&lt;/strong&gt; We’re experimenting with potentially changing to a new parser for posts, which will be more modular and enable features like basic text formatting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mobile-apps"&gt;Mobile apps&lt;/h2&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;p&gt;We completed the recruitment of our new iOS developer; she will begin in 2 weeks. We received our first application on 25 July, and closed the role just over 9 weeks later - a great turnaround given that our recruitment team was away for 3 weeks during the summer.&lt;/p&gt;
&lt;p&gt;Thanks to our incredible community and network, the quality of candidates was the strongest we’ve ever seen!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fun fact&lt;/strong&gt;: Out of 46 applicants that applied, we interviewed 39% of them - the highest conversion from the application form to a screening interview we’ve had.&lt;/p&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;During September, we landed a number of updates in the Android app to support the new features in 4.3:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grouped notifications are now available for users on servers running Mastodon 4.3.&lt;/li&gt;
&lt;li&gt;Posts and notifications were redesigned to match the latest look and feel.&lt;/li&gt;
&lt;li&gt;Notifications about the impact of domain blocks (lost follow connections) are now available.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="fediscovery"&gt;Fediscovery&lt;/h1&gt;
&lt;p&gt;At the September Fediforum event, we introduced the Fediverse Discovery Providers project, also known as &lt;a href="https://www.fediscovery.org/"&gt;Fediscovery&lt;/a&gt;. If you&amp;rsquo;ve been following the Trunk &amp;amp; Tidbits series, you’ll remember we mentioned plans to share more details about this initiative. This project is funded by the European Commission through the NGI Search program.&lt;/p&gt;
&lt;p&gt;As part of this work, we released the first specification for “Fediverse Auxiliary Service Providers.” This will enable Fediverse server operators to opt in to additional services that extend the capabilities of their software. You can find all the details &lt;a href="https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications"&gt;in our repository&lt;/a&gt;, and we encourage your feedback.&lt;/p&gt;
&lt;p&gt;We’re currently experimenting with the first building block: allowing a provider to receive data (such as accounts and statuses) from connected instances.&lt;/p&gt;
&lt;p&gt;A big shout out to one of our core developers, &lt;a href="https://upp2.com/@dave"&gt;David&lt;/a&gt;, for leading this effort!&lt;/p&gt;
&lt;h1 id="from-the-wider-community"&gt;From the wider community&lt;/h1&gt;
&lt;p&gt;One of our community members, &lt;a href="https://framapiaf.org/@gee/"&gt;@gee@framapiaf.org&lt;/a&gt;, recently pointed out that &lt;a href="https://framapiaf.org/@gee/113236663066085795"&gt;you can now add your Mastodon profile link to your Steam profile&lt;/a&gt;. Meanwhile, our developer advocate &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; has suggested to Ko-fi that they add Mastodon as a social media option, but we’re still waiting for them to implement it. It would be great to see more platforms supporting Fediverse profiles!&lt;/p&gt;
&lt;h1 id="thank-you"&gt;Thank you&lt;/h1&gt;
&lt;p&gt;We truly appreciate your support and feedback. September was a fantastic month, with two betas and a release candidate for 4.3, and your comments and input helped to shape the final release. We hope you enjoy the new features and improvements - we’re already working on more for the future.&lt;/p&gt;
&lt;p&gt;As always, if you want to help us, we appreciate your donations.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 4.3</title><link>https://blog.joinmastodon.org/2024/10/mastodon-4.3/</link><pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/10/mastodon-4.3/</guid><description>&lt;p&gt;Mastodon 4.3 just landed! If you’re a &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt; user, you might have already seen some of this in action as we’ve been gradually rolling out these updates over the course of the last 11 months in nightly releases, but we’re finally making a new stable release available to the community. If you use a different server, you will get access to these improvements once your server operator upgrades.&lt;/p&gt;
&lt;h3 id="notifications"&gt;Notifications&lt;/h3&gt;
&lt;p&gt;On Mastodon, your experience depends a lot on the moderation style of the server that hosts your account, but your unique ability to choose a server that suits your needs the best is useless if you don’t have much insight into how moderation decisions impact you. If a moderator decision results in you losing followers, or no longer being able to follow people from another server, you will now be notified and have the ability to export a list of the affected profiles.&lt;/p&gt;
&lt;p&gt;Also, if a moderator decision targets your account specifically, you will now receive an in-app notification so you can’t miss it.&lt;/p&gt;
&lt;p&gt;We’re also bringing two new major features to help people deal with unwanted attention. Notification grouping has arrived in Mastodon, allowing you to make sense of your notifications even if your posts are going viral. Instead of inundating your screen with hundreds of individual notifications for the same post, you’ll see a summary of how many people boosted or favourited it.&lt;/p&gt;
&lt;p&gt;&lt;video src="filtering.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’re also introducing a brand new system for filtering unwanted notifications. You get to decide what happens to notifications from people you don’t follow, who aren’t following you, recently created accounts, or unsolicited private mentions. You can either send them to the void immediately, never to be seen again, or put them into a special inbox you can peruse when you want.&lt;/p&gt;
&lt;h3 id="design"&gt;Design&lt;/h3&gt;
&lt;p&gt;One of the ongoing efforts is to make Mastodon easy and delightful to use. We’ve invested a significant amount of money and time into working with professional designers and performing user testing over the last few years, but we really ramped up our efforts in 2023. Mastodon is quite a large application, and our resources remain very constrained compared to our corporate competitors, but we’ve made significant progress on improving the look and feel of Mastodon across the board.&lt;/p&gt;
&lt;p&gt;&lt;video src="compose.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We have redesigned the new post composer to be much more intuitive to use, to make sure you get your post right the first time. Not only does it look better, but you can now re-arrange media you’ve uploaded as you see fit, and see exactly what layout it will be displayed in. We’ve also made content warnings and word filters easier to notice and expand.&lt;/p&gt;
&lt;p&gt;Across the web app, our iconography and color palette got a refresh, link previews look even better, and you can now hover over anyone’s name to peek at their profile and quickly follow or unfollow them. We also redesigned all of the “utility” emails (password resets, follow notifications, etc.) as well as the first welcome email to help you identify what’s most important.&lt;/p&gt;
&lt;p&gt;Among various redesigned dialogs, new confirmation dialogs for muting and blocking describe exactly what effects muting and blocking will have. If you are about to block another server, we’ll show you exactly how many followers you would lose to help avoid potential mistakes. In the spirit of surfacing product education in more areas, clicking the domain on someone’s profile now brings up information about Mastodon’s decentralized nature.&lt;/p&gt;
&lt;h3 id="onboarding-and-discovery"&gt;Onboarding and discovery&lt;/h3&gt;
&lt;p&gt;Helping new users get started on Mastodon has been a key focus for us over the past few years. We found that people would skip follow recommendations during onboarding and end up with a boring feed that doesn’t offer anything new for hours or days.&lt;/p&gt;
&lt;p&gt;We value the user’s agency over what is shown in the home feed, and pride ourselves on being a reliable platform to keep up with the people you care about without opaque algorithms randomizing which things you see in which order. This presents a challenge when other platforms have created an expectation that the user only has to passively consume what is generated for them instead of actively curating what they want to see.&lt;/p&gt;
&lt;p&gt;On Mastodon, you need to follow people or hashtags to see them in your home feed. To bridge the gap for people who fly past the onboarding, we’ve introduced a little carousel with follow recommendations that will appear above the first post older than four hours on the first page of your home feed.&lt;/p&gt;
&lt;p&gt;&lt;video src="carousel.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’ve also significantly improved the system of follow recommendations as a whole, mixing generalized results like profiles popular in your language with personalized ones like profiles that a lot of the people you follow, follow. For added transparency, the reason for the recommendation is displayed along with it.&lt;/p&gt;
&lt;h3 id="helping-writers-and-journalists"&gt;Helping writers and journalists&lt;/h3&gt;
&lt;p&gt;In this version we’re introducing a new way to highlight writers and journalists on the fediverse. By adding a single line to their HTML, publishers can feature the fediverse profile of the page author in the link previews on Mastodon. That way, when lots of different people are sharing the link, or the link is trending in the News tab, you can easily navigate to the author’s fediverse profile and follow them right from within Mastodon to receive future updates. Publications like The Verge and TechCrunch are already using this.&lt;/p&gt;
&lt;p&gt;&lt;video src="author.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’ve also put a fresh coat of paint on our website embeds. You’ve always been able to embed a Mastodon post on your own website, but we’ve made them look a lot better and gave them a more graceful fallback when the source is slow to load or no longer available. Of course, the dialog for embedding a post now looks a lot better as well, offering a simple click to copy button. Keep in mind that you can only embed posts that are public!&lt;/p&gt;
&lt;h3 id="whats-next"&gt;What’s next?&lt;/h3&gt;
&lt;p&gt;Now that 4.3 is done, our focus for the next release will be on implementing the highly requested features of quote posts, as well as the ability for server operators to subscribe to managed blocklists, which along with our new initiative of &lt;a href="https://fediscovery.org"&gt;pluggable fediverse discovery providers&lt;/a&gt; should make running small and medium-sized fediverse servers much more viable; and with Ghost entering the fediverse, further improving how long-form content from other fediverse platforms is displayed within Mastodon.&lt;/p&gt;
&lt;p&gt;We are extremely grateful to everyone who supports Mastodon through Patreon, our 501(c)3 in the US, and other means. Unlike our competitors, we don’t take venture capital, don’t sell ads and don’t sell your data. While other social media platforms have teams of hundreds of engineers working on them, we operate on less than 500K USD annually with a team of only 4 full-time employees, and a number of contractors. If you’d like to see the pace of development increase, &lt;strong&gt;please consider chipping in&lt;/strong&gt; so we can hire more people!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="in-other-news"&gt;In other news&lt;/h3&gt;
&lt;p&gt;&lt;video src="plushie.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The Mastodon stuffed toy is &lt;em&gt;almost&lt;/em&gt; ready to go on sale. We&amp;rsquo;re waiting for the shipments to arrive at the warehouse. Find out more in the &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-stuffed-toy-coming-soon/"&gt;original announcement&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, August 2024</title><link>https://blog.joinmastodon.org/2024/09/trunk-tidbits-august-2024/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/09/trunk-tidbits-august-2024/</guid><description>&lt;p&gt;It was a big month for the Mastodon team, with a lot of work going into getting the first beta release of version 4.3 ready - but that&amp;rsquo;s not all that we&amp;rsquo;ve worked on. Here is our monthly update on what we&amp;rsquo;ve been up to.&lt;/p&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;p&gt;During August, we released versions &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.2.12"&gt;4.2.12&lt;/a&gt; (as well as a short-lived 4.2.11) and &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.1.19"&gt;4.1.19&lt;/a&gt;, with many bug fixes. If you are running the 4.2.x or 4.1.x series, we recommend that you upgrade to these latest versions.&lt;/p&gt;
&lt;p&gt;We also &lt;a href="https://mastodon.social/@MastodonEngineering/113012338363435978"&gt;released the first beta of Mastodon 4.3&lt;/a&gt;! This release includes a number of new features and improvements, including a new notifications screen, a new way to filter notifications, and a number of new APIs. Take a look at the full release notes &lt;a href="https://github.com/mastodon/mastodon/releases/tag/v4.3.0-beta.1"&gt;here&lt;/a&gt;. You will want to take a look at the requirements for upgrading to the new version, as many dependencies have been updated.&lt;/p&gt;
&lt;p&gt;We are already running the latest code on our own instances (&lt;code&gt;mastodon.online&lt;/code&gt; and &lt;code&gt;mastodon.social&lt;/code&gt;), but it is important to get input from elsewhere. We appreciate all the feedback we can get from those upgrading to and running 4.3.0-beta.1 with their Mastodon communities - you can help us to make the release version even better.&lt;/p&gt;
&lt;h2 id="current-work"&gt;Current work&lt;/h2&gt;
&lt;p&gt;Our &lt;em&gt;current&lt;/em&gt; plan is to release a second beta (i.e. 4.3.0-beta.2) in mid-September, with the final version of 4.3.0 coming 2-3 weeks after that.&lt;/p&gt;
&lt;h1 id="web-and-backend"&gt;Web and Backend&lt;/h1&gt;
&lt;p&gt;In August, we reviewed and merged 242 Pull Requests (163 with translation and dependency updates removed) from 18 authors. If you&amp;rsquo;re looking to get involved, &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;here&lt;/a&gt; is a great place to start - a list of issues covering bug fixes and features, for both the backend and frontend.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 A lot of work went into incorporating community feedback on the filtered notifications feature. You can now choose to drop messages rather than filtering them, reject or accept multiple ones at once, and the UI is much better. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31242"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31242&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31262"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31262&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31250"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31250&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31343"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31343&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31342"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31342&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31309"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31309&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31457"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31457&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Many small things have been tweaked in the new notifications screen. We enabled the new notifications (with grouping) for everyone on &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and &lt;a href="http://mastodon.online"&gt;mastodon.online&lt;/a&gt;, which gave us more feedback, and we are adjusting some things accordingly. It also helped to ensure that the new API did not cause significant performance issues. If you are a client application developer, you can &lt;a href="https://github.com/mastodon/mastodon/discussions/31618"&gt;provide feedback on the new notifications API&lt;/a&gt;, before we mark it as stable.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Font Awesome removal! The main app got its icons replaced with Material Icons a few months ago, but Font Awesome was still used in the Rails rendered views (preferences, admin &amp;amp; moderation panels). Thanks to &lt;code&gt;@mjankowski&lt;/code&gt;, those have been replaced as well, and we can now stop loading Font Awesome CSS &amp;amp; font files, which significantly reduces the page size.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 We added a new &lt;code&gt;api_versions&lt;/code&gt; property in &lt;code&gt;/api/v2/instance&lt;/code&gt; to provide a way for client apps to more easily detect the features available on the server. You can read more about this in the PR. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31354"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31354&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The recently added customisable instance icon is now available in the API &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30205"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30205&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-red-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;admin&lt;/span&gt;
 After being deprecated in 4.2, the &lt;code&gt;statsd&lt;/code&gt; integration has been removed. Check the 4.3 release notes for possible replacements. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30240"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30240&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The last confirmation modal, for boosting, has been updated to the new design. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31555"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31555&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Again, there have been lot of bug fixes and refactoring from our recurring (and new!) contributors - thanks a lot!&lt;/p&gt;
&lt;p&gt;One more thing: the Azure storage support is likely to be removed in the future, as Microsoft is abandoning their Ruby SDK. &lt;a href="https://github.com/mastodon/mastodon/discussions/31617"&gt;More information here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are currently working on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Polishing things before the 4.3 release, mostly around grouped notifications, along with some interface fixes.&lt;/li&gt;
&lt;li&gt;Launching a new project around Fediverse Discovery, thanks to a grant by the European Commission through their NGI Search program. More information very soon!&lt;/li&gt;
&lt;li&gt;Once 4.3 is branched out and in Release Candidate, we will focus on specification work for Quote Posts.&lt;/li&gt;
&lt;li&gt;We are also starting brainstorming around block list improvements. We did some preliminary work on this in 4.3, and we expect this to be one of the big features for 4.4.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="mobile-apps"&gt;Mobile apps&lt;/h1&gt;
&lt;p&gt;There has not been a lot of activity around the mobile apps in August, due to the summer vacations. The recruitment for our full-time iOS developer position is going well and should be over by the end of September.&lt;/p&gt;
&lt;p&gt;We would like to support the new grouped notifications in the mobile apps soon, as this is a very useful feature, and it will be our focus for the immediate future.&lt;/p&gt;
&lt;h1 id="around-the-community"&gt;Around the Community&lt;/h1&gt;
&lt;p&gt;Here are just a few of the things that we spotted from the developer community this past month!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The wonderful &lt;a href="https://vmst.io/@vmstan"&gt;@vmstan&lt;/a&gt; went through the documentation, and updated all of the screenshots to reflect the latest designs! You can see the &lt;a href="https://github.com/mastodon/documentation/pull/1520"&gt;pull request here&lt;/a&gt; and you can expect to see the updated documentation soon.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tomkahe.com/@tom/"&gt;Tom Casavant&lt;/a&gt; posted a blog entry about &lt;a href="https://tomcasavant.com/duckducksocial/"&gt;including Mastodon posts in DuckDuckGo search results&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@popey"&gt;Alan Pope aka Popey&lt;/a&gt; shared a new bot, &lt;a href="https://botsin.space/@UncleClive"&gt;Uncle Clive&lt;/a&gt;, to post the results of programs for the vintage / retro Spectrum computer. You can read about it in &lt;a href="https://newsletter.popey.com/archive/2024-08-23"&gt;his newsletter archive&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://mandarismoore.com/2024/08/16/introducing-stoot-for.html"&gt;Hugo shortcode, &lt;code&gt;stoot&lt;/code&gt;&lt;/a&gt; for including Mastodon posts in your site.&lt;/li&gt;
&lt;li&gt;Our Developer Relations human, &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt;, asked about what folks may not have seen that is built on the Mastodon API, and had responses ranging from an existing iOS app with a unique UI (&lt;a href="https://pipilo.thanel.me/"&gt;Pipilo&lt;/a&gt;), to a new app currently in iOS TestFlight (&lt;a href="https://fedicat.com/"&gt;Fedicat&lt;/a&gt;), to an new scheduling option (&lt;a href="https://mixpost.app/releases/pro#v2.3.0"&gt;MixPost&lt;/a&gt;). So now you know about them, too!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="gratitude"&gt;Gratitude&lt;/h1&gt;
&lt;p&gt;It is a pleasure to look back on the contributions from our community every month. The team wants to thank everyone who uses Mastodon and by doing so, helps to make it better. We are grateful for your support, your code, your bug reports, your translations, and your feedback. Thank you!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, July 2024</title><link>https://blog.joinmastodon.org/2024/08/trunk-tidbits-july-2024/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/08/trunk-tidbits-july-2024/</guid><description>&lt;p&gt;Hey, friends - here is another instalment in our engineering updates series. This is what has been happening in the code lately.&lt;/p&gt;
&lt;h2 id="team-updates"&gt;Team Updates&lt;/h2&gt;
&lt;p&gt;At the very end of July we &lt;a href="https://mastodon.social/@MastodonEngineering/112875546269005188"&gt;opened a role&lt;/a&gt; for an iOS developer to look after the official Mastodon for iOS app. If you are interested, the &lt;a href="https://jobs.ashbyhq.com/mastodon/bc91c481-d30a-4e73-9eb8-ac29f4e905e2"&gt;details of the role are available here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="current-work"&gt;Current work&lt;/h2&gt;
&lt;p&gt;We continue along the road to Mastodon 4.3, our next major release. We really &lt;em&gt;hoped&lt;/em&gt; to release a beta in July, but we got some feedback about the filtered notifications feature, and we are making a few changes to address some issues before releasing it more widely. It should be really close now!&lt;/p&gt;
&lt;p&gt;The changes described here are already available to users of instances that are running a recent “nightly” version (for example, &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt; or &lt;a href="https://mastodon.online"&gt;mastodon.online&lt;/a&gt;), and will come to others as part of the 4.3 release.&lt;/p&gt;
&lt;h1 id="web-and-backend"&gt;Web and Backend&lt;/h1&gt;
&lt;p&gt;In July, we reviewed and merged 186 Pull Requests (110 with translation and dependency updates removed) from 14 authors. We appreciate the contributions. If you would like to help, we have a &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;list of issues&lt;/a&gt; that you can start from.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Added a way to see all public posts sharing a trending link. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30840"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30840&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 The grouped notifications feature is merged, behind an experimental flag in notifications settings for now. We plan to make grouped notifications the default experience after the first beta is released. The API is not yet 100% final, but we think it should not change much; documentation will be published once the API becomes stable. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30440"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30440&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;, &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt; and &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 New API endpoints have been added to fetch the number of unread notifications (using the existing marker), for both the ungrouped (&lt;a href="https://docs.joinmastodon.org/methods/notifications/#unread-count"&gt;see docs&lt;/a&gt;) and grouped notifications. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31191"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31191&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Multiple improvements to metadata extraction when posting URLS. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30929"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30929&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30933"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30933&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30957"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30957&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30973"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30973&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/oneiros" class="underline"&gt;oneiros&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31144"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31144&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/adamniedzielski" class="underline"&gt;adamniedzielski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 We recently introduced cards when hovering over account names, but this was a distraction for some people (particularly when using the advanced web interface), so there is now a setting to disable them. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30931"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30931&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The non-React parts of the frontend (sign-in, sign-up, preferences, admin panel etc.) have been updated to the new UI colors. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31034"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31034&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 The various confirmation modals (except boosts) have been updated with a more modern look. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30884"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30884&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Moderators can now search for hashtags in the moderation interface. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30880"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30880&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-pink-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;security&lt;/span&gt;
 PKCE has been enabled for authenticating using OAuth. It is highly recommended for apps to use it. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/31129"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #31129&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;We are currently working on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Changing the filtered notifications, taking user feedback of the initial experience into account.&lt;/li&gt;
&lt;li&gt;Polishing the new grouped notifications, based on feedback and on and some performance data we are gathering.&lt;/li&gt;
&lt;li&gt;Discussing the best way to let applications know what is supported by the Mastodon API on a given instance. Currently, developers needs to either use the Mastodon version (not precise enough) or probe for API availability, which is painful and brittle.&lt;/li&gt;
&lt;li&gt;Releasing the first 4.3 beta. We have been saying this for some time now, but this is still our priority!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="mobile-apps"&gt;Mobile apps&lt;/h1&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;p&gt;This month, we released a new version of the app that adds a way to support Mastodon by making a donation to us. It will also allow us to experiment with a small, dismissible, one-time donation banner in the app, and see whether this is effective. This is only enabled for users on &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt; and &lt;a href="https://mastodon.online"&gt;mastodon.online&lt;/a&gt; for now, but is part of a bigger project to improve the Fediverse’s sustainability, and we plan to expand it to more instances later, allowing the instance administrators to more easily fund the infrastructure, while also supporting financing of the development of the software.&lt;/p&gt;
&lt;p&gt;We also updated the app description in the Play Store to better explain what Mastodon is, and what it brings to users.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This has been a long-requested feature: you can &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1325"&gt;now access your lists and followed hashtags from the app&lt;/a&gt;! Creating or editing lists is not there yet, but will be added in a future release.&lt;/li&gt;
&lt;li&gt;The new 4.3 filtered notifications feature is available in the app. It does not yet mirror the latest experience from the web (because we are still iterating on it), but the basics are there.&lt;/li&gt;
&lt;li&gt;Other bug fixes and stability improvements, including fixing the widgets and shortcuts, as well as &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1336"&gt;correctly counting URLs as 23 characters&lt;/a&gt;, regardless of their actual size.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can explore these improvements in the 2024.8 release of the app, and &lt;a href="https://github.com/mastodon/mastodon-ios/releases/tag/2024.8"&gt;read the full release notes on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="community-radar"&gt;Community radar&lt;/h1&gt;
&lt;p&gt;We’re always interested to hear what you’re building using the Mastodon API. This month, our Developer Advocate &lt;a href="https://macaw.social/@andypiper"&gt;Andy&lt;/a&gt; has been trying some of the nice command-line / terminal client apps that exist for Mastodon, for example &lt;a href="https://github.com/ihabunek/toot"&gt;toot&lt;/a&gt; and &lt;a href="https://tut.anv.nu/"&gt;tut&lt;/a&gt; - should we add a section to the client apps section of the website for these? Are there more of them that we don’t know about yet? Let us know what you think.&lt;/p&gt;
&lt;p&gt;If you are interested in trains and railways, you may also be interested in &lt;a href="https://stefanbohacek.online/@stefan"&gt;Stefan Bohacek&lt;/a&gt;’s recently launched &lt;a href="https://botsin.space/@trainstations"&gt;@trainstations@botsin.space bot&lt;/a&gt;. What are your favourite friendly, fun or useful bots? Let Andy know, and we may feature some in a future update.&lt;/p&gt;
&lt;h1 id="thank-you-for-using-mastodon"&gt;Thank you for using Mastodon&lt;/h1&gt;
&lt;p&gt;We are extremely grateful to have such an incredible community of users who believe in what we&amp;rsquo;re building, and contributors who support us in the code and documentation. Your support and engagement are what make Mastodon a platform that matters.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>The European Union must keep funding free software</title><link>https://blog.joinmastodon.org/2024/08/the-european-union-must-keep-funding-free-software/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/08/the-european-union-must-keep-funding-free-software/</guid><description>&lt;h1 id="the-european-union-must-keep-funding-free-software"&gt;The European Union must keep funding free software&lt;/h1&gt;
&lt;p&gt;The Next Generation Internet (NGI) program from the European Commission has been crucial for the development of many open-source products, including Mastodon. They are one of the best initiatives worldwide to finance work on OSS projects. The Mastodon project is supporting this open letter in favor of the NGI programs, and is calling on the European Commission to not shut them down.&lt;/p&gt;
&lt;h2 id="open-letter-to-the-european-commission"&gt;Open Letter to the European Commission&lt;/h2&gt;
&lt;p&gt;Since 2020, Next Generation Internet (&lt;a href="https://www.ngi.eu"&gt;NGI&lt;/a&gt;) programmes, part of European Commission&amp;rsquo;s Horizon programme, fund free software in Europe using a cascade funding mechanism (see for example &lt;a href="https://www.nlnet.nl/commonsfund"&gt;NGI0 Commons Fund&lt;/a&gt;). This year, according to the Horizon Europe working draft detailing funding programmes for 2025, we notice that Next Generation Internet is not mentioned any more as part of Cluster 4.&lt;/p&gt;
&lt;p&gt;NGI programmes have shown their strength and importance to supporting the European software infrastructure, as a generic funding instrument to fund digital commons and ensure their long-term sustainability. We find this transformation incomprehensible, moreover when NGI has proven efficient and economical to support free software as a whole, from the smallest to the most established initiatives. This ecosystem diversity backs the strength of European technological innovation, and maintaining the NGI initiative to provide structural support to software projects at the heart of worldwide innovation is key to enforce the sovereignty of a European infrastructure.
Contrary to common perception, technical innovations often originate from European rather than North American programming communities, and are mostly initiated by small-scaled organisations.&lt;/p&gt;
&lt;p&gt;Previous Cluster 4 allocated 27 million euros to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Human centric Internet aligned with values and principles commonly shared in Europe&amp;rdquo; ;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;A flourishing internet, based on common building blocks created within NGI, that enables better control of our digital life&amp;rdquo; ;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;A structured ecosystem of talented contributors driving the creation of new internet commons and the evolution of existing internet commons&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the name of these challenges, more than 500 projects received NGI funding in the first 5 years, backed by 18 organisations managing these European funding consortia.&lt;/p&gt;
&lt;p&gt;NGI contributes to a vast ecosystem, as most of its budget is allocated to fund third parties by the means of open calls, to structure commons that cover the whole Internet scope - from hardware to application, operating systems, digital identities or data traffic supervision. This third-party funding is not renewed in the current program, leaving many projects short on resources for research and innovation in Europe.&lt;/p&gt;
&lt;p&gt;Moreover, NGI allows exchanges and collaborations across all the Euro zone countries as well as &amp;ldquo;widening countries&amp;rdquo; &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, currently both a success and an ongoing progress, likewise the Erasmus programme before us. NGI also contributes to opening and supporting longer relationships than strict project funding does. It encourages implementing projects funded as pilots, backing collaboration, identification and reuse of common elements across projects, interoperability in identification systems and beyond, and setting up development models that mix diverse scales and types of European funding schemes.&lt;/p&gt;
&lt;p&gt;While the USA, China or Russia deploy huge public and private resources to develop software and infrastructure that massively capture private consumer data, the EU can&amp;rsquo;t afford this renunciation.
Free and open source software, as supported by NGI since 2020, is by design the opposite of potential vectors for foreign interference. It lets us keep our data local and favors a community-wide economy and know-how, while allowing an international collaboration.&lt;/p&gt;
&lt;p&gt;This is all the more essential in the current geopolitical context: the challenge of technological sovereignty is central, and free software allows to address it while acting for peace and sovereignty in the digital world as a whole.&lt;/p&gt;
&lt;p&gt;In this perspective, we urge you to claim for preserving the NGI programme as part of the 2025 funding programme.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Mastodon team supports this open letter, initially published by &lt;a href="https://ps.zoethical.org/pub/lettre-publique-aux-ncp-au-sujet-de-ngi/"&gt;petites singularités&lt;/a&gt;. The English translation has been provided by &lt;a href="https://www.ow2.org/view/Events/The_European_Union_must_keep_funding_free_software_open_letter"&gt;OW2&lt;/a&gt;. You too can support this campaign by publishing this letter &lt;a href="https://pad.public.cat/lettre-NCP-NGI"&gt;and adding yourself on this page&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;As defined by Horizon Europe, widening Member States are Bulgaria, Croatia, Cyprus, the Czech Republic, Estonia, Greece, Hungary, Latvia, Lituania, Malta, Poland, Portugal, Romania, Slovakia and Slovenia. Widening associated countries (under condition of an association agreement) include Albania, Armenia, Bosnia, Feroe Islands, Georgia, Kosovo, Moldavia, Montenegro, Morocco, North Macedonia, Serbia, Tunisia, Turkey and Ukraine. Widening overseas regions are : Guadeloupe, French Guyana, Martinique, Reunion Island, Mayotte, Saint-Martin, The Azores, Madeira, the Canary Islands.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Trunk &amp; Tidbits, June 2024</title><link>https://blog.joinmastodon.org/2024/07/trunk-tidbits-june-2024/</link><pubDate>Thu, 11 Jul 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/07/trunk-tidbits-june-2024/</guid><description>&lt;p&gt;Looking back at June (and just sneaking in to the start of July), we have a lot to share with you. Let’s dive in!&lt;/p&gt;
&lt;h1 id="growing-the-team"&gt;Growing the team&lt;/h1&gt;
&lt;p&gt;First of all, we are delighted to announce a new member of the core development team - &lt;a href="https://upp2.com/@dave"&gt;David Roetzel&lt;/a&gt; joined us as a core web developer. &lt;a href="https://mastodon.social/@Gargron/112717333579545073"&gt;Welcome, @dave!&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="keeping-things-secure"&gt;Keeping things secure&lt;/h1&gt;
&lt;p&gt;During June, we investigated and fixed (and tested the patches for) 3 security issues. They were part of our most recent security &lt;a href="https://github.com/mastodon/mastodon/releases"&gt;releases&lt;/a&gt; at the start of July. These are important updates for &lt;a href="https://mastodon.social/@MastodonEngineering/112729089400502697"&gt;the 4.2 and 4.1 releases, and nightly builds&lt;/a&gt;. Please make sure you are running the latest version of Mastodon to keep your instance secure.&lt;/p&gt;
&lt;p&gt;We care about the maintenance of our supported versions, so there is always a portion of work that goes into this strand of the team&amp;rsquo;s activities. We&amp;rsquo;re excited to bring you the new features mentioned below - but, making sure that Mastodon is secure and reliable is always our top priority, so that comes first.&lt;/p&gt;
&lt;p&gt;As a reminder, you can &lt;a href="https://mastodon.social/@MastodonEngineering"&gt;follow @MastodonEngineering&lt;/a&gt; to keep track of new releases and other important technical updates.&lt;/p&gt;
&lt;h1 id="current-development-work"&gt;Current development work&lt;/h1&gt;
&lt;p&gt;We are aiming to make the first beta of Mastodon 4.3 available during July.&lt;/p&gt;
&lt;p&gt;The changes list below are now available to users of instances that are running a recent &amp;ldquo;nightly&amp;rdquo; version (for example, &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; or &lt;a href="https://mastodon.online"&gt;mastodon.online&lt;/a&gt;), and will come to others as part of the full 4.3 release.&lt;/p&gt;
&lt;h2 id="web-and-backend"&gt;Web and Backend&lt;/h2&gt;
&lt;p&gt;In June, the team reviewed and merged 237 Pull Requests (162 when translation and dependency updates are taken out of that larger total), from 20 authors! Thank you to our contributors. If you would like to help, there are bug fixes, features, and improvements to be made across backend and frontend - &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;start here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 The grouped notifications backend has been merged. This is still experimental; the API might change. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29889"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29889&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-lime-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;developer&lt;/span&gt;
 The devcontainer setup has been improved, thanks to &lt;a href="https://social.polotek.net/@polotek"&gt;polotek&lt;/a&gt; asking us about it and the work of a number of contributors &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30548"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30548&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30547"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30547&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30502"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30502&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/fabiosammy" class="underline"&gt;fabiosammy&lt;/a&gt; and &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30566"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30566&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30592"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30592&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30593"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30593&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30603"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30603&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 &lt;code&gt;libvips&lt;/code&gt; support has been merged! ImageMagick is still available, but we plan to switch the default to &lt;code&gt;libvips&lt;/code&gt; in the next version, then remove ImageMagick support. &lt;code&gt;libvips&lt;/code&gt; ≥ 8.13 is required, and our official container images uses &lt;code&gt;libvips&lt;/code&gt; out of the box &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30090"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30090&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/gargron" class="underline"&gt;gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-violet-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;container&lt;/span&gt;
 &lt;code&gt;libvips&lt;/code&gt; and &lt;code&gt;ffmpeg&lt;/code&gt; are now built from source in our official container image, allowing us to use just the dependencies we need and to use the latest version, removing several hundred megabytes from the image. Those versions are also automatically tracked by Renovate, to ensure we update them. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30571"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30571&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30569"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30569&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The recently-introduced &lt;code&gt;read:me&lt;/code&gt; OAuth scope has been renamed to &lt;code&gt;profile&lt;/code&gt; for consistency &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30357"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30357&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Support for &lt;code&gt;fediverse:creator&lt;/code&gt; author links in the web UI. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30521"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30521&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 In order to support multiple authors for a &lt;code&gt;fediverse:creator&lt;/code&gt; link preview, we are introducing the &lt;code&gt;authors&lt;/code&gt; attribute in the REST API. This will contain the author name, optional URL, and optional Fediverse account. For now, this attribute cannot contain more than one author on Mastodon, but this might change. The &lt;code&gt;author_*&lt;/code&gt; attributes will be deprecated. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30846"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30846&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Mastodon now has account hover cards that show when hovering over an account name. We are still gathering feedback and tuning the feature, but it should be especially useful with the new grouped notifications. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30754"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30754&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;We are currently working on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finishing the frontend part of the grouped notifications feature. This is a lot of work to get all specific behaviour implemented, but we are nearing the end. We intend to release this as an experimental, opt-in, feature at first for a few weeks, to ensure it behaves correctly both in the UI and in terms of performance. This is the last piece to complete before the 4.3 beta can be released!&lt;/li&gt;
&lt;li&gt;Thinking about link preview federation. The first step is listing everything related to this concept, potential issues, points of concern&amp;hellip; and then, trying to find all possible ways of solving the issues. More news on this topic in the upcoming weeks!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Redesigned the &amp;ldquo;news&amp;rdquo; tab, to align with the web version.&lt;/li&gt;
&lt;li&gt;Implemented support for &lt;code&gt;fediverse:creator&lt;/code&gt; display in link previews.&lt;/li&gt;
&lt;li&gt;Polished the upcoming in-app donation feature.&lt;/li&gt;
&lt;li&gt;Multiple bug fixes and small improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Implemented &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1321"&gt;support for &lt;code&gt;fediverse:creator&lt;/code&gt; display&lt;/a&gt; in link previews.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1320"&gt;multiple bugs related to the translation feature&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;New &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1306"&gt;privacy &amp;amp; safety screen&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Reworked and fixed &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1316"&gt;timeline loading&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Other bug fixes and stability improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The focus for July on iOS will be on adding support for Lists, and the new grouped notifications feature coming in 4.3.&lt;/p&gt;
&lt;h1 id="around-the-community"&gt;Around the community&lt;/h1&gt;
&lt;p&gt;If you’re building something using Mastodon or the Mastodon API, let us know about it (you can use the #MastodonAPI hashtag, if you like). Here are some things we noticed this month that we thought you might like to know about, too!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Not one but &lt;em&gt;two&lt;/em&gt; new things from &lt;a href="https://stefanbohacek.online/@stefan"&gt;Stefan Bohacek&lt;/a&gt;: a &lt;a href="https://pinned-posts-organizer.stefanbohacek.dev/"&gt;pinned posts organizer&lt;/a&gt;, and a series of &lt;a href="https://stefanbohacek.com/project/fediverse-explorations/"&gt;Fediverse explorations&lt;/a&gt;. Thanks for sharing, Stefan!&lt;/li&gt;
&lt;li&gt;Frederik Elwert &lt;a href="https://fedihum.org/@felwert/112724461707800079"&gt;posted about&lt;/a&gt; a &lt;a href="https://github.com/frederik-elwert/mastodon-bookmark-search/"&gt;bookmarks app&lt;/a&gt;. It is an additional way to search your bookmarks on Mastodon (tip: you can use the &lt;code&gt;in:collection&lt;/code&gt; search operator to search your bookmarks, but that includes likes as well).&lt;/li&gt;
&lt;li&gt;Hexmasteen &lt;a href="https://chaos.social/@hexmasteen/112728534180475511"&gt;posted&lt;/a&gt; that &lt;a href="https://socialhub.io/en/"&gt;SocialHubIO&lt;/a&gt; now supports Mastodon.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="thank-you-for-using-mastodon"&gt;Thank you for using Mastodon&lt;/h1&gt;
&lt;p&gt;We&amp;rsquo;re happy to be able to build a platform that matters to so many people around the world. Spread the word!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Highlighting journalism on Mastodon</title><link>https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/</link><pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/</guid><description>&lt;p&gt;To reinforce and encourage Mastodon as the go-to place for journalism, we’re launching a new feature today. You will notice that underneath some links shared on Mastodon, the author byline can be clicked to open the author’s associated fediverse account, right in the app. This highlights writers and journalists that are active on the fediverse, and makes it easier than ever to follow them and keep up with their future work—potentially across different publications. Writers often work with different publishers over the span of their careers, but Mastodon is the perfect platform to amass a loyal audience that you, as the author, truly own, and can take with you across the fediverse.&lt;/p&gt;
&lt;p&gt;Some of the first websites adopting this feature are The Verge, MacStories, and MacRumors. If you have an account on &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and use the web version or one of our official mobile apps, you will see associated fediverse accounts underneath their articles, no matter who posts them. Of course, it’s also part of Mastodon’s API, so we expect to see support among the vast array of third party apps for Mastodon as well. All Mastodon features are always available to all third-party apps since the API that powers the web version and the official mobile apps is the exact same for everyone.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="screenshot-web-story.png" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;
&lt;div class="grid grid-cols-2 gap-4 not-prose my-8"&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="screenshot-web-link1.png" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="screenshot-web-link2.png" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="the-technical"&gt;The technical&lt;/h3&gt;
&lt;p&gt;We’ve decided to create a new kind of OpenGraph tag—the same kind of tags you have on your website to determine which thumbnail image will appear on the preview for the page when shared on Discord, iMessage, or Mastodon. It looks like this: &lt;code&gt;&amp;lt;meta name=&amp;quot;fediverse:creator&amp;quot; content=&amp;quot;@Gargron@mastodon.social&amp;quot; /&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The handle can be any fediverse account, not just Mastodon. That includes Flipboard, Threads, WordPress (with the ActivityPub plugin installed), PeerTube, Pixelfed, and many others. It will work with and without the leading at-symbol for the handle. If multiple tags are present on the page, the first one will be displayed, but we may add support for showing multiple authors in the future. We intend to propose a specification draft for other ActivityPub platforms in the coming weeks.&lt;/p&gt;
&lt;p&gt;The support for this tag is currently rolled out on &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; and any other server that uses a recent Mastodon nightly release. To enable it for your own Mastodon account, navigate to the Verification tab on the Edit Profile page, and add the website domains from which you want to be credited in the Author Attribution section. E.g. if you&amp;rsquo;re a journalist for The Verge, you would add theverge.com to the list. This extra step is meant to prevent malicious websites from framing users in link previews.&lt;/p&gt;</description></item><item><title>Trunk &amp; Tidbits, May 2024</title><link>https://blog.joinmastodon.org/2024/06/trunk-tidbits-may-2024/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/06/trunk-tidbits-may-2024/</guid><description>&lt;p&gt;Welcome again to Trunk &amp;amp; Tidbits, our engineering updates blog series. Let us fill you in on what we’ve been focused on during this past month.&lt;/p&gt;
&lt;h1 id="releases-you-should-know-about"&gt;Releases you should know about&lt;/h1&gt;
&lt;p&gt;During May, we &lt;a href="https://github.com/mastodon/mastodon/releases"&gt;released&lt;/a&gt; some important updates for &lt;a href="https://mastodon.social/@MastodonEngineering/112530662239602222"&gt;the 4.2 and 4.1 releases, and nightly builds&lt;/a&gt;. They contain minor security fixes, as well as bug fixes. Thanks to &lt;a href="https://www.bsi.bund.de/DE/Home/home_node.html"&gt;the BSI&lt;/a&gt; for sponsoring a pentest of our codebase, which helped us find and fix some of these issues.&lt;/p&gt;
&lt;p&gt;As a reminder, you can &lt;a href="https://mastodon.social/@MastodonEngineering"&gt;follow @MastodonEngineering&lt;/a&gt; to keep track of new releases and other important technical updates. If you are a server administrator or you want to pay special attention to these releases, you can also choose to be notified when that account posts an update.&lt;/p&gt;
&lt;h1 id="code-changes-and-work-in-progress"&gt;Code changes and work in progress&lt;/h1&gt;
&lt;p&gt;We are continuing to drive towards Mastodon 4.3, our next major release.&lt;/p&gt;
&lt;p&gt;The changes below are available to users of instances that are running a recent &amp;ldquo;nightly&amp;rdquo; version (for example, &lt;a href="http://mastodon.social"&gt;mastodon.social&lt;/a&gt; or &lt;a href="https://mastodon.online"&gt;mastodon.online&lt;/a&gt;), and will come to others as part of the 4.3 release.&lt;/p&gt;
&lt;h2 id="web-app-and-backend"&gt;Web app and Backend&lt;/h2&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 Allow administrators to configure the instance favicon and logo. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30040"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30040&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/FawazFarid" class="underline"&gt;FawazFarid&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Add OpenTelemetry instrumentation. This allows administrators to optionally send traces to their own OpenTelemetry server, to provide monitoring of backend errors and performance with much more detail than logs - useful to identify and fix issues (note that no user data is collected, this is an opt-in diagnostic tool) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30130"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30130&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/robbkidd" class="underline"&gt;robbkidd&lt;/a&gt;, &lt;a href="https://github.com/julianocosta89" class="underline"&gt;julianocosta89&lt;/a&gt; and &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Implement RFC 8414 for OAuth 2.0 server metadata &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29191"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29191&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/thisismissem" class="underline"&gt;thisismissem&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Support multiple redirect_uris when creating OAuth 2.0 Applications &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29192"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29192&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/thisismissem" class="underline"&gt;thisismissem&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 Add a batch fetch API to get multiple accounts and statuses at once. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/27871"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #27871&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/noellabo" class="underline"&gt;noellabo&lt;/a&gt; and &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Add support for &lt;code&gt;fediverse:creator&lt;/code&gt; OpenGraph tag in source links shared in posts. This new feature will show a link to an article author&amp;rsquo;s own Mastodon account. This is an experimental first step in a series of related features. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30398"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30398&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reworked the &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1297"&gt;account&lt;/a&gt; and &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1297"&gt;post&lt;/a&gt; menus.&lt;/li&gt;
&lt;li&gt;Improved the &lt;a href="https://github.com/mastodon/mastodon-ios/pull/1300"&gt;content warning display in the timeline&lt;/a&gt;. They no longer use the full post height, which caused them to create a lot of white space.&lt;/li&gt;
&lt;li&gt;Released version 2024.5, with a lot of crash fixes and other stability improvements. (&lt;a href="https://github.com/mastodon/mastodon-ios/releases/tag/2024.5"&gt;release details&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The focus for June on the iOS side is on continuing the stability improvements, fixing some issues regarding the timeline posts loading, and adding support for Lists and the new grouped notifications feature coming in 4.3.&lt;/p&gt;
&lt;h2 id="documentation"&gt;Documentation&lt;/h2&gt;
&lt;p&gt;We have had a lot of helpful contributions to the &lt;a href="https://github.com/mastodon/documentation"&gt;documentation&lt;/a&gt; over the past few months. This month, we particularly want to give shout-outs to &lt;a href="https://github.com/adrian2793"&gt;adrian2793&lt;/a&gt;, &lt;a href="https://github.com/MahanRahmati"&gt;MahanRahmati&lt;/a&gt; and &lt;a href="https://github.com/progval"&gt;progval&lt;/a&gt; for helping to keep things updated. We appreciate you!&lt;/p&gt;
&lt;h1 id="looking-ahead"&gt;Looking ahead&lt;/h1&gt;
&lt;p&gt;These are the key things we are actively working on for June:&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 The migration to &lt;code&gt;libvips&lt;/code&gt; is nearly finished. This will be opt-in for 4.3, as it will require a modern (8.13+) &lt;code&gt;libvips&lt;/code&gt; version; but, it will be the default in our pre-built container image.&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 We are still working on completing the grouped notifications feature. The &lt;a href="https://github.com/mastodon/mastodon/pull/29889"&gt;backend work has been merged&lt;/a&gt; (but is highly experimental, please wait for this to be stable before implementing it in your client app) and the &lt;a href="https://github.com/mastodon/mastodon/pull/30440"&gt;frontend part is in progress&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Those are the 2 remaining major features planned for 4.3 that need to be completed. Once they are merged, we will focus on releasing the first 4.3 beta.&lt;/p&gt;
&lt;p&gt;Additionally, &lt;a href="https://github.com/mastodon/mastodon/issues?q=label%3Atypescript&amp;#43;is%3Aclosed&amp;#43;-label%3Adependencies"&gt;work is still in progress&lt;/a&gt; to convert our frontend to modern React / Redux and TypeScript. For example, &lt;a href="https://github.com/mastodon/mastodon/pull/30270"&gt;this PR&lt;/a&gt; defined a modern and 100% typed way of defining Redux actions. If you know React, Redux and TypeScript, you can help! &lt;a href="https://github.com/mastodon/mastodon/issues/26556"&gt;Here&lt;/a&gt; is a good place to start.&lt;/p&gt;
&lt;h1 id="other-news"&gt;Other news&lt;/h1&gt;
&lt;p&gt;We are excited to report that we filled our new core developer position! Our new team member will start in early July, and we will have more to share nearer to the time.&lt;/p&gt;
&lt;p&gt;We have fully re-written and clarified the &lt;a href="https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md"&gt;contribution guide&lt;/a&gt;, across the whole project. It now includes explanations about how the project works, and where we are most able to accept contributions (not just code contributions). We also have &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;an issue to visit on the main repository&lt;/a&gt; with pointers to help you get started. We hope this will make it easier for new contributors to get involved.&lt;/p&gt;
&lt;p&gt;Finally, a &lt;em&gt;huge&lt;/em&gt; thank you to our triage team for keeping the issue tracker clean and organized. We appreciate all the work you do to help us stay on top of things.&lt;/p&gt;
&lt;h1 id="thank-you-for-using-mastodon"&gt;Thank you for using Mastodon&lt;/h1&gt;
&lt;p&gt;That is it for May 2024. Spread the word to others, and get them to join us all in building better social media!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Trunk &amp; Tidbits, April 2024</title><link>https://blog.joinmastodon.org/2024/05/trunk-tidbits-april-2024/</link><pubDate>Tue, 07 May 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/05/trunk-tidbits-april-2024/</guid><description>&lt;p&gt;Welcome to the first in a planned ongoing series of updates from the core Mastodon engineering team. We’ll also take a quick look at what’s been happening around the broader community.&lt;/p&gt;
&lt;h1 id="what-weve-been-working-on"&gt;What we’ve been working on&lt;/h1&gt;
&lt;p&gt;The Mastodon 4.3 release is around the corner - we only have one big feature (grouped notifications) to finish before the first beta release! Let’s dive in on some of the most important things that have been merged lately.&lt;/p&gt;
&lt;p&gt;Changes below are available to users of instances that are running a recent “nightly” version (like mastodon.social or mastodon.online), and will come in the 4.3 release.&lt;/p&gt;
&lt;h2 id="web-app-and-backend"&gt;Web app and Backend&lt;/h2&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 This is from March, and it will probably make a lot of people happy: you can now configure Mastodon to use the light or dark theme depending on your device setting! &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29748"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29748&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/nshki" class="underline"&gt;nshki&lt;/a&gt; and &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-green-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;interface&lt;/span&gt;
 A better design for the Profile page in the Explore section. This is the last part of multiple improvements to profile recommendations that will be in 4.3 &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30059"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30059&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 After adding notifications for severed relationships (when an admin blocks an instance and it makes you loose followers or follows), we added a new notification when a moderator sends you a warning (it was previously only an email and some people missed it) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30065"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30065&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-pink-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;security&lt;/span&gt;
 Merged initial support for ActiveRecord Encryption, which will allow us to encrypt some fields in the database so they do not appear in clear text in the database or backups &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29831"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29831&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Ruby 3.3.1 official support, providing a 15% performance improvement compared to Ruby 3.2 (this number comes from our metrics on mastodon.social). Ruby 3.3.0 had multiple bugs with YJIT, but they seem to all be fixed in 3.3.1. Support for Ruby 3.0 has been dropped as it reached EOL. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/28013"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #28013&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/mjankowski" class="underline"&gt;mjankowski&lt;/a&gt; and &lt;a href="https://github.com/vmstan" class="underline"&gt;vmstan&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 New &lt;code&gt;read:me&lt;/code&gt; scope in the API, to request read-only to the user’s account (and not to every accounts like &lt;code&gt;read&lt;/code&gt; ) &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29087"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29087&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ThisIsMissEm" class="underline"&gt;ThisIsMissEm&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 The web app should stop resetting the home timeline marker everytime you open it. This should make the marker API usable for syncing timeline position in native clients. If you are a developer and want to use it, please send us any feedback about this feature so we can improve it. And expect the web app to (correctly) sync the position at some point in the future! &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/22721"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #22721&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/davbeck" class="underline"&gt;davbeck&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;As always, many bug fixes or refactors to make the code cleaner and improve our test coverage have been merged. Shout out to &lt;a href="https://cyber.digital-cache.cloud/@matt"&gt;Matt Jankowski&lt;/a&gt; who has been driving a lot of upgrades, modernisation, test improvements and other refactors to the backend.&lt;/p&gt;
&lt;h2 id="ios"&gt;iOS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A new release with improved polls, the return of the local timeline, better explore tab, and multiple smaller changes and fixes (&lt;a href="https://github.com/mastodon/mastodon-ios/releases/tag/2024.4"&gt;release notes&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The iOS app is still undergoing a behind-the-scene large refactor to make it easier to work on. We are focused on improving it’s stability, and adding the most-requested missing features.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="android"&gt;Android&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A new version adding support for the new “filtered notifications” feature that will be released in 4.3 and some small changes and improvements (&lt;a href="https://github.com/mastodon/mastodon-android/releases/tag/v2.5.0"&gt;release notes&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Working on an experiment on mastodon.social to show a &lt;strong&gt;non-intrusive, easily dismissible&lt;/strong&gt; banner to donate to the project, similar to what Signal is doing. This is the first step of a bigger project to try to have the Mastodon ecosystem financed by its users and, if it proves successful, will be slowly expanded with more features (specifically, the ability for donations to go to server admins)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="whats-coming"&gt;What’s coming&lt;/h1&gt;
&lt;p&gt;These items are actively being worked on…&lt;/p&gt;
&lt;div class="features-list"&gt;
&lt;ul&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-blue-300 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;new feature&lt;/span&gt;
 Grouped notifications API: with this feature, notifications like boosts, follows or likes on the same post will be grouped if they occur a few hours appart, and will show “X, Y, Z and 12 other accounts liked your post”. The UI is not complete, and we want to experiment with it a bit to see if it works. This required significant effort to implement without causing performance issues, but we think this should make notifications much better! &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/29889"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #29889&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-emerald-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;api&lt;/span&gt;
 A new batch fetch API to get multiple accounts or statuses at once &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/27871"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #27871&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/noellabo" class="underline"&gt;noellabo&lt;/a&gt; and &lt;a href="https://github.com/ClearlyClaire" class="underline"&gt;ClearlyClaire&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 Adding support for using &lt;code&gt;libvips&lt;/code&gt; as our image processing library, which should make image operations more secure, much faster and require less memory &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30090"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30090&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/Gargron" class="underline"&gt;Gargron&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-orange-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;performance&lt;/span&gt;
 We are trying to ship OpenTelemetry support in 4.3, to provide server admins with very useful operation data, and to drive our performance work. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/30130"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #30130&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/robbkidd" class="underline"&gt;robbkidd&lt;/a&gt;, &lt;a href="https://github.com/julianocosta89" class="underline"&gt;julianocosta89&lt;/a&gt; and &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;


&lt;span
 class="rounded-lg bg-lime-200 uppercase px-2 py-1 text-xs font-bold mr-1"&gt;developer&lt;/span&gt;
 Work is ongoing to move our frontend build system from the deprecated Webpacker Gem to Vite, a more modern, faster and simpler bundler. It will not block the 4.3 release if not ready in time, but is near completion. &lt;span class="not-prose"&gt;
 —
 &lt;a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/mastodon/pull/24981"&gt;
 &lt;img src="https://blog.joinmastodon.org/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" /&gt;
 &lt;span&gt;PR #24981&lt;/span&gt;
 &lt;/a&gt;
 
 &lt;span&gt;(by
 &lt;a href="https://github.com/renchap" class="underline"&gt;renchap&lt;/a&gt;)
 &lt;/span&gt;
 &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;In parallel to all those projects, recruitment for a new &lt;a href="https://jobs.ashbyhq.com/mastodon/de1e4d8a-5639-4b6a-86d7-97bd9c768b02"&gt;full-time core developer position&lt;/a&gt; is still in progress and we have been meeting with amazing people.&lt;/p&gt;
&lt;p&gt;Looking further ahead, work is in progress to more clearly define a plan for Quote Posts. This will in part be funded by the &lt;a href="https://nlnet.nl/project/Mastodon-Quoting/"&gt;awesome folks at NLNet through their NGI0 Entrust fund&lt;/a&gt;. The first part of the work is working on specifications, and we hope to be able to publish more details on what we plan to implement soon.&lt;/p&gt;
&lt;p&gt;We are also improving our documentation to help people to contribute to the project. This can seem daunting, but there is now a &lt;a href="https://github.com/mastodon/mastodon/issues/30167"&gt;pinned issue in the main repository&lt;/a&gt; to point you to some good entrypoints, like some confirmed bugs, or features that we know we want, are well defined and are small enough for an individual to tackle. Expect more progress on this front in the next episode of this series!&lt;/p&gt;
&lt;h1 id="around-the-community"&gt;Around the community&lt;/h1&gt;
&lt;p&gt;We’re always excited to see the different ways that developers embrace Mastodon. Here are a couple of things we spotted this month. If you’re building something, let us know about it (you can use the #MastodonAPI hashtag, if you like)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Take a look at &lt;a href="https://stefanbohacek.online/@stefan"&gt;Stefan Bohacek&lt;/a&gt;’s blog post and code &lt;a href="https://stefanbohacek.com/blog/analyzing-fediverse-followers/"&gt;analysing the network for his creative bots&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Got a Nintendo 3DS? You can &lt;a href="https://wetdry.world/@760ceb3b9c0ba4872cadf3ce35a7a4/112338857837231408"&gt;access Mastodon, too&lt;/a&gt;! 🎮&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="in-case-you-missed-it"&gt;In case you missed it&lt;/h1&gt;
&lt;p&gt;We shared a couple of big news stories during April:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-stuffed-toy-coming-soon/"&gt;plushie is coming&lt;/a&gt;! (and it is &lt;em&gt;&lt;strong&gt;so cute&lt;/strong&gt;&lt;/em&gt;!)&lt;/li&gt;
&lt;li&gt;Mastodon &lt;a href="https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/"&gt;now has a 501(c)(3) entity in the United States&lt;/a&gt;, enabling the project to raise funds there more easily.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We were also excited to see our friends at Ghost &lt;a href="https://activitypub.ghost.org/"&gt;announcing&lt;/a&gt; news to join the Fediverse, along with Buttondown!&lt;/p&gt;
&lt;h1 id="thank-you-for-your-support"&gt;Thank you for your support&lt;/h1&gt;
&lt;p&gt;That&amp;rsquo;s it for this month - thanks for using Mastodon, we hope you&amp;rsquo;ll help spread the word to others and get them to join us all in building better social media.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon forms new U.S. non-profit</title><link>https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/</link><pubDate>Sat, 27 Apr 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/</guid><description>&lt;p&gt;As part of our commitment to supporting the growth and operational capabilities of Mastodon, we have established a 501(c)(3) non-profit entity in the United States aimed at facilitating our efforts, including being able to receive tax-deductible U.S. donations and in-kind support.&lt;/p&gt;
&lt;p&gt;We’re excited to announce the Board of Directors governing this newly formed entity:&lt;/p&gt;
&lt;div class="rounded-md p-6 py-0 border border-gray-200"&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mastodon.social/@alshafei"&gt;Esra’a Al Shafei&lt;/a&gt;&lt;/strong&gt; is a human rights advocate and founder of Majal.org, a network of digital platforms that amplify under-reported and marginalized voices in Southwest Asia and North Africa. She is also the co-founder of the Numun Fund, the first dedicated fund for feminist tech in the Global Majority. Esra’a currently serves on the Board of the Wikimedia Foundation, the nonprofit which hosts Wikipedia. She is also on the Board of the Tor Project, developers of one of the world’s strongest tools for privacy and freedom online.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mastodon.online/@karienbez"&gt;&lt;strong&gt;Karien Bezuidenhout&lt;/strong&gt;&lt;/a&gt; is an advocate for openness and supporter of social entrepreneurs. As the former director of the Shuttleworth Foundation, her core interest lies in social and policy innovation through practical interventions and sustainable social enterprises. Through her experience as a board member to social change organisations and social enterprises across the world, she strives to make connections that accelerate learning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mastodon.social/@aghavi"&gt;Amir Ghavi&lt;/a&gt;&lt;/strong&gt; leads Fried Frank’s core technology practices as the co-head of the Technology Transactions Practice, where he advises clients on cutting edge technology and intellectual property matters. Amir is also a regular speaker, panelist and commentator to the media on digital assets and quantum computing.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@mellifluousbox"&gt;&lt;strong&gt;Felix Hlatky&lt;/strong&gt;&lt;/a&gt; has been the Chief Financial Officer of Mastodon since 2020. Felix helped Eugen by incorporating the project in a non-profit LLC in Germany and raising additional funds from Prototype Fund, NLnet and GLS Bank. Felix is the CEO of SOLARYS, a company developing software for volunteer firefighters in the DACH region.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://me.dm/@biz"&gt;Biz Stone&lt;/a&gt;&lt;/strong&gt; is an entrepreneur best known as a co-founder of Twitter, one of the world&amp;rsquo;s leading social media platforms. Biz&amp;rsquo;s career spans various facets of technology and social networking, including contributions to the development of blogging, podcasting, and social media. Beyond Twitter, Biz has engaged in various philanthropic efforts and tech ventures, emphasizing the importance of corporate responsibility and the potential of technology to address societal challenges.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The board was selected based on the values they share with Mastodon, their valuable experience and their commitment to helping build and grow the fediverse.&lt;/p&gt;
&lt;p&gt;With additional guidance of this Board and the incredible support of our growing communities, Mastodon will remain firm in its mission of offering free, open-source decentralized social media.&lt;/p&gt;
&lt;h3 id="mastodons-non-profit-status-in-germany"&gt;Mastodon&amp;rsquo;s non-profit status in Germany&lt;/h3&gt;
&lt;p&gt;We’ve always been worried that developing Free and Open Source Software would not be recognized as a charitable cause by the German tax system, so we were glad when the tax office originally approved our non-profit status in 2021. But now we have received a notice from the same tax office that our non-profit status has been withdrawn. This came with no advance warning or explanation. Earlier this year we went through a successful tax audit, which in fact resulted in some favourable adjustments as we’ve been paying too much tax. Our tax advisor immediately submitted an appeal to the decision, but so far, we have no new information.&lt;/p&gt;
&lt;p&gt;We can only guess as to the cause. Our activities have been the same since 2016: We produce Free, Open Source Software and run a free service for the public in the form of mastodon.social. We pay employees, developer and designer contractors, and hosting and service fees for tools necessary for company operation. We further the cause of decentralized, privacy-friendly social media. Our income flows largely from the crowdfunding platform &lt;a href="https://www.patreon.com/mastodon"&gt;Patreon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our day to day operations are largely unaffected by this event, since Patreon does not presuppose non-profit status, and Patreon income does not count as donations. We have in fact not had to issue a single donation receipt since 2021. The significance of the non-profit status is in communicating our commitment to the cause of creating social media that serves the interests of its users instead of its shareholders. We now have the 501(c)(3) in the US to fill the gap. However, it&amp;rsquo;s also important for us that Mastodon is one of the few, if not the only social media platform that operates out of the EU, and we would like to keep it that way.&lt;/p&gt;
&lt;h3 id="looking-onward"&gt;Looking onward&lt;/h3&gt;
&lt;p&gt;In summing up this round of news, 2024 has both been extremely busy and exciting as Mastodon’s governance and legal structure evolves. We see these changes as necessary developments to reach Mastodon’s ambitious goals. In realizing Mastodon’s potential, we are deeply grateful to Jeff Atwood and Mozilla for contributing $100K each this year to support Mastodon’s growth.&lt;/p&gt;
&lt;p&gt;We hope to continue fundraising throughout the year so we can move past simply sustaining Mastodon’s current operational and development capacity and focus on growth and greater impact. Most people don&amp;rsquo;t realize the core developer team of Mastodon is still just two people, and it is these last donations that have allowed us to open a third full-time developer position.&lt;/p&gt;
&lt;p&gt;The interest in the fediverse is unprecedented this year, and it will mark a huge milestone in Mastodon’s journey. If you’re interested in being involved in any fundraising efforts or if you’re a funder interested in making a contribution, &lt;a href="mailto:finance@joinmastodon.org"&gt;please reach out!&lt;/a&gt; We’re always happy to hear from anyone with as much passion for the open social web as we are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;US entity name:&lt;/strong&gt; Mastodon, Inc. &lt;br&gt;
&lt;strong&gt;EIN:&lt;/strong&gt; 92-3333630&lt;/p&gt;
&lt;h2 id="faq"&gt;FAQ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Why found a 501(c)(3) instead of doing ____?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Long story short, it has been cited as a prerequisite by every non-profit foundation or fund that we’ve spoken to about supporting Mastodon development. This is important because in order to do what we want and need to do, we need funding. We do not want VC funding and we do not want to sell any part of the code or operations to anyone. Mastodon is vastly under-resourced. This is a considerable threat to being able to maintain the code base and the services we offer. Seeking funding from the US is one of the avenues we are exploring, and without a 501(c)(3) this would not be viable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is the 501(c)(3) a response to losing non-profit status in Germany?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No, the timing is a mere coincidence. Founding a 501(c)(3) entity, interviewing and assembling a board, and getting the tax exemption as a recognized non-profit from the IRS is no quick process and has taken us close to a year. It was just lucky timing that we got our approval from the IRS now, as this helps with a backup plan for any urgent operational or financial needs that we can’t fulfill through the German entity. If we don’t regain non-profit status in Germany through any appeals, we will explore alternative structural options in Germany, or in other European jurisdictions, as needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is the relationship between the US structure and the German one?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mastodon is bigger than any single entity, but it does need formal structures to operate effectively. The first of these was the Germany-based non-profit (Mastodon gGmbH). The second is now the U.S. non-profit (Mastodon, Inc.). Mastodon product development, user data, trademarks and copyright are in the hands of the German Mastodon gGmbH. Mastodon, Inc. creates the opportunity to raise funds from U.S. sources for the project at large, as well as build relationships and explore partnerships beyond Europe. While Mastodon is firmly based in Europe, we do not want to limit our engagement potential.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will the operations continue from Europe, or move to the US?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Primary operations will remain led by the Germany-based entity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What power do the Board have over the project?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Board of the U.S nonprofit does not have the legal powers to make or enforce product-level decisions. They do not oversee day-to-day operations and development of the project. The board oversees the activities specific to the U.S. entity, while advising and supporting the team on key strategic issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why did you choose these Board members?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have carefully selected people who would be most helpful to the Mastodon project. Felix Hlatky has been the Chief Financial Officer of our German entity for a few years and has played a key role in turning the single-person Patreon project into a non-profit with multiple employees. Amir Ghavi has provided pro-bono support for Mastodon on multiple legal matters over the course of a year and brings a lot of expertise in open source licensing, as well as connections in the tech industry thanks to his prominent position at Fried Frank. Biz Stone as a Twitter co-founder has invaluable experience scaling a social media platform to its first few million users and many connections to experts who are familiar with the problems Mastodon is facing, and Mastodon to him represents the vision of social media as a protocol that could have, but unfortunately did not materialize at Twitter. Karien Bezuidenhout is intimately familiar with the operation of non-profit boards and open source project governance. Esra&amp;rsquo;a Al Shafei brings expertise in human rights advocacy and privacy matters, and has also served on several tech non-profit boards, which we can learn from.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does this mean that you sold Mastodon to these people?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No, this is a non-profit and an unpaid Board. None of the Board members made any substantial donations to Mastodon or “bought” their seats for the sake of any controlling powers. The Board does not have ownership over any of Mastodon’s properties.&lt;/p&gt;</description></item><item><title>Mastodon stuffed toy coming soon</title><link>https://blog.joinmastodon.org/2024/04/mastodon-stuffed-toy-coming-soon/</link><pubDate>Mon, 15 Apr 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/04/mastodon-stuffed-toy-coming-soon/</guid><description>&lt;p&gt;After we’ve released our new line of merch last year, we’ve heard a lot of questions about a potential stuffed toy. After all, our official mascot is so suitable. But it is, problematically, a two-dimensional character.&lt;/p&gt;
&lt;p&gt;We sat down with our artist, Dopatwo, to try and imagine what a character like that could look like in three-dimensional space. We had only three requirements: He would have to be cute, he would have to be cuddly, and he would have to be round. And Dopatwo delivered.&lt;/p&gt;
&lt;p&gt;&lt;video src="demo.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;div class="grid grid-cols-3 gap-4 not-prose my-8"&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="photo_2024-04-14_08-02-28%20%282%29.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="photo_2024-04-14_08-02-30.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="photo_2024-04-14_08-02-32.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We created a stuffed toy of the highest caliber. Deliberately friend-sized and friend-shaped, with a soft surface material and soft, squishy stuffing, the toy measures a height of 35cm. Perfect as a travel companion you can rest your head on, or to fill in for you at business meetings.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="photo_2024-04-14_08-02-28.jpg" class="rounded-lg shadow-lg"
 alt="Visiting one of our sponsor&amp;rsquo;s office"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Visiting one of our sponsor&amp;rsquo;s office&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;While some people would be more interested in a smaller size that can be put on display, the goal of the toy is to be a friend to those who need it, rather than simply collect dust.&lt;/p&gt;
&lt;p&gt;The toy does not have a predefined name or gender. My prototype has received the name Mr. Mastodon from a friend, and is sometimes referred to as “The Boy” in the household. But everyone is free to pick for themselves.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="photo_2024-03-18_03-13-03%20%282%29.jpg" class="rounded-lg shadow-lg"
 alt="Mr. Mastodon (left) and my wife (right)"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Mr. Mastodon (left) and my wife (right)&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;After running a few polls on Mastodon, we’ve settled on manufacturing 1,000 units. After all, it would be better for the toy to be sold out, than for any of the adorable Mastodons to end up without a home.&lt;/p&gt;
&lt;p&gt;We’ll divide the stock between a warehouse in Europe and a warehouse in the US to provide the cheapest possible shipping to the parts of the world where we believe most of the buyers would be. At this rather small scale, that is the best we can do.&lt;/p&gt;
&lt;p&gt;We expect the price to be no higher than 30 USD, which is customary for a toy of this size. We do not expect to do meaningful fundraising from the profits as they would be very thin at these quantities. Our goal is to just get the toy to people who want it.&lt;/p&gt;
&lt;p&gt;Here are a few more facts to tick off some boxes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The manufacturer is ICTI Ethical Toy Program and Intertek WCA certified&lt;/li&gt;
&lt;li&gt;Suitable for children 3+ (compliant with EN-71 parts 1, 2, and 3)&lt;/li&gt;
&lt;li&gt;Surface washable&lt;/li&gt;
&lt;li&gt;Super soft velboa on the outside, polyester fiberfill on the inside&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The toy is not available for sale yet.&lt;/strong&gt; The manufacturing time is 20 weeks, so we expect it to go live by August 2024. You can subscribe to the below mailing list to be notified when the toy becomes available. Of course, if you &lt;a href="https://mastodon.social/@Mastodon"&gt;follow us on Mastodon&lt;/a&gt;, you won’t miss the news either, especially if you hit that bell button which notifies you when we post.&lt;/p&gt;
&lt;form method="post" action="https://newsroom.joinmastodon.org/subscription/form" class="not-prose rounded-md bg-eggplant p-4 py-6 flex flex-col items-center shadow-lg text-white mt-8"&gt;
 &lt;input type="hidden" name="l" value="da95e48a-3a52-46d6-9184-65ab73877994" /&gt;

 &lt;h3 class="text-lg font-bold mb-2 text-nightshade-50"&gt;Join the mailing list&lt;/h3&gt;
 &lt;p class="text-md mb-8 font-semibold"&gt;Get notified when the toy becomes available for sale&lt;/p&gt;

 &lt;div class="flex gap-4 mb-8"&gt;
 &lt;input type="email" name="email" placeholder="Your e-mail address" required="required" class="block text-sm rounded-md bg-white border-0 bg-transparent shadow-sm ring-1 ring-inset ring-nightshade-50 py-1.5 text-gray-900 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blurple-500" /&gt;
 &lt;button type="submit" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex"&gt;Subscribe&lt;/button&gt;
 &lt;/div&gt;

 &lt;footer class="text-sm"&gt;
 See our &lt;a href="https://joinmastodon.org/privacy-policy" class="text-nightshade-100 hover:underline"&gt;privacy policy&lt;/a&gt;
 &lt;/footer&gt;
&lt;/form&gt;
</description></item><item><title>Mastodon for Android update</title><link>https://blog.joinmastodon.org/2024/02/mastodon-for-android-update/</link><pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2024/02/mastodon-for-android-update/</guid><description>&lt;p&gt;At the beginning of February, our team attended our very first conference at FOSDEM in Brussels. As a remote-only company, it was also the first time a lot of us met each other in real life. It was a very fun time, and a lot of people came up to take selfies in front of our company roll-up, buy our mugs, and tell us what they&amp;rsquo;d like to see in Mastodon. One thing became obvious: Sharing Mastodon handles in a loud hallway with a dozen conversations happening around you at all times is way too difficult. Wouldn&amp;rsquo;t it be nice if you could just scan a QR code on the other person&amp;rsquo;s phone? Well, this is what we&amp;rsquo;ve launched in our most recent &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Mastodon for Android&lt;/a&gt; release!&lt;/p&gt;
&lt;p&gt;&lt;video src="QR_centered.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Simply navigate to your profile (or anyone&amp;rsquo;s profile, actually) and click on the QR code icon next to the name to bring up a QR code that will allow others to open the profile on their device. There is quick access to a QR code scanner from that screen too. Scanning the code from our app will always open the profile in the app.&lt;/p&gt;
&lt;p&gt;We want to make Mastodon as intuitive as possible, and a part of that is making sure you don&amp;rsquo;t need to read documentation to understand what the different functions in the app do. We&amp;rsquo;ve updated the design of profiles to solve a common question that newer users tend to have, which is &amp;ldquo;what does the domain name in a Mastodon handle mean?&amp;rdquo;. You can now tap the domain on a profile to bring up an information sheet that explains that decentralized nature of Mastodon.&lt;/p&gt;
&lt;p&gt;In a similar vein, we&amp;rsquo;ve updated confirmation dialogs for all muting and blocking functions to explain what effects each action will have and what behaviours you can expect from the app as a consequence.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="other-changes"&gt;Other changes&lt;/h3&gt;
&lt;p&gt;Other recent improvements to our app include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rich share sheet info when sharing posts through Android&amp;rsquo;s share dialog&lt;/li&gt;
&lt;li&gt;Updated design for link card previews that displays the article&amp;rsquo;s author and date&lt;/li&gt;
&lt;li&gt;Easier to understand dropdown menus on profiles&lt;/li&gt;
&lt;li&gt;Labels on the now more accessible tab bar at the bottom&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you enjoy the app, please consider leaving us a review on &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Google Play Store&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Improving the quality of conversations on Mastodon</title><link>https://blog.joinmastodon.org/2023/11/improving-the-quality-of-conversations-on-mastodon/</link><pubDate>Wed, 22 Nov 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/11/improving-the-quality-of-conversations-on-mastodon/</guid><description>&lt;p&gt;In our most recent &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Mastodon for Android&lt;/a&gt; release, we’re testing a new feature aimed to curb unneccesary negativity that comes from being on the Internet. Complete strangers using an overly familiar tone, offering unsolicited advice, or starting arguments that are completely besides the point—these should be familiar to all who use social media.&lt;/p&gt;
&lt;p&gt;While we’re exploring multiple different avenues to tackle this issue, the idea we’re experimenting with today is simply reminding people when they’re about to respond to a stranger. We also believe that by showing a bit of information about the person you’re about to talk to, we can prevent some awkward situations, such as explaining something to an expert in a given field.&lt;/p&gt;
&lt;p&gt;We’re also going to remind people when they’re about to reply to a post that’s over 3 months old. Posts from long ago are rarely a part of an active discussion, so such replies usually happen by mistake. These features will be coming to our iOS app soon, where we’re currently working on a big performance update. If they prove successful, we&amp;rsquo;ll be bringing them to the experience on the web as well.&lt;/p&gt;
&lt;p&gt;Overall, we’re committed to ensuring folks on Mastodon have a pleasant experience posting. We hear time and time again how much people enjoy coming to Mastodon to have real conversations with real people. And we want to ensure it stays that way. We look forward to hearing what you think of the new prompts!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Thank you Sujitech</title><link>https://blog.joinmastodon.org/2023/11/thank-you-sujitech/</link><pubDate>Fri, 10 Nov 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/11/thank-you-sujitech/</guid><description>&lt;p&gt;Today we would like to thank Sujitech for kindly donating $100k USD to Mastodon, by far the largest single donation to our non-profit so far. Building Mastodon, which encompasses the core software on one end, and two native mobile applications on the other, is not cheap, and we can only afford a handful of full-time positions right now, relying in many ways on volunteer work.&lt;/p&gt;
&lt;p&gt;Sujitech is a Japanese tech company whose mission is to achieve a truly free and open internet, and that has supported Mastodon in various ways for many years. They have saved multiple Mastodon servers from shutting down by taking over their maintenance when the original owners were unable to continue to operate them, and in 2021, we had teamed up to build the first prototype of the official iOS app for Mastodon.&lt;/p&gt;
&lt;p&gt;We believe that to make the social web succeed it is crucial for Mastodon as an organization to be able to offer full-time roles with market-based salaries, and continue to invest heavily in design and usability. As a non-profit, we rely primarily on your donations through &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt; to achieve this goal. Thanks again to Sujitech to bringing us a little closer to it.&lt;/p&gt;</description></item><item><title>Mastodon for Android update</title><link>https://blog.joinmastodon.org/2023/10/mastodon-for-android-update/</link><pubDate>Sat, 28 Oct 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/10/mastodon-for-android-update/</guid><description>&lt;p&gt;The most recent update of &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Mastodon for Android&lt;/a&gt; introduces a highly anticipated feature&amp;ndash;lists. With the new update, you now have the ability to create custom lists and categorize your follows based on specific topics or interests, while removing them from your home feed.&lt;/p&gt;
&lt;p&gt;This not only helps in decluttering your home feed but also allows you to engage with certain topics on your own terms, when you are ready. Additionally, we reworked the home tab to provide easy navigation between your home feed, lists, and followed hashtags, so you can get the most out of your experience on Mastodon.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve got more updates in the pipeline as we aim to make Mastodon the most beautiful and delightful social media app on Android. Our iOS and web teams are also working steadily on new features and improvements, so stay tuned!&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
</description></item><item><title>Annual Report 2022</title><link>https://blog.joinmastodon.org/2023/10/annual-report-2022/</link><pubDate>Mon, 02 Oct 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/10/annual-report-2022/</guid><description>&lt;p&gt;Some of your were asking for it, some of you had no idea it was coming. The 2022 Annual Report is ready! As a non-profit organization supported exclusively by donations, we like to keep our community updated on our yearly progress, and 2022 was an interesting year to say the least. Keep in mind though that we&amp;rsquo;re already more than halfway through 2023, and a lot of things have evolved and changed since then! You&amp;rsquo;ll be able to read about that in the 2023 report, which, fingers crossed, you won&amp;rsquo;t have to wait half a year for.&lt;/p&gt;
&lt;p&gt;&lt;div class="not-prose flex items-center gap-4"&gt;&lt;a href="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202022.pdf" class="text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600"&gt;Download&lt;/a&gt;&lt;span class="font-semibold"&gt;PDF, 6MB&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;
&lt;iframe src="https://joinmastodon.org/reports/Mastodon%20Annual%20Report%202022.pdf" width="100%" height="600rem" class="rounded-md shadow-lg"&gt;&lt;/iframe&gt;
&lt;p&gt;Thank you to &lt;a href="https://hellopierre.fr/"&gt;Pierre Vincent&lt;/a&gt; for typesetting our annual report and to &lt;a href="https://www.youtube.com/dopatwo"&gt;Dopatwo&lt;/a&gt;, as always, for the illustrations.&lt;/p&gt;</description></item><item><title>Mastodon 4.2</title><link>https://blog.joinmastodon.org/2023/09/mastodon-4.2/</link><pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/09/mastodon-4.2/</guid><description>&lt;p&gt;As Mastodon continues to grow, we’d like to make sure we’re doing all we can to help you connect with your friends and your interests. Most importantly, we want to bring you features that make it much easier to connect with people that matter to you.&lt;/p&gt;
&lt;p&gt;In this version we overhauled search. The interface for searching is completely new and inspired by the app Ivory—as you type, a popout provides you with quick actions, such as, go directly to hashtag, search only for profiles, or, when writing or pasting a URL, open URL in Mastodon. Your recent searches are now available for quick access, and search results use infinite scroll. That’s only the surface—we reworked and fine-tuned all of the data indexes to make searching for people’s profiles more intuitive, so you can now find people by words in their bio and not only their name. In order to make it easier to distinguish the results you’re looking for from impersonators or third-party bots, we’re now surfacing verified links prominently in the search results. The most exciting news is that for the first time, you can now search for posts. We support a wide variety of operators to help you narrow down your search, such as only retrieving posts that have an embedded link, or a poll, or is from a specific user, or posted between specific dates. Correspondingly, we’ve reworked settings to assemble all privacy choices in one place to provide an easy overview, so you can control if you want your posts to appear in search or on the Explore page—both are opt-in.&lt;/p&gt;
&lt;p&gt;&lt;video src="search.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Speaking of overhaul, we’ve also polished and adjusted many details in Mastodon’s web interface, such as adding more thread indicators, making article previews more beautiful, and removing cropping from image previews. By far the biggest changes are to the sign-up flow and what users see the first time they login after sign-up. User tests have helped us to identify areas where people lose their way during sign-up, so we’ve added progress indicators to guide people through the multi-step sign-up process and rewrote copy and labels to be more intuitive. Upon login, you are pointed to recommended first steps that include filling our your profile, following people, making your first post, and sharing your profile outside Mastodon. After deploying these changes on our own servers, we’ve noticed an increase in the average number of profiles a new user follows from 2.6 to 6.8. This number is one of primary indicators of a successful onboarding, as the home feed is the center point of Mastodon. For comparison, the average number of profiles a new user follows after signing up through our official Android app is around 8.&lt;/p&gt;
&lt;p&gt;&lt;video src="onboarding.mp4
" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’ve also revamped the interaction experience when you’re logged out. When people land on a Mastodon server other than their own—for example, when following a link shared through an instant messenger—they find themselves on a website that does not know who they are, and therefore cannot allow them to perform certain actions they can perform through the logged-in interface. To perform those actions, we must take them back to that logged-in interface. Previously, we overestimated how often such a scenario would occur to someone who’s on their own Mastodon server but isn’t logged-in, and overemphasized the login option. At the same time, we offered instructions on how to get to the given profile or post in the user’s own Mastodon server or app using copying and pasting URLs to the search box, which ended up being confusing, and perceived as overly complicated. In the new experience, you are asked to type in the domain of your Mastodon “home” while being offered autocomplete as you type, and are then redirected to the given post or profile in your logged-in interface.&lt;/p&gt;
&lt;p&gt;&lt;video src="interaction.mp4" autoplay playsinline muted loop class="rounded-md shadow-lg"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;All of these changes will be available to you once your Mastodon server operator upgrades to this new version. If you’re new to Mastodon, there is no easier place to start than simply signing up on mastodon.social, either from the web, or by downloading our official app for iOS or Android.&lt;/p&gt;
&lt;p&gt;We’re excited to bring you these major improvements today and have much more we’d like to bring in the future. Thanks to all of you who have supported and continue to support our Patreon. You make it possible for us to continue to invest in and build more new experiences on Mastodon.&lt;/p&gt;
&lt;div class="not-prose rounded-md p-8 flex flex-col items-center mt-8 border border-blurple-500"&gt;
 &lt;h3 class="text-lg font-bold mb-2 text-center"&gt;Thank you for supporting Mastodon&lt;/h3&gt;

 &lt;p class="text-md mb-8 text-center"&gt;We develop and maintain the free and open source software that powers the social web. There is no capital behind this — we rely entirely on your support.&lt;/p&gt;

 &lt;div class="flex flex-col md:flex-row gap-4"&gt;
 &lt;a href="https://joinmastodon.org/sponsors#donate" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex" data-sa-link-event="donate_button"&gt;Donate to the project&lt;/a&gt;
 &lt;a href="https://joinmastodon.org/sponsors#supported_by" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 py-2 px-4 !font-semibold text-blurple-500 transition-colors hover:border-blurple-600 hover:text-blurple-600 flex" data-sa-link-event="sponsor_view"&gt;View our sponsors&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="other-changes"&gt;Other changes&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve changed so many things, but here are just some of our favourites&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search results now load more results as you scroll, just like other feeds&lt;/li&gt;
&lt;li&gt;Search results are generally better in a lot of tiny technical ways&lt;/li&gt;
&lt;li&gt;Boosts no longer pollute the Posts and Replies tab on profiles&lt;/li&gt;
&lt;li&gt;Server administrators and custom role enjoyers have new badges on their profiles&lt;/li&gt;
&lt;li&gt;Link cards have a new design featuring more details&lt;/li&gt;
&lt;li&gt;Polls finally have a button to see results without voting&lt;/li&gt;
&lt;li&gt;Pictures and videos are no longer cropped to 16:9 in feeds&lt;/li&gt;
&lt;li&gt;Edit profile screen has been refurbished&lt;/li&gt;
&lt;li&gt;New Privacy and Reach tab to control all the privacy and reach preferences&lt;/li&gt;
&lt;li&gt;Dropdowns look fresher, dangerous options tinted red&lt;/li&gt;
&lt;li&gt;Bot be gone, it’s “Automated” profile now&lt;/li&gt;
&lt;li&gt;Media with alternative text now features ALT badge&lt;/li&gt;
&lt;li&gt;Reply chains are now connected with lines for easier reading&lt;/li&gt;
&lt;li&gt;Search can now be found more easily on small screens&lt;/li&gt;
&lt;li&gt;Clicking usernames in people’s bios no longer takes you out of the interface&lt;/li&gt;
&lt;li&gt;Direct Messages now called Private Mentions for consistency&lt;/li&gt;
&lt;li&gt;Local and federated timelines have been moved to Live Feeds&lt;/li&gt;
&lt;li&gt;New option to not see posts from your lists on your Home Feed&lt;/li&gt;
&lt;li&gt;Hashtags at the end of posts now display as a hashtag bar&lt;/li&gt;
&lt;li&gt;Higher resolution and quality for uploaded images and videos&lt;/li&gt;
&lt;li&gt;Lots of minor color and typography adjustments to make Mastodon feel slick&lt;/li&gt;
&lt;li&gt;Lots of optimizations and performance improvements&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>New merchandise</title><link>https://blog.joinmastodon.org/2023/07/new-merchandise/</link><pubDate>Tue, 25 Jul 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/07/new-merchandise/</guid><description>&lt;p&gt;To help us raise more funds for our development efforts, we are launching a new line of merchandise for Mastodon including t-shirts, mugs, enamel pins, and stickers. Our artist, Dopatwo, has come up with brand new, exclusive designs for each item, and we&amp;rsquo;ve partnered with FRESH Merch to manufacture these items from responsibly sourced materials to the highest degree of quality.&lt;/p&gt;
&lt;p&gt;Despite our impressive accomplishments in building out the new social web, Mastodon is a non-profit with a very small team and limited resources&amp;ndash;the core team is just two developers. 100% of the revenue after recouping manufacturing costs will go to us and help us put more resources into developing your favourite decentralized social media software.&lt;/p&gt;
&lt;div class="grid grid-cols-3 gap-4 not-prose my-8"&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="Mastadon%20T%20shirt%207.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="Mastadon%20Pin%205.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
 &lt;div class="col-span-1"&gt;&lt;figure&gt;
 &lt;img src="Mastadon%20Sticker%202.jpg" class="rounded-lg shadow-lg"/&gt; 
&lt;/figure&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;ve just completed the photo shoot and we expect the products to be ready for sale in the next few weeks. To be notified when the store launches, you can subscribe to the mailing list below (or keep an eye out on &lt;a href="https://mastodon.social/@Mastodon"&gt;our Mastodon account&lt;/a&gt;&amp;ndash;did you know you can get notified when we post if you click on the bell button after following?).&lt;/p&gt;
&lt;p&gt;When we initially polled you on Mastodon to see what kind of demand there is for merch, over 6,700 of you said you would buy something. Of course, social media polls can&amp;rsquo;t entirely be trusted, so we went for a far more conservative initial batch. &lt;strong&gt;Only 250 units of each item will be available at launch. So they might sell out quick!&lt;/strong&gt;&lt;/p&gt;
&lt;form method="post" action="https://newsroom.joinmastodon.org/subscription/form" class="not-prose rounded-md bg-eggplant p-4 py-6 flex flex-col items-center shadow-lg text-white mt-8"&gt;
 &lt;input type="hidden" name="l" value="da95e48a-3a52-46d6-9184-65ab73877994" /&gt;

 &lt;h3 class="text-lg font-bold mb-2 text-nightshade-50"&gt;Join the mailing list&lt;/h3&gt;
 &lt;p class="text-md mb-8 font-semibold"&gt;Get notified when the merch becomes available for sale&lt;/p&gt;

 &lt;div class="flex gap-4 mb-8"&gt;
 &lt;input type="email" name="email" placeholder="Your e-mail address" required="required" class="block text-sm rounded-md bg-white border-0 bg-transparent shadow-sm ring-1 ring-inset ring-nightshade-50 py-1.5 text-gray-900 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blurple-500" /&gt;
 &lt;button type="submit" class="flex-0 text-sm items-center justify-center rounded-md border-2 border-blurple-500 bg-blurple-500 py-2 px-4 !font-semibold text-white transition-colors hover:border-blurple-600 hover:bg-blurple-600 flex"&gt;Subscribe&lt;/button&gt;
 &lt;/div&gt;

 &lt;footer class="text-sm"&gt;
 See our &lt;a href="https://joinmastodon.org/privacy-policy" class="text-nightshade-100 hover:underline"&gt;privacy policy&lt;/a&gt;
 &lt;/footer&gt;
&lt;/form&gt;
</description></item><item><title>What to know about Threads</title><link>https://blog.joinmastodon.org/2023/07/what-to-know-about-threads/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/07/what-to-know-about-threads/</guid><description>&lt;p&gt;Today, Meta is launching its new microblogging platform called Threads. What is noteworthy about this launch is that Threads intends to become part of the decentralized social web by using the same standard protocol as Mastodon, ActivityPub. There’s been a lot of speculation around what Threads will be and what it means for Mastodon. We’ve put together some of the most common questions and our responses based on what was launched today.&lt;/p&gt;
&lt;h3 id="what-we-know"&gt;What we know&lt;/h3&gt;
&lt;p&gt;Threads is a separate app from Facebook, WhatsApp, and Instagram. This means Threads’ user base will be separate from their existing platforms. Instagram users however can sign-in using their Instagram accounts. It will not be available in the EU and will not support federation at launch.&lt;/p&gt;
&lt;h3 id="what-you-may-be-asking"&gt;What you may be asking&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Will Meta get my data or be able to track me?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mastodon does not broadcast private data like e-mail or IP address outside of the server your account is hosted on. Our software is built on the reasonable assumption that third party servers cannot be trusted. For example, we cache and reprocess images and videos for you to view, so that the originating server cannot get your IP address, browser name, or time of access. A server you are not signed up with and logged into cannot get your private data or track you across the web. What it can get are your public profile and public posts, which are publicly accessible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will Meta be able to show me ads?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nobody on Mastodon can insert advertising into your user interface except the server you are signed up with and logged into. By default, Mastodon does not include any functionality to display ads. Unless you use Threads, you will not see any ads from Threads. It is also not possible for any third party server to insert ad-like posts into your home feed, since your home feed is calculated by your own server from the people (and hashtags) that you choose to follow. If someone you follow posts an ad and you do not want to see it, you can unfollow or mute that person.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will a large platform like Meta joining Mastodon overwhelm smaller servers?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mastodon works primarily through follow relationships. When you follow a user on another server for the first time, your server subscribes to that user specifically. That means even if there is a server with millions of people in the network, unless you follow millions of people, you will not be receiving updates for millions of people. This keeps traffic and storage manageable across the network. As such, small servers will not be affected, and may not even notice the presence of Threads, except when they decide to follow specific users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will Meta embrace-extend-extinguish the ActivityPub protocol?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are comparisons to be made between Meta adopting ActivityPub for its new social media platform and Meta adopting XMPP for its Messenger service a decade ago. There was a time when users of Facebook and users of Google Talk were able to chat with each other and with people from self-hosted XMPP servers, before each platform was locked down into the silos we know today. What would stop that from repeating? Well, even if Threads abandoned ActivityPub down the line, where we would end up is exactly where we are now. XMPP did not exist on its own outside of nerd circles, while ActivityPub enjoys the support and brand recognition of Mastodon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Based on its App Store listing, it collects a lot of data. How does this affect me?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;According to the App Store listing for the Threads app, it collects a variety of data, which stands out in comparison to the Mastodon app, which collects none. However, this affects only those who download and use the Threads app, or become users of Threads directly through other means. Even if you follow or send a message to a Threads user from your Mastodon account, Threads will not be able to collect any of your private information except the message you sent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When Threads adds federation, will I be able to communicate with people there?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We expect that eventually Mastodon and Threads will be interoperable, and from a technical standpoint, users will be able to follow each other and exchange messages. However, it is up to the operator of the Mastodon server you’re are using to decide whether to allow communication with Threads or not. If you are not happy with their decision, you can move your account to a different Mastodon server while keeping all of your followers. Since Mastodon is open-source, you can even host your own server and be entirely in charge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will Meta enforce content moderation policies on other servers?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Just like any Mastodon server, Threads will have their own moderation policies and tools, and just like any Mastodon server, they will be able to choose which content to block on their platform. However, their decisions can only affect their own platform. The only people who can set rules for and moderate your Mastodon server are the moderators of said server, and if you self-host, that continues to be just you. Different Mastodon servers don’t have to agree on all moderation policies to interoperate, as they can simply granularly block specific content, and there is no indication that Threads will be any different in this regard.&lt;/p&gt;
&lt;h3 id="our-stance"&gt;Our stance&lt;/h3&gt;
&lt;p&gt;We have been advocating for interoperability between platforms for years. The biggest hurdle to users switching platforms when those platforms become exploitative is the lock-in of the social graph, the fact that switching platforms means abandoning everyone you know and who knows you. The fact that large platforms are adopting ActivityPub is not only validation of the movement towards decentralized social media, but a path forward for people locked into these platforms to switch to better providers. Which in turn, puts pressure on such platforms to provide better, less exploitative services. This is a clear victory for our cause, hopefully one of many to come.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mastodon is a non-profit headquartered in Germany and fully crowd-funded through donations. If you enjoy using mastodon.social, or our official apps for iOS and Android, or want to support the development of the server software itself, you can &lt;a href="https://patreon.com/mastodon"&gt;donate to our non-profit on Patreon&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Mastodon for Android update</title><link>https://blog.joinmastodon.org/2023/07/mastodon-for-android-update/</link><pubDate>Sat, 01 Jul 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/07/mastodon-for-android-update/</guid><description>&lt;p&gt;While usually our app updates don&amp;rsquo;t get a dedicated blog post, this one is a bit bigger and provides a good opportunity to reflect on how the Android app changed since launch roughly a year ago. Today, Mastodon for Android has received a complete Material You redesign. We left no stone unturned—tab bars, settings, composing—everything is refreshed and reflects your color palette.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve entirely revamped the previously sparse settings section with dozens of new ways to customize your experience, as well as the ability to access information about the server you&amp;rsquo;re connected to and view its rules. You can choose to hide boost/favourite counters, remind yourself to add alternative text for media uploads, change your default posting language, hide all content warnings and much more.&lt;/p&gt;
&lt;p&gt;When developing our native apps, we don&amp;rsquo;t just copy how everything works in the web app, but deliberately take the opportunity to have our professional designers work out the best user experience from first principles. As a result, profile screens now ergonomically display all the featured content that was previously missing from the app—like pinned posts, featured hashtags and endorsed users.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve also finally added filters management into the app. You can now view, edit and create filters for specific phrases or keywords, and customize how and where exactly those filters apply, so if there&amp;rsquo;s some topic you never want to hear about, you can just tune it out. For more peace of mind, we&amp;rsquo;ve also added the ability to temporarily pause all notifications.&lt;/p&gt;
&lt;p&gt;One subtle but important change is where and how we show &lt;a href="https://joinmastodon.org/verification"&gt;verifications&lt;/a&gt;. If a profile has a verified link, we&amp;rsquo;ll surface it in search results and other lists so you can more easily tell different profiles apart. All in all, this is just scratching the surface of all the changes in this redesign. There are so many more features, bug fixes, and easter eggs we didn&amp;rsquo;t cover. &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Try it out&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mastodon is a non-profit headquartered in Germany and fully crowd-funded through donations. If you enjoy using mastodon.social, or our official apps for iOS and Android, or want to support the development of the server software itself, you can &lt;a href="https://patreon.com/mastodon"&gt;donate to our non-profit on Patreon&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>A new onboarding experience on Mastodon</title><link>https://blog.joinmastodon.org/2023/05/a-new-onboarding-experience-on-mastodon/</link><pubDate>Mon, 01 May 2023 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2023/05/a-new-onboarding-experience-on-mastodon/</guid><description>&lt;p&gt;Today we’re making signing up on Mastodon easier than ever before. We understand that deciding which Mastodon service provider to kick off your experience with can be confusing. We know this is a completely new concept for many people, since traditionally the platform and the service provider are one and the same. This choice is what makes Mastodon different from existing social networks, but it also presents a unique onboarding challenge. To make this step easier, we now have a default sign-up option that works with a server we operate. If you wish to leave or join a different server, you can do so at any time.&lt;/p&gt;
&lt;p&gt;Decentralization is a big part of Mastodon’s DNA and is at the forefront of our mission. You may be asking, how a default server option furthers decentralization. We believe it’s important for Mastodon to be good as a product on its own merits, and not just because of its ideology. If we only attract people who already care about decentralization, our ability to make decentralization mainstream becomes that much harder. Making the onboarding process as easy as possible helps new users get past the sign-up process and more quickly engage with others. This gives us a far better chance of showcasing what decentralized social networks have to offer instead of having that person bounce and never hearing from them again. We’ve made strides in upgrading our infrastructure and growing our moderation capabilities to hopefully provide a great first experience to everyone who joins. Of course, if you know what server you want to join, you can still go through advanced server selection from the beginning.&lt;/p&gt;
&lt;p&gt;Mastodon has grown so much over the past 6 months even despite some of the perceived onboarding challenges. Our platform has become home to diverse discussions, perspectives, and voices, including artists, writers, journalists, and political organizations. We just surpassed a billion posts per month which validates the very real and engaged conversations happening across Mastodon and the wider Fediverse.&lt;/p&gt;
&lt;p&gt;And our work continues. We’re always listening to the community and we’re excited to bring you some of the most requested features, such as quote posts, improved content and profile search, and groups. We’re also continuously working on improving content and profile discovery, onboarding, and of course our extensive set of moderation tools, as well as removing friction from decentralized features. Keep a lookout for these updates soon.&lt;/p&gt;
&lt;p&gt;We’re grateful that you’re a part of this community and to be working with you to build Mastodon into a place where you will always have the power to choose your social media experience.&lt;/p&gt;</description></item><item><title>Twitter suspends Mastodon account, prevents sharing links</title><link>https://blog.joinmastodon.org/2022/12/twitter-suspends-mastodon-account-prevents-sharing-links/</link><pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/12/twitter-suspends-mastodon-account-prevents-sharing-links/</guid><description>&lt;p&gt;On Dec 16, Twitter suspended our @joinmastodon account after we shared a link to the newly registered &lt;a href="https://mastodon.social/@elonjet"&gt;Mastodon account of @ElonJet&lt;/a&gt;, an account that broadcasts public flight path data of Elon Musk’s private jet, which was previously suspended from Twitter itself. At the same time, accounts of multiple journalists from major publications such as CNN, The New York Times, The Washington Post, as well as various independent journalists, were likewise suspended for either linking to the account itself or talking about the event. We also started receiving reports that users were unable to tweet links to any Mastodon servers, including ones completely unrelated to the @ElonJet account, encountering an error message claiming that the links were identified as “potentially harmful”, &lt;a href="https://universeodon.com/@georgetakei/109524979684000826"&gt;among them George Takei&lt;/a&gt;, making it more difficult for people to share their Mastodon profiles.&lt;/p&gt;
&lt;p&gt;This is a stark reminder that centralized platforms can impose arbitrary and unfair limits on what you can and can’t say while holding your social graph hostage. At Mastodon, we believe that there doesn’t have to be a middleman between you and your audience and that journalists and government institutions especially should not have to rely on a private platform to reach the public. Our free and open-source software enables anyone to run a social media platform entirely on their own infrastructure, entirely under their own control, while connecting to a global decentralized social network. Not only does this allow organizations like the &lt;a href="https://social.bund.de"&gt;German government&lt;/a&gt; or the &lt;a href="https://social.network.europa.eu"&gt;European Commission&lt;/a&gt; to run their own Mastodon servers where they publish important information that gets distributed to thousands of their followers across many different Mastodon servers, but it also gives you the freedom to choose a social media provider the same way you would choose a telephone, internet, or e-mail provider, and to move from one to the other while retaining your followers.&lt;/p&gt;
&lt;p&gt;While there is no shortage of social media platforms new and old, this is a radically different approach to social media that offers something traditional social media cannot. This may be one of the reasons why Mastodon has recently exploded in popularity, jumping from approx. 300K monthly active users to 2.5M between the months of October and November, with more and more journalists, political figures, writers, actors and organizations moving over. Understanding that freedom of the press is absolutely essential for a functional democracy, we are excited to see Mastodon grow and become a household name in newsrooms across the world, and we are committed to continuing to improve our software to face up to new challenges that come with rapid growth and increasing demand.&lt;/p&gt;</description></item><item><title>New website launch</title><link>https://blog.joinmastodon.org/2022/09/new-website-launch/</link><pubDate>Wed, 21 Sep 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/09/new-website-launch/</guid><description>&lt;p&gt;&lt;strong&gt;I&amp;rsquo;m pleased to announce that &lt;a href="https://joinmastodon.org"&gt;our new joinmastodon.org website&lt;/a&gt; is now live.&lt;/strong&gt; We teamed up with the design agency &lt;a href="https://oak.is"&gt;Oak&lt;/a&gt; to give our project a modern and professional presence. The website is responsible for explaining what Mastodon is, why it is better than other social media platforms, what makes it unique, and how to get started, and I believe that it has never been as good at those things as it is now.&lt;/p&gt;
&lt;p&gt;When writing the copy, I focused on the angles that seemed to resonate with people the most on our social media, and tried to pre-empt common misconceptions about the fundamental workings of Mastodon.&lt;/p&gt;
&lt;p&gt;Leaning a little too hard into the community and theme-focused server angle in the previous website iteration seemed to lead a lot of people into believing that Mastodon servers were insulated from each other like mere chatrooms or subreddits. While undoubtedly useful for some, that is a lot less unique and exciting than the reality, that Mastodon&amp;rsquo;s fundamental value-add is being able to follow users from other Mastodon servers and even other compatible software and receive their posts in your home feed from just one account.&lt;/p&gt;
&lt;p&gt;Besides explaining Mastodon in a much better way, the new website also provides more information about the project than before. You will find a summary of the project&amp;rsquo;s origins, our up-to-date numbers, who&amp;rsquo;s on the team, links to our annual reports and podcast interviews we&amp;rsquo;ve done on the &lt;a href="https://joinmastodon.org/about"&gt;About Us&lt;/a&gt; page, as well as much clearer contact instructions. I&amp;rsquo;m equally proud of the &lt;a href="https://joinmastodon.org/branding"&gt;Branding&lt;/a&gt; page, which should ensure much more professional representation of our project in the press.&lt;/p&gt;
&lt;p&gt;I hope the new website will help more people understand and become interested in decentralized social media and what it can do for them. And just plain look nicer!&lt;/p&gt;</description></item><item><title>Mastodon branding updates</title><link>https://blog.joinmastodon.org/2022/06/mastodon-branding-updates/</link><pubDate>Wed, 29 Jun 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/06/mastodon-branding-updates/</guid><description>&lt;p&gt;We&amp;rsquo;re teaming up with the design agency &lt;a href="https://oak.is"&gt;Oak&lt;/a&gt; to update our homepage and our brand. We&amp;rsquo;re leaving the ubiquitous blue that every social app seems to have behind in favour of a &lt;strong&gt;vibrant purple&lt;/strong&gt;. Our logo also gets some subtle shape fixes that makes it look more precise.&lt;/p&gt;
&lt;p&gt;I originally picked our color palette from a color palette website back in 2016 when I needed &lt;em&gt;something&lt;/em&gt; for the interface of my then-hobby project, because it looked nice enough. No deeper thought went into it, and eventually the blue shade of the palette became part of the Mastodon logo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The new color will give Mastodon some original personality and it will stand out more from competitors, who all use blue.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As for the homepage, our intent is to give it a professional touch and improve how well it communicates what Mastodon is. joinmastodon.org is the face of the software and of the segment of the federated network that is powered by Mastodon, and as such, I believe that a higher quality website will improve public perception of the entire project.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://oak.is"&gt;Oak&lt;/a&gt; has generously provided a discount on services rendered as a form of sponsorship. We&amp;rsquo;re about a month in on the work and expect to complete the new website in about two more months.&lt;/p&gt;
&lt;p&gt;As for the brand updates, they will be &lt;strong&gt;rolled out gradually&lt;/strong&gt; as we update multiple independent properties&amp;ndash;the &lt;a href="https://github.com/mastodon/mastodon"&gt;software itself&lt;/a&gt;, the &lt;a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;iOS app&lt;/a&gt;, the &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Android app&lt;/a&gt;, the &lt;a href="https://joinmastodon.org"&gt;homepage&lt;/a&gt;, the &lt;a href="https://docs.joinmastodon.org"&gt;documentation&lt;/a&gt;, this blog&amp;hellip; So do not be alarmed if you do not see the purple everywhere at the same time.&lt;/p&gt;</description></item><item><title>Twitter buyout puts Mastodon into spotlight</title><link>https://blog.joinmastodon.org/2022/04/twitter-buyout-puts-mastodon-into-spotlight/</link><pubDate>Tue, 26 Apr 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/04/twitter-buyout-puts-mastodon-into-spotlight/</guid><description>&lt;p&gt;The news of Elon Musk buying Twitter has put Mastodon into the public spotlight as an alternative social network, rapidly exploding our growth with over 30,000 new users in just a single day. This is because at Mastodon, we present a vision of social media that cannot be bought and owned by any billionaire, and strive to create a more resilient global platform without profit incentives. We believe that your ability to communicate online should not be at the whims of a single commercial company.&lt;/p&gt;
&lt;p&gt;Mastodon is used to publish 500-character messages with pictures, polls, videos and so on to an audience of followers, and, in turn, to follow interesting people and receive their posts in a chronological home feed. Unlike Twitter, there is no central Mastodon website &amp;ndash; you sign up to a provider that will host your account, similarly to signing up for Outlook or Gmail, and then you can follow and interact with people using different providers. Anyone can become such a provider as Mastodon is free and open-source. It has no ads, respects your privacy, and allows people/communities to self-govern.&lt;/p&gt;
&lt;p&gt;Funnily enough one of the reasons I started looking into the decentralized social media space in 2016, which ultimately led me to go on to create Mastodon, were rumours that Twitter, the platform I&amp;rsquo;d been a daily user of for years at that point, might get sold to another controversial billionaire. Among, of course, other reasons such as all the terrible product decisions Twitter had been making at that time. And now, it has finally come to pass, and for the same reasons masses of people are coming to Mastodon.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve been steadily working towards the ultimate goal of providing a viable alternative to Twitter since 2016, and have proven the scalability and resilience of the platform through organic growth over the years. However, without doubt the sudden and explosive success is putting strain on our resources, specifically the public Mastodon servers that we, the non-profit, maintain ourselves: mastodon.social and mastodon.online. While there are over 2,400 Mastodon servers out there operated by independent individuals and organizations, we provide these two servers as a fallback option for those who don&amp;rsquo;t know which other server to sign-up on.&lt;/p&gt;
&lt;p&gt;We have been working non-stop to maintain quality of service on mastodon.social and mastodon.online, but you may have noticed issues such as confirmation e-mails not arriving or home feeds being delayed. We apologize for the inconvenience and continue to work on addressing these issues.&lt;/p&gt;
&lt;p&gt;We recommend using &lt;a href="https://joinmastodon.org"&gt;joinmastodon.org&lt;/a&gt; or our &lt;a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;official iOS&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;Android&lt;/a&gt; apps to choose a Mastodon server to sign-up on, and to tell others to do the same when talking about Mastodon insteading of promoting our own servers directly. All Mastodon servers interoperate, allowing you to follow and be followed by other users from other servers seamlessly. And if you don&amp;rsquo;t like your choice afterwards, you can create another account and move all your followers to it. Distributing users across different servers is what makes Mastodon more scalable, socially and technologically.&lt;/p&gt;
&lt;p&gt;In the future, we plan to add end-to-end encrypted messaging and an exciting groups functionality to our software, together with further updates to our well-received official apps.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mastodon is a German non-profit organization and we create free, open-source software. You can support us through &lt;a href="https://patreon.com/mastodon"&gt;our Patreon&lt;/a&gt;, &lt;a href="https://sponsor.joinmastodon.org"&gt;our custom sponsorship portal&lt;/a&gt;, or by &lt;a href="https://github.com/mastodon/mastodon"&gt;contributing to the code directly&lt;/a&gt;. If you have any questions reach out to &lt;a href="mailto:hello@joinmastodon.org"&gt;hello@joinmastodon.org&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Official apps now available for iOS and Android</title><link>https://blog.joinmastodon.org/2022/04/official-apps-now-available-for-ios-and-android/</link><pubDate>Thu, 21 Apr 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/04/official-apps-now-available-for-ios-and-android/</guid><description>&lt;div class="flex justify-center gap-x-4 not-prose"&gt;
 &lt;a class="block h-10" href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;
 &lt;img class="h-full w-auto" alt="Download on the App Store" src="https://blog.joinmastodon.org/download-on-app-store.svg" /&gt;
 &lt;/a&gt;

 &lt;a class="block h-10" href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;
 &lt;img class="h-full w-auto" alt="Get it on Google Play" src="https://blog.joinmastodon.org/download-on-play-store.svg" /&gt;
 &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;With the release of our Android app on the Play Store we are now present on both major mobile platforms. The apps are gaining overwhelmingly positive reviews, some even going so far as to claim that &lt;a href="https://bilge.world/mastodon-ios-app-review"&gt;our onboarding is smoother than any other social media platform&amp;rsquo;s&lt;/a&gt;; our iOS app is rising through the ranks of top social networking apps on the App Store; and for the first time in Mastodon&amp;rsquo;s history, server admins are seeing ever increasing numbers of new sign-ups from mobile apps instead of the web interface.&lt;/p&gt;
&lt;p&gt;We hope the trend continues now that people can easily find the app and sign-up by simply searching Mastodon on their app store of choice, and now that Mastodon can take advantage of the app stores&amp;rsquo; own discovery features.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve put a lot of care and resources into developing these apps, counter-acting the stigma that open-source projects do not prioritize ease of use and visual design by working with world-class UX designers that had prior experience working on major commercial social networks. As a result, we have apps that are extremely slick and visually pleasing and do not look out of place on their respective platforms.&lt;/p&gt;
&lt;p&gt;This is an opportunity to take a closer look at some of the design considerations.&lt;/p&gt;
&lt;h3 id="onboarding"&gt;Onboarding&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="onboarding.png" class="rounded-lg shadow-lg"
 alt="Signing up in the Android app"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Signing up in the Android app&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One of the challenges of Mastodon adoption is the onboarding process, because it&amp;rsquo;s not enough to capture a person&amp;rsquo;s desired username and e-mail and let them create an account, which is what people are used to from major websites; instead, you need to first choose a Mastodon server where you will make the account (comparable to e.g. choosing an e-mail provider). The implications of choosing the server are primarily in who is the entity responsible for the server, what moderation policies they enforce, what language and jurisdiction they operate in, and which domain name will be part of your username.&lt;/p&gt;
&lt;p&gt;We approached this problem with a multiple-step sign-up flow that begins with choosing a server, then requires to agree to summarized moderation policies of the server, and finally goes on to the more familiar username, e-mail and password form. We maintain our own directory of servers that people submit to us after agreeing to some basic rules that guarantee data and user safety and quality of service; those are the servers we display on the first step by default. Still more consideration has been given to how to display them.&lt;/p&gt;
&lt;p&gt;Our user studies have shown that retention drops off dramatically if the user has to wait for moderator approval before being able to log in (exception being experienced Mastodon users who are already invested in the network and know exactly what they are getting into by requesting an account from an invite-only server); people lose interest and never login even after being approved. Therefore we do not show invite-only servers in the app, focusing instead on the ones that allow people to get started immediately.&lt;/p&gt;
&lt;p&gt;The determining factor in a user&amp;rsquo;s experience on a server is the number of other active users on the server. All discovery features are ultimately powered by user activity, and the first user on a server would have to do a lot of exploration off-site (through word of mouth, browsing other servers, or other channels) to fill their home feed. But cultivating a decentralized social network, we do not want power to concentrate on just a few ever-growing servers. Therefore, rather than simply putting the most active servers on the top, our algorithm pushes medium-sized servers higher.&lt;/p&gt;
&lt;p&gt;We also provide a search field that allows inputting the server domain directly.&lt;/p&gt;
&lt;p&gt;The last step in onboarding, after the user has confirmed their e-mail address, they are presented with the options to follow a selection of accounts popular on the server that predominantly post in the user&amp;rsquo;s language, or to head to the explore tab to look at what&amp;rsquo;s trending on the server.&lt;/p&gt;
&lt;h3 id="discovery"&gt;Discovery&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="explore.png" class="rounded-lg shadow-lg"
 alt="Explore tab in the Android app"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Explore tab in the Android app&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;While designing the official apps we got an opportunity to reconsider some Mastodon features. The federated timeline, also known as the public timeline, firehose, or &amp;ldquo;whole known network&amp;rdquo;, is a view into a Mastodon server&amp;rsquo;s real-time database of public posts; and the local timeline is that, but filtered by only posts originating from your Mastodon server. While some people came to rely on those tools, there were a few reasons to (at least initially) omit them from the apps.&lt;/p&gt;
&lt;p&gt;The federated timeline has too low of a signal vs. noise ratio to be effective as a discovery tool. Due to the way Mastodon pulls down content to provide more detailed profiles and conversations, the federated timeline becomes unmanageable on servers of all sizes, even single-user ones. Unsurprisingly, most content is not actually worth looking at, and in some cases, actively undesirable.&lt;/p&gt;
&lt;p&gt;This real-time view into everything that&amp;rsquo;s published on the server is a platform for all sorts of abuse that can only be stopped after the damage has been done. Normally, if someone posts spam or nudity, it would not be seen by anyone but themselves. Local and federated timelines instantly turn that into an issue affecting everyone. This puts extra strain on moderators.&lt;/p&gt;
&lt;p&gt;With Apple and Google historically holding apps accountable for content users can access through the app, even when the app could be reasonably classified as a browser, showing unfiltered content is a ticking time bomb for the app&amp;rsquo;s presence on the major app stores. Especially considering our goal of attracting new users, those users are of-yet less invested in Mastodon as a platform and less likely to use in-app reporting and blocking tools instead of giving up on the app.&lt;/p&gt;
&lt;p&gt;Instead, we offer a new explore tab that highlights, among other things, currently popular posts. It is a much more efficient way to find interesting content and follow users on Mastodon without scrolling through many low-quality posts and unfamiliar languages. All data that Mastodon uses for calculating rankings is locally sourced so it&amp;rsquo;s heavily skewed towards things that are popular on your server, and everything goes through your server&amp;rsquo;s moderators before appearing on the explore tab, making it much less prone to abuse.&lt;/p&gt;
&lt;p&gt;We also have a vision of a new feature to eventually supplant local timelines: groups. We imagine a group as a place with an actually separate timeline that you can post to, without the post also going out to the public, your profile, and your followers&amp;rsquo; home feeds. This timeline could be made visible for group members only. You could join it from your account on any other server, thus alleviating concerns of infrastructure centralization while giving people everything they&amp;rsquo;ve ever wanted from local timelines. We&amp;rsquo;re set to complete this feature this year.&lt;/p&gt;
&lt;h3 id="going-forward"&gt;Going forward&lt;/h3&gt;
&lt;p&gt;We are not done! While we have decided against including the local timeline in our apps initially, understanding that this feature is important for many community servers on Mastodon in the absence of still theoretical and not yet proven groups, we will be adding it to the explore tab. And while the apps support all core functionality of Mastodon, there are still missing features like lists, pinned posts, new post notifications (&amp;ldquo;bell icon!&amp;rdquo;), editing, phrase filters management and so on that will be gradually added as we continue development. Plus the aforementioned groups feature in Mastodon itself!&lt;/p&gt;</description></item><item><title>Mastodon 3.5</title><link>https://blog.joinmastodon.org/2022/03/mastodon-3.5/</link><pubDate>Wed, 30 Mar 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/03/mastodon-3.5/</guid><description>&lt;p&gt;Work on multiple features in this release has been kindly sponsored by the German Federal Ministry of Education and Research through the &lt;a href="https://prototypefund.de" title="01IS21S29"&gt;Prototype Fund&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve added one of the most requested functions among our competitors, the ability to &lt;strong&gt;edit posts&lt;/strong&gt;. Since older Mastodon versions would not understand the edits, the function is disabled in the web app until more Mastodon servers upgrade to 3.5, but all parts are already included in the release. The original and previous versions of the posts are saved and remain accessible through a history view. And people who have previously shared the post get notified about any edits, so they can un-share if there&amp;rsquo;s foul play.&lt;/p&gt;
&lt;p&gt;Coincidentally, the order of media attachments in a post is no longer dependent on the order in which they were uploaded.&lt;/p&gt;
&lt;p&gt;Discoverability has always been a hot topic on Mastodon. Discoverability makes or breaks a platform, as there is nothing more important to retain a new user than to let them find something interesting to stay for, as soon as possible. In 3.5, we bring a new &lt;strong&gt;explore page&lt;/strong&gt; which features currently popular posts, news stories that people share a lot, trending hashtags and follow recommendations. Furthermore, for the first time, we attempt to bring people content in their own language.&lt;/p&gt;
&lt;p&gt;As we value safety, these new features come with their own moderation tools&amp;ndash;nothing will show up in trends unless reviewed by one of the server&amp;rsquo;s moderators first.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;new, multi-step report flow&lt;/strong&gt; improves the quality of information for moderators and highlights available self-help tools in Mastodon to the user.&lt;/p&gt;
&lt;p&gt;On the topic of moderation, any action taken by a server moderator against a user&amp;rsquo;s account, such as deleting their posts or suspending the account, will now &lt;strong&gt;be viewable through account settings&lt;/strong&gt;, by default accompanied by an e-mail notification, and permit the user to &lt;strong&gt;submit an appeal&lt;/strong&gt;. Since actions such as deleting posts or marking posts as sensitive did not use to generate any kind of notification, this should make them more viable precursors to harsher punishments like suspensions; and being able to handle appeals within Mastodon should reduce the burden of out-of-band e-mail communication for moderators and increase user trust in Mastodon.&lt;/p&gt;
&lt;p&gt;There is a brand new &lt;strong&gt;moderation dashboard&lt;/strong&gt; that shows the development of various key metrics over time and shines some light on where new users come from, which languages they speak, and how many of them stay active months later. A completely &lt;strong&gt;new look for the report screen&lt;/strong&gt; reduces the time and effort required to handle reports, and multiple selections on the accounts page offer a way to &lt;strong&gt;clean up spam and bot accounts in large batches&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The 3.5 release consists of &lt;strong&gt;887 commits&lt;/strong&gt; by &lt;strong&gt;23 contributors&lt;/strong&gt; between June 3, 2021 and March 30, 2022. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/mastodon/mastodon/blob/v3.5.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/mastodon/mastodon/blob/v3.5.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release&lt;/strong&gt;: Gargron, ClearlyClaire, tribela, noiob, mayaeh, mashirozx, noellabo, baby-gnu, MitarashiDango, chandrn7, Brawaru, aquarla, zunda, rgroothuijsen, ykzts, HolgerHuo, helloworldstack, r0hanSH, kgtkr, heguro, matildepark, weex, truongnmt&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release&lt;/strong&gt;: Kristaps_M, Cyax, Sveinn í Felli, Kimmo Kujansuu, Jeong Arm, xatier, Thai Localization, spla, NCAA, Emanuel Pina, GunChleoc, Xosé M., Hồ Nhất Duy, T. E. Kalaycı, ケインツロ space_invader, e, Jeff Huang, Besnik_b, Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi, koyu, Ramdziana F Y, calypsoopenmail, Alessandro Levati, Bran_Ruz, Tigran, Allen Zhong, Daniele Lira Mereb, Zoltán Gera, Martin, Gearguy, Marek Ľach, Eshagh, Asier Iturralde Sarasola, Takeçi, Roboron, Ihor Hordiichuk, xpil, Tagomago, Rojdayek, Ondřej Pokorný, Kristoffer Grundström, Alexander Sorokin, Joene, ButterflyOfFire, Balázs Meskó, Catalina, Manuel Viens, LNDDYL, Danial Behzadi, Vik, GCardo, enolp, NadieAishi, Just Spanish, bilfri, VaiTon, Frontier Translation Ltd., Mastodon 中文译者, rondnunes, Edward Navarro, ClearlyClaire, Kahina Mess, GiorgioHerbie, ManeraKai, හෙළබස, retiolus, stan ionut, Filbert Salim, ahangarha, Rex_sa, Sokratis Alichanidis, axi, Delta, Ali Demirtaş, Michael Zeevi, SarfarazAhmed, Mo_der Steven, Remito, Maya Minatsuki, Врабац, Dženan, FreddyG, Alix Rossi, cruz2020, Adrián Graña, vpei, Ryo, AlexKoala, 1Alino, Michał Sidor, Vedran Serbu, Yi-Jyun Pan, Y.Yamashiro, al_._, Matthías Páll Gissurarson, KcKcZi, xsml, cybergene, mynameismonkey, Rikard Linde, strubbl, 北䑓如法, Hexandcube, abidin toumi, serapolis, Diluns, 游荡, megaleo, arielcostas3, sanser, Imre Kristoffer Eilertsen, Yamagishi Kazutoshi, MODcraft, Marcus Myge, Yuval Nehemia, Amir Reza, Percy, Marek Ľach, Nemuj, revarioba, Oymate, Ifnuth, 森の子リスのミーコの大冒険, Algustionesa Yoshi, Artem Mikhalitsin, gnu-ewm, Tatsuto &amp;ldquo;Laminne&amp;rdquo; Yamamoto, filippodb, Maciej Błędkowski, tunisiano187, Timur Seber, Mélanie Chauvel, Jona, Ka2n, atriix, eorn, Lagash, Chine Sebastien, Exbu, A A, Goudarz Jafari, Cirelli, ギャラ, siamano, Siddharastro Doraku, asnomgtu, Saederup92, damascene, dbeaver, Overflow Cat, rikrise, zordsdavini, ThonyVezbe, Slimane Selyan AMIRI, coxde, Maxine B. Vågnes, tzium, Umi, Youngeon Lee, Nikita Epifanov, DAI JIE, X.M, ZQYD, v4vachan, boni777, Rhys Harrison, Stanisław Jelnicki, iVampireSP, nua_kr, SteinarK, Paula SIMON, CloudSet, Adam Sapiński, Zlr-, papayaisnotafood, Linnéa, Parodper, César Daniel Cavanzo Quintero, Artem, EzigboOmenana, Mt Front, mkljczk, Lalo Tafolla, Yassine Aït-El-Mouden, frumble, ronee, lokalisoija, Jason Gibson, María José Vera, codl, Tangcuyu, Lilian Nabati, Kaede, mawoka-myblock, Mohd Bilal, Ragnars Eggerts, thisdudeisvegan, liffon, Holger Huo, Pukima, HSD Channel, pullopen, hud5634j, Patrice Boivin, Jill H., maksutheam, majorblazr, 江尚寒, Balázs Meskó, soheilkhanalipur, Vanege&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you&lt;/strong&gt; to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; through &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt; or through &lt;a href="https://sponsor.joinmastodon.org"&gt;our new sponsors portal&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="ios.png" class="rounded-lg shadow-lg"
 alt="Mastodon for iOS"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Mastodon for iOS&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; We just released a new version of our &lt;a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;official iOS app&lt;/a&gt;, adding iPad support and many visual improvements, and just started &lt;a href="https://www.patreon.com/posts/mastodon-for-64413994"&gt;beta-testing our official Android app&lt;/a&gt; with our Patreon supporters.&lt;/p&gt;</description></item><item><title>Official Mastodon for Android app is coming soon</title><link>https://blog.joinmastodon.org/2022/02/official-mastodon-for-android-app-is-coming-soon/</link><pubDate>Wed, 09 Feb 2022 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2022/02/official-mastodon-for-android-app-is-coming-soon/</guid><description>&lt;p&gt;Following the successful launch of our official iOS app, in January we&amp;rsquo;ve begun the development of an Android version. We continue working with the NYC design agency &lt;a href="https://lickability.com/"&gt;Lickability&lt;/a&gt; and welcome &lt;a href="https://grishka.me/"&gt;Gregory Klyushnikov&lt;/a&gt;, better known as grishka on the fediverse, as the lead Android developer. Gregory is a talented developer with a history of working on social apps like VKontakte and Telegram.&lt;/p&gt;
&lt;p&gt;Continued development is not limited to Android. Work on the app flows into the main Mastodon software as existing APIs are adjusted and new APIs are added to support new features, and the web app&amp;rsquo;s UI is improved with ideas from the professional UX designers working on the iOS and Android apps.&lt;/p&gt;
&lt;p&gt;We are excited to bring an app that takes usability, new user onboarding and visual design seriously to one of the largest mobile platforms.&lt;/p&gt;
&lt;p&gt;The efforts are sponsored by our generous sponsors on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt; and our &lt;a href="https://sponsor.joinmastodon.org"&gt;custom sponsorship platform&lt;/a&gt;, and by the Federal Ministry of Education and Research through the &lt;a href="https://prototypefund.de/project/mastodon-mobile-apps-und-e2e-verschluesselung/"&gt;Prototype Fund&lt;/a&gt; (BMBF Förderkennzeichen: 01IS21S29). &lt;strong&gt;Thanks to everyone who is already sponsoring Mastodon, and stay tuned for updates!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Our iOS and Android apps are now available!&lt;/p&gt;
&lt;div class="flex justify-center gap-x-4 not-prose"&gt;
 &lt;a class="block h-10" href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;
 &lt;img class="h-full w-auto" alt="Download on the App Store" src="https://blog.joinmastodon.org/download-on-app-store.svg" /&gt;
 &lt;/a&gt;

 &lt;a class="block h-10" href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;
 &lt;img class="h-full w-auto" alt="Get it on Google Play" src="https://blog.joinmastodon.org/download-on-play-store.svg" /&gt;
 &lt;/a&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon Recap 2021</title><link>https://blog.joinmastodon.org/2021/12/mastodon-recap-2021/</link><pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/12/mastodon-recap-2021/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Since Mastodon is decentralized, different Mastodon servers have a different view of the network depending on user activity, and providing an objective data summary across the entire network is not currently possible. Data provided in this blog post is provided as-seen-from mastodon.social, the oldest and one of the more well connected servers, but it is nevertheless biased towards mastodon.social&amp;rsquo;s demographic and may not represent other parts of the fediverse accurately.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="most-shared-posts-of-2021"&gt;Most shared posts of 2021&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dragonscave.space/@guilevi/106213420514454754"&gt;&amp;ldquo;I have encountered more image descriptions on Mastodon [&amp;hellip;]&amp;rdquo;&lt;/a&gt; (607 reblogs)&lt;/p&gt;
&lt;iframe src="https://dragonscave.space/@guilevi/106213420514454754/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://dragonscave.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@neodb/106932990534656958"&gt;&amp;quot;🌐 NeoDB 联邦宇宙书影音站 🌐 正式开张了！&amp;quot;&lt;/a&gt; (547 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@neodb/106932990534656958/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mamot.fr/@setthemfree/106014810050613790"&gt;&amp;ldquo;Delete Chrome. Now.&amp;rdquo;&lt;/a&gt; (572 reblogs)&lt;/p&gt;
&lt;iframe src="https://mamot.fr/@setthemfree/106014810050613790/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mamot.fr/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@phryk/106256273112353614"&gt;&amp;ldquo;SCI-HUB NEEDS YOUR HELP!&amp;rdquo;&lt;/a&gt; (546 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@phryk/106256273112353614/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://chaos.social/@ConnyDuck/105904002285019275"&gt;&amp;quot;#Tusky has been removed from the PlayStore by Google&amp;quot;&lt;/a&gt; (455 reblogs)&lt;/p&gt;
&lt;iframe src="https://chaos.social/@ConnyDuck/105904002285019275/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://chaos.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="most-shared-pictures-of-2021"&gt;Most shared pictures of 2021&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@volt4ire/107152818317729692"&gt;&amp;ldquo;God I love The Register&amp;rsquo;s headline writers&amp;rdquo;&lt;/a&gt; (236 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@volt4ire/107152818317729692/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@alexlaw/106109674625935102"&gt;&amp;ldquo;The moment when love is first confessed&amp;rdquo;&lt;/a&gt; (243 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@alexlaw/106109674625935102/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@gerowen/106978308085702358"&gt;&amp;quot;[&amp;hellip;] #Google keeps records of everything you buy [&amp;hellip;]&amp;quot;&lt;/a&gt; (344 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@gerowen/106978308085702358/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@a_lizard/106392744049969302"&gt;&amp;ldquo;Irony&amp;rdquo;&lt;/a&gt; (253 reblogs)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@a_lizard/106392744049969302/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://framapiaf.org/@davidrevoy/106975350479035305"&gt;&amp;ldquo;Do not buy NFT made with my art&amp;rdquo;&lt;/a&gt; (441 reblogs)&lt;/p&gt;
&lt;iframe src="https://framapiaf.org/@davidrevoy/106975350479035305/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://framapiaf.org/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://cybre.space/@nicodotgay/107260261427319013"&gt;&amp;ldquo;I [&amp;hellip;] turned [lion NFTs] into a mosaic of a person right-clicking&amp;rdquo;&lt;/a&gt; (393 reblogs)&lt;/p&gt;
&lt;iframe src="https://cybre.space/@nicodotgay/107260261427319013/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://cybre.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="most-liked-posts-of-2021"&gt;Most liked posts of 2021&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@Decentralize_today/105568887053100411"&gt;&amp;ldquo;Not on social media?&amp;rdquo;&lt;/a&gt; (559 favourites)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Decentralize_today/105568887053100411/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@fribbledom/105919411987898783"&gt;&amp;ldquo;Police are warning students [&amp;hellip;] not to access Sci-Hub [&amp;hellip;]&amp;rdquo;&lt;/a&gt; (559 favourites)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@fribbledom/105919411987898783/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@Mastodon/106670524015426852"&gt;&amp;ldquo;The official #Mastodon app for iOS is now on the App Store!&amp;rdquo;&lt;/a&gt; (448 favourites)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Mastodon/106670524015426852/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@Gargron/106104387021236353"&gt;&amp;quot;[&amp;hellip;] Mastodon gGmbH [&amp;hellip;]&amp;quot;&lt;/a&gt; (396 favourites)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Gargron/106104387021236353/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.social/@alexlaw/105596325461584834"&gt;&amp;ldquo;If your cat often [&amp;hellip;] walks all over your keyboard [&amp;hellip;]&amp;rdquo;&lt;/a&gt; (362 favourites)&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@alexlaw/105596325461584834/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="most-intensive-polls-of-2021"&gt;Most intensive polls of 2021&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://deadinsi.de/@delve/107202744769974116"&gt;&amp;ldquo;What&amp;rsquo;s your primary OS?&amp;rdquo;&lt;/a&gt; (4,382 votes)&lt;/p&gt;
&lt;iframe src="https://deadinsi.de/@delve/107202744769974116/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://deadinsi.de/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mastodon.technology/@rysiek/106623749585704939"&gt;&amp;ldquo;Do you use any Mozilla products?&amp;rdquo;&lt;/a&gt; (2,280 votes)&lt;/p&gt;
&lt;iframe src="https://mastodon.technology/@rysiek/106623749585704939/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mastodon.technology/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://deadinsi.de/@delve/105905583669011976"&gt;&amp;ldquo;Do you use an RSS/Atom reader?&amp;rdquo;&lt;/a&gt; (2,031 votes)&lt;/p&gt;
&lt;iframe src="https://deadinsi.de/@delve/105905583669011976/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://deadinsi.de/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mamot.fr/@jz/106002949694434169"&gt;&amp;ldquo;Let&amp;rsquo;s make a colour together!&amp;rdquo;&lt;/a&gt; (1,918 votes)&lt;/p&gt;
&lt;iframe src="https://mamot.fr/@jz/106002949694434169/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://mamot.fr/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://raru.re/@ocean/106121972880123548"&gt;&amp;ldquo;THE ULTIMATE BATTLE&amp;rdquo;&lt;/a&gt; (1,772 votes)&lt;/p&gt;
&lt;iframe src="https://raru.re/@ocean/106121972880123548/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
 &lt;script src="https://raru.re/embed.js" async="async"&gt;&lt;/script&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="top-hashtags-in-2021"&gt;Top hashtags in 2021&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;#bot (490,196 posts)&lt;/li&gt;
&lt;li&gt;#news (391,880 posts)&lt;/li&gt;
&lt;li&gt;#nsfw (102,157 posts)&lt;/li&gt;
&lt;li&gt;#india (99,350 posts)&lt;/li&gt;
&lt;li&gt;#nowplaying (71,498 posts)&lt;/li&gt;
&lt;li&gt;#abyss_fun (67,213 posts)&lt;/li&gt;
&lt;li&gt;#bitcoin (55,863 posts)&lt;/li&gt;
&lt;li&gt;#linux (54,522 posts)&lt;/li&gt;
&lt;li&gt;#google (54,079 posts)&lt;/li&gt;
&lt;li&gt;#russia (49,598 posts)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="other-numbers"&gt;Other numbers&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; We collect aggregate statistics by crawling fediverse servers that identify themselves as running Mastodon. We may not be aware of all Mastodon servers, and aggregate statistics can be disabled for some servers. Temporary service outages across different servers may lead to day-to-day disparities between collected numbers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;2,749,065 total users (+930,724 since January)&lt;/li&gt;
&lt;li&gt;244,634 active users (+814 since January)&lt;/li&gt;
&lt;li&gt;2,551 active Mastodon servers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As for the mastodon.social server, here are some of our numbers for 2021:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;65,052 new sign-ups&lt;/li&gt;
&lt;li&gt;17,951 active users&lt;/li&gt;
&lt;li&gt;3,904 moderation reports handled&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Trump's new social media platform found using Mastodon code</title><link>https://blog.joinmastodon.org/2021/10/trumps-new-social-media-platform-found-using-mastodon-code/</link><pubDate>Fri, 29 Oct 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/10/trumps-new-social-media-platform-found-using-mastodon-code/</guid><description>&lt;p&gt;From media reports and individual findings that various people have presented to us, it seems that the new social media platform owned by the former president of the United States, Donald J. Trump, so-called Truth Social, is using Mastodon&amp;rsquo;s source code with various visual adjustments. The platform has not formally launched yet, but it was made accessible ahead of time. Users were quick to note that the terms of service included a worrying passage, claiming that the site is proprietary property and all source code and software are owned or controlled by them or licensed to them:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, foreign jurisdictions, and international conventions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Notably, neither the terms nor any other part of the website contained any references to Mastodon, nor any links to the source code, which are present in Mastodon&amp;rsquo;s user interface by default. Mastodon is free software published under the AGPLv3 license, which requires any over-the-network service using it to make its source code and any modifications to it publicly accessible.&lt;/p&gt;
&lt;p&gt;We pride ourselves on providing software that allows anyone to run their own social media platform independent of big tech, but the condition upon which we release our work for free in the first place is the idea that, as we give to the platform operators, so do the platform operators give back to us by providing their improvements for us and everyone to see. But that doesn&amp;rsquo;t only benefit us as the developers &amp;ndash; it benefits the people that use these platforms as it gives them insight into the functionality of the platforms that manage their data and gives them the ability to walk away and start their own.&lt;/p&gt;
&lt;p&gt;As far as personal feelings are concerned, of course we would prefer if people so antithetical to our values did not use and benefit from our labour, but the reality of working on free software is that you give up the possibility of choosing who can and cannot use it from the get-go, so in a practical sense the only issue we can take with something like Truth Social is if they don&amp;rsquo;t even comply with the free software license we release our work under.&lt;/p&gt;
&lt;p&gt;On Oct 26, we sent a formal letter to Truth Social&amp;rsquo;s chief legal officer, requesting the source code to be made publicly available in compliance with the license. According to AGPLv3, after being notified by the copyright holder, Truth Social has 30 days to comply or the license may be permanently revoked.&lt;/p&gt;
&lt;h3 id="in-the-media"&gt;In the media&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.vice.com/en/article/5dgm5k/truth-social-is-mastodon-trump"&gt;Mastodon&amp;rsquo;s Founder Says Trump&amp;rsquo;s New Social Network Is Just Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://talkingpointsmemo.com/muckraker/nice-start-trumps-truth-app-may-violate-terms-of-open-source-code-its-built-on"&gt;Trump’s Brand New TRUTH App May Violate Terms Of Open Source Code It’s Built On&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.washingtonpost.com/technology/2021/10/21/trump-truth-social-fake-accounts/"&gt;Pranksters have already defaced Trump’s new social network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.newsweek.com/donald-trump-accused-ripping-code-social-network-mastodon-truth-site-1641343"&gt;Donald Trump Accused of Ripping Code From Social Network Mastodon for &amp;lsquo;Truth&amp;rsquo; Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theverge.com/2021/10/22/22740354/trump-truth-social-network-spac-mastodon-license-software-freedom-conservancy"&gt;Trump’s social network has 30 days to stop breaking the rules of its software license&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="updates"&gt;Updates&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Last updated:&lt;/strong&gt; Dec 9, 2021&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Truth Social added a page (&amp;ldquo;Legal Docs&amp;rdquo; → &amp;ldquo;Open Source&amp;rdquo;) that links to a ZIP archive of the Mastodon source code, which for now seems to bring them in compliance, though a more detailed analysis will only be possible once their platform publicly launches. In the media: &lt;a href="https://www.msn.com/en-us/news/technology/trump-s-social-media-site-quietly-admits-it-s-based-on-mastodon/ar-AARpcef?ocid=msedgntp"&gt;Trump&amp;rsquo;s social media site quietly admits it&amp;rsquo;s based on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>EUNOMIA public pilot launch</title><link>https://blog.joinmastodon.org/2021/10/eunomia-public-pilot-launch/</link><pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/10/eunomia-public-pilot-launch/</guid><description>&lt;p&gt;On behalf of the EUNOMIA project, in which I represent Mastodon, I am happy to announce that after nearly 3 years of development there is now a public pilot for the Mastodon community.&lt;/p&gt;
&lt;p&gt;But first, what is EUNOMIA and who is EUNOMIA? EUNOMIA is a &amp;ldquo;digital companion&amp;rdquo; for social media, a set of additional functions that aim to combat the spread of misinformation by helping you critically analyze social media posts before re-sharing them. Currently available functions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find who a piece of text originally comes from and how it changed as it travelled to your home feed through the information cascade&lt;/li&gt;
&lt;li&gt;See when a post is using highly emotive language through sentiment analysis&lt;/li&gt;
&lt;li&gt;At a glance, see potentially important information about the post author, such as account age&lt;/li&gt;
&lt;li&gt;See whether other users have flagged the post as untrustworthy, and vote yourself&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But those functions are only useful when you&amp;rsquo;re already looking at a post in-depth. You can also configure which criteria and thresholds should make the EUNOMIA indicator flash on a post, prompting you that a deeper look is warranted.&lt;/p&gt;
&lt;p&gt;EUNOMIA is decentralized and stores its information, such as the aforementioned votes, on &lt;a href="https://ipfs.io/"&gt;IPFS&lt;/a&gt;, a decentralized storage network. It is also not a commercial product, but an academic research project spearheaded by the University of Greenwich and financed through the European Horizon 2020 program. The team consists of 10 entities: 3 universities, 3 private software development companies, representatives from two social media companies (one of which is yours truly), and the Austrian public broadcasting company ORF.&lt;/p&gt;
&lt;p&gt;EUNOMIA should in theory work with any social media platform, but thanks to its already decentralized nature and a fantastic API, &lt;a href="https://blog.joinmastodon.org/2020/08/why-eunomia-builds-on-mastodon/"&gt;Mastodon lended itself as the perfect prototyping environment&lt;/a&gt;, since it allows the project to develop with its own Mastodon setup that never touches any live user data.&lt;/p&gt;
&lt;p&gt;It is important to highlight that as a research project no user data can be processed without explicit user consent and as such EUNOMIA is confined entirely to its own Mastodon servers. One of which is now being opened up for the first public pilot!&lt;/p&gt;
&lt;p&gt;The public EUNOMIA pilot is now live at &lt;a href="https://mastodon.eunomia.social/"&gt;mastodon.eunomia.social&lt;/a&gt;! The pilot will last one week, unless the developers receive feedback from users that they would want it to stay on for longer. Keep in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You must be 18 or above to sign-up for the pilot&lt;/li&gt;
&lt;li&gt;There is highly complex tech involved so there probably will be bugs&lt;/li&gt;
&lt;li&gt;The pilot will federate exclusively with another pilot server, decentralized.eunomia.social&lt;/li&gt;
&lt;li&gt;EUNOMIA is available as an app on &lt;a href="https://apps.apple.com/us/app/eunomia-digital-companion/id1535257247"&gt;iOS&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=gr.uniwa.eee.consert.eunomia.twa"&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a quick-start video:&lt;/p&gt;
&lt;iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" title="EUNOMIA Quick-Start Guide" src="https://diode.zone/videos/embed/155c491a-b830-40b2-a405-04221d40fbca" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;You can learn more about EUNOMIA here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eunomia.social/"&gt;EUNOMIA&amp;rsquo;s official website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.eunomia.social/"&gt;EUNOMIA&amp;rsquo;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@Eunomia"&gt;Follow EUNOMIA on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon now a non-profit organisation</title><link>https://blog.joinmastodon.org/2021/08/mastodon-now-a-non-profit-organisation/</link><pubDate>Fri, 13 Aug 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/08/mastodon-now-a-non-profit-organisation/</guid><description>&lt;p&gt;In June, I was able to officially register Mastodon gGmbH after nearly 8 months of legal work (&amp;ldquo;gGmbH&amp;rdquo; means &amp;ldquo;non-profit limited liability company&amp;rdquo;). A non-profit limited liability company in Germany is structered and operates similarly to a for-profit limited liability company with a few key differences. The founding document of the company is written such that the activity of the company is working towards goals that benefit the public; the shareholders may not receive any revenue from the company&amp;rsquo;s activities and can at most withdraw the funds that they originally paid in; employees may not receive extraordinarily high wages; and the company can receive donations which are then tax-free, although any other income that does not fit the definition of a donation continues to incur various taxes. To found such a legal entity the founding document must pass a review by the German tax office and the founders must pay in 25,000 EUR of starting capital.&lt;/p&gt;
&lt;p&gt;Since I am the sole founder and shareholder, the 25,000 EUR are owed by me (with 12,500 EUR having had to be paid in at day of founding, and the remaining to be paid in the future). In terms of day-to-day operations, there are no changes. I will continue all my activities as the CEO of this legal entity. Starting July I&amp;rsquo;ve transferred everything related to Mastodon&amp;rsquo;s activities to the ownership of this new legal entity and redirected all sources of Mastodon&amp;rsquo;s income to it. Unlike the past 5 years that I&amp;rsquo;ve been running Mastodon operations as a sole proprietor, where Mastodon&amp;rsquo;s income was my personal income (minus all the expenses), I am now an employee with a fixed wage. My personal income will thus be lower but I was willing to go this route because I want Mastodon to have more resources for things like hiring extra developers, UX designers, developing official apps and so on, and I want there to be a clear boundary between fundraising for that cause and my personal income.&lt;/p&gt;
&lt;p&gt;Since both Patreon and our custom sponsorship platform are based around rewards to patrons/sponsors, they cannot be classified as donations, so there are no changes to how those are taxed.&lt;/p&gt;
&lt;p&gt;This would not have been possible without the generous help of the law firm &lt;a href="https://www.dentons.com/en/"&gt;Dentons&lt;/a&gt; that assisted in all aspects related to corporate law in the course of the foundation as well as employment law, telecommunications law, and privacy.&lt;/p&gt;</description></item><item><title>Developing an official iOS app for Mastodon</title><link>https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/</link><pubDate>Fri, 05 Feb 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/</guid><description>&lt;p&gt;One of the ways Mastodon sets itself apart from current-day Twitter is its API-first approach (every function available through the web interface is available through the API, in fact, our web client is just an API client that runs in the browser). A third-party app ecosystem contributed in large part to Twitter&amp;rsquo;s success at the beginning, with many innovative features like retweets coming originally from unofficial apps, and it is serving a similarly instrumental role for Mastodon. It is great that Mastodon users can choose from a variety of apps with distinct approaches to user experience.&lt;/p&gt;
&lt;p&gt;However, there is a gap in this ecosystem, illustrated best by the amount and frequency with which new users ask us where to find the &amp;ldquo;Mastodon&amp;rdquo; app, why there is no &amp;ldquo;Mastodon&amp;rdquo; app, and when we will release a &amp;ldquo;Mastodon&amp;rdquo; app. Irrespective of our efforts of promoting third-party apps at every turn &amp;ndash; from joinmastodon.org, from the web interface, from the frontpage of every Mastodon server &amp;ndash; &lt;strong&gt;the lack of an app that carries our name in the app stores trips up newcomers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This hampers our chances of converting people browsing app stores for a few reasons: We&amp;rsquo;re less likely to get on trending lists even when Mastodon is in the spotlight, since people either fail to find a native app or are split between multiple ones; most if not all contemporary third-party Mastodon apps do not prioritize first-time user onboarding, with many not offering sign-up functionality; and while it is fair that some of the apps are paid and not free, somebody looking to try out a new social network is not going to take the chance on their credit card.&lt;/p&gt;
&lt;p&gt;That is all to say, &lt;strong&gt;we need an official Mastodon app that is free to download and that is specialized in helping new users get started on the platform&lt;/strong&gt;. The end-goal is also to reach feature-parity with the web interface and spearhead new API features. The more new users we can successfully convert to Mastodon, the bigger the pool of potential users for all third-party apps will be, and if app developers are motivated to implement previously missing features to stay competetive, all the better.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We will focus on developing an official, open-source iOS app first&lt;/strong&gt;. I have compiled a roadmap of features that a Mastodon app ought to have, with the first milestone being a Minimum Viable Product which we could get out on the App Store by summer. I am teaming up with engineers from &lt;a href="https://sujitech.com/"&gt;Sujitech&lt;/a&gt;, who have a long history with the fediverse, and UX designers from the NYC agency &lt;a href="https://lickability.com/"&gt;Lickability&lt;/a&gt;, whose track record includes iOS apps for Meetup and the New Yorker.&lt;/p&gt;
&lt;p&gt;The work begins on February 8, 2021.&lt;/p&gt;
&lt;p&gt;To help offset the costs of this undertaking, I have created a new milestone on &lt;a href="https://patreon.com/mastodon"&gt;Mastodon&amp;rsquo;s Patreon profile&lt;/a&gt;. If you&amp;rsquo;ve got a business, you can now &lt;a href="https://sponsor.joinmastodon.org"&gt;sponsor Mastodon directly&lt;/a&gt; without going through Patreon, with much smaller processing fees and tax-compliant invoices. &lt;strong&gt;Thanks to everyone who is already sponsoring Mastodon, and stay tuned for updates!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Our iOS and Android apps are now available!&lt;/p&gt;
&lt;div class="flex justify-center gap-x-4 not-prose"&gt;
 &lt;a class="block h-10" href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974"&gt;
 &lt;img class="h-full w-auto" alt="Download on the App Store" src="https://blog.joinmastodon.org/download-on-app-store.svg" /&gt;
 &lt;/a&gt;

 &lt;a class="block h-10" href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"&gt;
 &lt;img class="h-full w-auto" alt="Get it on Google Play" src="https://blog.joinmastodon.org/download-on-play-store.svg" /&gt;
 &lt;/a&gt;
&lt;/div&gt;
</description></item><item><title>Mastodon 3.3</title><link>https://blog.joinmastodon.org/2021/01/mastodon-3.3/</link><pubDate>Fri, 29 Jan 2021 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2021/01/mastodon-3.3/</guid><description>&lt;p&gt;It&amp;rsquo;s Mastodon 3.3 time 🎉 We&amp;rsquo;ve got security fixes, performance fixes, new moderation tools and quality of life features!&lt;/p&gt;
&lt;h3 id="reversible-suspensions"&gt;Reversible suspensions&lt;/h3&gt;
&lt;p&gt;The main change in this release of Mastodon is &lt;strong&gt;our approach to suspensions&lt;/strong&gt;. Previously, suspending an account deleted all of its associated data immediately, so while an account could be unsuspended technically, the person would have to start completely from scratch. Of course, that wasn&amp;rsquo;t ideal &amp;ndash; everybody makes mistakes. Now, the data is kept for 30 days after suspension, giving a long enough time window to correct mistakes or talk through appeals. The suspended person also gets the ability to download an archive of their account, which was not possible before. If there is a need to delete the data immediately, the option is still there for moderators.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s not all: Whereas previously suspended accounts would not show up in the app at all, now, as long as they&amp;rsquo;re recoverable, they do show up and more clealy communicate that they&amp;rsquo;re in a suspended state. &lt;strong&gt;As Mastodon matures and grows, we&amp;rsquo;re striving for more transparency and fail-safety around moderation.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="ip-blocks"&gt;IP blocks&lt;/h3&gt;
&lt;p&gt;Another missing piece has been added to Mastodon&amp;rsquo;s moderation toolbox &amp;ndash; &lt;strong&gt;the ability to control access from specific IP addresses or subnets&lt;/strong&gt;. As a response to a troll making alternative accounts to evade suspensions or a bot farm creating spam accounts, server administrators can now either fully block access from an IP or send new accounts through the approval queue while letting everyone else sign-up normally.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="ip-rules.png" class="rounded-lg shadow-lg"
 alt="Creating a new IP rule from the admin interface"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Creating a new IP rule from the admin interface&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="performance-improvements"&gt;Performance improvements&lt;/h3&gt;
&lt;p&gt;The release includes &lt;strong&gt;multiple performance optimizations&lt;/strong&gt; both on the server-side and on the client-side. On the client-side, lag caused by typing up a new post should be if not completely removed, vastly reduced, and all live updates from the Streaming API now come through a single connection no matter how many different columns you have open, one or thirty. Requests for an account&amp;rsquo;s media tab, your favourites, bookmarks, or hashtags should be much faster. Operations involving deleting an account&amp;rsquo;s data are up to 100x faster, reducing delays in the system, and so on.&lt;/p&gt;
&lt;h3 id="bell-button"&gt;&amp;ldquo;Bell button&amp;rdquo;&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="bell.png" class="rounded-lg shadow-lg"
 alt="Bell button on the Ruby developer&amp;rsquo;s profile"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Bell button on the Ruby developer&amp;rsquo;s profile&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Are you following an account that only posts once in a blue moon? And it would almost certainly be drowned out in an otherwise active home feed? Perhaps an artist that only posts new artwork, or a bot that posts weather warnings for your area &amp;ndash; &lt;strong&gt;now you can choose to be notified when a person you follow makes a new post by toggling the bell button on their profile&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="pop-out-media-player"&gt;Pop-out media player&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="popout.gif" class="rounded-lg shadow-lg"
 alt="Continue watching or listening as you browse"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Continue watching or listening as you browse&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As for media, if you scroll away from an audio or video while it&amp;rsquo;s still playing, &lt;strong&gt;the playback will continue in the corner of your screen with convenient buttons to reply, boost, or favourite the post it&amp;rsquo;s from&lt;/strong&gt;. You can also finally use &lt;strong&gt;familiar hotkeys to control audio and video playback&lt;/strong&gt; &amp;ndash; space to toggle playback, &amp;ldquo;m&amp;rdquo; to mute, &amp;ldquo;j&amp;rdquo; and &amp;ldquo;l&amp;rdquo; to jump backward and forward, and a few others. And finally, &lt;strong&gt;media modals got a facelift&lt;/strong&gt;, now using the average color from the picture for the page overlay and always showing interactive buttons for the post underneath.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The 3.3 release consists of &lt;strong&gt;619 commits&lt;/strong&gt; by &lt;strong&gt;21 contributors&lt;/strong&gt; since July 27, 2020. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.3.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.3.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release:&lt;/strong&gt; &lt;a href="https://github.com/Gargron"&gt;Gargron&lt;/a&gt;, &lt;a href="https://github.com/mashirozx"&gt;mashirozx&lt;/a&gt;, &lt;a href="https://github.com/ThibG"&gt;ThibG&lt;/a&gt;, &lt;a href="https://github.com/noellabo"&gt;noellabo&lt;/a&gt;, &lt;a href="https://github.com/aquarla"&gt;aquarla&lt;/a&gt;, &lt;a href="https://github.com/trwnh"&gt;trwnh&lt;/a&gt;, &lt;a href="https://github.com/nornagon"&gt;nornagon&lt;/a&gt;, &lt;a href="https://github.com/joshleeb"&gt;joshleeb&lt;/a&gt;, &lt;a href="https://github.com/mkljczk"&gt;mkljczk&lt;/a&gt;, &lt;a href="https://github.com/santiagorodriguez96"&gt;santiagorodriguez96&lt;/a&gt;, &lt;a href="https://github.com/jiikko"&gt;jiikko&lt;/a&gt;, &lt;a href="https://github.com/ykzts"&gt;ykzts&lt;/a&gt;, &lt;a href="https://github.com/tateisu"&gt;tateisu&lt;/a&gt;, &lt;a href="https://github.com/uist1idrju3i"&gt;uist1idrju3i&lt;/a&gt;, &lt;a href="https://github.com/mfmfuyu"&gt;mfmfuyu&lt;/a&gt;, &lt;a href="https://github.com/zunda"&gt;zunda&lt;/a&gt;, &lt;a href="https://github.com/dunn"&gt;dunn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release:&lt;/strong&gt; qezwan, adrmzz, yeft, Koala Yeung, tzium, kamee, Ali Demirtaş, Jurica, Ramdziana F Y, Alix Rossi, gagik_, Hồ Nhất Duy, ᏦᏁᎢᎵᏫ mask, Xosé M., xatier, otrapersona, Sveinn í Felli, Zoltán Gera, Rafael H L Moretti, Floxu, spla, Besnik_b, Emanuel Pina, Saederup92, Jeroen, Jeong Arm, Alessandro Levati, Thai Localization, Marcin Mikołajczak, tolstoevsky, vishnuvaratharajan, Maya Minatsuki, dkdarshan760, Roboron, Danial Behzadi, Imre Kristoffer Eilertsen, Coelacanthus, syncopams, FédiQuébec, koyu, Diluns, ariasuni, Hakim Oubouali, Hayk Khachatryan, v4vachan, Denys, Akarshan Biswas, 奈卜拉, Liboide, cybergene, strubbl, StanleyFrew, Ryo, Sokratis Alichanidis, Rachida S., lamnatos, Tigran, atriix, antonyho, Em St Cenydd, Pukima, Aryamik Sharma, phena109, ahangarha, Isaac Huang, igordrozniak, Allen Zhong, coxde, Rasmus Lindroth, liffon, fragola, Sasha Sorokin, bobchao, twpenguin, ThonyVezbe, Esther, Tagomago, Balázs Meskó, Gopal Sharma, Tofiq Abdula, subram, Ptrcmd, arshat, Scvoet, hiroTS, johne32rus23, Hexandcube, Neo_Chen, Aswin C, Ryan Ho, GiorgioHerbie, Willia, clarmin b8, Hernik, Rikard Linde, Wrya ali, Goudarz Jafari, Pukima, Jeff Huang, Timo Tijhof, Yamagishi Kazutoshi, AlexKoala, Rekan Adl, ButterflyOfFire, Sherwan Othman, Yassine Aït-El-Mouden, Fei Yang, Hougo, Vanege, TracyJacks, mecqor labi, Selyan Slimane AMIRI, norayr, Marek Ľach, mkljczk, marzuquccen, Yi-Jyun Pan, Gargron, dadosch, Orlando Murcio, Ильзира Рахматуллина, shdy, Yogesh K S, Antara2Cinta, Pixelcode, Hinaloe, alnd hezh, Clash Clans, Sébastien Feugère, k_taka, enolp, jmontane, Hallo Abdullah, Kahina Mess, Reg3xp, さっかりんにーさん, Rhys Harrison, GatoOscuro, pullopen, CyberAmoeba, 夜楓Yoka, Xurxo Guerra, Apple, mashirozx, ÀŘǾŚ PÀŚĦÀÍ, filippodb, abidin toumi, tykayn, xpac1985, Ozai, diorama, dashty, Salh_haji6, Ranj A Abdulqadir, Amir Kurdo, Baban Abdulrahman, dobrado, 于晚霞, Hannah, Savarín Electrográfico Marmota Intergalactica, Jari Ronkainen, SamOak, dcapillae, umonaca, ThibG&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you&lt;/strong&gt; to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; through &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt; or through &lt;a href="https://sponsor.joinmastodon.org"&gt;our new sponsors portal&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;</description></item><item><title>Why EUNOMIA builds on Mastodon</title><link>https://blog.joinmastodon.org/2020/08/why-eunomia-builds-on-mastodon/</link><pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2020/08/why-eunomia-builds-on-mastodon/</guid><description>&lt;p&gt;An ever growing problem of the modern social media-rich world is misinformation. The trust that was previously placed into government officials and journalism has eroded; the internet gave everyone a voice but with it made it so much more difficult to distinguish truth from fabrication. The consequences of this are very real: Almost eradicated illnesses are making a comeback because people refuse to vaccinate their children, Covid-19 is continuing to spread because people refuse to wear masks and practice social distancing, more and more people start believing that the Earth is flat and descend down a rabbit hole of ever more absurd conspiracy theories.&lt;/p&gt;
&lt;p&gt;The social media giants have acknowledged the problem: Both Facebook and Twitter are taking measures to try and limit the damage of misinformation. Both take the fact check approach, wherein a dubious claim that has attracted enough attention on the platform is disputed by deferring to one or multiple trusted authorities. It is a step in the right direction but we must consider how well it would fit into the decentralized model, which is what we&amp;rsquo;re working with. In both cases, Twitter and Facebook unilaterally decide a) which claims deserve a fact check and b) which fact checking authorities to defer to. Facebook has already gotten in trouble for picking some very dubious fact checkers.&lt;/p&gt;
&lt;p&gt;So we have issues on two layers: The fact checkers selected by the platform may not be the ones that the users actually trust, and only claims that the platform decides to fact check get any treatment. On a decentralized social media platform like Mastodon, there is no central authority that can make those decisions, and while you may argue that its more localized governance structure (where a server&amp;rsquo;s admins and moderators have fewer users to take care of and users have the freedom to pick the server that fits their needs the best) would be an improvement over this, there is a practical limit to how much micromanagement we can expect independent admins and moderators to perform.&lt;/p&gt;
&lt;p&gt;While we routinely observe blatant conspiracy theorists being kicked off well-moderated Mastodon servers, the often volunteer staff simply cannot monitor every message for misinformation and link it up with appropriate resources. For the same reason we oppose various upload filter initiatives &amp;ndash; manually checking every message on social media does not scale and any automation is so complicated that it inevitably leads to centralized solutions that are equally inaccessible for small players. Regardless, the takeaway is, if we want to tackle misinformation on decentralized social media, we need a solution that does not rely on manual action by server staff.&lt;/p&gt;
&lt;p&gt;In late 2018 I was approached by someone from University of Greenwich who wanted to investigate potential solutions to this problem and wanted my advice, support, and knowledge of decentralized social networks. It was an invitation to participate in an academic research project EUNOMIA with, among others, three different universities (University of Greenwich, University of Nicosia, and University of West Attica) and a grant from the European Commission&amp;rsquo;s Horizon 2020 program &amp;ndash; an extremely flattering acknowledgement of Mastodon&amp;rsquo;s importance. Indeed, Mastodon was the perfect choice for this purpose: An extremely easy to use, well-documented, and extensive API that not only allows, but encourages the creation of alternative user interfaces; and the ability to essentially run a fully-featured social network in an entirely sandboxed environment.&lt;/p&gt;
&lt;p&gt;What EUNOMIA aims to be at the end of its 3-year development road map is a &amp;ldquo;digital companion&amp;rdquo; &amp;ndash; in essence, an alternative user interface, containing a toolkit that would facilitate the discerning of manipulated or incorrect information. Facilitation is key, here: The user would be the ultimate authority for making a call on what they trust or distrust, what EUNOMIA would provide is easier access to the kind of criteria the user deems important for that decision. Someone might want to be notified if a post uses manipulative wording to distort a claim, someone else might want to see if similar messages have been posted by other people before and the one that you see is less accurate, other people may want to check with the wisdom of the crowd and pay extra heed when lots of people distrust a message. Any one method is imperfect by itself, but in tandem they may make fact checking more accessible.&lt;/p&gt;
&lt;p&gt;The EUNOMIA &amp;ldquo;digital companion&amp;rdquo; is built on Mastodon but they are two completely separate projects. If you would like to follow EUNOMIA&amp;rsquo;s progress and provide any feedback, please follow its Mastodon account: &lt;a href="https://mastodon.social/@Eunomia"&gt;@Eunomia@mastodon.social&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eunomia.social/"&gt;EUNOMIA&amp;rsquo;s official website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.eunomia.social/"&gt;EUNOMIA&amp;rsquo;s blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon 3.2</title><link>https://blog.joinmastodon.org/2020/08/mastodon-3.2/</link><pubDate>Sun, 02 Aug 2020 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2020/08/mastodon-3.2/</guid><description>&lt;p&gt;The new Mastodon release brings you a much better audio player and improved support for different audio and video formats, as well as some additional security mechanisms.&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;audio player has been completely reworked&lt;/strong&gt; to have a more eye-catching design. It will extract album art from the uploaded audio file automatically, or allow you to upload a thumbnail of your own choosing to be displayed in the center. Dominant colors from the artwork or thumbnail will then be used to give the player a unique look.&lt;/p&gt;
&lt;p&gt;Whereas previously video thumbnails were automatically taken from the first frame of the video, you now also have the ability to &lt;strong&gt;upload a custom thumbnail that will be displayed before the video starts playing&lt;/strong&gt;. Simply click on &amp;ldquo;Edit&amp;rdquo; on a newly uploaded media file and then choose a new thumbnail!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="embed.gif" class="rounded-lg shadow-lg"
 alt="Mastodon audio showing up on Twitter"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Mastodon audio showing up on Twitter&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;When you share links to video or audio on Mastodon on other platforms, for example Twitter, your friends will be able to &lt;strong&gt;open Mastodon&amp;rsquo;s video or audio player right on that platform&lt;/strong&gt; (assuming the platform supports the &lt;code&gt;twitter:player&lt;/code&gt; tag).&lt;/p&gt;
&lt;p&gt;To better protect your accounts when you&amp;rsquo;re not there, there&amp;rsquo;s a &lt;strong&gt;new security mechanism guarding new login attempts&lt;/strong&gt;. When you don&amp;rsquo;t have two-factor authentication setup, have been away for at least two weeks, and someone tries to login to your account from a previously unseen IP address, they will be required to enter a token sent to your e-mail address.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a feature more meant to guard those who forget to setup two-factor authentication, so if you are reading this, remember that it&amp;rsquo;s good practice to use two-factor authentication (Mastodon&amp;rsquo;s does not require a phone number or a Mastodon app, any TOTP app works), and to use a password manager to generate random and unique passwords for each account you have!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="notes.gif" class="rounded-lg shadow-lg"
 alt="Adding a personal note"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Adding a personal note&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Have you ever blocked or muted someone but forgot why? Or have you followed someone but then forgot who they are? Now you can add &lt;strong&gt;personal notes&lt;/strong&gt; to other accounts to keep track of who&amp;rsquo;s who. Visible only to you!&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The 3.2 release consists of &lt;strong&gt;380 commits&lt;/strong&gt; by &lt;strong&gt;27 contributors&lt;/strong&gt; since May 14, 2020. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.2.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.2.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release:&lt;/strong&gt; &lt;a href="https://github.com/OmmyZhang"&gt;OmmyZhang&lt;/a&gt;, &lt;a href="https://github.com/ThibG"&gt;ThibG&lt;/a&gt;, &lt;a href="https://github.com/Gargron"&gt;Gargron&lt;/a&gt;, &lt;a href="https://github.com/noellabo"&gt;noellabo&lt;/a&gt;, &lt;a href="https://github.com/Sasha-Sorokin"&gt;Sasha-Sorokin&lt;/a&gt;, &lt;a href="https://github.com/dunn"&gt;dunn&lt;/a&gt;, &lt;a href="https://github.com/highemerly"&gt;highemerly&lt;/a&gt;, &lt;a href="https://github.com/tateisu"&gt;tateisu&lt;/a&gt;, &lt;a href="https://github.com/ariasuni"&gt;ariasuni&lt;/a&gt;, &lt;a href="https://github.com/bclindner"&gt;bclindner&lt;/a&gt;, &lt;a href="https://github.com/cchoi12"&gt;cchoi12&lt;/a&gt;, &lt;a href="https://github.com/leo60228"&gt;leo60228&lt;/a&gt;, &lt;a href="https://github.com/mfmfuyu"&gt;mfmfuyu&lt;/a&gt;, &lt;a href="https://github.com/mayaeh"&gt;mayaeh&lt;/a&gt;, &lt;a href="https://github.com/lfuelling"&gt;lfuelling&lt;/a&gt;, &lt;a href="https://github.com/ykzts"&gt;ykzts&lt;/a&gt;, &lt;a href="https://github.com/angristan"&gt;angristan&lt;/a&gt;, &lt;a href="https://github.com/BenLubar"&gt;BenLubar&lt;/a&gt;, &lt;a href="https://github.com/trwnh"&gt;trwnh&lt;/a&gt;, &lt;a href="https://github.com/arielrodrigues"&gt;arielrodrigues&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release:&lt;/strong&gt; Duy, stan ionut, Besnik_b, Emanuel Pina, regulartranslator, ButterflyOfFire, adrmzz, FédiQuébec, GiorgioHerbie, Marcin Mikołajczak, ariasuni, Thai Localization, 奈卜拉, Mentor Gashi, Xosé M., axi, Selyan Slimane AMIRI, Alix Rossi, Jeroen, SteinarK, ThonyVezbe, Hrach Mkrtchyan, Gwenn, ᏦᏁᎢᎵᏫ mask, Danial Behzadi, spla, Rafael H L Moretti, Jeong Arm, koyu, Yi-Jyun Pan, norayr, Alessandro Levati, Sasha Sorokin, gagik_, lamnatos, Sveinn í Felli, Zoltán Gera, cybergene, Tagomago, Michal Stanke, borys_sh, Ramdziana F Y, Osoitz, Maya Minatsuki, Willia, BurekzFinezt, Evert Prants, ThibG, Dewi, Emyn-Russell Nt Nefydd, vishnuvaratharajan, tolstoevsky, Diluns, Falling Snowdin, Marek Ľach, Balázs Meskó, Ryo, Roboron, StanleyFrew, PPNplus, Heimen Stoffels, Andrew, Iváns, Carlos Solís, Sokratis Alichanidis, TS, SensDeViata, AzureNya, OctolinGamer, 北䑓如法, Laura, Imre Kristoffer Eilertsen, Rikard Linde, Ali Demirtaş, diorama, Daniele Lira Mereb, Goudarz Jafari, psymyn, v4vachan, Sebastián Andil, Khóo, ZiriSut, strubbl, Reg3xp, AlexKoala, VSx86, Mo_der Steven, musix, ギャラ, Saederup92, mynameismonkey, omquylzu, Miro Rauhala, 硫酸鶏, siamano, Viorel-Cătălin Răpițeanu, Pachara Chantawong, Balázs Meskó, Steven Tappert, Unmual, Zijian Zhao, Skew, enolp, Yann Aguettaz, Mick Onio, r3dsp1, Tianqi Zhang, piupiupiudiu, Padraic Calpin, るいーね, Belkacem Mohammed, Miquel Sabaté Solà, serubeena, Solid Rhino, Rintan, 林水溶, Tagada, shafouz, Tom_, OminousCry, ALEM FARID, Nathaël Noguès, Robin van der Vliet, twpenguin, Paz Galindo, 夜楓Yoka, mkljczk, kiwi0, Esther, Renato &amp;ldquo;Lond&amp;rdquo; Cerqueira, igordrozniak, Philipp Fischbeck, GaggiX, Allen Zhong, Albatroz Jeremias, Nocta, pezcurrel, Aditoo17, 森の子リスのミーコの大冒険, Doug, Fleva&lt;/p&gt;
&lt;p&gt;As always, huge thanks to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;p&gt;Happy tooting!&lt;/p&gt;</description></item><item><title>Adding sign-up to your Mastodon app</title><link>https://blog.joinmastodon.org/2019/10/adding-sign-up-to-your-mastodon-app/</link><pubDate>Sat, 12 Oct 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/10/adding-sign-up-to-your-mastodon-app/</guid><description>&lt;p&gt;Since Mastodon 2.7, it is actually possible to let users sign up through your app, instead of asking them to go to a Mastodon website directly and then return. Let&amp;rsquo;s go over how this can be done.&lt;/p&gt;
&lt;p&gt;First, not all Mastodon servers accept new users. If you perform a request to &lt;code&gt;GET /api/v1/instance&lt;/code&gt;, you will see this in the boolean &lt;code&gt;registrations&lt;/code&gt; attribute.&lt;/p&gt;
&lt;p&gt;To proceed, your app must already be registered / self-register with the given server, and obtain a &amp;ldquo;client credentials&amp;rdquo; grant, which is an API access token that is not connected to any particular user, just to your app. The app must have the &lt;code&gt;write:accounts&lt;/code&gt; (or above) scope.&lt;/p&gt;
&lt;p&gt;As a refresher, given that you have already registered the app to get a &lt;code&gt;client_id&lt;/code&gt; and &lt;code&gt;client_secret&lt;/code&gt;, to obtain a &amp;ldquo;client credentials&amp;rdquo; grant, you just have to perform a &lt;code&gt;POST /oauth/token&lt;/code&gt; request with the params &lt;code&gt;grant_type=client_credentials&lt;/code&gt;, your &lt;code&gt;client_id&lt;/code&gt; and &lt;code&gt;client_secret&lt;/code&gt;, and &lt;code&gt;scope=write:accounts&lt;/code&gt; (or whatever scopes you need).&lt;/p&gt;
&lt;p&gt;You then need to collect the following information from the new user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;username&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;email&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;password&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You must ask the user to agree to the server&amp;rsquo;s terms of use and privacy policy, and record that agreement in the boolean &lt;code&gt;agreement&lt;/code&gt; param. The URLs for the terms and privacy policy are &lt;code&gt;/about/more&lt;/code&gt; and &lt;code&gt;/terms&lt;/code&gt; so you can just let the user open them in a browser, or render them in a web view. If you know what the user&amp;rsquo;s language is, you can pass that information in the &lt;code&gt;locale&lt;/code&gt; param (but make sure the locale is something Mastodon supports, otherwise the API request will fail with a HTTP 422 error).&lt;/p&gt;
&lt;p&gt;If the &lt;code&gt;GET /api/v1/instance&lt;/code&gt; API has returned a true &lt;code&gt;approval_required&lt;/code&gt; attribute, there is an additional piece of information you should ask from the user: &lt;code&gt;reason&lt;/code&gt;. Because the user&amp;rsquo;s sign-up will be reviewed by the server&amp;rsquo;s staff before being allowed, you must give the user an opportunity to describe themselves and why they should be allowed onto the server.&lt;/p&gt;
&lt;p&gt;You must then submit those params to &lt;code&gt;POST /api/v1/accounts&lt;/code&gt; (authenticated with the app&amp;rsquo;s access token). You will need to handle a potential HTTP 422 response from the API in case the user has entered invalid information (like an already taken username).&lt;/p&gt;
&lt;p&gt;On success, what you will receive in return will be an access token, identical to what you would get from a standard OAuth authorization procedure. The access token allows your application to use the API of the server on behalf of the registered user.&lt;/p&gt;
&lt;p&gt;However, the token will be &lt;strong&gt;inactive&lt;/strong&gt; until the user confirms their e-mail. The link in the confirmation e-mail will actually redirect them back to your application when possible. Of course, if staff approval is required, the token will remain unusable until the account has been approved.&lt;/p&gt;
&lt;p&gt;Trying to use an inactive access token will result in a HTTP 403 error.&lt;/p&gt;</description></item><item><title>Mastodon 3.0 in-depth</title><link>https://blog.joinmastodon.org/2019/10/mastodon-3.0-in-depth/</link><pubDate>Sat, 12 Oct 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/10/mastodon-3.0-in-depth/</guid><description>&lt;h3 id="new-rest-apis"&gt;New REST APIs&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Profile directory&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The profile directory is a way to discover users who want to be discovered. To fetch the profile directory, access &lt;code&gt;GET /api/v1/directory&lt;/code&gt; with the possible params &lt;code&gt;local&lt;/code&gt; (boolean) and &lt;code&gt;order&lt;/code&gt; (&lt;code&gt;new&lt;/code&gt; or &lt;code&gt;active&lt;/code&gt;). Pagination is accomplished using &lt;code&gt;offset&lt;/code&gt; and &lt;code&gt;limit&lt;/code&gt; params.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trends&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hashtags that are used more than usual (and above a small minimal threshold) are &amp;ldquo;trending&amp;rdquo;. To fetch trending hashtags, access &lt;code&gt;GET /api/v1/trends&lt;/code&gt;. Only 10 results are returned maximally but you can request fewer with &lt;code&gt;limit&lt;/code&gt; param.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Managing featured hashtags&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Users can feature hashtags on their public profile, which allows visitors to easily browse their public posts filed under those hashtags. These cannot yet be arbitrarily retrieved through the API, but there is now an API for managing the featured hashtags of the current user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/v1/featured_tags&lt;/code&gt; to retrieve current user&amp;rsquo;s featured hashtags&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/v1/featured_tags&lt;/code&gt; to create a new featured hashtag, specified by the param &lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /api/v1/featured_tags/:id&lt;/code&gt; to delete a featured hashtag&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/v1/featured_tags/suggestions&lt;/code&gt; to retrieve the user&amp;rsquo;s 10 most commonly used hashtags&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A featured hashtag contains the attributes &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;statuses_count&lt;/code&gt; and &lt;code&gt;last_status_at&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Timeline position markers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apps can now synchronize their position in certain timelines between each other. Currently these are the home timeline and the notifications timeline. The web UI already implements this API and will save its position when closed.&lt;/p&gt;
&lt;p&gt;To retrieve a map of markers with timeline names as keys, access &lt;code&gt;GET /api/v1/markers&lt;/code&gt; . You must specify the desired timelines with the array param &lt;code&gt;timeline&lt;/code&gt;. This is a slightly unusual structure in Mastodon&amp;rsquo;s REST API so it deserves an example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f1fa8c"&gt;&amp;#34;home&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;last_read_id&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;123...&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;updated_at&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;2019-10-04...&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f1fa8c"&gt;&amp;#34;notifications&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To create a new marker, pass a map to &lt;code&gt;POST /api/v1/markers&lt;/code&gt; with timeline names as keys (&lt;code&gt;home&lt;/code&gt; and/or &lt;code&gt;notifications&lt;/code&gt;), and an object containing the &lt;code&gt;last_read_id&lt;/code&gt; for each timeline. Essentially, you pass it something like this, either encoded as JSON or using nested form/query params:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f1fa8c"&gt;&amp;#34;home&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;last_read_id&amp;#34;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;567...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Hashtag autocomplete&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are using the &lt;code&gt;GET /api/v2/search&lt;/code&gt; API for showing the user autocomplete for hashtags, you can now pass the &lt;code&gt;exclude_unreviewed&lt;/code&gt; boolean param to limit the results to only those hashtags that have been looked at by the server&amp;rsquo;s staff. This is a way to reduce junk and harmful results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sign-up API in approval-required registrations mode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can now pass the &lt;code&gt;reason&lt;/code&gt; param to &lt;code&gt;POST /api/v1/accounts&lt;/code&gt;, containing the user&amp;rsquo;s reason for wanting to join the server, which is useful when the server is in approval-required registrations mode. You can detect when that mode is active by the &lt;code&gt;approval_required&lt;/code&gt; boolean attribute returned from &lt;code&gt;GET /api/v1/instance&lt;/code&gt; (in conjunction with the &lt;code&gt;registrations&lt;/code&gt; boolean attribute).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Custom emoji categories&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;New attribute &lt;code&gt;category&lt;/code&gt; on custom emojis returned from &lt;code&gt;GET /api/v1/custom_emojis&lt;/code&gt; contains a string with which emojis are supposed to be grouped when displayed in a picker UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Displaying user&amp;rsquo;s own votes in polls&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;New attribute &lt;code&gt;own_votes&lt;/code&gt; on polls contains an array of the user&amp;rsquo;s choices (as indices corresponding to the &lt;code&gt;options&lt;/code&gt; array).&lt;/p&gt;
&lt;h3 id="new-search-syntax-support"&gt;New search syntax support&lt;/h3&gt;
&lt;p&gt;When ElasticSearch is enabled, you can use the following syntax to fine-tune your search:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surround keywords with double quotes (&lt;code&gt;&amp;quot;&lt;/code&gt;) to search for the exact phrase&lt;/li&gt;
&lt;li&gt;Prepend a keyword (or phrase) with minus sign (&lt;code&gt;-&lt;/code&gt;) to exclude it from results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It should be noted that the default operator has been changed from &amp;ldquo;and&amp;rdquo; to &amp;ldquo;or&amp;rdquo;, so by searching for &amp;ldquo;foo bar&amp;rdquo; you will get results that contain both &amp;ldquo;foo&amp;rdquo; and &amp;ldquo;bar&amp;rdquo; at the top, but also those that only contain &amp;ldquo;foo&amp;rdquo; and only contain &amp;ldquo;bar&amp;rdquo;. For this reason, there is also another new operator, the plus sign (&lt;code&gt;+&lt;/code&gt;) which you can prepend to a keyword or phrase to make sure the results definitely contain it.&lt;/p&gt;
&lt;h3 id="health-check"&gt;Health check&lt;/h3&gt;
&lt;p&gt;There is now &lt;code&gt;GET /health&lt;/code&gt; endpoint for the web process which you can use with a monitoring service. The endpoint measures not only that the web process responds to requests but can successfully connect to the database and the cache as well.&lt;/p&gt;
&lt;h3 id="new-deployment-settings"&gt;New deployment settings&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Reply-to header on e-mails&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want e-mails to be sent with a reply-to header, i.e. redirecting replies to those e-mails to a particular address, use the new &lt;code&gt;SMTP_REPLY_TO&lt;/code&gt; environment variable. Mind that the reply-to header on moderation warning e-mails is set to the contact address configured in the admin UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure mode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Normally, all public resources are available without authentication or authorization. Because of this, it is hard to know who (in particular, which server, or which person) has accessed a particular resource, and impossible to deny that access to the ones you want to avoid. Secure mode requires authentication (via HTTP signatures) on all public resources, as well as disabling public REST API access (i.e. no access without access token, and no access with app-only access tokens, there has to be a user assigned to that access token). This means you always know who is accessing &lt;em&gt;any&lt;/em&gt; resource on your server, and can deny that access using domain blocks.&lt;/p&gt;
&lt;p&gt;Unfortunately, secure mode is not fully backwards-compatible with previous Mastodon versions. For this reason, it cannot be enabled by default. If you want to enable it, knowing that it may negatively impact communications with other servers, set the &lt;code&gt;AUTHORIZED_FETCH=true&lt;/code&gt; environment variable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Whitelist mode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Taking a step further than the secure mode, whitelist mode is meant for private servers. Our aim here are educational uses, such as schools and universities, where Mastodon could be used to provide a safe learning environment. When whitelist mode is enabled, no page is available without login, and any incoming or outgoing federation is ignored except for manually whitelisted domains. Domains can be whitelisted in the federation part of the admin UI. When whitelist mode is enabled, secure mode is also enabled.&lt;/p&gt;
&lt;p&gt;To enable whitelist mode, set the &lt;code&gt;WHITELIST_MODE=true&lt;/code&gt; environment variable. Please mind that this option was not designed for being switched on on already running servers. To clean an existing database of content that is not whitelisted, run &lt;code&gt;tootctl domains purge --whitelist-mode&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Because whitelist mode essentially creates a silo, not unlike Twitter, Facebook, and other centralized services, we do not recommend running public servers in whitelist mode.&lt;/p&gt;
&lt;h3 id="new-command-line-tools"&gt;New command-line tools&lt;/h3&gt;
&lt;p&gt;Please mind that if you find any of the below descriptions insufficient, you can always append &lt;code&gt;--help&lt;/code&gt; to whichever command you&amp;rsquo;re interested in and receive the most detailed information about the usage of that command and the available options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parallization and progress&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Commands that used to accept a &lt;code&gt;--background&lt;/code&gt; flag for Sidekiq-based execution have been changed to instead support a &lt;code&gt;--concurrency&lt;/code&gt; (or &lt;code&gt;-c&lt;/code&gt;) flag specifying the number of threads to use for parallel execution.&lt;/p&gt;
&lt;p&gt;Instead of printing dots to signal progress, real progress bars are now displayed, with the number of processed items and estimated time to completion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cleaning up old link preview cards&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To remove thumbnails from older link preview cards, run &lt;code&gt;tootctl preview_cards remove&lt;/code&gt;, specifying age with &lt;code&gt;--days&lt;/code&gt; just like for media removal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Re-downloading removed media attachments&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you need to re-download media attachments, run &lt;code&gt;tootctl media refresh&lt;/code&gt;. You can either re-download media attachments from a specific &lt;code&gt;--status&lt;/code&gt;, from a specific &lt;code&gt;--account&lt;/code&gt;, or from an entire &lt;code&gt;--domain&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Re-counting counters&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes various counters in Mastodon get out of sync with reality. To fix account counters (e.g. followers, following, toots), run &lt;code&gt;tootctl cache recount accounts&lt;/code&gt;. This should not take very long. To fix status counters (e.g. reblogs, favourites, replies), run &lt;code&gt;tootctl cache recount statuses&lt;/code&gt;. This may take a lot longer.&lt;/p&gt;
&lt;h3 id="new-admin-uis"&gt;New admin UIs&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Trends&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hashtags will not trend without your approval. Whenever a hashtag is beginning to trend, you receive a notification e-mail asking to review it. You can disable those e-mails from your personal e-mail notification preferences. You can disable the trends feature altogether from admin settings. Or you can choose to auto-approve hashtags instead, which may be suitable for trusted communities.&lt;/p&gt;
&lt;p&gt;The hashtags area in the admin UI has been updated. When looking at hashtags that are pending review, you can approve or reject them in batches. From individual hashtag view, you can control whether the hashtag can trend, whether it can appear on the profile directory and in searches, or whether it can be used at all. You will also see which servers you know about are contributing how much to that hashtag&amp;rsquo;s usage to help you determine whether to let it trend or not.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Including reported toots in warning e-mails&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want to perform an action or warning against a user related to a report, you can choose if the toots that were in that report should be included in the e-mail the user will get about that action or warning. This will provide more clarity to the user about how they broke your rules.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Table of contents on about page&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The about page of your server will now auto-generate a table of contents based on the structure of your extended description HTML. It is recommended to have a &lt;code&gt;h1&lt;/code&gt; tag, which will not be reflected on the table of contents, to give the entire page a title, then &lt;code&gt;h2&lt;/code&gt; and &lt;code&gt;h3&lt;/code&gt; tags for the different sections. Make sure your HTML is valid, otherwise the table of contents may not work as expected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Public and private domain blocks information&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can now add comments to domain blocks. Private comments are for other staff members only. From the admin settings, you can choose if domain blocks should be disclosed publicly or to logged-in users only, or not at all. If you choose to disclose them, they will appear on the about page, below your extended description. You can use the public comments to give public reasons for your decisions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Custom emoji categories&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The custom emojis area in the admin UI has been updated. You can now assign emojis to custom categories and perform batch actions on them such as copying, deleting, or unlisting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spam checks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When a user mentions someone who isn&amp;rsquo;t following them &lt;em&gt;and&lt;/em&gt; it&amp;rsquo;s not a reply to something directed at that user, their message is run through a simplistic spam check which detects repeating messages. When spam is detected, a new report is created automatically. If that was a mistake, you can mark the report as resolved and it will exempt that user from future spam checks. You can disable the spam check feature from admin settings.&lt;/p&gt;</description></item><item><title>Mastodon 3.0</title><link>https://blog.joinmastodon.org/2019/10/mastodon-3.0/</link><pubDate>Fri, 11 Oct 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/10/mastodon-3.0/</guid><description>&lt;p&gt;It&amp;rsquo;s finally here! Mastodon 3.0 is live! The team has been hard at work on making sure that this release is one of our most user-friendly yet with some exciting new features! Here are just a few:&lt;/p&gt;
&lt;h3 id="stronger-anti-harassment-tools"&gt;Stronger anti-harassment tools&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;re always looking for new ways to provide users and admins with the most robust and comprehensive tools to combat harassment on the fediverse. We take a lot of pride in excelling where Twitter, Tumblr and Facebook have continuously failed in this regard. As such 3.0 introduces some powerful new features: whitelist mode, and an optional public list of blocked domains.&lt;/p&gt;
&lt;p&gt;With the whitelist feature it&amp;rsquo;s now possible for &lt;strong&gt;private, semi-private, and secured networks&lt;/strong&gt; to be deployed. Want to deploy mastodon for educational institutions, networked between a couple schools? Or do you want to build a secured, user-first network within the fediverse itself? The choice is yours. This protects servers and their users from stalkers, intrusive web crawlers, and other malign agents by creating the tightest security on a server yet.&lt;/p&gt;
&lt;p&gt;Additionally, server admins now have the &lt;strong&gt;option of making their domain blocklists public&lt;/strong&gt;, with optional comments clarifying why a domain was blocked. Security on the fediverse relies in part on admins working together to enforce safe community standards, and this allows for the most robust way of sharing information about bad actors in the fediverse. We want you to not just see who was blocked, but why. Transparency lets you see how yours, and other, servers are being run, so you can make informed decisions.&lt;/p&gt;
&lt;h3 id="moving-accounts"&gt;Moving accounts&lt;/h3&gt;
&lt;p&gt;You spoke, we listened! Here is the completely revamped account migration system! Easier than ever, and with 3.0 comes the &lt;strong&gt;ability to bring your followers with you like magic&lt;/strong&gt;! Point the old account to the new one, and the new one to the old one, using the new interface, and your followers will be transferred over!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="migration.png" class="rounded-lg shadow-lg"
 alt="Moving followers to another account"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Moving followers to another account&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Additionally, your old account will no longer show up in searches and will have limited functionality (that, of course, can be undone by re-activating it). This process is streamlined and straightforward, and we hope that it makes moving between servers even easier than before!&lt;/p&gt;
&lt;h3 id="a-more-powerful-search"&gt;A more powerful search&lt;/h3&gt;
&lt;p&gt;Searching is now more flexible and more powerful than before. &lt;strong&gt;You can now search using &amp;ldquo;phrase matching&amp;rdquo; and by excluding words from a search by including a minus sign before a term&lt;/strong&gt;. For example: if you wanted to search for Cute Doggos (I know what you like) but didn&amp;rsquo;t want to include cats, you’d just search for &lt;code&gt;cute doggos -cat&lt;/code&gt; to get to get those puppies.&lt;/p&gt;
&lt;h3 id="-working-with-custom-emojis-just-got-easier-"&gt;💁 Working with custom emojis just got easier! 😸&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Admins can now create custom emoji categories&lt;/strong&gt;! No more worrying about having too many, or thinking ‘oh jeez now I have 40 thounking emojo, where will I put them??’ No more scrolling through hundreds of custom emojis on the web UI to find that perfect way to express yourself! 🐣 Categories! They’re here!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="categories.png" class="rounded-lg shadow-lg"
 alt="Custom custom emojis categories"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Custom custom emojis categories&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="goodbye-ostatus-youve-been-deprecated"&gt;Goodbye OStatus; You’ve been deprecated!&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mastodon will no longer support OStatus&lt;/strong&gt;. For most users this means that there will be no change whatsoever. For the extremely slim margin of people this affects, please refer to the discussion on the bug tracker to see how we got here. We’re a 100% ActivityPub household now!&lt;/p&gt;
&lt;h3 id="the-hashiest-hashtags"&gt;The hashiest hashtags&lt;/h3&gt;
&lt;p&gt;3.0 brings support for &lt;strong&gt;auto-suggestions for hashtags&lt;/strong&gt; and shows you how many times each tag has been used in the past week! This makes it easier to see what the fediverse is talking about and what tags are most popular during the week!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="autocomplete.png" class="rounded-lg shadow-lg"
 alt="Hashtag auto-suggestions"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Hashtag auto-suggestions&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Even better, you can see &lt;strong&gt;trending hashtags&lt;/strong&gt; now, making it easy to follow along with current events and the lightning-fast world of memes on the fediverse. Hashtag trends aren’t blind though; they’re reviewed by your admin to ensure they aren’t being gamed as a vector for abuse. Trust your admin? Use those hashtags!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="trends.png" class="rounded-lg shadow-lg"
 alt="Trending hashtags"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Trending hashtags&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="the-timelines-alive-with-the-sound-of-music"&gt;The timeline&amp;rsquo;s alive, with the sound of music&lt;/h3&gt;
&lt;p&gt;We thought the old media player was pretty disappointing, so we did something about it! Introducing the &lt;strong&gt;new and improved audio player&lt;/strong&gt; for web UI! Sharing audio on Mastodon is now much more user-friendly, with a vastly improved experience over the old player.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="audio.png" class="rounded-lg shadow-lg"
 alt="All new audio player for web UI"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;All new audio player for web UI&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="changes-to-the-ui"&gt;Changes to the UI&lt;/h3&gt;
&lt;p&gt;Single-column mode now supports &lt;strong&gt;scrolling from anywhere on the page&lt;/strong&gt;! This makes viewing the timeline easier than ever and makes mastodon even friendlier to use on laptops and touchscreens.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Slow mode&lt;/strong&gt;! It’s a slower mode! Pop into the preferences pane and toggle this mode to disable livestreaming in the timeline. Instead, you’ll see a manual link to refresh the feed, with a counter letting you know how many new toots there are for you to catch up on. Having a lot of followers doesn’t mean you aren’t able to keep up anymore: stay in the loop with slow mode!&lt;/p&gt;
&lt;p&gt;Lastly, new users see a &lt;strong&gt;minimal UI&lt;/strong&gt; and can change their email address before their account is acivated! Less worrying about typos in the sign-up phase just makes it easier for new friends to join, which is good news for everyone!&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The 3.0 release consists of &lt;strong&gt;563 commits&lt;/strong&gt; by &lt;strong&gt;23 contributors&lt;/strong&gt; since June 22, 2019. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.0.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/tootsuite/mastodon/blob/v3.0.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release:&lt;/strong&gt; &lt;a href="https://github.com/abcang"&gt;abcang&lt;/a&gt;, &lt;a href="https://github.com/ahangarha"&gt;ahangarha&lt;/a&gt;, &lt;a href="https://github.com/brortao"&gt;brortao&lt;/a&gt;, &lt;a href="https://github.com/cutls"&gt;cutls&lt;/a&gt;, &lt;a href="https://github.com/danhunsaker"&gt;danhunsaker&lt;/a&gt;, &lt;a href="https://github.com/Gargron"&gt;Gargron&lt;/a&gt;, &lt;a href="https://github.com/highemerly"&gt;highemerly&lt;/a&gt;, &lt;a href="https://github.com/hugogameiro"&gt;hugogameiro&lt;/a&gt;, &lt;a href="https://github.com/ichi-i"&gt;ichi-i&lt;/a&gt;, &lt;a href="https://github.com/Kjwon15"&gt;Kjwon15&lt;/a&gt;, &lt;a href="https://github.com/koyuawsmbrtn"&gt;koyuawsmbrtn&lt;/a&gt;, &lt;a href="https://github.com/madmath03"&gt;madmath03&lt;/a&gt;, &lt;a href="https://github.com/mayaeh"&gt;mayaeh&lt;/a&gt;, &lt;a href="https://github.com/noellabo"&gt;noellabo&lt;/a&gt;, &lt;a href="https://github.com/nzws"&gt;nzws&lt;/a&gt;, &lt;a href="https://github.com/Shleeble"&gt;Shleeble&lt;/a&gt;, &lt;a href="https://github.com/ThibG"&gt;ThibG&lt;/a&gt;, &lt;a href="https://github.com/trwnh"&gt;trwnh&lt;/a&gt;, &lt;a href="https://github.com/tsia"&gt;tsia&lt;/a&gt;, &lt;a href="https://github.com/umonaca"&gt;umonaca&lt;/a&gt;, &lt;a href="https://github.com/ykzts"&gt;ykzts&lt;/a&gt;, &lt;a href="https://github.com/zunda"&gt;zunda&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release:&lt;/strong&gt; 101010, Abijeet Patro, Aditoo17, Adrián Lattes, Akarshan Biswas, Alessandro Levati, Alix Rossi, Andrea Lo Iacono, Anunnakey, ariasuni, atarashiako, AW Unad, Benjamin Cobb, borys_sh, ButterflyOfFire, carolinagiorno, Ch., christalleras, Cutls, cybergene, d5Ziif3K, Daniel Dimitrov, Dewi, diazepan, Diluns, dragnucs2, Dremski, dxwc, eichkat3r, Emyn Nant Nefydd, EPEMA YT, erikstl, Evert Prants, Evgeny Petrov, filippodb, frumble, FédiQuébec, Hinaloe, hiphipvargas, Hugh Liu, hussama, Jack R, JackXu, Jaz-Michael King, Jeong Arm, Jeroen, Johan Schiff, Juan José Salvador Piedra, juanda097, JzshAC, Karol Kosek, kat, KEINOS, koyu, Kristijan Tkalec, lamnatos, liffon, Lukas Fülling, MadeInSteak, Marcepanek_, Marcin Mikołajczak, Marek Ľach, Masoud Abkenar, Maya Minatsuki, mmokhi, Muha Aliss, Oguz Ersen, OpenAlgeria, Osoitz, oti4500, oɹʇuʞ, PPNplus, Rakino, Ramdziana F Y, Ray, Renato &amp;ldquo;Lond&amp;rdquo; Cerqueira, Rhys Harrison, Rikard Linde, Rintan1, Roboron, ruine, Ryo, sabri, Saederup92, Sahak Petrosyan, SamitiMed, Sasha Sorokin, sergioaraujo1, SHeija, shioko, silkevicious, skaaarrr, SnDer, Sokratis Alichanidis, spla, Stasiek Michalski, taoxvx, tctovsli, Thai Localization, Tiago Epifânio, Tradjincal, tykayn, umelard, Unmual, Vanege, vjasiegd, waweic, Xosé M., Yi-Jyun Pan, Zoltán Gera, Zoé Bőle, さっかりんにーさん, 唐宗勛, 森の子リスのミーコの大冒険, 硫酸鶏&lt;/p&gt;
&lt;p&gt;As always, huge thanks to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;p&gt;Happy tooting!&lt;/p&gt;</description></item><item><title>Gab switches to Mastodon's code</title><link>https://blog.joinmastodon.org/2019/07/statement-on-gabs-fork-of-mastodon/</link><pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/07/statement-on-gabs-fork-of-mastodon/</guid><description>&lt;p&gt;After &lt;a href="https://www.splcenter.org/hatewatch/2019/01/24/how-gab-has-raised-millions-thanks-crowdfunding-company"&gt;crowdfunding millions of dollars&lt;/a&gt;, social media platform Gab abandoned its own code and switched to the freely available Mastodon software in early 2019 as a way of circumventing Google&amp;rsquo;s and Apple&amp;rsquo;s ban on their own app from their app stores, since offering Mastodon&amp;rsquo;s client-side API would allow any existing Mastodon app to be used to access Gab. We have never had any sympathy for their &lt;a href="https://www.theatlantic.com/technology/archive/2018/10/what-gab/574186/"&gt;thinly (if at all) veiled white supremacist platform&lt;/a&gt; so that was not a welcome move on our part, however the license that we publish our software under (AGPLv3) allows anyone to use it as they see fit as long as they keep the same license and make their modifications public.&lt;/p&gt;
&lt;p&gt;While we gave up the ability to choose who can and cannot use our software by publishing our source code using this Free Software license, we can still choose who we as a project associate with. We are opposed to Gab&amp;rsquo;s philosophy, which uses the pretense of free speech absolutism as an excuse to platform racist and otherwise dehumanizing content.&lt;/p&gt;
&lt;p&gt;Mastodon has been originally developed by a person of Jewish heritage and first-generation immigrant background and Mastodon&amp;rsquo;s userbase includes many people from marginalized communities. Mastodon&amp;rsquo;s decentralized approach that allows communities to self-govern according to their needs has enabled those marginalized communities to create safe spaces for themselves where previously they were reliant on big companies like Twitter to stand up for them, which these companies have often failed to do. While the Mastodon software is free for everyone to use and modify, our world view could not be further from Gab&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;As a truly decentralized network, each Mastodon server operator has to make the call on their own. Many have already opted to block communication from Gab&amp;rsquo;s servers. On our side, we have blocked them from the Mastodon server that we operate, mastodon.social. We have also recently introduced &lt;a href="https://joinmastodon.org/covenant"&gt;a more strict policy&lt;/a&gt; for which Mastodon servers we &lt;a href="https://joinmastodon.org/communities"&gt;promote through our official website joinmastodon.org&lt;/a&gt;, listing only such servers that commit to standing up against racism, sexism, homophobia and transphobia.&lt;/p&gt;
&lt;h3 id="updates"&gt;Updates&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Last updated:&lt;/strong&gt; Oct 28, 2021&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On &lt;strong&gt;Mar 1, 2021&lt;/strong&gt;, &lt;a href="https://www.theguardian.com/world/2021/mar/11/gab-hack-neo-nazis-qanon-conspiracy-theories"&gt;following a breach&lt;/a&gt; that likely resulted from Gab&amp;rsquo;s own modifications to the code and a failure to merge important security fixes from the upstream Mastodon code base, Gab changed the way it published its source code.
&lt;ul&gt;
&lt;li&gt;First, the public source code repository was taken offline, replacing the code with a message stating that the source code would be provided upon request by e-mail only. Whether this was compliant with the AGPLv3 license was quickly put into question.&lt;/li&gt;
&lt;li&gt;At least as soon as the following day, a password-protected archive of the source code was uploaded to the repository, with the password provided in a separate README file.&lt;/li&gt;
&lt;li&gt;However, despite changes evidently being made to Gab&amp;rsquo;s interface and functionality in the following months, that password-protected archive was not updated once in the following 7 months, prompting us to investigate a case of AGPLv3 violation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Oct 21, 2021&lt;/strong&gt;, our legal team sent a Cease &amp;amp; Desist letter to Gab&amp;rsquo;s legal team, informing them that Gab is in breach of the AGPLv3 license. In response to the letter, the same day the password-protected archive of Gab&amp;rsquo;s source code was updated.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon 2.9</title><link>https://blog.joinmastodon.org/2019/06/mastodon-2.9/</link><pubDate>Fri, 14 Jun 2019 00:58:05 +0200</pubDate><guid>https://blog.joinmastodon.org/2019/06/mastodon-2.9/</guid><description>&lt;p&gt;One of the biggest obstacles for new users to Mastodon has been the multi-column UI. For users accustomed to the single-column layouts of Twitter or Tumblr, Mastodon’s multi-column layout can be overwhelming. At Mastodon, we want users’ first-day experience with us to be a positive and accessible one! A UI that feels cluttered or that leaves users confused dramatically reduces the chances that they will come back to Mastodon as a regular user. It was clear to us that the multi-column layout was impeding this accessibility.&lt;/p&gt;
&lt;p&gt;So, we are happy to introduce &lt;strong&gt;the new single-column layout&lt;/strong&gt;. Instead of seeing multiple columns side by side the new single-column layout turns the Home, Notifications, Local, and Federated timelines into their own tabs within the single column that you can easily access by clicking on the tab name or—if you are on a tablet—swiping left and right. The new single-column layout reduces visual clutter and lets you focus on the specific part of Mastodon you want to engage in. We also hope that by reducing visual clutter the new single-column layout also makes the relationship between the Home, Local, and Federated timelines clearer.&lt;/p&gt;
&lt;p&gt;For new users this new interface provides an easier and more familiar way to join the fediverse without sacrificing the special features of the fediverse itself. For returning users it provides a new way to use Mastodon that provides greater accessibility in general. Notably, we haven’t cut any features with this new layout. Everything you love about Mastodon is still accessible, just in a new user-friendly interface. But for those users who prefer the old layout it can still be enabled on the Appearance Preferences page by clicking “Enable advanced web interface”—it&amp;rsquo;s not going away anytime soon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check out the full changelog and credits for v2.9.0 on &lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.9.0"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Try out Mastodon by signing up on any server listed on our &lt;a href="https://joinmastodon.org/#getting-started"&gt;server picker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;See who sponsors the development of Mastodon on our &lt;a href="https://joinmastodon.org/sponsors"&gt;sponsors page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Support the development on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to migrate from one server to another</title><link>https://blog.joinmastodon.org/2019/06/how-to-migrate-from-one-server-to-another/</link><pubDate>Thu, 13 Jun 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/06/how-to-migrate-from-one-server-to-another/</guid><description>&lt;p&gt;With the sad news that KNZK was shutting down we thought it might be useful for people to have a refresher on the features that Mastodon has built in that make moving instances easy and painless.&lt;!-- more --&gt;&lt;/p&gt;
&lt;h3 id="backing-up-your-data"&gt;Backing up Your Data&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="export.png" class="rounded-lg shadow-lg"
 alt="Data export"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Data export&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;If you are moving to a new instance the first thing you will want to do is to get a backup of all of your data. Thankfully this process is painless with the Data Export tab under the “Import and Export” page. Here you can download your followers list, your muted users list and your blocked users list.&lt;/p&gt;
&lt;p&gt;Keeping users safe is one of our top priorities and we highly recommend that anyone moving instances backs up their muted and block lists. We’ve made this as straightforward as possible to ensure that moving instances is a seamless experience and free from having to block those accounts that you do not want to see or interact with.&lt;/p&gt;
&lt;p&gt;On this page you can also download a copy of your archive that can be read by any ActivityPub software. This archive includes all of your posts and media. So even if the instance that you are moving from shuts down, as is the case with KNZK, you will still have a copy of all of your posts!&lt;/p&gt;
&lt;h3 id="importing-your-data"&gt;Importing Your Data&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="import.png" class="rounded-lg shadow-lg"
 alt="Data import"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Data import&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once you have backed up the data that you wish to bring over to your new account (we recommend all of it!) it’s easy to import these into your new account under the “Import” tab of the “Import and Export” page!&lt;/p&gt;
&lt;p&gt;Here you will simply select the type of data that you are importing and then choose the CVS file that you exported earlier before hitting upload! The CVS files are by default clearly labeled with what kind of data they contain to make it easier to know which file to upload. Depending on your new instances size and the size of the lists that you have imported it will take a few minutes for all of the new data to be properly imported. When the data has finished upload your home TL should look like it did before!&lt;/p&gt;
&lt;h3 id="announcing-the-move"&gt;Announcing the Move&lt;/h3&gt;
&lt;figure&gt;
 &lt;img src="migration.png" class="rounded-lg shadow-lg"
 alt="Setting up profile redirect"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Setting up profile redirect&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As a final step in moving your account, something you may want to do is to let people know that you have moved your account to a new instance! Scrolling to the bottom of the “Appearances” tab of the Profile edit page you will find the option to announce that you have moved accounts under the helpfully titled “Move to a different account” header! What this will do is make it so that when people visit your old profile it is grayed out and people are redirected to your new account.&lt;/p&gt;
&lt;p&gt;Moving instances is painless and straightforward with Mastodon and we’re happy to have developed tools that give users the greatest possible control over their own data while also keeping them safe!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the future we are planning to expand the account migration functionality beyond a mere redirect message. The system will support notifying followers of the move and have them automatically re-follow the new account, with safety precautions. Stay tuned!&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Introducing the Mastodon Server Covenant</title><link>https://blog.joinmastodon.org/2019/05/introducing-the-mastodon-server-covenant/</link><pubDate>Thu, 16 May 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/05/introducing-the-mastodon-server-covenant/</guid><description>&lt;p&gt;Although Mastodon has no central authority, we as a project still want to provide a safer experience than found on Twitter or Reddit. One of the things that gave impetus to the creation of Mastodon was a lack of moderation on Twitter against hate groups. The &amp;ldquo;no nazis&amp;rdquo; rule of the original mastodon.social server not only continues to serve as a major attraction of the project, but has also been adopted in the majority of subsequently founded communities as well.&lt;/p&gt;
&lt;p&gt;We thought long and hard about how to best provide people new to Mastodon a safe and friendly experience without compromising the federated and free nature of the project. Thus, we are proud to announce the creation of the &lt;strong&gt;Mastodon Server Covenant&lt;/strong&gt;. By highlighting those communities that are high quality and best align with our values, we hope to foster a friendly and better moderated online space. Any server that we link to from joinmastodon.org commits to &lt;strong&gt;actively moderating against racism, sexism, homophobia and transphobia&lt;/strong&gt;. Additionally, servers listed on joinmastodon.org are those that have committed to having daily backups, more than one person with emergency access (&amp;ldquo;bus factor&amp;rdquo;) and promise to give people a 3 month warning in case of potential closure.&lt;/p&gt;
&lt;p&gt;While there have always been server listings on joinmastodon.org, this is a break from our previous practice of listing servers. Before the Server Covenant we pulled a list of servers from a 3rd party provider called instances.social. However, instances.social was a 3rd party and automated service. The one thing that it could not do was any kind of quality control as it simply listed every instance submitted&amp;ndash;regardless of stability or their code of conduct. As Mastodon has grown it has become increasingly clear that simply listing every possible server was not in our interest as a project, nor was it in the interest in the majority of the communities running Mastodon.&lt;/p&gt;
&lt;p&gt;We want people&amp;rsquo;s experience with the Mastodon to be safe and consistent and we believe in highlighting those communities that best embody our values. Mastodon is released as free software and that is where our obligations of neutrality end. We do not believe that moderation is a crime, and we do not have to support or promote those who would choose to use Mastodon to spread intolerance and hate.&lt;/p&gt;
&lt;p&gt;For those interested in learning more, or learning about including their community in the Mastodon Server Covenant, can find out more &lt;a href="https://joinmastodon.org/covenant"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Improving support for adult content on Mastodon</title><link>https://blog.joinmastodon.org/2019/05/improving-support-for-adult-content-on-mastodon/</link><pubDate>Sun, 05 May 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/05/improving-support-for-adult-content-on-mastodon/</guid><description>&lt;p&gt;The latest point release of Mastodon adds a small new feature that might have a significant impact on all adult content creators on the platform. The feature has a fancy, memorable name: Blurhash. But first, let&amp;rsquo;s talk about how adult content works on Mastodon.&lt;/p&gt;
&lt;p&gt;Mastodon allows you to put content warnings on posts. These can be textual, hiding the text content, for example if you want to talk about spoilers or something uncomfortable for other people. Images and videos can be hidden as well, even while leaving the text visible. When the images and videos are hidden, you only see a black box where they would be, that can be clicked to show them.&lt;/p&gt;
&lt;p&gt;Beyond providing visual protection against say, co-workers looking over your shoulder to see something inappropriate on your screen, Mastodon also does not load said images or videos at all until you choose to unhide them, which helps if it&amp;rsquo;s important that inappropriate content is not stored in your browser&amp;rsquo;s cache. But there is a drawback. Every post with hidden media looks the same. They all blend together. Especially in public timelines, which provide a stream of all public posts that people use to explore Mastodon outside of their friend circle. As a result, posts with hidden media usually get less interactions.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="blurhash-demo-cat.png" class="rounded-lg shadow-lg"
 alt="Side-by-side comparison of the original picture of Doris (cat) and the generated blurhash, which is the string KJG8_@Dgx]_4V?xuyE%NRj"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Side-by-side comparison of the original picture of Doris (cat) and the generated blurhash, which is the string KJG8_@Dgx]_4V?xuyE%NRj&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Here comes Blurhash. Developed by &lt;a href="https://mastodon.social/@WAHa_06x36"&gt;Dag Ågren&lt;/a&gt;, who is behind the popular iOS app for Mastodon, &lt;a href="https://itunes.apple.com/app/toot/id1229021451?ls=1&amp;amp;mt=8"&gt;Toot!&lt;/a&gt;, it is an algorithm that compresses a picture into a short string of letters. The string is so small that there is no problem with saving it in the database, instead of as an image file, and conversely, sending it along with API responses. That means that string is available before any image files are loaded by the browser. You can see where this is going&amp;hellip; When you decode the string back into an image, you get a gradient of colors used in the original image.&lt;/p&gt;
&lt;p&gt;So little information is transmitted through blurhash that is is safe to display even if the underlying content is inappropriate, and the resulting gradient is pleasant to look at. Even more importantly, it&amp;rsquo;s different for each image, making posts with hidden media look different from each other, which should hopefully increases their chances of getting noticed. But that&amp;rsquo;s not all! Even for posts where images and videos are not supposed to be hidden, it provides a pleasant placeholder while the much heavier image files are loaded by the browser.&lt;/p&gt;
&lt;p&gt;If you would like to use Blurhash in your project, there is a &lt;a href="https://rubygems.org/gems/blurhash"&gt;Ruby port&lt;/a&gt; on RubyGems and a &lt;a href="https://www.npmjs.com/package/blurhash"&gt;JavaScript port&lt;/a&gt; on NPM. More are to be published by &lt;a href="https://mastodon.social/@WAHa_06x36"&gt;Dag Ågren&lt;/a&gt; in the future!&lt;/p&gt;</description></item><item><title>Mastodon 2.8</title><link>https://blog.joinmastodon.org/2019/04/mastodon-2.8/</link><pubDate>Wed, 10 Apr 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/04/mastodon-2.8/</guid><description>&lt;p&gt;In this long-awaited release: Polls, new tools for managing followers, new frontpage design, new admin features, Keybase integration, and more.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="poll.png" class="rounded-lg shadow-lg"
 alt="A poll"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;A poll&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mastodon now has a &lt;strong&gt;poll feature&lt;/strong&gt;. Instead of attaching images or video to your post, you can ask your followers to choose an answer to your question. You can choose how long a poll will remain open for. Polls in private posts are accessible only to your followers.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="featured-tags.png" class="rounded-lg shadow-lg"
 alt="Featured hashtags on an artist&amp;rsquo;s profile"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Featured hashtags on an artist&amp;rsquo;s profile&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;You can now choose which &lt;strong&gt;hashtags to feature on your profile&lt;/strong&gt;. They will be displayed on the sidebar and allow visitors to browse your posts specifically under those hashtags.&lt;/p&gt;
&lt;p&gt;A new server setting will allow communities to grow without worrying about spammers, trolls, or unexpected traffic spikes: Instead of allowing everyone to sign up, or allowing nobody to sign up, a server owner can choose to let people &lt;strong&gt;apply for an invite&lt;/strong&gt; and manually approve sign-ups.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="landing-page.png" class="rounded-lg shadow-lg"
 alt="The new landing page"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;The new landing page&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;landing page has been simplified&lt;/strong&gt; to its essence: Sign up form, quick access to a login form for returning users, short and to the point information about the server, and links to ways of exploring the server.&lt;/p&gt;
&lt;p&gt;The design of profiles within the web app has been changed to match the design of public profiles more closely, making better use of space and showing the header image without obscuring it.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="relationship-manager.png" class="rounded-lg shadow-lg"
 alt="Manage follows and followers"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Manage follows and followers&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;There is a new &lt;strong&gt;powerful UI for managing your followers and follows&lt;/strong&gt;. It allows you to filter them by various criteria, such as your mutuals, or who hasn&amp;rsquo;t been active in a long time, and you can unfollow them in batches, as well as remove them from your followers in batches.&lt;/p&gt;
&lt;p&gt;In a similar vein, the import tool for follows, mutes, and blocks now allows you to choose whether the imported data will merge with what you already had in your account, or replace it.&lt;/p&gt;
&lt;p&gt;Among other things, Mastodon now supports &lt;strong&gt;Keybase&amp;rsquo;s new proof system&lt;/strong&gt;, allowing you to connect your Keybase account with your Mastodon account to affirm your identity across the web. Keybase is slowly rolling this feature out on their side, and it will eventually be available to all Mastodon servers.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The 2.8 release consists of &lt;strong&gt;392 commits&lt;/strong&gt; by &lt;strong&gt;32 contributors&lt;/strong&gt; since January 28, 2019. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/tootsuite/mastodon/blob/v2.8.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/tootsuite/mastodon/blob/v2.8.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release:&lt;/strong&gt; &lt;a href="https://github.com/Aditoo17"&gt;Aditoo17&lt;/a&gt;, &lt;a href="https://github.com/armandfardeau"&gt;armandfardeau&lt;/a&gt;, &lt;a href="https://github.com/aurelien-reeves"&gt;aurelien-reeves&lt;/a&gt;, &lt;a href="https://github.com/BenLubar"&gt;BenLubar&lt;/a&gt; &lt;a href="https://github.com/enewhuis"&gt;enewhuis&lt;/a&gt;, &lt;a href="https://github.com/Gargron"&gt;Gargron&lt;/a&gt;, &lt;a href="https://github.com/hinaloe"&gt;hinaloe&lt;/a&gt;, &lt;a href="https://github.com/jeroenpraat"&gt;jeroenpraat&lt;/a&gt;, &lt;a href="https://github.com/Kjwon15"&gt;Kjwon15&lt;/a&gt;, &lt;a href="https://github.com/koyuawsmbrtn"&gt;koyuawsmbrtn&lt;/a&gt;, &lt;a href="https://github.com/m4sk1n"&gt;m4sk1n&lt;/a&gt;, &lt;a href="https://github.com/mabkenar"&gt;mabkenar&lt;/a&gt;, &lt;a href="https://github.com/marek-lach"&gt;marek-lach&lt;/a&gt;, &lt;a href="https://github.com/mayaeh"&gt;mayaeh&lt;/a&gt;, &lt;a href="https://github.com/noellabo"&gt;noellabo&lt;/a&gt;, &lt;a href="https://github.com/nolanlawson"&gt;nolanlawson&lt;/a&gt;, &lt;a href="https://github.com/palindromordnilap"&gt;palindromordnilap&lt;/a&gt;, &lt;a href="https://github.com/Quenty31"&gt;Quenty31&lt;/a&gt;, &lt;a href="https://github.com/renatolond"&gt;renatolond&lt;/a&gt;, &lt;a href="https://github.com/rinsuki"&gt;rinsuki&lt;/a&gt;, &lt;a href="https://github.com/salvadorpla"&gt;salvadorpla&lt;/a&gt;, &lt;a href="https://github.com/sascha-sl"&gt;sascha-sl&lt;/a&gt;, &lt;a href="https://github.com/Shleeble"&gt;Shleeble&lt;/a&gt;, &lt;a href="https://github.com/Slaynash"&gt;Slaynash&lt;/a&gt;, &lt;a href="https://github.com/slice"&gt;slice&lt;/a&gt;, &lt;a href="https://github.com/ThibG"&gt;ThibG&lt;/a&gt;, &lt;a href="https://github.com/xgess"&gt;xgess&lt;/a&gt;, &lt;a href="https://github.com/yagizhan49"&gt;yagizhan49&lt;/a&gt;, &lt;a href="https://github.com/ykzts"&gt;ykzts&lt;/a&gt;, &lt;a href="https://github.com/ysksn"&gt;ysksn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release:&lt;/strong&gt; Aditoo, Albakham, Alessandro Levati, Ali Demirtas, Alix D. R., Amrz0, Andrew Zyabin, Angeles Broullón, Antonis, arshat, Austin Jones, Becci Cat, Besnik Bleta, Burekz Finezt, ButterflyOfFire, dxwc, Einhjeriar, Eirworks, Evgeny Petrov, goofy-mdn, Hinaloe, Ivan Pleva, Jaz-Michael King, Jeong Arm, jeroenpraat, Joseph Nuthalapati, João Pinheiro, Kaitian Xie, Kevin Houlihan, koyu, Kristijan Tkalec, Kumasun Morino, Leia, lilo, Maigonis, Marcin Mikołajczak, Marek Ľach, martialarts, Masoud Abkenar, Max Winkler, mayaeh, Mikko Poussu, Mélanie Chauvel, Osoitz, Owain Rhys Lewis, pan93412, parnikkapore, Peter, Quenti2, Quentí, Rasmus Sæderup, Renato &amp;ldquo;Lond&amp;rdquo; Cerqueira, Sarunas Medeikis, Sergio Soriano, spla, Thai Localization, Vanege, Xose M., Павел Гастелло, 森の子リスのミーコの大冒険&lt;/p&gt;
&lt;p&gt;As always, huge thanks to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;h3 id="resources"&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.8.0"&gt;Full changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.joinmastodon.org/usage/basics/"&gt;User documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon now available on DigitalOcean</title><link>https://blog.joinmastodon.org/2019/04/mastodon-now-available-on-digitalocean/</link><pubDate>Sun, 07 Apr 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/04/mastodon-now-available-on-digitalocean/</guid><description>&lt;p&gt;We have published a &lt;a href="https://marketplace.digitalocean.com/apps/mastodon"&gt;1-click install image&lt;/a&gt; on DigitalOcean. This reduces the initial time investment in self-hosting Mastodon substantially. You create a new droplet, choose the Mastodon image, and once it boots up, you are taken through an interactive setup prompt.&lt;/p&gt;
&lt;p&gt;The only necessary information for the prompt is a domain name (it should already be pointing at the IP address of your droplet!) and credentials to some e-mail delivery service, like SparkPost, Mailgun, Sendgrid, or something similar. Once you enter them into the setup prompt, your brand new Mastodon server boots up, ready to go.&lt;/p&gt;
&lt;p&gt;Optionally, the setup prompt can also take Amazon S3, Wasabi or Google Cloud credentials for storing user uploads in the cloud instead of the local filesystem on the droplet.&lt;/p&gt;
&lt;p&gt;What you get in the droplet is a standard installation of Mastodon, exactly as if you simply followed installation instructions in our documentation. This means that &lt;a href="https://docs.joinmastodon.org"&gt;the documentation&lt;/a&gt; already covers everything you might want to know!&lt;/p&gt;</description></item><item><title>The role of mastodon.social in the Mastodon ecosystem</title><link>https://blog.joinmastodon.org/2019/03/the-role-of-mastodon.social-in-the-mastodon-ecosystem/</link><pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/03/the-role-of-mastodon.social-in-the-mastodon-ecosystem/</guid><description>&lt;p&gt;Can you imagine Facebook closing registrations and saying &amp;ldquo;Sorry, we have too many users already, you can go sign up on Twitter instead&amp;rdquo;? And yet, this sort of situation comes up with Mastodon every so often, in regards to the mastodon.social server.&lt;/p&gt;
&lt;p&gt;You see, Mastodon is decentralized. That means there is no &amp;ldquo;main&amp;rdquo; server. If mastodon.social actually disappeared from the face of the Earth, it would not bring down the Mastodon network at all. But it is one of the biggest servers, meaning that if you look at the registered userbase, it is &amp;ldquo;effectively centralized&amp;rdquo;. 300,000 is not a small chunk of 2,000,000, after all.&lt;/p&gt;
&lt;p&gt;No other social network has a problem like that, or rather, they would not consider it a problem, at all. But some believe that the Mastodon project should actively enforce decentralization in terms of user distribution, and that presents a unique challenge. Frankly, the only precedent that I can think of, obscure as it is, and on a much smaller scale, is Blizzard&amp;rsquo;s distribution of World of Warcraft players on different realms.&lt;/p&gt;
&lt;p&gt;The challenge lies herein: Since most other social networks are centralized, there is an expectation in people&amp;rsquo;s minds that &amp;ldquo;sign up on Mastodon&amp;rdquo; is equal to &amp;ldquo;sign up on mastodon.social&amp;rdquo;. Explaining the difference, the importance of the difference, and making the reader consciously choose a server out of an incredibly wide selection, all within the limited attention span of a just mildly curious person, is not simple.&lt;/p&gt;
&lt;p&gt;I have been trying to deal with this issue for most of Mastodon&amp;rsquo;s existence. There are many benefits from not having everyone use the same server, that I have &lt;a href="https://blog.joinmastodon.org/2018/12/why-does-decentralization-matter/"&gt;described in a different article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are two dimensions to the problem. One, when a person arrives at the mastodon.social address directly, instead of joinmastodon.org, there is no way to ensure that they sign up somewhere else, you can only ensure that they don&amp;rsquo;t sign up here. You can close registrations, put up a message linking back to joinmastodon.org. Sorry, we&amp;rsquo;re full!&lt;/p&gt;
&lt;p&gt;The other dimension is when people arrive at joinmastodon.org, as is expected. It has a large, filterable list of Mastodon servers ready to accept new members, that people are supposed to scroll through to find the one that will fit them. Here, you can just hide mastodon.social from the list, to not make it an option for people to choose. Problem solved!&lt;/p&gt;
&lt;p&gt;But&amp;hellip;&lt;/p&gt;
&lt;p&gt;These solutions solve one problem, while creating another.&lt;/p&gt;
&lt;p&gt;When you close registrations and put up a link to go somewhere else, the reality of the situation is that there will be a non-zero amount of people who will just drop out and lose interest at that point. And if they don&amp;rsquo;t, and they navigate through the link to joinmastodon.org? Choice is difficult. Most Mastodon servers out there are themed around specific interests or identities. You&amp;rsquo;re in academia? scholar.social. You&amp;rsquo;re a photographer? photog.social. Video games? elekk.xyz. But what if you don&amp;rsquo;t feel like you belong in any particular category like that? Twitter didn&amp;rsquo;t force you to decide on your interests upfront. General-purpose servers seem to be a rarity. And even the ones that are around, not all of them have the benefit of having &amp;ldquo;mastodon&amp;rdquo; in the domain name.&lt;/p&gt;
&lt;p&gt;It does feel like the growth of the fediverse slows down when mastodon.social is unavailable.&lt;/p&gt;
&lt;p&gt;It is a hard call to make. I have closed and re-opened registrations on mastodon.social multiple times in the course of its history. There is definitely a danger in effective centralization, and I am for example worried about GMail&amp;rsquo;s hegemony in the e-mail ecosystem. But I also believe that growth is key to the network, as it won&amp;rsquo;t be able to compete with centralized alternatives otherwise. A musician won&amp;rsquo;t ask themselves if every of the 4,000 servers has an equal number of users, they will pick the network where they see the best perspective to reach fans or make connections with fellow musicians.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s worth mentioning that many people who are now running large and active Mastodon servers have started with a mastodon.social account. It is the easy choice to sign up on without knowing anything else, and it is much easier to educate someone on Mastodon about decentralization, than say, educate someone who lost interest in Mastodon because they were turned away and went back to Twitter.&lt;/p&gt;
&lt;p&gt;Today, I am &lt;a href="https://mastodon.social/about"&gt;re-opening registrations on mastodon.social&lt;/a&gt; after nearly three months. I don&amp;rsquo;t know if I&amp;rsquo;ll always be able to keep them open, or if someone will come up with more effective ways of onboarding new users, but this here is an explanation for the past and the future of why it is such a contested topic.&lt;/p&gt;</description></item><item><title>Mastodon 2.7</title><link>https://blog.joinmastodon.org/2019/01/mastodon-2.7/</link><pubDate>Sun, 20 Jan 2019 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2019/01/mastodon-2.7/</guid><description>&lt;p&gt;Polish translation is available: &lt;a href="https://blog.joinmastodon.org/pl/2019/01/mastodon-2.7/"&gt;Mastodon 2.7&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The fresh release of Mastodon brings long-overdue improvements to discoverability of content and the administration interface, as well as a large number of bug fixes and extra polish.&lt;/p&gt;
&lt;p&gt;The 2.7 release consists of &lt;strong&gt;376 commits&lt;/strong&gt; by &lt;strong&gt;36 contributors&lt;/strong&gt; since October 31, 2018. For line-by-line attributions, you can peruse the &lt;a href="https://github.com/tootsuite/mastodon/blob/v2.7.0/CHANGELOG.md"&gt;changelog file&lt;/a&gt;, and for a historically complete list of contributors and translators, you can refer to the &lt;a href="https://github.com/tootsuite/mastodon/blob/v2.7.0/AUTHORS.md"&gt;authors file&lt;/a&gt;, both included in the release.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="Screenshot_2019-01-19%20Explore%20Mastodon.png" class="rounded-lg shadow-lg"
 alt="Profile directory on mastodon.social"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Profile directory on mastodon.social&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One of the new features is a &lt;strong&gt;profile directory&lt;/strong&gt; that people can opt-in to. The directory allows you to see at a glance active posters on a given Mastodon server and filter them by the hashtags in their profile bio. So you can find people who share your interests without reading through the public timelines, and you can even find out who to follow from a different Mastodon server without needing to sign up and lurk there!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="Screenshot_2019-01-19%20Mastodon%20%28Dev%29.png" class="rounded-lg shadow-lg"
 alt="Tutorial explaining the timelines"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Tutorial explaining the timelines&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;tutorial&lt;/strong&gt; that new people see after signing up has been completely reworked. It has a tighter narrative: Rather than explaining the minutea of the default user interface, it focuses on the main concepts of Mastodon, from which the interface is a derivation. And it is accompanied by colorful illustrations. It also has the benefit of loading a bit faster, since it&amp;rsquo;s not a modal window laid over the interface, but rather it loads &lt;em&gt;before&lt;/em&gt; the interface.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="Screenshot_2019-01-19%20catstodon.png" class="rounded-lg shadow-lg"
 alt="Public hashtag page for #catstodon"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Public hashtag page for #catstodon&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;public hashtag page&lt;/strong&gt; now makes better use of screen estate by arranging toots in a masonry grid instead of a narrow column. The public hashtag page is the page outside the columnized web interface that logged in users see and use&amp;ndash;it is a page oriented primarily towards anonymous viewers.&lt;/p&gt;
&lt;p&gt;2.7 includes a &lt;strong&gt;new moderation warning system&lt;/strong&gt; for Mastodon. Whereas previously people would learn that their account was suspended or disabled only through a generic error page when trying to access their account, now moderators can choose to notify users about any actions taken against them. Even without specific actions, moderators can send official warnings that get delivered over e-mail and are reflected in the moderator interface, allowing other moderators to stay updated. Moderators can write any additional information in those e-mails. Because many moderation cases are similar, there is a system for saving presets, that moderators can very easily choose from instead of typing messages from scratch every time.&lt;/p&gt;
&lt;p&gt;Of course, because it&amp;rsquo;s hard to generalize, and some trolls and spam bots are best contained when they don&amp;rsquo;t realize they are being contained, that notification system can be overriden on a case by case basis.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="Screenshot_2019-01-19%20TheKinrar%20mastodon%20xyz%20-%20Mastodon.png" class="rounded-lg shadow-lg"
 alt="Admin interface for a remote account"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Admin interface for a remote account&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The moderation interfaces for accounts and instances has also been reworked. Accounts now display the most important numbers in an easy to skim grid. Some useless information has been removed, and some useful information has been added, such as when the user signed up, or who sent them an invite. For accounts from other servers, you can now see which local users follow them at a glance.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="Screenshot_2019-01-19%20Federation%20-%20Mastodon.png" class="rounded-lg shadow-lg"
 alt="Administration interface for known servers"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Administration interface for known servers&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The administration interfaces for known servers and domain blocks have been unified into a common area. Besides displaying how many accounts are known from a particular server, you can now also see how many accounts are followed from your server, how many of their accounts are following your users, how many have been individually blocked or reported, and how much disk space that server&amp;rsquo;s media attachments are taking up.&lt;/p&gt;
&lt;p&gt;App developers will be delighted to learn that 2.7 introduces a &lt;strong&gt;registration API&lt;/strong&gt;. By implementing that API, apps will be able to accept new registrations from their users, instead of having to send them to a web browser. When a user signs up through an app, they still receive a confirmation e-mail which they have to open before their account is activated, but the e-mail contains a link that can open the app, and once the account is activated, the app is already authenticated and ready to go.&lt;/p&gt;
&lt;p&gt;The command-line utility for managing a Mastodon server, &lt;code&gt;tootctl&lt;/code&gt; (pronounced &amp;ldquo;toot control&amp;rdquo;) has received a few new commands. Over the course of Mastodon&amp;rsquo;s existence, some people built websites collecting statistics from known Mastodon servers. However, their numbers always differ a little, and it&amp;rsquo;s difficult to inspect how they function. Now, you can scan the Mastodon network from your own machine to discover servers and aggregate statistics about Mastodon&amp;rsquo;s usage with &lt;code&gt;tootctl domains crawl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;By running that command from my machine, I was able to gather these figures: &lt;strong&gt;2251&lt;/strong&gt; active Mastodon servers, &lt;strong&gt;1,882,838&lt;/strong&gt; registered users, &lt;strong&gt;172,041&lt;/strong&gt; active users and &lt;strong&gt;21,537&lt;/strong&gt; new sign-ups in the first week of January 2019.&lt;/p&gt;
&lt;p&gt;The other new command is &lt;code&gt;tootctl accounts follow&lt;/code&gt; and it allows you to make the users on your server follow a specified account. As a reminder, users on Mastodon follow their administrator by default, both for important announcements as well as to kickstart their home feed with something when they&amp;rsquo;re new. So that command is useful in those rare cases where the administrator needs to change their account.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To learn more about a &lt;code&gt;tootctl&lt;/code&gt; command, append &lt;code&gt;--help&lt;/code&gt; to it, for example: &lt;code&gt;tootctl domains crawl --help&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is far from everything included in the release&amp;ndash;there are many smaller improvements, like CSV export for lists and domain blocks, volume sliders for videos, ability to follow multiple hashtags from the same column, improved emoji support, better defences against spammers with MX checks, and more.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Contributors to this release:&lt;/strong&gt; &lt;a href="https://github.com/0xflotus"&gt;0xflotus&lt;/a&gt;, &lt;a href="https://github.com/Aditoo17"&gt;Aditoo17&lt;/a&gt;, &lt;a href="https://github.com/ariasuni"&gt;ariasuni&lt;/a&gt;, &lt;a href="https://github.com/ashleyhull-versent"&gt;ashleyhull-versent&lt;/a&gt;, &lt;a href="https://github.com/BenLubar"&gt;BenLubar&lt;/a&gt;, &lt;a href="https://github.com/chr-1x"&gt;chr-1x&lt;/a&gt;, &lt;a href="https://github.com/Esteth"&gt;Esteth&lt;/a&gt;, &lt;a href="https://github.com/fwenzel"&gt;fwenzel&lt;/a&gt;, &lt;a href="https://github.com/Gargron"&gt;Gargron&lt;/a&gt;, &lt;a href="https://github.com/hinaloe"&gt;hinaloe&lt;/a&gt;, &lt;a href="https://github.com/jomo"&gt;jomo&lt;/a&gt;, &lt;a href="https://github.com/kedamaDQ"&gt;kedamaDQ&lt;/a&gt;, &lt;a href="https://github.com/Kjwon15"&gt;Kjwon15&lt;/a&gt;, &lt;a href="https://github.com/m4sk1n"&gt;m4sk1n&lt;/a&gt;, &lt;a href="https://github.com/mayaeh"&gt;mayaeh&lt;/a&gt;, &lt;a href="https://github.com/mbugowski"&gt;mbugowski&lt;/a&gt;, &lt;a href="https://github.com/moritzheiber"&gt;moritzheiber&lt;/a&gt;, &lt;a href="https://github.com/noellabo"&gt;noellabo&lt;/a&gt;, &lt;a href="https://github.com/nolanlawson"&gt;nolanlawson&lt;/a&gt;, &lt;a href="https://github.com/pawelngei"&gt;pawelngei&lt;/a&gt;, &lt;a href="https://github.com/pointlessone"&gt;pointlessone&lt;/a&gt;, &lt;a href="https://github.com/Quenty31"&gt;Quenty31&lt;/a&gt;, &lt;a href="https://github.com/remram44"&gt;remram44&lt;/a&gt;, &lt;a href="https://github.com/renatolond"&gt;renatolond&lt;/a&gt;, &lt;a href="https://github.com/Reverite"&gt;Reverite&lt;/a&gt;, &lt;a href="https://github.com/shrft"&gt;shrft&lt;/a&gt;, &lt;a href="https://github.com/Sir-Boops"&gt;Sir-Boops&lt;/a&gt;, &lt;a href="https://github.com/sumdog"&gt;sumdog&lt;/a&gt;, &lt;a href="https://github.com/tachyons"&gt;tachyons&lt;/a&gt;, &lt;a href="https://github.com/ThibG"&gt;ThibG&lt;/a&gt;, &lt;a href="https://github.com/tmm576"&gt;tmm576&lt;/a&gt;, &lt;a href="https://github.com/ykzts"&gt;ykzts&lt;/a&gt;, &lt;a href="https://github.com/ysksn"&gt;ysksn&lt;/a&gt;, &lt;a href="https://github.com/yukimochi"&gt;yukimochi&lt;/a&gt;, &lt;a href="https://github.com/zunda"&gt;zunda&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translators for this release:&lt;/strong&gt; adrianbblk, Alix D. R., Antonis, avndp, azenet, Branko Kokanovic, Burekz Finezt, ButterflyOfFire, carl morris, codl, Daniel, Eirworks, Enol P., Ivan Pleva, Jaz-Michael King, Jeong Arm, jeroenpraat, koyu, Kristijan Tkalec, Kumasun Morino, lilo, Lorem Ipsum, Marcin Mikołajczak, Marek Ľach, Masoud Abkenar, mayaeh, Muhammad Nur Hidayat (MNH48), Mélanie Chauvel, osapon, Osoitz, Quenti2, Quentí, Ranjith Tellakula, Rasmus Sæderup, Renato &amp;ldquo;Lond&amp;rdquo; Cerqueira, rscmbbng, spla, Vanege, Xose M., 小鳥遊まりあ&lt;/p&gt;
&lt;p&gt;As always, huge thanks to everyone who contributed to this release, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors the project&lt;/a&gt; on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;h3 id="resources"&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.7.0"&gt;Full changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.joinmastodon.org/usage/basics/"&gt;User documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Why does decentralization matter?</title><link>https://blog.joinmastodon.org/2018/12/why-does-decentralization-matter/</link><pubDate>Sun, 30 Dec 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/12/why-does-decentralization-matter/</guid><description>&lt;p&gt;Japanese translation is available: &lt;a href="https://blog.joinmastodon.org/ja/2018/12/why-does-decentralization-matter/"&gt;なぜ脱中央集権（decentralization）が重要なのか？&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I&amp;rsquo;ve been writing about Mastodon for two whole years now, and it occurred to me that at no point did I lay out why anyone should care about decentralization in clear and concise text. I have, of course, explained it in interviews, and you will find some of the arguments here and there in promotional material, but this article should answer that question once and for all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;decentralization&lt;/strong&gt;, noun: The dispersion or distribution of functions and powers; The delegation of power from a central authority to regional and local authorities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fediverse&lt;/strong&gt;, noun: The decentralized social network formed by Mastodon, Pleroma, Misskey and others using the ActivityPub standard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So why is it a big deal? Decentralization upends the social network business model by dramatically reducing operating costs. It absolves a single entity of having to shoulder all operating costs alone. No single server needs to grow beyond its comfort zone and financial capacity. As the entry cost is near zero, an operator of a Mastodon server does not need to seek venture capital, which would pressure them to use large-scale monetization schemes. There is a reason why Facebook executives rejected the $1 per year business model of WhatsApp after its acquisition: It is sustainable and fair, but it does not provide the same unpredictable, potentially unbounded return of investment that makes stock prices go up. Like advertising does.&lt;/p&gt;
&lt;p&gt;If you are Facebook, that&amp;rsquo;s good for you. But if you are a user of Facebook&amp;hellip; The interests of the company and the user are at odds with each other, from which the old adage comes that if you are not paying, you are the product. And it shines through in dark patterns like defaulting to non-chronological feeds (because it&amp;rsquo;s hard to tell if you&amp;rsquo;ve seen everything on the page before, it leads to more scrolling or refreshing, which leads to more ad impressions), sending e-mails about unread notifications that don&amp;rsquo;t actually exist, tracking your browsing behaviour across the internet to find out who you are&amp;hellip;&lt;/p&gt;
&lt;p&gt;Decentralization is biodiversity of the digital world, the hallmark of a healthy ecosystem. A decentralized network like the fediverse allows different user interfaces, different software, different forms of government to co-exist and cooperate. And when some disaster strikes, some will be more adapted to it than others, and survive what a monoculture wouldn&amp;rsquo;t. You don&amp;rsquo;t have to think long for recent examples&amp;ndash;consider the FOSTA/SESTA bill passed in the US, which turned out to be awful for sex workers, and which affected every mainstream social network because they are all based in the US. In Germany, sex work is legal, so why should sex workers in Germany be unable to take part in social media?&lt;/p&gt;
&lt;p&gt;A decentralized network is also more resilient to censorship&amp;ndash;and I do mean the real kind, not the &amp;ldquo;they won&amp;rsquo;t let me post swastikas&amp;rdquo; kind. Some will claim that a large corporation can resist government demands better. But in practice, commercial companies struggle to resist government demands from markets where they want to operate their business. See for example Google&amp;rsquo;s lackluster opposition to censorship in China and Twitter&amp;rsquo;s regular blocks of Turkish activists. The strength of a decentralized network here is in numbers&amp;ndash;some servers will be blocked, some will comply, but not all. And creating new servers is easy.&lt;/p&gt;
&lt;p&gt;Last but not least, decentralization is about fixing power asymmetry. A centralized social media platform has a hierarchical structure where rules and their enforcement, as well as the development and direction of the platform, are decided by the CEO, with the users having close to no ways to disagree. You can&amp;rsquo;t walk away when the platform holds all your friends, contacts and audience. A decentralized network deliberately relinquishes control of the platform owner, by essentially not having one. For example, as the developer of Mastodon, I have only an advisory influence: I can develop new features and publish new releases, but cannot force anyone to upgrade to them if they don&amp;rsquo;t want to; I have no control over any Mastodon server except my own, no more than I have control over any other website on the internet. That means the network is not subject to my whims; it can adapt to situations faster than I can, and it can serve use cases I couldn&amp;rsquo;t have predicted.&lt;/p&gt;
&lt;p&gt;Any alternative social network that rejects decentralization will ultimately struggle with these issues. And if it won&amp;rsquo;t perish like those that tried and failed before it, it will simply become that which it was meant to replace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Digging deeper:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://2018.ar.al/notes/the-nature-of-the-self-in-the-digital-age/"&gt;The nature of the self in the digital age&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Top 30 most shared Mastodon posts in 2018</title><link>https://blog.joinmastodon.org/2018/12/top-30-most-shared-mastodon-posts-in-2018/</link><pubDate>Mon, 24 Dec 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/12/top-30-most-shared-mastodon-posts-in-2018/</guid><description>&lt;p&gt;Inspired by a &lt;a href="https://cybre.space/@somarasu/101297601782617843"&gt;joke post&lt;/a&gt; I decided to go ahead and compile a list of the most shared things on Mastodon in 2018.&lt;/p&gt;
&lt;p&gt;Of course, given the federated nature of the platform, this list may be incomplete, as I can only query information known to the mastodon.social server. I&amp;rsquo;ve also curated the list a little by excluding toots that were asking to be boosted, toots from me and the official Mastodon account, as well as most things that could be considered merely announcements to current users.&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@natecull/100109432395996840/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://computerfairi.es/@troubleMoney/100726877398756251/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://computerfairi.es/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@horrowfide/100594344159519395/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@picklemaddierix/100639571254871391/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://bobadon.rocks/@bobstechsite/100560577910267903/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://bobadon.rocks/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://cybre.space/@witchfynder_finder/100784121145511775/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://cybre.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://cybre.space/@witchfynder_finder/100784121569706737/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://cybre.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.at/@switchingsocial/100464510004807543/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.at/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://cybre.space/@loki/99876246667087352/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://cybre.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@jk/101186227011866623/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://octodon.social/@fraggle/100849901499052069/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://octodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@LoganDice/100658049966815124/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@Trashbang/100648328156979241/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@kellywallace/100563895487198115/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@thomasfuchs/100746756719996532/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@moritzheiber/101257251104478967/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mst3k.interlinked.me/@Elizafox/101144349683197197/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mst3k.interlinked.me/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@wakest/100847199159835367/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mamot.fr/@burgervege/100926926807166120/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mamot.fr/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@bb_almond/100593171315165245/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://scholar.social/@omanreagan/99723766503256517/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://scholar.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@prolezone/100573036474596627/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@hhardy01/99739317870899852/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@senatormeow/100908678269940898/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@kosinus/100493323307547389/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://octodon.social/@Siphonay/100872488841060662/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://octodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@scearley/100796048305179393/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://cybre.space/@loki/100811167404306878/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://cybre.space/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.technology/@bclindner/101191343584041398/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.technology/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@icrm/100653030066573506/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;p&gt;Happy holidays!&lt;/p&gt;</description></item><item><title>From Tumblr to Mastodon</title><link>https://blog.joinmastodon.org/2018/11/from-tumblr-to-mastodon/</link><pubDate>Mon, 19 Nov 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/11/from-tumblr-to-mastodon/</guid><description>&lt;p&gt;&lt;a href="https://www.theverge.com/2018/11/17/18100156/tumblr-apple-app-store-ios-missing"&gt;After Apple has delisted the Tumblr app from its store&lt;/a&gt; citing a large amount of adult content on the site, artists and other creators are reporting having their blogs deleted, and are now looking for alternatives. Before choosing another commercial solution like Twitter, &lt;strong&gt;let me outline why Mastodon is the better choice&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;1. Mastodon has a flexible approach to adult content. Unlike Tumblr and Twitter, your entire account isn&amp;rsquo;t either safe-for-work or not-safe-for-work. Each individual post can be marked as not-safe-for-work, with the media attachments conveniently hidden behind a spoiler until you choose to view them. You as a viewer can, of course, opt in to skip the spoilers automatically. Bonus round: You don&amp;rsquo;t need to be logged in to view sensitive content.&lt;/p&gt;
&lt;p&gt;2. Artists have more control over how their art is displayed. Different screens and apps may show thumbnails in varying sizes, so to ensure that the thumbnails make sense and show the most appealing parts of the picture, you can set a focal point on each uploaded image. No more unfortunate crotch thumbnails! The thumbnails also have a lot less quality loss compared to e.g. Twitter.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2018/11/from-tumblr-to-mastodon/screenshot-fields.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;3. Mastodon offers extensive customization options for your profile. Along with the expected custom display name, avatar, header image and &amp;ldquo;about me&amp;rdquo; text, you can set up to 5 featured posts at the top, and up to 4 custom link or text blurbs. For example, a link to your Patreon, your commission status and your preferred pronouns. But that&amp;rsquo;s not all &amp;ndash; you can promote your friends or accounts you&amp;rsquo;re a fan of by endorsing them so they are featured on your profile in a random rotation.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.joinmastodon.org/2018/11/from-tumblr-to-mastodon/screenshot-featured.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;4. Mastodon is decentralized. Why does this matter? Because if you host your own Mastodon server (as you easily can, it&amp;rsquo;s &lt;a href="https://github.com/tootsuite/mastodon"&gt;open source&lt;/a&gt; and &lt;a href="https://masto.host"&gt;there&amp;rsquo;s even hosting providers specifically for it&lt;/a&gt;!), literally nobody except yourself has control over your posts. No more getting deleted off Tumblr. Of course, not everybody is interested in running their own server, but it still matters &amp;ndash; you can use a server that somebody you personally know runs, or that a community that you trust runs.&lt;/p&gt;
&lt;p&gt;5. Mastodon is not commercial. It doesn&amp;rsquo;t track your every move. It doesn&amp;rsquo;t interrupt your home feed with ads and promoted posts. It&amp;rsquo;s just you, and people you choose to follow. Because of its decentralized nature, individual servers are smaller and cheaper than Twitter or Tumblr as a whole, and can be maintained with earnest crowdfunding rather than advertising/marketing schemes.&lt;/p&gt;
&lt;p&gt;And last but not least, Mastodon is big, and getting larger, approaching an audience of 2 million users spread over 2,000 servers. &lt;strong&gt;If that sounds convincing to you, &lt;a href="https://joinmastodon.org/#getting-started"&gt;navigate to the server picker&lt;/a&gt; and select the &amp;ldquo;I am an adult content creator&amp;rdquo; option to see a list of servers you could sign up on.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;More resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.joinmastodon.org/2018/08/mastodon-quick-start-guide/"&gt;Mastodon quick start guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.joinmastodon.org/2018/06/how-to-become-a-successful-artist-on-mastodon/"&gt;How to become a successful artist on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/"&gt;Why ActivityPub is the future&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon 2.6 released</title><link>https://blog.joinmastodon.org/2018/10/mastodon-2.6-released/</link><pubDate>Wed, 31 Oct 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/10/mastodon-2.6-released/</guid><description>&lt;p&gt;After more than a month of work, I am happy to announce the new version of Mastodon, with improved visuals, a new way to assert your identity, and a lot of bug fixes.&lt;!-- more --&gt;&lt;/p&gt;
&lt;h3 id="verification"&gt;Verification&lt;/h3&gt;
&lt;p&gt;Verifying identity in a network with no central authority is not straightforward. But there is a way. It requires a change in mindset, though. Twitter teaches us that people who have a checkmark next to their name are real and important, and those that don&amp;rsquo;t are not. That delegates a lot of the decision making to Twitter, the authority. Without a central authority, that decision making cannot be delegated. So, how does identity verification work on Mastodon?&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="screenshot-verified.jpg" class="rounded-lg shadow-lg"
 alt="This account is definitely run by whoever owns joinmastodon.org!"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;This account is definitely run by whoever owns joinmastodon.org!&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The answer is links. If you have a personal website called johndoe.com, and you link from your site to your Mastodon profile, then people know you are the real John Doe &amp;ndash; the link appears verified on your profile. This option is accessible to everyone, not just celebrities. Having a verified link does not confer any special features like it does on Twitter. All safety and convenience features are always available to everyone. Some people don&amp;rsquo;t need or want to have a recognizable and verified identity, and that is valid, too.&lt;/p&gt;
&lt;p&gt;Of course the caveat is that people have to trust the linked website to be able to infer the identity. It&amp;rsquo;s certainly a more useful feature when you have a recognizable website. However, it does also work with Twitter profiles, so you can at least confirm that you are the same person as you are on Twitter, if that&amp;rsquo;s something you need.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Check the &amp;ldquo;Edit profile&amp;rdquo; page for instructions on how to do that!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="direct-messages-remaster"&gt;Direct messages remaster&lt;/h3&gt;
&lt;p&gt;The direct messages functionality of Mastodon has been remastered. You can now browse your direct messages grouped by conversations with specific people and conversations you haven&amp;rsquo;t opened will be highlighted, just like you would expect from other services. This should make keeping up with important messages easier.&lt;/p&gt;
&lt;h3 id="in-stream-link-previews"&gt;In-stream link previews&lt;/h3&gt;
&lt;p&gt;This has been requested for a long time &amp;ndash; &lt;strong&gt;link previews and interactive players&lt;/strong&gt; from sites like YouTube and Vimeo &lt;strong&gt;will now appear in-stream&lt;/strong&gt;, and not only in detailed view. Interactive players have a play button which loads the actual content &amp;ndash; no third-party scripts are loaded until you press it, so there is no privacy cost to the convenience.&lt;/p&gt;
&lt;h3 id="reports-grouping-and-blocking"&gt;Reports grouping and blocking&lt;/h3&gt;
&lt;p&gt;For server administrators and moderators, the reporting system has been improved. &lt;strong&gt;Reports are now grouped by the target account&lt;/strong&gt; visually, so even many reports about one person do not obfuscate others. &lt;strong&gt;Reports originating from a specific domain can be blocked&lt;/strong&gt; if they are impractical. All staff members have &lt;strong&gt;a way to opt out of notification e-mails about reports&lt;/strong&gt;. This should greatly reduce the effects of mass-reporting, so moderators can focus on the quality of reports over their quantity.&lt;/p&gt;
&lt;h3 id="command-line-tools"&gt;Command-line tools&lt;/h3&gt;
&lt;p&gt;The command-line interface for Mastodon, &lt;code&gt;tootctl&lt;/code&gt; (as in &amp;ldquo;toot control&amp;rdquo;), has been expanded. Many commands were added for managing accounts, generating account backups, and performing various maintenance tasks. For example, to give someone moderator privileges from the command line, you could do:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin/tootctl accounts modify alice93 --role moderator
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To give a username that was previously used by someone who deleted their account to a new person, with a randomly generated password:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin/tootctl accounts create alice93 --email new@email.com --reattach
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To queue up a backup for someone&amp;rsquo;s account and have them receive a link to the download via e-mail:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin/tootctl accounts backup alice93
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You get the idea! Everything except &lt;code&gt;mastodon:setup&lt;/code&gt; has been moved from the &lt;code&gt;rake&lt;/code&gt; interface to the &lt;code&gt;tootctl&lt;/code&gt; interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Use &lt;code&gt;bin/tootctl --help&lt;/code&gt; to learn more about what it can do!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;As always, huge thanks to &lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.6.0"&gt;everyone who contributed to this release&lt;/a&gt;, to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors&lt;/a&gt; the project on &lt;a href="https://patreon.com/mastodon"&gt;Patreon&lt;/a&gt;, and to everyone who uses the network! 🐘&lt;/p&gt;
&lt;h3 id="resources"&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.6.0"&gt;Full changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.joinmastodon.org/usage/basics/"&gt;User documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mastodon's 2 Year Anniversary</title><link>https://blog.joinmastodon.org/2018/10/mastodons-2-year-anniversary/</link><pubDate>Sun, 14 Oct 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/10/mastodons-2-year-anniversary/</guid><description>&lt;p&gt;Mastodon was first announced to the public through Hacker News, a link aggregator site for programmers, on October 6, 2016. Now we&amp;rsquo;re celebrating the &lt;strong&gt;2 year anniversary&lt;/strong&gt;! 🎉&lt;/p&gt;
&lt;div style="margin-bottom: 26px"&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jh5buGkQVQI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="network-growth"&gt;Network growth&lt;/h3&gt;
&lt;p&gt;From &lt;strong&gt;45&lt;/strong&gt; registered users on mastodon.social, the only Mastodon server at the time, the network grew to &lt;strong&gt;1,627,557&lt;/strong&gt; registered users on &lt;strong&gt;3,460&lt;/strong&gt; servers. That&amp;rsquo;s not counting people on non-Mastodon servers that are compatible with Mastodon via ActivityPub!&lt;/p&gt;
&lt;p&gt;There are a lot of small servers: The median user number per server is 8 people. The biggest server hosts 415,941 accounts. The 3 largest servers combined host 52% of the network&amp;rsquo;s users, the 25 largest servers host 77% of all users &lt;a href="http://sp3r4z.fr/mastodon/"&gt;*&lt;/a&gt;. This is natural as the largest servers are more known and therefore attract a lot of new people. However, for many people who stick around, they act as gateways, wherein once they learn more about Mastodon, they switch to a different, usually smaller server.&lt;/p&gt;
&lt;p&gt;The oldest servers that are still around today are mastodon.social, awoo.space, social.tchncs.de and icosahedron.website.&lt;/p&gt;
&lt;p&gt;Most exciting new server growth events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In April 2017, mstdn.jp was created by nullkal in his apartment. The first Japanese server of Mastodon went viral and saw a growth of tens of thousands accounts within a few days, and served as a catalyst for Mastodon&amp;rsquo;s popularity in Japan.&lt;/li&gt;
&lt;li&gt;In May 2018, after the SESTA/FOSTA laws were passed in the US and forced many sex workers into exile from mainstream social media websites, Assembly Four founded switter.at, a Mastodon server for sex workers. It grew rapidly towards a hundred thousand accounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To this day, mastodon.social, mstdn.jp, switter.at, pawoo.net and friends.nico are the largest servers.&lt;/p&gt;
&lt;h3 id="development-milestones"&gt;Development milestones&lt;/h3&gt;
&lt;p&gt;From &lt;strong&gt;332&lt;/strong&gt; commits by a single developer, the GitHub repository grew to over &lt;strong&gt;6,140&lt;/strong&gt; commits by &lt;strong&gt;513&lt;/strong&gt; people. Since the start of development in March 2016, &lt;strong&gt;102&lt;/strong&gt; versions of Mastodon have been released, beginning with &lt;strong&gt;v0.1.0&lt;/strong&gt; up to the latest &lt;strong&gt;v2.5.2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4,343&lt;/strong&gt; pull requests were merged, and &lt;strong&gt;2,851&lt;/strong&gt; issues were closed.&lt;/p&gt;
&lt;p&gt;This is what Mastodon looked like in October 2016:&lt;/p&gt;
&lt;div style="margin-bottom: 26px"&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YO1jQ8_rAMU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Here is a time table of Mastodon&amp;rsquo;s most notable features, that is, features that Mastodon is most known for today:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;October 2016&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The interface becomes responsive for mobile screens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;November 2016&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hashtags are implemented&lt;/li&gt;
&lt;li&gt;Search for accounts is implemented&lt;/li&gt;
&lt;li&gt;Notifications&lt;/li&gt;
&lt;li&gt;Marking media as sensitive is added&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;unlisted&amp;rdquo; visibility setting is added&lt;/li&gt;
&lt;li&gt;The publish button is renamed to &amp;ldquo;toot&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;December 2016&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The reblog button is renamed to &amp;ldquo;boost&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Public timeline now excludes boosts and replies&lt;/li&gt;
&lt;li&gt;First admin interface is added&lt;/li&gt;
&lt;li&gt;Locked accounts are implemented&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;private&amp;rdquo; visibility setting is added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;January 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Viewing one&amp;rsquo;s own favourites is implemented&lt;/li&gt;
&lt;li&gt;Remote follow dialog is added&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;boop&amp;rdquo; sound for notification appears&lt;/li&gt;
&lt;li&gt;Content warnings are implemented&lt;/li&gt;
&lt;li&gt;Two-factor authentication is added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;February 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Streaming API appears&lt;/li&gt;
&lt;li&gt;Reporting accounts and toots is implemented&lt;/li&gt;
&lt;li&gt;The public timeline is split into &amp;ldquo;local&amp;rdquo; and &amp;ldquo;whole known network&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;March 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An emoji picker is added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;April 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;direct&amp;rdquo; visibility setting is added&lt;/li&gt;
&lt;li&gt;The coyote stops rotating as new GIF autoplay preferences are added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;June 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The columns in the web interface can be moved, added and removed&lt;/li&gt;
&lt;li&gt;Deleting own account is implemented&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;August 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Mastodon logo is updated&lt;/li&gt;
&lt;li&gt;Web Push is implemented, allowing the web interface to receive push notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;September 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The entire Mastodon network is successfully upgraded from OStatus to ActivityPub&lt;/li&gt;
&lt;li&gt;Pinning toots is implemented&lt;/li&gt;
&lt;li&gt;MySpace Tom lives on as Mastodon begins making new users follow their admin by default&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;October 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Custom emoji are implemented&lt;/li&gt;
&lt;li&gt;Alternative text for media attachments is added&lt;/li&gt;
&lt;li&gt;Hotkeys in the web interface are implemented&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;December 2017&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lists are implemented&lt;/li&gt;
&lt;li&gt;Invite system is added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;January 2018&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The e-mails sent by Mastodon become pretty&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;March 2018&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search for toots is implemented&lt;/li&gt;
&lt;li&gt;Account backup download is implemented&lt;/li&gt;
&lt;li&gt;Focal point selection for thumbnails is implemented&lt;/li&gt;
&lt;li&gt;The frontpage is redesigned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;May 2018&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Profile metadata can now be customized&lt;/li&gt;
&lt;li&gt;Up-to-date privacy policy is included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;September 2018&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for federation relays to improve content discovery is added&lt;/li&gt;
&lt;li&gt;Public pages of profiles and toots are redesigned&lt;/li&gt;
&lt;li&gt;Featuring friends on public profile is implemented&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="press-coverage"&gt;Press coverage&lt;/h3&gt;
&lt;p&gt;In the two year span, Mastodon was covered by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/2018/03/28/technology/social-media-privacy.html"&gt;The New York Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.washingtonpost.com/news/the-switch/wp/2018/03/23/the-new-technology-that-aspires-to-deletefacebook-for-good/?noredirect=on&amp;amp;utm_term=.15c4dda140a9"&gt;The Washington Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.esquire.com/lifestyle/a22777589/what-is-mastodon-twitter-platform/"&gt;Esquire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.theverge.com/2017/4/4/15177856/mastodon-social-network-twitter-clone"&gt;The Verge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://motherboard.vice.com/en_us/article/mastodon-is-like-twitter-without-nazis-so-why-are-we-not-using-it"&gt;Motherboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wired.com/2017/04/like-twitter-hate-trolls-try-mastodon/"&gt;Wired&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npr.org/sections/thetwo-way/2018/05/01/607361849/as-facebook-shows-its-flaws-what-might-a-better-social-network-look-like"&gt;NPR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://theoutline.com/post/2689/mastodon-makes-the-internet-feel-like-home-again"&gt;The Outline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.autostraddle.com/mastodon-101-a-queer-friendly-social-network-youre-gonna-like-a-lot-390948/"&gt;Autostraddle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forbes.com/sites/paularmstrongtech/2017/04/09/mastodon-is-what-disruption-looks-like-right-before-it-happens/"&gt;Forbes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was interviewed on three different podcasts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://softwareengineeringdaily.com/2018/04/12/mastodon-federated-social-network-with-eugen-rochko/"&gt;Software Engineering Daily&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slate.com/articles/podcasts/if_then/2018/08/mastodon_founder_eugen_rochko_is_building_a_nazi_free_alternative_to_twitter.html"&gt;If Then&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://changelog.com/podcast/315"&gt;The Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One piece of coverage stands out particularly as the source of a running joke on Mastodon. Lance Ulanoff from Mashable opened his &lt;a href="https://mashable.com/2017/04/05/mastodon-wont-survive/"&gt;April 2017 article&lt;/a&gt; &amp;ldquo;Six Reasons Mastodon Won&amp;rsquo;t Survive&amp;rdquo; with the words &amp;ldquo;William Shatner couldn&amp;rsquo;t find me on Mastodon. This was a problem.&amp;rdquo; Since then, Mastodon was known as the Shatner-free space, where you are safe to hide from his gaze.&lt;/p&gt;
&lt;p&gt;Of course, that article was wrong on many accounts, and severely underestimated Mastodon&amp;rsquo;s survivability. There were many opinion pieces titled things like &amp;ldquo;Mastodon is dead in the water&amp;rdquo; predicting its timely demise. In the end, Mastodon out-survived App.net &lt;em&gt;and&lt;/em&gt; Google+, a multi-million dollar project.&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@jk/99032083793694002/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;h3 id="other"&gt;Other&lt;/h3&gt;
&lt;p&gt;Since beginning as a single repository on GitHub, Mastodon has got:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://joinmastodon.org"&gt;A beautiful, dedicated homepage describing the project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.joinmastodon.org"&gt;A dedicated blog, the one you are reading right now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.joinmastodon.org"&gt;A new documentation website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://source.joinmastodon.org"&gt;A GitLab server hosting many orbiting code repositories&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fazit"&gt;Fazit&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m very happy with Mastodon&amp;rsquo;s accomplishments. Overseeing such a large project has its ups and downs, as it&amp;rsquo;s impossible to keep everyone happy all the time when people have conflicting desires. Regardless, I consider these to be the two best years of my life, as work on Mastodon is incredibly fulfilling and interacting with all the interesting people on the platform is very fun.&lt;/p&gt;
&lt;p&gt;Would I have done something differently if I was starting from scratch now? Mostly, no. I still receive comments about the name &amp;ldquo;Mastodon&amp;rdquo; not being suitable, or &amp;ldquo;toot&amp;rdquo; being too silly. I wouldn&amp;rsquo;t change it. I think there is nothing wrong with being less serious, and if it alienates more corporate-minded users, that&amp;rsquo;s fine. I don&amp;rsquo;t wake up every day wishing to interact with my favourite brand.&lt;/p&gt;
&lt;p&gt;As for the future, development continues: The v2.6.0 version of Mastodon is currently in the works, containing many quality of life improvements, bug fixes, improved administrative tools and a decentralized version of identity verification.&lt;/p&gt;
&lt;p&gt;Mastodon has proved itself sustainable and has accomplished a lot in taking a foothold in mainstream consciousness. With more and more people become disillusioned with the tech giants, Mastodon will become ever more appealing. Let&amp;rsquo;s get to ten million users next.&lt;/p&gt;</description></item><item><title>Mastodon 2.5 released</title><link>https://blog.joinmastodon.org/2018/09/mastodon-2.5-released/</link><pubDate>Wed, 05 Sep 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/09/mastodon-2.5-released/</guid><description>&lt;p&gt;Mastodon 2.5 is the 100th released version of Mastodon since the project&amp;rsquo;s inception almost 2 years ago.&lt;!-- more --&gt; It brings a variety of improvements to the software, the full list of which is &lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.5.0"&gt;available in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="screenshot-profile.png" class="rounded-lg shadow-lg"
 alt="Public profile page"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Public profile page&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;The public areas of the web interface have been redesigned&lt;/strong&gt;. The color scheme and design is now more consistent with the logged-in interface. The new profile layout makes better use of space for bio text and increases the value of header images. Prominent follow buttons ensure that even people new to Mastodon understand quickly what they can do on it.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s not all: The public pages now also display &lt;strong&gt;reply, favourite and boost buttons that open a remote interaction dialog&lt;/strong&gt; that can take you back to your home server where you can actually interact with the toot from your account. That&amp;rsquo;s a lot simpler than having to copy &amp;amp; paste the toot permalink into your server&amp;rsquo;s search bar!&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="screenshot-remote-interaction.png" class="rounded-lg shadow-lg"
 alt="Remote interaction dialog"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Remote interaction dialog&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The other thing on the new profiles: You can choose to feature some of the people you follow on your profile, to be displayed in random order as a sort of recommendation to anyone who is visiting it. Your favourite cat owners, important voices or your associates, it&amp;rsquo;s up to you. Like the MySpace Top 8 without the &amp;ldquo;top&amp;rdquo; and the &amp;ldquo;8&amp;rdquo;, or even more like the WordPress blogroll.&lt;/p&gt;
&lt;p&gt;Some of the smaller changes: The number of replies to toots is now stored and displayed so you can know straight away if a question you see has already been answered or if a lively discussion is happening. Mastodon now accepts MOV videos from iOS, and larger video files in general, and is smarter about resizing images.&lt;/p&gt;
&lt;h3 id="administration-and-moderation"&gt;Administration and moderation&lt;/h3&gt;
&lt;p&gt;For those who moderate Mastodon servers, a &lt;strong&gt;new dashboard&lt;/strong&gt; provides an overview of important weekly numbers such as new sign-ups, user activity and liveliness. The &lt;strong&gt;number of e-mail notifications generated from reports has been reduced&lt;/strong&gt;: reports for the same person do not generate a notification if one of the reports is currently unresolved. Additionally, you can now disable report notifications for yourself.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="screenshot-dashboard.png" class="rounded-lg shadow-lg"
 alt="Admin dashboard"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Admin dashboard&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Suspensions in Mastodon are a harsh measure: You no longer have to fear misclicking and suspending the wrong person with a &lt;strong&gt;new confirmation screen&lt;/strong&gt; that tells you how many toots and followers the suspension will affect before asking you to re-type the name of the account to make sure you didn&amp;rsquo;t click on the wrong one.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s not all: The &lt;strong&gt;temporary account lock-out&lt;/strong&gt; function has been made available to moderators as a softer, and completely reversible alternative to suspensions.&lt;/p&gt;
&lt;h3 id="deployment-and-scaling"&gt;Deployment and scaling&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;For those who run Mastodon servers&lt;/strong&gt;, the database schema has been adjusted to &lt;strong&gt;reduce disk write operations and CPU load of PostgreSQL&lt;/strong&gt;. And for those who need to scale big, &lt;strong&gt;support for read-replicas&lt;/strong&gt; is now baked into the software: it&amp;rsquo;s &lt;a href="https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Tuning.md#using-read-replicas"&gt;just a matter of changing configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;new command-line interface&lt;/strong&gt; is supposed to make working with Mastodon from the terminal easier, in place of the clunky rake tasks system. For example, there is a new way to import a pack of custom emojis. Let&amp;rsquo;s say we have an archive stored under &lt;code&gt;/home/alice/Downloads/hackerman.tar.gz&lt;/code&gt; with the hackerman set of letter emojis saved as PNG files like &lt;code&gt;a.png&lt;/code&gt;, &lt;code&gt;b.png&lt;/code&gt; and so on, it could be imported with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bin/tootctl emoji import &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --unlisted &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --prefix hacker_ &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /home/alice/Downloads/hackerman.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will create custom emojis in Mastodon with shortcodes like &lt;code&gt;:hacker_a:&lt;/code&gt; that will not clutter up the emoji picker but will be autocompleted.&lt;/p&gt;
&lt;iframe src="https://knzk.me/@Knzk/100674210459241787/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://knzk.me/embed.js" async="async"&gt;&lt;/script&gt;

&lt;h3 id="federation-relays"&gt;Federation relays&lt;/h3&gt;
&lt;p&gt;If your Mastodon server does not have enough activity to be interesting to new users, that chicken-and-egg problem can now be solved by subscribing to a so-called &lt;strong&gt;federation relay&lt;/strong&gt;. Federation relays are separate servers that act as a, well, &lt;em&gt;relay&lt;/em&gt; between participating Mastodon servers, that is, every participating server receives every public toot from every other participating server.&lt;/p&gt;
&lt;p&gt;It has to be mentioned that the core design of Mastodon where a server receives only toots from users it follows, rather than all toots from any one server, is more scalable long-term. However, servers that don&amp;rsquo;t yet follow a lot of people can often feel like ghost towns, and federation relays fix that.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;To get started with Mastodon, you can &lt;a href="https://mastodon.cloud/about"&gt;sign up for free here&lt;/a&gt; or &lt;a href="https://mstdn.io/about"&gt;here&lt;/a&gt;, or dive into the deep end of choice &lt;a href="https://joinmastodon.org/#getting-started"&gt;by browsing the list of servers here&lt;/a&gt;. Or, &lt;a href="https://bridge.joinmastodon.org"&gt;use the bridge tool to find where your Twitter friends are&lt;/a&gt; and sign up there.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Huge thanks to everyone who contributed to the recent releases (&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.5.0"&gt;see the full changelogs for accreditation&lt;/a&gt;), to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors&lt;/a&gt; the project, and to everyone who makes the network worth using by being awesome tooters! 🐘&lt;/p&gt;</description></item><item><title>Mastodon quick start guide</title><link>https://blog.joinmastodon.org/2018/08/mastodon-quick-start-guide/</link><pubDate>Mon, 27 Aug 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/08/mastodon-quick-start-guide/</guid><description>&lt;p&gt;Polish translation is available: &lt;a href="https://blog.joinmastodon.org/pl/2018/08/przewodnik-po-mastodonie/"&gt;Przewodnik po Mastodonie&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So you want to join Mastodon and get tooting. Great! Here&amp;rsquo;s how to dive straight in.&lt;/p&gt;
&lt;h3 id="lets-start-with-the-basics-what-is-this"&gt;Let&amp;rsquo;s start with the basics. What is this?&lt;/h3&gt;
&lt;p&gt;Mastodon is a microblogging platform akin to others you may have seen, such as Twitter, but instead of being centralised it is a federated network which operates in a similar way to email.&lt;/p&gt;
&lt;p&gt;Like email, you choose your server and whether it&amp;rsquo;s GMail, Outlook, iCloud, wherever you sign up you know you&amp;rsquo;ll be able to email everyone you need to so long as you know their address.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The word &amp;ldquo;instance&amp;rdquo; is often used on Mastodon as a synonym of server.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This means there&amp;rsquo;s no big uncaring company running it all, no shareholders, no central control, none of the targeted advertising we&amp;rsquo;re all fed up with, just a bunch of people sharing the things they want to share with each other.&lt;/p&gt;
&lt;h3 id="where-do-i-sign-up"&gt;Where do I sign up?&lt;/h3&gt;
&lt;p&gt;The first thing you have to do is &lt;strong&gt;choose your server&lt;/strong&gt;. This is an extra step compared to sites like Twitter or Tumblr, but isn&amp;rsquo;t as difficult as it may seem.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Like with email, your identity is hosted by the server you sign up on. So for example, I joined mastodon.social so to mention me you can type @nico@mastodon.social in your post.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If what you want to talk about most fits into a clear category (maybe it&amp;rsquo;s video games or art or queer life or coding or fiction or whatever) then it might be worth making your first server one where that will primarily host that sort of content &amp;ndash; it&amp;rsquo;ll be easier to make connections and find like-minded folk. Some consider your server to be like a neighbourhood or a venue where the general chatter can have a specific focus.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You have the ability to view all public local posts that have been made by people on your server in the so-called &amp;ldquo;local timeline&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you aren&amp;rsquo;t here to stick mainly to one topic, you&amp;rsquo;ll likely want to pick a server that caters to general interests. Either way, there&amp;rsquo;s a helpful server picker tool on &lt;a href="https://joinmastodon.org/#getting-started"&gt;joinmastodon.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t panic!&lt;/strong&gt; You&amp;rsquo;ll be able to chatter to people on other servers, no matter which one you choose. Remember, this is like email and you can still email your mum on her ancient Yahoo account from your GMail, for example.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The word &amp;ldquo;fediverse&amp;rdquo; (federated universe) refers to the network of all Mastodon servers &lt;a href="https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/"&gt;and other projects&lt;/a&gt;, users of which are able to talk to each other seamlessly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In time, you might find yourself wanting an account on another server, whether that means moving your primary account or having a secondary account for a certain aspect of yourself. This is normal behaviour on the fediverse and nothing to worry about.&lt;/p&gt;
&lt;h3 id="knowing-your-server"&gt;Knowing your server&lt;/h3&gt;
&lt;p&gt;Take a moment before registering to check out the rules of your chosen server and make sure they are compatible with how you want to be tooting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Posts on Mastodon are called &amp;ldquo;toots&amp;rdquo;, because that&amp;rsquo;s the sound an elephant makes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Under the sign up form you will see a link to the rules page. It is likewise linked from the &amp;ldquo;Learn more&amp;rdquo; button under &amp;ldquo;Administered by&amp;rdquo;; on other pages, the rules are linked in the footer as simply &amp;ldquo;About&amp;rdquo;. You could also just enter the correct URL into the address bar of your browser directly as it always follows a format like &lt;code&gt;https://mastodon.social/about/more&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The rules page also tells you who the owner/administrator of the server is. Most servers set you up following the admin when you sign up, kind of like a modern take on MySpace Tom. This is great, it means you know who to ask if you run into problems and you can receive server-specific announcements (like when the software is being upgraded) and in general it&amp;rsquo;s great to know who runs the server you&amp;rsquo;re on.&lt;/p&gt;
&lt;p&gt;Admins are super friendly people who are usually running the server out of their own pocket so it&amp;rsquo;s good to get to know them like you would a landlord. Many accept donations to cover the running costs and if you&amp;rsquo;re able to contribute then it&amp;rsquo;s always appreciated.&lt;/p&gt;
&lt;h3 id="i-think-i-found-my-new-home"&gt;I think I found my new home!&lt;/h3&gt;
&lt;p&gt;Head to the homepage of your server and choose your username and password in the sign up form. You&amp;rsquo;ll need an email address to register, which you will be asked to confirm before being able to log in.&lt;/p&gt;
&lt;p&gt;Next thing to do is upload your profile picture, give the settings page a good once-over (and do come back to it when you&amp;rsquo;ve been on Mastodon a week or so just to make any tweaks that might help your experience) and get ready to introduce yourself.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Some interesting settings worth checking are: two-factor authentication to improve your account&amp;rsquo;s security; GIF autoplay which is turned off by default; the language you intend to post in; and the languages you prefer seeing when viewing the local, federated, and hashtag timelines (by default, you see all languages).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hashtags are a really important thing on Mastodon. In fact, they are the &lt;a href="https://blog.joinmastodon.org/2018/07/cage-the-mastodon/"&gt;only part of the content of toots that is searchable&lt;/a&gt;. So if you want to be found by people who are looking for toots about photography it&amp;rsquo;s best to include #photography.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For multiple word hashtags, please use camel case #LikeThisGoodHashtag instead of #likethisbadhashtag for accessibility reasons.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So for your first toot, a great idea is to post a short #introduction giving some information about yourself and what your interests are and what you&amp;rsquo;ll be talking about on Mastodon. That&amp;rsquo;s also a great hashtag to search, you&amp;rsquo;ll find lots of other people new to the network and many will care about the things you do.&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Altruest/99738664857313748/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@laches1sm/100530830792499728/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.social/@dorigo/100578566888115867/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;h3 id="a-quick-tour-of-the-web-interface"&gt;A quick tour of the web interface&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mastodon offers &lt;a href="https://joinmastodon.org/apps"&gt;many apps&lt;/a&gt;, both for mobile phones and for the browser; you are not locked into using the standard interface. For a simplified experience, try out &lt;a href="https://pinafore.social"&gt;Pinafore&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
 &lt;img src="default-interface.png" class="rounded-lg shadow-lg"
 alt="A schematic of the default user interface"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;A schematic of the default user interface&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The standard Mastodon interface has multiple columns rather than a single feed. You can move or remove these at your leisure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Home&lt;/strong&gt; is all the toots in chronological order of the people you&amp;rsquo;re following. It includes the toots of people on your server and on other servers, all that matters is that it&amp;rsquo;s people you follow. Some people like to disable boosts in this column so they just see what their follows themselves say. That option is there if you click the settings button on the top right of the column.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Boost&amp;rdquo; (as in &amp;ldquo;signal boost&amp;rdquo; or &amp;ldquo;rocket boost&amp;rdquo;) is a synonym of &amp;ldquo;reblog&amp;rdquo; or &amp;ldquo;retweet&amp;rdquo; in Mastodon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Notifications&lt;/strong&gt; does what it says on the tin. Again, this is across the fediverse. The settings button (top right) has a range of options for this column. You may want to turn off the &amp;ldquo;boop&amp;rdquo; sound, for example.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Local timeline&lt;/strong&gt; is the live feed of all the toots of people on your server. On many servers, particularly smaller ones and ones focused on a particular topic, this is where the magic happens. It feels like a town square or Slack chatroom. You can reply to people from there and it&amp;rsquo;s a great place to meet people.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The federated timeline&lt;/strong&gt; is a view of all the public toots your servers knows about from across the whole network (including local ones). The most common reason that something appears in the federated timeline is that someone from your server follows the author of that toot. This column moves fast, and can often be pretty wild. I enjoy setting that column to show only toots with media, hiding boosts, then seeing a constant stream of daft selfies, hot memes, and funky art.&lt;/p&gt;
&lt;p&gt;You can also pin a column for a hashtag you&amp;rsquo;re interested in &amp;ndash; just search for that hashtag and then in the column settings choose &amp;ldquo;pin&amp;rdquo; and done.&lt;/p&gt;
&lt;h3 id="using-content-warnings"&gt;Using content warnings&lt;/h3&gt;
&lt;p&gt;One of the best features on Mastodon is that button that says &amp;ldquo;CW&amp;rdquo; where you write your toots. Clicking that adds a content warning field where you can put information about what the toot contains (eg. mental health, politics, lewd talk, nudity) so that people don&amp;rsquo;t have to see content they wish to avoid, for whatever reason. Of course, it&amp;rsquo;s also great for show or book spoilers.&lt;/p&gt;
&lt;p&gt;A common convention is to put +, -, or ~ in a content warning to signify if the contents are broadly positive, negative, or mixed respectively.&lt;/p&gt;
&lt;p&gt;My advice is simple: if you&amp;rsquo;re not sure whether a toot needs a CW or not, give it a CW. People really appreciate it and it doesn&amp;rsquo;t do any harm to be too cautious and too respectful of others.&lt;/p&gt;
&lt;p&gt;You can also use a CW to summarise a long post. Some use it for joke punchlines. Maybe you&amp;rsquo;ll think of other uses for it. Have fun.&lt;/p&gt;
&lt;h3 id="learn-more"&gt;Learn more&lt;/h3&gt;
&lt;p&gt;Official material:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=IPSbNdBmWKE"&gt;What is Mastodon?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md"&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://joinmastodon.org/apps"&gt;Mobile apps for iOS and Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.joinmastodon.org/2018/06/how-to-become-a-successful-artist-on-mastodon/"&gt;How to become a successful artist on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Community material:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=W22msAw2zwI"&gt;Intro to Mastodon - Tahajin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lifehacker.com/a-beginner-s-guide-to-mastodon-1828503235"&gt;A Beginner&amp;rsquo;s Guide to Mastodon - Lifehacker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/joyeusenoelle/GuideToMastodon/"&gt;An Increasingly Less-Brief Guide to Mastodon - Joyeuse Noelle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cage the Mastodon</title><link>https://blog.joinmastodon.org/2018/07/cage-the-mastodon/</link><pubDate>Fri, 06 Jul 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/07/cage-the-mastodon/</guid><description>&lt;p&gt;A year ago I wrote about Mastodon&amp;rsquo;s &lt;a href="https://blog.joinmastodon.org/2017/03/learning-from-twitters-mistakes/"&gt;improvements over Twitter&amp;rsquo;s lacking protections against abuse and harassment&lt;/a&gt;. Development in that area has not been standing still, and it&amp;rsquo;s about time we do another comparison.&lt;/p&gt;
&lt;p&gt;First, a refresher on the fundamentals, which haven&amp;rsquo;t changed: Mastodon is decentralized between independently-operated servers. These servers each have a separate admin, and possibly a moderation team, as well as their own code of conduct. From that follows that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can be with a community that resonates with your values and ideas of moderation&lt;/li&gt;
&lt;li&gt;The ratio of &amp;ldquo;everyone&amp;rdquo; to &amp;ldquo;people who can handle abuse reports&amp;rdquo; is much, much higher than on any centralized service&lt;/li&gt;
&lt;li&gt;The moderation team of your server, be it just one admin or multiple people, is a lot closer to you and more approachable and can therefore take abuse seriously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So that&amp;rsquo;s already a huge advantage over other platforms due the basic design. And in my opinion it&amp;rsquo;s got advantages over the other extreme, too, a pure peer-to-peer design, where everyone would have to fend for themselves, without the pooled resources. However, there&amp;rsquo;s more.&lt;/p&gt;
&lt;h3 id="design-decisions"&gt;Design decisions&lt;/h3&gt;
&lt;p&gt;Before I proceed, I need to delineate that the following design decisions are more about what the software nudges you towards, rather than a tamper-proof barrier against some behaviours, which is not possible. &lt;strong&gt;Mastodon deliberately does not support arbitrary search&lt;/strong&gt;. If someone wants their message to be discovered, they can use a hashtag, which can be browsed. What does arbitrary search accomplish? People and brands search for their own name to self-insert into conversations they were not invited to.&lt;/p&gt;
&lt;p&gt;What you can do, however, is search messages you posted, received or favourited. That way you can find that one message on the tip of your tongue.&lt;/p&gt;
&lt;p&gt;Another feature that has been requested almost since the start, and which I keep rejecting is &lt;strong&gt;quoting messages&lt;/strong&gt;. Coming back to my disclaimer, of course it&amp;rsquo;s impossible to prevent people from sharing screenshots or linking to public resources, but quoting messages is &lt;em&gt;immediately actionable&lt;/em&gt;. It makes it a lot easier for people to immediately engage with the quoted content&amp;hellip; and it usually doesn&amp;rsquo;t lead to anything good. When people use quotes to reply to other people, conversations become performative power plays. &amp;ldquo;Heed, my followers, how I dunk on this fool!&amp;rdquo; When you use the reply function, your message is broadcast only to people who happen to follow you both. It means one person&amp;rsquo;s follower count doesn&amp;rsquo;t play a massive role in the conversation. A quote, on the other hand, very often invites the followers to join in on the conversation, and whoever has got more of them ends up having the upper hand and massively stressing out the other person.&lt;/p&gt;
&lt;p&gt;Twitter forces you to choose between two extremes, a protected account and a fully public account. If you have a public account, all your tweets are visible to everyone and infinitely shareable. Mastodon realizes that it&amp;rsquo;s not something you might always want, though. &lt;strong&gt;Each individual message can either be&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully public, appearing to your followers, the public timelines, anyone looking at your profile&lt;/li&gt;
&lt;li&gt;Unlisted, appearing to your followers and anyone looking at your profile, but skipping the public timelines&lt;/li&gt;
&lt;li&gt;Private, appearing only to your followers and people mentioned in it&lt;/li&gt;
&lt;li&gt;And direct, appearing only to people mentioned in it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unlisted messages are perfect if you want to be just a little low-key and not attract strangers to interact with you; private is great when you don&amp;rsquo;t want your messages easily shared around. Each choice can be set as the default. And of course, on top of that, &lt;strong&gt;you can &amp;ldquo;lock&amp;rdquo; your account&lt;/strong&gt;: Locking prevents people from being able to follow you without you getting a chance to say yes or no first.&lt;/p&gt;
&lt;p&gt;Mastodon has a lists feature for categorizing the people you are following and making your home feed more readable by essentially splitting into multiple ones, but unlike on Twitter, &lt;strong&gt;you cannot add someone to a list unless you are already following them&lt;/strong&gt;, and the lists are personal, not public.&lt;/p&gt;
&lt;h3 id="hiding-things"&gt;Hiding things&lt;/h3&gt;
&lt;p&gt;Mastodon offers a massive amount of ways to hide unwanted content from your eyes. Are strangers bothering you? You can &lt;strong&gt;block notifications from people you don&amp;rsquo;t follow&lt;/strong&gt;. You don&amp;rsquo;t want someone to easily see your posts, as well as forgetting they exist? The good old &lt;strong&gt;block&lt;/strong&gt; function is there. It hides notifications from the person, it hides any messages that mention the person, it hides other people sharing that person&amp;rsquo;s messages. Want the same thing, but for them to not know they&amp;rsquo;ve been blocked? That&amp;rsquo;s the &lt;strong&gt;mute&lt;/strong&gt; function.&lt;/p&gt;
&lt;p&gt;Are you tired of receiving responses to one of your posts? You can &lt;strong&gt;mute the conversation&lt;/strong&gt; and forget about it. And if you notice that you&amp;rsquo;re muting a lot of people from the same Mastodon server, and there&amp;rsquo;s no end to it, you can &lt;strong&gt;hide everything from a specific domain&lt;/strong&gt;. That will hide all of their posts and remove any followers you might have had from that server so they no longer receive your posts, either.&lt;/p&gt;
&lt;p&gt;In the coming weeks, once 2.4.3 is released, you&amp;rsquo;ll be able to tune out of a specific topic for a time or forever by &lt;strong&gt;adding text filters&lt;/strong&gt;. They will match keywords or phrases in the posts and hide those posts from you, either everywhere or in specific contexts only.&lt;/p&gt;
&lt;p&gt;On the other end, &lt;strong&gt;you can hide your messages behind content warnings&lt;/strong&gt;, for example if you want to discuss the events of the last episode of some show or a book. And rather than dooming your entire account to be &amp;ldquo;sensitive&amp;rdquo; like on Twitter, where it&amp;rsquo;s hidden from everyone who hasn&amp;rsquo;t opted to look at sensitive content, on Mastodon &lt;strong&gt;you can hide media uploads only in specific posts&lt;/strong&gt; (or, of course, set it as the default).&lt;/p&gt;
&lt;p&gt;You can also hide the list of people you are following and who follow you from your profile.&lt;/p&gt;
&lt;h3 id="moderation-tools"&gt;Moderation tools&lt;/h3&gt;
&lt;p&gt;When someone&amp;rsquo;s breaking a servers rules, it&amp;rsquo;s no longer a matter of just hiding them from your personal sight&amp;ndash;that&amp;rsquo;s where moderation steps in. Mastodon has a report function, in which you can report an account to the server&amp;rsquo;s administration, optionally specifying a message and choosing which of their posts to include in the report as examples. If the reported person resides on a different Mastodon server, you also have the option of anonymously forwarding a copy of the report to the admins of that server, since they might also be interested in knowing about an offender.&lt;/p&gt;
&lt;p&gt;Mastodon&amp;rsquo;s moderation system is very similar to that of a forum. It supports two administratives roles: moderators and admins. When a report comes in, both groups get a notification e-mail and can proceed to either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ignore the report if it&amp;rsquo;s unsubstantiated&lt;/li&gt;
&lt;li&gt;Leave notes for the account that other staff members can see&lt;/li&gt;
&lt;li&gt;Delete the offending posts&lt;/li&gt;
&lt;li&gt;Sandbox the account so nobody who isn&amp;rsquo;t already following them can see their posts&lt;/li&gt;
&lt;li&gt;Disable access to the account temporarily&lt;/li&gt;
&lt;li&gt;Remove the account and all of its data permanently&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It doesn&amp;rsquo;t matter if the offending account is on your server or a different one, these measures are contained within your server, which is how servers with different policies can co-exist on the network: You moderate according to yours, I moderate according to mine.&lt;/p&gt;
&lt;p&gt;If there is a server fundamentally opposed to yours, or one that refuses to keep its offenders in check so moderating them on your end individually ends up being too much work, there is an option to either sandbox or block an entire domain.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Wherever people meet, there will be disagreements and trouble. Maintaining communities that feel safe for all of its members is not easy. Mastodon provides a lot of foundational framework and tools for doing it, and shifts the power to effect change from one commercial entity to the communities themselves.&lt;/p&gt;</description></item><item><title>How to make friends and verify requests</title><link>https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/</link><pubDate>Tue, 03 Jul 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/</guid><description>&lt;p&gt;In the previous tutorial we have learned &lt;a href="https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/"&gt;how to send a reply to another ActivityPub server&lt;/a&gt;, and we have used mostly static parts to do it. Now it&amp;rsquo;s time to talk about how to subscribe to other people and receive messages.&lt;/p&gt;
&lt;h3 id="the-inbox"&gt;The inbox&lt;/h3&gt;
&lt;p&gt;Primarily this means having a publicly accessible inbox and validating HTTP signatures. Once that works, everything else is just semantics. Let&amp;rsquo;s use a Sinatra web server to implement the inbox.&lt;/p&gt;
&lt;p&gt;In fact, I intend to omit persistence from this tutorial. How you would want to store data in a real application is very much up for debate and depends on your goals and requirements. So, we&amp;rsquo;re going to store data in a variable and implement a simple way to inspect it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;require&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;sinatra&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INBOX &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get &lt;span style="color:#f1fa8c"&gt;&amp;#39;/inspect&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;, INBOX&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;post &lt;span style="color:#f1fa8c"&gt;&amp;#39;/inbox&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;body&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rewind
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INBOX &lt;span style="color:#ff79c6"&gt;&amp;lt;&amp;lt;&lt;/span&gt; request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;body&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;read
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;OK&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s an absolutely basic implementation. Save it in &lt;code&gt;server.rb&lt;/code&gt;. You can run the server with &lt;code&gt;ruby server.rb&lt;/code&gt; (you need the Sinatra gem installed before that: &lt;code&gt;gem install sinatra&lt;/code&gt;). Now on this server you can navigate to &lt;code&gt;/inspect&lt;/code&gt; to see the contents of your inbox, and you (and anyone, really) can POST to the &lt;code&gt;/inbox&lt;/code&gt; to add something there.&lt;/p&gt;
&lt;p&gt;Of course, anyone being able to put anything in there is not ideal. We need to check the incoming POST requests for a HTTP signature and validate it. Here is what a HTTP signature header looks like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Signature: keyId=&amp;quot;https://my-example.com/actor#main-key&amp;quot;,headers=&amp;quot;(request-target) host date&amp;quot;,signature=&amp;quot;Y2FiYW...IxNGRiZDk4ZA==&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We need to read the &lt;code&gt;Signature&lt;/code&gt; header, split it into its parts (&lt;code&gt;keyId&lt;/code&gt;, &lt;code&gt;headers&lt;/code&gt; and &lt;code&gt;signature&lt;/code&gt;), fetch the public key linked from &lt;code&gt;keyId&lt;/code&gt;, create a comparison string from the plaintext headers we got in the same order as was given in the signature header, and then verify that string using the public key and the original signature.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;require&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;require&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;http&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;post &lt;span style="color:#f1fa8c"&gt;&amp;#39;/inbox&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; signature_header &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Signature&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;].&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;map &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;pair&lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pair&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;map &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;value&lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;gsub(&lt;span style="color:#f1fa8c"&gt;/\A&amp;#34;/&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;gsub(&lt;span style="color:#f1fa8c"&gt;/&amp;#34;\z/&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#39;&lt;/span&gt;) &lt;span style="color:#6272a4"&gt;# &amp;#34;foo&amp;#34; -&amp;gt; foo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;to_h
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; key_id &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; signature_header&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;keyId&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; signature_header&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;headers&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; signature &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Base64&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;decode64(signature_header&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;signature&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; actor &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; JSON&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;parse(HTTP&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(key_id)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;to_s)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; key &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OpenSSL&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;PKey&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;RSA&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;new(actor&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;publicKey&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;][&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;publicKeyPem&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; comparison_string &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;map &lt;span style="color:#ff79c6"&gt;do&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;signed_header_name&lt;span style="color:#ff79c6"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; signed_header_name &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;(request-target)&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;(request-target): post /inbox&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;#{&lt;/span&gt;signed_header_name&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;#{&lt;/span&gt;request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;signed_header_name&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;capitalize&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; key&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;verify(OpenSSL&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;Digest&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;SHA256&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;new, signature, comparison_string)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;body&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rewind
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INBOX &lt;span style="color:#ff79c6"&gt;&amp;lt;&amp;lt;&lt;/span&gt; request&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;body&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;read
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;OK&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;[&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;401&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;Request signature could not be verified&amp;#39;&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The code above is &lt;strong&gt;somewhat simplified&lt;/strong&gt; and missing some checks that I would advise implementing in a serious production application. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The request contains a &lt;code&gt;Date&lt;/code&gt; header. Compare it with current date and time within a reasonable time window to prevent replay attacks.&lt;/li&gt;
&lt;li&gt;It is advisable that requests with payloads in the body also send a &lt;code&gt;Digest&lt;/code&gt; header, and that header be signed along in the signature. If it&amp;rsquo;s present, it should be checked as another special case within the comparison string: Instead of taking the digest value from the received header, recompute it from the received body.&lt;/li&gt;
&lt;li&gt;While this proves the request comes from an actor, what if the payload contains an attribution to someone else? In reality you&amp;rsquo;d want to check that both are the same, otherwise one actor could forge messages from other people.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still, now you have a reasonably secure toy inbox. Moving on.&lt;/p&gt;
&lt;h3 id="following-people"&gt;Following people&lt;/h3&gt;
&lt;p&gt;To register as a follower of someone, you need to send them a &lt;code&gt;Follow&lt;/code&gt; activity. The receiver may manually decide whether to allow that or not, or their server may do it automatically, but in the case of success you will receive an &lt;code&gt;Accept&lt;/code&gt; activity back referring to your &lt;code&gt;Follow&lt;/code&gt;. Here is how a &lt;code&gt;Follow&lt;/code&gt; may look like, if you would like to follow the official Mastodon project account, the URI of which is &lt;code&gt;https://mastodon.social/users/Mastodon&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;@context&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://www.w3.org/ns/activitystreams&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/my-first-follow&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;Follow&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;actor&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;object&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://mastodon.social/users/Mastodon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure your actor JSON points to your inbox, and your inbox server is running and publicly accessible under that URL, then deliver that activity to the target user&amp;rsquo;s inbox, in our example it would be &lt;code&gt;https://mastodon.social/inbox&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If everything works correctly, inspecting your inbox you should find an &lt;code&gt;Accept&lt;/code&gt; activity. Afterwards, you will find other activities in there from the person you followed, like &lt;code&gt;Create&lt;/code&gt;, &lt;code&gt;Announce&lt;/code&gt; and &lt;code&gt;Delete&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ideally, you&amp;rsquo;d follow your own Mastodon account, just so you can control when to post, otherwise you may end up waiting for your inbox to fill for a long time.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;This brings you almost all the way to a fully functioning ActivityPub server. &lt;strong&gt;You can send and receive verified messages and subscribe to other people&lt;/strong&gt;. As mentioned at the start, everything else is semantics. To support other people subscribing to you, you would listen for incoming &lt;code&gt;Follow&lt;/code&gt; activities, send back an appropriately formatted &lt;code&gt;Accept&lt;/code&gt; activity, write down the follower somewhere and send them every new post you create.&lt;/p&gt;
&lt;p&gt;Read more on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/activitypub/"&gt;ActivityPub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/ns/activitystreams"&gt;ActivityStreams vocabulary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Why ActivityPub is the future</title><link>https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/</link><pubDate>Wed, 27 Jun 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/</guid><description>&lt;p&gt;We often tout things like &amp;ldquo;Mastodon is based on open web protocols&amp;rdquo; as one of its advantages. I want to elaborate why exactly that&amp;rsquo;s a good thing.&lt;/p&gt;
&lt;p&gt;As a refresher, Mastodon implements the so-called ActivityPub protocol to enable Mastodon servers to talk to each other; that&amp;rsquo;s the basis of the &amp;ldquo;federation&amp;rdquo; we also like to bring up. Federation is what you already know from e-mail, even if you may not know it by name: It&amp;rsquo;s the concept of servers hosting users that can talk to users from other servers. That protocol pins down on paper how exactly such inter-server communication would look like, using a vocabulary that can be applied for a variety of purposes. And here&amp;rsquo;s the kicker:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The social network that is Mastodon isn&amp;rsquo;t really Mastodon&lt;/strong&gt;. It&amp;rsquo;s &lt;em&gt;bigger&lt;/em&gt;. It&amp;rsquo;s &lt;em&gt;any piece of software that implements ActivityPub&lt;/em&gt;. That software can be wildly different in how it looks and what it does! But the social graph&amp;ndash;what we call the people and their connections&amp;ndash;is the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mastodon is the software built around 500-character text posts.&lt;/li&gt;
&lt;li&gt;You want a video platform? That&amp;rsquo;s &lt;a href="https://joinpeertube.org/en/home/"&gt;PeerTube&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You want something centered on photos and pictures? &lt;a href="https://pixelfed.org/"&gt;PixelFed&lt;/a&gt; is here.&lt;/li&gt;
&lt;li&gt;You want to write long, rich blog posts? &lt;a href="https://github.com/Plume-org/Plume"&gt;Plume&lt;/a&gt; is in development.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s not to mention a multitude of variations on the same concepts. PeerTube and PixelFed won&amp;rsquo;t be the only ones in their categories. For example, &lt;a href="https://github.com/syuilo/misskey"&gt;Misskey&lt;/a&gt; and &lt;a href="https://pleroma.social/"&gt;Pleroma&lt;/a&gt; have a similar use case as Mastodon, but they make different choices in programming languages, design and functionality.&lt;/p&gt;
&lt;p&gt;All of these platforms are different and they focus on different needs. And yet, the foundation is all the same: people subscribing to receive posts from other people. And so, they are all compatible. From within Mastodon, Pleroma, Misskey, PixelFed and PeerTube users can be followed and interacted with all the same.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And that&amp;rsquo;s the strength of using open web protocols&lt;/strong&gt;. When you decide to switch to Mastodon, you&amp;rsquo;re not just gambling on the success of one project. You can be certain that regardless what happens with Mastodon, the network will live on and flourish. Newer and better software will be born within this ecosystem, but you will never have to drag all your friends and followers someplace else again&amp;ndash;they&amp;rsquo;ll already be where they need to be.&lt;/p&gt;
&lt;p&gt;If Twitter shuts down, you&amp;rsquo;ll lose your followers. If Facebook shuts down, you&amp;rsquo;ll lose your friends. For some platforms, it&amp;rsquo;s not a question of &amp;ldquo;if&amp;rdquo;, but &amp;ldquo;when&amp;rdquo;. Such events are usually followed by a scrambling into a variety of different platforms, where you inevitably lose some people as you have to make a choice which one to stay on. This happened before. But it doesn&amp;rsquo;t have to happen again. Use the federated web. Join Mastodon.&lt;/p&gt;</description></item><item><title>Why we must oppose the new copyright directive</title><link>https://blog.joinmastodon.org/2018/06/why-we-must-oppose-the-new-copyright-directive/</link><pubDate>Mon, 25 Jun 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/06/why-we-must-oppose-the-new-copyright-directive/</guid><description>&lt;p&gt;Polish translation is available: &lt;a href="https://blog.joinmastodon.org/pl/2018/06/dlaczego-musimy-sprzeciwi%C4%87-si%C4%99-nowej-dyrektywie-o-prawie-autorskim/"&gt;Dlaczego musimy sprzeciwić się nowej dyrektywie o prawie autorskim&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A committee of members of the European Parliament &lt;a href="https://www.bbc.com/news/technology-44546620"&gt;have voted to approve Article 11 and Article 13&lt;/a&gt;, which pose a risk to the decentralization of the web and freedom of creative expression.&lt;/p&gt;
&lt;p&gt;Article 11 is commonly known as the Link Tax, wherein linking to public pages may become illegal if the link displays a content preview using OpenGraph tags included by the page authors; Article 13 mandates that all user submissions must go through a content filter to detect copyright violations.&lt;/p&gt;
&lt;p&gt;There will be a wider vote on this in the European Parliament in July. Both would affect how Mastodon operates. Here is why we must oppose its passing:&lt;/p&gt;
&lt;h3 id="content-detection-is-not-reliable"&gt;Content detection is not reliable&lt;/h3&gt;
&lt;p&gt;Known content identification systems such as those on YouTube routinely lead to wrongful takedowns. Sometimes it will detect faint music, inaudible to humans, in a video of the outside. It will mistakenly block public domain or transformative work. But at the same time, it will fail to notice songs with slightly shifted pitch, or video that&amp;rsquo;s been horizontally flipped. People will file claims for content they don&amp;rsquo;t actually own, and the onus will be on the creators to prove they have a right to upload. &lt;strong&gt;This will stiftle freedom of expression and will rob us of creative diversity.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The YouTube of today is already suffering from this, even without Article 13. You think DMCA and demonetizations are bad? &lt;strong&gt;People will be denied at time of upload, everywhere.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="small-players-vs-content-filtering"&gt;Small players vs. content filtering&lt;/h3&gt;
&lt;p&gt;While large social media platforms like Twitter, Tumblr, Facebook and GitHub will be able to invest in developing the technologies required for copyright infringement scanning, others will not. And there are a lot of places on the internet outside of those platforms: blog comments sections, forums, image boards, and of course, Mastodon servers. &lt;strong&gt;Non-profit websites, run by individuals or small organizations, will not be able to comply with such requirements.&lt;/strong&gt; It presupposes not only a technological investment, but also access to copyrighted content libraries to-be-scanned-for.&lt;/p&gt;
&lt;p&gt;This might lead to an emergence of content ID service providers, centralized scanning facilities, which adds not only another financial factor into the picture, but &lt;strong&gt;introduces a huge privacy risk by aggregating all posts from many different platforms into one place&lt;/strong&gt;. You don&amp;rsquo;t even have to believe in government snooping, just think of all those data breaches like Equifax.&lt;/p&gt;
&lt;h3 id="the-internet-is-not-just-big-platforms"&gt;The internet is not just big platforms&lt;/h3&gt;
&lt;p&gt;If often feels like when the EU passes internet regulations, they think only about the big names like Facebook, Twitter, Google and Amazon. When Germany implemented their own version of the link tax, Google still managed to negotiate a free deal with publishers, because if the publishers are excluded from Google, they&amp;rsquo;re essentially outcast. But guess who does not have the power to negotiate such deals? Smaller Google competitors.&lt;/p&gt;
&lt;p&gt;Similarly, GDPR caused a panic among smaller websites and web services due to the fear of being fined a hefty fee, with many shutting down due to uncertainty. Who did not need to panic or scramble were the companies who the law was primarily aimed at, those who violated our privacy the most: Google, Facebook, Twitter, Amazon. They can afford plenty of lawyers and engineers to comply with any new regulations.&lt;/p&gt;
&lt;p&gt;It is the nature of regulations to shut out small players, and that&amp;rsquo;s not always bad. You &lt;em&gt;want&lt;/em&gt; water and food quality to be regulated, you don&amp;rsquo;t want any amateurs dabbling in that. And internet privacy is important for sure, in the case of GDPR it seemed to come from the right place. But any regulations will entrench the biggest companies on the market, and you have to ask yourself: Are the media conglomerates whose business model is exploitation really the landscape of the internet you want to solidify for the foreseeable future?&lt;/p&gt;
&lt;p&gt;The successful companies of today have only been able to become such because the internet was decentralized and anyone could enter the game board freely. I do not think that they are the pinnacle of what is possible, however.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We need to keep the decentralized web alive, and oppose Article 11 and Article 13.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;More resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://saveyourinternet.eu/"&gt;Call your MEPs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://act1.openmedia.org/savethelink"&gt;E-mail your MEPs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://juliareda.eu/2018/06/not-giving-up/"&gt;See who voted to restrict your web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;More in: &lt;a href="https://www.laquadrature.net/en/node/10560"&gt;Let&amp;rsquo;s Fight Automated Filtering… and Web Centralisation!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to become a successful artist on Mastodon</title><link>https://blog.joinmastodon.org/2018/06/how-to-become-a-successful-artist-on-mastodon/</link><pubDate>Sun, 24 Jun 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/06/how-to-become-a-successful-artist-on-mastodon/</guid><description>&lt;p&gt;I follow many talented artists on Mastodon, and over my 2 years of being on the platform I have noticed some common patterns that may help a newcomer find their audience on here, too.&lt;/p&gt;
&lt;h3 id="introduce-yourself"&gt;Introduce yourself&lt;/h3&gt;
&lt;p&gt;A lot of the toots that get shared around widely are artists&amp;rsquo; introductions. It may sound odd coming from larger, more faceless platforms like Twitter, but Mastodon communities are more tight-knit, and a new community member saying hello is genuinely appreciated. You may describe who you are, where you come from, link your past work or profiles, and include a few examples of your work. Just like everywhere else, pretty pictures attract eyes.&lt;/p&gt;
&lt;iframe src="https://mastodon.art/@DearMsDear/98993992919148846/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.art/embed.js" async="async"&gt;&lt;/script&gt;

&lt;p&gt;On Mastodon, you may pin up to 5 posts to the top of your profile. So the introduction post may serve as an additional, permanent piece of information going forward if you pin it.&lt;/p&gt;
&lt;h3 id="fill-out-your-profile"&gt;Fill out your profile&lt;/h3&gt;
&lt;p&gt;You can upload an avatar and a header image. It is wise to do both, as people tend to ignore posts from accounts with the default avatar, and profiles look a lot prettier with a header image. Avatars can even be animated! Animated avatars will be displayed to users who opted into interface animations, which are off by default for accessibility reasons.&lt;/p&gt;
&lt;p&gt;Describe in short who you are. The profile bio may be displayed when pinned posts, such as your introduction, are not, so it makes sense to add some common, important information in both. Here comes the coolest thing, though: Profile metadata.&lt;/p&gt;
&lt;p&gt;You get 4 label/content pairs to use however you like. Want to tell people what country you are from? You can do it. You can use them to refer to your significant other, or credit the author of your avatar image (if it&amp;rsquo;s not you), or to simply link to your other websites. If you have a Patreon, and a Twitch or Picarto channel, that&amp;rsquo;s where you would put them. Be sure, when posting links, to include the &lt;code&gt;https://&lt;/code&gt; part at the start, or it won&amp;rsquo;t show up as a link!&lt;/p&gt;
&lt;h3 id="choose-focal-points"&gt;Choose focal points&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re posting vertical pictures, one of the most unfortunate things that can happen is the crotch crop. Mastodon is available on all sorts of platforms, used across a variety of screen sizes, so thumbnails of your art do not always have the same dimensions. Sometimes, this means the thumbnail shows the less enticing parts of the picture. But there is a solution for that:&lt;/p&gt;
&lt;p&gt;When uploading a picture, you may click &amp;ldquo;crop&amp;rdquo; to select a focal point on the image. Once that is done, whatever the dimensions of the thumbnail, it will always include the selected area in this visible area.&lt;/p&gt;
&lt;h3 id="use-hashtags"&gt;Use hashtags&lt;/h3&gt;
&lt;p&gt;This will be familiar to those coming from Instagram, but hashtags are really rather important on Mastodon! Of course, unlike Instagram, there&amp;rsquo;s another way to discover content: the &amp;ldquo;firehose&amp;rdquo;, or the local and federated timelines. They show a slice of the real-time content as it appears. In a way, this means you have a chance of being noticed even if you don&amp;rsquo;t have any followers yet. But not everyone can keep up with that! Using hashtags allows people to find your art when they&amp;rsquo;re looking for it. Some of the hashtags that people use are &lt;code&gt;#mastoart&lt;/code&gt;, &lt;code&gt;#creativetoots&lt;/code&gt;, &lt;code&gt;#photography&lt;/code&gt;, &lt;code&gt;#catsofmastodon&lt;/code&gt;&amp;hellip;&lt;/p&gt;
&lt;iframe src="https://mastodon.art/@jatobear/100257785165468391/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.art/embed.js" async="async"&gt;&lt;/script&gt;

&lt;iframe src="https://mastodon.art/@rheall/100252652638178757/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.art/embed.js" async="async"&gt;&lt;/script&gt;

&lt;h3 id="posting-schedule"&gt;Posting schedule&lt;/h3&gt;
&lt;p&gt;It may be tempting to dump your entire portfolio straight away, but do not do this! While your posts will always appear on your profile, the presence of your posts on your followers&amp;rsquo; home feeds is ephermal, they will be pushed out by newer toots! Consider that people from different timezones are online at different times. It makes sense to post on different days, at different times of day, to draw the most attention.&lt;/p&gt;
&lt;p&gt;Do not feel bad about mixing art posts and personal updates. I&amp;rsquo;ve never seen anyone mind that, on the contrary, people appreciate personality behind the work.&lt;/p&gt;
&lt;h3 id="engage"&gt;Engage!&lt;/h3&gt;
&lt;p&gt;Thank people who comment on, fave or boost your work. Look at who boosts and faves other people&amp;rsquo;s work and follow them to silently introduce them to your work, too. Support other artists on the platform.&lt;/p&gt;
&lt;h3 id="how-to-deal-with-sensitive-media"&gt;How to deal with sensitive media&lt;/h3&gt;
&lt;p&gt;Mastodon allows you to mark pictures or videos as sensitive, so they&amp;rsquo;re hidden behind a warning. This is great for people who cannot or do not want to see explicit imagery, but for artists who create primarily that, it can be inhibiting. Art hidden behind a warning is less likely to be noticed on timelines, and you need to be aware of that trade-off. What you can do is mix your explicit and non-explicit art to gain more followers.&lt;/p&gt;
&lt;p&gt;There is also an off-by-default preference to always view sensitive media without a warning. You and your followers may wish to enable that.&lt;/p&gt;
&lt;p&gt;In conclusion,&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Prawnlegs/100260595084343127/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;</description></item><item><title>How to implement a basic ActivityPub server</title><link>https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/</link><pubDate>Sat, 23 Jun 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/</guid><description>&lt;p&gt;Today we’ll be looking at how to connect the protocols powering Mastodon in the simplest way possible to enter the federated network. We will use static files, standard command-line tools, and some simple Ruby scripting, although the functionality should be easily adaptable to other programming languages.&lt;/p&gt;
&lt;p&gt;First, what’s the end goal of this exercise? We want to send a Mastodon user a message from our own, non-Mastodon server.&lt;/p&gt;
&lt;p&gt;So what are the ingredients required? The message itself will be formatted with ActivityPub, and it must be attributed to an ActivityPub actor. The actor must be discoverable via Webfinger, and the delivery itself must be cryptographically signed by the actor.&lt;/p&gt;
&lt;h3 id="the-actor"&gt;The actor&lt;/h3&gt;
&lt;p&gt;The actor is a publicly accessible JSON-LD document answering the question &amp;ldquo;who&amp;rdquo;. JSON-LD itself is a quite complicated beast, but luckily for our purposes we can treat it as simple JSON with a &lt;code&gt;@context&lt;/code&gt; attribute. Here is what an actor document could look like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;@context&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;https://www.w3.org/ns/activitystreams&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#f1fa8c"&gt;&amp;#34;https://w3id.org/security/v1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;Person&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;preferredUsername&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;inbox&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/inbox&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;publicKey&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor#main-key&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;publicKeyPem&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;id&lt;/code&gt; must be the URL of the document (it’s a self-reference), and all URLs should be using HTTPS. You need to include an &lt;code&gt;inbox&lt;/code&gt; even if you don’t plan on receiving messages in response, because for legacy purposes Mastodon doesn’t acknowledge inbox-less actors as compatible.&lt;/p&gt;
&lt;p&gt;The most complicated part of this document is the &lt;code&gt;publicKey&lt;/code&gt; as it involves cryptography. The &lt;code&gt;id&lt;/code&gt; will in this case refer to the actor itself, with a fragment (the part after &lt;code&gt;#&lt;/code&gt;) to identify it&amp;ndash;this is because we are not going to host the key in a separate document (although we could). The &lt;code&gt;owner&lt;/code&gt; must be the actor’s &lt;code&gt;id&lt;/code&gt;. Now to the hard part: You’ll need to generate an RSA keypair.&lt;/p&gt;
&lt;p&gt;You can do this using OpenSSL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The contents of the &lt;code&gt;public.pem&lt;/code&gt; file is what you would put into the &lt;code&gt;publicKeyPem&lt;/code&gt; property. However, JSON does not support verbatim line-breaks in strings, so you would first need to replace line-breaks with &lt;code&gt;\n&lt;/code&gt; instead.&lt;/p&gt;
&lt;h3 id="webfinger"&gt;Webfinger&lt;/h3&gt;
&lt;p&gt;What is Webfinger? It is what allows us to ask a website, &amp;ldquo;Do you have a user with this username?&amp;rdquo; and receive resource links in response. Implementing this in our case is really simple, since we’re not messing with any databases and can hardcode what we want.&lt;/p&gt;
&lt;p&gt;The Webfinger endpoint is always under &lt;code&gt;/.well-known/webfinger&lt;/code&gt;, and it receives queries such as &lt;code&gt;/.well-known/webfinger?resource=acct:bob@my-example.com&lt;/code&gt;. Well, in our case we can cheat, and just make it a static file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;subject&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;acct:alice@my-example.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;links&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#ff79c6"&gt;&amp;#34;rel&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;self&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#ff79c6"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;application/activity+json&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#ff79c6"&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;subject&lt;/code&gt; property here consists of the username (same as &lt;code&gt;preferredUsername&lt;/code&gt; earlier) and the domain you’re hosting on. This is how your actor will be stored on other Mastodon servers and how people will be able to mention it in toots. Only one link is required in the Webfinger response, and it’s the link to the actor document.&lt;/p&gt;
&lt;p&gt;After this is uploaded to your webhost and available under your domain with a valid SSL certificate, you could already look up your actor from another Mastodon by entering &lt;code&gt;alice@my-example.com&lt;/code&gt; into the search bar. Although it’ll look quite barren.&lt;/p&gt;
&lt;h3 id="the-message"&gt;The message&lt;/h3&gt;
&lt;p&gt;ActivityPub messages practically consist of two parts, the message itself (the object) and a wrapper that communicates what’s happening with the message (the activity). In our case, it’s going to be a &lt;code&gt;Create&lt;/code&gt; activity. Let’s say &amp;ldquo;Hello world&amp;rdquo; in response to my toot about writing this blog post:&lt;/p&gt;
&lt;iframe src="https://mastodon.social/@Gargron/100254678717223630/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"&gt;&lt;/iframe&gt;
&lt;script src="https://mastodon.social/embed.js" async="async"&gt;&lt;/script&gt;

&lt;p&gt;Here is how the document could look:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;@context&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://www.w3.org/ns/activitystreams&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/create-hello-world&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;Create&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;actor&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;&amp;#34;object&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/hello-world&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;Note&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;published&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;2018-06-23T17:17:11Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;attributedTo&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://my-example.com/actor&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;inReplyTo&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://mastodon.social/@Gargron/100254678717223630&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;lt;p&amp;gt;Hello world&amp;lt;/p&amp;gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#ff79c6"&gt;&amp;#34;to&amp;#34;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://www.w3.org/ns/activitystreams#Public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the &lt;code&gt;inReplyTo&lt;/code&gt; property we’re chaining our message to a parent. The &lt;code&gt;content&lt;/code&gt; property may contain HTML, although of course it will be sanitized by the receiving servers according to their needs — different implementations may find use for a different set of markup. Mastodon will only keep &lt;code&gt;p&lt;/code&gt;, &lt;code&gt;br&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;span&lt;/code&gt; tags. With the &lt;code&gt;to&lt;/code&gt; property we are defining who should be able to view our message, in this case it’s a special value to mean &amp;ldquo;everyone&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;For our purposes, we don’t actually need to host this document publicly, although ideally both the activity and the object would be separately available under their respective &lt;code&gt;id&lt;/code&gt;. Let’s just save it under &lt;code&gt;create-hello-world.json&lt;/code&gt; because we’ll need it later.&lt;/p&gt;
&lt;p&gt;So the next question is, how do we send this document over, where do we send it, and how will Mastodon be able to trust it?&lt;/p&gt;
&lt;h3 id="http-signatures"&gt;HTTP signatures&lt;/h3&gt;
&lt;p&gt;To deliver our message, we will use POST it to the inbox of the person we are replying to (in this case, me). That inbox is &lt;code&gt;https://mastodon.social/inbox&lt;/code&gt;. But a simple POST will not do, for how would anyone know it comes from the real @alice@my-example.com and not literally anyone else? For that purpose, we need a HTTP signature. It’s a HTTP header signed by the RSA keypair that we generated earlier, and that’s associated with our actor.&lt;/p&gt;
&lt;p&gt;HTTP signatures is one of those things that are much easier to do with actual code instead of manually. The signature looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Signature: keyId=&amp;quot;https://my-example.com/actor#main-key&amp;quot;,headers=&amp;quot;(request-target) host date digest&amp;quot;,signature=&amp;quot;...&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;keyId&lt;/code&gt; refers to public key of our actor, the &lt;code&gt;header&lt;/code&gt; lists the headers that are used for building the signature, and then finally, the &lt;code&gt;signature&lt;/code&gt; string itself. The order of the headers must be the same in plain-text and within the to-be-signed string, and header names are always lowercase. The &lt;code&gt;(request-target)&lt;/code&gt; is a special, fake header that pins down the HTTP method and the path of the destination.&lt;/p&gt;
&lt;p&gt;The to-be-signed string would look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(request-target): post /inbox
host: mastodon.social
date: Sun, 06 Nov 1994 08:49:37 GMT
digest: {sha-256 hash of create-hello-world.json}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mind that there is only a ±30 seconds time window when that signature would be considered valid, which is a big reason why it’s quite difficult to do manually. Anyway, assuming we’ve got the valid date in there, we now need to build a signed string out of it. Let’s put it all together:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;require&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;http&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;require&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;openssl&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;document &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; File&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;read(&lt;span style="color:#f1fa8c"&gt;&amp;#39;create-hello-world.json&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sha256 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OpenSSL&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;Digest&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;SHA256&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;new
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;digest &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;SHA-256=&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; Base64&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strict_encode64(sha256&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;digest(document))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;date &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;now&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;utc&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;httpdate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keypair &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; OpenSSL&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;PKey&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;RSA&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;new(File&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;read(&lt;span style="color:#f1fa8c"&gt;&amp;#39;private.pem&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;signed_string &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;(request-target): post /inbox&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;host: mastodon.social&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;date: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;#{&lt;/span&gt;date&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;digest: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;#{&lt;/span&gt;digest&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;signature &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; Base64&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strict_encode64(keypair&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sign(OpenSSL&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;Digest&lt;span style="color:#ff79c6"&gt;::&lt;/span&gt;SHA256&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;new, signed_string))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;header &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;keyId=&amp;#34;https://my-example.com/actor&amp;#34;,headers=&amp;#34;(request-target) host date digest&amp;#34;,signature=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; signature &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HTTP&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers({ &lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;mastodon.social&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#39;Date&amp;#39;&lt;/span&gt;: date, &lt;span style="color:#f1fa8c"&gt;&amp;#39;Signature&amp;#39;&lt;/span&gt;: header, &lt;span style="color:#f1fa8c"&gt;&amp;#39;Digest&amp;#39;&lt;/span&gt;: digest })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;post(&lt;span style="color:#f1fa8c"&gt;&amp;#39;https://mastodon.social/inbox&amp;#39;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;body&lt;/span&gt;: document)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let’s save it as &lt;code&gt;deliver.rb&lt;/code&gt;. I am using the HTTP.rb gem here, so you’ll need to have that installed (&lt;code&gt;gem install http&lt;/code&gt;). Finally, run the file with &lt;code&gt;ruby deliver.rb&lt;/code&gt;, and your message should appear as a reply on my toot!&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;We have covered how to create a discoverable ActivityPub actor and how to send replies to other people. But there is a lot we haven’t covered: How to follow and be followed (it requires a working inbox), how to have a prettier profile, how to support document forwarding with LD-Signatures, and more. If there is demand, I will write more in-depth tutorials!&lt;/p&gt;
&lt;p&gt;Read more on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/activitypub/"&gt;ActivityPub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tools.ietf.org/html/rfc7033"&gt;Webfinger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tools.ietf.org/html/draft-cavage-http-signatures-10"&gt;HTTP Signatures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>If you could edit tweets</title><link>https://blog.joinmastodon.org/2018/06/if-you-could-edit-tweets/</link><pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/06/if-you-could-edit-tweets/</guid><description>&lt;p&gt;A fresh new release of the federated social network software is here, and while the primary focus of it has been on fixing bugs and improving performance, it brings a couple of notable new features to the board.&lt;/p&gt;
&lt;h3 id="delete--redraft"&gt;Delete &amp;amp; Redraft&lt;/h3&gt;
&lt;p&gt;There are legitimate reasons why social media platforms rarely, if ever, have an editing function. In an environment where content spreads like wildfire in a matter of minutes, you could easily conceive of nefarious misuses such as creating a post about something agreeable and positive, and, once it reaches critical mass, changing the content to something malicious.&lt;/p&gt;
&lt;p&gt;Credit where credit’s due, people have come up with a compromise a long time ago. For example, the Better Tweetdeck browser extension includes an edit function that essentially takes the contents of a tweet, deletes the tweet, and pre-fills the compose screen with the old contents ready for editing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mastodon has adopted this Delete &amp;amp; Redraft function, with a slight change that allows us to avoid re-uploading the media altogether, so we can re-use it directly.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*eNMEH8zqbnZ9PlD865zvxg.png" alt=""&gt;&lt;/p&gt;
&lt;h3 id="hide-network"&gt;Hide network&lt;/h3&gt;
&lt;p&gt;You can find out a lot about a person by looking at who that person associates with. Some people are more vulnerable to this than others, like dissidents, activists and people from persecuted groups.&lt;/p&gt;
&lt;p&gt;In a social network, associations are important for other purposes, too. Finding good content by looking at who your friends follow, or confirming that an account is not a bot or sockpuppet by looking at who follows them. Still, &lt;strong&gt;Mastodon now has an option to hide who you follow and who follows you from your profile.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Of course, that isn’t perfect — the people you follow, and the people who follow &lt;em&gt;also&lt;/em&gt; have profiles… But it’s at least a small obstacle to unsolicited data collection.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*MHHC2NRdzytfTL6NL7mWjA.jpeg" alt=""&gt;&lt;/p&gt;
&lt;h3 id="language-filtering"&gt;Language filtering&lt;/h3&gt;
&lt;p&gt;Language filtering is vastly improved. When we released the feature, our community only had a handful of languages, and the language detection algorithm had a high rate of wrong guesses, which meant it was safer to err on the side of opting out of unfamiliar languages, rather than limiting your timelines to some particular language. Nowadays, Mastodon is extremely diverse, so the average person who speaks only their native tongue would have to go to the preferences screen and tick more than 20 boxes just to see only toots that they would understand. That’s obviously not how it should be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We’ve added the ability for people to select a default language for their toots to override automatic detection (therefore reducing false positives) and we turned the opt-out system around into an opt-in one&lt;/strong&gt;. Now, on the preferences screen, you only need to tick the boxes of the languages you want to see.&lt;/p&gt;
&lt;h3 id="friend-finding"&gt;Friend finding&lt;/h3&gt;
&lt;p&gt;The biggest challenge of any social network is, unsurprisingly, the “network effect”. It becomes more useful the more people that you care about are on it. Another one is surfacing interesting content, which is tangentially related, but a topic for another article/release.&lt;/p&gt;
&lt;p&gt;We are adding a more prominent link to “Find Twitter friends” to the UI. The tool in question is called the &lt;a href="https://bridge.joinmastodon.org"&gt;Mastodon Bridge&lt;/a&gt;: &lt;strong&gt;By having people sign in using their Twitter account and their Mastodon account, we can create a mapping between the two, and by checking the Twitter friend data, we can tell people who of their friends is on Mastodon, with a convenient “follow all” button.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*TDSbOXA2-c6JMD5BFB0aMA.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;There is a very common pattern where people would say to follow them on Mastodon, either on Twitter, Facebook, or another platform that was their primary. People who would listen to that would have to find a server, sign up, then find the person in the UI and finally follow them. We’re adding a new feature to roll all of that into one action: &lt;strong&gt;You can now create personalized invite links. Send the invite link to your old friends and followers, and they will be able to sign up on the same server as you and automatically follow you straight away.&lt;/strong&gt; (Please mind that invites have to be enabled by your server admin — some have reasons not to allow that. Look out for the “Invite people” link in the UI, as it appears when the function is enabled)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*PSeXkqRudSnlXds1zOdN3A.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To get started with Mastodon, you can &lt;a href="https://mastodon.social/about"&gt;sign up for free here&lt;/a&gt; or &lt;a href="https://mstdn.io/about"&gt;here&lt;/a&gt;, or dive into the deep end of choice &lt;a href="https://joinmastodon.org/#getting-started"&gt;by browsing the list of servers here&lt;/a&gt;. Or, &lt;a href="https://bridge.joinmastodon.org"&gt;use the bridge tool to find where your Twitter friends are&lt;/a&gt; and sign up there.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Huge thanks to everyone who contributed to the recent releases (&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.4.0"&gt;see the full changelogs for accreditation&lt;/a&gt;), to &lt;a href="https://joinmastodon.org/sponsors"&gt;everyone who sponsors&lt;/a&gt; the project, and to everyone who makes the network worth using by being awesome tooters! 🐘&lt;/p&gt;</description></item><item><title>#DeleteFacebook</title><link>https://blog.joinmastodon.org/2018/03/delete-facebook/</link><pubDate>Wed, 21 Mar 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/03/delete-facebook/</guid><description>&lt;p&gt;Deep down you always knew it. On the edge of your perception, you always heard the people who talked about the erosion of privacy, that there was no such thing as free cheese, that if you don’t pay — then you’re the product. Now you know that it’s true. Cambridge Analytica has &lt;a href="https://www.theguardian.com/news/2018/mar/17/cambridge-analytica-facebook-influence-us-election"&gt;sucked the data so kindly and diligently collected by Facebook and used that data to influence the US elections&lt;/a&gt; (and who knows what else).&lt;/p&gt;
&lt;p&gt;It doesn’t matter if you call it a “data breach” or not. &lt;strong&gt;The problem is how much data Facebook collects, stores and analyzes about us&lt;/strong&gt;. You now know how Facebook’s platform was used by 3rd parties to meddle in elections. Now imagine how much more effective it would be, if it wasn’t 3rd parties, but Facebook itself putting its tools to use. Imagine, for example, &lt;a href="https://www.cnbc.com/2017/08/15/mark-zuckerberg-could-be-running-for-president-in-2020.html"&gt;if Mark Zuckerberg decided to run for president&lt;/a&gt;…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#DeleteFacebook&lt;/strong&gt; is trending on Twitter. Rightfully so. Some say, “even without an account, Facebook tracks you across the web and builds a shadow profile.” And that is true. So what? Use browser extensions that block Facebook’s domains. &lt;strong&gt;Make them work for it&lt;/strong&gt;. Don’t just &lt;em&gt;hand&lt;/em&gt; them the data.&lt;/p&gt;
&lt;p&gt;Some say, “I don’t want to stop using Facebook, I want them to change.” And that is wrong. Keeping up with your friends is good. &lt;strong&gt;But Facebook’s business and data model is fundamentally flawed&lt;/strong&gt;. For you, your data is who you &lt;em&gt;are&lt;/em&gt;. For Facebook, your data is their money. Taking it from you &lt;em&gt;is&lt;/em&gt; their entire business, everything else is fancy decoration.&lt;/p&gt;
&lt;p&gt;Others will say, “I need Facebook because that’s where my audience is, and my livelihood depends on that.” And it is true. But depending on Facebook is not safe in the long-term, &lt;a href="http://splitsider.com/2018/02/how-facebook-is-killing-comedy/"&gt;as others have learned the hard way&lt;/a&gt;. Ever changing, opaque algorithms make it harder and harder to reach “your” audience. So even in this case it’s wise to look for other options and have contingency plans.&lt;/p&gt;
&lt;p&gt;There are ways to keep up with friends without Facebook. Ways that don’t require selling yourself to Big Data in exchange for a system designed around delivering bursts of dopamine in just the right way to keep you hooked indefinitely.&lt;/p&gt;
&lt;p&gt;Mastodon is one of them. There are others, too, like &lt;a href="https://diasporafoundation.org/"&gt;Diaspora&lt;/a&gt;, &lt;a href="https://www.scuttlebutt.nz/"&gt;Scuttlebutt&lt;/a&gt;, and &lt;a href="https://project.hubzilla.org/page/hubzilla/hubzilla-project"&gt;Hubzilla&lt;/a&gt;, but I am, for obvious reasons, more familiar with Mastodon.&lt;/p&gt;
&lt;p&gt;Mastodon is not built around data collection. No real name policies, no dates of birth, no locations — it stores only what is necessary for you to talk to and interact with your friends and followers. It does not track you across the web. The data it stores for you is yours — to delete or to download.&lt;/p&gt;
&lt;p&gt;Mastodon does not have any investors to please or impress, because it’s not a commercial social network. It’s freely available, crowdfunded software. Its incentives are naturally aligned with its users, so there are no ads, no dark UX patterns. It’s there, growing and growing: Over 130,000 people were active on Mastodon last week.&lt;/p&gt;
&lt;p&gt;To make an impact, we must act. It is tempting to wait until others make the switch, because what if others don’t follow? But individual actions definitely add up. One of my favourite stories from a Mastodon user is how they were asked for social media handles at a game developer conference, and when they replied with Mastodon, received understanding nods instead of confused stares. Step by step, with every new person, switching to Mastodon will become easier and easier.&lt;/p&gt;
&lt;p&gt;Now is the time to act. &lt;a href="https://joinmastodon.org"&gt;Join Mastodon today&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The Mastodon Spring Creator’s Release</title><link>https://blog.joinmastodon.org/2018/03/the-mastodon-spring-creators-release/</link><pubDate>Wed, 14 Mar 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/03/the-mastodon-spring-creators-release/</guid><description>&lt;p&gt;The development of the next version of Mastodon coincided with the reveal of Vero, yet another commercial social network silo backed by millionaires with a shady past. Vero has struck a chord, at least until people &lt;a href="https://twitter.com/_heyheytyler/status/968301107536523265"&gt;caught on to its background&lt;/a&gt;, and it wasn’t just because of its unlimited marketing budget. It has struck a chord because it promised an alternative to Instagram, which started getting progressively worse for creators after being acquired by Facebook. The algorithmic timelines have led to a reality where your post could either get lucky and be seen by all of Instagram, or never be seen by your own followers.&lt;/p&gt;
&lt;p&gt;This led me to think — what are the concrete differences between Instagram and Mastodon, and what prevents people from using Mastodon in the same way as Instagram? When you strip away the user interface, all social networks function more or less the same way: People create posts, follow each other, the posts go to the followers, and there’s varying degrees of taxonomy to categorize and browse those posts. The real difference is in the user interface, and what that interface puts emphasis on. Instagram does not allow posts without a picture or video, and the interface is adjusted to display those pictures and videos; while Mastodon does not allow posts without text, with pictures and videos being optional. And that’s the whole difference.&lt;/p&gt;
&lt;p&gt;With that in mind, I asked myself, are there any parts of Mastodon that could be optimized for the Instagram use case, without interfering with how Mastodon works overall? And the answer was yes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This release focuses heavily on the artist experience.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*Fv7moc50GJ3pWSloIWgT9g.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Since Mastodon supports a thriving app ecosystem, there are many different ways in which pictures and videos could be displayed to the viewer. To make sure that whatever aspect ratio a thumbnail is displayed in, it doesn’t cut off important bits, the new “crop” function allows you to select a focal point (or “focus” point) on the uploaded picture. That point will always stay in frame.&lt;/p&gt;
&lt;p&gt;Although you were already able to pin posts before, this feature is now complete, displaying the pinned posts in the webapp and across servers, and not just the public profile. This allows you to feature your best work, or important links or conversations. Speaking of links, attaching media to a post no longer inserts a URL into the text of the post, and image-only posts are now allowed.&lt;/p&gt;
&lt;p&gt;The media gallery in profiles has been reworked, and is now linked prominently in the webapp, on equal footing with the text-focused profile view. It was linked from a dropdown menu before, and as everybody knows, if something is in a dropdown menu, it might as well not exist. The media modal windows now fill more of the screen and support pinch-to-zoom.&lt;/p&gt;
&lt;p&gt;A lot has also been done with how Mastodon pages appear in previews on other sites and apps. With a recent update in Discord, Mastodon videos linked there are finally playable inline. Profile pages in search results now display the bio as description, instead of a random status from the profile. Artists and photographers who publish adult content are no longer disadvantaged by not having their pictures appear in the previews.&lt;/p&gt;
&lt;p&gt;You can also now backup your entire Mastodon account, including all the images and videos you uploaded, every 7 days.&lt;/p&gt;
&lt;p&gt;That’s not all. There’s a lot more, and if you want every detail, you can read the &lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.3.0"&gt;official changelog&lt;/a&gt; — I’m gradually getting better at writing those in a way that’s understandable to non-developers.&lt;/p&gt;
&lt;p&gt;Mastodon is built on open web protocols like ActivityPub, so it is possible that someone will write a piece of software that acts more like Instagram, and it will still integrate with Mastodon seamlessly — that’s how federation works, and we’re already seeing it with Mastodon and &lt;a href="https://medium.com/we-distribute/peertube-decentralized-video-powered-by-activitypub-and-webtorrent-8aaa4c3749d7"&gt;PeerTube&lt;/a&gt;. But for now, I hope that this release makes artists and photographers feel more at home on the fediverse.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you’d like to try Mastodon today, visit &lt;a href="https://joinmastodon.org/#getting-started"&gt;joinmastodon.org&lt;/a&gt;. You can select “I am an artist” from the dropdown if you’d like to see servers made specifically for art. Unlike some other platforms, it’s free!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Replacing the Pillars of the Internet</title><link>https://blog.joinmastodon.org/2018/03/replacing-the-pillars-of-the-internet/</link><pubDate>Wed, 07 Mar 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/03/replacing-the-pillars-of-the-internet/</guid><description>&lt;p&gt;&lt;em&gt;This article assumes you’ve read my previous two blog posts, &lt;a href="https://blog.joinmastodon.org/2018/02/this-isnt-about-social-media.-this-is-about-control./"&gt;here&lt;/a&gt; and &lt;a href="https://blog.joinmastodon.org/2018/02/the-centralization-of-power-on-the-internet/"&gt;here&lt;/a&gt;. Why not give them a quick read if you haven’t already?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To balance out the doom and gloom of an internet wholly under the thrall of corporate interests and fed through single channels devoid of competition, it’s worth being aware of just how pervasive and powerful an idea decentralization is in the 21st century.&lt;/p&gt;
&lt;p&gt;The structure of things now are remnants of the way things have always been done: we trust in a singular authority to manage everything behind the scenes so that our experience on this side remains seamless. ISPs, once a central requirement, are increasingly becoming outmoded, antiquated, and unnecessary. Do we need a middleman managing what is, for all intents and purposes, access to a utility?&lt;/p&gt;
&lt;p&gt;Now, the same goes for the acts of communication themselves. We don’t need centralized servers, ostensibly the property of a single organization: we live in a time when the computers we keep on our persons, on our desks, and even run as virtual instances in the cloud are powerful enough to accomplish the same ends, without the need for a profit-driven entity to do the hard work for us.&lt;/p&gt;
&lt;p&gt;Decentralization of services on the internet is critical. It has fundamentally transformed the way we share large files online already: bittorrent is, whatever you might think of it, a hugely successful demonstration of the power of decentralized services.&lt;/p&gt;
&lt;p&gt;Mastodon is more than just a twitter-like platform. It’s proof that microblogging isn’t something that needs corporate ownership to be functional. Moreover, it’s flexible: with very little tweaking Mastodon instances can operate like Instagram, like Snapchat, or like any other content that comes tucked away in a container.&lt;/p&gt;
&lt;p&gt;More than functionally-similar, it can maintain cross-compatibility, and continue to federate with instances that can run with completely different rules. One project, Peertube, does exactly this. A federated, decentralized video sharing platform using the same backend as Mastodon, but around the sharing of video clips.&lt;/p&gt;
&lt;p&gt;Outside of social media, decentralization is, and has, paved the way for radical communication. We often don’t consider this, but the World Wide Web itself is decentralized (or should be, lest we ask Facebook), and so is Email: the original federated communications system. Going forward, these ideas are taking on a new life.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/8192/1*hEV04QagABCWErJl47SRHQ.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://matrix.org/"&gt;Matrix&lt;/a&gt; is exactly the kind of exciting development that high-speed, synchronous communications have been waiting for, and more. It offers extremely secure end-to-end communication, is designed to be applicable to just about any communication channel, and ready for enterprising developers to implement it. Not later, but now: you can start using Matrix immediately.&lt;/p&gt;
&lt;p&gt;This is a serious development: serious enough that the forthcoming Librem-5 phone from &lt;a href="https://puri.sm/shop/librem-5/"&gt;Purism&lt;/a&gt; incorporates it natively.&lt;/p&gt;
&lt;p&gt;Let’s think about the future, by thinking about the present.&lt;/p&gt;
&lt;p&gt;Despite the current US political climate, many states are enshrining net neutrality rules that disallow ISPs to play favorites with traffic. This is, to my mind, a powerful step to ensuring they operate as utilities and not as luxuries.&lt;/p&gt;
&lt;p&gt;But do we need ISPs at all? Many communities have sued large ISPs for failing to deliver on contracts, and opt instead to install and manage extremely high-speed fiber optic networks themselves. In New York, this has gone one step further: &lt;a href="https://nycmesh.net/"&gt;NYMesh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/6104/1*vLtFVPTHJGDfw3XOl4C1Sw.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;A decentralized, high-speed network that operates from node to node, independent from ISPs, and at no profit. Not only is it community-owned and oriented for public use, it’s functional even during emergencies, for anyone willing to participate. The speeds it delivers are comparable, and exceed, what you can get from traditional ISPs at reasonable prices.&lt;/p&gt;
&lt;p&gt;As hardware improves for line-of-sight data transmission and for mesh networks to operate phone-to-phone, or even from local wireless repeaters owned and maintained at the municipal level, the need for corporate structures to exist as a measure of control disappears altogether. We are on the cusp of a massive shift towards an end to the central control of our experiences, but only if we’re willing to make the changes individually.&lt;/p&gt;
&lt;p&gt;Mastodon isn’t the first decentralized anything, but it’s the first real proof that we can have what, until recently, has only been promised by huge corporations at the cost of our privacy, our data, and our intellectual freedom. It gives back a platform; the first of many.&lt;/p&gt;
&lt;p&gt;How long until someone develops a way to host a facebook-alike platform without the need for a centralized server? It doesn’t have to be long: we have the means today, all we need now is the will to change.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get started with Mastodon, go to &lt;a href="https://joinmastodon.org/"&gt;JoinMastodon.org&lt;/a&gt; and pick a place to call home! Use the drop-down menus to help narrow your search by interest and language, and find a community to call your own! Don’t let the fediverse miss out on what you have to say!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Twitter is not a public utility</title><link>https://blog.joinmastodon.org/2018/03/twitter-is-not-a-public-utility/</link><pubDate>Sat, 03 Mar 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/03/twitter-is-not-a-public-utility/</guid><description>&lt;p&gt;Isn’t it a bit strange that the entire world has to &lt;a href="https://twitter.com/jack/status/969234275420655616"&gt;wait on the CEO of Twitter to come around on what constitutes healthy discourse&lt;/a&gt;? I am not talking about it being too little, too late. Rather, my issue is with “instant, public, global messaging and conversation” being entirely dependent on one single privately held company’s whims. Perhaps they want to go in the right direction right now for once, but who’s to say how their opinion changes in the future? Who is Twitter really accountable to except their board of directors?&lt;/p&gt;
&lt;p&gt;I still find it hard to believe when Jack Dorsey says that Twitter’s actions are not motivated by a drive to increase their share price. Twitter must make their shareholders happy to stay alive, and it &lt;em&gt;just so happens&lt;/em&gt; that bots and negative interactions on their platform drive their engagements metrics upwards. Every time someone quote-tweets to highlight something toxic, it gets their followers to interact with it and continue the cycle. It is known that &lt;a href="https://www.youtube.com/watch?v=rE3j_RHkqJc"&gt;outrage spreads quicker&lt;/a&gt; than positive and uplifting content, so from a financial point of view, it makes no sense for Twitter to get rid of the sources of outrage, and their track record is a testament to that.&lt;/p&gt;
&lt;p&gt;In my opinion, “instant, public, global messaging and conversation” should, in fact, be &lt;em&gt;global&lt;/em&gt;. Distributed between independent organizations and actors who can self-govern. A public utility, without incentives to exploit the conversations for profit. A public utility, to outsurvive all the burn-rate-limited throwaway social networks. This is what motivated me to create &lt;a href="https://joinmastodon.org"&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Besides, Twitter is still approaching the issue from the wrong end. It’s fashionable to use machine learning for everything in Sillicon Valley, and so Twitter is going to be doing sentiment analysis and whatnot when in reality… You just need human moderators. Someone users can talk to, who can understand context. Unscalable for Twitter, where millions of people are huddled together under one rule, but natural for Mastodon, where servers are small and have their own admins.&lt;/p&gt;
&lt;p&gt;Twitter is not a public utility. This will never change. And every tweet complaining about it simply makes their quarterly report look better.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get started with Mastodon, go to &lt;a href="https://joinmastodon.org/"&gt;joinmastodon.org&lt;/a&gt; and pick a place to call home! Use the drop-down menus to help narrow your search by interest and language, and find a community to call your own! Don’t let the fediverse miss out on what you have to say!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>The Centralization of Power on the Internet</title><link>https://blog.joinmastodon.org/2018/02/the-centralization-of-power-on-the-internet/</link><pubDate>Wed, 28 Feb 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/02/the-centralization-of-power-on-the-internet/</guid><description>&lt;p&gt;The online space is dominated by a small handful of companies that command a disproportionate amount of power and influence over the entire online experience, not just social media. So much influence that several of these companies have fundamentally altered many aspects of life offline; often described with the floral language of the privileged as ‘disruptive,’ but more clearly understood in the common tongue as ‘destructive.’’&lt;/p&gt;
&lt;p&gt;The five most valuable companies at the end of 2017 were, in order: Apple, Alphabet (the company that owns Google), Microsoft, Amazon, and Facebook. each business not only depends on, but commands large parts of the technological landscape. What do all these companies have in common?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each are worth north of half a &lt;em&gt;trillion&lt;/em&gt; dollars&lt;/li&gt;
&lt;li&gt;They dictate the online experience, not describe it&lt;/li&gt;
&lt;li&gt;They push extremely hard to have a closed ecosystem&lt;/li&gt;
&lt;li&gt;They are monolithic, centralized power structures with unimaginable influence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These companies all are attempting to dominate the metaphorical place I generally call ‘the last mile’. This is, in shipping, the distance from the distribution center to your door, but it’s a term that can apply to the space between the content and your computer. If a website publishes news, or videos, or any sort of media at all, these are the companies that work to force it through a portal they own, rather than let you, as a user, leave their experience and go someplace else.&lt;/p&gt;
&lt;p&gt;Control of this last mile is something that should be in the hands of people, and not centralized inside a corporate structure. Imagine an internet experience where you could never leave the walls of Facebook, or you couldn’t watch a movie, or a video, or even see a picture, outside of something with a ubiquitous Google logo in the corner.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://splitsider.com/2018/02/how-facebook-is-killing-comedy/"&gt;In a recent article at Splitsider&lt;/a&gt;, Sarah Aswell speaks with Matt Klinman about the effect Facebook has had with online comedy and, in a sense, the overall problem it’s had on all forms of media as they occur on the internet. Go ahead and read it; I’ll be right here.&lt;/p&gt;
&lt;p&gt;Facebook’s attempt at consolidating the entire internet experience through their initiative &lt;a href="https://info.internet.org/en/"&gt;internet.org&lt;/a&gt; and collaborative partnerships therein are a direct way to deny the developing world the sort of unregulated, unflattened internet experience we take for granted, and are rapidly losing. Imagine more than half the world’s population never experiencing an internet of possibility, of different voices, of free expression, that wasn’t designed to be under the total provisional control of Facebook, including its direct need to control the entire pipeline for publishing all content, monetizing all experiences, and forcing advertising at the user.&lt;/p&gt;
&lt;p&gt;Consider what Klinman said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Facebook is essentially running a payola scam where you have to pay them if you want your own fans to see your content. If you run a large publishing company and you make a big piece of content that you feel proud of, you put it up on Facebook. From there, their algorithm takes over, with no transparency. So, not only is the website not getting ad revenue they used to get, they have to pay Facebook to push it out to their own subscribers. So, Facebook gets the ad revenue from the eyeballs on the thing they are seeing, and they get revenue from the publisher. It’s like if The New York Times had their own subscriber base, but you had to pay the paperboy for every article you wanted to see.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Think about Amazon, and it’s attempt to control the commercial, mercantile experience.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/7744/1*1_pQeoTAbj_-uux6bZaOBg.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Consider every store on Amazon: identical in many ways, with little to nothing allowing one to differentiate from another. The only details highlighted are: cost of item, shipping rates, and is it prime available. It homogenizes the entire experience of purchasing online and drives everyone to a single site to buy. Once it has the only reasonable online space to shop, it takes total control over the vendors, their ability to sell, and can arbitrarily charge people to be able to participate in their space. Just like Facebook and publishers of content.&lt;/p&gt;
&lt;p&gt;Amazon’s push to dominate the last-mile of delivery means they would own every part of the pipe: who gets to sell, who sees the products, and when it arrives. It runs shipping competition out of business and privatizes every step under a single brand. If you want to compete on the market, you have to chase prices to the bottom you can survive on, or you’ll be eliminated. Amazon’s goal, like Facebook’s, is to absolutely conquer the space and disallow any competition at all.&lt;/p&gt;
&lt;p&gt;Even looking in the recent past, you can see this pattern playing out, over and over. Amazon buys Whole Foods to take over a large segment of physical shelf space for grocery shopping. Social alternatives like Instagram, WhatsApp, Periscope, and more, and bought and folded into a single experience, changed from update to update, until it becomes a homogeneous experience with no discernible difference from the company that owns it.&lt;/p&gt;
&lt;p&gt;Centralized control takes away the power of choice, and replaces it with an illusion of selection.&lt;/p&gt;
&lt;p&gt;Mastodon is a powerful first start in allowing people to take back their channels of engagement. It gives everyone an opportunity to, in part, diversify their online social universe, and prevent money from being the sole deciding factor in who gets to see, hear, or say anything on the internet.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get started with Mastodon, go to &lt;a href="https://joinmastodon.org/"&gt;JoinMastodon.org&lt;/a&gt; and pick a place to call home! Use the drop-down menus to help narrow your search by interest and language, and find a community to call your own! Don’t let the fediverse miss out on what you have to say!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>How to start a Mastodon server</title><link>https://blog.joinmastodon.org/2018/02/how-to-start-a-mastodon-server/</link><pubDate>Fri, 23 Feb 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/02/how-to-start-a-mastodon-server/</guid><description>&lt;p&gt;So you want to be part of the Mastodon network, and you want to truly own your data, independent of anyone else. Perhaps you want to curate a niche community for a specific interest, or maybe for your own family or close circle of friends. You went &lt;a href="https://docs.joinmastodon.org/"&gt;through the documentation&lt;/a&gt; and installed the software, or maybe you chose &lt;a href="https://joinmastodon.org/servers"&gt;one of the available&lt;/a&gt; &lt;a href="https://masto.host"&gt;hosting options&lt;/a&gt; to avoid all the technical nonsense altogether. What’s next?&lt;/p&gt;
&lt;p&gt;There are three categories of things you’ll be doing: Customization, federation and promotion. If your community is going to be private, you can skip that last part.&lt;/p&gt;
&lt;h3 id="customization"&gt;Customization&lt;/h3&gt;
&lt;p&gt;After logging in (with admin privileges on your account!), navigate to Administration -&amp;gt; Site Settings. At the top of the page is the most important information about your server. You may leave the title as Mastodon, but you absolutely should:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Specify a contact e-mail address, so people know who to reach out to if all else fails&lt;/li&gt;
&lt;li&gt;Username of a contact person (usually it’s your own username), so people can see who owns the server&lt;/li&gt;
&lt;li&gt;A one-paragraph description of what your server is about or what differentiates it from others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also upload a (preferably) 1200x630px picture to be used as thumbnail for when your server is linked from other websites, such as Slack, Discord and Twitter. JoinMastodon.org also displays that thumbnail when listing your server (more on that later).&lt;/p&gt;
&lt;p&gt;The next and last crucial part is adding a code of conduct. This is not necessary for private servers, but if you expect strangers to sign up, you need it. A code of conduct delineates what sort of community and what sort of content you want to host. If you don’t know where to start, a lot of servers have copied the &lt;a href="https://gist.github.com/Gargron/c2925b9ad7f5e87bf40c57a48de50474"&gt;code of conduct from mastodon.social&lt;/a&gt;, which has been collaboratively drafted by its community.&lt;/p&gt;
&lt;h3 id="federation"&gt;Federation&lt;/h3&gt;
&lt;p&gt;You should &lt;em&gt;not&lt;/em&gt; be starting your own server if you’re totally new to Mastodon, &lt;em&gt;unless&lt;/em&gt; you have a private community you’re bringing with you. In a decentralized system like Mastodon, content travels through a web of personal connections, so if you don’t have any connections, you don’t have any content. You should start with an account on a reasonably active Mastodon server and find people you like.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Then&lt;/em&gt; you should bring those connections with you to your own server. That can be quite simple if, on the other server, you go to Settings -&amp;gt; Data Export and download your following list as a CSV file, and finally on your own server, you go to Settings -&amp;gt; Import and upload that file. From my experience, you should follow at least 40 or 50 active people from other servers to kickstart your own. That ensures a steady flow of new content — on your home timeline it’s just those people you follow, but on the federated timeline, it’s them and the people they share and interact with.&lt;/p&gt;
&lt;p&gt;I might be biased, but I find that following admins of other servers is usually a good choice. Usually, they share a lot of content from their users, so you get some insight into their entire community. You might feel compelled to do the same when you get your own users, too.&lt;/p&gt;
&lt;p&gt;When new people join your server, they will have something to look at and so will be more likely to stick around.&lt;/p&gt;
&lt;h3 id="promotion"&gt;Promotion&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://joinmastodon.org"&gt;JoinMastodon.org&lt;/a&gt; is meant to do some of this work for you. It pulls its data from instances.social, an independent directory of Mastodon servers. Once you have a contact e-mail address configured in your Site Settings, you should sign up on &lt;a href="https://instances.social/admin"&gt;instances.social&lt;/a&gt; and fill out which languages and which categories you want to be listed under. As long as you have open registrations and at least one active user, you should appear on JoinMastodon.org (I cannot guarantee this, however — the priority of JoinMastodon.org is to onboard new users as smoothly as possible, not necessarily to promote each and every admin). In any case, you will appear on instances.social, and that’s important too.&lt;/p&gt;
&lt;p&gt;Beyond that… Community building is magic, and there is no one formula for it. Spread it in your group of friends. When you see people on other social media express interest in alternatives to those platforms, plug your instance. Good luck 😋&lt;/p&gt;</description></item><item><title>This Isn’t About Social Media. This is About Control.</title><link>https://blog.joinmastodon.org/2018/02/this-isnt-about-social-media.-this-is-about-control./</link><pubDate>Mon, 19 Feb 2018 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2018/02/this-isnt-about-social-media.-this-is-about-control./</guid><description>&lt;p&gt;Human beings, above all else, are storytellers. It’s how we relate to our own past, or personalities, or each other. It’s how to connect with the world around us, make sense of events, and assess values. We rely on stories to function as agents in the world.&lt;/p&gt;
&lt;p&gt;These stories are often told in-person: “oh, I did this today, I felt like this, then this happened and I was like ‘whoa no way!’” In times past, we relied on an oral tradition to pass on values, moving towards the written form as literacy grew and cities became the primary way people lived.&lt;/p&gt;
&lt;p&gt;Social media was, in a sense, a way to bring the oral tradition to the written world: a living discourse of our personal histories as it happened, recorded in the way we chose suited the narrative best. We could disagree on the details because the details weren’t as important to the story as the telling.&lt;/p&gt;
&lt;p&gt;But now, the story itself is being told for us.&lt;/p&gt;
&lt;p&gt;Our histories, our sense of belonging to the narrative we create, is under constant revision. Facebook and Twitter took away linear history from us. We don’t see our participation, we see our contributions, and only if they’re popular enough with our peers (and therefore, advertisers) to generate traffic.&lt;/p&gt;
&lt;p&gt;We get a gloss, an abstract of our personal story, cut together with posts we neither wrote nor relate to. Our history and interests, the very way we define ourselves, is cut together with elements from what has been decided to be profitable, and therefore interesting, to maximize our engagement with a false telling of history.&lt;/p&gt;
&lt;p&gt;We have effectively lost our agency in telling ourselves, and each other, the stories that define who we are. By inches, our control over identity has been eroded, monetized, and sold.&lt;/p&gt;
&lt;p&gt;Before I go further, I want to talk about ‘The Self Driven Child’; a book recently covered at &lt;a href="https://www.scientificamerican.com/article/the-case-for-the-ldquo-self-driven-child-rdquo/"&gt;Scientific American&lt;/a&gt;. It’s an interesting read throughout, but the important takeaway is this: the gradual loss of autonomy in the lives of children and adolescents has led to a marked increase in rates of anxiety and depression, an overall increase in the occurrence of mental health issues, and worsened sleep.&lt;/p&gt;
&lt;p&gt;This is more than simply a removal of choice in activities: our sources of distractions have increased, the freedom for many to choose has been replaced by homework and structured activities over agency and free time.&lt;/p&gt;
&lt;p&gt;The online space, particularly the venues of Facebook and Twitter, have slowly replaced the agency of the participant with a structured, gamified facsimile, and they’ve been doing it for over a decade. In fact, they’ve been doing it long enough that for many people, they never knew a version of it that wasn’t entirely out of their hands.&lt;/p&gt;
&lt;p&gt;When the linear timeline was removed in favor of their own algorithmic sort, they removed our control over the conversation entirely. Instead of you and your friends in discourse with each other, you’re talking around the sources of content you’re being told to see, read, and like. You are in direct competition with a corporate notion of your personal history, identity, and relationships.&lt;/p&gt;
&lt;p&gt;This can be seen most effectively with Instagram: the timeline is filled with sponsored content from strangers, ads indistinguishable from real posts, “suggestions” and even injections into your search history and tags, and more: this isn’t a case of being given suggestions for ‘things you might like’. This is you being told, explicitly, what to like. Your history isn’t a record anymore; it’s a matter of corporate revision under strict audit.&lt;/p&gt;
&lt;p&gt;“But we’re free to participate, or not, on these platforms,” you’ll say. And yes, you’re right; we can take our ball and go home.&lt;/p&gt;
&lt;p&gt;But we won’t, and we shouldn’t have to.&lt;/p&gt;
&lt;p&gt;It’s naïve to think that we should choose to not participate in public discourse if we’re unhappy with the current social media zeitgeist. More than a luxury, the norm for many, many people in the world today is access to communication and discourse with people around the world, irrespective of borders or ideology, politics or religion. It’s as unrealistic to suggest simply not participating in social media as it is to suggest not paying for electricity, foregoing the internet, or cancelling your phone. Doable, sure; but frankly ridiculous for most of us.&lt;/p&gt;
&lt;p&gt;We need a platform that isn’t owned by corporate interests, geared towards the collection and sale of personal information, or the monetization of the social experience through aggressive depersonalization and the service of advertising.&lt;/p&gt;
&lt;p&gt;This is why we need Mastodon.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get started with Mastodon, go to &lt;a href="https://joinmastodon.org/"&gt;joinMastodon.org&lt;/a&gt; and pick a place to call home! Use the drop-down menus to help narrow your search by interest and language, and start tooting!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mastodon 2.0</title><link>https://blog.joinmastodon.org/2017/10/mastodon-2.0/</link><pubDate>Thu, 19 Oct 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/10/mastodon-2.0/</guid><description>&lt;p&gt;About 6 months have passed since &lt;a href="https://medium.com/@Gargron/april-post-mortem-12e3d141878c"&gt;April&lt;/a&gt;, during which the major mainstream breakthrough of our decentralized social network took place. From 20,000 users to almost a million! What better time to run through a couple examples of what’s been introduced since then?&lt;/p&gt;
&lt;p&gt;Mastodon is defined by its focus on good user experience, polished design and superior anti-abuse tools. In that vein, the web app has received numerous updates. Using the latest browser features, the web app receives real push notifications, making it almost indistinguishable from a native mobile app. It works faster and looks smoother thanks to many performance and design improvements.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://cdn-images-1.medium.com/max/2560/1*6xTFy4K4JWq9nd6bXNbgmw.jpeg" class="rounded-lg shadow-lg"
 alt="Mastodon with lots of columns pinned"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Mastodon with lots of columns pinned&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;On the desktop, it allows you to add, remove and rearrange columns. It can even be navigated and controlled using hotkeys!&lt;/p&gt;
&lt;p&gt;When you get annoyed by notifications for a toot of yours that’s gone viral, or a conversation you’ve been tagged in that you no longer have interest in, you have the ability to simply mute the whole thread. If you keep encountering content you hate and it always comes from a specific domain, but your admins won’t do anything about it (or perhaps it’s annoying, but merely on a personal level), you no longer have to rely on your admin: You can simply hide everything from a particular domain for yourself.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://cdn-images-1.medium.com/max/2000/1*CCHSuaR7daptHcIwl3J6Wg.png" class="rounded-lg shadow-lg"
 alt="One instance’s preview in Discord"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;One instance’s preview in Discord&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;A lot of attention has been given to how the user interface presents itself to onlookers. Both in terms of OpenGraph tags, which is to say, how links to Mastodon look when shared on other social networks or apps like Discord, and in terms of the sign-up, about, profile, toot and hashtag pages. The profile pages let you filter someone’s toots, for example to only see ones that include pictures or videos, which is a great addition for all artists and photographers. The sign up and hashtag pages do a better job of showing what’s actually inside in terms of content.&lt;/p&gt;
&lt;p&gt;Mastodon is a global experience. That means a lot of language diversity. Since most people don’t know most languages, language filters have been added so you can decide which ones to see.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://cdn-images-1.medium.com/max/2000/1*bTH8BapEkzwwDnchjAa6_w.png" class="rounded-lg shadow-lg"
 alt="Custom emoji in action"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Custom emoji in action&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Another addition is custom emoji. That is a concept more familiar to Discord and Twitch users, but it’s a first for a social network. Custom emoji add flavours to instances and allow people to express very specific things that could never be conveyed by standardized Unicode characters.&lt;/p&gt;
&lt;p&gt;There are a lot of other small features and important fixes. Better logos, better icons, ongoing improvements to accessibility such as image descriptions for screen readers; upgrades to the protocol, better APIs… &lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v2.0.0"&gt;You can view the detailed release notes of 2.0 here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’s also worth mentioning that the central resource for the Mastodon project is now the &lt;a href="https://joinmastodon.org"&gt;joinMastodon.org&lt;/a&gt; website, which explains the benefits of decentralization, links to all related resources, lists the project’s sponsors, and most importantly, provides an overview of the existing network. If you want to tell someone about Mastodon, you’ve got two options now— invite them over to the instance you’re using, or link them to joinMastodon.org where they’ll pick one on their own.&lt;/p&gt;
&lt;p&gt;More than ever people need an escape hatch, an alternative to commercial networks that are incentivized to keep bad actors around to drive engagement, that sell your time and screen estate to advertisers and then throw you out without recourse for saying a bad word to a celebrity. Mastodon is that hatch. It’s an alternative reality where communities know and care about each other and moderators aren’t far away from the users. Free software stands first and foremost for the freedom of its user.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get started with Mastodon, go to &lt;a href="https://joinmastodon.org/"&gt;joinMastodon.org&lt;/a&gt;. If the choices are too overwhelming, quick recommendations of good and well-populated servers are: &lt;a href="https://octodon.social/about"&gt;octodon.social&lt;/a&gt;, &lt;a href="https://social.tchncs.de/about"&gt;social.tchncs.de&lt;/a&gt;, &lt;a href="https://mastodon.art/about"&gt;mastodon.art&lt;/a&gt;, &lt;a href="https://mstdn.io/about"&gt;mstdn.io&lt;/a&gt;, &lt;a href="https://mastodon.technology/about"&gt;mastodon.technology&lt;/a&gt;, &lt;a href="https://mastodon.rocks/about"&gt;mastodon.rocks&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Redecentralize now!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mastodon and the W3C</title><link>https://blog.joinmastodon.org/2017/09/mastodon-and-the-w3c/</link><pubDate>Sun, 10 Sep 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/09/mastodon-and-the-w3c/</guid><description>&lt;p&gt;&lt;em&gt;&lt;a href="https://joinmastodon.org"&gt;Mastodon&lt;/a&gt; is a free, open-source federated social network spanning over 800,000 users spread across more than 2,000 servers.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.6.0"&gt;Mastodon v1.6&lt;/a&gt; is here, and it is the first Mastodon release which fully implements the ActivityPub protocol. &lt;a href="https://www.w3.org/TR/activitypub/"&gt;ActivityPub&lt;/a&gt; is a new federated messaging protocol developed by the World Wide Web Consortium (W3C) which aims to fix the shortcomings of past standards like &lt;a href="https://en.wikipedia.org/wiki/OStatus"&gt;OStatus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mastodon is one of the first platforms, and certainly the first major platform to implement this new standard and prove it in the wild. It was a natural upgrade for our project, as we long ago reached the limits of what OStatus was capable of. And what we needed was better privacy, better defaults, better cryptographic verifiability, and better distribution mechanisms.&lt;/p&gt;
&lt;p&gt;This protocol is also very flexible in what it allows you to express and it is naturally extensible as it is based on &lt;a href="https://en.wikipedia.org/wiki/JSON-LD"&gt;JSON-LD&lt;/a&gt;. Besides allowing Mastodon to fully and reliably exchange the data it currently needs to exchange, it also has a lot of potential for future developments in the area of distributed identities and end-to-end encryption.&lt;/p&gt;
&lt;p&gt;Servers which support this new protocol will use it in version 1.6. OStatus is still available as a full-fledged fallback.&lt;/p&gt;
&lt;p&gt;Here are some of the juicier highlights from this release:&lt;/p&gt;
&lt;p&gt;1. We’ve improved the integrity of distributed conversations. Up until now, the only server which had a full view of a conversation was the server of the conversation’s starter, as all responders sent their replies to it. But the servers of the responders or followers had only an incidental view of the conversation conversation; to get a full view, one would have to either follow the other responders, or get a reply from the conversation starter. Now, the server that receives the replies forwards them to followers’ servers as long as they are public. This means that when opening the conversation view on a different server, it will be as complete as on the origin server. This is especially helpful to those who run single-user instances, as they are the least likely to have already been following all responders.&lt;/p&gt;
&lt;p&gt;2. Another feature, which is small, but has a big UX effect, is that we can finally fetch account statistics from remote profiles (total toots, number of followers, etc.), as there is now a standardized way of expressing this using ActivityPub. Technically this is not a big deal, but it did confuse new users when they saw someone from another server with a seemingly empty profile, when in reality it had thousands of toots and followers.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*dKhj4RnceIzmX2zs5Zn2UQ.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;3. Speaking of profiles, this release brings you redesigned public profile pages, as well as the ability to pin certain toots on them to be permanently displayed. By default, stand-alone toots are displayed, and there are now tabs for toots with replies and toots with media.&lt;/p&gt;
&lt;p&gt;4. The function of getting embed codes for toots is now more accessible — through a button in the web UI, and not just through the OEmbed API. The look of the embedded view has also been refurbished, and an optional script has been added to ensure the embeds have the correct height. I am excited to see Mastodon content appear on other websites.&lt;/p&gt;
&lt;p&gt;5. To improve the experience of brand new users, we’ve added something in the old tradition of MySpace Tom — except instead of following some central Tom, new accounts will start off following their local admins (this can be adjusted by the administrator). That way, on your first login you are greeted with a populated home timeline instead of an empty one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;All in all, this release is all about filling the gaps in the server-to-server layer, improving content discovery and first time experience of new users, and making it easier to share Mastodon content.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Big shout-out to &lt;a href="https://octodon.social/@cwebber"&gt;Chris Webber&lt;/a&gt;, &lt;a href="https://puckipedia.com/social"&gt;Puck Meerburg&lt;/a&gt;, and &lt;a href="https://mstdn.maud.io/@unarist"&gt;Unarist&lt;/a&gt; specifically, and to the W3C Social Working Group in general for helping put everything together.&lt;/p&gt;
&lt;p&gt;Likewise none of this would be possible without the &lt;a href="https://github.com/tootsuite/documentation/blob/master/Contributing-to-Mastodon/Sponsors.md"&gt;support of our patrons&lt;/a&gt;. Thank you!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mastodon is free, open-source software. The development is crowdfunded through &lt;a href="https://www.patreon.com/mastodon"&gt;Patreon&lt;/a&gt; and &lt;a href="https://liberapay.com/Mastodon/"&gt;Liberapay&lt;/a&gt;. The source code is available on &lt;a href="https://github.com/tootsuite/mastodon"&gt;GitHub&lt;/a&gt;. General information and a list of instances is available on &lt;a href="https://joinmastodon.org"&gt;joinmastodon.org&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>M for Mastodon</title><link>https://blog.joinmastodon.org/2017/08/m-for-mastodon/</link><pubDate>Tue, 01 Aug 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/08/m-for-mastodon/</guid><description>&lt;p&gt;&lt;em&gt;My name is Eugen Rochko and I’m the creator of Mastodon, a free, open-source federated social network with over 760,000 users. &lt;a href="https://joinmastodon.org"&gt;You can check it out here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Mastodon project is finally well-represented visually. I always felt like the previous logo did not do it justice. To its credit, it was both an M, and 3 sideways speech bubbles, but it did not scale well and overall it was just a circle. Now, after months of planning and weeks of back and forth with the designer, we have a distinct shape and a distinct font.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/3318/1*LG72b92ZTWP9Ki8eHYh7Rg.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Along with the logo, we now have a beautiful homepage for the project itself. The kind of link you can send to someone to show them what Mastodon is without committing to any particular instance — &lt;a href="https://joinmastodon.org"&gt;joinmastodon.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2000/1*t52d6kXeB9ydAe8JLcUUjw.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;And as all good things come in threes, the landing page distributed along with the software itself — the instance frontpage if you will — has also been refurbished. Now that there is a project homepage to differentiate itself, the instance frontpage puts more effort into presenting a particular instance’s identity, rather than the underlying software. The name and the customizable description have a lot more prominence.&lt;/p&gt;
&lt;p&gt;And something that’s been requested since literally day one of the project is finally here too — the frontpage now features a preview of the public timeline (“firehose”, if you will) of the instance, thereby letting you get a taste of what’s inside this hip new social network. Though instances that prefer to stay mysterious can still opt-out of that new feature.&lt;/p&gt;
&lt;p&gt;All of the above comes bundled &lt;a href="https://github.com/tootsuite/mastodon/releases"&gt;in our 1.5 release&lt;/a&gt;. But that’s just the tip of the iceberg. The other cool stuff can be classified into five main categories: quality of life improvements, admin features, mobile experience and accessibility, and other.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quality of Life improvements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Previous behaviour of “content warning” and “media sensitivity” being completely separate was confusing to most. This has been simplified. Media can be sensitive without hiding the text, but hiding the text with a content warning will now always hide the media, too.&lt;/li&gt;
&lt;li&gt;A new preference setting to always pre-mark media as sensitive on your account.&lt;/li&gt;
&lt;li&gt;A new preference setting to opt your public profile out of search engine indexing.&lt;/li&gt;
&lt;li&gt;A new preference setting to have the web UI displayed using your operating system’s native font instead of Roboto.&lt;/li&gt;
&lt;li&gt;When editing your profile, you now get a preview of your avatar and header. The operating system’s “no file selected” label on file inputs confused people.&lt;/li&gt;
&lt;li&gt;The muting feature has been adjusted. Previously it was meant only to hide someone’s toots from timelines, not to hide them from your notifications (e.g. you’d mute a friend who is annoying in general but you want to hear from when they’re talking to you). By popular demand this has been changed to block notifications, too, essentially becoming a stealth-block.&lt;/li&gt;
&lt;li&gt;The overview of active sessions is now a lot more accurate, and you can now revoke a session.&lt;/li&gt;
&lt;li&gt;The disparity between toots/following/follower numbers on the local instance vs user’s origin instance was also confusing. There was an asterisk next to the numbers with a disclaimer that they may not be accurate, but it was way too invisible. Now, profiles of users who originate from a different instance display a prominent disclaimer with a link to view the full profile.&lt;/li&gt;
&lt;li&gt;The character counter now ignores the domain part of user handles, and treats all links as 23 characters long, regardless of how long they are. This removes the unfair penalty of users whose domain is longer, and allows you to not worry about the length of the URLs you are sharing, since they get shortened visually anyway.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mobile experience and accessibility:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We now have Web Push notifications. It is a method of sending notifications directly to the browser, without having to use a native app (opt-in, of course). It is a relatively new web standard, which more and more browsers are implementing and it blurs the line between mobile website and native app.&lt;/li&gt;
&lt;li&gt;The swiping gestures have not only been adjusted to be less sensitive, but are now accompanied by visual feedback — no more accidental swiping between columns.&lt;/li&gt;
&lt;li&gt;Another feature making use of an upcoming web standard, which is a bit newer and may not be available in any browsers yet, is the “share” button, which acts like the “share” feature of native apps.&lt;/li&gt;
&lt;li&gt;All dropdown menus now open as modal windows on mobile, making it much easier to hit the right item.&lt;/li&gt;
&lt;li&gt;Multiple accessibility improvements — too many to list here, but including improved contrasts, screen reader support, and keyboard access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Admin features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Admins will now receive immediate e-mail notifications about new reports.&lt;/li&gt;
&lt;li&gt;For troubleshooting, admins now have a button to re-subscribe to accounts from a particular domain.&lt;/li&gt;
&lt;li&gt;Added a domain block option that does nothing but reject local cache of media files.&lt;/li&gt;
&lt;li&gt;The contents of the /terms page can now be customized entirely if you want a different privacy policy than the default one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Other:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have previously mentioned that Mastodon is looking to implement a newer federation protocol, ActivityPub, to replace OStatus in the very long term. This protocol itself is a work in progress incredibly close to being done, and I’m working closely with the W3C working group responsible to make sure the needs of the Mastodon project are well met, along with many other developers.&lt;/p&gt;
&lt;p&gt;The implementation of a completely new underlying protocol in Mastodon is not easy. It has been an ongoing effort for a couple months, and it is split into stages. With this release, one stage of the implementation is ready — ActivityPub-compatible representations of public data. This is just a first step, but I’m proud of it anyway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The fight for an ethical, decentralized internet is not over&lt;/strong&gt;. We have made a significant impact in April, we’ve gotten big in Japan, but we need to keep going! We need a couple more months like April to cement our position in the public perception, to nurture the idea that no, you &lt;em&gt;don’t&lt;/em&gt; have to just succumb to surveillance capitalism to hang out with friends and reach an audience. I truly hope that this release is another step in the right direction, in making it easier to convince people to use Mastodon.&lt;/p&gt;
&lt;p&gt;I want to conclude this post by giving shout-outs to the people who make the development of this project possible —&lt;a href="https://github.com/tootsuite/documentation/blob/master/Contributing-to-Mastodon/Sponsors.md"&gt; my patrons&lt;/a&gt;. Likewise, to &lt;a href="https://toot.cafe/@sorin"&gt;Sorin Davidoi&lt;/a&gt; for implementing a huge chunk of the mobile experience improvements. To &lt;a href="http://patreon.com/dopatwo"&gt;Dopatwo&lt;/a&gt;, for providing me with a steady supply of adorable elephant friends, and to &lt;a href="http://www.jin-nguyen-portfolio.com/"&gt;Jin Nguyen&lt;/a&gt;, who designed our new logo.&lt;/p&gt;</description></item><item><title>April post-mortem</title><link>https://blog.joinmastodon.org/2017/04/april-post-mortem/</link><pubDate>Tue, 25 Apr 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/04/april-post-mortem/</guid><description>&lt;p&gt;&lt;em&gt;This is an update for &lt;a href="https://patreon.com/user?u=619786"&gt;my Patreon supporters&lt;/a&gt;. It is posted on Medium because of its superiour formatting capabilities.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So, April, huh. A lot happened. I was putting off writing an update on here because I knew I had to go into detail on all the things that happened, and that’s quite a daunting task. Before I dive into things, a couple short notices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The way I work with the GitHub repository has changed. I no longer work directly on the master branch. I (and other volunteers) work on feature branches. Something can only be merged into the master branch through a pull request that receives a review and approval from at least one trusted contributor. This means that the master branch is a lot more stable, and there is a lot more accountability for who does what and when. However, &lt;strong&gt;the master branch is still not a stable enough medium for the (literally) thousands of Mastodon instances running in production&lt;/strong&gt;. Therefore, we now do &lt;strong&gt;actual releases&lt;/strong&gt; — v1.1, v1.2, v1.2.2 etc. The releases now contain detailed changelogs, linking back to the pull requests in which the changes were made, with a list of all contributors for the release at the bottom. This replaces the changelogs I was publishing on this blog.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;With 666 patrons (hah!) individually managing the sponsors list is no longer viable. I will be automating it from the CSV export in Patreon. This means the sponsors list will be using the username you have on Patreon and link to your Patreon profile.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;So, April, huh&lt;/strong&gt;. Twitter changed the reply system, which everybody told them they shouldn’t do, and then removed the iconic egg avatar for new users, and suddenly all of my work of telling people that one day Twitter would do something they didn’t like and they’d need a viable alternative paid off. Mastodon caught on on Infosec Twitter, which is both huge and influential, and (somehow, I do not quite understand how) also French Twitter. France really likes free software and decentralization, as it turns out! Think explosion of users from 20,000 to 42,000 in the span of two days. Most importantly, this offset a wave of press attention, from French journals to tech journals to non-tech journals. I had phone and text interviews with The Verge, Mashable, Wired, Engadget and more. I actually don’t remember exactly, because I chose not to read the resulting (or any) articles for the sake of my mental health. (On the other hand, my mother collected them all). &lt;a href="https://twitter.com/mastodonmusic/status/849424628401541121"&gt;The Mastodon band has playfully acknowledged the project&lt;/a&gt;. We also witnessed the birth of a meme of a man not being able to be found by William Shattner.&lt;/p&gt;
&lt;p&gt;Did I mention that Pixiv, the Japanese artist gallery company (sort of like deviantArt, but better) has opened its own Mastodon instance, Pawoo.net? They even made their own version of the Mastodon mascot. They have already contributed back some cool performance improvements, as well.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://cdn-images-1.medium.com/max/2000/1*ovH0iFCU303mZgRCd6S5gg.jpeg" class="rounded-lg shadow-lg"
 alt="Pawoo’s elephant friend"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Pawoo’s elephant friend&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;At the time of writing, the Mastodon network includes more than 486,767 users spread out among more than a 1,212 instances. That’s how far we’ve come. But it’s not just that. A lot more people have learned and become interested in Free and Open Software and decentralization. The GitHub repository has seen an absolute explosion of activity, from bug reports and feature requests (550 at the time of writing) to code and translation contributions from the community. Many people started learning Ruby/Rails and JavaScript/React.js to be able to participate. I feel like there is a lot more documentation on how to deploy a Rails application on the Internet than there was before Mastodon.&lt;/p&gt;
&lt;p&gt;Success brings challenges. Insane new loads on mastodon.social were reason for multiple optimizations and bug fixes, speeding up performance hotspots by more than two times, as well as exploration of more complicated deployment techniques (e.g. pgBouncer). The hardest challenges are organizational rather than technical. Tending to the bug tracker, support questions, reviewing and merging pull requests is all a huge responsibility and time sink.
Furthermore, there are other tasks like communicating the roadmap for the near future, community outreach, and coordinating efforts from contributors that I feel myself ridiculously overwhelmed by. My personal philosophy of “announce when it’s done, promise nothing” may be good for positively surprising people after the fact, but pretty bad for managing a project and people’s morale.&lt;/p&gt;
&lt;p&gt;Seeing the Patreon pledge at over $3,000 means a lot to me. First of all, and this has come up a lot, so I feel like mentioning it — Patreon distributes the pledges on 1st of each month. That means I have seen nothing from all the new pledges yet — from last month I received about $700, which was less than my living and hosting costs. So any articles talking about me making a comfortable $3k/mo are a bit premature on that front, and ignore all the past months I was working full-time on less than a living wage.
With that out of the way, the new budget allows me more wiggling room in hosting options of mastodon.social, makes my dad worry less about me not working for another company like all the other people, and &lt;strong&gt;will hopefully allow me to hire additional staff for the aforemention tasks like project management and community outreach&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On a somewhat related topic, people love fluffy elephant friend, and there were a lot of calls for merchandise. That’s another way the project can be supported financially, with the added benefit of spreading awareness of it. I am still waiting on my artist friend to free up to work on new high-res artwork for t-shirts, but I have published an official sticker with the iconic cutie:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/9216/1*6iV1inXI_ADZjAwrPfLs-A.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;To conclude, here is the list of releases published since my last Patreon update mid-March:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.1"&gt;v1.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.1.1"&gt;v1.1.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.1.2"&gt;v1.1.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.2"&gt;v1.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.2.1"&gt;v1.2.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/releases/tag/v1.2.2"&gt;v1.2.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The above links will take you to the detailed changelogs, but here are the most prominent changes summarized:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direct messages&lt;/li&gt;
&lt;li&gt;Avatars now finally hover-to-play&lt;/li&gt;
&lt;li&gt;Option to disable all GIF autoplay&lt;/li&gt;
&lt;li&gt;Option for confirmation dialogs for boosts&lt;/li&gt;
&lt;li&gt;Confirmation dialogs for deleting/blocking/muting&lt;/li&gt;
&lt;li&gt;Videos can be expanded&lt;/li&gt;
&lt;li&gt;Improved search UI, ability to open remote statuses by pasting their permalink URL into the search&lt;/li&gt;
&lt;li&gt;Two-factor authentication now requires one confirmation before activation, recovery codes added&lt;/li&gt;
&lt;li&gt;Admin UI for domain blocks has been introduced (and improved in general)&lt;/li&gt;
&lt;li&gt;An onboarding modal to greet new users and explain the basics&lt;/li&gt;
&lt;li&gt;Localization and translations have been improved and expanded respectively&lt;/li&gt;
&lt;li&gt;Various bug fixes, performance improvements and UX polishing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A public road map for the future is being worked on, but it’s safe to say now that the next release will be v1.3 (minor release) and not a patch release due to the amount of new features in the pipeline.&lt;/p&gt;</description></item><item><title>Scaling Mastodon</title><link>https://blog.joinmastodon.org/2017/04/scaling-mastodon/</link><pubDate>Wed, 12 Apr 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/04/scaling-mastodon/</guid><description>&lt;p&gt;My instance &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt; has recently surpassed 43,000 users. I have closed registrations both to have more time to investigate the infrastructure and ensure a good experience for existing users, and to encourage more decentralization in the network (with a wonderful effect — the Mastodon fediverse now hosts &lt;a href="https://instances.mastodon.xyz/"&gt;over 161,000 people spread out over more than 500 independent instances&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;But providing a smooth and swift service to 43,000 users takes some doing, and as some of the other instances are approaching large sizes themselves, it is a good time to share the tips &amp;amp; tricks I learned from doing it.&lt;/p&gt;
&lt;p&gt;Mastodon consists of two parts that scale differently: databases, and code. Databases scale vertically. That means, it’s a lot easier and more cost efficient to buy a super beefy machine for your database, than it is to spread the database over multiple machines with sharding or replication. The Mastodon code on the other hand, scales horizontally — run it from as many machines as you want, concurrently, and load balance the web requests, and you’re good.&lt;/p&gt;
&lt;p&gt;First of all, where does the load on Mastodon come from?&lt;/p&gt;
&lt;p&gt;The act of browsing and using the site requires the user’s HTTP requests to be answered. Every Puma worker (WEB_CONCURRENCY) can answer MAX_THREADS of requests at the same time. If every worker’s every thread is busy answering something, the new request must wait. If it has to wait too long, it is canceled with a timeout. &lt;strong&gt;That means, you need more workers and threads to be able to handle a higher request throughput.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Being connected to the streaming API means a constantly open connection through nginx to the streaming API service. The streaming API itself, I do not notice being strained from a high number of connections, but &lt;strong&gt;nginx requires a high limit on open files (worker_rlimit_nofile) and a high number of worker_connections to keep the connections up.&lt;/strong&gt; Thankfully, nginx is quite lightweight even with such high parameters.&lt;/p&gt;
&lt;p&gt;Actual activity on the site, like sending messages, following or unfollowing people, and many more things that people can do, all generates background jobs that must be processed by Sidekiq. If they are not processed in time, they start queuing up in a backlog, and it becomes noticeable when a toot you wrote reaches your followers only 1 hour later. &lt;strong&gt;That means, more Sidekiq workers are needed to be able to process more activity.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Those are the basic principles of Mastodon scaling. However, there is more.&lt;/p&gt;
&lt;p&gt;Each time you scale horizontally, you are putting more strain on the database, because web workers and background workers and the streaming API all need database connections. Each service uses connection pools to provide for their threads. This can go up to 200 connections overall easily, which is the recommended max_connections on a PostgreSQL database with 16GB of RAM. When you reach that point, it means you need pgBouncer. &lt;a href="https://pgbouncer.github.io/usage.html#quick-start"&gt;pgBouncer &lt;/a&gt;is a transparent proxy for PostgreSQL that provides pooling based on database &lt;em&gt;transactions&lt;/em&gt;, rather than &lt;em&gt;sessions&lt;/em&gt;. That has the benefit that a real database connection is not needlessly occupied while a thread is doing nothing with it. Mastodon supports pgBouncer, you simply need to connect to it instead of PostgreSQL, and set the environment variable PREPARED_STATEMENTS=false&lt;/p&gt;
&lt;p&gt;Simply spinning up more Sidekiq processes with the default recommended settings may not be the silver bullet for processing user activity in time. Not all background jobs are created equal! There are different queues, with different priorities, which Sidekiq works with. In Mastodon, these queues are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;default&lt;/strong&gt;: responsible for distribution of toots into local follower’s timelines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;push&lt;/strong&gt;: delivery of toots to other servers and processing of toots incoming from other servers, before they are queued up for distribution to local followers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pull&lt;/strong&gt;: download of conversations, user avatars and headers, profile information&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mailers&lt;/strong&gt;: sending of e-mail through the SMTP server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have ordered them in the order of importance. The default queue is the most important, because it directly and instantly affects user experience on your Mastodon instance. Push is also important, because it affects your followers and contacts from other places. Pull is less important, because downloading that information can wait without much harm. And finally, mailers — there is usually not that much e-mail being sent from Mastodon, anyway.&lt;/p&gt;
&lt;p&gt;When you have a Sidekiq process with a defined order of queues like -q default -q push -q pull -q mailers, it first checks the first queue, if nothing is there, the next one, etc. That is, each thread defined by the -c (concurrency) parameter, does that. But I think you must see the problem — if you suddenly have 100 jobs in the default queue, and 100 in the push queue, and you only have 25 threads working on all of them, there will be a huge delay before Sidekiq will ever get to the push ones.&lt;/p&gt;
&lt;p&gt;For this reason, I found it useful to split queues between different Sidekiq processes on different machines. A couple responsible only for the default queue, a couple only responsible for push, pull, etc. This way, you are not getting too much delay on any type of user-facing action.&lt;/p&gt;
&lt;p&gt;Another big revelation, though obvious in hindsight, is that it is less effective to set a high concurrency setting on a single Sidekiq process, than it is to spin up a couple independent Sidekiq processes with lower concurrency settings. Actually, the same is true for Puma workers — more workers with less threads work faster than less workers with more threads. This is because MRI Ruby does not have native threads, so they cannot be run truly in parallel, no matter how many CPUs you have. The only drawback is this: While threads share the same memory, separate processes don’t. That means, more separate processes consumes more RAM. But if you have free RAM on your server doing nothing, it means you should split up a worker into more workers with less threads.&lt;/p&gt;
&lt;p&gt;The current mastodon.social infrastructure looks like this:&lt;/p&gt;
&lt;p&gt;2x baremetal C2M (8 cores,16GB RAM) servers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 running PostgreSQL (with pgBouncer on top) and Redis&lt;/li&gt;
&lt;li&gt;1 running 4x Sidekiq processes between 10–25 threads each&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6x baremetal C2S (4 cores, 8GB RAM) servers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 running Puma (8x workers, 2x threads each), Sidekiq (10 threads), streaming API&lt;/li&gt;
&lt;li&gt;1 running Nginx load balancer, Puma (8x workers, 2x threads each, Sidekiq (2 threads), streaming API&lt;/li&gt;
&lt;li&gt;2 running Sidekiq (20 threads)&lt;/li&gt;
&lt;li&gt;1 running Minio for file storage with a 150GB volume&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of these are new additions since the surge of Internet attention — before that mastodon.social was serving 20,000 users (most of whom were, to be fair, not active the same time) with just the DB server, 2 app servers and 1 Minio server. At the same time, the v1.1.1 release of Mastodon includes a variety of optimizations that at least doubled the throughput of requests and background jobs compared to the first day of going viral.&lt;/p&gt;
&lt;p&gt;At the time of writing, mastodon.social is servicing about 6,000 open connections, with about 3,000 RPM and an average response time of 200ms.&lt;/p&gt;</description></item><item><title>Two reasons why organizations should switch to self-hosting social media</title><link>https://blog.joinmastodon.org/2017/03/two-reasons-why-organizations-should-switch-to-self-hosting-social-media/</link><pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/03/two-reasons-why-organizations-should-switch-to-self-hosting-social-media/</guid><description>&lt;p&gt;My name is Eugen Rochko and I’m the creator of Mastodon, a free, open-source federated social network server. The flagship instance mastodon.social has over 23,000 users and is growing fast. You can check it out here.&lt;/p&gt;
&lt;p&gt;If your organization is hosting a Mastodon instance, it is essentially a &lt;strong&gt;self-perpetuating brand awareness campaign&lt;/strong&gt;. When people from other instances talk to or follow your users, they see your domain name all the time, since it is part of their globally unique usernames. It’s like those sticker ads on cars, except you don’t have to pay for them and it doesn’t disturb anyone because you’re providing a service.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://cdn-images-1.medium.com/max/2000/1*LM_XJwv6YpeZxBFMJVty_A.jpeg" class="rounded-lg shadow-lg"
 alt="Addressing a user from another instance"/&gt; &lt;figcaption class="text-sm"&gt;
 &lt;p&gt;Addressing a user from another instance&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Twitter has put their API behind a paywall, strangled the app ecosystem. Twitter censors tweets on behalf of countries like Turkey, messes with its content delivery algorithms in unknown ways. Remember when Facebook changed its news feed algorithms, and overnight every Facebook page’s posts became virtually invisible and “fans” worthless? Unless you paid up to Facebook, of course. &lt;strong&gt;Being in control of your own megaphone&lt;/strong&gt; rather than relying on a third party letting you use theirs is increasingly important.&lt;/p&gt;
&lt;p&gt;For example, &lt;a href="https://www.linkedin.com/pulse/big-microsoft-scam-sebastian-l%C3%A4ger"&gt;here is a story of an e-sports personality whose job became impossible because it was 100% dependent on Microsoft, which decided to turn the switch on them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Your own Mastodon instance means &lt;strong&gt;you decide what content to host&lt;/strong&gt;. You take back control from commercial companies. And without sacrificing reachability — normally if you self-host a website, forum, or blog it means having to bring everyone over from other places, but the federated nature of Mastodon means that people don’t need to leave their own instances to follow yours.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md"&gt;List of known instances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/blob/master/docs/Running-Mastodon/Production-guide.md"&gt;How to install Mastodon on Ubuntu 16.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tootsuite/mastodon/blob/master/docs/Running-Mastodon/Tuning.md"&gt;Performance tuning instructions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Learning from Twitter’s mistakes</title><link>https://blog.joinmastodon.org/2017/03/learning-from-twitters-mistakes/</link><pubDate>Fri, 03 Mar 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/03/learning-from-twitters-mistakes/</guid><description>&lt;p&gt;&lt;em&gt;My name is Eugen Rochko and I’m the creator of Mastodon, a free, open-source federated social network server. The flagship instance mastodon.social has over 22,000 users and is growing fast.&lt;a href="https://mastodon.social"&gt; You can check it out here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Very early on in the development of Mastodon I’ve decided that centralization and unexpected algorithmic changes were not the only one of Twitter’s problems. Harrassment and tools to deal with it have always been lacking on Twitter’s end. I reached out to people who have been affected by it to collect ideas. Here is what I gathered:&lt;/p&gt;
&lt;p&gt;When you block someone, you don’t want to see them, ever. This means that if someone you follow shares their post, you don’t want to see it. If someone talks about them, you don’t want to see it. If someone replies to their post and mentions you, you don’t want to see it. That’s how it should be, and that’s how it works in Mastodon.&lt;/p&gt;
&lt;p&gt;Of course maybe you don’t want to go that far. You merely don’t want to see someone’s posts, not lock them off entirely. Muting an account to remove it from your feeds is also possible.&lt;/p&gt;
&lt;p&gt;You can hide an individual post’s text behind a content warning — whether to use this for trigger warnings or spoiler warnings is up to you. Beyond this, when you share images that you wouldn’t want someone to see you looking at in public, you can mark individual posts as containing sensitive material.&lt;/p&gt;
&lt;p&gt;Sometimes you want to broadcast to the open web, other times you want to address only people that you know. For this purpose, you can optionally lock your account, requiring all new followers to get your approval before being allowed to follow you. Independently of this, you can individually choose the visibility of your posts. Public, or visible only to followers and the people you mention in them. The presence of public timelines — timelines of “everyone’s” posts — mandates a middle ground, where your posts are still fully public but opted-out of being listed on the public timelines.&lt;/p&gt;
&lt;p&gt;When you encounter inappropriate content, there is a quick option to report the account, allowing you to select any offending posts and optionally specify a message.&lt;/p&gt;
&lt;p&gt;In some cases you know exactly who you want to talk to, and who you don’t. You have a choice to outright block any notifications from people who don’t follow you (to never see a “rando” again), or who you don’t follow (limiting yourself to “mutuals”).&lt;/p&gt;
&lt;p&gt;The federated nature of the network also has implications on behaviour. Different instances, owned by different entities, will have different rules and moderation policies. This gives the power to shape smaller, independent, yet integrated communities back to the people. As an end-user, you have the ability to choose an instance with the rules and policies that you agree with (or roll your own, if you are technically inclined).&lt;/p&gt;
&lt;p&gt;Smaller, tight-knit communities are less prone to harbouring toxic behaviour; you could think of it as moderation work of the entire network being spread somewhat* between countless administrators of independent but compatible communities, which makes it way more scalable than a single multi-million-user company with a small safety team.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(I need to specify that naturally, moderation is not global in the network. An admin of one instance cannot affect the account of a user on another. Admins have control over content that arrives on their instances, and can curate it with various tools. This allows places with different rules to coexist)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Of course, communities with the sole purpose of spreading toxic behaviour will pop up too. In such cases, instance administrators can blacklist specific instances outright. It takes substantially more effort to setup a brand-new instance than it is to create a new account on a centralized social network — you have to acquire hosting, domain name, invest time in installation and configuration — so blacklist-evading is a lot harder.&lt;/p&gt;
&lt;p&gt;With all this, &lt;a href="https://mastodon.social"&gt;Mastodon&lt;/a&gt; aims to be a safer and more humane place.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you’d like to check these features out for yourself, go to &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>The power to build communities</title><link>https://blog.joinmastodon.org/2017/02/the-power-to-build-communities/</link><pubDate>Mon, 20 Feb 2017 00:00:00 +0000</pubDate><guid>https://blog.joinmastodon.org/2017/02/the-power-to-build-communities/</guid><description>&lt;p&gt;Mark Zuckerberg’s manifesto might be well-spirited, but one thing in it is fundamentally wrong:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In times like these, the most important thing we at Facebook can do is develop the social infrastructure to give people the power to build a global community that works for all of us.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Facebook isn’t, and can never be, a platform where people have the power to build anything. Facebook doesn’t even have the pretense of a non-profit like Wikipedia or Mozilla; there is no doubt about the company’s main focus — extracting as much as possible from you — by analyzing your data and showing you ads in exchange for advertiser’s money. A future where Facebook is the global social infrastructure, is a future with no refuge from advertising and number crunching.&lt;/p&gt;
&lt;p&gt;Facebook simply cannot give anyone the power to do anything, because that power will always, ultimately, reside in Facebook itself, which controls both the software, the servers and the moderation policies.&lt;/p&gt;
&lt;p&gt;No, the future of social media must be federation. The ultimate power is in giving people the ability to create their own spaces, their own communities, to modify the software as they see fit, but without sacrificing the ability of people from different communities to interact with each other. Of course, not every end user is interested in running their own little social network — just like every citizen isn’t interested in running their own little country. But I think that there is a good reason why many countries consist of separate but compatible states, and why many separate but compatible countries form alliances like the European Union or NATO. A mix between sovereignity and union. Federation.&lt;/p&gt;
&lt;p&gt;The internet has seen many rises and falls of social networks. MySpace. Friendfeed. Google+. App.net. Each and every time, different UX, new accounts, having to convince your friends to switch over, or having to have multiple accounts to talk to them all. Do you think this cycle will stop with Facebook? Community dynamics to some extent guarantee a rise and downfall cycle, but we could stop dragging each other from website to website and stick to a standardized protocol. E-mail may not be sexy, for having been created in a simpler time, but it’s impossible not to appreciate that it still works, regardless of which provider you choose.&lt;/p&gt;
&lt;p&gt;Do you want the website, that displays the photos of your friends with the caption “they’ll miss you” when you’re trying to delete your account, to be in charge of a global community?&lt;/p&gt;
&lt;p&gt;I believe that with &lt;a href="https://mastodon.social"&gt;Mastodon&lt;/a&gt;, I have created a piece of software that is &lt;em&gt;an actually viable alternative to Twitter&lt;/em&gt;. A federated microblogging server that continues the work of GNU social, but unlike GNU social is able to appeal to people without an active history of interest in itself. To put it another way, it’s usable by non-technical people. I don’t know if the work I’m doing is good enough to serve the future of humanity, but I think that it is at least a good, strong step in the right direction.&lt;/p&gt;
&lt;p&gt;Eugen Rochko,&lt;br /&gt;
Developer of &lt;a href="https://github.com/tootsuite/mastodon"&gt;Mastodon&lt;/a&gt;, admin of &lt;a href="https://mastodon.social"&gt;mastodon.social&lt;/a&gt;, the example instance.&lt;/p&gt;</description></item></channel></rss>