tag:linuxfr.org,2005:/tags/autotools/publicLinuxFr.org : les contenus étiquetés avec « autotools »2018-11-03T22:13:36+01:00/favicon.pngtag:linuxfr.org,2005:News/388352018-10-07T21:44:46+02:002018-10-12T01:49:00+02:00E.T. téléphone MesonLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Meson est une technologie récente de la catégorie des systèmes de configuration et de gestion de la compilation de projets, à l’instar d’<em>Autotools</em> et de <em>CMake</em>. Nous proposons dans cette dépêche un tour de Meson, avec une explication des technologies en jeu, puis des comparaisons et quelques tests de rapidité et performance. En aucun cas nous ne tomberons dans le cassage des autres technologies et nous essaierons de comparer de manière la plus neutre possible.</p>
<p>Meson a été initié par Jussi Pakkanen en 2013. <a href="http://voices.canonical.com/jussi.pakkanen/2011/09/13/autotools/">Frustré</a> par Autotools, <a href="http://voices.canonical.com/jussi.pakkanen/2013/03/26/a-list-of-common-cmake-antipatterns/">insatisfait</a> par CMake, il a décidé de s’attaquer au problème et <a href="http://mesonbuild.com/Design-rationale.html">défini les buts à atteindre</a>. Meson est le fruit de son travail, aidé de la communauté de contributeurs qui s’est formée.</p>
<p><em>Bien entendu, nous ne sommes pas omniscients et attendons des commentaires pertinents des lecteurs de</em> LinuxFr.org <em>pour corriger toute erreur, dans la joie et la bonne humeur.</em></p>
</div><ul><li>lien nᵒ 1 : <a title="http://mesonbuild.com/" hreflang="fr" href="https://linuxfr.org/redirect/102834">Meson (site officiel)</a></li><li>lien nᵒ 2 : <a title="https://ninja-build.org/" hreflang="fr" href="https://linuxfr.org/redirect/102835">Ninja (site officiel)</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#toc-culture-et-histoire">Culture et Histoire</a><ul>
<li><a href="#toc-au-commencement-le-compilateur-%C3%A9tait-bien-seul">Au commencement le compilateur était bien seul</a></li>
<li><a href="#toc-puis-vint-le-makefile">Puis vint le Makefile</a></li>
<li><a href="#toc-et-enfin-les-autotools">Et enfin les Autotools</a></li>
</ul>
</li>
<li>
<a href="#toc-ch%C3%A9rie-jai-les-m%C3%AAmes-%C3%A0-la-meson">Chérie, j’ai les mêmes à la Meson ?</a><ul>
<li><a href="#toc-vous-avez-dit-ninja">Vous avez dit Ninja ?</a></li>
<li><a href="#toc-pourquoi-ninja-estil-plus-rapide-que-make">Pourquoi ninja est‐il plus rapide que make ?</a></li>
</ul>
</li>
<li>
<a href="#toc-construire-un-projet-avec-meson">Construire un projet avec Meson</a><ul>
<li><a href="#toc-configuration">Configuration</a></li>
<li><a href="#toc-compilationconstruction">Compilation/construction</a></li>
<li><a href="#toc-installation">Installation</a></li>
<li><a href="#toc-autres-cibles-classiques">Autres cibles classiques</a></li>
<li><a href="#toc-sortie-standard">Sortie standard</a></li>
</ul>
</li>
<li>
<a href="#toc-comparaisons-et-discussions-sur-les-qualit%C3%A9s-de-meson">Comparaisons et discussions sur les qualités de meson</a><ul>
<li><a href="#toc-les-avanc%C3%A9es">Les avancées</a></li>
<li><a href="#toc-des-reculs">Des reculs ?</a></li>
<li><a href="#toc-on-veut-des-chiffres">On veut des chiffres !</a></li>
</ul>
</li>
<li><a href="#toc-exemples-de-projets-port%C3%A9s-sur-meson">Exemples de projets portés sur meson</a></li>
<li><a href="#toc-conclusion">Conclusion</a></li>
</ul>
<p><em><strong>N. D. M. :</strong> Cette dépêche est une reprise à partir d’une version longtemps restée inchangée dans l’espace de rédaction, ça arrive. :-) La liste des contributeurs est donc réellement la suivante : Jehan, et 16 autres : Anonyme, BAud, Olivier Humbert, palm123, _PhiX_, Cyril Brulebois, Storm, Marco, David Marec, dourouc05, ZeroHeure, vpinon, Bruno Michel, Oliver H, Boiethios et Snark.</em></p>
<h2 id="toc-culture-et-histoire">Culture et Histoire</h2>
<h3 id="toc-au-commencement-le-compilateur-était-bien-seul">Au commencement le compilateur était bien seul</h3>
<p>Quand vous souhaitez compiler un logiciel très simple, disons juste un fichier source, en général, vous ne vous embêtez avec aucun des logiciels précités. Vous sortez juste votre compilateur préféré et en une ligne de commande, vous avez votre exécutable :</p>
<pre><code class="sh">gcc main.c</code></pre>
<p>Même avec plusieurs fichiers, parfois on va juste enchaîner les quelques fichiers sur une ligne de commande unique et mettre le tout dans un script shell. Allez, avouez, vous avez tous fait ça un jour. Mais si, vous savez, pour votre premier jet, avant de faire votre premier <em>commit</em> ! Faut pas rougir !</p>
<p>Dans le monde des logiciels libres, les deux compilateurs les plus souvent rencontrés sont le vénérable <a href="http://gcc.gnu.org/">GCC</a> et <a href="https://llvm.org/">Clang/LLVM</a>.</p>
<h3 id="toc-puis-vint-le-makefile">Puis vint le Makefile</h3>
<p><a href="https://fr.wikipedia.org/wiki/make" title="Définition Wikipédia">make</a> propose une syntaxe de définition d’éléments de compilation dans les fichiers <code>Makefile</code>.</p>
<p>Ce format a permis de segmenter une compilation compliquée en éléments de plus petite taille. Mais surtout, il a ajouté des notions de dépendances et de compilation conditionnelle. Ainsi, la commande <code>make</code> ne recompile que les parties dont les fichiers sources ont été modifiés, accélérant considérablement la compilation par rapport à une compilation totale.</p>
<p>Chaque machine est potentiellement différente, il faut donc adapter : où installer les binaires ? Et les fichiers de données ? Ah, tu veux utiliser un autre compilateur que <code>gcc</code> ? Selon que tu compiles sous GNU/Linux, BSD, Windows ou macOS, tu as besoin de compiler des fichiers différents ? Ton code a besoin de savoir si la machine cible a telle API disponible ? Certaines fonctionnalités sont optionnelles ? etc.</p>
<p>Cette configuration est possible avec <code>make</code>, mais cela rend les <code>Makefile</code> compliqués à l’extrême. C’est là que sont nés les Autotools.</p>
<h3 id="toc-et-enfin-les-autotools">Et enfin les Autotools</h3>
<p>Les trois principaux outils d’<em>autotools</em> sont <code>autoconf</code>, <code>autoheader</code> et <code>automake</code>.</p>
<p><code>autoconf</code>, par exemple, va créer un fichier de configuration adapté au projet (le fameux <code>./configure</code>), et <code>automake</code> génèrera les scripts <code>Makefile</code> à partir de modèles utilisant une syntaxe similaire, de plus haut niveau.</p>
<p>L’une des avancées majeures des <em>autotools</em> est la standardisation des logiciels qui en est née (voir la section <em><a href="https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html">Makefile Conventions</a></em> des <a href="https://www.gnu.org/prep/standards/standards.html"><em>GNU Coding Standards</em></a>).</p>
<p>Cette standardisation segmente le type de données (exécutables, bibliothèques, données du système, données du logiciel, données de l’utilisateur, configuration, etc.) et définit divers emplacements : exécutables dans <code>/bin</code>, données du système dans <code>/share</code>, configurations dans <code>/etc</code>… </p>
<p>Il y eut également une standardisation des fonctionnalités de base attendues d’un système de compilation, avec des cibles/actions par défaut (par exemple, l’installation, la désinstallation, les tests unitaires, le nettoyage de fichiers construits), ainsi que de nombreuses options par défaut (pour la compilation croisée, les compilations hors de l’arbre des sources, la gestion fine des divers chemins d’installation, etc.)</p>
<p>Enfin, cela a standardisé les règles de compilation et d’installation avec les concepts de « préfixe », « datadir », « DESTDIR », etc. Les gens savaient à quoi s’attendre et compiler un logiciel utilisant le fameux triptyque <code>./configure && make && make install</code>. À tel point que le fichier <code>INSTALL</code> est désormais généré par les Autotools (s’il n’existe pas, car toute installation <em>autotools</em> a une base similaire).</p>
<h2 id="toc-chérie-jai-les-mêmes-à-la-meson">Chérie, j’ai les mêmes à la Meson ?</h2>
<p>Meson ne prend pas <code>make</code> en charge. C’est <a href="http://mesonbuild.com/FAQ.html#why-is-there-not-a-make-backend">un choix</a> de conception et utilise <a href="https://ninja-build.org/manual.html#_introduction">Ninja</a> (développé pour s’affranchir des contraintes historiques de Make).</p>
<h3 id="toc-vous-avez-dit-ninja">Vous avez dit Ninja ?</h3>
<p>Meson est souvent mis en avant pour sa rapidité de construction, mais elle est surtout due à <code>ninja</code>, globalement plus performant que <code>make</code>. En effet, les fichiers que lit <code>ninja</code> pour la construction ne contiennent pas de script, là où <code>make</code> peut être amené à réévaluer des portions de code (portions de code shell embarqué dans un <code>Makefile</code> par exemple).</p>
<p>Nous vous conseillons la lecture des <a href="https://ninja-build.org/manual.html#_introduction">raisons</a> qui ont motivé la création de Ninja.</p>
<h3 id="toc-pourquoi-ninja-estil-plus-rapide-que-make">Pourquoi ninja est‐il plus rapide que make ?</h3>
<p>Les raisons sont principalement historiques. La première raison est que le format <code>Makefile</code> fut créé pour être écrit originellement à la main (les Autotools sont nés après). Le langage a donc toutes les fonctionnalités possibles et imaginables qui auraient pu être nécessaires dans l’histoire du développement d’applications.</p>
<p>Le projet Ninja a fait le choix dès le début de n’avoir presque aucune fonctionnalité, sinon les plus basiques, dans les fichiers <code>ninja</code> eux‐mêmes :</p>
<blockquote>
<p><a href="https://ninja-build.org/manual.html#_comparison_to_make">Original</a> : « <em>In contrast, Ninja has almost no features; just those necessary to get builds correct while punting most complexity to generation of the ninja input files.</em> »</p>
<p>Traduction : « En comparaison [de Make], Ninja n’a presque aucune fonctionnalité : seulement le strict nécessaire pour compiler correctement en déplaçant la complexité durant la génération des fichiers d’entrée Ninja. »</p>
</blockquote>
<p>En particulier, on parle là de fonctionnalités <strong>décisionnelles</strong>. Même si l’étape de configuration existe avec le triptyque <code>autotools</code>, elle va principalement créer des variables qui seront utilisées ensuite dans les scripts <code>Makefile</code>. Il y a donc en réalité toujours beaucoup de code « décisionnel » exécuté lors du <code>make</code>. De son côté, <code>ninja</code> étant fait dès le début pour ne jamais être utilisé directement, ils ont délégué, par design, la plupart des décisions au script de configuration. Cela peut éventuellement amener à des <a href="https://ninja-build.org/build.ninja.html">scripts <code>ninja</code> plus verbeux</a> et moins évidents à lire, mais néanmoins plus rapides.</p>
<p>Ninja se repose donc entièrement sur les projets de type <code>meson</code> pour gérer la partie décisionnelle, comme le manuel le dit lui‐même en conclusion de l’extrait précédent :</p>
<blockquote>
<p>Original : « <em>Ninja by itself is unlikely to be useful for most projects.</em> »</p>
<p>Traduction : « Ninja, en soi, a peu de chance d’être utile à la plupart des projets. »</p>
</blockquote>
<p>Alors qu’il est toujours possible, bien que déconseillé, de créer des fichiers <code>Makefile</code> à la main, un projet qui utilisera <code>ninja</code> le fera indirectement (avec <code>cmake</code> ou <code>meson</code>).</p>
<h2 id="toc-construire-un-projet-avec-meson">Construire un projet avec Meson</h2>
<h3 id="toc-configuration">Configuration</h3>
<p>Le projet Meson en fait une seule étape et demande donc à tout le monde d’installer <code>meson</code>.</p>
<p>Là où les Autotools faisaient :</p>
<pre><code class="sh">/chemin/vers/sources/configure --prefix<span class="o">=</span>/mon/prefix --enable-some-option</code></pre>
<p>… Meson fait :</p>
<pre><code class="sh">meson /chemin/vers/sources/ --prefix<span class="o">=</span>/mon/prefix -Dsome-option<span class="o">=</span><span class="nb">true</span></code></pre>
<p>Les options de compilation se passent aussi sur cet appel. Pour reconfigurer, avec Autotools, il faut utiliser la même commande à nouveau. Avec meson, on doit utiliser :</p>
<pre><code class="sh">meson configure -Dprefix<span class="o">=</span>/autre/prefix -Dsome-option<span class="o">=</span><span class="nb">false</span></code></pre>
<p>Enfin pour voir seulement les options configurées, ce qui n’est pas faisable facilement avec les Autotools, on peut lancer :</p>
<pre><code class="sh">meson configure</code></pre>
<p>Notons que si vous avez mis à jour <code>meson</code> entre deux configurations, vous risquez d’obtenir l’erreur suivante :</p>
<pre><code class="sh">$ meson configure
Meson configurator encountered an error:
Version mismatch <span class="o">(</span><span class="m">0</span>.44.1 vs <span class="m">0</span>.44.0<span class="o">)</span></code></pre>
<p><em>(voir le <a href="https://github.com/mesonbuild/meson/issues/2026">rapport de bogue</a>)</em></p>
<h3 id="toc-compilationconstruction">Compilation/construction</h3>
<p>Cette partie remplace simplement <code>make</code> par <code>ninja</code>.</p>
<h3 id="toc-installation">Installation</h3>
<p>Là aussi, le <code>make install</code> est simplement remplacé par <code>ninja install</code>.</p>
<h3 id="toc-autres-cibles-classiques">Autres cibles classiques</h3>
<ul>
<li>
<code>make uninstall</code> (Autotools seulement, <a href="https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake">absent de CMake par conception</a>) est remplacé par <code>ninja uninstall</code> ;</li>
<li>
<code>make check</code> (Autotools) ou <code>make test</code> (CMake) est remplacé par <code>meson test</code> ;</li>
<li>
<code>make dist</code> et <code>make distcheck</code> (Autotools seulement, absent de CMake) n’existent pas ;</li>
<li>
<code>make clean</code> (Autotools et CMake) est remplacé par <code>ninja clean</code> ;</li>
<li>
<code>make distclean</code> (Autotools seulement) n’existe pas (avec une compilation hors sources, cela peut sembler moins nécessaire puisque l’on peut aussi supprimer entièrement le répertoire de compilation ; mais en réalité, <code>make distclean</code> est un nettoyage en profondeur et néanmoins contrôlé qui peut permettre de garder certains fichiers que l’on aurait rajoutés par exemple).</li>
</ul>
<p>Meson génère également des projets pour deux environnements de développement intégré (EDI/IDE) répandus :</p>
<ul>
<li>
<a href="https://en.wikipedia.org/wiki/Visual%20Studio">Visual Studio</a> (compatibilité Windows) ;</li>
<li>
<a href="https://en.wikipedia.org/wiki/Xcode">Xcode</a> (compatibilité macOS).</li>
</ul>
<h3 id="toc-sortie-standard">Sortie standard</h3>
<p>Un travail a été fait sur la sortie standard, aussi bien de la configuration que de la compilation, notamment sur les couleurs, mais aussi pour la rendre plus claire et donc lisible. Un travail similaire avait aussi été fait dans CMake, ce qui est un des points agréables de ces deux systèmes de compilation. Cela est particulièrement utile pour la lecture d’erreurs de compilation.</p>
<p>Ainsi, lors de la compilation, ce type de sortie est affiché :</p>
<pre><code class="sh"><span class="o">[</span><span class="m">292</span>/912<span class="o">]</span> Compiling C object <span class="s1">'gobject/tests/object@exe/object.c.o'</span></code></pre>
<p>Et au lieu d’imprimer les sorties les unes au‐dessous des autres, la sortie précédente est effacée, permettant d’éviter les défilements trop longs et de se concentrer sur le dernier élément. En outre, le compteur d’étape est agréable pour savoir où l’on en est dans la compilation (particulièrement pour les très gros projets aux longues compilations).</p>
<p>Enfin, il est possible d’afficher la configuration actuelle grâce à la commande <code>meson configure</code> (avec les Autotools notamment, hormis si le projet implémente cela explicitement, il faut lire la sortie peu lisible de <code>./configure</code> ou le fichier <code>config.log</code>). Meson n’est pas parfait non plus, mais n’en est pas loin, car il est utile de visualiser cet affichage de configuration lors de tout changement de ladite configuration :</p>
<pre><code class="sh">meson configure -Dsome-option<span class="o">=</span><span class="nb">true</span>
meson configure</code></pre>
<p>Notons que CMake a une interface <em>curses</em> extrêmement cool — <code>ccmake</code> — et qu’idéalement il faudrait que Meson crée une interface similaire (<a href="https://github.com/mesonbuild/meson/issues/2470">travail en cours</a>). Cette interface permet d’avoir constamment une vision d’ensemble des options d’un projet.</p>
<h2 id="toc-comparaisons-et-discussions-sur-les-qualités-de-meson">Comparaisons et discussions sur les qualités de meson</h2>
<h3 id="toc-les-avancées">Les avancées</h3>
<p>La rapidité de <code>ninja</code> ne fait cependant pas tout. Parlons maintenant de Meson.</p>
<p>L’une des premières bonnes choses que l’on remarque est que Meson est dans une optique de standardisation de la compilation (malgré encore <a href="https://github.com/mesonbuild/meson/issues/969">quelques incohérences</a>), une chose que l’on avait un peu perdue avec CMake, qui semblait encourager les projets à redoubler d’originalité sur les options et les fonctionnalités de compilation (cette tendance s’est un peu calmée et les projets utilisant CMake se sont beaucoup standardisés ces dernières années grâce au module <a href="https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html">GNUInstallDirs</a>, mais les premières années étaient plutôt terribles sur ce point, dans la gestion des options, mais aussi l’absence des cibles de compilation standards, par exemple pour <a href="https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F">désinstaller</a> un paquet, <a href="https://cmake.org/Wiki/CMake_FAQ#CMake_does_not_generate_a_.22make_distclean.22_target._Why.3F">nettoyer</a> un répertoire de compilation…) !</p>
<p>On remarque aussi que le projet Meson semble vouloir encourager les bonnes pratiques qui se sont créées à travers l’histoire de la compilation de projet. Ainsi les <em>warnings</em> de compilation sont activés par défaut, et surtout les compilations hors de l’arbre des sources (aussi appelées compilations <code>VPATH</code> dans les Autotools) sont rendues obligatoires. Il ne s’agit pas là de fonctionnalités nouvelles ou exceptionnelles, puisqu’elles existent et sont utilisées massivement dans les projets utilisant Autotools ou CMake, mais il est intéressant de voir que le système de compilation fait le choix de proposer par défaut ces pratiques, plutôt que d’attendre des projets ou des gens de les appliquer.</p>
<p>Un autre apport de Meson est la gestion des <a href="http://mesonbuild.com/Precompiled-headers.html">en‐têtes précompilés</a>, qui ajouterait plus de rapidité à l’étape de compilation et expliquerait partiellement que la compilation avec Meson serait plus rapide que d’autres systèmes de compilation utilisant aussi Ninja, comme CMake.</p>
<p>Enfin l’une des autres qualités appréciables est le faible nombre de dépendances à l’heure actuelle, à savoir : Python 3 et Ninja uniquement.</p>
<h3 id="toc-des-reculs">Des reculs ?</h3>
<p><em>Cette section et la suivante sont un retour d’expérience d’utilisation de Meson sur des projets.</em></p>
<p>La compilation croisée semble avoir connu un recul. Les Autotools sont extrêmement bien pourvus en ce sens, une logique d’exécution sans faille avec les notions de « nom canonique » pour <em>host</em>, <em>build</em> et <em>target</em>. Ces notions combinées avec une très bonne détection des plates‐formes (script <code>config.guess</code>), permettent d’exécuter une compilation croisée avec uniquement le nom canonique de la plate‐forme cible, et les outils de compilation adéquats préfixés par ce nom canonique. Malheureusement, Meson semble avoir choisi l’approche de <a href="https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling">CMake</a>, qui consiste en la <a href="http://mesonbuild.com/Cross-compilation.html">création d’un fichier ’environnement</a> rempli d’informations redondantes.</p>
<p>Ainsi, prenons ce fichier typique pour la compilation croisée pour Windows 32 bits, utilisé dans l’outil de compilation croisée, <a href="//linuxfr.org/news/a-la-croisee-des-chemins-crossroad-environnement-de-cross-compilation">crossroad</a> :</p>
<pre><code class="ini"><span class="k">[binaries]</span>
<span class="na">c</span> <span class="o">=</span> <span class="s">'i686-w64-mingw32-gcc'</span>
<span class="na">cpp</span> <span class="o">=</span> <span class="s">'i686-w64-mingw32-g++'</span>
<span class="na">ar</span> <span class="o">=</span> <span class="s">'i686-w64-mingw32-ar'</span>
<span class="na">strip</span> <span class="o">=</span> <span class="s">'i686-w64-mingw32-strip'</span>
<span class="na">pkgconfig</span> <span class="o">=</span> <span class="s">'i686-w64-mingw32-pkg-config'</span>
<span class="k">[host_machine]</span>
<span class="na">system</span> <span class="o">=</span> <span class="s">'windows'</span>
<span class="na">cpu_family</span> <span class="o">=</span> <span class="s">'x86'</span>
<span class="na">cpu</span> <span class="o">=</span> <span class="s">'i586'</span>
<span class="na">endian</span> <span class="o">=</span> <span class="s">'little'</span></code></pre>
<p>Comme vous le notez, toutes ces informations sont entièrement redondantes et pourraient être résumée en une chaîne de caractères unique : « i686-w64-mingw32 ».</p>
<p>Les divers binaires par exemple sont tous préfixés du nom canonique de la plate‐forme, ce qui est tout simplement le standard à l’heure actuelle pour les outils de compilation croisée. En fait, les lister explicitement est même prompt à créer des bogues, puisque si l’on a oublié de lister un outil, Meson se rabattra sur la version non préfixée, alors même que la version préfixée existerait et serait installée. Ainsi, mon fichier est en fait incomplet, et si l’on tombait sur un projet particulier nécessitant des binaires moins communs, par exemple <a href="https://fr.wikipedia.org/wiki/Nm_(Unix)"><code>nm</code></a>, Meson ne le trouverait pas car il n’a pas été listé, alors que <code>x86_64-w64-mingw32-nm</code> est pourtant bien installé sur la machine.</p>
<p>Quant aux informations sur le système, le processeur et le boutisme (<em>endianness</em>) du processeur, elles sont aussi contenues dans le nom canonique (puisqu’ils sont standardisés) et sont tout aussi redondantes.</p>
<p>De leur côté, les Autotools effectuent la compilation croisée avec seulement ce type de configuration :</p>
<pre><code class="sh">./configure --host<span class="o">=</span>x86_64-w64-mingw32</code></pre>
<p>L’ensemble des informations est contenu dans cette chaîne de caractères avec la base de connaissance des plates‐formes connues, et cela évite les oublis et erreurs dans la maintenance d’un fichier à part. Notamment, par défaut, le script <code>./configure</code> sélectionne toute variante dédiée à la compilation automatique et se rabat sur la version native en cas de non‐existence. Ainsi, <code>PKG_PROG_PKG_CONFIG()</code> utilise <code>x86_64-w64-mingw32-pkg-config</code>, s’il existe, et <code>pkg-config</code> autrement. Bien sûr, comme pour tout, il est toujours possible de passer outre les comportements par défaut, ce qui permet aussi de reproduire l’équivalent du fichier de compilation croisée au besoin, par exemple si vous utilisez des outils ou un environnement peu standard (mais, par défaut, Autotools considère que votre environnement est standard).</p>
<p>Il s’agit d’un choix étonnant de la part du projet Meson, puisque l’approche « à la CMake » cause quelques soucis. Il s’agit cependant d’un choix assumé, comme le confirment les développeurs dans un <a href="https://github.com/mesonbuild/meson/issues/4022">rapport de bogue</a>, car les outils préfixés seraient une approche trop « GNU‐centrique ».</p>
<p>Enfin, malgré le choix de suivre l’esprit des Autotools en prenant en charge les cibles standards courantes, certaines cibles ont tout de même disparu. On pense notamment à <code>make dist</code> et <code>make distcheck</code>, deux cibles extrêmement importantes pour la solidité d’une archive TAR de sortie. </p>
<p>Meson exige donc un soin particulier à la réalisation des fichiers d’environnement, ceci peut être vue comme une qualité ou un défaut, à chacun de juger. Il y a néanmoins certaines informations que l’on ne peut considérer que comme redondantes, mais qui (pour le moment ?) sont nécessaires.</p>
<h3 id="toc-on-veut-des-chiffres">On veut des chiffres !</h3>
<p>Pour l’étape de configuration en particulier, en utilisant le dépôt de <code>glib</code> qui contient maintenant <code>autotools</code> et <code>meson</code>, un simple test semble montrer vingt secondes de configuration avec les Autotools (<code>./configure</code>) et dix secondes avec Meson (<code>meson</code>). </p>
<p>Meson montre vraiment un grand avantage sur la reconfiguration (changer certains paramètres de configuration) : celle‐ci est quasiment instantanée avec Meson alors qu’elle prend le même temps que la première configuration avec les Autotools et CMake. </p>
<p>Ainsi, sur ce petit exemple de la compilation de <code>glib</code>, on constate une compilation de binaires durant 3 min et 40 s avec les scripts Makefile générés par Autotools, et 1 min et 11 s avec les scripts Ninja générés par Meson.</p>
<p>De son côté, GStreamer se configure en 14 secondes avec Autotools et 4,5 secondes avec Meson, puis se compile en 2 min et 36 s avec les Autotools et 1 min 57 s avec Meson.</p>
<p><strong>Tierces notes</strong><br>
Notons que d’autres outils comme <a href="https://en.wikipedia.org/wiki/Bazel_(software)">Bazel</a> et <a href="https://en.wikipedia.org/wiki/Buck_(software)">Buck</a> ont une approche différente pour optimiser les temps de compilation. Ces outils de construction utilisent en direct les compilateurs de différents langages de programmation sans passer par l’intermédiaire des outils de construction comme <code>make</code> ou <code>ninja</code>. Chaque approche à ses avantages et inconvénients. Ici, l’avantage de Meson, par rapport à Bazel et Buck, est de permettre au développeur ou à l’intégrateur d’avoir la main sur l’outil de construction (<code>ninja</code>, Visual C++ ou Xcode).</p>
<p>De son côté, <a href="https://www.phoronix.com/scan.php?page=news_item&px=GNOME-Builder-3.28-Work">GNOME Builder 3.28</a> prend en charge nativement les projets utilisant Meson, en plus de la prise en charge de CMake.</p>
<p>Le constructeur de distribution GNU/Linux <a href="//linuxfr.org/news/yocto-ce-n-est-pas-un-systeme-embarque-mais">Yocto</a> le prend en charge directement dans sa base depuis la version <em>2.5-sumo</em>. </p>
<h2 id="toc-exemples-de-projets-portés-sur-meson">Exemples de projets portés sur meson</h2>
<p>Depuis 2016 environ, Meson est considéré comme assez mûr et a déclenché la migration de certains projets. Plus de 70 projets ont déjà basculé sur Meson. Parmi eux :</p>
<ul>
<li>GStreamer (dès 2016) ;</li>
<li>GTK+ et GNOME (en 2017) ;</li>
<li>systemd ;</li>
<li>Wayland ;</li>
<li>Mesa 3D ;</li>
<li>libVA ;</li>
<li>fwupd ;</li>
<li>sysprof ;</li>
<li>X.Org ;</li>
<li>etc. (<a href="http://mesonbuild.com/Users.html">retrouvez ici</a> la liste complète).</li>
</ul>
<h2 id="toc-conclusion">Conclusion</h2>
<p>Meson est :</p>
<ul>
<li>multi‐plate‐forme : GNU/Linux, macOS, Windows, GCC, Clang, Visual Studio ;</li>
<li>multi‐langage : Fortran, C, C++, Rust, Java, D ;</li>
<li>facile : configuration et définitions lisible et amicale ;</li>
<li>optimisé : pour faciliter les compilations complètes et incrémentales ;</li>
<li>moderne : gère les <em>builds</em> reproductibles ;</li>
<li>possède gestionnaire intégré de dépendances : fonctionne avec les paquets des distros ;</li>
<li>
<a href="https://mesonbuild.com/Reference-manual.html">bien documenté</a> ;</li>
<li>fun !</li>
</ul>
<p>Si quelques choix peuvent paraître hasardeux, cela ne gêne personne, au regard de la liste des projets l’utilisant dès à présent, et par leurs tailles pour certains. Au final, Meson semble sur la bonne voie, sans être pour autant une révolution. Il s’agit davantage d’une évolution naturelle après quelques dizaines d’années de pratiques de la compilation de projets standards et multi-plates‐formes.</p>
</div><div><a href="https://linuxfr.org/news/e-t-telephone-meson.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/115433/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/e-t-telephone-meson#comments">ouvrir dans le navigateur</a>
</p>
Julien JorgeDavy Defaudbubar🦥Benoît SibaudZeroHeureBruno Michelhttps://linuxfr.org/nodes/115433/comments.atomtag:linuxfr.org,2005:News/378142017-02-06T14:55:07+01:002017-02-07T16:48:53+01:00Micro Music Player (mmp), le lecteur musical minimaliste, sort en version 3.0Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="http://www.open-source-projects.net/Micro_Music_Player/Micro_Music_Player_presentation.html">Micro Music Player (mmp)</a> est disponible dans une nouvelle version : <strong>3.0</strong>.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f6d6d702d332e305f6d696e696d616c5f696e746572666163655f6f787967656e5f69636f6e735f6461726b5f76617269616e742e706e67/mmp-3.0_minimal_interface_oxygen_icons_dark_variant.png" alt="Copie d'écran: Interface minimale de mmp-3.0." title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/mmp-3.0_minimal_interface_oxygen_icons_dark_variant.png"></p>
<p>Il s’agit d’un lecteur musical minimaliste écrit en C++ dans un style <em>C-Like</em>(licence GPL v3). Un petit lecteur musical, joli, pratique et petit mais costaud, détaillé dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.open-source-projects.net/Micro_Music_Player/Micro_Music_Player_presentation.html" hreflang="en" href="https://linuxfr.org/redirect/99209">Présentation de Micro Music Player </a></li><li>lien nᵒ 2 : <a title="http://www.open-source-projects.net/Micro_Music_Player/Download/py/download_MicroMusicPlayer_deb.cgi" hreflang="en" href="https://linuxfr.org/redirect/99210">Télécharger Micro Music Player (deb)</a></li><li>lien nᵒ 3 : <a title="http://www.open-source-projects.net/Micro_Music_Player/Download/py/download_MicroMusicPlayer_rpm.cgi" hreflang="en" href="https://linuxfr.org/redirect/99211">Télécharger Micro Music Player (rpm)</a></li><li>lien nᵒ 4 : <a title="http://www.open-source-projects.net/Micro_Music_Player/Download/py/download_MicroMusicPlayer_tarball.cgi" hreflang="en" href="https://linuxfr.org/redirect/99212">Télécharger Micro Music Player (tarball)</a></li><li>lien nᵒ 5 : <a title="http://www.open-source-projects.net/Micro_Music_Player/Download/py/download_MicroMusicPlayer_exe.cgi" hreflang="en" href="https://linuxfr.org/redirect/99213">Télécharger Micro Music Player (Windows)</a></li><li>lien nᵒ 6 : <a title="https://github.com/mrcyberfighter/MicroMusicPlayer" hreflang="en" href="https://linuxfr.org/redirect/99214">Micro Music Player GitHub</a></li><li>lien nᵒ 7 : <a title="http://www.open-source-projects.net/Micro_Music_Player/README/README/README.html" hreflang="en" href="https://linuxfr.org/redirect/99215">Micro Music Player README</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#pr%C3%A9sentation-de-micromusicplayer-version30">Présentation de Micro Music Player version 3.0</a><ul>
<li><a href="#d%C3%A9pendances-de-micromusicplayer-version30">Dépendances de Micro Music Player version 3.0</a></li>
<li><a href="#fonctionnalit%C3%A9s">Fonctionnalités</a></li>
<li><a href="#apparence-de-linterface">Apparence de l’interface</a></li>
</ul>
</li>
<li><a href="#fonctionnement">Fonctionnement</a></li>
<li>
<a href="#vos-pr%C3%A9f%C3%A9rences-de-votre-lecteur-musical">Vos préférences de votre lecteur musical</a><ul>
<li><a href="#retrouvez-votre-configuration-pr%C3%A9f%C3%A9r%C3%A9e-%C3%A0-chaque-lancement-de-mmp">Retrouvez votre configuration préférée à chaque lancement de mmp</a></li>
<li><a href="#fen%C3%AAtre-de-configuration-et-sp%C3%A9cificit%C3%A9s-de-chaque-syst%C3%A8me-dexploitation">Fenêtre de configuration et spécificités de chaque système d’exploitation</a></li>
</ul>
</li>
<li>
<a href="#ce-que-micro-music-player-ne-fait-pas">Ce que Micro Music Player ne fait pas</a><ul>
<li><a href="#notes-de-lauteur">Notes de l’auteur</a></li>
</ul>
</li>
<li>
<a href="#formats-de-fichiers-pris-en-charge">Formats de fichiers pris en charge</a><ul>
<li>
<a href="#formats-de-fichiers-musicaux">Formats de fichiers musicaux</a><ul>
<li><a href="#formats-de-fichiers-musicaux-les-plus-communs">Formats de fichiers musicaux les plus communs :</a></li>
<li><a href="#liste-des-extensions-de-fichiers-correspondant-aux-formats-de-fichiers-musicaux-pris-en-charge">Liste des extensions de fichiers correspondant aux formats de fichiers musicaux pris en charge :</a></li>
</ul>
</li>
<li>
<a href="#formats-de-fichiers-dimages-de-couverture-pris-en-charge">Formats de fichiers d’images de couverture pris en charge</a><ul>
<li><a href="#liste-des-extensions-de-fichiers-correspondant-aux-formats-de-fichiers-image-pris-en-charge">Liste des extensions de fichiers correspondant aux formats de fichiers image pris en charge :</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#les-nouveaut%C3%A9s-de-la-version30">Les nouveautés de la version 3.0</a><ul>
<li><a href="#nouvelle-fonctionnalit%C3%A9s">Nouvelle fonctionnalités</a></li>
<li><a href="#changements">Changements</a></li>
</ul>
</li>
<li>
<a href="#installer-mmp-30">Installer mmp-3.0</a><ul>
<li><a href="#windows">Windows</a></li>
<li><a href="#mac">Mac</a></li>
<li><a href="#gnulinux">GNU/Linux</a></li>
<li><a href="#construire-mmp-30-dapr%C3%A8s-les-sources-tarball-et-github">Construire mmp-3.0 d’après les sources (tarball et GitHub)</a></li>
</ul>
</li>
</ul><h2 id="présentation-de-micromusicplayer-version30">Présentation de Micro Music Player version 3.0</h2>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f6d6d702d332e305f6d61696e5f77696e646f775f6f787967656e5f69636f6e735f6461726b5f76617269616e742e706e67/mmp-3.0_main_window_oxygen_icons_dark_variant.png" alt="Copie d’écran : interface principale de mmp-3.0" title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/mmp-3.0_main_window_oxygen_icons_dark_variant.png"></p>
<h3 id="dépendances-de-micromusicplayer-version30">Dépendances de Micro Music Player version 3.0</h3>
<p><strong>mmp-3.0</strong> utilise la bibliothèque <a href="https://wiki.videolan.org/LibVLC/"><em>libvlc</em></a> comme moteur audio, dont vous pourrez trouver des fichiers précompilés pour Mac OS dans l’<a href="http://www.open-source-projects.net/index/libraries-prebuilt/MAC%20OS%20X/build-libvlc-dev-macosx.zip">index de <em>www.open-source-projects.net</em></a>.</p>
<p>Concernant Windows, vous pourrez trouver divers binaires précompilés sur <a href="https://nightlies.videolan.org/build/">https://nightlies.videolan.org/build/</a> ou sinon utilisez le <em>pacman</em> de <a href="https://msys2.github.io/"><em>MSYS2</em></a>.</p>
<p>Sinon, pour GNU/Linux, <a href="https://wiki.videolan.org/LibVLC/"><em>libvlc</em></a> est disponible dans la plupart des dépôts des distributions et <a href="http://www.gtk.org/">GTK+-3.0</a> pour construire l’<a href="https://fr.wikipedia.org/wiki/Interactions_homme-machine" title="Interface humain‐machine">IHM</a>.</p>
<p>Enfin, la bibliothèque <a href="https://wiki.gnome.org/Projects/GTK+/OSX/Integration"><em>gtk-mac-integration</em></a> est requise pour les systèmes <em>Mac OS</em>.</p>
<h3 id="fonctionnalités">Fonctionnalités</h3>
<p><em>Micro Music Player</em> (mmp) est un petit lecteur de musique minimal avec comme fonctionnalités :</p>
<ul>
<li>jouer une sélection de fichiers ;</li>
<li>jouer le contenu d’un dossier : sélecteur de dossier non disponible sous Windows ;</li>
<li>
<em>Play</em> (jouer), <em>Stop</em> (arrêter), <em>Pause</em> ;</li>
<li>
<em>Next</em> (suivant), <em>Previous</em> (précédent) ;</li>
<li>
<em>Repeat All</em> (répéter la liste de lecture) <em>Repeat One</em> (répéter la chanson) et <em>Shuffle</em> (mode lecture aléatoire) ;</li>
<li>contrôle du volume ;</li>
<li>barre de progression de lecture actionnable ;</li>
<li>affichage du temps écoulé à côté de la durée totale de la chanson ;</li>
<li>affichage du nom de la chanson en cours de lecture ;</li>
<li>contrôle du volume et raccourcis clavier magiques ;</li>
<li>affichage de notifications à chaque début de chanson : uniquement sous GNU/Linux ;</li>
<li>
<em>Enable/Reset</em> des associations de fichiers, afin d’utiliser <em>Micro Music Player</em> comme lecteur musical par défaut : uniquement vraiment utile que sous GNU/Linux.</li>
</ul><h3 id="apparence-de-linterface">Apparence de l’interface</h3>
<p>Concernant l’apparence de l’interface de <em>Micro Music Player</em> les choix suivants s’offrent à vous :</p>
<ul>
<li>
<strong>interface minimale</strong> : mode sans afficher une image de couverture : <em>petit avec le minimum requis</em> ;
<img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f6d6d702d332e305f6d696e696d616c5f696e746572666163655f6f787967656e5f69636f6e735f6461726b5f76617269616e742e706e67/mmp-3.0_minimal_interface_oxygen_icons_dark_variant.png" alt="Copie d’écran : Interface minimale de mmp-3.0." title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/mmp-3.0_minimal_interface_oxygen_icons_dark_variant.png">
</li>
<li>le choix entre deux jeux d’icônes :
<ul>
<li>le jeu d’icônes <strong>Oxygen</strong> : * icônes colorées et jolies*,</li>
<li>le jeu d’icônes <strong>HighContrast</strong> : * icônes noires et blanches* (moins jolies mais plus explicites) ;</li>
</ul>
</li>
<li>le choix entre deux variantes de thème : <strong>light</strong> et <strong>dark</strong> (si disponible) : vous pourrez choisir entre une apparence de l’interface <em>claire</em> ou <em>sombre</em>, comme vous préférerez ;</li>
<li>le choix entre trois tailles d’interface : <strong>petite</strong>, <strong>moyenne</strong> ou <strong>grande</strong> ; ce choix ne dépend pas de votre résolution d’écran, mais uniquement de l’espace que vous désirez accorder à l’interface.</li>
</ul><p><strong>Note :</strong> Vous pourrez par exemple choisir la <strong>grande taille</strong> et le <em>mode d’affichage</em> d’<strong>interface minimale</strong> : optimal pour l’espace comprenant tout ce dont vous avez besoin pour écouter votre musique.</p>
<h2 id="fonctionnement">Fonctionnement</h2>
<p><em>Micro Music Player</em> peut jouer le contenu d’un dossier ou d’une sélection de fichiers compatible avec le programme. Il vous suffit de sélectionner un dossier ou les chansons, que vous désirez écouter, grâce aux composantes correspondantes du menu, ou à passer le dossier ou les chansons en ligne de commande.</p>
<p>Après sélection du dossier ou des chansons, les chansons sont lexicographiquement ordonnées (comme présenté par votre système d’exploitation) pour composer votre liste de lecture (<em>playlist</em>) que vous pourrez d’ailleurs afficher et activer en cliquant sur la chanson à jouer. La chanson actuellement jouée est marquée d’une petite icône. Une image de couverture est recherchée d’abord dans les métadonnées, puis dans le contenu du dossier. Selon certains paramètres comme les extensions gérées par <em>mmp-3.0</em>, le nom du fichier image (afin de privilégier la face avant de la couverture) et la taille de l’image (pour la qualité de l’affichage). Si aucune image n’est trouvée, <em>mmp-3.0</em> affiche son image par défaut.</p>
<p>Ensuite, le dossier dans lequel vous avez choisi de lire est automatiquement ajouté aux dossiers récents. Ce qui vous permettra de relancer assez vite d’anciens dossiers écoutés récemment et, sous <em>Windows</em>, de lire un dossier à la place d’une rapide sélection de chansons dans un dossier. D’ailleurs, si vous utilisez <em>Windows</em>, je vous recommande grandement d’utiliser les modificateurs <code>Ctrl</code> et <code>Majuscule</code> dans le sélecteur de fichiers afin de pouvoir sélectionner plusieurs chansons à la fois.</p>
<h2 id="vos-préférences-de-votre-lecteur-musical">Vos préférences de votre lecteur musical</h2>
<p><em>Micro Music Player</em> peut être configuré a souhait à l’aide les composantes du petit menu de <em>mmp-3.0</em>. Ce qui va changer le comportement et l’apparence de <em>Micro Music Player</em> pendant la session courante, immédiatement. Aucun changement ne sera enregistré dans vos préférences. Ce qui vous permettra d’essayer les différentes possibilités.</p>
<h3 id="retrouvez-votre-configuration-préférée-à-chaque-lancement-de-mmp">Retrouvez votre configuration préférée à chaque lancement de mmp</h3>
<p>Afin que vous puissiez retrouver vos préférences à chaque lancement de <em>Micro Music Player</em>, il vous suffit d’ouvrir la fenêtre de configuration du programme, dont la configuration sera égale à celle que vous avez actuellement. Vous pourrez la changer à souhait. Chaque changement sera immédiatement effectif. Puis, vous pourrez rendre vos préférences permanentes (que vous retrouverez à chaque lancement de <em>mmp-3.0</em>) en appuyant sur le bouton <em>Apply</em> (<em>Appliquer</em>).</p>
<h3 id="fenêtre-de-configuration-et-spécificités-de-chaque-système-dexploitation">Fenêtre de configuration et spécificités de chaque système d’exploitation</h3>
<p>La fenêtre de configuration de <code>Micro Music Player</code> a été divisée en deux ou trois parties selon le système d’exploitation (la troisième partie n’étant pas accessible, car inutile sous <em>Windows</em>) et ressemble nouvellement à cela :</p>
<ul>
<li><p>fenêtre de configuration de <em>mmp</em>, partie 1 :<br><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f4d6963726f5f4d757369635f506c617965725f474e555f4c696e75785f436f6e66696775726174696f6e5f57696e646f775f706172745f312e706e67/Micro_Music_Player_GNU_Linux_Configuration_Window_part_1.png" alt="Copie d’écran: fenêtre de configuration de mmp-3.0, partie 1." title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/Micro_Music_Player_GNU_Linux_Configuration_Window_part_1.png"></p></li>
<li><p>fenêtre de configuration de <em>mmp</em>, partie 2 :<br><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f4d6963726f5f4d757369635f506c617965725f474e555f4c696e75785f436f6e66696775726174696f6e5f57696e646f775f706172745f322e706e67/Micro_Music_Player_GNU_Linux_Configuration_Window_part_2.png" alt="Copie d’écran: fenêtre de configuration de mmp-3.0, partie 2." title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/Micro_Music_Player_GNU_Linux_Configuration_Window_part_2.png"></p></li>
<li><p>fenêtre de configuration de <em>mmp</em>, partie 3 :<br><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f4d6963726f5f4d757369635f506c617965722f53637265656e73686f74732f4d6963726f5f4d757369635f506c617965725f474e555f4c696e75785f436f6e66696775726174696f6e5f57696e646f775f706172745f332e706e67/Micro_Music_Player_GNU_Linux_Configuration_Window_part_3.png" alt="Copie d’écran : fenêtre de configuration de mmp-3.0, partie 3" title="Source : http://www.open-source-projects.net/Micro_Music_Player/Screenshots/Micro_Music_Player_GNU_Linux_Configuration_Window_part_3.png"></p></li>
</ul><p><strong>Note :</strong> Cette partie de la fenêtre de configuration est inutile sous Windows, car les fonctionnalités ne sont pas disponibles sous ce système d’exploitation et, sous Mac <em>Sierra</em>, elle est disponible mais pas grandement utile au vu de mes essais.</p>
<h2 id="ce-que-micro-music-player-ne-fait-pas">Ce que Micro Music Player ne fait pas</h2>
<p><em>mmp-3.0</em> ne vous fournit pas (ne vous embête pas avec) les fonctionnalités suivantes :</p>
<ul>
<li>l’<strong>indexation</strong> de votre <strong>dossier musical</strong> ;</li>
<li>la <em>connexion à une base de données</em> ou le <em>téléchargement</em> pour la gestion des images de couverture.</li>
</ul><p>Uniquement votre dossier musical local et votre lecteur de musique minimaliste : <em>Micro Music Player</em> reste donc aussi simple que possible, sans connexion Internet requise, ni d’indexation de votre dossier musical, soit dit au passage souvent mal faite par les programmes pratiquant l’indexation de vos données. <em>Micro Music Player</em> a été conçu pour simplement écouter votre musique préférée en toute quiétude.</p>
<h3 id="notes-de-lauteur">Notes de l’auteur</h3>
<p>J’ai implémenté ce programme selon mes <em>critères personnels</em> sans penser à le distribuer au départ, mais finalement j’ai décidé de le publier parce qu’il est facile et simple dans le concept comme dans le code C++. Au point que vous pouvez l’utiliser ou le modifier librement selon les termes de la licence GPL v3.</p>
<p><em>Note :</em> Le code de <em>Micro Music Player</em> a grandement été chamboulé dans le but de n’avoir qu’une seule version des sources, la détection du système d’exploitation hôte est permise grâce aux macros de <a href="http://www.gtk.org/">GTK+ 3.0</a>.</p>
<h2 id="formats-de-fichiers-pris-en-charge">Formats de fichiers pris en charge</h2>
<h3 id="formats-de-fichiers-musicaux">Formats de fichiers musicaux</h3>
<h4 id="formats-de-fichiers-musicaux-les-plus-communs">Formats de fichiers musicaux les plus communs :</h4>
<ul>
<li>
<strong>FLAC</strong> (<em>Free Lossless Audio Codec</em>) ;</li>
<li>
<strong>OGG</strong> (<em>Ogg Vorbis</em>) ;</li>
<li>
<strong>MP3</strong> (<em>MPEG-1 Audio Layer III ou MPEG-2 Audio Layer III</em>) ;</li>
<li>
<strong>AAC</strong> (<em>Advanced Audio Coding</em>). ;</li>
<li>
<strong>AC3</strong> (<em>Dolby Digital</em>) ;</li>
<li>
<strong>wave</strong> (<em>WAVEform audio file format</em>) ;</li>
<li>
<strong>WMA</strong> (<em>Windows Media Audio</em>) ;</li>
<li>
<strong>MIDI</strong> (<em>Musical Instrument Digital Interface</em>) ;</li>
<li>
<strong>ape</strong> (<em>Monkey’s Audio</em>) ;</li>
<li>
<strong>mov</strong> (<em>QuickTime</em>).</li>
</ul><h4 id="liste-des-extensions-de-fichiers-correspondant-aux-formats-de-fichiers-musicaux-pris-en-charge">Liste des extensions de fichiers correspondant aux formats de fichiers musicaux pris en charge :</h4>
<p>.3ga, .669, .a52, .aac, .ac3, .adt, .adts, .aif, .aifc, .aiff, .amb , .amr, .aob, .ape, .au, .awb, .caf, .dts,.flac, .it, .kar, .m4a, .m4b, .m4p, .m5p, .mid, .mka, .mlp, .mod, .mpa, .mp1, .mp2, .mp3, .mpc, .mpga, .mus, .oga, .ogg, .oma, .opus, .qcp, .ra, .rmi, .s3m, .sid, .spx, .tak, .thd, .tta, .voc, .vqf, .w64, .wav, .wma, .wv, .xa et .xm.</p>
<p>Ils n’ont pas tous été testés, mais sont pris en charge par <strong><a href="https://wiki.videolan.org/LibVLC/">libvlc</a></strong>.</p>
<h3 id="formats-de-fichiers-dimages-de-couverture-pris-en-charge">Formats de fichiers d’images de couverture pris en charge</h3>
<p>Les formats d’images pris en charge sont ceux de la bibliothèque <em>gdk-pixbuf</em>, dont les plus connus sont :</p>
<ul>
<li>
<strong>JPEG</strong> (<em>Joint Photographic Experts Group</em>) ;</li>
<li>
<strong>TIFF</strong> (<em>Tagged Image File Format</em>) ;</li>
<li>
<strong>PNG</strong> (<em>Portable Network Graphics</em>) ;</li>
<li>
<strong>BMP</strong> (<em>bitmap image file</em>).</li>
</ul><h4 id="liste-des-extensions-de-fichiers-correspondant-aux-formats-de-fichiers-image-pris-en-charge">Liste des extensions de fichiers correspondant aux formats de fichiers image pris en charge :</h4>
<p>.gdkp, .bmp, .pnm, .pbm, .pgm, .ppm, .wmf, .apm, .gif, .tiff, .tif, .ani, .icns, .png, .svg, .svgz, .svg.gz, .tga, .targa, .jpeg, .jpe, .jpg, .xpm, .xbm, .qtif, .qif, .ico et .cur.</p>
<h2 id="les-nouveautés-de-la-version30">Les nouveautés de la version 3.0</h2>
<p>Le code a été remanié de manière à être compatible tel quel avec les trois systèmes d’exploitation testés : Windows, Mac OS et GNU/Linux.</p>
<h3 id="nouvelle-fonctionnalités">Nouvelle fonctionnalités</h3>
<ul>
<li>fonction <em>Repeat One</em> ;</li>
<li>mode interface minimale ;</li>
<li>enregistrement des dossiers récents ;</li>
<li>choix de la variante du thème de l’interface.</li>
</ul><h3 id="changements">Changements</h3>
<ul>
<li>
<strong>reformatage</strong> de l’affichage de la chanson actuelle :</li>
</ul><pre><code class="text"> [Song #/Total Songs] - Author - Title</code></pre>
<ul>
<li>déplacement du temps écoulé textuellement à côté du temps total dans l’interface ;</li>
<li>changement complet du menu et beaucoup d’ajouts de raccourcis clavier ;</li>
<li>changement de la fenêtre de configuration du programme ;</li>
<li>utilisation d’une <code>GtkApplication</code> à la place de la paire : <code>gtk_init(…)</code> + <code>gtk_main(…)</code> ; et tout ce que cela implique et permet ;</li>
<li>changement des boutons <em>Repeat</em> et <em>Shuffle</em> ;</li>
<li>correction du bogue de la fenêtre d’affichage de la liste de lecture ;</li>
<li>la paire <em>N° de chanson</em> / <em>Total</em> a été ajoutée dans le champ d’affichage de la chanson courante.</li>
</ul><h2 id="installer-mmp-30">Installer mmp-3.0</h2>
<h3 id="windows">Windows</h3>
<p>Un fichier *.exe auto‐extractible est à votre disposition pour installer <em>mmp-3.0</em> sur votre système.</p>
<h3 id="mac">Mac</h3>
<p>Par le biais des <a href="https://fr.wikipedia.org/wiki/Autotools"><em>Autotools</em></a> vous pourrez construire <em>mmp-3.0</em>. Parce que je ne suis pas assez aguerri, sous Mac OS, pour vous fournir un fichier <em>*.dmg</em> ou <em>*.pkg</em> installable directement dans votre dossier <em>Applications</em>. J’ai bien peiné dans ce but, mais étant un nouvel utilisateur de Mac, j’ai malheureusement constaté qu’il n’existe pas de solution facile pour empaqueter un tel fichier.</p>
<h3 id="gnulinux">GNU/Linux</h3>
<p><em>Micro Music Player</em> est disponible en fichier <em>*.deb</em> ou <em>*.rpm</em>, tous les deux de type <em>noarch</em>, car l’installation se fait en compilant les sources sur le système hôte. D’ailleurs les sources sont systématiquement copiées dans <code>/usr/local/share/MicroMusicPlayer/source</code> avec un <em>Makefile</em>, afin de <em>hacker</em> et de tester le résultat à volonté… Afin de voir les différentes fonctionnalités du <code>Makefile</code>, tapez simplement dans le dossier <code>/usr/local/share/MicroMusicPlayer/</code> :</p>
<pre><code class="bash">$ make <span class="nb">help</span></code></pre>
<h3 id="construire-mmp-30-daprès-les-sources-tarball-et-github">Construire mmp-3.0 d’après les sources (tarball et GitHub)</h3>
<p>Le système de construction basé sur les <a href="https://fr.wikipedia.org/wiki/Autotools"><em>Autotools</em></a> a été testé sur diverses plates‐formes :</p>
<ul>
<li>Windows, avec <em>MSYS2</em>, en passant <code>CXX=x86_64-w64-mingw32-g++</code> au script <code>./configure</code> ;</li>
<li>Mac OS <em>Sierra</em>, qui nécessite en supplément la bibliothèque <em>gtk-mac-integration</em> (disponible grâce à <a href="http://brew.sh/index_fr.html"><em>brew</em></a> ou <a href="https://wiki.gnome.org/action/show/Projects/Jhbuild?action=show&redirect=Jhbuild"><em>jhbuild</em></a>) ;</li>
<li>GNU/Linux.</li>
</ul><p>Les <a href="https://fr.wikipedia.org/wiki/Autotools">Autotools</a> sont utilisés pour le compiler et l’installer. Ce sera donc aussi simple qu’un <code>./configure</code> + <code>make</code> + <code>make install</code> :</p>
<ul>
<li>vérification et configuration des dépendances :</li>
</ul><pre><code class="bash">$ ./configure</code></pre>
<ul>
<li>compilation :</li>
</ul><pre><code class="bash">$ make</code></pre>
<ul>
<li>et enfin installation :</li>
</ul><pre><code class="bash">$ sudo make install</code></pre>
<p>Pour lancer <em>Micro Music Player</em> en ligne de commande, vous pouvez aussi utiliser le lien symbolique :</p>
<pre><code class="bash">$ mmp <span class="o">[</span>dir<span class="p">|</span>file<span class="o">(</span>s<span class="o">)]</span>path</code></pre>
<p>Écoutez vos chansons préférées avec <em>Micro Music Player</em> (<em>mmp</em>) !</p></div><div><a href="https://linuxfr.org/news/micro-music-player-mmp-le-lecteur-musical-minimaliste-sort-en-version-3-0.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111177/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/micro-music-player-mmp-le-lecteur-musical-minimaliste-sort-en-version-3-0#comments">ouvrir dans le navigateur</a>
</p>
LinuxatorclaudexDavy DefaudBenoît SibaudPierre Jarillonpalm123Florent ZaraNils Ratusznikhttps://linuxfr.org/nodes/111177/comments.atomtag:linuxfr.org,2005:News/376212016-11-04T12:12:35+01:002016-11-07T14:21:38+01:00Sortie de battle‐rage: un jeu de combat, dans le genre Street Fighter.Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><h2 id="battlerage-un-jeu-de-combat-ou-la-bataille-fait-rage">
<strong>battle‐rage</strong> : un jeu de combat, ou « la bataille fait rage » !</h2>
<p><a href="http://www.open-source-projects.net/battle-rage/battle-rage"><strong>battle‐rage</strong></a> est un jeu de combat en 2D proposant les principes d’un tournoi mondial d’arts martiaux, dans lequel les combattants se castagnent dans la joie et la bonne humeur. Un joystick est obligatoire pour y jouer, peut‐être serez‐vous amené à monter dessus pour faire des <em>scores d’excellence</em> ? De terribles duels à mains nues à venir, avec seize combattants différents !</p>
<p><strong>NdM. :</strong> voir les commentaires pour la discussion sur la réutilisation sans autorisation des <em>sprites</em> tirés d’un jeu non libre. Les captures d'écran ont été retirées de la dépêche et converties en lien.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f6d726379626572666967687465722f626174746c652d726167652f6d61737465722f626174746c652d726167655f69636f6e2e706e67/battle-rage_icon.png" alt="Battle Rage logo" title="Source : https://raw.githubusercontent.com/mrcyberfighter/battle-rage/master/battle-rage_icon.png"></p>
<p>Écrit en C++ avec les bibliothèques <em>sdl2</em>, <em>sdl2_image</em>, <em>sdl2_ttf</em> et <em>sdl2_mixer</em>, il est publié selon les termes de la licence GPL v3.</p>
<p>La suite de la dépêche propose de passer en revue le mode d’emploi, à lire le temps d’installer Battle‐Rage !</p></div><ul><li>lien nᵒ 1 : <a title="http://www.open-source-projects.net/battle-rage/battle-rage_presentation.html" hreflang="en" href="https://linuxfr.org/redirect/98442">Page officielle de battle-rage </a></li><li>lien nᵒ 2 : <a title="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_deb.cgi" hreflang="en" href="https://linuxfr.org/redirect/98443">Télécharger paquets DEBIAN de battle-rage. </a></li><li>lien nᵒ 3 : <a title="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_rpm.cgi" hreflang="en" href="https://linuxfr.org/redirect/98444">Télécharger paquets RPM (noarch) de battle-rage. </a></li><li>lien nᵒ 4 : <a title="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_tarball.cgi" hreflang="en" href="https://linuxfr.org/redirect/98445">Télécharger tarball de battle-rage.</a></li><li>lien nᵒ 5 : <a title="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_exe.cgi" hreflang="en" href="https://linuxfr.org/redirect/98446">Télécharger battle-rage Windows.</a></li><li>lien nᵒ 6 : <a title="http://www.open-source-projects.net/battle-rage/Documentation/Online/battle-rage_notice/html/notice.html" hreflang="en" href="https://linuxfr.org/redirect/98447">Notice de battle-rage en ligne.</a></li><li>lien nᵒ 7 : <a title="https://github.com/mrcyberfighter/battle-rage" hreflang="en" href="https://linuxfr.org/redirect/98448">Dépôt github de battle-rage.</a></li></ul><div><ol>
<li>choisissez le mode de jeu :
<ul>
<li>
<em><strong>Player</strong> vs <strong>Computer</strong></em>,</li>
<li>
<em><strong>Player</strong> vs <strong>Player</strong></em>,</li>
<li>
<em><strong>Computer</strong> vs <strong>Computer</strong></em> ;</li>
</ul>
</li>
<li>puis choisissez votre combattant parmi les <a href="http://www.open-source-projects.net/battle-rage/battle-rage_presentation.html#fighters">16 combattants</a> disponibles, ainsi que votre <strong>adversaire</strong> ou <em>laissez l’ordinateur tirer au hasard</em> ;</li>
<li>
<strong>Combattez</strong> dans plusieurs <em>rounds</em> : <strong>chacun un combat à mort</strong> (<em>plus de points de vie</em>). Maximum <em>3 rounds</em>.</li>
</ol><p>Vous devez disposez d’une <em>manette PC</em> pour jouer a battle-rage et battle-rage implémente des règles précises mais simples afin de créer <em>une logique de la manette</em>.</p>
<p><a href="http://www.open-source-projects.net/battle-rage/battle-rage_presentation.html#downloads"><strong>battle-rage</strong> est disponible pour <strong>GNU/Linux</strong> et <strong>Windows</strong>, mais cela peut marcher sur un <strong>Mac</strong> grâce aux <em>autotools</em>.</a></p>
<p>Capture d'écran : <a href="http://www.open-source-projects.net/battle-rage/Doc/battle-rage_presentation_screen.png">http://www.open-source-projects.net/battle-rage/Doc/battle-rage_presentation_screen.png</a></p>
<h3 id="propriétés-des-combattants">Propriétés des combattants:</h3>
<p><strong>battle-rage</strong> propose <a href="http://www.open-source-projects.net/battle-rage/battle-rage_presentation.html#fighters"><strong>16</strong> différents combattants</a> chacun doté de <em>propriétés</em> différentes :</p>
<ul>
<li>
<code>force</code> : force de frappe des coups ;</li>
<li>
<code>résistance</code> : résistance aux coups ;</li>
<li>
<code>vitesse</code> : vitesse de déplacement dans toutes les directions lors de la frappe ;</li>
<li>
<code>agressivité</code> : agressivité de l’adversaire_ (uniquement pour l’ordinateur).</li>
</ul><p>Ce qui fait la force ou la faiblesse des différents combattants.</p>
<p><em>Note : Vous verrez les propriétés des combattants sous formes d’étoile(s) lors du choix de votre joueur ou de votre adversaire.</em></p>
<p>Capture d'écran : <a href="http://www.open-source-projects.net/battle-rage/Screenshots/battle-rage-1.0_menus:_choose_fighter_menu.png">http://www.open-source-projects.net/battle-rage/Screenshots/battle-rage-1.0_menus:_choose_fighter_menu.png</a></p>
<p>Quand un combattant en touche un autre alors que celui‐ci n’est pas protégé, la diminution de ses points de vie se fait ainsi :</p>
<pre><code> ([Force du coup] × [Force du combattant]) - ([Résistance commune] × [Résistance du combattant])
</code></pre>
<h3 id="configuration-du-jeu">Configuration du jeu</h3>
<p>Vous pouvez configurer <strong>battle‐rage</strong> dans les termes suivants :</p>
<ul>
<li>
<strong>niveau de difficulté</strong> :
<ul>
<li>
<strong>facile</strong>,</li>
<li>
<strong>normal</strong>,</li>
<li>
<strong>difficile</strong>,</li>
<li>
<strong>mystérieux</strong> (<em>tous les combattants ont des propriétés identiques</em>) ;</li>
</ul>
</li>
<li>
<strong>vitesse du jeu</strong> :
<ul>
<li>
<strong>lent</strong>,</li>
<li>
<strong>normal</strong>,</li>
<li>
<strong>rapide</strong> ;</li>
</ul>
</li>
<li>
<strong>sons du jeu</strong> : <em>On</em> / <em>Off</em> ;</li>
<li>
<strong>musique du jeu</strong> : <em>On</em> / <em>Off</em>.</li>
</ul><h2 id="logique-du-joystick-de-battle-rage">Logique du joystick de <strong>battle-rage</strong>:</h2>
<h3 id="prise-en-charge-des-manettes">Prise en charge des manettes:</h3>
<p>À chaque nouveau modèle de manette PC, il faudra la configurer afin qu'elle réponde à la logique du joystick de battle-rage. Pas besoin de configurer la manette à chaque fois que vous jouez, seulement lors de la première connexion du nouveau modèle. Et vous pourrez la reconfigurer, à loisir… </p>
<h3 id="combinaisons-de-la-manette-de-battle-rage">Combinaisons de la manette de <strong>battle-rage</strong>
</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6f70656e2d736f757263652d70726f6a656374732e6e65742f626174746c652d726167652f446f632f6a6f79737469636b5f626174746c652d726167652e706e67/joystick_battle-rage.png" alt="Joystick" title="Source : http://www.open-source-projects.net/battle-rage/Doc/joystick_battle-rage.png"><br>
La configuration se fait selon la logique pieds‐poings, afin de lier chaque bouton de votre manette à un coup différent :</p>
<ul>
<li>le <strong>poing arrière</strong> est <em>activé</em> en appuyant sur le bouton <code>A</code> ;</li>
<li>le <strong>poing avant</strong> est <em>activé</em> en appuyant sur le bouton <code>X</code> ;</li>
<li>le <strong>pied avant</strong> est <em>activé</em> en appuyant sur le bouton <code>B</code> ;</li>
<li>le <strong>pied arrière</strong> est <em>activé</em> en appuyant sur le bouton <code>Y</code>.</li>
</ul><p>Vous vous dirigez bien sur grâce au <em>pad</em> directionnel de votre manette. Chaque direction et chaque bouton (<code>A</code>, <code>X</code>, <code>B</code> et <code>Y</code>) donne des combinaisons afin de donner des coups différents.</p>
<h4 id="les-combinaisons-simples">Les combinaisons simples :</h4>
<ul>
<li>seulement <code>A</code> : un coup avec <strong>le poing arrière</strong> ;</li>
<li>seulement <code>X</code> : un coup avec <strong>le poing avant</strong> ;</li>
<li>seulement <code>B</code> : un coup avec <strong>la jambe arrière</strong> ;</li>
<li>seulement <code>Y</code> : un coup avec <strong>la jambe avant</strong> ;</li>
<li>seulement <code>→</code> : avancer vers <strong>la droite</strong> ;</li>
<li>seulement <code>←</code> : avancer vers <strong>la gauche</strong> ;</li>
<li>seulement <code>↓</code> : <strong>mise à genoux</strong>.</li>
</ul><p><em>Note : Le bouton <code>↑</code> n’est pas utilisé pour sauter, mais certains coups sont des coups sautés.</em></p>
<h4 id="combinaisons-directions--bouton-a">Combinaisons : directions + bouton <code>A</code> :</h4>
<ul>
<li>
<code>→</code> + <code>A</code> : un grand <strong>coup de poing</strong> avec le <strong>poing arrière</strong> ;</li>
<li>
<code>←</code> + <code>A</code> : <strong>protégé debout</strong> ;</li>
<li>
<code>↑</code> + <code>A</code> : un <strong>uppercut</strong> avec le <strong>poing arrière</strong> ;</li>
<li>
<code>↓</code> + <code>A</code> : <strong>protégé à genoux</strong>.</li>
</ul><h4 id="combinaisons-directions--bouton-x">Combinaisons : directions + bouton <code>X</code> :</h4>
<ul>
<li>
<code>→</code> + <code>X</code> : un grand <strong>coup de poing</strong> avec <strong>le poing avant</strong> ;</li>
<li>
<code>←</code> + <code>X</code> : un <strong>coup de poing</strong> <em>retourné</em> ;</li>
<li>
<code>↑</code> + <code>X</code> : un <strong>uppercut</strong> du <strong>poing avant</strong> ;</li>
<li>
<code>↓</code> + <code>X</code> : un <strong>coup de poing</strong> sur <strong>les genoux</strong>.</li>
</ul><h4 id="combinaisons-directions--bouton-b">Combinaisons : directions + bouton <code>B</code> :</h4>
<ul>
<li>
<code>→</code> + <code>B</code> : un <strong>coup de pied</strong> <em>avant</em> sur <strong>le corps</strong> ;</li>
<li>
<code>←</code> + <code>B</code> : un <strong>coup de pied</strong> _<strong>retourné</strong> ;</li>
<li>
<code>↑</code> + <code>B</code> : un <strong>coup de pied</strong> <em>avant</em> à <strong>la tête</strong> ;</li>
<li>
<code>↓</code> + <code>B</code> : un <strong>coup de pied</strong> sur <strong>les genoux</strong> ou <strong>balayette</strong>.</li>
</ul><h4 id="combinaisons-directions--bouton-y">Combinaisons : directions + bouton <code>Y</code> :</h4>
<ul>
<li>
<code>→</code> + <code>Y</code> : un <strong>coup de pied</strong> <em>arrière</em> <strong>au corps</strong> ;</li>
<li>
<code>←</code> + <code>Y</code> : un <strong>coup de pied</strong> <em>retourné</em> ;</li>
<li>
<code>↑</code> + <code>Y</code> : un <strong>coup de pied</strong> <em>arrière</em> à <strong>la tête</strong> </li>
<li>
<code>↓</code> + <code>Y</code> : un <strong>coup de pied</strong> <em>arrière</em> sur <strong>les genoux</strong> ou <strong>balayette</strong>.</li>
</ul><h2 id="conclusion">Conclusion</h2>
<p>Vous pouvez retrouver <a href="http://www.open-source-projects.net/index/Resources/battle-rage/">les personnages de battle‐rage et plus encore</a> dans l’index de mon site.</p>
<p>J’ai fait un véritable effort sur l’empaquetage :</p>
<ul>
<li>version <strong>Windows</strong> 64 bits : <a href="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_exe.cgi"><strong>*.exe</strong></a> ;</li>
<li>version <strong>GNU/Linux</strong> : <a href="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_deb.cgi"><strong>*.deb</strong></a> et <a href="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_rpm.cgi"><strong>*.noarch.rpm</strong></a> ;</li>
<li>version <strong>tarball</strong> : <a href="http://www.open-source-projects.net/battle-rage/Download/py/download_battle-rage_tarball.cgi"><strong>tarball</strong></a>.</li>
</ul><p>Je vous souhaite beaucoup de fun en jouant des combats haletants, en maîtrisant tous les combattants et leurs différentes techniques de combat, afin de mettre vos adversaires <strong>K.O</strong>.</p></div><div><a href="https://linuxfr.org/news/sortie-de-battle-rage-un-jeu-de-combat-dans-le-genre-street-fighter.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/110407/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-battle-rage-un-jeu-de-combat-dans-le-genre-street-fighter#comments">ouvrir dans le navigateur</a>
</p>
LinuxatorDavy Defaudbubar🦥palm123Benoît SibaudFlorent Zarahttps://linuxfr.org/nodes/110407/comments.atomtag:linuxfr.org,2005:News/372182016-09-28T22:30:55+02:002016-10-02T15:06:38+02:00GNOME 3.22 Karlsruhe : A Land Far, Far AwayLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>On ne présente plus <a href="https://fr.wikipedia.org/wiki/GNOME" title="Définition Wikipédia">GNOME</a>, l’<a href="https://fr.wikipedia.org/wiki/environnement%20de%20bureau" title="Définition Wikipédia">environnement de bureau</a> libre (depuis toujours), sexy (depuis <a href="https://www.gnome.org/gnome-3/">la série 3.<em>x</em></a>), ergonomique (selon les points de vue), personnalisable (non, là, je plaisante, en revanche) et, dorénavant, à la pointe de la technique !</p>
<p>GNOME 3.22, nom de code <em>Karlsruhe</em>, est sorti le mercredi 21 septembre 2016, avec, sous le capot, rien de moins qu’une révolution…</p>
<p>La dernière version de GNOME est le résultat de six mois de développement dont 22 980 changements effectués par approximativement 775 contributeurs.</p></div><ul><li>lien nᵒ 1 : <a title="https://www.gnome.org/" hreflang="en" href="https://linuxfr.org/redirect/96892">Site officiel de GNOME</a></li><li>lien nᵒ 2 : <a title="https://fr.wikipedia.org/wiki/GNOME" hreflang="fr" href="https://linuxfr.org/redirect/96893">Article Wikipédia de GNOME</a></li><li>lien nᵒ 3 : <a title="https://www.gnomelibre.fr/2016/08/sortie-de-la-premiere-beta-de-gnome-3-22/" hreflang="fr" href="https://linuxfr.org/redirect/98062">GNOME libre : Sortie de la première bêta de GNOME 3.22</a></li><li>lien nᵒ 4 : <a title="https://wiki.gnome.org/ThreePointTwentyone/ReleaseNotes" hreflang="en" href="https://linuxfr.org/redirect/98168">3.22 – Notes de version</a></li><li>lien nᵒ 5 : <a title="https://wiki.gnome.org/ThreePointTwentyone" hreflang="en" href="https://linuxfr.org/redirect/98169">3.22 – Calendrier de sortie</a></li><li>lien nᵒ 6 : <a title="https://linuxfr.org/news/parution-de-gnome-3-20-delhi" hreflang="fr" href="https://linuxfr.org/redirect/98170">3.20 – Précédente dépêche LinuxFr.org</a></li><li>lien nᵒ 7 : <a title="https://youtu.be/LhY7rpWXm1Y" hreflang="en" href="https://linuxfr.org/redirect/98186">3.22 – Vidéo de présentation</a></li><li>lien nᵒ 8 : <a title="https://help.gnome.org/misc/release-notes/3.22/index.html.fr" hreflang="fr" href="https://linuxfr.org/redirect/98187">3.22 – Article détaillé des changements</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#g%C3%A9n%C3%A9ral">Général</a><ul>
<li>
<a href="#wayland-wayland-wayland">Wayland, Wayland, Wayland !</a><ul>
<li><a href="#p%C3%A9riph%C3%A9riques-dentr%C3%A9e">Périphériques d’entrée</a></li>
<li><a href="#mutter">Mutter</a></li>
<li><a href="#applications-tournant-nativement">Applications tournant nativement</a></li>
</ul>
</li>
<li><a href="#param%C3%A8tres">Paramètres</a></li>
</ul>
</li>
<li><a href="#shell">Shell</a></li>
<li>
<a href="#applications">Applications</a><ul>
<li><a href="#logiciels">Logiciels</a></li>
<li><a href="#agenda">Agenda</a></li>
<li>
<a href="#fichiers">Fichiers</a><ul>
<li><a href="#renommage-en-masse">Renommage en masse</a></li>
<li><a href="#fichiers-compress%C3%A9s">Fichiers compressés</a></li>
<li><a href="#autres">Autres</a></li>
</ul>
</li>
<li><a href="#cartes">Cartes</a></li>
<li><a href="#jeux">Jeux</a></li>
<li><a href="#machines">Machines</a></li>
<li><a href="#web">Web</a></li>
<li><a href="#musique">Musique</a></li>
<li><a href="#photos">Photos</a></li>
<li><a href="#documents">Documents</a></li>
<li><a href="#%C3%89volution">Évolution</a></li>
</ul>
</li>
<li>
<a href="#d%C3%A9veloppeurs">Développeurs</a><ul>
<li><a href="#builder">Builder</a></li>
<li><a href="#flatpak">Flatpak</a></li>
<li><a href="#glib">Glib</a></li>
<li>
<a href="#gtk">GTK+</a><ul>
<li><a href="#coup-d%C5%93il-dans-le-r%C3%A9tro">Coup d’œil dans le rétro</a></li>
<li><a href="#nouveaut%C3%A9s-de-gtk322">Nouveautés de GTK+ 3.22</a></li>
<li>
<a href="#gtk40-en-approche">GTK+ 4.0 en approche !</a><ul>
<li><a href="#insaisissable-gtk--le-probl%C3%A8me">Insaisissable GTK+ (= le problème)</a></li>
<li><a href="#vous-avez-dit-lessthanperfect-api-stability">Vous avez dit <em>Less‐than‐perfect API stability</em> ?</a></li>
<li><a href="#tout-est-bien-qui-finit-bien-du-moins-esp%C3%A9ronsle">Tout est bien qui finit bien (du moins, espérons‐le)</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#gstreamer">GStreamer</a><ul>
<li><a href="#la-compilation-de-gstreamer-bient%C3%B4t-confi%C3%A9e-%C3%A0-meson-plut%C3%B4t-que-les-autotools">La compilation de GStreamer bientôt confiée à Meson plutôt que les Autotools</a></li>
<li><a href="#oxydation-de-gstreamer">Oxydation de GStreamer</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#int%C3%A9gration-dans-les-distributions">Intégration dans les distributions</a></li>
<li><a href="#vitalit%C3%A9-du-projet">Vitalité du projet</a></li>
<li>
<a href="#autour-de-gnome">Autour de GNOME</a><ul>
<li><a href="#pitivi">Pitivi</a></li>
<li><a href="#libreoffice-et-firefox">LibreOffice et Firefox</a></li>
<li><a href="#shotwell-et-geary">Shotwell et Geary</a></li>
<li><a href="#systemd-manager">Systemd Manager</a></li>
<li><a href="#guadec-2016--2017">GUADEC 2016 & 2017</a></li>
</ul>
</li>
</ul><p><img src="https://img.linuxfr.org/img/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f7468756d622f362f36382f476e6f6d656c6f676f2e7376672f31393870782d476e6f6d656c6f676f2e7376672e706e67/198px-Gnomelogo.svg.png" alt="logo de GNOME"></p>
<h2 id="général">Général</h2>
<h3 id="wayland-wayland-wayland">Wayland, Wayland, Wayland !</h3>
<p>Le choix de faire reposer par défaut GNOME sur <a href="https://fr.wikipedia.org/wiki/Wayland" title="Définition Wikipédia">Wayland</a> a été différé à de nombreuses reprises… Le travail d’intégration est achevé et GNOME-Wayland est à présent <a href="https://fedoraproject.org/wiki/Wayland_features">comparable en termes de fonctionnalités</a> à GNOME-X11. Ceci sans compter les bonus apportés par l’implémentation du protocole Wayland en termes de finition, de sécurité et même d’<a href="https://bugzilla.gnome.org/show_bug.cgi?id=742254">efficacité énergétique</a>, ni <a href="https://blogs.gnome.org/mclasen/2016/03/04/why-wayland-anyway/">les nouvelles possibilités qui s’ouvrent aux développeurs</a> !</p>
<p><img src="https://img.linuxfr.org/img/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f7468756d622f392f39392f5761796c616e645f4c6f676f2e7376672f31363070782d5761796c616e645f4c6f676f2e7376672e706e67/160px-Wayland_Logo.svg.png" alt="logo Wayland"></p>
<h4 id="périphériques-dentrée">Périphériques d’entrée</h4>
<p>Ces derniers mois ont vu arriver la prise en charge des tablettes graphiques par GTK+ sous Wayland (<em>cf.</em> <a href="https://blogs.gnome.org/carlosg/2016/04/06/gtk-wayland-tablet-support-is-merged/">ce billet de blogue</a>), ce qui fut une des grosses raisons du retard de Wayland par défaut. En effet, si Wayland est probablement prêt à 99 % (statistiques sorties du chapeau), comme toujours, ce sont les détails qui bloquent. Bien qu’une majeure partie de la population utilisera essentiellement souris et clavier, sortir un système d’exploitation sans prise en charge de périphériques d’entrée avancés n’est pas possible de nos jours. C’est ainsi que <a href="http://who-t.blogspot.fr/2016/04/libinput-and-graphics-tablet-pad-support.html"><em>libinput</em></a> a annoncé successivement les versions <a href="https://lists.freedesktop.org/archives/wayland-devel/2016-May/028704.html">1.3.0</a> et <a href="https://lists.freedesktop.org/archives/wayland-devel/2016-July/030121.html">1.4.0</a> à quelques mois d’intervalle. Cette dernière version donne à son mainteneur l’occasion de <a href="https://who-t.blogspot.fr/2016/07/libinput-is-done.html">jeter un œil en arrière pour mesurer le chemin parcouru</a>.</p>
<p>Parmi les apports intéressants de Wayland, nous pouvons noter la gestion de pointeurs multiples : chaque périphérique de pointage est indépendant avec son propre pointeur (et même une icône de pointeur différente), contrairement à X où tous les périphériques se partageaient un pointeur unique. Ainsi, une souris et une tablette affichent deux pointeurs indépendants simultanément. On pourrait donc imaginer de nouvelles manières de travailler où un artiste pourrait dessiner avec un stylo à la main, et cliquer sur des boutons de l’autre main. On pourrait même avoir deux stylos numériques et dessiner simultanément (comme si vous dessiniez avec deux pinceaux en même temps, chacun pouvant avoir une texture, couleur et brosse différentes), ce qui est actuellement impossible. Ce type de fonctionnalité ouvre de nouvelles perspectives pour l’art numérique, mais aussi au niveau de l’interaction homme‐machine. Bien sûr, cela nécessite que les applications qui souhaitent tirer avantage de ceci adaptent leur code.</p>
<p>Mais quand on parle d’avancée dans les périphériques d’entrée, on parle notamment de tablettes graphiques, car ce sont des périphériques très polyvalents. Les souris, les claviers, etc., ce type de périphériques est plutôt bien supporté depuis longtemps et, même s’ils peuvent profiter de quelques touches un peu hors norme, ce sont généralement des fonctionnalités bien définies. C’est d’un ennui !<br>
Les tablettes graphiques, en revanche, ont cette particularité qu’elles sont fournies de boutons génériques, c’est‐à‐dire qui n’ont pas de fonction par conception, à charge de l’utilisateur de les configurer. C’est ainsi que Carlos Garnacho explique l’<a href="https://blogs.gnome.org/carlosg/2016/08/24/wayland-%E2%99%A1-drawing-tablets">amélioration de la prise en charge de ces boutons dans Wayland</a> : plutôt qu’associer seulement une combinaison de type « touche clavier » (ex : <code>ctrl</code> + <code>lettre</code>), il est désormais également possible d’associer des actions (donc une fonction sémantique). Mais encore mieux, les applications seront capables de configurer les boutons, un peu comme des profils applicatifs. Un artiste pourra ainsi configurer un bouton pour lancer une action particulière dans GIMP, par exemple un effet souvent utilisé, alors que dans Inkscape, ce même bouton pourra avoir une toute autre fonction. Cela nécessitera, bien sûr, une prise en charge au niveau du code des applications intéressées par ce type de fonctionnalité, qui sont donc probablement avant tout les applications de création graphique (davantage susceptibles d’avoir des utilisateurs possédant ce type de périphériques).<br><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f67732e676e6f6d652e6f72672f6361726c6f73672f66696c65732f323031362f30382f53637265656e73686f742d66726f6d2d323031362d30382d30342d31382d33322d31302e706e67/Screenshot-from-2016-08-04-18-32-10.png" alt="Configuration des boutons de tablette graphique" title="Source : https://blogs.gnome.org/carlosg/files/2016/08/Screenshot-from-2016-08-04-18-32-10.png"></p>
<h4 id="mutter">Mutter</h4>
<p><a href="https://mail.gnome.org/archives/gnome-announce-list/2016-June/msg00020.html">Mutter aussi a été optimisé durant ce cycle de développement</a> : amélioration du copier‐coller entre les applications X11 et les applications Wayland natives. Meilleure gestion du multi‐écran sous Wayland…</p>
<h4 id="applications-tournant-nativement">Applications tournant nativement</h4>
<p>Outre les applications au cœur de GNOME, citons‐en quelques autres tournant nativement sous Wayland : <a href="https://fr.wikipedia.org/wiki/LibreOffice" title="Définition Wikipédia">LibreOffice</a>, à partir de <a href="//linuxfr.org/news/libreoffice-5-0-sous-le-capot">la version 5.0</a> (quelques finitions peuvent rester nécessaires <a href="http://caolanm.blogspot.fr/2015/07/libreoffice-on-wayland.html">ici</a> ou <a href="http://caolanm.blogspot.fr/2016/02/gtk3-and-libreoffice.html">là</a>) ou encore <a href="https://fr.wikipedia.org/wiki/Pitivi" title="Définition Wikipédia">Pitivi</a> à partir de la <a href="//linuxfr.org/news/pitivi-0-95-s-elance-avec-un-nouveau-moteur">version 0.95</a>.</p>
<p>Rappelons également que les applications non encore converties à Wayland — par exemple, Firefox (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=635134">ticket 635134</a>) et GIMP (<a href="http://wiki.gimp.org/wiki/Roadmap">qui doit attendre le portage vers la version 3 de GTK+</a>) — tournent néanmoins parfaitement et fluidement dans une session Wayland de GNOME, via le procédé <a href="https://wayland.freedesktop.org/xserver.html">XWayland</a>.</p>
<p>Enfin, nous savons déjà que <a href="https://www.phoronix.com/scan.php?page=news_item&px=Fedora-25-Alpha-Released">Fedora 25, par exemple, activera Wayland par défaut</a>. Ainsi, RedHat tient une liste à jour de <a href="https://fedoraproject.org/wiki/How_to_debug_Wayland_problems#Known_issues.2C_frequent_complaints.2C_fundamental_changes">ce qui ne marche pas encore</a>, mais également de ce qu’il reste à faire pour que <a href="https://fedoraproject.org/wiki/Wayland_features">certains outils puissent continuer à marcher sur Wayland <em>avec</em> GNOME</a>.</p>
<h3 id="paramètres">Paramètres</h3>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6665616e65726f6e2e66696c65732e776f726470726573732e636f6d2f323031362f30372f636170747572612d64652d74656c612d64652d323031362d30372d32312d32302d33322d35382e706e67/captura-de-tela-de-2016-07-21-20-32-58.png" alt="Nouvelle vue des paramètres (crédit : feaneron)" title="Source : https://feaneron.files.wordpress.com/2016/07/captura-de-tela-de-2016-07-21-20-32-58.png"></p>
<p>Le centre de paramétrage est en train de changer de <em>design</em> avec une barre latérale de navigation où sont listées les paramétrages par catégorie avec leurs icônes et descriptions. Cette barre latérale redimensionnable est placée sur la gauche de la fenêtre.</p>
<p>L’ancienne vue est toujours celle par défaut. N’importe qui peut donc la lancer avec <code>gnome-control-center-alt</code>. À vous de tester et de remonter ce qui ne va pas !</p>
<h2 id="shell">Shell</h2>
<ul>
<li>meilleure prise en charge de Wayland ;</li>
<li>implémentation du système de permissions qui demandera à l’utilisateur s’il souhaite partager sa géolocalisation ou autoriser l’accès à certains périphériques (webcam, microphone…) pour les applications isolées qui en feront la demande ;</li>
<li>plusieurs dizaines de corrections de bogues.</li>
</ul><h2 id="applications">Applications</h2>
<p>Des fonctionnalités pour utilisateurs avancés font leur apparition dans cette version, comme la possibilité de renommer les fichiers en masse dans Fichiers (qui <a href="http://docs.xfce.org/xfce/thunar/bulk-renamer/start">rattrape Thunar, son équivalent Xfce, sur ce point</a>) ou d’éditer les méta‐données de vos fichiers musicaux via Musique. Ces fonctionnalités ont été implémentées par des étudiants du <a href="https://summerofcode.withgoogle.com/" title="Google Summer of Code 2016">GSoC 2016</a>, respectivement Alexandru Pandelea [<a href="https://alexandrupandelea.wordpress.com/"><em>blogue</em></a>] et Saiful B. Khan [<a href="https://saifulbkhan.wordpress.com/"><em>blogue</em></a>].</p>
<h3 id="logiciels">Logiciels</h3>
<ul>
<li>gestion des applications <a href="http://news.softpedia.com/news/gnome-software-package-manager-has-just-received-support-for-flatpak-packages-504397.shtml">Flatpak</a> et <a href="http://news.softpedia.com/news/gnome-software-3-22-will-support-installation-of-snaps-flatpak-repository-files-506580.shtml">Snap</a> ;</li>
<li>prise en charge des extensions GNOME Shell ;</li>
<li>prise en charge initiale de Steam ;</li>
<li>les boîtes de dialogues pour la mise à niveau du système d’exploitation ont été retravaillées ;</li>
<li>l’information concernant la taille des paquets est désormais séparée en deux : la taille à télécharger et celle nécessaire pour l’installation ;</li>
<li>ajout d’un bouton d’annulation et d’informations de progression sur la page de détails ;</li>
<li>l’origine d’un paquet est désormais indiquée quand ce dernier est disponible depuis plusieurs sources différentes ;</li>
<li>prise en charge des liens <code>appstream://</code> ;</li>
<li>ajout d’informations concernant les applications isolées.</li>
</ul><h3 id="agenda">Agenda</h3>
<p>L’agenda a été encore peaufiné, avec une gestion des alarmes, le changement possible de mois par raccourci clavier, une vue de tous les évènements du mois en cliquant sur le nom du mois, la prise en charge du glisser‐déposer…<br><img src="//img.linuxfr.org/img/687474703a2f2f69312d6e6577732e736f667470656469612d7374617469632e636f6d2f696d616765732f6e657773322f676e6f6d652d63616c656e6461722d77696c6c2d737570706f72742d616c61726d732d676e6f6d652d736f6674776172652d746f2d6265747465722d68616e646c652d666c617470616b732d3530363034382d322e6a7067/gnome-calendar-will-support-alarms-gnome-software-to-better-handle-flatpaks-506048-2.jpg" alt="Rappel évènement" title="Source : http://i1-news.softpedia-static.com/images/news2/gnome-calendar-will-support-alarms-gnome-software-to-better-handle-flatpaks-506048-2.jpg"></p>
<h3 id="fichiers">Fichiers</h3>
<h4 id="renommage-en-masse">Renommage en masse</h4>
<p>Nautilus se dote d’un outil de renommage en masse de fichiers qui permet de faire du « rechercher et remplacer », mais également d’utiliser un patron prédéfini. Ce patron peut utiliser les étiquettes (<em>tags</em>) des fichiers musicaux.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f63736f7269616e6f676e6f6d652e66696c65732e776f726470726573732e636f6d2f323031362f30382f62617463682d72656e616d696e67312e706e67/batch-renaming1.png" alt="Renommage par patron de fichiers musicaux" title="Source : https://csorianognome.files.wordpress.com/2016/08/batch-renaming1.png"></p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f63736f7269616e6f676e6f6d652e66696c65732e776f726470726573732e636f6d2f323031362f30382f62617463682d72656e616d65332e706e67/batch-rename3.png" alt="Renommage par « cherche et remplace »" title="Source : https://csorianognome.files.wordpress.com/2016/08/batch-rename3.png"></p>
<p>À noter que les conflits sont surlignés en jaune par sécurité.</p>
<h4 id="fichiers-compressés">Fichiers compressés</h4>
<p>L’ouverture des fichiers compressés s’est toujours faite avec un outil tiers, comme <em>file-roller</em>. Ceci empêchait de gérer la progression de la décompression au sein de Nautilus (mais également l’annulation, la répétition et la décompression en arrière‐plan en fermant la fenêtre), une bibliothèque a donc été mise en place pour ça : <em>gnome-autoar</em>.</p>
<p>Nautilus gère maintenant la création d’archives et leur décompression. Cette nouvelle bibliothèque permettra à d’autres applications, comme Evolution ou Epiphany, de gérer les archives directement.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f63736f7269616e6f676e6f6d652e66696c65732e776f726470726573732e636f6d2f323031362f30382f636f6d7072657373696f6e2e706e67/compression.png" alt="Compression d'archives et barre de progression" title="Source : https://csorianognome.files.wordpress.com/2016/08/compression.png"></p>
<p>Le comportement par défaut est de décompresser l’archive sélectionnée avec un double clic, mais une option dans les préférences permet de désactiver ce choix si besoin est.</p>
<h4 id="autres">Autres</h4>
<p>Le menu de droite s’améliore, pour s’inspirer un peu de Firefox, par exemple dans la gestion du zoom.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f63736f7269616e6f676e6f6d652e66696c65732e776f726470726573732e636f6d2f323031362f30382f6d656e75732e706e67/menus.png" alt="Menu de droite" title="Source : https://csorianognome.files.wordpress.com/2016/08/menus.png"></p>
<p>La gestion du bureau est maintenant séparée de Nautilus pour plus de facilité de travail.</p>
<h3 id="cartes">Cartes</h3>
<p>Cartes <a href="http://www.gnomelibre.fr/2016/08/mapbox-a-la-rescousse-de-cartes">utilise désormais Mapbox</a>. Plutôt que de passer par un serveur mandataire (<em>proxy</em>) pour éviter une nouvelle interruption de service en cas de changement de fournisseur de tuiles, un fichier <code>service.json</code> est désormais téléchargé depuis les serveurs de GNOME pour savoir quel fournisseur de tuiles utiliser directement, ce qui rend l’affichage bien plus rapide.</p>
<p>Enfin, le « rebouclage horizontal » de la carte pour pouvoir faire le tour de la planète est maintenant là.</p>
<h3 id="jeux">Jeux</h3>
<p><a href="https://wiki.gnome.org/Apps/Games"><em>Jeux</em></a> est une jeune application GNOME pour présenter les jeux stockés dans votre ordinateur, qu’il s’agisse de jeux installés (natifs, Steam), de jeux à part (comme ceux utilisant l’infrastructure <a href="https://love2d.org/">LÖVE</a>) ou même de jeux à émuler (ROM et images disque). Dans le cas de ces derniers, Jeux se charge de les lancer dans sa propre fenêtre, faisant ainsi office de frontal pour émulateur basé sur <a href="http://www.libretro.com/">Libretro</a>.</p>
<p>Cette version 3.22 comporte pas mal de nouveautés majeures :</p>
<ul>
<li>prise en charge des manettes de jeu ;</li>
<li>prise en charge du plein écran ;</li>
<li>prise en charge des jeux PlayStation pour l'émulation ;</li>
<li>téléchargement des pochettes de jeu pour la plupart des consoles (les pochettes sont récupérées depuis <em>TheGamesDB.net</em> pour les jeux consoles et le magasin Steam pour les jeux Steam),</li>
<li>affichage des jeux Atari 2600, Atari 7800, NEC CD-ROM² et Mega-CD ;</li>
<li>ajout d’icônes pour LÖVE et Nintendo DS.</li>
</ul><p>Les détails figurent dans l’annonce de la sortie <a href="http://bytesgnomeschozo.blogspot.fr/2016/09/gnome-games-322-giant-leap.html">sur le <em>blog</em> d’Adrien Plazas</a>.</p>
<h3 id="machines">Machines</h3>
<p>L’outil de gestion des machines virtuelles présente les nouveautés suivantes :</p>
<ul>
<li>ajout d’une option de clonage ;</li>
<li>l’ordre d’affichage des différentes machines virtuelles est préservé d’une session à l’autre ;</li>
<li>les noms d’hôte n’utilisent plus de caractères qui poseraient problème sous Microsoft Windows ;</li>
<li>les nouvelles machines virtuelles n’exposent plus la connexion <a href="https://fr.wikipedia.org/wiki/SPICE_%28protocole%29" title="Simple Protocol for Independent Computing Environments">SPICE</a> à tous les utilisateurs ;</li>
<li>prise en charge des adresses URL SPICE <em>spice+unix</em> ;</li>
<li>ajout d’une action « redémarrer » et suppression de l’action « pause » dans le menu contextuel du mode <em>Affichage</em>.</li>
</ul><h3 id="web">Web</h3>
<p>Le navigateur par défaut prend maintenant en charge le « coller et aller » (permettant de rendre directement à la page dont l’adresse est dans la presse‐papiers), déjà présent sous Firefox par exemple. La nouvelle fenêtre des raccourcis clavier fait maintenant son arrivée. Enfin, il est maintenant possible de dupliquer un onglet.</p>
<h3 id="musique">Musique</h3>
<p>Certains auront noté que les performances de <em>Musique</em> n’étaient pas extraordinaires, mais <a href="https://feaneron.com/2016/08/09/gnome-music-is-fast-again/">c’est maintenant du passé</a>.</p>
<p>Enfin, tout comme <em>Web</em>, <em>Musique</em> implémente également la page des raccourcis clavier.</p>
<h3 id="photos">Photos</h3>
<p>Une prise en charge expérimentale du partage de photos (courrier électronique, Bluetooth, Google, Flickr…) fait son entrée, accompagnée de la possibilité d’annuler toutes les modifications effectuées sur une photo. Vous pouvez désormais <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751181">envoyer vos photos dans les nuages</a> directement.</p>
<p>Les fichiers GIF étant mal pris en charge (les fichiers GIF animés ne le sont pas toujours), ces derniers ne sont plus affichés pour le moment.</p>
<h3 id="documents">Documents</h3>
<p>Documents vous permet maintenant de lire les fichiers au format EPUB (dans <em>Books</em>) et, pourquoi pas, en plein écran avec une barre d’outils sombre !</p>
<h3 id="Évolution">Évolution</h3>
<p><em>Évolution</em> vient juste de changer son moteur de rendu pour passer de Webkit 1 à Webkit 2 pour l’affichage des courriels. C’est un changement qui a pris du temps, mais qui a permis de résoudre plusieurs dizaines de bogues et d’apporter diverses améliorations.</p>
<h2 id="développeurs">Développeurs</h2>
<h3 id="builder">Builder</h3>
<p><a href="https://blogs.gnome.org/chergert/2016/07/01/builder-designs"><em>Builder</em> se refait une beauté</a> :</p>
<ul>
<li>nouveau système de recherche et de remplacement ;</li>
<li>nouvelle barre de compilation qui fournit des informations sur la configuration, la branche du système de gestion de versions et autres informations importantes ;</li>
<li>un nouvel outil pour le profilage de code basé sur <em>Sysprof</em> ;</li>
<li>amélioration des modèles de projets ;</li>
<li>ajout d’une interface de configuration des logiciels de gestion de versions ;</li>
<li>amélioration de la prise en charge de <em>Vim</em> ;</li>
<li>nouveau greffon de gestion des couleurs ;</li>
<li>amélioration de l’interface concernant la commande <code>git clone</code>, le sélecteur de fichiers ou l’assistant ;</li>
<li>nouvelle icône.</li>
</ul><h3 id="flatpak">Flatpak</h3>
<p>Flatpak (anciennement <a href="https://www.gnomelibre.fr/2016/05/xdg-app-change-de-nom-et-devient-flatpak"><em>xdg-app</em></a>). Une <a href="http://flatpak.org/press/2016-06-21-flatpak-released.html">sortie a eu lieu le 21 juin 2016</a>.<br><img src="//img.linuxfr.org/img/687474703a2f2f696d6731352e686f7374696e67706963732e6e65742f706963732f393734373930666c617470616b2e706e67/974790flatpak.png" alt="logo de flatpak" title="Source : http://img15.hostingpics.net/pics/974790flatpak.png"></p>
<p>Rappelons brièvement pourquoi cette nouvelle technologie fait autant de bruit : Flatpak devrait permettre aux Linuxiens d’installer l’application de leur choix sans se soucier de leur distribution, de la version de celle‐ci ou même des dépendances requises. En intégrant Flatpak à <em>Logiciels</em> (<em>cf.</em> plus haut), GNOME veut rendre son usage aussi simple que l’est déjà celui des logiciels distribués via <a href="https://fr.wikipedia.org/wiki/Advanced_Packaging_Tool" title="Advanced Packaging Tool">APT</a> ou <a href="https://fr.wikipedia.org/wiki/RPM_Package_Manager" title="Red Hat Package Manager">RPM</a>.</p>
<p>Une <a href="http://flatpak.org/apps.html">page dédiée</a> recense quelques dépôts Flatpak disponibles : un dépôt <code>gnome-apps</code> pour les applications GNOME en version stable, un dépôt <code>gnome-nightly-apps</code> pour les applications GNOME en version <a href="https://fr.wikipedia.org/wiki/Version_d'un_logiciel#Version_avanc.C3.A9e"><em>nightly</em></a>, un dépôt <code>nightly-graphics</code> d’outils de création graphique non liés à un environnement de bureau particulier et également en version <em>nightly</em> (tels que Darktable, GIMP, Inkscape et MyPaint) et enfin des dépôts pour LibreOffice, Telegram ou Pitivi.</p>
<p>À défaut de <em>bundle</em> pour le moment, un script préparé par un développeur de Red Hat permet <a href="https://www.reddit.com/r/linux/comments/4oaazq/latest_firefox_in_sandbox_using_flatpak/?st=iqzv34gn&sh=913e8db3">de compiler Firefox depuis sa branche <em>master</em></a>, puis de le lancer et de le mettre à jour facilement en tant qu’application Flatpak.</p>
<p><a href="http://flatpak.org">Flatpak</a> est disponible sur la plupart des <a href="http://flatpak.org/getting.html">distributions GNU/Linux courantes</a>. Debian, parmi d’autres distributions, <a href="http://smcv.pseudorandom.co.uk/2016/flatpak">est prête</a>.</p>
<h3 id="glib">Glib</h3>
<p>En bref :</p>
<ul>
<li>refonte de l’API de journalisation pour supporter les champs clef‐valeur structurés dans les journaux ;</li>
<li>ajout de la gestion du transfert de ces derniers au service <em>systemd-journald</em> ;</li>
<li>les sorties basées sur <code>stdio</code> bénéficient désormais de couleurs ;</li>
<li>réorganisation de l’infrastructure de journalisation autour d’une fonction <code>writer</code> pour laquelle les applications spécifient leur stratégie de journalisation et dépréciation des gestionnaires de journaux en faveur de ce dernier, afin d’éliminer l’ambiguïté sur où et comment prendre en charge les journaux ainsi que les conflits entre gestionnaires de journaux ;</li>
<li>d’autres fonctionnalités encore de l’infrastructure de journalisation sont présentées dans une API publique, laissant libres les applications de choisir entre différentes stratégies, allant de celle par défaut de la GLib à une personnalisation complète ;</li>
<li>les tests unitaires des messages de journal sont maintenant plus flexibles, car on peut les faire dans une fonction <code>writer</code> personnalisée plutôt qu’avec des fonctions internes à GLib (limitant, car imposant un ordre strict des vérifications de messages) ;</li>
<li>la journalisation structurée simplifie l’implémentation de procédés de journalisation plus puissants, et devrait entraîner une moindre confusion sur les conflits entre les gestionnaires de journaux des différentes bibliothèques ;</li>
<li>facilitation de l’inclusion de plus de métadonnées dans les messages journaux, comme les identifiants de message (comme avec <em>journald</em> : <a href="https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html">https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html</a>) ;</li>
<li>utilisation de <em>journald</em> si actif.</li>
</ul><h3 id="gtk">GTK+</h3>
<h4 id="coup-dœil-dans-le-rétro">Coup d’œil dans le rétro</h4>
<p>Vous pouvez regarder la conférence (en anglais) <a href="https://media.ccc.de/v/16-gtk_are_we_in_the_future_yet"><em>GTK: Are we in the future, yet?</em></a>, donnée au dernier <a href="https://fr.wikipedia.org/wiki/GNOME#GUADEC" title="GNOME Users And Developers European Conference">GUADEC</a> par Emmanuele Bassi, qui revient notamment sur l’évolution de GTK+ au cours de ces vingt dernières années.</p>
<h4 id="nouveautés-de-gtk322">Nouveautés de GTK+ 3.22</h4>
<p>Nous attendions l’avènement de <em>GTK Scene Kit</em> (GSK) pour cette version, mais <a href="https://www.phoronix.com/scan.php?page=news_item&px=GTK-GSK-Not-For-3.22">ce sera finalement pour la prochaine</a>, <a href="https://www.phoronix.com/scan.php?page=news_item&px=GTK4-Beyond-Long-Term-Promise">autrement dit GTK+ 4.0</a>. Nous en reparlerons donc à cette occasion. En attendant, les plus impatients d’entre vous pourront suivre (en anglais) le travail en cours sur le <a href="https://www.bassi.io/tag/gsk/">blogue d’Emmanuele Bassi</a> [<a href="https://wiki.gnome.org/Projects/GTK%2B/Roadmap"><em>feuille de route de GTK+</em></a>].</p>
<h4 id="gtk40-en-approche">GTK+ 4.0 en approche !</h4>
<h5 id="insaisissable-gtk--le-problème">Insaisissable GTK+ (= le problème)</h5>
<p>Commençons par un résumé du feuilleton exposant le problème.</p>
<p>Ceux qui lisent <em>LinuxFr.org</em> le savent bien : <a href="//linuxfr.org/news/parution-de-gnome-3-20-delhi#gtk">le thémage avec le CSS a reçu une refonte majeure dans la précédente version de GTK+</a>. Vers avril/mai, certains ont publiquement râlé <a href="https://blogs.gnome.org/mortenw/2016/04/22/another-gtk-abi-break">en découvrant après coup que leurs applications ne se comportaient soudainement plus comme prévu</a>, et <a href="https://blogs.gnome.org/mclasen/2016/04/29/yet-another-gtk-update">divers</a> <a href="https://blogs.gnome.org/mortenw/2016/05/06/change">échanges</a> ont suivis. L’occasion de poser, une fois de plus, la question de la stabilité des interfaces de programmation de GTK+, spécialement de la série 3.<em>x</em>…</p>
<p>Hasard ou coïncidence, il a été <a href="https://www.bassi.io/articles/2016/05/16/reviving-the-gtk-dev-blog">décidé</a> mi‐mai de <a href="https://blog.gtk.org">réactiver le blogue relatif au développement de GTK+</a>. De fait, celui‐ci est alimenté avec talent par Emmanuele Bassi et permet de suivre, semaine après semaine, l’actualité du développement de GTK+.</p>
<h5 id="vous-avez-dit-lessthanperfect-api-stability">Vous avez dit <em>Less‐than‐perfect API stability</em> ?</h5>
<p>Reconnaissant (par euphémisme interposé) le problème posé par le manque de stabilité de l’API de GTK+ 3, mais soulignant dans le même temps l’inconvénient que créerait un engagement de stabilité à long terme de cette dernière (qui risquerait de bloquer les évolutions futures nécessaires de la bibliothèque), les développeurs réunis au <em>GTK Hackfest</em> de Toronto mi‐juin ont proposé un plan qui semblait alors assez peu lisible (voir certains billets de blogue : <a href="https://blogs.gnome.org/desrt/2016/06/13/gtk-4-0-is-not-gtk-4"><em>“Gtk 4.0 is not Gtk 4”</em></a>, <a href="https://blogs.gnome.org/desrt/2016/06/14/gtk-5-0-is-not-gtk-5"><em>“Gtk 5.0 is not Gtk 5”</em></a>, <a href="http://smcv.pseudorandom.co.uk/2016/gtk-versioning"><em>GTK versioning and distributions</em></a>, <a href="https://blogs.gnome.org/mclasen/2016/06/14/dispatches-from-the-gtk-hackfest"><em>Dispatches from the GTK+ hackfest</em></a>, <a href="https://blogs.gnome.org/mortenw/2016/06/15/gtk-versioning"><em>Gtk+ Versioning</em></a>, <a href="https://blogs.gnome.org/mortenw/2016/06/15/gtk-versioning"><em>Long term support for GTK+</em></a>…). Les diverses propositions (résumées sur une <a href="https://wiki.gnome.org/Projects/GTK%2B/Lifecycle">page de wiki</a>) ont provoquées beaucoup de discussions et, bien sûr, du <em>troll</em> en pagaille, parfois virulent.</p>
<h5 id="tout-est-bien-qui-finit-bien-du-moins-espéronsle">Tout est bien qui finit bien (du moins, espérons‐le)</h5>
<p>Le <a href="https://blog.gtk.org/2016/09/01/versioning-and-long-term-stability-promise-in-gtk">consensus final</a> est cependant bien plus simple et tout à fait compréhensible (car plus proche de la gestion de versions sémantique à laquelle les gens sont habitués). Tous les deux ou trois ans, une nouvelle version majeure stable sortira, ce qui implique un gel des fonctionnalités existantes (API stable). Bien sûr, des versions mineures stables pourront ajouter des <em>widgets</em> ou mettre à jour des implémentations, mais rien de transcendantal et, en particulier, il n’y aura pas de nouvelles fonctionnalités, ni de changement de thèmes ou d’API. Chaque version stable sera maintenue pour au moins trois ans (avec des corrections de bogues mettant à jour la micro‐version) et les développeurs d’applications tierces sont appelés à utiliser cette branche stable faite pour ne plus casser les applications. Exceptionnellement, la première version stable est GTK+ 3.22, car c’est une étape de transition, mais les versions stables ultérieures seront 4.0, puis 5.0, 6.0, etc.</p>
<p>Parallèlement à chaque sortie d’une nouvelle majeure stable, une nouvelle branche numérotée <em>x</em>.90 deviendra la nouvelle branche de développement. De cette branche éclora tous les six mois une version de développement. Ces versions pourront casser l’API, les thèmes, etc. Bien sûr, cela ne signifie pas que l’API sera cassée à chaque fois. Les développeurs GTK+ éviteront au maximum de casser le fonctionnement existant ; et, les rares fois où ils le feront, ils communiqueront dessus. En d’autres termes, cette branche de développement suivra la logique de développement actuelle de GTK+ 3.</p>
<p>Les développeurs d’applications tierces ne sont pas encouragés à utiliser ces versions (mais peuvent le faire, en acceptant le prix d’un travail de maintenance plus élevé). En revanche, on s’attend à ce que les applications <em>core</em> du projet GNOME, bien plus proches de GTK+ et de ses évolutions, se basent sur ces versions de développement et profitent ainsi des dernières nouveautés.</p>
<p>Tout cela peut mieux se comprendre par ce schéma d’exemple :</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67746b2e6f72672f77702d636f6e74656e742f626c6f67732e6469722f3131392f66696c65732f323031362f30382f67746b2d76657273696f6e696e672d736368656d652d312e706e67/gtk-versioning-scheme-1.png" alt="The new versioning scheme" title="Source : https://blog.gtk.org/wp-content/blogs.dir/119/files/2016/08/gtk-versioning-scheme-1.png"></p>
<h3 id="gstreamer">GStreamer</h3>
<h4 id="la-compilation-de-gstreamer-bientôt-confiée-à-meson-plutôt-que-les-autotools">La compilation de GStreamer bientôt confiée à Meson plutôt que les Autotools</h4>
<p>Jusqu’à présent le projet GStreamer utilisait la suite d’outils de compilation du projet GNU nommée <a href="https://fr.wikipedia.org/wiki/Autotools" title="Définition Wikipédia">Autotools</a>, créée dans les années 80.<br><a href="http://nirbheek.in/">Nirbheek Chauhan</a> et <a href="https://twitter.com/tp_muller">Tim‐Philipp Müller</a>, pour le compte de Centricular, travaillent depuis quelques mois à utiliser un autre outil : <a href="https://github.com/mesonbuild/meson/">Meson</a>. Celui‐ci s’avère prometteur en ce qu’il permet de raccourcir drastiquement le temps de compilation : d’un facteur 2,5 sur GNU/Linux et d’un facteur 10 sur Windows ! Les tests se poursuivent sur l’ensemble des plates‐formes prises en charge par GStreamer : GNU/Linux, Mac OS X, Windows, iOS et Android.<br>
Dans son <a href="http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html">billet</a>, Nirbheek Chauhan semble aussi enthousiaste à l’égard de Meson que dépité à l’égard d’Autotools qu’il évoque en ces termes : « Appeler Autotools le X.Org des outils de compilation relève de la flatterie. C’est juste un outil horrible. Nous devons vraiment consacrer du temps à trouver quelque chose qui travaille pour nous plutôt que contre nous. »<br>
Emmanuele Bassi y est également allé de <a href="https://www.bassi.io/articles/2016/06/09/experiments-in-meson/">son rapport d’expérience</a>, et <a href="//linuxfr.org/news/gnome-3-22-a-land-far-far-away#pitivi">Pitivi</a> 0.97 a sauté le pas.<br>
Vous pouvez regarder <a href="https://media.ccc.de/v/44-making_your_gnome_app_compile_24x_faster">la conférence donnée au dernier GUADEC sur le sujet par Nirbheek Chauhan</a>.</p>
<h4 id="oxydation-de-gstreamer">Oxydation de GStreamer</h4>
<p>Décidément la rouille (<em>rust</em>, en anglais) corrode tout : après Firefox, voici venu le tour de GStreamer !<br><a href="https://coaxion.net/">Sebastian Dröge (alias <em>slomo</em>)</a> (Centricular), à l’occasion du <em>GStreamer Spring Hackfest 2016</em>, a travaillé avec <a href="http://luisbg.blogalia.com/">Luis de Bethencourt</a> (Samsung) à permettre de lier le code <a href="https://fr.wikipedia.org/wiki/C_%28langage%29"><em>C</em></a> de <a href="https://fr.wikipedia.org/wiki/GStreamer" title="Définition Wikipédia">GStreamer</a> avec du code <a href="https://fr.wikipedia.org/wiki/Rust_%28langage%29">Rust</a> (lire <a href="https://coaxion.net/blog/2016/05/writing-gstreamer-plugins-and-elements-in-rust/"><em>ce billet</em></a>). Selon lui, dans un premier temps, des composants comme les analyseurs et les (dé)multiplexeurs gagneraient à être écrits en Rust compte tenu de leur complexité et de leur exposition à des données de tout genre et de toute provenance (parfois non garantie). Plus tard, des parts plus importantes du code de GStreamer pourraient également être réécrites en Rust.</p>
<h2 id="intégration-dans-les-distributions">Intégration dans les distributions</h2>
<p>GNOME 3.22 sera intégré dans <a href="https://fedoraproject.org/wiki/Releases/25/ChangeSet">Fedora 25</a> prévue pour <a href="https://fedoraproject.org/wiki/Releases/25/Schedule">novembre 2016</a>, <a href="https://archlinux.fr/">Arch Linux</a>, <a href="https://fr.wikipedia.org/wiki/Ubuntu_GNOME">Ubuntu GNOME</a> 17.04, <a href="https://www.0d.be/debian/debian-gnome-3.22-status.html">Debian</a> (cette version devrait logiquement être proposée dans <a href="https://wiki.debian.org/fr/DebianStretch">Debian 9 <em>Stretch</em></a>), ainsi que dans un certain nombre d’<a href="https://en.wikipedia.org/wiki/Comparison_of_Linux_distributions#Technical">autres distributions GNU/Linux</a>.</p>
<p>Par ailleurs, comment ne pas signaler que, peu après la parution de GNOME 3.20, Gedit a finalement été doté d’<a href="https://blogs.gnome.org/nacho/2016/04/05/gedit-3-20-1-for-windows/">une nouvelle version pour systèmes Microsoft Windows</a> ? La 3.20.1 pour Windows 64 bits succède donc à la 2.30 pour Windows 32 bits !</p>
<h2 id="vitalité-du-projet">Vitalité du projet</h2>
<p>Notons tout d’abord <a href="https://csorianognome.wordpress.com/2016/05/04/nautilus-gtk-status-1-year-of-progress/">le <em>satisfecit</em> donné par un des développeurs de <em>Fichiers</em> concernant la petite équipe de développement qui s’est formée depuis un an et demi</a> autour de ce composant majeur de notre environnement de bureau favori et qui revient de loin, semble‐t‐il, pour le coup.</p>
<p>Voyons ensuite <a href="https://www.bassi.io/articles/2016/05/06/who-wrote-gtk-3-20/">les statistiques de développement de la précédente version (3.20) de GTK+ présentées par Emmanuele Bassi</a> (qui avait déjà fait le point à l’occasion de la version 3.18 en <a href="https://www.bassi.io/articles/2015/09/15/who-wrote-gtk-3-18/">deux</a> <a href="https://www.bassi.io/articles/2015/09/16/who-wrote-gtk-reprise/">billets</a>). Au passage, on se rend mieux compte du travail qu’a représenté la refonte du « thémage » avec le CSS (le nombre de lignes de code ajoutées et supprimées atteint respectivement 158 427 et 117 823 dans la version 3.20 de GTK+, contre 78 676 et 54 508 dans la version précédente).</p>
<p>Ce billet liste <a href="http://www.gnomelibre.fr/2016/05/liste-des-projets-acceptes-pour-le-google-summer-of-code-2016/">les projets retenus</a> pour le <a href="https://fr.wikipedia.org/wiki/Google_Summer_of_Code" title="Google Summer of Code"><em>Google Summer of Code</em></a> <em>2016</em>.</p>
<p>À l’occasion du <em>GNOME Asia Summit 2016</em>, Tobias Mueller [<a href="https://blogs.gnome.org/muelli/"><em>blogue</em></a>] est revenu sur <a href="https://muelli.cryptobitch.de/paper/2016-GNOME.Asia-Summit-Five-years-of-GNOME-3-web.pdf">les cinq ans de GNOME 3</a>.</p>
<h2 id="autour-de-gnome">Autour de GNOME</h2>
<h3 id="pitivi">Pitivi</h3>
<p>Les versions 0.96 et 0.97 de <a href="https://fr.wikipedia.org/wiki/Pitivi">Pitivi</a>, le logiciel de montage vidéo non linéaire libre, puissant et intuitif, qui partage les technologies du bureau GNOME (la boîte à outils graphiques GTK+, le moteur multimédia <a href="https://fr.wikipedia.org/wiki/GStreamer" title="Définition Wikipédia">GStreamer</a>) et respecte ses <a href="https://fr.wikipedia.org/wiki/Bonnes_pratiques_pour_l'IHM">bonnes pratiques pour l’IHM</a> (énoncées <a href="https://developer.gnome.org/hig/stable/" title="Human Interface Guidelines"><em>ici</em></a>), sont sorties durant ce cycle de développement (respectivement les 30 juin et 8 août 2016). Si votre distribution ne vous propose pas encore cette version, vous pouvez <a href="http://pitivi.org/?go=download">récupérer un paquet </a><a href="//linuxfr.org/news/gnome-3-22-a-land-far-far-away#flatpak-anciennement-xdg-app">Flatpak</a> de cette dernière version sur le site officiel du projet qui propose également un canal <em>nightly</em>.</p>
<h3 id="libreoffice-et-firefox">LibreOffice et Firefox</h3>
<p>La version 5.2 de <a href="https://fr.wikipedia.org/wiki/LibreOffice">LibreOffice</a> (sortie le 3 août 2016), la suite bureautique phare du monde libre, améliore son intégration graphique dans un environnement GTK+ (billets de blogue <a href="http://caolanm.blogspot.fr/2016/02/current-libreoffice-native-gtk3-elements.html"><em>un</em></a> et <a href="http://caolanm.blogspot.fr/2016/02/native-gtk3-menubar-in-libreoffice.html"><em>deux</em></a>).</p>
<p>En passant à la version 46 (sortie le 26 avril 2016, voir <a href="//linuxfr.org/news/firefox-46-version-suedee">notre dépêche</a>), Firefox, notre navigateur préféré, embrasse GTK+ 3 (sous réserve des choix faits à la compilation par votre distribution).</p>
<h3 id="shotwell-et-geary">Shotwell et Geary</h3>
<p>Bonne nouvelle : deux logiciels orphelins depuis l’arrêt de la fondation <a href="https://fr.wikipedia.org/wiki/Yorba" title="Définition Wikipédia">Yorba</a> en novembre 2015 ont successivement retrouvé un foyer.</p>
<p>Il s’agit tout d’abord du logiciel de gestion de photos personnelles <a href="https://fr.wikipedia.org/wiki/Shotwell" title="Définition Wikipédia">Shotwell</a>, pour lequel <a href="https://mail.gnome.org/archives/shotwell-list/2016-April/msg00000.html">Jens Georg a proposé de reprendre les rênes du projet</a> à compter de la version 0.22.1 parue le 15 avril 2016 ! Du coup, une version 0.23 est sortie quelques jours après.</p>
<p>Il s’agit ensuite du logiciel de messagerie <a href="https://fr.wikipedia.org/wiki/Geary_(logiciel)">Geary</a>, pour lequel <a href="https://mail.gnome.org/archives/geary-list/2016-March/msg00002.html">Michael Gratton s’est également manifesté</a> et a publié <a href="http://www.gnomelibre.fr/2016/05/sortie-de-geary-0-11-0">la version 0.11.0 le 15 mai 2016</a>, ainsi que deux versions mineures 0.11.1 et 0.11.2.</p>
<h3 id="systemd-manager">Systemd Manager</h3>
<p><em>Systemd Manager</em> est un tout jeune logiciel (son développement a débuté en novembre 2015) repéré par Okki qui en a fait <a href="http://www.gnomelibre.fr/2016/05/sortie-de-systemd-manager-0-4-5/">un billet de présentation</a>. Ce logiciel, qui permet, entre autres, de démarrer et arrêter graphiquement les différents services gérés par <em>systemd</em>, est développé principalement par Michael Murphy, alias <em>mmstick</em>, qui semble fan de <a href="https://fr.wikipedia.org/wiki/Rust_%28langage%29">Rust</a> (il contribue également à <a href="//linuxfr.org/users/tankey/journaux/redox-os">Redox OS</a>) et <a href="https://fr.wikipedia.org/wiki/GTK%2B">GTK+ 3</a> pour ses différents projets logiciels, dont celui‐ci :<br><img src="//img.linuxfr.org/img/68747470733a2f2f6769746875622e636f6d2f6d6d737469636b2f73797374656d642d6d616e616765722f7261772f6d61737465722f73637265656e73686f742d73657276696365732e706e67/screenshot-services.png" alt="Capture d’écran de systemd-manager" title="Source : https://github.com/mmstick/systemd-manager/raw/master/screenshot-services.png"></p>
<h3 id="guadec-2016--2017">GUADEC 2016 & 2017</h3>
<p>Le GUADEC (<em>GNOME Users And Developers European Conference</em>), Conférence européenne annuelle des utilisateurs et développeurs GNOME, pour les francophones.</p>
<p>L’<a href="https://2016.guadec.org">édition 2016</a> a eu lieu à Karlsruhe, en Allemagne, du 12 au 17 août 2016 :</p>
<ul>
<li>
<a href="https://media.ccc.de/c/guadec2016">conférences enregistrées</a> ;</li>
<li>
<a href="//linuxfr.org/users/jehan/journaux/compte-rendu-de-guadec-2016">compte rendu de Jehan</a> ;</li>
<li>
<a href="https://www.gnomelibre.fr/2016/09/guadec-2016">compte rendu de <em>GNOME libre</em></a>.</li>
</ul><p>L’<a href="https://www.gnome.org/news/2016/09/guadec-2017">édition 2017, devrait se dérouler en été à Manchester, en Angleterre</a>.</p></div><div><a href="https://linuxfr.org/news/gnome-3-22-karlsruhe-a-land-far-far-away.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108684/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/gnome-3-22-karlsruhe-a-land-far-far-away#comments">ouvrir dans le navigateur</a>
</p>
antistressDavy DefaudM5oulEricJehanZeroHeureJiehongLaurent PointecouteauLucas4fagesBenoît Sibaudpalm123AnonymeolivierwebguitouAdrien DorsazYves Bourguignonjcr83ff9097esdeemEmmanuelPKekunjhttps://linuxfr.org/nodes/108684/comments.atomtag:linuxfr.org,2005:Diary/331872012-09-28T12:25:42+02:002012-09-30T18:41:37+02:00pkgconf: un pkg-config qui ne se mord pas la queue<p>Depuis la version 0.26, <a href="http://www.freedesktop.org/wiki/Software/pkg-config">pkg-config</a> utilise glib2, très bien, pourquoi pas…</p>
<p>Là où ça se complique, c'est que : les versions précédentes de pkg-config embarquaient les morceaux de la glib1 qui étaient utilisés afin d'éviter une dépendance externe, la version 0.26 - elle - dépend de la glib2 uniquement en externe, rendant du coup impossible la compilation <em>from scratch</em> sans horribles <em>hacks</em>.</p>
<p>Bah oui, pkg-config dépend de glib2 pour se compiler et glib2 dépend de pkg-config qui dépend de glib2 qui dépend de pkg-config qui dépend de…</p>
<p>Du coup, certains ont pondu : <a href="http://sourceforge.net/projects/pkgconfiglite/">http://sourceforge.net/projects/pkgconfiglite/</a> et le dev de pkg-config a ajouté un switch permettant en 0.27 d'utiliser une version embarquée de glib2 : <br /><a href="http://cgit.freedesktop.org/pkg-config/commit/?id=c74da521af566bc208ff9a2da3e43634817f73d5">http://cgit.freedesktop.org/pkg-config/commit/?id=c74da521af566bc208ff9a2da3e43634817f73d5</a></p>
<p>Pour pallier ce problème, plusieurs initiatives de développement d'alternative à pkg-config ont vu le jour. En particulier, <a href="https://github.com/pkgconf/pkgconf">pkgconf</a>, cette version a plusieurs mérites :</p>
<ul><li>0 dépendances : pkg-config devient un élément clef d'une chaîne de compilation ; faire en sorte qu'elle ait le moins de dépendances et de complexité permet de simplifier la vie des gens ayant besoin de créer un système "<em>from scratch</em>" (sans dépendance, le nombre de lignes de code est pourtant similaire)</li>
<li><em>Test driven</em> : le développement de pkgconf est "<em>test driven</em>", à chaque fois qu'une anomalie est remontée, un jeu de test est ajouté pour éviter le maximum de régression possible. L'ajout de fonctionnalité ne peut se faire que si des fichiers de test ont été ajoutés d'abord.</li>
<li>100% compatible avec pkg-config, toutes les incompatibilités doivent être corrigées si il y en a encore, même les idioties de pkg-config ont été ajoutées, un gros travail a été fait pour aussi permettre aux scripts de configure "idiot" de fonctionner avec pkgconf de la même manière qu'avec pkg-config (par exemple beaucoup de scripts cherchent les espaces dans la sortie de pkg-config, etc.)</li>
<li>Rapide, pkgconf est plus rapide que pkg-config, ce qui ne semble pas très important de prim'abord, mais le devient rapidement lorsque que vous avez un programme un peu conséquent faisant des centaines d'appels à pkg-config dans sa chaîne de compilation.</li>
<li>Très ouvert : il est très simple de proposer des idées ou des patchs ; c'est en général pris en compte très rapidement, mais attention, si vos contributions sont appréciées, vous risquez rapidement de devenir développeur officiel du projet !</li>
<li>Des idées folles pour l'avenir :) ( <a href="https://github.com/pkgconf/pkgconf/wiki/Roadmap">https://github.com/pkgconf/pkgconf/wiki/Roadmap</a> )</li>
<li>Une jolie licence BSD :)</li>
</ul><p>Beaucoup de projets ont déjà adoptés pkgconf :</p>
<ul><li><a href="http://www.FreeBSD.org">FreeBSD</a> : pkg-config a été supprimé totalement de l'arbre des ports et remplacé par pkgconf</li>
<li><a href="http://www.alpinelinux.org">Alpine</a> : - pkg-config a été supprimé et remplacé par pkgconf</li>
<li><a href="http://www.gentoo.org">Gentoo</a> : (<a href="http://packages.gentoo.org/package/dev-util/pkgconf">http://packages.gentoo.org/package/dev-util/pkgconf</a>), Disponible en alternative à pkg-config</li>
<li><a href="http://www.funtoo.org">Funtoo</a> : utilise uniquement pkgconf</li>
<li><a href="http://www.archlinux.org">ArchLinux</a> : Disponible via AUR (<a href="https://aur.archlinux.org/packages.php?ID=60768">https://aur.archlinux.org/packages.php?ID=60768</a>).</li>
<li><a href="https://github.com/rofl0r/sabotage">Sabotage</a> : utilise uniquement pkgconf</li>
</ul><p>Certainement d'autres, mais personne ne nous l'a dit :)<br />
Vous pouvez venir discuter de pkgconf sur irc : #pkgconf sur freenode.</p><div><a href="https://linuxfr.org/users/grom/journaux/pkgconf-un-pkg-config-qui-ne-se-mord-pas-la-queue.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/95783/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/grom/journaux/pkgconf-un-pkg-config-qui-ne-se-mord-pas-la-queue#comments">ouvrir dans le navigateur</a>
</p>
Bapthttps://linuxfr.org/nodes/95783/comments.atomtag:linuxfr.org,2005:Post/310102012-02-19T22:56:52+01:002012-02-19T22:56:52+01:00Versions minimales requises pour bibliothèques dans les dépendances<p>Bonjour,</p>
<p>J'espère ne pas poser de question qui serait super simple à résoudre par google, mais j'avoue que je ne sais pas trop quoi chercher.</p>
<p>Alors voilà mon souci : j'ai commencé un petit projet (un jeu de tarot) en Vala, et je viens, avec une joie indicible, de commencer à mettre tous les fichiers pour les autotools.</p>
<p>Dans le fichier configure.ac (et j'imagine qu'il y a le même genre de choses quand on veut proposer des paquets pour des distribs), il faut préciser les bibliothèques requises, et leurs version, ce qui donne en l'occurrence : </p>
<pre>
<code>pkg_modules="gtk+-3.0 >= 3.2.0 gee-1.0 >= 0.6.0 glib-2.0 >= 2.30.0 "
</code>
</pre>
<p>Alors, voilà mon dilemme : quels numéros de version mettre ? Là, j'ai fait un peu au pifomètre (en prenant les numéros de version que j'avais et en mettant le dernier numéro à 0) mais je me demande ce qu'on est censé faire pour que ce soit un peu propre ?</p>
<p>Notamment, je pense qu'il y a deux approches : mettre la version que j'ai, en me disant que «là au moins je suis sûre que ça marche» (mais du coup ça va pas vouloir compiler chez des gens chez qui ça marcherait pourtant), ou mettre des versions plus basses, au risque qu'il y ait des soucis chez des gens ? </p>
<p>Idéalement, je pourrais regarder quand ont été implémentées toutes les fonctions que j'utilise, mais même si j'ai du temps libre, bof, quoi. Est-ce qu'il y aurait des outils qui feraient ça automatiquement ?</p><div><a href="https://linuxfr.org/forums/programmationautre/posts/versions-minimales-requises-pour-bibliotheques-dans-les-dependances.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/89557/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmationautre/posts/versions-minimales-requises-pour-bibliotheques-dans-les-dependances#comments">ouvrir dans le navigateur</a>
</p>
Lizzie Crowdaggerhttps://linuxfr.org/nodes/89557/comments.atom