URL:
https://linuxfr.org/news/gcompris-sort-en-version-0-97
Title: GCompris sort en version 0.97
Authors: Johnny_Jazeix
ZeroHeure, palm123, Pierre Jarillon et Julien Jorge
Date: 2019-12-02T21:23:20+01:00
License: CC by-sa
Tags:
Score: 6
Nous avons le plaisir de vous annoncer la publication de la version 0.97 de GCompris, le logiciel éducatif pour les enfants de deux à dix ans.
Cette nouvelle version contient entre autres deux nouvelles activités : base de programmation et base de tangram. GCompris propose plus de 150 activités, dont des jeux, toujours avec un objectif pédagogique. Lecture, mathématiques, sciences, géographie et découverte de l’ordinateur sont les thèmes abordés par ces activités. Cette nouvelle version rajoute pas mal de petites nouveautés.

----
[Site officiel de GCompris](
https://gcompris.net/index-fr.html)
[Annonce de la précédente version de GCompris sur LinuxFr.org](
https://linuxfr.org/news/gcompris-sort-en-version-0-95)
----
Côté technique
==============
Intégration dans KDE
--------------------
Suite au changement de technologie en 2014, GCompris a rejoint [KDE](
https://kde.org/). En plus de profiter de l'infrastructure déjà mise en place ([git](
https://cgit.kde.org/gcompris.git/), [phabricator](
https://phabricator.kde.org/project/profile/1/), [Jenkins](
https://build.kde.org/job/Extragear/job/gcompris/)…), nous bénéficions de l'aide des équipes de traduction qui fournissent un travail considérable afin de traduire les logiciels dans plein de langues ([GCompris](
http://l10n.kde.org/stats/gui/stable-kf5/po/gcompris_qt.po/)). Nous essayons aussi de participer à divers programmes (en fonction des disponibilités des encadrants potentiels) : le [Season of KDE](
https://season.kde.org/?q=program_home&prg=47), le [Google Code-in](
https://codein.withgoogle.com/) et le [Google Summer of Code](
https://summerofcode.withgoogle.com/).
Architecture
------------
Étant donné le but du logiciel (pouvoir ajouter des activités facilement), nous avons dès le début opté pour une solution à base de plugins. Les activités sont codées en [QML](
https://www.scriptol.fr/programmation/qml.php) et [[Javascript]] et un code en C++ permet, entre autres, de les charger au démarrage. L'avantage est qu'on peut garder une grande indépendance entre les activités mais il y a la possibilité « d'héritage » afin d'avoir une même base pour plusieurs activités (par exemple tous les jeux de mémoire sont basés sur un même code).
Un core contenant les éléments communs et non spécifiques à une activité est aussi présent, ce code étant un mix de QML et C++ selon les fonctionnalités.
Pour le QML, il y a tout ce qui est graphique :
- style des éléments graphiques (boutons, combobox…) ;
- boîtes de dialogue de configuration, d'aide ;
- le clavier virtuel (à voir si remplaçable par celui de [Qt](
https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html) fourni sous licence libre depuis Qt 5.7) ;
- la gestion de la police d'écriture…
Pour le C++, la gestion en interne des données :
- la classe de base des activités ;
- la configuration de GCompris ;
- la gestion du téléchargement des fichiers de ressources ;
- la lecture de fichiers/dossiers.
Nous sommes toujours sur du C++11, QML, JavaScript pour les langages, Qt (version 5.6 minimale) pour l'interface graphique et cmake pour le système de compilation multi-plateforme (> 3.0).
QtQuick.Controls étant déprécié depuis 5.11, l'une des prochaines étapes est de passer à QtQuick.Controls 2 qui a été introduit en Qt 5.7. Cela devrait aussi permettre de gagner en performance (
https://doc.qt.io/qt-5/qtquickcontrols2-differences.html). La majorité des composants (boutons, barres d'avancement…) a été migrée facilement, il reste deux composants plus compliqués à changer :
- le [calendrier était un composant](
https://doc.qt.io/qt-5/qml-qtquick-controls-calendar.html) prêt à l'emploi en QtQuick.Controls 1 mais n'existe pas en QtQuick.Controls 2, il faut utiliser [les labs](
https://doc.qt.io/qt-5/qt-labs-calendar-qmlmodule.html) et le recréer à partir de ses différentes parties ;
- La StackView dont nous nous servons pour passer du menu à une activité et afficher les différents panneaux d'aide, n'a pas la même interface entre les deux versions.
Une autre grosse étape est d'avoir des jeux de données spécifiques par activités. Le but étant d'avoir une meilleure granularité sur la difficulté et d'adapter une même activité à plusieurs tranches d'âge. Par exemple, sur l'activité pour apprendre à lire l'heure, avoir des premiers niveaux avec seulement les heures affichées, puis rajouter les minutes et enfin les secondes.
Des images décrivant la future interface [sont disponibles si vous êtes enregistré sur phabricator](
https://phabricator.kde.org/M146/546/). Ce gros travail avance en grande partie avec les différents programmes (Season of KDE et Google Summer of Code) où nous proposons en sujets principaux d'ajouter la gestion des jeux de données et de les coder. Cela nous permet de préparer le terrain pour un mode serveur/administrateur où les professeurs pourront directement envoyer les différents jeux de données souhaités sur les tablettes ou PC des élèves afin de mieux les faire progresser.
Grâce à cmake et Qt, GCompris est disponible sur les plateformes :
- Linux (dont [Raspberry Pi](
https://gcompris.net/download/qt/raspberrypi/gcompris-qt-0.97-Raspberry.sh)) ;
- Android (via [F-Droid](
https://f-droid.org/fr/packages/net.gcompris.full/) et [Play Store](
https://play.google.com/store/apps/details?id=net.gcompris&hl=fr)) ;
- Windows ;
- MacOS.
Site Internet
-------------
Le code est aussi [hébergé par KDE](
https://cgit.kde.org/websites/gcompris-net.git). La génération du site internet est basé sur le logiciel Python [jinja](
https://jinja.palletsprojects.com/en/2.10.x/) qui génère un site statique. A partir des différents modèles (page d'accueil, page de captures d'écran, flux rss…), nous générons pour chaque langue la page traduite associée : à chaque nouvelle version du logiciel, nous créons une page html contenant le texte (par exemple, [en anglais](
https://cgit.kde.org/websites/gcompris-net.git/tree/news/20191201.html)). Un [script](
https://cgit.kde.org/websites/gcompris-net.git/tree/tools/convertLastNewsToPo.py) Python convertit cette nouvelle en .po, format utilisé par les traducteurs afin qu'ils puissent traduire avec leurs logiciels préférés (et ne pas avoir à écrire du html directement). Un deuxième [script](
https://cgit.kde.org/websites/gcompris-net.git/tree/tools/convertPoToNews.py) reconvertit le .po en .html afin de pouvoir être affiché.
Ressources associées au logiciel
--------------------------------
Nous utilisons [un troisième dépôt git](
https://cgit.kde.org/gcompris-data.git/) afin de stocker toutes les ressources facultatives à l'application qui peuvent améliorer son utilisation. Il contient l'ensemble des images utilisées dans l'activité de vocabulaire, ainsi que les voix associées par langue (si un contributeur les a enregistrées). Au niveau des voix, il y a aussi les introductions des différentes activités, les pays pour l'activité de géographie ainsi que les couleurs et les chiffres/lettres.
Nous avons aussi rajouté dans cette version 0.97, les musiques de fond, qui ont été mises à jour par rapport à la version Gtk+ et sont aussi mises dans ce dépôt. Cette fois, ce sont des scripts bash qui permettent de générer les fichiers [rcc](
https://doc.qt.io/qt-5/resources.html) pour qu'on puisse les utiliser dans GCompris. Pour les fichiers audio, la particularité est de devoir convertir les fichiers ogg en mp3 pour Windows et en aac pour MacOS car ces plateformes ne supportent pas le format ogg par défaut.
Un script [Python](
https://cgit.kde.org/gcompris-data.git/tree/voices/check_voices.py), enfin, permet de générer [la page](
http://gcompris.net/voicestats/) qui donne l'état des lieux des voix et traductions par langue.
Nouvelles activités
===================
Une activité pour apprendre quelques bases sur la programmation : à partir de quelques instructions simples (avancer, tourner à 90°), il faut aider Tux à atteindre le poisson.

Une activité pour comprendre les bases du tangram : il s'agit en fait des premiers niveaux de l'activité de tangram mis dans une activité spécifique pour les plus jeunes.

Autres changements
==================
- La traduction du logiciel a été faite en macédonien. GCompris est, dans cette version, entièrement traduit dans vingt langues (basque, portugais du Brésil, breton, anglais britannique, catalan, chinois traditionnel, néerlandais, français, galicien, grec, italien, macédonien, malayalam, polonais, portugais, roumain, slovaque, espagnol, suédois et ukrainien). Il est partiellement traduit (plus de 50 %) dans 15 langues : biélorusse (65 %), catalan de Valence (95 %), chinois simplifié (66 %), estonien (93 %), finnois (86 %), allemand (96 %), indien (73 %), hongrois (95 %), indonésien (95 %), irlandais gaélique (78 %), norvégien (93 %), russe (76 %), écossais gaélique (67 %), slovène (54 %) et turc (95 %). Pour la prochaine version, nous retirerons les langues qui n’ont pas un pourcentage de traduction assez élevé ou non maintenues (80 %) ;
- des nouvelles voix américaines ;
- ajout du jeu de données en malayalam pour l'activité « Jeu de lettres » ;
- ajout du jeu de données en breton pour l'activité « Les mots qui tombent » ;
- des sous-catégories pour mieux organiser les activités par thèmes ;
- des musiques de fond (comme dans l'ancienne version Gtk+) ;
- des options pour modifier le volume pour les effets audio ;
- une configuration pour changer la vitesse de défilement des éléments dans plusieurs activités (lettres qui tombent, lecture horizontale/verticale, nomme la note) ;
- l'affichage des pièces capturées dans le jeu d'échecs ;
- de nouvelles images et améliorations de layout pour plusieurs activités ;
- les fichiers de ressources (données) sont maintenant [sur un serveur KDE](
https://cdn.kde.org/).