tag:linuxfr.org,2005:/users/obsidien/journauxLinuxFr.org : les journaux de obsidien2018-03-21T23:33:35+01:00/favicon.pngtag:linuxfr.org,2005:Diary/378432018-03-21T23:33:35+01:002018-03-22T14:45:55+01:00Funkwhale, un serveur de musique libre, moderne et convivial, qui recherche des contributeursLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#liens-utiles">Liens utiles</a></li>
<li><a href="#funkwhale-cest-quoi">Funkwhale, c'est quoi ?</a></li>
<li><a href="#gen%C3%A8se-du-projet">Genèse du projet</a></li>
<li><a href="#fonctionnalit%C3%A9s">Fonctionnalités</a></li>
<li><a href="#architecture-technique">Architecture technique</a></li>
<li><a href="#contributions">Contributions</a></li>
<li><a href="#la-suite">La suite</a></li>
</ul><p>Je viens de publier la version 0.7 de <a href="https://funkwhale.audio">funkwhale</a>, et je me suis dis que c'était l'occasion de présenter le projet un peu plus largement.</p>
<h2 id="liens-utiles">Liens utiles</h2>
<ul>
<li><a href="https://funkwhale.audio/">Site officiel du projet</a></li>
<li><a href="https://code.eliotberriot.com/funkwhale/funkwhale">Dépôt Gitlab</a></li>
<li><a href="http://docs.funkwhale.audio/">Documentation</a></li>
<li><a href="https://liberapay.com/funkwhale">Page Liberapay</a></li>
<li><a href="https://riot.im/app/#/group/+funkwhale:matrix.org">Communauté Matrix</a></li>
</ul><h2 id="funkwhale-cest-quoi">Funkwhale, c'est quoi ?</h2>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6672616d617069632e6f72672f6a6567786d655034497252692f664a4569655345346972615a2e706e67/fJEieSE4iraZ.png" alt="Page d'un artiste sur funkwhale" title="Source : https://framapic.org/jegxmeP4IrRi/fJEieSE4iraZ.png"></p>
<p>On parle d'un serveur de musique sous licence libre (BSD-3, il n'est pas impossible que ça bouge), fortement inspiré de l'expérience proposée par le désormais défunt Grooveshark.com.</p>
<p>L'idée principale, c'est de pouvoir mettre sa bibliothèque musicale en ligne, l'écouter facilement depuis n'importe quel navigateur web, faire ses playlists, etc. Sur le papier, c'est assez similaire à ce qui est proposé par d'autres projets tels que <a href="https://github.com/Libresonic/libresonic">Libresonic</a> ou <a href="https://www.sonerezh.bzh/">Sonerezh</a>.</p>
<h2 id="genèse-du-projet">Genèse du projet</h2>
<p>Suite à la fermeture de Grooveshark, en 2015, j'ai voulu trouver une alternative. Les projets existants à l'époque ne me convenaient pas pour diverses raisons. Je n'étais pas satisfait par l'interface de Subsonic, et les autres projets que j'avais trouvés était tous mono-utilisateurs ou peu pratiques d'utilisation pour des communautés.</p>
<p>je me suis donc mis au turbin, et j'ai commencé à travailler, pour voir, sur un clone libre et autohébergeable qui intégrerait ce dont j'avais envie, et qui ressemblerait à Grooveshark.</p>
<p>Sur le plan fonctionnel, ce premier prototype proposait un outil d'import de musique basé sur <a href="https://github.com/rg3/youtube-dl">youtube-dl</a>, des radios et un player plutôt confortable, mais souffrait de nombreux défauts, notamment dus à des erreurs dans la conception et dans le choix des technologies utilisées sur la partie front.</p>
<p>Néanmoins, le prototype fonctionnait et je l'ai utilisé pendant presque un an et demi pour mes besoins personnels.</p>
<p>Début 2017, j'ai pris sur moi de réécrire entièrement le front-end de l'application pour arriver au funkwhale d'aujourd'hui, plus performant, plus agréable d'utilisation, mais aussi plus facile à maintenir et à faire évoluer.</p>
<p>Le projet a maintenant atteint une certaine maturité (même si la 1.0 n'a pas encore été publiée), et j'ai ouvert récemment mon instance personnelle à un cercle plus large d'utilisateurs, pour collecter des retours et faire évoluer le tout.</p>
<h2 id="fonctionnalités">Fonctionnalités</h2>
<p>Funkwhale fournit avant toute chose un lecteur de musique dans son interface web. Celui-ci supporte la plupart des fonctionnalités d'un player moderne: liste de lecture, randomisation, boucle, favoris, etc.</p>
<p>Outre le player, funkwhale permet également de parcourir la bibliothèque musicale de l'instance, de l'enrichir via le module d'import. Des radios sont également proposées, qui permettent de lire automatiquement des musiques correspondant à certains critères (mes favoris, chansons peu écoutées, chansons d'un artiste, etc.). </p>
<p>Résolument multi-utilisateur, même s'il est possible de fermer son instance et de l'utiliser seul, le projet permet en théorie d'accueillir plusieurs centaines voire milliers d'utilisateur sur une même instance, même s'il n'existe à ce jour aucune instance aussi grosse.</p>
<p>Depuis peu, les utilisateurs peuvent créer leurs propres radios et les partager avec les autres membres de l'instance. Si vous êtes fan d'electro-swing, vous pouvez par exemple créer votre propre radio qui jouera dynamiquement les titres de vos artistes préférés dans ce genre.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6672616d617069632e6f72672f476d52514f58415a6b4a43492f454b43556a4e7471584361432e706e67/EKCUjNtqXCaC.png" alt="Construction d'une radio" title="Source : https://framapic.org/GmRQOXAZkJCI/EKCUjNtqXCaC.png"></p>
<p>Enfin, avec la version 0.7, le support des playlist a été ajouté, sur un mode similaire à celui des radios, puisque les utilisateurs peuvent partager leurs playlists.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6672616d617069632e6f72672f486e4747784b3476664266732f744b4658324c5837444d64772e706e67/tKFX2LX7DMdw.png" alt="Construction d'une playlist" title="Source : https://framapic.org/HnGGxK4vfBfs/tKFX2LX7DMdw.png"></p>
<h2 id="architecture-technique">Architecture technique</h2>
<p><a href="https://code.eliotberriot.com/funkwhale/funkwhale">Le code</a> est strictement découpé en deux composants:</p>
<ol>
<li>Une API REST, écrite en Python/Django, qui gère la bibliothèque musicale, les comptes utilisateurs, les données, etc.</li>
<li>Une appli web (Single Page App, ou SPA) en <a href="https://fr.vuejs.org/">VueJS</a>, complètement statique et servie indépendamment de l'API, fournissant les fonctionnalités "finales": playlists, radios, player, import, etc.</li>
</ol><p>Si la SPA est donc actuellement le seul client funkwhale, il est donc tout à fait possible d'écrire des clients alternatifs pour consommer l'API de funkwhale.</p>
<p>L'installation se fait relativement simplement, voire en 5 minutes si vous utilisez Docker.</p>
<h2 id="contributions">Contributions</h2>
<p>Si vous êtes intéressés par le projet, le site officiel fournit <a href="https://funkwhale.audio/contribute/">une page dédiée aux contributions</a>. À l'heure actuelle, je suis le seul développeur à travailler sur funkwhale, même si j'ai déjà pu intégrer des contributions plus ponctuelles d'autres personnes.</p>
<p>Si vous vous sentez d'humeur curieuse, n'hésitez pas à faire un saut sur <a href="https://riot.im/app/#/room/#funkwhale-dev:matrix.org">#funkwhale-dev:matrix.org</a>, le salon Matrix dédié au développement de funkwhale. Techniquement, il y a vraiment de quoi se faire plaisir, que vous aimiez le front-end, le back-end ou l'UX!</p>
<h2 id="la-suite">La suite</h2>
<p>Le prochain gros objectif pour le projet sera d'inclure de la fédération entre les instances. Pour des raisons évidentes de propriété intellectuelle, je pense que cette fédération concernera, au moins dans un premier temps, les interactions entre utilisateurs (recommandations, messages, etc.). Je pense utiliser pour cela le protocole ActivityPub, qui me semble adapté et permettrait une intégration avec l'écosystème existant, par exemple avec Mastodon.</p>
<p>J'aimerai également fournir une instance publique ne contenant que de la musique libre de droit. Cela permettrait de mettre en avant des contenus libres, ainsi que de tester funkwhale sur des panels d'utilisateurs plus larges et anonymes.</p>
<p>Bien entendu, il faudra également corriger <a href="https://code.eliotberriot.com/funkwhale/funkwhale/issues">les inévitables bugs</a> et répondre aux demandes qui se présenteront entre temps ;)</p>
<p>Voilà, j'espère que ce journal vous aura donné l'envie de découvrir le projet, quoi qu'il en soit, merci de m'avoir lu !</p><div><a href="https://linuxfr.org/users/obsidien/journaux/funkwhale-un-serveur-de-musique-libre-moderne-et-convivial-qui-recherche-des-contributeurs.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/114021/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/obsidien/journaux/funkwhale-un-serveur-de-musique-libre-moderne-et-convivial-qui-recherche-des-contributeurs#comments">ouvrir dans le navigateur</a>
</p>
obsidienhttps://linuxfr.org/nodes/114021/comments.atomtag:linuxfr.org,2005:Diary/349662014-05-16T03:30:37+02:002014-05-16T03:30:37+02:00Screen Sizer, une petite appli web pour tester un site sous différentes résolutions d'écranLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Je bosse depuis quelques temps sur un petit projet personnel et j'ai eu envie de le partager ici pour avoir vos retours.</p>
<p>Ça s'appelle Screen Sizer, et c'est une application web qui affiche une page web (via un URL) et qui permet de redimensionner cette page pour la tester sous différentes résolutions d'écran. L'intérêt principal étant de vérifier un responsive design de façon simple et rapide. </p>
<p>C'est un clone assumé de <a href="http://quirktools.com/screenfly/">Screenfly</a> au niveau des fonctionnalités standards :</p>
<ul>
<li>Le site web s'affiche dans un iframe</li>
<li>On peut redimensionner cet iframe soit avec des tailles prédéfinies (Dekstop, Tablette, Smartphone…), soit avec des dimensions personnalisées</li>
<li>On peut partager le test via un lien (utile pour montrer le rendu d'un site à un client, par exemple)</li>
</ul><p>Les principales différences sont :</p>
<ul>
<li>La licence : Screen Sizer est sous licence libre (GPLv3)</li>
<li>L'internationalisation : Screen Sizer peut-être traduit en différentes (Anglais et Français dispo pour le moment)</li>
<li>Utilisable en local ou déployable de façon traditionnelle avec un serveur web</li>
<li>La possibilité de personnaliser facilement l'outil (tailles disponibles, CSS, JS, template…)</li>
</ul><p>Le tout est écrit en Python/Flask, avec un peu de jQuery côté client. <a href="http://screensizer.eliotberriot.com">Une démo est disponible</a>, et <a href="https://github.com/EliotBerriot/screen-sizer">les sources</a> sont consultables sur l'inévitable GitHub, de même que les instructions d'installation.</p><div><a href="https://linuxfr.org/users/obsidien/journaux/screen-sizer-une-petite-appli-web-pour-tester-un-site-sous-differentes-resolutions-d-ecran.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/102201/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/obsidien/journaux/screen-sizer-une-petite-appli-web-pour-tester-un-site-sous-differentes-resolutions-d-ecran#comments">ouvrir dans le navigateur</a>
</p>
obsidienhttps://linuxfr.org/nodes/102201/comments.atom