Funkwhale, an Open Source GrooveShark Alternative, Begins ActivityPub Implementation
Funkwhale is a Free and Open Source Python-based music player for the web, similar in design to apps like Grooveshark or Deezer. Recently, the project made a new milestone release at version 0.8, and announced the foundational work for an ambitious new feature: federated music.
Federation of music libraries is one of the most asked feature. While there is still a lot of work to do, this version includes the foundation that will enable funkwhale servers to communicate between each others, and with other federated software, such as Mastodon.
Currently, the platform doesn’t seem to have federation capabilities exposed in its UI, but there is a bot account available for testing federation between other ActivityPub platforms, such as Mastodon and Pleroma.
While the federation features only extend that far for now, let’s dive in to some of the features that Funkwhale already offers. For this article, I’m simply looking at the demo instance set up by the project. As such, my feedback is limited to only what the demo is capable of.
Being able to discover music is arguably one of the core features of a modern music player. The search feature is easy on the eyes, and simple to navigate.
The Artists tab also shows all artists that the server currently knows about. Right now, that only includes artists and media that are hosted locally. It’s easy to imagine how this interface might be re-imagined to distinguish between local and remote content.
Similarly, each artist has a page featuring their available albums and tracks. One nice touch here is that these pages include links to Wikipedia Search and MusicBrainz. Although the demo pages feel a little bare-bones, all of the base functionality you would want is there.
Additionally, each track and album also have their own pages, allowing you to add them to the player queue, add media to a playlist, favorite the track, look at lyrics, and download the media directly.
With a decent amount of media on an instance, I get the impression that Funkwhale could be a real boon to independent musicians and publishers, who might want to customize their instances with a unique look and feel.
Funkwhale also ships with a playlist functionality out-of-the-box, and it mostly works as advertised. Basically all you’re doing is creating a list of media files queued by the server.
Adding individual tracks or albums to a playlist is super easy to do, allowing users to build out their playlists quickly. Thankfully, it’s also easy to edit and organize playlists in case you’d like to update them.
Another nice feature is the radio, a sort of randomized playlist geared for continuous playback. Currently, you can play a radio for tracks that you’ve favorited, music that you’ve only listened to a little bit before, and totally new music that you’ve never heard of.
If a certain track, album, or artist isn’t available on an instance, it’s possible for users to make a request. It’s totally up to an instance admin as to whether or not that request can or will be honored, but from a community-facing perspective, it’s a nice thought.
Finally, an activity stream exists to showcase user interactions on an instance. It’s not super comprehensive at the moment, but at scale it could be another neat way to discover tracks and musicians
These are still very much early days for the project, but the platform holds an incredible amount of promise. It’s exciting for the exact same reasons that PeerTube is exciting, in the sense that it could bring rich federated media applications into the Free Network, and give independent artists and publishers their own space to showcase their work.
Thanks for reading about Funkwhale! If you’re interested in learning more, hacking on the codebase, hosting an instance, or contributing to the project in some way, check out the links below.