Plume 0.4.0 is out!

Discover what changed since April

Hello! You have read the title, so you know what this post will be about: a new Plume pre-release is out. It should have been "Plume 0.4.0 aka alpha 3", but to keep the alpha number in sync with the minor version number, we decided to skip alpha 3 and go to alpha 4 directly. So please welcome Plume 0.4.0, aka alpha 4!

What changed since April?

If we start with the invisible (but important!) changes, we fixed some bugs in various parts of the code. Among them:

  • The editor was shown in arabic by default, but thanks to it should now default to English (and show in your favorite language if Plume supports it).
  • The search engine was showing drafts in the result, but @FDB_hiroshima fixed the issue.

Of course, we tried to slightly improve the quality of the code, even if there is still a lot to do on that front according to me. To continue with changes that won't visibly affect you but that are still needed for us developers, @FDB_hiroshima improved our Continuous Integration. I also had to refactor the way assets are managed: source code for assets and their compiled version are now clearly separated. We also tried to improve our code coverage, and we are now at 39% of tested code (still not much, but hopefully we will be near 100% for Plume 1.0.0 🤞️). Another change is that outbound federation now runs asynchronously: you won't have to wait for hours when publishing an article! improved the wording of the sentences we use, both in Plume's interface, on the official website and in the documentation.

We also tried to make the life of Plume instance admins easier. @FDB_hiroshima added a tool to run migrations in plm, which avoids the need to install diesel when creating an instance, making the installation easier! They also made it possible to write migrations in Rust, which is amazing (my love for Rust is inversely proportional to my love for SQL). also made a Snap package for Plume, which makes it super easy to install on any computer that has Snaps! This installation method is not yet documented, but it should be soon.

On another note, started to add support for right-to-left languages in the user interface. More generally, this version is quite well internationalized: as you can see on Crowdin, 8 languages are complete, and 4 others are more than 80% done. It may not seem much compared to most applications, but Plume is still in alpha and I'm happy to see there already are efforts to make it available in various languages. So to all translators: thank you!

Unfortunately, the editor didn't improved much in six month. The only real change is that added an autosave feature, to avoid loosing your article if you close Plume without saving your draft. Hopefully, a lot of changes should come to the editor for the next release though (more details on that at the end of the article).

There were only two important changes on federation level. The first is that account deletion is now sent to other instances: no more ghost accounts haunting the Fediverse! The second, is that ActivityPub outboxes are now in the correct format thanks to It means that other implementations (like Mastodon or Pleroma) should now be able to fetch old articles when they discover a new Plume account.

I (@Ana) also started to work on moderation tools, and the first step for that was to add a "moderator" role. Admins can now promote other users to that role, and they will have access to the moderation tools.

Thanks to rfwatson, password reset requests are now stored in the database instead of being kept in Plume's memory directly, avoiding bugs that could break password resets.

One of the most visible feature we introduced for this release probably are themes. Instance admins can now install themes on their instance, choose one by default, and let users of the instance change it if they want. Each blog can also have its own theme, that will override the instance one, allowing for customization on various levels (note that blog themes are not federated for security and privacy reasons).

Last but not least, @FDB_hiroshima introduced something that we call "generic timelines", and that allow you to build complex timelines to curate, filter and organize articles exactly the way you want. For instance, if you want to create an "Art" timeline, you can use the following query:

tags in [art, drawing, photography, dance, painting, theatre]

You can write quite complex queries, filtering articles based on their authors, the instance they come from, their tags, title, contents, language, etc. For the moment, there is no interface to create or edit timelines, only the federated, local and personal feeds use it, but it should come in one of the next releases!

What's next?

During the following days (weeks ? months ? I don't really now, we don't have deadlines 😄️) we will probably focus on improving the quality of the code: I would personally like to move to Rust 2018, and document as much as possible our codebase, to make it easier for new contributors to join us (and for us to understand what we wrote two days ago, too).

This summer, helped me with the interface of the editor (that, as you may have noticed, is far from optimal). I now have a clear idea of what is needed, and how to improved things, so expect changes on that side sooner or later! is working on custom domain support, that will allow each blog to be read on their own domain (either a subdomain of the main instance, for instance, or a totally different domain, like However, it is a quite big task that requires quite a lot of refactoring, and which is even making us switch to another web framework (😱️)!

Finally, it has been decided that we should leave GitHub (mainly because of their policy towards some countries, that affected at least one of our contributors). Thus, we should soon have our own Gitea and Drone CI running!

Installing Plume 0.4.0 (or updating your instance)

If you want to start a new Plume instance, you can read the docs. And if you already have one, but you want to update it to 0.4.0, you can read this page. Don't hesitate to ask questions here, on GitHub, on Loomio or on Matrix if something is unclear or if you have issues with your instance.

The full changelog is also available on GitHub if you want.

I want to thank all the people that contributed to this release, even if you name was not cited in this article. So here it is: thank you! 💜️