Peertube chat plugin: 2023 will be full of new features!

, by  John Livingston
[English] [français] [italiano]

This article is a translation from the french version

 The chat plugin

One of my most important free software projects, and without a doubt the one I care about the most, is the Peertube livechat plugin.

Peertube is a free software, allowing to deploy a video on demand and live streaming platform. The different installations of Peertube (called "instances") can be federated together, being part of what is called the fédiverse, contraction of "federation" and "universe". It is a set of software that can communicate with each other. There are video platforms, music platforms, micro-blogging tools, publishing tools, and all types of social networks.

Framasoft is piloting the Peertube project, but did not want to add a chat function natively in the software. They preferred to make it possible via the "plugins" system that Peertube offers.

And this is where I come in!

I was first contacted by ritimo, and I developed in 3 days a first functional version.
I chose to rely on an existing, proven and scalable technology, XMPP. This choice was motivated by a long term vision: I had to be able to make the software evolve easily, and add moderation, federation, robots, ... In short, the XMPP protocol, and the XMPP server Prosody were just right.

Afterwards, the plugin has evolved a lot. At the time of writing, it is in its 6th major version!

To see a demo of the plugin, you can go here.
There is also a demo room where I test future versions here.

 The search for funding

It’s been 3 years now that I decided to become a free software developer on my own. It is above all an ideological choice, wanting to get out of the capitalist market, its relations of subordination, and wanting to work for the creation of "digital commons".

The development of this plugin requires time, a lot of time. And I’m trying to make a living out of it. So to be able to work on it, I need to find funding. Unfortunately, I have to prioritize my projects according to the financial support I find.

 2021/2022

In the past I have received funding from ritimo, Framasoft and Code Lutin.

But a large part of my 2022 year has been spent looking for budgets to work on this plugin. I also spent a lot of time working on it "for free" (ie: I didn’t find anyone to fund the time spent).

It was only at the end of this year that I was able to find solid funding, and work on a roadmap.

  Donations

I didn’t mention it in the previous paragraph, but I also received some donations, especially through my Liberapay page. From this platform, I receive on average 8.90€/month.
I also received a donation via Github Sponsor.

These donations may seem anecdotal, but in reality they are very motivating. To think that a stranger is willing to give me 10, 20 or 50€, just because what I did is useful to them, is extremely gratifying.

So "big <3" to all the people who donate via this kind of platform, whether to me or to others. Thank you, thank you, THANK YOU!

 Copie Publique

Code Lutin is a company specialized in free software. They have decided, several years ago now, to redistribute at least 1% of their annual turnover to one or several free software projects. The decision is taken democratically among the team members. This is a fantastic initiative, which in addition to helping financially, gives a lot of visibility to the chosen projects.

I had already been lucky enough to be selected last year.

And for 2022, they decided it was time to move up a gear, and encourage other structures (companies, developers, ...) to do the same. So they set up the Public Copy Retribution platform. The idea is simple: you benefit from free and open source tools, it’s a fair return to give some money in return. Any structure wanting to join the initiative can define its own conditions. I strongly invite you to visit their site, and have a look at the past beneficiaries.

And I’m very happy to have been selected again for a grant in 2022 (for the Peertube chat plugin, and more broadly for the other Peertube plugins I’m working on).

 Framasoft

At the end of this year, Framasoft has also decided to release a budget for the chat plugin.

Framasoft has always supported me in this project, and Chocobozzz (the creator of Peertube) has always been very reactive when I needed changes in the Peertube plugin system. It’s a real pleasure to work with people like them.

I have to specify the following points:

  • This funding was made possible thanks to donations (mainly from individuals) made to Framasoft in previous years.
  • Framasoft is financed only by donations, so "more donations to Framasoft => more capacity to finance free services around PeerTube & other Framasoft projects" (and Framasoft has a lot of projects for the years to come!).
  • Framasoft is in the middle of a donation campaign for 2023. They are still missing a big part of what they need for 2023, so go support them!

If you want a little more information, it just so happens that the two co-directors of Framasoft were live at the station to talk about it this morning (this is a Twitch link, but I’ll replace it with a Peertube link as soon as it becomes available).

 NlNet

NlNet is a Dutch foundation that funds Free Software projects. They launch several fundraising campaigns per year, on different themes. The money comes from sponsors, among others the European Commission.

After I applied once without being selected, I tried again for the NGI Zero call in August 2022. And this time, I can now announce it publicly, we have signed!

This will allow me to work on the plugin for several weeks, and to make some much needed changes! (see further in this article).

 And for 2023?

After this long search for funding, I can now finally tackle the evolutions of the plugin!

I have already published a version 6.0.0 which is detailed here.

I have reordered all the tasks to be done in the form of Github tickets. I’ve added milestones to give a rough timeline (I still have to juggle between different projects, so I hope you’ll be tolerant of my possible delays 😉).

I also created a Github project that allows you to see the status of different tasks (and filter by milestone).

Finally, I added tags on the Github tickets specifying the sponsor related to the task (if any). So you can filter the tickets by sponsor, thanks to whom the features will be released.
NB: Code Lutin is not associated with any particular task, but their funding does exist, and helped me a lot!

I will now detail the biggest features to come.

 Display of the chat in the "embed"

It is possible to embed a Peertube video on a third party site. But until recently, it was not possible for Peertube plugins to add features to the included videos.

Today, it is already possible to include the chat, by building "by hand" the "iframe" tag that goes well. If you don’t understand what I’m talking about, well... you understand the problem ;).

The first thing I’m going to do is to add an option to easily generate the necessary to copy and paste on your website. Just like you would do to include the video. You will then only have to generate the "iframe" for the video, and the one for the chat, and place both at your convenience.

Next, I will also propose another option. When you generate the iframe for the video, you will have an option to include/exclude the chat directly in the same iframe as the video (and/or a button to open the chat in a new window, the decision is not taken).

I will propose both functional solutions, because I think both are useful. Indeed, there is no point in displaying the chat on top of the video if you are in a very small thumbnail, and vice versa.

These features are sponsored by Framasoft.

 UI/UX redesign

Framasoft asked me to work on the interface (UI, User Interface) and the user experience (UX, User eXperience).
So I’m going to re-work entirely the plugin integration. Ideally, this one will integrate better with Peertube (same fonts, borders, ...). And I’ll see if I can make it possible to move the chat window freely.

I’ll also make the moderation functions more visible, and more convenient to use. Because yes, the plugin already allows advanced moderation, but... it’s a bit hidden. Because I didn’t have time to do better in the past.

Finally, I will also improve the integration of the chat in the streaming tools (especially OBS). Currently, it is already possible (and documented). But I’ve been given some ideas on how to make it much better.

 Federation

Peertube is a federated technology. You can create "bridges" between "instances". For example, I can see a live broadcast on the server of association A, from my personal server B. But for the moment, the plugin doesn’t know how to manage the federation at all. The chat is only displayed on the original instance (A).

Thanks to a funding from NlNet, I’ll make the chat display on the instance from where you’re looking, and that you’re connected with your account on this one (if necessary).
The fact to have chosen the XMPP technology will make my life easier, this one was already made to be decentralized. I just have some technical difficulties to overcome (Peertube has to act as a web proxy in front of the service, so I have to "proxy" the communications through a web layer).

Of course, this will have to be accompanied with moderation features, to avoid hostile behaviors (like "bot raid" or "spam"). The streamers will need to be able to choose whether or not to open to remote instances, mass ban, etc.

In a second step, I would also try to standardize these chat mechanisms on the fediverse, to allow connecting to it from other software! (why not Mastodon for example). My work will consist in proposing an "ActivityPub" standard to announce the chat(s) associated to an object, and to implement it in Peertube and the chat plugin.

 Moderation/interaction bot

I have a lot of ideas about bots features (non exhaustive list):
 automated publication of text in the chat (for funding links, chat rules, ...)
 automated moderation (blocking of certain words, ban, etc)
 commands

To summarize: a lot of features you may have already seen on Twitch and so on. I know it is very expected, and good news, it will be done in 2023 thanks to NlNet!

I’m also thinking of an interface for the streamers, with a list of action buttons. For example to ban in one click, or publish pre-filled messages.

And finally, I’m also thinking of interaction tools in the other direction: an action in the chat would cause a display/sound in the stream. This is for example what we can see on Twitch when there is a donation.

Don’t hesitate to propose your ideas here if you have an account.

 Translations

I will also work on the plugin translations, and try to support a maximum of languages.

 Accessibility

NlNet provides an accessibility audit service to its beneficiaries. So I will be able to make sure - with the help of competent people - that the chat plugin is accessible (for visually impaired, colorblind, motor handicap, ...), and correct issues if necessary.

 Other

There are other evolutions planned, but I won’t detail them here and now. The Github project gives a pretty complete overview.

 Conclusion

That’s it, that’s the news about this Peertube chat plugin. I hope you will be as excited as I am. I can’t wait to tackle all these features!

If you want to discuss it, you can go through Github, the Peertube forum which I read almost daily, or my Mastodon account.

PS: the illustration image of this article is Sepia, the Peertube mascot. Published under a free license CC-BY-SA by David Revoy