Funkwhale A modern, convivial and free music server

../../../_images/logo_funkwhale.png

git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git

~/projects > git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git
Clonage dans 'funkwhale'...
remote: Enumerating objects: 19290, done.
remote: Counting objects: 100% (19290/19290), done.
remote: Compressing objects: 100% (6037/6037), done.
remote: Total 19290 (delta 13328), reused 18042 (delta 12576)
Réception d'objets: 100% (19290/19290), 15.78 MiB | 929.00 KiB/s, fait.
Résolution des deltas: 100% (13328/13328), fait.

Layout

Historique

Septembre 2018

en 2017 (ou était-ce 2016 ?), j’ai découvert une nouvelle super technologie, appelée VueJS, que j’ai utilisée pour reconstruire le front-end du projet, à partir de zéro.

Soudain, tout est devenu à la fois plus facile et plus satisfaisant du point de vue de l’utilisateur et du développeur, et je me sentais assez confiant pour montrer le projet à des amis proches et à la famille.

En utilisant leurs commentaires, j’ai pu améliorer le projet et ajouter progressivement de nouvelles fonctionnalités. La première fois que j’en ai parlé publiquement, c’était probablement ici, en juillet 2017.

Mais le vrai coup d’envoi du projet a été avec ce pouet, où j’ai invité des gens sur ma propre instance pour une bêta fermée, fin février 2018.

Mai 2018

Enfin, une des grandes nouveautés de ces dernières années, c’est à mon avis Docker qui réduit grandement les difficultés à installer un service tel que Funkwhale.

Tout le monde n’est pas forcément convaincu par cette techno, qui a aussi ses problèmes, mais la simplicité pour les déploiements est quand même un atout assez fort.

Très concrètement, si tu consultes la doc d’installation de Funkwhale sur Docker, tu pourras constater qu’il suffit d’une dizaine de commandes à exécuter pour installer Funkwhale sur son serveur.

Description

Funkwhale est un serveur de streaming de musique libre, auto-hébergé et fédéré. Chaque utilisateur dispose d’une bibliothèque dans laquelle il peut ajouter les titres qu’il souhaite, et qu’il peut partager avec d’autres utilisateurs, qu’ils soient sur la même instance ou non.

Features

Scope

Funkwhale is a web based music server. It is similar in terms of goals and feature set to various existing projects, such as Sonerezh or Airsonic .

A social platform

However, Funkwhale is better-suited for small to medium communities and was designed to be not only a music server and player, but also a place to socialize around music and discover new content.

While some of these features are not currently implemented, our roadmap includes:

  • Radios, to discover the music of a given user, artist, or genre

  • Playlists

  • Favorites

  • Broadcasts, as they existed in, for example, Grooveshark

  • Recommendations

i18n

Docker, Dockerfile, docker-compose

pyproject.toml

cat pyproject.toml
[tool.towncrier]
    package = "changes"
    package_dir = ""
    filename = "CHANGELOG"
    directory = "changes/changelog.d/"
    start_string = ".. towncrier\n"
    template = "changes/template.rst"
    issue_format = ""
    title_format = "{version} (unreleased)"
    underlines = "-"

    [[tool.towncrier.section]]
        path = ""

    [[tool.towncrier.type]]
        directory = "feature"
        name = "Features"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "enhancement"
        name = "Enhancements"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "bugfix"
        name = "Bugfixes"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "doc"
        name = "Documentation"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "i18n"
        name = "i18n"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "misc"
        name = "Other"
        showcontent = true

Technologies and standards

Technologies and standards

Funkwhale’s federation is built on top of the following technologies:

Support for the following is planned but not implemented-yet:

Philosophy

Our goal is to stick to the specifications as much as possible, to ensure compatibility with existing applications such as Mastodon, Peertube, Plume, Pleroma or PixelFed.

However, this is not always possible for all our use cases. The ActivityPub and ActivityStreams specifications are really high-level and do not always fit our use cases. For such cases, we will use an ad-hoc solution, and document it here.

There are plenty of projects built using ActivityPub , and our goal is not to support all the existing activities. Instead, we want to support activities and objects that make sense for Funkwhale use cases, such as follows or likes .

If you think this document is not accurate or find evidence that Funkwhale is not behaving according to the behaviour documented here, please file a bug on our issue tracker , as we consider this a bug.

The federation (ActivityPub, fediverse)

Les tests