Commit fd07f222 authored by Guillaume Lebigot's avatar Guillaume Lebigot

Nouveau billet sur les changements de la 3.0

parent 3225c7d2
Pipeline #8113 passed with stage
in 1 minute and 45 seconds
---
layout: post
title: "Karaoke Mugen 3.0.0 - Informations importantes !"
date: 2019-07-24 06:00:00
language: fr
handle: /2019/07/24/KM3Preview.html
---
Calmez-vous, Karaoke Mugen 3.0.0 n'est pas encore sorti. Comment est on passés de 2.5.x à 3.0.0 ? Où sont passés les versions 2.6 à 2.9 ?
## Leafa Lumineuse
La prochaine version de Karaoke Mugen, la 3.0.0 s'appellera donc Leafa Lumineuse. Et elle change énormément de choses importantes que je vous invite à lire pour comprendre en quoi ces changements ont été complexes. Je vais rester le plus clair possible.
### Version 4 des fichiers de karaoké
Chaque karaoké de KM est régi par un fichier `.kara`. Ce fichier contient de nombreuses métadonnées comme le titre de la chanson, sa durée, le gain audio à appliquer, la taille de la vidéo, quels fichiers vidéo et de paroles il faut charger, à quelle série, chanteur, compositeur est rattaché cette chanson, etc.
Le format des `.kara` est très basique actuellement et nous bloquait pour certaines évolutions. Il était dérivé des toutes premières versiosn de Karaoke Mugen quand celui-ci s'appelait encore Toyunda Mugen (et même avant). Surtout il fallait "transformer" le `.kara` en des données utilisables en interne par l'application. Nous avons donc décidé de changer ce format en un format JSON. Je ne vais pas vous expliquer de quoi il s'agit, mais c'est un format plus structuré, plus extensible, qui va permettre de nombreuses évolutions et surtout qui peut être facilement relu par d'autres applications que Karaoke Mugen.
Ce nouveau format nous permettra notamment de gérer plus tard des karaokés avec différentes versions vidéo et de paroles. Par exemple avec effets ou non, version instru ou pas, etc. On y est pas encore mais les fondations sont là !
Le problème quand on change ce genre de choses, c'est que du coup les versions précédentes de Karaoke Mugen vont être incapables de lire ce nouveau format. On a donc décidé, jusqu'à la sortie de Karaoke Mugen 3.0.0, de générer à la fois un kara en format 3 (lisible par vos versions de KM) et un kara en version 4 (lisible par KM 3.x uniquement).
**Lorsque Karaoke Mugen 3.0.0 sortira pour le public, les fichiers au format 3 ne seront plus mis à jour dans la base. Il vous faudra impérativement passer à Karaoke Mugen 3.0.0**
Comme on a peu de temps et peu de personnes pour développer Karaoke Mugen, maintenir 2 formats de fichiers différents dans la même version de KM relevait du casse-tête.
### Refonte du système de tags
Les tags pour Karaoke Mugen, ce sont les chanteurs, les compositeurs, les créateurs, les auteurs de karaoké, les langues, mais aussi les types de chanson (OP, ED, IN, etc.) et les tags "divers" comme "Pour adultes", "Chanson difficile" ou "Spoilers"
Avec le format 3 des karaokés chaque chanson indique textuellement ses tags. Si quelqu'un fait une faute de frappe et écrit "Ayumi Homasaki" à la place de "Ayumi Hamasaki" ou met un accent là où il ne faut pas, ça compte comme un tag différent, donc le moteur de recherche ne trouvera pas toutes les chansons.
Autre problème qu'on avait : les tags divers étaient tous fourrés dans la même catégorie, que ça soit une plateforme comme la PS4 ou un genre de série comme Shounen ou Yaoi.
Et pour ajouter un tag divers, ou un type de chanson il fallait changer l'application, rendant alors incompatible le nouveau karaoké avec des versions de Karaoke Mugen plus anciennes.
Du coup il a été décidé de donner aux tags une identité comme ce qui a été fait avec els séries l'an dernier : chaque tag est maintenant un fichier à part entière dans la base de Karaoke Mugen (il y en a du coup plus de 8400 !) et est géré par l'application lors de la génération de votre base de données.
Ca permet d'autres subtilités. Par exemple là on va bientôt rajouter dans la base des types "Image Song" et "Character Song" ainsi qu'un tag "Fanworks" pour tous les karas issus de chansons amateur. Avant on était obligé de faire ça pour une nouvelle version de Karaoke Mugen. Maintenant ça ne sera plus qu'un souci de mise à jour de la base et hop, vous aurez de nouveau types et tags !
Il a fallu du coup revoir comment était architecturé la base de données de Karaoke Mugen, faire des modifications très profondes dans le code, créer les fichiers tags à partir de la base existante...
Un des problèmes qu'on a rencontrés était les tags ayant le même nom mais pas le même type. Par exemple "Saori Hayami" est une seiyuu qui chante, mais qui compose aussi. Il a donc fallu écrire un outil pour fusionner les tags, faire en sorte qu'un tag puisse avoir plusieurs types... Et on a dû faire ça manuellement car certains tags ont le même nom, mais sont bien deux entités très différentes ! On ne peut pas juste tout fusionner !
Le fait que les tags ont un identifiant unique chacun (un code UUID) permet également sur [kara.moe](http://kara.moe/base) de faire des liens permanents vers un chanteur ou un compositeur.
Plus tard, comme on a des infos centralisés sur les tags, il va être possible d'ajouter des champs d'information comme un lien wikipedia, une date de naissance/décès, etc. Il y a certainement des choses à faire mais encore une fois ça peut nous prendre du temps et de l'énergie... Mais au moins la possibilité est là.
### Une réécriture de l'interface
L'interface web écrite par Ziassan a permis à tous d'utiliser Karaoke Mugen depuis son téléphone ou tout autre périphérique. Elle fonctionne, elle est jolie, et elle permet plein de choses. Son seul souci c'est qu'elle n'est pas à l'état de l'art de ce qui se fait en terme de développement interne. Son code était très difficile à maintenir car Ziassan a, comme moi, appris durant sa conception. Quand j'ai commencé Karaoke Mugen je ne connaissais pas Javascript ni NodeJS.
Et Karaoke Mugen, son moteur, a aussi été réécrit avec du code plus simplifié, une approche plus moderne, au cours des années de son existence.
Là, c'est majoritairement Aeden et LordB qui s'occupent de ça actuellement car Ziassan est en plein déménagement mais même si les changements cosmétiques seront minimes, on pourra faire des modifications plus simplement.
Cependant, il y a tout un travail avant ça, un travail de détricotage du code et de retricotage. La façon dont c'est écrit (en ReactJS) implique aussi de gros changements. Transparents pour vous, mais pour nous c'est vraiment un chantier, avec des plots et des pancartes "en travaux" partout.
### D'autres gros changements sous le capot
Même si le changement cité ci-dessus n'aura aucun impact concret, il en existe d'autres, des modifs sous le capot, qui justifient cette version 3.0.0 :
- Le code du moteur a été réécrit en Typescript, ce qui permet d'éviter de nombreux bugs, car typescript nous aide, développeurs, à prévoir certains bugs et à les corriger avant qu'on ne tombe dessus.
- Entre Karaoke Mugen Server (kara.moe) et Karaoke Mugen Application il y avait beaucoup de code commun : la lecture et l'écriture des fichiers karas, l'accès à la base de données, la gestion de la configuration... tout ce code commun a été "sorti" des deux applications et a été mis dans [un dépôt de code unique](https://lab.shelter.moe/karaokemugen/modules/lib). Cette "lib" comme "library" (une DLL quoi, pour les utilisateurs Windows) est appelée par Karaoke Mugen lorsque l'on prépare les executables que vous téléchargez. Ca nous fait gagner énormément de temps car une modification faite pour Karaoke Mugen App peut facilement être répercutée sur Karaoke Mugen Server et inversement alors qu'avant on était obligés de faire les modifications deux fois, avec risques de se tromper car le code pouvait être légèrement différent.
## Et ça sort quand tout ca, hein
Karaoke Mugen 3.0.0 est prévue pour mi-novembre 2019. Ca fait loin si on considère que jusqu'ici on a à peu près livré une nouvelle version tous les 3 mois, mais on a vraiment besoin de temps pour finir les travaux et tester tout ça. Il y aura forcément des bugs et des choses qu'on aura pas vues, mais avec notre équipe limitée, on fait ce qu'on peut.
N'oubliez jamais que Karaoke Mugen est fait par une équipe de passionnés, que ça soit sa base de karaokés ou ses logiciels. C'est fait bénévolement, sur leur temps libre. On est super intéressés par de bonnes volontés qui voudraient apprendre à coder en NodeJS ou React, ou qui voudraient apporter leur pierre à l'édifice. On a déjà formé des personnes comme ça, et c'est parfois assez frustrant de les voir s'en aller ou peu contribuer après avoir passé du temps à leur expliquer comment tout fonctionne... mais c'est la vie : on ne force personne à bosser bénévolement, on ne peut que compter sur la bonne volonté des fans de karaoké.
Si vous voulez voir les autres changements prévus, [un changelog préventif est déjà dispo sur la branche Next](https://lab.shelter.moe/karaokemugen/karaokemugen-app/blob/next/CHANGELOG.md). Il y a dans ce document tous les changements de Karaoke Mugen 3.0.0. Je n'ai abordé que les aspects vraiment importants mais il y a quelques fonctionnalités qui devraient vous faire plaisir sans aucun doute.
Et pour suivre l'avancement de cette version 3.0.0, vous avez toujours [les jalons du gitlab que vous pouvez consulter.](https://lab.shelter.moe/karaokemugen/karaokemugen-app/-/milestones/7) A l'heure où j'écris ces lignes, nous sommes à 59% de complétion ! Il reste 41% à faire ! Fight-o !
Merci d'avoir lu jusqu'ici !
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment