Plume's first release

Today is a special day for Plume, as the first Alpha release is now available!

What's new

Quite a lot of things changed since the last This Month in Plume article , even though it was only published a few days ago. (I think that I will start posting change logs when new versions are published, instead of monthly updates, to keep up with the changes.)

Instance Updates

First of all the way we federate article is now much more, "federating". Before, we were only sending new posts to instances where the author had followers. Now they are sent to all the instances known by the author's instance.

To continue with the technical aspects, @lthms@mastodon.social updated the dependencies and Rust version Plume is using. This means that we will be able to use the latest features of the language and the crates (code shared between different applications) we are using, and that the app will have fewer bugs coming from external code. That means it easier for us to improve Plume!

@Trinity, who maintains the rocket_csrf crate (makes the app more secure) also added a lot of tests to her code which helped her to find and fix a few bugs.

We also improved the mobile experience, by making the new menu working correctly in iOS and Chrome on Android (it was only working with Firefox before). The user profile page and the footer also got improved to fit better on small screens.

Before publishing the first official release, I wanted to introduce basic moderation tools. Admins can now block other instances and ban users registered on their own instance. Blocking an instance will cause the instance to ignore any activity from the blocked instance, while banning a local user will delete their account. Admins can also disable registrations on their instance if they want.

We also introduced a media gallery, which is accessible from your dashboard. You can upload images, audio, or videos here before integrating them in your post, or using them as avatars (for images). Because, yes, you can also have an avatar now! It will be displayed on your profile, next to your comments, and at the end of each of your posts along with your biography and a "Follow" button.

User profiles have also been improved. When you are loading a profile from another instance, all it's information will be updated if it has not been done in a long time. You also have the possibility to delete your account now, but be carefull. Once the "Delete" button is clicked, there is no way back. All your data will be deleted.

The homepage has been reorganized and different feeds were introduced. Before, articles from the whole Fediverse were displayed. Now you can choose to see only local articles (from your instance), the whole Fediverse, or articles written by people you follow, and the homepage will display a preview of each of these three feeds.

@Madeorsk also continued his work to improve Plume's design by replacing Font-Awesome with the Feathers icons, which look a lot nicer (and it's fun to use this icon pack, since Plume means Feather in French).

Article Updates

We also introduced quite a lot of new features for articles. First of all, thanks to Atul9, you will now be asked if you really want to delete an article before actually deleting it, which will probably save a few of us from a missplaced click. But deletion is not always the best solution. You probably don't want to delete an article because you made a small grammar mistake. So we added a much-requested feature, the ability to edit an article. Unfortunately, not all the Fediverse apps are supporting edition right now. Mastodon, for instance, won't show any updates to your article, even if it actually changed in Plume. Also note that for articles created before this feature, you'll have to edit the HTML code of the article, instead of its Markdown.

Next, we added the ability to tag your articles. Tags will be displayed at the end of your article, and clicking on them will show you other articles with this tag. And even though tags are not displayed on Mastodon, when you search for a hashtag, any Plume post with this tag will appear (I don't how tags are handled in other software like Pleroma, but I'll let you try and see 😉).

A Plume article shown in Mastodon, under the #Plume hashtag

However, federation with Mastodon isn't always perfect. For instance, we also added the possibility to add subtitles for your articles, and we decided to federate them with the field called summary. The problem is, Mastodon uses this field to federate content warnings, which results in a weird display. Articles are shown with the subtitle as a CW and the title placed inside the warning.

The last feature we added to articles is the ability to save them as drafts. Your drafts won't be visible to anyone, nor federated. You'll be the only one who can access and edit them, which you can do from your dashboard. Once you uncheck the "Draft" box, your article will be published and anyone will be able to read it.

Bug Fixes

Of course, we also discovered a few bugs. @KazukyAkayashi@rezakiri.ketchupma.io encountered quite an important one: deleting your avatar also deleted your account. 😅 And @fluffy submitted a bug that duplicated some comments and reported that when you deleted the object associated to a notification (for instance a boost), the notification page was no longer available. All these issues are now fixed!

On the list of smaller, but important changes, bitkeks renamed "Reshares" to "Boosts" (after a discussion on GitHub). These two words don't have the same meanings. The second one, says that you are promoting someone else's work, contrary to the first which could make people feel like you were taking this work.

Another small improvement was the addition of a WebManifest by zcdunn. This little file lets you add any Plume instance to your phone's homescreen, and to open it like if was a native application and not just a website!

The documentation was also enhanced. First, I added a page to list the environment variables you can use to configure your instance. Second, @eliotberriot@blog.funkwhale.audio (the Funkwhale maintainer, who decided to use Plume for their blog!), added instructions to install Plume in Docker, and added all the needed files to the code repository, meaning it will be even easier to deploy a Plume instance now!

Trying the Alpha

Releasing an Alpha version of Plume means we are getting closer to the first true version, but there are still things to do. This pre-release is here for us to get feedback on what works, what doesn't, and what could be improved.

That's why we encourage you to test Plume, either on this instance, on Fediverse.blog, (a public instance run by @gled@mastodon.host (thank you again, by the way)) or on your own instance, and to tell us what issues you encountered, your suggestions, and what you already like.

And if you want to start an instance or update an existing instance to the Alpha, everything is explained in the documentation!

The future

I think this first release is also a good occasion to give an idea of what Plume will become in the following months. I just want to say that this is only the direction that I, @BaptisteGelez, would like the project to take. If you have other propositions, I and the rest of the community will be happy to discuss them with you.

First of all, I would like to take full advantage of the Fediverse as a collaboration platform, and make it really easy to work together in Plume. To achieve that, I plan to let a draft or an article have multiple authors, even if they are not coming from the same Plume instance. It can be really useful when writing interviews, for instance, or articles to summarize an event where many people were present.

In the same idea of collaboration, I would also like the ability to translate articles. If an article is published in a blog where you are author (as blogs would have multiple authors too), you will be able to translate it in another language. And when reading an article, if it has been translated into your language, that version would be displayed.

I would like to implement theming too, for both instances and individual blogs. This would allow users to make Plume feel more personal and to create themed instances with their own visual style.

To make article edition easier for everyone, having a nice distraction-free visual editor (many people don't know Markdown), would be great too. But, as this kind of editor would require some JavaScript (or not, as I will explain in the next paragraph), the markdown editor would probably stay here has a fallback, for those who prefer it or who don't want to activate JavaScript just to access a blogging application.

One of my goals on the technical side is to have 100% of the code written in Rust. Templates, style sheets, client-side scripts, and database migrations are currently written in various other languages. Having everything in Rust would allow us to check for errors more easily before deploying new features, to improve performance, and to share parts of the code (for instance the JSON payloads of the REST API could be used both on the server to handle incoming requests and on the visitor's computer to send requests).

In the far future, I would also like to have a federated media management experience, where you could share media galleries with Funkwhale or PixelFed users, and where all the media in this gallery would be shared across the platforms. This may not seem very useful, and I admit that it is mostly to see how far ActivityPub can go, but you could imagine a scenario where a photographer took photos to illustrate your article and they want to share their work on their PixelFed. Then, you could decide to create a shared gallery, available on both PixelFed and Plume.

I would also love to collaborate with other projects, like Lollipop Cloud or Yunohost to make Plume easier to install for everyone. By the way, a Yunohost package for Plume is coming, thanks to anmol26s's work! I'm also interested in collaborating with other Rust project, whether they use ActivityPub (Aardwolf, Rustodon) or not!


Anyway, I would like to thank everyone who made this release (and all the rest) possible; contributors, admins who installed an instance, everyone who suggested features and reported bugs on GitHub, Matrix or the Fediverse, and everyone following and speaking about the project (and @0x1C3B00DA for reviewing and correcting this article). Thank you!