Skip to content

Commit

Permalink
Merge pull request #9 from renchap/tandt-april
Browse files Browse the repository at this point in the history
Publish the first Trunks and Tidbits post
  • Loading branch information
renchap committed May 7, 2024
2 parents d89b00f + 9675955 commit 8804b02
Show file tree
Hide file tree
Showing 12 changed files with 154 additions and 4 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
91 changes: 91 additions & 0 deletions content/posts/2024-05-06_trunk_and_tidbits-april_2024/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: Trunk & Tidbits, April 2024
description: "Welcome to the first in a planned ongoing series of updates from the core Mastodon engineering team"
date: 2024-05-01
draft: false
categories:
- Trunk and Tidbits
- Engineering
tags:
- engineering
- mastodon
authors:
- renchap
- andy
---

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.

# What we’ve been working on

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.

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.

## Web app and Backend

<div class="features-list">

- {{< feature-label name="interface" >}} 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! {{< github-pr id=29748 authors="nshki,renchap" >}}
- {{< feature-label name="interface" >}} 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 {{< github-pr id=30059 authors="Gargron" >}}
- {{< feature-label name="new feature" >}} 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) {{< github-pr id=30065 authors="ClearlyClaire" >}}
- {{< feature-label name="security" >}} 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 {{< github-pr id=29831 authors="mjankowski" >}}
- {{< feature-label name="performance" >}} 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. {{< github-pr id=28013 authors="mjankowski,vmstan" >}}
- {{< feature-label name="api" >}} New `read:me` scope in the API, to request read-only to the user’s account (and not to every accounts like `read` ) {{< github-pr id=29087 authors="ThisIsMissEm" >}}
- {{< feature-label name="api" >}} 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! {{< github-pr id=22721 authors="davbeck" >}}

</div>

As always, many bug fixes or refactors to make the code cleaner and improve our test coverage have been merged. Shout out to [Matt Jankowski](https://cyber.digital-cache.cloud/@matt) who has been driving a lot of upgrades, modernisation, test improvements and other refactors to the backend.

## iOS

- A new release with improved polls, the return of the local timeline, better explore tab, and multiple smaller changes and fixes ([release notes](https://github.com/mastodon/mastodon-ios/releases/tag/2024.4))
- 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.

## Android

- A new version adding support for the new “filtered notifications” feature that will be released in 4.3 and some small changes and improvements ([release notes](https://github.com/mastodon/mastodon-android/releases/tag/v2.5.0))
- Working on an experiment on mastodon.social to show a **non-intrusive, easily dismissible** 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)

# What’s coming

These items are actively being worked on…

<div class="features-list">

- {{< feature-label name="new feature" >}} 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! {{< github-pr id=29889 authors="ClearlyClaire" >}}
- {{< feature-label name="api" >}} A new batch fetch API to get multiple accounts or statuses at once {{< github-pr id=27871 authors="noellabo,ClearlyClaire" >}}
- {{< feature-label name="performance" >}} Adding support for using `libvips` as our image processing library, which should make image operations more secure, much faster and require less memory {{< github-pr id=30090 authors="Gargron" >}}
- {{< feature-label name="performance" >}} 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. {{< github-pr id=30130 authors="robbkidd,julianocosta89,renchap" >}}
- {{< feature-label name="developer" >}} 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. {{< github-pr id=24981 authors="renchap" >}}

</div>

In parallel to all those projects, recruitment for a new [full-time core developer position](https://jobs.ashbyhq.com/mastodon/de1e4d8a-5639-4b6a-86d7-97bd9c768b02) is still in progress and we have been meeting with amazing people.

Looking further ahead, work is in progress to more clearly define a plan for Quote Posts. This will in part be funded by the [awesome folks at NLNet through their NGI0 Entrust fund](https://nlnet.nl/project/Mastodon-Quoting/). 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.

We are also improving our documentation to help people to contribute to the project. This can seem daunting, but there is now a [pinned issue in the main repository](https://github.com/mastodon/mastodon/issues/30167) 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!

# Around the community

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)

- Take a look at [Stefan Bohacek](https://stefanbohacek.online/@stefan)’s blog post and code [analysing the network for his creative bots](https://stefanbohacek.com/blog/analyzing-fediverse-followers/).
- Got a Nintendo 3DS? You can [access Mastodon, too](https://wetdry.world/@760ceb3b9c0ba4872cadf3ce35a7a4/112338857837231408)! 🎮

# In case you missed it

We shared a couple of big news stories during April:

- The [plushie is coming](https://blog.joinmastodon.org/2024/04/mastodon-stuffed-toy-coming-soon/)! (and it is ***so cute***!)
- Mastodon [now has a 501(c)(3) entity in the United States](https://blog.joinmastodon.org/2024/04/mastodon-forms-new-u.s.-non-profit/), enabling the project to raise funds there more easily.

We were also excited to see our friends at Ghost [announcing](https://activitypub.ghost.org/) news to join the Fediverse, along with Buttondown!

# Thank you for your support

That's it for this month - thanks for using Mastodon, we hope you'll help spread the word to others and get them to join us all in building better social media.

{{< donate >}}
16 changes: 15 additions & 1 deletion data/authors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,18 @@ felix:
title: CFO
image: authors/felix-hlatky.jpg
social:
mastodon: https://mastodon.social/@mellifluousbox
mastodon: https://mastodon.social/@mellifluousbox

renchap:
name: Renaud Chaput
title: CTO
image: authors/renaud-chaput.jpg
social:
mastodon: https://oisaur.com/@renchap

andy:
name: Andy Piper
title: Developer Relations
image: authors/andy-piper.jpg
social:
mastodon: https://macaw.social/@andypiper
Binary file added static/authors/andy-piper.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/authors/renaud-chaput.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions static/github-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions themes/mastodon/assets/css/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,11 @@
flex: 0 0 auto;
}
}

.features-list ul {
padding-left: 0;
}

.features-list ul li {
list-style: none;
}
6 changes: 3 additions & 3 deletions themes/mastodon/layouts/_default/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ <h2 class="text-xl leading-8 text-gray-700 mt-2">
{{ end }}

<div class="relative mt-8 flex items-center gap-x-4">
{{ if isset .Params "author" }}
{{ $author := index .Site.Data.authors .Params.author }}
{{ range default (slice .Params.author) .Params.authors }}
{{ $author := index $.Site.Data.authors . }}
<div class="h-10 w-10 rounded-full bg-blurple-gradient relative overflow-hidden">
{{ with $author.image }}<img src="{{ . | absURL }}" alt="" class="absolute w-full h-full object-cover">{{ end }}
</div>
Expand Down Expand Up @@ -66,4 +66,4 @@ <h2 class="text-xl leading-8 text-gray-700 mt-2">
</article>

{{ partial "post/related.html" . }}
{{ end }}
{{ end }}
1 change: 1 addition & 0 deletions themes/mastodon/layouts/partials/post/github_author.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<a href="https://github.com/{{ . }}" class="underline">{{ . }}</a>{{- "" -}}
12 changes: 12 additions & 0 deletions themes/mastodon/layouts/shortcodes/feature-label.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{/* Those also need to be added to tailwind.config.js */}}
{{
$colors := dict
"interface" "green-300"
"new feature" "blue-300"
"performance" "orange-200"
"developer" "lime-200"
"api" "emerald-200"
"security" "pink-200"
}}

<span class="rounded-lg bg-{{ default "stone-300" (index $colors (.Get "name")) }} uppercase px-2 py-1 text-xs font-bold mr-1">{{ .Get "name" }}</span>
13 changes: 13 additions & 0 deletions themes/mastodon/layouts/shortcodes/github-pr.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<span class="not-prose">
<a class="whitespace-nowrap inline-flex items-baseline underline" href="https://github.com/mastodon/{{ default "mastodon" (.Get "repo")}}/pull/{{ .Get "id" }}">
<img src="/github-logo.svg" alt="Github" class="h-4 inline mr-1 self-center" />
<span>PR #{{ .Get "id" }}</span>
</a>
{{ with .Get "authors" }}
<span>(by
{{ $authors := split . "," }}
{{- delimit (apply $authors "partial" "post/github_author" ".") ", " " and " | safeHTML -}})
</span>
{{ end -}}
</span>
8 changes: 8 additions & 0 deletions themes/mastodon/tailwind.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,13 @@ module.exports = {
'grid-cols-3',
'gap-4',
'col-span-1',
'bg-green-300',
'bg-red-200',
'bg-stone-300',
'bg-blue-300',
'bg-orange-200',
'bg-lime-200',
'bg-emerald-200',
'bg-pink-200',
],
}

0 comments on commit 8804b02

Please sign in to comment.