Funkwhale, an Open Source GrooveShark Alternative, Begins ActivityPub Implementation

Sean Tilley
We Distribute
Published in
4 min readApr 3, 2018

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 the platform offers a simple bot 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.

Music Discovery

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.

At the moment, it seems that search terms are restricted to song and album titles, but that might change to include topic tags in the future.

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.

Overall, the design seems vaguely reminiscent of SoundCloud, which is not at all a bad thing.

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.

The artist view, showing albums and links to Wikipedia/MusicBrainz

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 little bit more polish and metadata, this view could easily look great and provide a ton of functionality.

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.

Playlists

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.

Each playlist can have a custom visibility set, which resembles Mastodon’s post privacy toggles.

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.

Radio

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.

Requests

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.

Me begging for Todd Terje on the demo instance.

Activity

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

Conclusion

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.

--

--

Sean Tilley
We Distribute

Editor of WeDistribute. Obsessed with Free Software and Decentralization. Also makes things, sometimes with Elixir.