Syndiquer le contenu
Mis à jour : il y a 18 heures 46 min

Open Source Seeds : les graines de tomates libres

28 août, 2017 - 23:42

Les graines que l’on plante aujourd’hui sont contrôlées en très large majorité par une poignée de grosses entreprises (Monsanto, Bayer, Syngenta…) qui font tout pour empêcher la réutilisation de ces graines : brevets, graines hybrides ou stériles, donc impossible à replanter… En plus de coûter cher aux agriculteurs, cela freine le développement dans certains pays et nuit à la biodiversité.

Une nouvelle initiative allemande, Open Source Seeds, veut contrer ce modèle avec des graines distribuées sous la Licence Semence Libre :

La semence peut être reproduite sans limitation, vendue, donnée ou même utilisée dans le processus de sélection de nouvelles variétés. La licence donne aux nouveaux utilisateurs les mêmes droits que leurs précédents détenteurs.

Dans la construction de cette licence, le groupe de travail d’Agrecol (Association for AgriCulture and Ecology in Africa, Asia, Latin America and Eastern Europe) s’est inspiré de la GPL, des licences Creative Commons et a même intégré le principe de copyleft — la licence inclut donc une provision pour transfert de matériel génétique !

Pour l’instant, seules sont disponibles des graines de tomates cerises, nommées Sunviva, et une graine de blé est en développement.

Comment soutenir le projet ? En plantant des graines, en partageant les graines, en faisant goûter ses tomates et en diffusant l’information !

Un site allemand, culinaris-saatgut.de, permet de commander les graines pour les faire livrer en France (4,17 € + 4,00 € de frais de port, soit 8,17 € au total les douze graines).

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 35 de l’année 2017

26 août, 2017 - 19:40

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 12 événements (0 en Belgique, 11 en France, 0 au Luxembourg, 1 au Québec, 0 en Suisse et 0 en Tunisie) est en seconde partie de dépêche.

Sommaire [QC Montréal] Montréal Drupal Meetup - Le mardi 29 août 2017 de 18h00 à 21h00.

Bonjour à tous,
Pour cette rencontre qui sonne la fin des vacances, nous vous proposons une rencontre chez Evolving Web. En plus du réseautage habituel, une présentation sur Docker d’une demi-heure sera réalisé. Des boissons seront aussi proposées pour vous désaltérer.
Rendez-vous le mardi 29 août à 18h :-)

[FR Dijon] Rencontre des utilisateurs et des contributeurs de cartographie libre OpenStreetMap - Le mardi 29 août 2017 de 20h30 à 23h30.

OpenStreetMap crée et fournit des données géographiques libres, telles que des cartes routières ou cyclables, à quiconque en aura besoin.

Cet outil est né parce que la plupart des cartes que vous pensez libres ont des restrictions légales ou techniques qui nous empêchent de les utiliser de façon créative, productive ou innovante.

Les contributeurs OpenStreetMap (OSM) de Dijon et de sa région se rencontrent régulièrement et chacun peut s'inviter et participer.

Ces rencontres permettent d'ajouter des données récoltées sur place ou avant la rencontre. Elles permettent également de partager connaissances et outils.

La prochaine rencontre des contributeurs de la région a pour thème "petites contributions et échanges de bonnes pratiques", elle aura lieu le mardi 29 août à partir de 20h30 au bar L'Annexe au 47 rue Devosge à Dijon.

Venez nombreux, enfin pas trop quand même.

[FR Toulouse] Rencontre Tetalab - Le mercredi 30 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[FR Challans] Permanence Linux - Le jeudi 31 août 2017 de 18h00 à 20h00.

Chaque dernier jeudi du mois, Linux Challans vous donne rendez-vous à l'Albanera Café, 17 rue du Général Leclerc 85300 Challans.

Nous vous proposons lors de ces rendez-vous mensuels d'échanger autour du Libre, des conseils ou une assistance technique.

Vous pouvez venir pour vous faire aider, ou aider, à installer et paramétrer une distribution GNU/Linux de votre choix ou des logiciels libres sur votre ordinateur.

Recommandations

  • Sauvegardez vos données avant de venir.
  • Libérez de la place sur le disque dur (20 Go minimum) et défragmentez Windows si vous voulez le conserver.
  • Nous prévenir de votre passage via la messagerie.

Vous pouvez aussi venir pour une première prise d'informations et de contacts.

Nous vous attendons toujours plus nombreux !

[FR Paris] Soirée de Contribution au Libre - Le jeudi 31 août 2017 de 19h30 à 22h30.

Parinux propose aux utilisateurs de logiciels libres de se réunir régulièrement afin de contribuer à des projets libres. En effet, un logiciel libre est souvent porté par une communauté de bénévoles et dépend d'eux pour que le logiciel évolue.

Nous nous réunissons donc tous les dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies).

Vous aurez très probablement besoin d'un ordinateur portable, mais électricité et réseau fournis.

En cas de difficulté, vous pouvez joindre un des responsables de la soirée, Emmanuel Seyman (emmanuel (at) seyman.fr), Paul Marques Mota mota (at) parinux.org, ou Magali Garnero (Bookynette) tresorier (at) parinux.org.

Pour obtenir le code d'entrée de la porte cochère, envoyez un mail au responsable.

On peut amener de quoi se restaurer (Franprix, 8 rue du Chemin Vert, ferme à 22h)

Regazouillez sur Twitter - Wiki des soirées

Programme non exhaustif

  • Fedora (sa traduction)
  • Parinux, ses bugs et son infrastructure
  • April, … y a toujours quelque chose à faire
  • Open Food Facts/ Open Beauty Facts, sa base de données, ses contributeurs, sa roadmap
  • Schema racktables, son code
  • Agenda du Libre, mise à jour et amélioration du code
  • Ubuntu-Fr, son orga, ses événements
  • En vente libre, maintenance et commandes
  • Open street map, une fois par mois
  • Linux-Fr sait faire
  • en vente libre

tout nouveau projet est le bienvenu.

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 2 septembre 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 2 septembre 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR La Couronne] Permanence - accueil public - Le samedi 2 septembre 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[FR Aix-en-Provence] Samedi Libre - Le samedi 2 septembre 2017 de 10h00 à 18h00.

Ces Samedis Libres sont organisés par l'Axul en collaboration avec plusieurs associations de logiciels libres des Bouches-du-Rhône (et souvent du Var).

Ils proposent des présentations générales et une aide technique pour le dépannage et la mise à jour d'ordinateurs avec des logiciels libres. Ils présentent aussi des démonstrations de matériels libres.

Des informations sont disponibles sur la Culture Libre (OpenStreetMap, Wikipedia…).

NOUVEAU PROGRAMME :

10h00 - 12h30 : Installations de logiciels libres

12h30 - 13h30 : Déjeuner en commun

13h30 - 18h00 : Atelier à préciser

ET EN PARALLÈLE :

Présentation de livres et de sites Internet consacrés au Libre

Nouvelle démonstration

  • Démonstration d'Inkscape, logiciel de dessin vectoriel professionnel pour Windows, Mac OS X et GNU/Linux

Démonstrations liées aux nouveaux programmes scolaires sur le codage

  • Démonstrations de Pygame, Python, Scratch et Snap.
  • Démonstrations de modèles éducatifs libres écrits en HTML5 pour PC ou tablettes quel que soit le système d'exploitation : exemple du site PhET.
  • Présentation du projet 1, 2, 3… codez !: Enseigner l'informatique à l'école et au collège (Fondation La main à la pâte).
  • Présentations d'autres logiciels éducatifs et/ou scientifiques…

Autres démonstrations

  • Comparaison des environnements GNOME, KDE, LXDE, Xfce et Unity installés avec la même version d'Ubuntu.
  • Distribution Emmabuntüs pour la rénovation d'ordinateurs anciens.
  • Distribution AbulEdu pour les élèves de l'école primaire.
  • Distribution PrimTux pour les élèves de l'école primaire.
  • Distribution Ubuntu Touch sur un téléphone mobile.
  • Distributions Linux installées sur des clefs USB insérées dans des ordinateurs Linux, Windows 7 ou Windows 10.
  • Cohabitation Linux - Windows 10 : le cas d'Ubuntu 64 bits.
  • Évolution du projet pédagogique OLPC (One Laptop per Child) : ordinateur XO-4, tablette OLPC partiellement libérée avec F-Droid et différentes machines avec la plate-forme pédagogique Sugarizer.
  • Démonstration de logiciels scientifiques libres (SageMath…)

NB : Certaines démonstrations pédagogiques sont en libre service. Les autres démonstrations seront normalement possibles toute la journée : elles seront lancées en fonction des souhaits des visiteurs et des disponibilités des spécialistes.

Adresse : Centre Social et Culturel des Amandiers, 8 allée des Amandiers, Jas-de-Bouffan (cliquer sur ce dernier lien pour avoir un plan détaillé).

Ces samedis libres et gratuits sont ouverts à toutes et à tous, débutant(e)s ou expert(e)s GNU/Linux, membres ou non d'associations du Libre. Les locaux sont au rez-de chaussée et accessibles par tous.

Entrée Libre. Tout Public.

Prochain Samedi Libre :

[FR Lille] Village du libre à la Braderie de Lille ! - Du samedi 2 septembre 2017 à 11h00 au dimanche 3 septembre 2017 à 18h00.

La Braderie revient ! Annulée en raison de l'état d'urgence l'année dernière, la Braderie de Lille sera de nouveau au programme !

Le libre sera de la partie et au village associatif avec diverses associations du Libre (FFDN, Mycélium, April, Ubuntu, Chtinux…), Place du vieux Marché aux Chevaux. Cet espace est organisé par le Café Citoyen

Lillois·es ou simples badauds venue pour chiner à la Braderie, passez nous dire bonjour !

[FR Paris] Premier Samedi du Libre - Le samedi 2 septembre 2017 de 14h00 à 18h00.

Chaque premier samedi de chaque mois, des bénévoles des associations du Libre vous accueillent au Carrefour Numérique² de la Cité des sciences et de l'industrie (CSI) lors de l'install party du Premier Samedi du Libre (PSL).

Venez aider ou vous faire aider à installer et paramétrer des logiciels libres et toute distribution GNU/Linux avec les associations d'utilisateurs de FedoraMageiaUbuntu ou Debian, sur netbook, portable, ou tour, PC ou Mac, éventuellement à côté de votre système actuel. Idem si vous avez des difficultés avec GNU/Linux, un périphérique, ou un logiciel libre.

Nous avons besoin de volontaires pour l'accueil et les installations. Il est utile, mais pas obligatoire, de vous inscrire comme parrainé, parrain, ou visiteur sur le site premier-samedi.org en décrivant votre matériel et vos attentes.

  • 12h00-13h45 : déjeuner à la pizzeria Le Verona, 25 avenue Corentin Cariou
  • 14h00-18h00 salle Classe Numérique : install party GNU/Linux, toutes distros
  • 14h00-18h00 salle Atelier : atelier Blender3D du BUG (Blender3D Users Group)
  • 14h00-18h00 salle LivingLab : wikipermanence de l'association Wikimedia
  • 14h00-18h00 salle Studio : atelier Brique Internet/auto-hébergement
  • @Hypra_ solutions libres pour malvoyants et non voyants (si présent)
  • soirée dans un lieu à déterminer sur place, généralement dans un bar avenue Corentin Cariou

Parrainé·e·s

  • pour une installation, venez de préférence dès le début (vers 14h30)
  • sauvegardez sur disque externe, clé usb ou DVD vos fichiers importants
  • supprimez les fichiers et logiciels superflus
  • faites un nettoyage de disque et une défragmentation (utilitaires Windows)
  • n'oubliez pas votre chargeur, vos câbles etc.
  • prenez connaissance de la présentation, du code de conduite, du document présentant les liens et infos utiles et de la décharge
  • apportez un disque dur externe ou une clé usb ou un dvd
  • demandez l'autorisation de prendre des photos
  • n'oubliez pas que nous sommes des bénévoles, pas un S.A.V. ;-)

Parrains et marraines

  • ISOs de nombreuses distros installables par serveur local Parinux et Raspberry-Pi 3
  • apportez une clé usb 3 ou un dvd, des ISOs, de vos distros favorites
  • demandez si l'installé-e a bien sauvegardé ses fichiers
  • demandez si l'installé-e a bien nettoyé, défragmenté, CHKDSKé
  • si possible, autonomisez l'installé-e, expliquez, laissez-lui le clavier
  • prenez connaissance de la présentation, du code de conduite, du document présentant les liens et infos utiles et de la décharge
  • évitez de commencer une installation complète après 16h00
  • préférez une réinstallation propre à une longue mise à jour
  • terminez ce que vous avez commencé ou passez le relais
  • incitez l'installé-e à se rapprocher de l'association dédiée à sa distribution
  • si possible, installez et lancez l'utilitaire Bleachbit.

Entrée libre et gratuite, pour tout public.

Transports

[FR Nantes] Permanence Linux - Le samedi 2 septembre 2017 de 15h00 à 18h00.

Une permanence de Linux Nantes aura lieu de 15 à 18 heure,

dans l’aile du local associatif "B17".

Au cours de ces permanences, nous proposons des conseils, des installations ou des réparations.

Vous pouvez aussi venir pour une première prise d'informations et de contacts.

Pour vous rendre au local B17 :

http://www.linux-nantes.org/Comment-se-rendre-au-local.html

Notre site :

http://www.linux-nantes.org/

Télécharger ce contenu au format Epub

Lire les commentaires

diaspora* 0.7.0.0

25 août, 2017 - 16:19

Samedi 19 août sortait une nouvelle version majeure de diaspora*, le réseau social libre, décentralisé et respectueux de la vie privée. diaspora* 0.7.0.0 arrive un an après la précédente version majeure et contient de nombreux ajouts et améliorations ainsi que de gros travaux de fond.

Framasphère, le pod diaspora* installé par Framasoft dans le cadre de sa campagne « Dégooglisons Internet », a été mis à jour.

Sommaire

Nouvelles fonctionnalités
  • l’éditeur de texte (et ses raccourcis pour insertion de la mise en forme avec Markdown) est disponible dans les commentaires et la messagerie privée ; il permet aussi un aperçu du rendu du message avant soumission (l’édition des messages après envoi n’étant pas encore possible) ;
  • il est aussi disponible dans la version mobile pour les messages, commentaires et messages privés, mais sans la fonctionnalité de prévisualisation ;
  • il est maintenant possible, en mentionnant quelqu’un dans les commentaires, d’attirer son attention par une notification ;
  • la barre d’en‐tête de la version bureau est maintenant adaptative — responsive — et s’adapte aux écrans de toute taille ;
  • d’autres changements mineurs au niveau de l’expérience utilisateur : on peut utiliser Cmd + Entrée (sous Mac) pour poster, la version mobile a également reçu différentes améliorations…

Ces fonctionnalités ont été ajoutées dans diaspora*. Une nouvelle version mineure sort toutes les six semaines, ce qui a amené diaspora* 0.6 jusqu’à la version 0.6.7.0. De nombreux autres changements ont donc été rendus disponibles pendant l’année, avant même la sortie de cette version 0.7. La fondation cite notamment :

  • le rafraîchissement automatique des notifications sans avoir à recharger la page ;
  • le réglage sur la visibilité par défaut des messages publiés. Lors de l’écriture d’un message, l’utilisateur choisit sa visibilité, c’est‐à‐dire avec qui il sera partagé. Auparavant, à chaque nouveau message, l’éditeur de texte réglait la visibilité sur « Tous mes aspects » (tous les contacts) par défaut. Si l’on en souhaitait une différente, il fallait le changer à la main, ce qui amenait souvent à des oublis, notamment pour les comptes publics (type associations, projets…) qui ne postent qu’en visibilité publique. Il est maintenant possible de paramétrer la visibilité par défaut que l’on souhaite, tous, plusieurs ou un aspect, ou bien « Public » ;
  • accès aux flux des messages commentés ou aimés, depuis le flux « Mon activité » ;
  • accès aux flux « Mes aspects » et « Tags suivis » depuis la version mobile ;
  • ajout d’un thème « Sombre » pour nos petits yeux dans le noir ;
  • accès aux pages d’administration depuis la version mobile.
Le travail de fond effectué cette année

Les plus gros changements effectués dans le code de diaspora* concernent le protocole de fédération, permettant aux serveurs (pods) d’échanger entre eux.

Depuis plusieurs années, les développeurs s’efforcent de l’améliorer. La version 0.6 de diaspora* était ainsi venue avec une première version du protocole extraite dans une gem à part, permettant sa réutilisation par des projets tiers et un bien meilleur découplement. La version 0.7 de diaspora* utilise la deuxième version majeure de cette bibliothèque, permettant de nouvelles fonctionnalités et des grosses améliorations de performance. La fondation a publié un billet de blog complet pour annoncer la sortie de cette seconde version majeure. Quatre autres projets utilisent ce protocole (Friendica, RedMatrix devenu Hubzilla, SocialHome et Ganggo), amenant le nombre d’implémentations du protocole à quatre langages (Ruby, la référence maintenue par diaspora*, PHP, Python et Go). Les deux dernières implémentations ne sont pas encore « feature complete ».

Parmi les nouveautés incluses dans cette version 2 arrive la très attendue migration d’un compte d’un serveur à un autre. Le protocole permet maintenant aux serveurs de s’indiquer entre eux qu’un compte a été déplacé, permettant ainsi à l’utilisateur de retrouver tous ses contacts, messages et commentaires de manière transparente. Le procédé est très simple : l’utilisateur exporte une archive contenant toutes ses données depuis le serveur où il est inscrit, puis l’importe sur le nouveau serveur.

Cette fonctionnalité de migration a dû être délivrée en deux temps. En effet, il est d’abord nécessaire de mettre à jour les serveurs vers le nouveau protocole, pour que tous soient capables de comprendre le message « ce compte est déplacé » lorsque les utilisateurs commenceront à l’utiliser. C’est le but de la version 0.7, où l’utilisateur ne peut qu’exporter ses données. La possibilité de les importer viendra probablement avec la version 0.8, qui ne sortira que lorsque la majorité des serveurs auront été mis à jour. Les administrateurs sont pour l’instant très réactifs, 52 pods stables et 11 pods de développement ont été mis à jour vers la version 0.7 dans les 72 h après la sortie.

Les changements à venir

La fonctionnalité de migration au complet est donc attendue pour la prochaine version majeure. On espère aussi voir apparaître la très attendue API. La version 0.7 a vu diaspora* mettre à jour Rails vers la toute dernière version 5.1 qui devrait faciliter cela. Malheureusement, personne ne semble travailler sur la stabilisation de la messagerie instantanée XMPP pour le moment. Il y a en revanche de l’avancée du côté de la gestion des évènements puisque leur support a été intégré dans le protocole, ce qui donne espoir.

Soutenir le développement

Sur sa page dédiée aux donations, la fondation encourage d’abord à soutenir les podmins qui hébergent les serveurs, sans qui le réseau ne serait rien. Elle indique ensuite deux possibilités pour soutenir le développement :

  • si l’on souhaite voir une fonctionnalité développée en particulier, ajouter de l’argent sur son ticket GitHub grâce à BountySource ;
  • si l’on souhaite soutenir les développeurs en général, trois d’entre eux acceptent de recevoir des donations, notamment Senya, qui a réussi sa campagne de financement participatif l’année dernière et qui a travaillé principalement sur la migration de comptes. Il se dit prêt à travailler à temps plein sur diaspora* s’il reçoit au moins 100 euros par semaine, étant freelance. Il est sur Liberapay. Il y a aussi Benjamin Neff a qui l’on doit toute la réécriture du protocole de fédération et qui est aussi release manager (il sort les nouvelles versions et fait beaucoup de revues) et Fla qui est développeur front‐end, gère en partie la communauté et est podmin de https://diaspora-fr.org et de https://framasphere.org. Avoir au moins un développeur à temps plein permettrait évidemment une belle accélération dans l’avancement du projet, même si les volontaires ont beaucoup donné ces dernières semaines pour sortir cette nouvelle version.
Questions ? Réponses !

Si vous avez des questions sur le projet et que vous ne trouvez pas de réponses sur le site officiel ni sur le wiki, vous pouvez venir les poser sur discourse ou même tout simplement sur IRC Freenode, #diaspora ou #diaspora-fr en français. :)

Télécharger ce contenu au format Epub

Lire les commentaires

Les robots simulés débarquent sur le Web

24 août, 2017 - 20:18

Utiliser un logiciel de simulation de robots a longtemps nécessité une grande motivation et beaucoup de temps pour installer des gros logiciels et surtout comprendre comment ils marchent…

Heureusement, le cloud vient à notre rescousse : Robotbenchmark nous propose de programmer des robots en Python sans trop se fatiguer avec une série de petits challenges variés. Du suivi de mur pour un robot à roues à une course de dix mètres pour un petit robot humanoïde, un pendule inversé ou encore un suivi visuel pour un robot chien… Ce site utilise X3DOM (un frontal libre à WebGL pour représenter les robots et leur environnement en 3D dans le navigateur. La simulation, assez réaliste, tourne dans le cloud sur des serveurs GNU/Linux. Notre petit programme en Python qui contrôle notre robot tourne lui dans Firejail, un « bac à sable » de sécurité pour GNU/Linux.

Bon, mon programme Python a fait une minute, 46 secondes et 51 dixièmes sur le sprint du robot humanoïde, c’est bien, mais je ne suis pas le plus fort. J’y retourne…

N. D. M. : Robotbenchmark utilise une infrastructure de simulation qui est un logiciel privateur.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de 0 AD Alpha 22 Venustas

24 août, 2017 - 09:59

0 A.D. signifie Zéro Anno Domini, une année virtuelle antérieure à l’invention du zéro.
La version 0 A.D. alpha 22 est sortie le 27 juillet 2017. Son nom de code est Venustas (vénusté). Cette version dont le nom est lié à la déesse romaine de la beauté marque une fois de plus l’attachement du projet à l’esthétique dans la réalisation de cette œuvre vidéoludique.

0 A.D.: Empires Ascendant est un jeu vidéo de stratégie historique en temps réel (RTS) et en 3D développé par Wildfire Games. C’est un projet libre (code sous licence GNU GPL v2, données sous Creative Commons BY-SA 3.0), au développement ouvert, visant des standards de qualité artistique comparables à ceux de l’industrie, ainsi qu’un grand respect de la réalité historique. Le jeu permet d’incarner douze factions qui ont marqué leur histoire entre les rives de l’Atlantique et la chaîne de l’Himalaya, au cours de la période allant de -500 à -1.

Sommaire

0 A.D.: Empires Ascendant est actuellement en cours de développement, mais une communauté de joueurs conséquente s’est déjà construite autour de ce jeu. Cette dépêche présente la version alpha 22 du projet.

TL;DR

0 A.D. se paye un lifting ! Les principaux changements de cette version concernent en effet la partie artistique, avec une mise à jour totale des unités à pied, militaires et civiles, remodélisées, retexturées et réanimées avec parfois une demi‐douzaine d’animations supplémentaires, des nouvelles textures et changements cosmétiques pour bon nombre de bâtiments, de nouvelles fondations, échafaudages et ruines, des centaines de nouvelles icônes et des nouveaux fonds pour l’écran d’accueil, ainsi que deux nouvelles pistes musicales d’ambiance et de nouveaux sons. Le gameplay n’est cependant pas en reste avec l’introduction des reliques et d’un mode de victoire associé, de l’espionnage et de dix nouvelles cartes. Côté code, le développement s’est surtout concentré sur le débogage et l’amélioration de l’interface et du mode multijoueur.

Venustas apporte les changements suivants : Code Interface utilisateur
  • fond d’écran aléatoire : le menu principal affiche désormais une scène prise aléatoirement parmi plusieurs scènes différentes ;
  • rotation des pistes musicales : le menu principal joue désormais plusieurs pistes musicales prises aléatoirement dans une liste. Ne vous inquiétez pas, « Honor Bound » reste la première musique jouée au lancement du jeu ;) ;
  • gestion de la compatibilité des sauvegardes : on peut désormais voir dans le menu de sauvegarde quelles sauvegardes sont incompatibles avec la version courante du jeu ;
  • curseurs dans l’écran d’options : on peut maintenant définir les valeurs flottantes avec des curseurs ;
  • l’écran de replay affiche les noms des fichiers, on peut ouvrir la surcouche développeur lors d’un revisionnage ;
  • amélioration des infobulles : la vitesse de collecte des travailleurs est désormais affichée, ainsi que la description des ressources ;
  • amélioration de la fenêtre de commerce : celle‐ci contient désormais des boutons d’accès rapide pour le troc ;
  • amélioration des boutons de héros : l’interface utilisateur indique maintenant quels héros sont sur des éléphants ;
  • visualisation des auras : il est maintenant possible d’afficher le périmètre des auras avec un raccourci clavier (par défaut Alt + V). Les auras de guérison sont affichées tout le temps et ont leur propre motif ;
  • désormais la touche Tab active et désactive l’affichage des barres de statut sans nécessiter un appui constant ;
  • nouvelles couleurs pour la minicarte : la nouvelle palette choisie rend les objets plus visibles sur la minicarte
  • les unités sont colorées avec la couleur du joueur d’origine en mode spectateur ;
  • nouveau panneau d’options pour les notifications de messagerie instantanée : les joueurs et spectateurs peuvent maintenant activer et désactiver les notifications d’attaque, de troc et de tributs selon leurs préférences ;
  • nouvelles commandes multijoueur : /kickspecs, /banspecs, /help ;
  • raccourci clavier pour la messagerie instantanée privée (par défaut L) ;
  • le jeu peut être mis en pause par un hôte spectateur ;
  • graphiques dans l’écran de fin de match : l’écran des statistiques de fin de match dispose maintenant d’un onglet « graphiques », qui affiche la progression des scores des joueurs au cours de la partie. 
Gameplay
  • nouveau concept : les reliques. Une relique est une unité capturable dotée d'une ou plusieurs auras donnant chacune un bonus (ou un malus !) au joueur qui le contrôle. Dans 0 A.D. Empires Ascendant Alpha 22, il y a 12 reliques, chacune représentée sous la forme d'un catafalque, un chariot funéraire contenant les restes d'un personnage illustre associé à l'une des factions du jeu. Voici les personnages choisis pour chacune des factions, et les auras associées :

    • Athènes : Solon. Deux auras : Réformes économiques (Economic Reforms) : augmente l'efficacité des ramasseurs autour du chariot; Fortune économique (Economic Fortune) : diminue le coût des technologies économiques.
    • Bretons : Cassivellaunos. Deux auras : Tactiques de guérilla (Guerilla Tactics) : augmente la vitesse et le champ de vision de tous les soldats; Harcèlement de tirailleurs (Skirmisher Harassment) : augmente la portée de tous les lanceurs de javelots.
    • Carthage : Hasdrubal, officier d'intendance et commandant de la cavalerie lourde Une aura : Commandant de la Cavalerie Lourde (Commander of Heavy Cavalry) : la cavalerie de mêlée est plus résistante.
    • Gaulois : Ambiorix. Deux auras : Massacre par embuscade (Ambush Slaughter) : augmente l'attaque et la vitesse de promotion des soldats; Tribut à Rome (Tribute to Rome) : les fermes sont moins efficaces (seule relique « négative » du jeu à l'heure actuelle).
    • Ibères : Mandonius Deux auras : Commandant mercenaire (Mercenary Commander) : diminue le coût des citoyens-soldats mercenaires pour alliés; Sauveur de vies (Saver of Lives) : les soldats sont plus résistants.
    • Macédoine : Philippe V. Une aura : Saccageur des villes (Sacker of Cities) : augmente le butin des unités ennemies tuées et batiments ennemis détruits.
    • Empire maurya : Bindusâra. Deux auras : Consolidateur de l'Empire (Consolidator of the Empire) : augmente l'influence territoriale des bâtiments; Vamba Moriyar (Vamba Moriyar) : augmente la vitesse de capture pour les soldats.
    • Empire achaménide : Artaxerxès II. Une aura : Grand constructeur (Great Builder) : les bâtiments sont moins chers et plus résistants.
    • Égypte : Ptolémée III Évergète (« le bienfaiteur »). Une aura : Grand Libraire (Great Librarian) : les technologies sont moins chères à rechercher.
    • Rome : Lucius Junius Brutus (bonus économique, bonus militaire). Deux auras : Vengeur de Lucretia (Avenger of Lucretia) : les citoyennes sont moins chères et ramassent des ressources plus vite; Fondateur et Défenseur de la République (Founder and Defender of the Republic Aura) : améliore l'armure de toutes les unités.
    • Séleucides : Antiochos Ier Sôter (« le Sauveur »). Trois auras : Fondateur du Temple d'Ezida (Founder of the Ezida Temple) : les temples et technologies du temple sont moins chers; Immigration (Immigration) : augmente la limite maximale de population; Basileus Megas (Basileus Megas) : diminue le coût des éléphants champions.
    • Sparte : Lycurgue. Trois auras : Réformes militaires lycurgienne (Lycurgan Military Reforms) : les citoyens lanciers sont moins chers, les lanciers champions sont un peu moins chers; Pelanors en fer (Iron Pelanors) : augmente l'efficacité des mineurs de métal à proximité.
  • nouveau mode de jeu : à ce nouveau concept s'ajoute le mode Capture The Relic (CTR) : les reliques sont des catafalques neutres disséminés sur la carte. Ceux-ci peuvent être capturés par des unités militaires, comme des armes de siège, mais ne peuvent pas être détruits. Une fois sous le contrôle du joueur, elles peuvent être déplacées. Le joueur qui capture toutes les reliques de la carte et les garde sous son contrôle pendant une durée déterminée à l'avance (20 minutes par défaut, comme pour les merveilles) gagne la partie. Les reliques en possession du joueur sont affichées dans l'interface à côté des héros.

  • modifications du mode SOTF (Survival of the Fittest) : la taille des vagues d'assaut augmente exponentiellement, des héros et des armes de sièges à projectiles peuvent apparaître dans les vagues d'assaut, le dépôt de bois est désactivé dans ce mode

  • introduction d'une option pour désactiver la garnison des héros dans le mode Régicide

  • nouvelles technologies : espionnage et contre-espionnage. La première permet au joueur d'« acheter », pendant 15 secondes, le champ de vision d'une unité prise au hasard parmi les unités de commerce d'un ennemi choisi via le panneau diplomatique. La seconde permet au joueur d'augmenter le coût nécessaire, pour ses ennemis, pour soudoyer ses unités marchandes.

  • bonus d'équipe : les derniers bonus manquants ont été implémentés :

    • Égyptiens : Grenier à blé de la Méditerranée (Breadbasket of the Mediterranean) : tous les alliés gagnent 1 point de nourriture par seconde.
    • Mauryas : Soutien religieux d'Ashoka (Ashoka's Religious Support) : les temples et technologies de temples alliés sont 50 % moins chers et moins long à construire/développer.
    • Perses : La Voie Royale (The Royal Road) : les routes de commerce terrestres alliées génèrent +15 % de revenus supplémentaires
    • Carthaginois : Maîtres marchands (Trademasters) : les routes de commerce internationales alliées génèrent +10 % de revenus supplémentaires
    • Spartiates : Ligue du Péloponnèse (Peloponnesian League) : tous les citoyens lanciers alliés ont +10 % de santé
    • Bretons : Druides_ (Druids) : les guérisseurs alliés sont 20 % moins chers
    • Gaulois : Sagesse druidique (Druidic Wisdom) : les technologies sont recherchées 10 % plus rapidement pour les alliés
    • Romains : Conscription (Conscription) : l'infanterie alliée est entraînée 20 % plus rapidement
    • Macédoniens : Monnaie standardisée (Standardized Currency) : les gains de vente au marché sont 20 % plus élevés
  • auras de héros implémentées :

    • Craterus : Taxiarque (Taxiarchès) : les piquiers dans son champ de vision ont 20 % d'attaque et de capture en plus.
    • Cléopâtre VII : Épouse royale (Consort) : les héros alliés ont +10 % de santé à ses côtés, les héros ennemis, -10%.
    • Caros : Vaillant défenseur (Valiant Defender) : chaque soldat en garnison dans le bâtiment dans lequel il est en garnison tire 75 % de flèches en plus. Battle Fervor : +1 d'armure pour tous les soldats.
    • Indibil : Mobilisation (Mobilization) : tous les soldats voient leur coût diminué de 15 % et leur temps d'entraînement de 20 %.
    • Viriato : Tactiques de guérillas (Guerrilla Tactics) : les soldats se déplacent 20 % plus vite. Butin (Swag) : le butin récolté pour chaque unité tuée et bâtiment détruit est multiplié par 2.
Équilibrage

Alors que les louanges ne cessent de pleuvoir sur l'aspect esthétique du projet, la réussite de celui-ci en tant qu'œuvre ludique est loin de faire l'unanimité. En particulier, nombreux sont ceux qui trouvent le gameplay déséquilibré, et qui regrettent que les changements d'équilibrage d'une version à l'autre ne fassent que déplacer les problèmes, équilibrant le gameplay à un endroit tout en le déséquilibrant à un autre. Plus récemment, certains membres de la communauté des joueurs les plus expérimentés ont accusé le gameplay d'être mal conçu et incohérent, et ont suggéré de s'attaquer à la racine du problème en redéfinissant le game design de 0 A.D.. Ce dernier point, qui semble avoir reçu écho dans la communauté des développeurs, sera détaillé dans la section dédiée.

  • Général

    • les lapins sont plus faciles à tuer (10HP au lieu de 100HP) ;
    • la précision est accrue pour la plupart des unités ;
    • le temps de préparation (période de temps entre le début de l'attaque et le coup porté) est réduit pour les archers, les unités de mêlée ont un temps de préparation ;
    • la cavalerie de mêlée ne priorise plus les armes de siège ;
    • les baleines ne bloquent plus les navires ;
    • les unités ne guérissent plus quand elles sont en garnison dans un navire ;
    • il est possible de commercer avec des joueurs neutres ;
    • les bonus d'équipe des joueurs vaincus disparaissent ;
    • les murs subissent l'influence territoriale comme les autres bâtiments ;
    • changement dans les unités de départ en DM : la cavalerie est toujours celle pouvant être entraînée dans le centre-ville, les Séleucides ont deux fantassins de mêlée et deux tirailleurs au démarrage comme toutes les autres factions.
  • Unités

    • les bonus d'attaque et de santé des femmes celtes ont été supprimés
    • les femmes spartiates sont passives par défaut, leur bonus contre les armes de siège a été remplacé par un bonus d'attaque général de 50 % et leur bonus de santé passe de 80 % à 40 %
    • les chiens de guerre bretons sont un peu plus forts et un peu plus lents à entraîner, et sont limités à 50 unités
    • les frondeurs voient leur attaque contondante divisée par deux, pour les rendre moins forts contre les bâtiments
    • les frondeurs mercenaires carthaginois coûtent 30 points de pierre au lieu de 50
    • chez les Égyptiens, l'archer est désormais entraîné dans la caserne et est remplacé par le javeliniste dans le centre-ville
    • la cavalerie médique légère, redondante avec la milice à cheval, a été retirée de la faction séleucide
    • les épéistes skiritai spartiates voient leur coût d'entraînement augmenter de 20 à 30 points de métal et de 10 à 15 secondes
    • les archers montés sur éléphants sont bien plus forts et plus coûteux
    • les piquiers se déplacent un peu plus rapidement
    • les tirailleurs sont moins forts
    • les lanciers/piquiers champions ont une attaque plus lente
    • chez les Égyptiens, une nouvelle unité de piquiers championne peut être entraînée dans la forteresse
    • les fanatiques nus gaulois ont 1 point d'armure en moins
    • les tirailleurs champions, à pied et à cheval sont moins forts
    • les balistes font des dégâts de zone linéaires (max: 75 perçant, 5 contondant) à toutes les unités ennemies dans un rayon de 8 m autour du point d'impact
    • les balistes et les catapultes sont deux fois plus résistants et voient leur coût passer de 350 à 250 points de pierre
    • les navires incendiaires dépérissent deux fois plus vite, coûtent 50 % plus cher en ressources et en temps d'entraînement
  • Héros

    • les bonus d'attaque des auras de héros sont désormais relatifs (%) plutôt qu'absolus (pts)
    • les héros égyptiens sont entraînés dans le centre-ville
    • les héros dotés d'une épée ont une attaque 33 % plus rapide
    • les héros à cheval coûtent 200 points de nourriture et de bois en plus
    • Chanakya a une aura de guérison comme Cunobelin, et diminue de 20 % le coût et de 50 % le temps de recherche des technologies du bâtiment dans lequel il est en garnison
    • Cunobelin guérit 20 % moins vite et son aura de guérison passe de 60 mètres à 30 mètres de rayon
    • Iphicrates donne un bonus d'armure de +3 au lieu de +1 aux unités de sa formation
    • Periclès diminue de 25 % le coût des temples et ajoute 2pts/s de guérison à la garnison des temples
    • Themistocles diminue de 50 % le coût en métal des navires et augmente de 50 % la vitesse d'entrainement des soldats dans le navire où il est en garnison
    • Boudica donne un bonus de vitesse de 10 % au lieu de 25 %, dans un rayon de 40 mètres
    • Marhabal donne un bonus d'attaque de 30 % à la cavalerie de mêlée au lieu de 20 %
    • Brennus a une aura de pillage de 15 points de métal au lieu de 10 par ennemi tué, mais son rayon est réduit à 60 mètres
    • Demetrius donne 10 % d'attaque, 10 % de portée et 1 point d'armure en plus aux unités de siège (au lieu de +10 % d'attaque contondante et +15 % de portée)
    • Darius donne un bonus de mouvement de 10 % au lieu de 15 %, qui concerne désormais les marchants
    • Ptolémée IV donne un bonus de 40 % de santé aux piquiers dans un rayon réduit à 60 mètres
    • Maximus donne un bonus de +2 d'armure aux unités et aux bâtiments au lieu de +1
    • Brasidas donne un bonus d'attaque de 25 % au lieu de 20 %, mais n'affecte que les citoyens-soldats
    • Leonidas donne un bonus d'attaque de 25 % aux lanciers au lieu de 20 %
  • Structures

    • les Romains peuvent construire la tour de guet
    • le camp retranché romain doit être construit en territoire neutre ou ennemi, et résiste bien mieux à la capture
    • il n'y a plus de coût réduit pour la forteresse macédonienne
    • 'resource trickle' pour les merveilles : une merveille donne 1 point de chaque ressource toutes les 2 secondes au joueur qui la possède
    • les monuments ibères et les piliers d'Ashoka doivent respecter une distance minimale entre eux (supérieure à leur rayon d'aura)
    • les colonies doivent respecter une distance minimale avec les centre-villes
    • les tours sont un peu plus fortes
    • les Égyptiens ne peuvent construire qu'un phare à la fois
    • le chantier naval carthaginois est plus résistant et plus difficile à capturer
    • le coût de la caserne carthaginoise passe à 150 points de bois et celui de la caserne ptolémaïque est ramené à 100 de bois (pour que le coût de toutes les casernes soit de 300 points de ressources au total)
  • Technologies

    • une technologie de promotion des mercenaires au rang avancé refait son apparition
    • le coût des jardins (première technologie d'augmentation de capacité de population des maisons) est réduit de 200 points de bois
    • le coût du métier à tisser est réduit à 150 points de nourriture
Moteur
  • Implémentation de la traversée de NAT : les fonctionnalités STUN et XMPP ICE ont été ajoutées au client, permettant aux joueurs dans le hall d'attente (lobby) d'héberger des matchs même s'ils sont derrière un NAT bloquant. Notons que le code du client STUN vient du projet SuperTuxKart. C'est la deuxième contribution indirecte du projet SuperTuxKart à 0 A.D., après les modifications apportées à tinygettext dans la version alpha 19.
IA
  • Petra gère désormais mieux ses chasseurs, la gestion de la diplomatie a également été améliorée.
  • Petra se débrouille mieux dans les modes Last Man Standing (LMS), Merveille et Régicide.
  • Un début de gestion du mode Capture The Relic (CTR) a été implémenté.
Éditeur
  • ajout de divers outils d'édition des chemins cinématiques

Art

(Kudos à Lordgood et Enrique pour leurs gros commits : https://trac.wildfiregames.com/changeset/18939 et https://trac.wildfiregames.com/changeset/19061 + https://trac.wildfiregames.com/changeset/19095 )

Objets
  • amélioration des modèles de bâtiments carthaginois, séleucides et bretons (notamment structures défensives et quelques bâtiments économiques)
  • améliorations des fondations, échafaudages et ruines de nombreux bâtiments
  • nouvelle texture pour le Grand Stupa (merveille maurya)

  • nouveaux murs et marché carthaginois

  • nouveau dépôt de ressources gaulois
  • bibliothèque ptolémaïque
  • nouveaux murs et forteresse bretons

  • nouveau bélier perse, avec une nouvelle animation plus réaliste

  • l'archer crétois remplace l'archer nubien chez les Égyptiens
  • nouvelle unité pour représenter les reliques : le catafalque

  • nouvelles unités bipèdes et animations : les nouvelles unités de 0 A.D. font leur entrée ! Pour rappel, le département artistique du projet travaille depuis plus de deux ans sur une mise à jour complète des unités humaines présentes dans le jeu. Le but est d'avoir des unités plus jolies et plus réalistes que celles actuellement présentes (qui datent d'il y a 8-9 ans), tant au niveau des modèles que des animations et des textures, et de se rapprocher des standards de l'industrie actuels, et d'utiliser de nouveaux standards d'armature et d'animation pouvant être réutilisés et modifiés, et permettant des animations plus détaillées. Les artistes profitent de ce changement pour ajouter de nouvelles variations aux modèles d'unités (différents types de vêtements), aux textures (versions avec et sans armure), et aux animations. La version alpha 22 de 0 A.D. commence à voir l'aboutissement de cette entreprise gigantesque avec l'inclusion des nouvelles unités bipèdes « debout » (les fantassins, citoyennes et prêtres, qui représentent une douzaine d'armatures différentes dans le jeu actuel, ainsi que les soldats embarqués sur les plateformes des chariots et des éléphants).

Près de 1200 fichiers, toutes catégories confondues (modèles, textures et animations), ont ainsi été ajoutés ou modifiés dans 0 A.D. pour redonner un coup de jeune aux unités bipèdes. La liste des animations s'allonge, avec trois nouvelles animations ('jog', 'capture' et 'pray'), et la séparation de chacune des animations de déplacement ('idle', 'walk', 'jog' et 'run') en deux animations distinctes ('relax' et 'ready'), ce qui rajoute une demie-douzaine d'animations à la vingtaine d'animations communes à la plupart des unités à pied. Les nouvelles animations permettant également d'animer les 'props' (modèles attachés), les capes sur les unités qui en sont dotées sont maintenant animées elles aussi.

Sur le plan technique, ces nouvelles unités sont un peu plus grandes (elles dépassent les anciennes d'une tête environ), et le nombre de triangles des fantassins passe d'environ 500 à environ 800. Fini les seins pyramidaux, les têtes rectangulaires et les faces écrasées !

Mais ce n'est que le début ! Ce travail sur les unités bipèdes n'est pas terminé : certaines animations ne sont pas encore implémentées, notamment celles relatives aux formations, aux armes de sièges et aux fonctionnalités encore absentes du jeu, et beaucoup de variations d'animations, de 'props' et de textures sont encore à créer ou à commiter.

Ce travail de mise à jour ne va bien évidemment pas s'arrêter là, car il reste toute la cavalerie à re-modéliser selon les mêmes standards (en fait toutes les unités « assises » : cavaliers, cornacs, pêcheurs…). Un travail conséquent a déjà été effectué sur cette partie et il n'est pas irréaliste d'espérer une mise à jour complète de la cavalerie de 0 A.D. lors de la prochaine alpha.





  • nouveaux portraits/icônes pour diverses unités, héros, technologies (avec des mises à jour des portraits pour les unités remodélisées) : plusieurs centaines de textures ont ainsi été introduites
  • icône d'aura négative de rendement de ferme, icônes de victoire et de défaite
  • nouvelles textures pour diverses unités, notamment les éléphants séleucides
  • améliorations de diverses textures (terrain et bâtiments) et de divers effets de particules

Cartes
  • dans les cartes générées : il n'y a plus d'arbres entrant en conflit avec une mine
  • nouvelles cartes aléatoires : Plaines africaines (African Plains), Été arctique (Arctic Summer), Havre botswanais (Botswanan Haven), Danubius (Danubius) (avec des attaques aléatoires de soldats gaia), Volcan éteint (Extinct Volcano) (où l'eau monte progressivement), Inde (India), Océan polaire (Polar Sea) (avec attaques de loups régulières), Archipel de rivière (River Archipelago), Lac sauvage (Wild Lake)
  • cartes aléatoires : Prairies Calédoniennes (Caledonian Meadows) et Rouen sont maintenant circulaires, Rouen a été renommée en Ratumacos (Ratumacos)
  • nouvelles escarmouches : L'isthme de Corinthe (Corinthian Isthmus (4))

  • nouveau tutoriel : 0 A.D. se dote officiellement d'un tutoriel. C'est pour l'instant un simple tutoriel économique mettant en scène les Athéniens sur une carte semi-désertique. Celui-ci est accessible via le menu principal.
Musique et son
  • nouveaux sons de mort (une soixantaine au total), son de passage de phase
  • nouveaux sons de sélection pour les navires
  • nouveaux sons de sélection pour les paons
  • deux nouvelles musiques : "Tale of Warriors", une musique d'ambiance générale avec des passages évoquant chacune des civilisations du jeu, et "Sunrise", une musique d'ambiance gauloise. (versions WAV : Tale of Warriors, Sunrise)
  • les listes d'écoute ont été réorganisées, notamment afin de rendre l'ambiance musicale moins répétitive. Une liste d'ambiance commune à toutes les civilisations a été ajoutée : elle contient « Tale of Warriors », « Tavern in the Mist » et « The Road Ahead ». La liste du menu principal contient, outre « Honor Bound », les pistes « An old Warhorse goes to Pasture », « Calm Before the Storm » et « Juno Protect You ». « Highland Mist » a été ajoutée à la liste athénienne, « Cisalpine Gaul » à la liste bretonne, « Harsh Lands Rugged People » vient compléter la liste carthaginoise, et « Harvest Festival » remplace « The Road Ahead » dans la liste gauloise, qui hérite également de « Sunrise ». « Celtica » s'ajoute à la liste ibère, « Elysian Fields » à la liste macédonienne, les pistes « An old Warhorse goes to Pasture » et « Eastern Dreams » viennent allonger la liste maurya. À la liste perse s'ajoutent « Valley of the Nile » et « Land between the two Seas », cette dernière s'ajoutant également à la liste ptolémaïque, aux côtés de « Sands of Time ». Les Romains et les Spartiates se voient gratifiés de « Mediterranean Waves » et « Peaks of Atlas », respectivement. Les listes de bataille restent inchangées et les Séleucides n'ont pas encore de musique spécifique.
Divers
  • la fonctionnalité « fond d'écran aléatoire » décrite plus haut a été inaugurée par l'ajout de deux nouvelles scènes : une armée séleucide et une scène de guerre punique se disputeront désormais la vedette avec l'habituelle scène spartiate dans le fond de votre menu principal
  • les auras ont désormais des noms spécifiques inspirés de l'histoire antique
  • les noms de quelques formations ont été changés : « Colonne Fermée » (« Column Closed ») devient « Marche Forcée » (« Forced March »), « Ligne Fermée » (« Line Closed ») devient « Ordre Fermé » (« Close Order »), « Ligne Ouverte » (« Line Open ») devient « Ordre Ouvert » (« Open Order »).
Communauté
  • introduction d'un tutoriel économique. Celui-ci est accessible via le menu « Learn to Play ».
  • ajout de nombreux nouveaux tests de régression
  • ajout d'une option -autostart-nonvisual permettant de lancer une partie sans affichage (pour tester les IA)
  • démo de cinématique in-game
  • les erreurs de synchronisation sont maintenant affichées dans la sortie JavaScript
Travail sur le game design

Suite à des discussions sur l'équilibrage des factions et des unités dans le jeu, des critiques assez virulentes ont été exprimées par des joueurs expérimentés à l'encontre du gameplay de 0 A.D.. Contrairement aux critiques habituelles ciblant des détails d'équilibrage, celles-ci étaient des critiques de fond, solidement défendues et manifestement issues d'une prise de recul conséquente sur le fonctionnement général du jeu. Celles-ci accusent notamment le gameplay d'être cassé et désordonné, incapable de dépasser le stade du « boom-rush », et d'une simplicité stratégique frustrante comparé à la complexité des choix offerts. D'après les détracteurs, ces problèmes seraient dus non pas à un équilibrage imparfait mais à l'absence totale de Design Document tenant la route. En effet, le Design Document actuel se focalise essentiellement sur le ressenti direct du joueur, ne détaillant les concepts de réalisation que sur les plans purement technique et artistique, sans décomposer de façon méthodique et exhaustive l'aspect ludique du jeu. Des tentatives de Gameplay Design Documents ont été rédigées par des membres de la communauté suite à ces critiques.

Les développeurs se sont montrés réceptifs aux critiques, annonçant qu'ils prendraient en compte les points soulevés et les propositions faites, ce qui a été confirmé dans un communiqué de mai 2017. Le résultat, qui mettra sans doute beaucoup de temps à voir le jour, sera probablement un Gameplay Design Document officiel inspiré des documents communautaires publiés sur les forums.

Quelques exemples de discussions sur le gameplay, pour ceux qui aiment la lecture (en anglais) :
1 2 3 4 5

Performance
  • micro optimisation du shader de l'eau
  • petite optimisation de la recherche de chemin de l'IA
  • optimisation de la fonction « monter la garde »
Conclusion…

Venustas est un gros jalon dans l'histoire de 0 A.D.. Avec la mise à jour des unités et une kyrielle d'embellissements sur presque toutes les aspects artistiques du jeu, 0 A.D. rattrape son retard en termes d'esthétique sur les standards de l'industrie des RTS, et s'impose une fois de plus comme une réalisation exceptionnelle dans le monde des œuvres vidéoludiques libres. Les nouvelles musiques d'ambiance, toujours plus grandioses et épiques, viennent briser le silence musical des quatre dernières alphas. Avec le travail sur les nouvelles technologies, nouvelles cartes, nouveaux concepts et modes de jeu, et la continuation des efforts sur l'amélioration du mode multijoueur, la communauté 0 A.D. montre également qu'elle accorde une importance toujours plus grande à la qualité de l'expérience des joueurs. Cependant, celle-ci est loin d'être aboutie et est régulièrement remise en question au sein de la communauté. Les critiques et réflexions qui en découlent pourraient bien aboutir à une remise à plat des mécanismes de jeu de 0 A.D. dans de futures alphas, dans le but de donner à ce RTS le gameplay cohérent et équilibré dont il a besoin. Grands absents de cette alpha : la musique spécifique à la faction séleucide, que les fans attendent impatiemment depuis l'alpha 16, et l'amélioration du pathfinder courte portée, en continuité des efforts de réécriture du pathfinder longue portée arrivés dans l'alpha 19.

Que peut-on alors espérer de la prochaine version de 0 A.D. ?

  • les nouveaux modèles et animations des unités montées et assises
  • les quelques animations encore manquantes parmi les unités à pied
  • une meilleure lisibilité des graphiques de fin de match dans la fenêtre de résumé
  • des améliorations de l'IA, notamment sur la gestion du mode CTR
  • peut-être des améliorations d'Atlas pour faciliter l'utilisation des chemins cinématiques
  • un nouveau design document pour le gameplay, plus clair, plus précis, plus solide, et peut-être son implémentation avec un jeu plus équilibré (et potentiellement des changements radicaux dans les mécanismes)
  • des améliorations du code réseau et de l'expérience multijoueur
… contribuez !
  • Vous connaissez le C++ ou le JavaScript ? Vous avez des compétences en programmation dans le domaine des jeux 3D ? Aidez à améliorer le code !
  • Vous maîtrisez Blender ? Vous pouvez dessiner des textures, concevoir des modèles et les animer ? Proposez vos embellissements ou vos icônes, animez la faune et les soldats !
  • Vous jouez d'un instrument acoustique ? Vous composez de la musique traditionnelle ou symphonique ? Contactez Omri Lahav et contribuez à la bande originale de 0 A.D. !
  • Vous êtes plus branchés MAO (Musique Assistée par Ordinateur) ? Vous pouvez créer, enregistrer et mixer des sons ? Aidez à donner vie aux cités antiques et aux terres vierges de 0 A.D. !
  • Vous étudiez les langues anciennes ? Vous connaissez la prononciation de mots latins, grecs, hébreu, sanskrits ou gaéliques ? Aidez à donner de la voix aux unités du jeu !
  • Vous êtes passionné d'histoire antique ? Venez discuter sur les forums et proposer vos améliorations en matière de gameplay ou de graphisme !
  • Vous êtes plutôt calé géographie ? Familiarisez-vous avec l'éditeur et concevez des cartes réalistes et amusantes à jouer !
  • Vous parlez plusieurs langues dont l'anglais ? Participez à la traduction et à la documentation !
  • Vous savez compiler un logiciel ? Téléchargez la version SVN et profitez des nouvelles améliorations et des nouveaux bogues avant tout le monde !
  • Vous voulez aider à faire connaître 0 A.D. ? Vous aimez faire de jolies captures d'écran ? Participez à l'élaboration de dépêches de qualitaÿ sur LinuxFr.org ! \o/
Télécharger ce contenu au format Epub

Lire les commentaires

Nouvelles versions logicielles du projet GNU juin et juillet 2017

22 août, 2017 - 10:22

Le projet GNU publie tous les mois une liste de versions logicielles publiées. Jetons‐y un coup d’œil pour découvrir de nouveaux logiciels inconnus (de moi), des infâmes bogues disparus ou les promesses de solutions à tous nos besoins : soit des dizaines de nouvelles versions annoncées allant de la corrective mineure à la version attendue depuis des années ; et l’on va donc parler de acct, auctex, automake, binutils, cgicc, dr-geo, freeipmi, gama, gcc, gdb, glpk, gnuastro, gnucash, gnuhealth, gnuhealth-control, gnupg, gnutls, grep, gsl, guile-cv, guile-gnome, libextractor, libffcall, libgcrypt, libidn2, libmicrohttpd, libtasn1, linux-libre, moe, motti, nano, parallel, screen, taler, texinfo, tramp et unifont.

Sommaire acct-6.6.4 (juillet)

Il s’agit d’une mise à jour mineure de cet outil d’enregistrement des actions sur le système (nom d’utilisateur et processus), pour ajouter --pid sur lastcomm.

auctex-11.91 (juillet)

Ce logiciel extensible permet d’écrire et de formater des fichiers TeX dans GNU Emacs et XEmacs (en gérant de nombreux paquets de macro TeX, dont AMS-TeX, LaTeX, Texinfo, ConTeXt et docTeX [dtx]). Cette version amène un nouveau logo, la gestion de upmendex, l’entrée Glossaries pour générer les glossaires, une amélioration de la fontification des symboles de contrôle, de verbatim et de maths, une nouvelle option TeX-ispell-verb-delimiters, l’ajout et l’analyse de labels, des corrections et des nouveaux paquets LaTeX pris en charge.

automake-1.15.1 (juin)

Cet outil de génération des fichiers Makefile portables (utilisables par make pour compiler des programmes) avait vu sa version précédente 1.15 sortir en janvier 2015. La nouvelle version amène des corrections de bogues (suppression d’avertissements avec Perl 5.22+ et d’erreurs avec Perl 5.26+, suppression de la variable GZIP) et prise en charge de la version Windows du compilateur C d’Intel (icl).

binutils-2.29 (juillet)

La version 2.28 de cet ensemble d’outils de développement logiciel était parue en mars 2017. La version 2.29 apporte principalement la prise en charge de l’ia16 (x86 16 bits). Une version 2.28.1 est aussi parue, mais le journal des modifications ne fournit aucune info.

cgicc-3.2.18 et 3.2.19 (juin et juillet)

Ces versions de la bibliothèque C++ pour écrire des applications CGI apportent quatre corrections de bogues pour la première et on ne sait pas quoi pour la seconde, dont le journal des modifications n’est pas renseigné.

dr-geo-17.07 (juin)

Cette version du logiciel de géométrie dynamique (souvent évoqué sur LinuxFr.org) corrige six bogues.

freeipmi-1.5.6 (juillet)

Ce logiciel implémente l’interface de gestion intelligente de matériel (ou IPMI, Intelligent Platform Management Interface). La version précédente datait de novembre 2016. Cette version amène des clarifications des messages d’erreur, des corrections de documentation, une correction sur une fuite de mémoire et l’utilisation dans ipmi-locate du microcode DMI sysfs s’il est disponible.

gama-1.19 (juillet)

La version précédente de ce logiciel d’ajustement des réseaux géodésiques était parue en août 2016. Cette version corrige un bogue introduit dans la version 1.16.

gcc-6.4.0 (juillet)

Une version de maintenance pour la suite de compilateurs, avec 102 problèmes corrigés, dont la plus importante semble être un changement d’ABI sur ARM pour ne plus avoir de petites énumérations par défaut.

gdb-8.0 (juin)

La nouvelle version du débogueur gdb apporte de nombreuses nouveautés. Les architectures MIPS sous FreeBSD et Synopsys ARC sont maintenant prises en charge. À l’inverse, les architectures Alpha sous FreeBSD et GNU/kFreeBSD ne sont plus prises en charge. On devrait également avoir une bonne prise en compte des registres PKU (Protection Keys for Userspace). Ces derniers, à travers les instructions RDPKRU / WRPKRU, devraient fournir un mécanisme de protection de la mémoire dans les futurs processeurs Intel.

Concernant les langages C++11 et Python, les rvalues sont mieux gérées. En outre, sur Windows, GDB identifie maintenant correctement le nom associé à un fil d’exécution. De plus, on peut enfin donner des commandes avec plus de dix arguments. On notera également que cette nouvelle version peut enregistrer et répéter correctement les commandes rdrand et rdseed.

glpk-4.62 et 4.63 (juin et juillet)

Deux versions ont été publiées pour cette bibliothèque de programmation linéaire en nombres entiers ou en nombres mixtes. La 4.62 amène l’ajout de la technique de bound perturbation, la correction d’un bogue dans la lecture MPS, l’amélioration de la portabilité 64 bits et le remplacement de fonctions non compatibles multi‐fils d’exécution (non thread‐safe) par leur équivalent sûr. La 4.63 apporte une perturbation intelligente des programmes linéaires, l’ajout de la technique long‐step, le changement d’échelle de l’objectif interne, une correction sur glp_time sur msys2 et l’ajout de nouveaux modèles d’exemple.

gnuastro-0.3 (juin)

Cet ensemble d’utilitaires pour l’astronomie a publié sa troisième version, qui est une réécriture complète, avec un nouveau conteneur générique pour les données.

gnucash-2.6.17 (juillet)

Cette version du logiciel de comptabilité corrige de nombreux bogues concernant la modification des options de comptes ayant des transactions, les rapports concernant les devises étrangères, les liens dans le README du dépôt, le registre séparé des transactions, la traduction de devises étrangères, le respect du champ NUM pour le tri personnalisé, une correction sur un plantage en ajoutant un prix existant, une correction sur un plantage au lancement de la version 2.6.16, une faute dans une boîte de dialogue, mais aussi de nouvelles traductions (arabe et turc) et d’autres améliorations (espaces de nommage, time64 mieux géré pour les dates, nouvelle devise, gestion d’un commentaire supplémentaire non standard sur une transaction).

gnuhealth-3.2.0 et 3.2.1 (juillet)

Plusieurs versions sont parues pour ce progiciel libre dans le domaine de la santé. D’après la 3.2.0 qui amène l’intégration de Tryton 4.2, la migration en Python 3, une prise en charge améliorée de WebDAV et du calendrier, des paquets cryptographiques mis à jour, l’ajout d’un lien entre les commandes du labo et les services de santé, une amélioration de l’internationalisation, une mutualisation des variantes linguistiques, un nouveau test code 39, une nouvelle information personnelle prise en charge, la possibilité d’activer et désactiver les parties Patient, Médicament et Services, de nouveaux modules (gestion des urgences et des ambulances, des assurances santé et des prix, la base génétique Uniprot, la signature numérique des commandes du labo, l’intégration des commandes labo dans les services). Et surtout l’ajout de la fédération GNU Health avec un réseau de nœuds hétérogènes (le système d’information sur MongoDB, Thalamus le serveur d’authentification et de messagerie, HMIS, les applications mobiles, les centres de recherche, etc.).

La version 3.2.1 corrige uniquement un souci d’affichage dans la partie commandes labo.

On notera aussi la publication de la version 3.0.4 de gnuhealth-control, l’outil principal de gestion de l’environnement GNU Health (les changements dans ce script livré séparément ne sont pas détaillés).

gnupg-2.1.22 (juillet)

GnuPG est un programme en ligne de commande qui permet de signer, chiffrer et déchiffrer les données et les communications. La principale nouveauté de cette version est la détection et l’utilisation automatique de TOR. L’option --no-use-tor permet de désactiver cette fonctionnalité. On notera également une meilleure prise en charge des serveurs en IPv6 et la possibilité d’utiliser TLS lorsque l’on passe par un serveur mandataire HTTP.

gnutls-3.5.13 et 3.5.14 (juin et juillet)

Cette bibliothèque pour gérer les protocoles SSL, TLS et DTLS connaît une version 3.5.13 (alerte GnuTLS-SA-2017-4) corrigeant divers bogues (sans changement d’API ou d’ABI), concernant le (dé)chiffrement en place AES-GCM sur AArch64, le champ ResponseID qui n’est plus analysé, la tolérance à l’absence de codage temporel DER strict dans les certificats, la migration vers la libtasn1 4.11 et l’utilisation de certificats multiples avec certool --p7-sign. Puis une version 3.5.14, toujours sans changement d’API/ABI, pour la gestion de matériels de gestion de clefs (HSM) demandant une autorisation explicite, avoir un drapeau pour obliger l’authentification via le HSM, éviter les zéros en tête dans les copies d’entiers sur certains HSM ou corriger la découverte OCSP, ainsi qu’une version 3.3.28 de maintenance sur la précédente version stable.

grep-3.1 (juillet)

Une nouvelle version stable de ce programme en ligne de commande de recherche de chaînes de caractères apporte en amélioration les mêmes performances pour [0-9] et [[:digit:]] avec une locale multi‐octet et en changement de comportement le fait que le contexte n’exclut plus les lignes omises en raison de -m (grep "^" -m1 -A1 affiche les deux premières lignes). Et sous Windows, une option --binary (-U) vient remplacer l’heuristique parfois incorrecte de gestion d’entrées‐sorties binaires et l’option --unix-byte-offsets (-u) devient sans effet.

gsl-2.4 (juin)

Cette version de la bibliothèque en C fournissant des outils de calcul numérique en mathématiques appliquées migre la documentation vers Sphinx, rajoute de la constance sur les routines gsl_rstat, corrige des bogues, ajoute du calcul d’intégrales avec IQPACK, des polynômes d’Hermite et des exemples, rend obsolète et remplace quelques routines, etc.

guile-cv-0.1.5 (juillet)

La version précédente de cette bibliothèque de vision par ordinateur pour Guile Scheme était la première publique et la première incluse dans le projet GNU. Cette version apporte des changements d’interface (renommage dark/light par black/white) et de nouvelles interfaces (im-delineate, im-delineate-channel, im-distance-map, im-distance-map-channel, im-canny, im-canny-channel, im-xor et f32vector-xor-at-offset).

guile-gnome-2.16.5 (juin)

Cette version de cette bibliothèque donnant accès en langage Guile aux bibliothèques GNOME est une version de maintenance, compatible avec Guile 2.2.

libextractor-1.4 (juin)

Cette version de cette bibliothèque extrayant les métadonnées des fichiers (qui n’avait pas connu de mises à jour depuis trois ans et demi) amène la gestion d’AppArmor, des PDF via pdfinfo, la migration de Subversion à Git, la compilation avec libexiv 0.26 et la suppression de l’utilisation de l’en‐tête obsolète libtidy.

libffcall-1.13 (juin)

Cette version de cette collection de quatre bibliothèques d’appel de fonctions externes amène un changement de licence (de GPL v2 à GPL v2+), ajoute neuf nouvelles plates‐formes prises en charge, corrige la gestion d’onze plates‐formes, a vérifié la bonne gestion de huit autres plates‐formes et ajoute une fonctionnalité de sécurité pour Linux et FreeBSD en empêchant le pile d’être exécutable.

libgcrypt-1.7.7 et 1.8.0 (juin et juillet)

Le support de la branche 1.6 de cette bibliothèque de cryptographie a expiré à la fin du mois de juin 2017. La branche 1.7 devrait recevoir des mises à jour de sécurité jusqu’à la fin du mois de juin 2019. La version 1.7.7 corrige ainsi deux bogues, l’un dans la gestion de la mémoire sécurisée, l’autre dans la gestion des clefs EdDSA.

La nouvelle version stable de libgcrypt est donc la branche 1.8. Elle présente des API et ABI totalement compatibles avec la branche 1.7. Les principales nouveautés sont l’ajout de la fonction de hachage Blake-2, le chiffrement de type XTS pour les blocs de 16 octets et un meilleur générateur de nombres aléatoires.

libidn2-2.0.3 (juillet)

Cette bibliothèque gère le codage et le décodage des noms de domaine internationalisés suivant les spécifications IDNA 2008 et TR 46 (RFC 5890, 5891, 5892, 5893 et TR 46). Cette version corrige notamment une régression en désactivant par défaut la règle %IDN2_USE_STD3_ASCII_RULES filtrant les caractères non STD3 dans les noms de domaine (comme _443._tcp.example.com) et les IP (comme 1.2.3.4/24), et modernise l’infrastructure de génération gtk-doc.

libmicrohttpd-0.9.55 (juin)

Cette bibliothèque qui évolue visiblement assez vite fournit un micro‐serveur Web en C. Cette version amène diverses corrections, des améliorations sur les connexions reprises, mises à jour upgrade ou sur les Keep-Alive et Close.

libtasn1-4.12 (juin)

La version 4.11 de cette bibliothèque ASN.1 comportait une erreur de version dans le nommage du .so, corrigée en 4.12. Mais les nouveautés viennent donc de la version précédente : un nouveau code d’erreur ASN1_TIME_ENCODING_ERROR, un nouveau drapeau ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME pour le mode strict DER et une vérification de la longueur des noms de variables par le développeur.

linux-libre-4.11.7-gnu et 4.12.3-gnu (juin et juillet)

Le projet vise à publier et maintenir le noyau Linux 100 % libre. Les principaux blocs binaires (blobs) sont présents dans les pilotes graphiques, mais aussi pour l’accélération cryptographique, l’Ethernet ou l’écran tactile, et chaque nouvelle version du noyau amène en général son lot de nouveaux blocs binaires.

moe-1.9 (juillet)

Une nouvelle version pour l’éditeur de texte en console, seize mois après la précédente : lecture récursive des arborescences par défaut, nouveaux raccourcis clavier, plus de caractères UTF-8 décodés, la position du curseur est affichée ajustée pour les tabulations, les commentaires /* */ sont évités dans la recherche de délimitation associée, la recherche inverse a été ajoutée, l’entrée standard n’est lue qu’une fois, la déduplication de lignes est accélérée de 20 %, les noms longs de fichiers sont affichés abrégés, la locale C est utilisée dans Cygwin pour les caractères au‐dessus de 127 et une correction sur le test de g++ dans le configure.

motti-3.1.1 (juin)

Ce jeu de stratégie simple, multijoueur et en réseau n’avait pas connu de version depuis trois ans, et le but de celle‐ci est de le faire compiler proprement.

nano-2.8.5 et 2.8.6 (juin et juillet)

L’éditeur de texte nano a connu deux versions baptisées Farouche et Kekulé, notamment pour permettre une césure différente entre les mots (via --atblanks), pour éviter des plantages, pour corriger divers bogues, pour harmoniser les fichiers rc, pour renommer l’option cut en cutfromcursor, pour permettre les numéros négatifs de ligne et de colonne en ligne de commande, pour éviter les clignotements au redimensionnement de la fenêtre, pour ouvrir les fichiers dans l’ordre demandé en ligne de commande et pour mieux gérer le signal SIGCONT.

::: The iLE88Dj. :jD88888Dj: .LGitE888D.f8GjjjL8888E; .d8888b. 888b 888 888 888 iE :8888Et. .G8888. d88P Y88b 8888b 888 888 888 ;i E888, ,8888, 888 888 88888b 888 888 888 D888, :8888: 888 888Y88b 888 888 888 D888, :8888: 888 88888 888 Y88b888 888 888 D888, :8888: 888 888 888 Y88888 888 888 D888, :8888: Y88b d88P 888 Y8888 Y88b. .d88P 888W, :8888: "Y8888P88 888 Y888 "Y88888P" W88W, :8888: W88W: :8888: 88888b. 8888b. 88888b. .d88b. DGGD: :8888: 888 "88b "88b 888 "88b d88""88b :8888: 888 888 .d888888 888 888 888 888 :W888: 888 888 888 888 888 888 Y88..88P :8888: 888 888 "Y888888 888 888 "Y88P" E888i tW88D Text Editor Homepage parallel-20170622 et 20170722 (juin et juillet)

Cet outil shell permet d’exécuter des tâches en parallèle sur un ou plusieurs ordinateurs. La version 20170622 Manchester autorise le \257 / U+02C9 (macron « ˉ », qui était aussi le nom de la version précédente 20170522) dans la ligne de commande. Rien de nouveau dans la version 20170722 Grenfell (nouvelle version stable), seulement des correctifs et des mises à jour de manuel.

screen-4.6.0 et 4.6.1 (juin et juillet)

Ce logiciel de console virtuelle permet de partager un terminal en plusieurs processus. La version 4.6.0 gère les tables Unicode 9.0, plus de débits différents en série, améliore les espaces de nommage, migre des FIFO aux sockets et débute le défilement arrière à la première ligne d’affichage. La version 4.6.1 apporte l’installation parallélisée et corrige des bogues. (le fichier Changelog est renseigné, mais pas le fichier NEWS qui évoque encore les versions 4.0.x).

taler-0.3.0 (juin)

Cette version de ce système de paiement électronique avec anonymat du client est encore au stade alpha :

  • le protocole d’échange complet est implémenté mais sans connexion avec une banque réelle (uniquement avec leur propre « banque ») ;
  • le portefeuille (pour Chromium/Chrome, Firefox et Opéra) permet le retrait, la dépense et l’actualisation, mais pas le remboursement, la synchronisation ou l’exportation de preuves cryptographiques, et la gestion des erreurs pourrait être insuffisante ;
  • le backend marchand génère des contrats, gère les paiements et leur suivi (implémentations de frontaux disponibles en Python et PHP) ;
  • la banque peut gérer les comptes, permet le retrait de fonds par le portefeuille et recevoir des paiements depuis l’échangeur ;
  • l’auditeur peut vérifier les preuves cryptographiques collectées par le fournisseur de la solution de paiement et calculer les montants attendus, mais il ne vérifie pas encore que la banque a fait les mêmes calculs.

texinfo-6.4 (juin)

Cette nouvelle version du langage de formatage de texte amène des évolutions sur plusieurs outils :

  • texi2any : les noms de section apparaissent avant dans les titres, retour à la numérotation initiale des listes comme dans les versions 4.13 et précédentes, rapidité accrue, des corrections sur le formatage Perl et le retrait de fonctions ne faisant pas ce qui était annoncé ;
  • info : up-line et down-line ne sont plus confinées à un nœud, --all peut être utilisé avec --index-search pour lister les entrées correspondantes, link-style peut être défini pendant l’exécution, une correction sur la désactivation prématurée des couleurs, divers bogues corrigés, une suite de test plus portable, le retrait de la conversion intelligente des fins de ligne « à la Windows » et quelques raccourcis clavier modifiés ;
  • texinfo.tex peut à nouveau générer une page unique vide comme les versions 6.0 et précédentes.
tramp-2.3.2 (juillet)

Cette version du logiciel gérant les accès à des ressources distantes dans Emacs suit le changement de version de l’éditeur couteau suisse (de 23 à 24).

unifont-10.0.01 à 10.0.05 (juin et juillet)

Des nombreuses versions de cette police matricielle couvrant toutes les identifications numériques Unicode BMP ont été publiées, pour suivre Unicode 10.0.0, améliorer les glyphes à largeur triple et quadruple, les émoticônes, l’outil hex2sfd (ASCII hexadécimal vers FontForge), ajouter l’option -P (plan) pour unifontpic, le champ x-offset pour le rendu, ajuster divers glyphes, etc.

Conclusion

Dans la dépêche précédente, la question était « Y a‐t‐il un intérêt à écrire une telle dépêche ? ». À titre personnel, la réponse était oui, et d’après les commentaires, d’autres personnes étaient intéressées. Merci à mathrack pour ses contributions sur cette dépêche. N’hésitez donc pas à participer à sa rédaction et aux dépêches à venir.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Hubzilla 2.6

21 août, 2017 - 08:44

Né en 2012 sous le nom Redmatrix, Hubzilla renaît en 2015 comme un outil pour créer et relier des petits sites communautaires dans une grande communauté globale. Mais son histoire prend sa source dans Friendica, dans le Safeweb de Symantec, dans un CMS oublié et même dans le Collabra de Netscape.
Voilà pourquoi Hubzilla est une plate‐forme décentralisée de partage de contenu et de réseau social. Elle offre des facilités d’utilisation et d’identification et un socle très robuste pour des fonctions de réseau social (interopérable avec Diaspora, GNU-Social, Mastodon et gérant le chiffrement de bout en bout), de partage de fichiers et de photos (accessibles en WebDAV, à la Nextcloud / Owncloud), d’agenda et de serveur de calendrier CDAV, de carnet d’adresses et de serveur de contacts CardDAV et de wiki. De nombreuses extensions sont disponibles, du jeu d’échecs au partage de fichiers pair à pair via Webtorrent…

Hubzilla est publié sous licence MIT et programmé en PHP/MySQL avec prise en charge de PostgreSQL. La version 2.0 avait été publiée en décembre 2016 et n’avait pas fait l’objet d’une dépêche sur LinuxFr.org. Les principales fonctionnalités de la version 2.6 sont détaillées en seconde partie.

Facilités d’utilisation et d’identification Identité nomade

Il est possibile de synchroniser plusieurs copies de son profil et de ses fichiers sur plusieurs serveurs, ou de migrer son profil sur un nouveau serveur, de manière transparente pour tous les autres utilisateurs et indépendante des DNS. C’est la fonctionnalité la plus forte de Hubzilla, rendant les utilisateurs libres vis‐à‐vis des administrateurs de serveurs, notamment en cas de rupture de service.

 Authentification magique

L’authentification est automatique sur tous les nœuds du réseau (type Single Sign On).

Groupes d’accès et listes de contrôle d’accès

La gestion des groupes d’accès et des listes de contrôle d’accès est compatible avec les fonctionnalités précédentes, et à maille fine pour garder un contrôle aussi fin que possible sur ses données.

Les grands changements de cette version

Cette version marque une évolution décisive dans la gestion des passerelles vers les autres réseaux (principalement Diaspora et GNU-social / Mastodon). Voici un résumé des changements les plus importants.

Changements fondamentaux dans les mécanismes de fédération avec des services externes

Il n’y a à présent plus besoin d’avoir plusieurs rôles de serveur pour communiquer avec des réseaux séparés. Il n’y a plus qu’un seul rôle de serveur (« pro ») qui consolide les fonctionnalités de tous les autres. Note : en conséquence, les « niveaux techniques » sont maintenant disponibles pour tous les serveurs. Si vous trouvez l’interface et le choix de fonctionnalités trop simples à votre goût ou pour vos besoins, rendez‐vous dans vos paramètres de compte et adaptez le niveau technique jusqu’à ce qu’il vous convienne.

Révision des connecteurs pour la fédération

Les connecteurs pour la fédération ont été complètement revus. Le protocole de fédération Diaspora V2 a été implémenté et d’important nettoyage du greffon du protocole Diaspora ont été effectué. La compatibilité avec GNU-Social et Mastodon a été grandement améliorée et une fonctionnalité « récupérer les conversations » a été ajoutée pour tenter de localiser les références contextuelles manquantes et conserver les conversations pour les messages de ces réseaux. De plus, un connecteur pour le protocole ActivityPub est en cours de réalisation.

Possibilité de réorganiser les applications dans le menu des applications

De nombreux changements aussi dans le menu des applications et la barre de navigation ont été effectués pour améliorer l’ergonomie générale.

Mécanisme de partage de fichiers amélioré

Le partage de fichiers a également fait l’objet d’améliorations.

Sélection automatique de la langue

La langue est automatiquement sélectionnée pour l’aide, les pages Web et le contenu des wikis pour les usages multilingues.

Passage des tables MySQL en utf8mb4

Pour les nouvelles installations MySQL l’encodage des caractères est à présent en Unicode complet utf8mb4 afin de gérer parfaitement les émoticônes et les langues asiatiques.

 Recherche textuelle améliorée

La recherche textuelle inclut maintenant les pages Web auxquelles vous avez accès. Les recherches par étiquette (« tag ») et par catégorie acceptent les jokers (« * »).

Coloration syntaxique

Le code réalisant la coloration syntaxique des blocs de code a été déplacé dans un greffon. Sans ce greffon un bloc de code normal sera affiché.

Corrections de bogues de synchronisation

Des problèmes de synchronisations des photos et fichiers vers les clones ont été identifiés et corrigés.

Gestion du téléversement des gros fichiers

Il est désormais possible de téléverser de grands fichiers (comme des vidéos) directement dans les conversations. Il y avait des limitations liées à la mémoire disponible auparavant.

Gestion des commentaires publics

Les canaux (l’identité de base dans Hubzilla) acceptent les commentaires publics de personnes non enregistrées (comme sous Wordpress).

Transfert des greffons CalDAV/CardDAV au cœur du serveur

Le code des greffons CalDAV/CardDAV a été transféré vers le cœur du serveur afin de faciliter l’intégration avec le calendrier et le carnet d’adresses intégrés.

Mise à jour de Bootstrap

C’est la version 4 bêta de Bootstrap qui est à présent utilisée.

Installateur amélioré

Le programme d’installation a également fait l’objet de quelques améliorations.

Pour la liste complète des nouveautés voyez le journal des modifications.

Appel aux traducteurs francophones

Le projet manque de traducteurs francophones, notamment pour les pages d’aide, qui ne sont pas gérées sous Transifex (outil de traduction en ligne pour les applications basées sur gettext). La traduction française de l’interface (hors aide en ligne) a été mise à jour dans Transifex, mais au moment de la rédaction n’a pas encore été intégrée dans GitHub. Cela devrait être fait dans les heures ou jours qui viennent.

Télécharger ce contenu au format Epub

Lire les commentaires

Nouvelles de KDE (saison 2016-2017)

20 août, 2017 - 10:32

L’Akademy, rassemblement annuel de la communauté KDE, s’est conclue il y a quelques jours, c’est l’occasion de faire le point sur presque un an de développements depuis la dernière dépêche (évoquant les vingt ans du projet).

Rappelons‐le une fois de plus, KDE ne désigne pas (disons plus) un environnement de bureau (il s’agit de Plasma), mais une communauté ouverte aux projets de toute sorte : applications pour PC, mobiles, Web, etc., avec des moyens techniques, financiers et juridiques, partagés dans une ambiance familiale !
Un seul mot d’ordre : « simple par défaut, puissant quand on en a besoin » !

La saison 2016-2017 a bien sûr vu la sortie de nombreuses versions des logiciels, mais il est aussi intéressant de suivre les évolutions des orientations de la communauté…

Sommaire Nouveautés dans les logiciels Plasma


Plasma 5.9, sorti en janvier 2017, a apporté notamment une barre des tâches affichant des miniatures et permettant un contrôle direct de certaines applications (notamment audio) ; des notifications plus riches et interactives et le retour du menu global pour ceux qui aiment (en haut de l’écran ou dans la barre de titre).
Le partage de thèmes est facilité et la prise en charge de Wayland est sans cesse améliorée.

Dans Plasma 5.10, sorti en mai, le comportement par défaut du bureau revient à l’affichage d’un dossier, sur lequel on dépose icônes et fichiers (mais aussi et toujours des widgets).
On peut contrôler rapidement l’audio depuis l’écran de connexion sans se ré‐identifier.

Différents composants additionnels viennent enrichir l’environnement, tels Vault (gestionnaire de volumes chiffrés), KDE Connect (pour utiliser son ordiphone depuis son PC) ou Discover (chargement d’applications, thèmes additionnels, etc).

Plasma est aussi une interface pour mobiles. Suite aux récents mouvements dans le domaine, l’équipe a logiquement intégré le projet Halium pour unifier les forces dans les dérivés d’Android libres.

Applications


Les « applications KDE » sortent une version en commun tous les quatre mois.
On a donc vu logiquement les 16.12 et 17.04. L’énumération des changements est vite impressionnante, on peut en remarquer quelques‐uns…
Kwave (éditeur audio) et K3b (gravure CD/DVD) ont rejoint la bande.
Kdenlive (montage vidéo) a retrouvé son effet de détourage (rotoscopie), un nouvel effet de suivi de mouvement et il fournit dorénavant des paquets Snap, AppImage, et même Windows (en bêta).
Minuet (apprentissage de la musique) s’enrichit en exercices.
Ark (gestionnaire d’archives) permet maintenant de manipuler les fichiers et de faire des recherches à l’intérieur des archives.
Cantor (environnement mathématique) s’est mis au langage Julia.
Kopete (client XMPP) a vu quelques améliorations de sécurité, comme Kmail (suite de messagerie) et Akregator (lecteur RSS), qui bénéficient aussi d’une récente optimisation de leur moteur de données Akonadi.
Okular (afficheur de documents) prend mieux en charge les écrans tactiles, après avoir été enfin porté vers Qt 5, en même temps que Konqueror (navigateur de fichiers et Web), KGpg (assistant de chiffrement).

D’autres programmes gèrent indépendamment leurs sorties…
Krita (peinture numérique) a sorti les versions 3.1 et 3.2, avec l’arrivée très attendue des animations (exportées vers tous les formats de FFmpeg), des filtres G’MIC et de nouvelles brosses, ainsi que différentes optimisations et améliorations de compatibilité (macOS et Windows).
Le gestionnaire de photos digiKam est passé en versions 5.4, 5.5 et 5.6, avec des améliorations de la recherche de similitudes, l’ajout de la galerie HTML et du diaporama vidéo.
GCompris 0.80 (suite éducative pour jeunes enfants) gagne encore des activités, mais aussi des graphismes plus originaux et homogènes.
Kdevelop (environnement de développement) continue de maintenir la version 5.0 (améliorant l’analyse du C/C++ via LLVM, amenant les versions Windows et AppImage) et sort la 5.1 (intégration d’outils de débogage et d’analyse, amélioration de l’environnement Python 3.6 et expérimentations pour macOS)
Marble a sorti son application Maps pour Android, une alternative pour naviguer dans les cartes comme OpenStreetMap. L’application est disponible sur le Play Store et en cours d’inclusion dans F-Droid.
KStars (planétarium) a déroulé ses versions 2.7 et 2.8.
Skrooge (gestionnaire de finances personnelles) a vu passer les mêmes numéros de version.
Calligra (suite bureautique) continue d’évoluer, en passant à la version 3.0.1.

Des projets moins établis continuent de grandir sur des pistes intéressantes, comme Atelier (pilotage d’imprimantes 3D), Labplot (graphiques à partir de nombreuses sources de données), Cutelyst (cadriciel Web haute performance), Brooklyn (client de messagerie instantanée multi‐plate‐forme)…

WikiToLearn


Après ownCloud/NextCloud éclos au sein de KDE avant de prendre son envol, WikiToLearn est un autre projet « Web » de la communauté qui démontre qu’elle n’est pas fermée au couple C++/Qt… Lancé il y a deux ans, W2L a été très dynamique, notamment en Italie, d’où il a démarré, avec d’importants soutiens universitaires. Plusieurs livres de cours totalement libres sont maintenant disponibles, mais malheureusement pas en français, car cette partie n’a pour l’instant vu l’intérêt que de quelques personnes. À suivre !

Autour des logiciels Animation de la communauté


Outre la conférence Akademy (organisée en 2016 conjointement à la QtCon, aux VideoLAN DevDays, au FSFE Summit), l’association KDE eV soutient financièrement les rassemblements conf.kde.in en Inde, LaKademy en amérique latine et la présence de ses membres au FOSDEM, FOSSASIA, Linux-Infotag, FISL, FUDCON ; ainsi que des « Sprints » où les développeurs mettent le paquet pendant quelques jours : WikiToLearn, Plasma, Calligra, Krita, PIM, etc. et une semaine à de nombreux projets confondus aux Randa Meetings.

KDE est aussi une organisation encadrante du Google Summer of Code et du Google Code‐in et y ajoute ses _Seasons of KDE. Certaines de ces contributions permettent des avancées significatives des logiciels, mais c’est surtout le coup de jeune à la communauté qui est l’apport principal.

Plusieurs groupes de travail fédèrent le soutien aux contributeurs. Un groupe d’administrateurs système maintient héroïquement les nombreux services proposés (dépôts Git, rapports de bogues, sites Web, dépôt d’archives, listes de diffusion, plates‐formes de collaboration)… Un groupe financier gère les donations, la répartition des dépenses et la compta.

Un « Advisory Board » (conseil consultatif) a été fondé pour améliorer la communication avec les organisations partenaires sur divers aspects : défense du Libre (FSF, FSFE, April), formats ouverts (Document Foundation), distributions (SUSE, Canonical), licences et partenariats avec Qt, etc., avec des retours très positifs dès les premières réunions.

Une discussion de longue date sur les listes de diffusion de la communauté aboutit enfin : se redéfinir une vision et des missions… En vingt ans d’existence, le contexte évolue, les contributeurs historiques se démotivent ou ronronnent dans leur perception des choses (« le C++, il n’y a que ça de vrai », « l’année prochaine sera celle du bureau GNU/Linux »). ;)
Une prise de recul offre de bonnes bases pour savoir ce que l’on veut faire et un accord a été trouvé sur la vision suivante : « Un monde dans lequel chacun a le contrôle de sa vie numérique et bénéficie de sa liberté et de sa vie privée » (chaque mot a son explication). Pour tendre vers cette aspiration, l’étape actuelle est de définir les missions et stratégies qui servent ce but.

Distribution des logiciels

Comme dans de nombreuses communautés, la question de la distribution de versions à jour est un sujet abondamment discuté et exploré. Les projets partagent progressivement leurs outils pour créer AppImages, Snaps (tous deux partiellement intégrés dans le système d’intégration continue), FlatPacks, recettes Docker (par exemple, il est possible de lancer Neon dans un conteneur), en sus des installeurs Windows, ports *BSD, MacPorts…
Et pour diffuser ces images, on devrait les trouver facilement sur le KDE Store et les installer ou mettre à jour en quelques clics via Discover (gestionnaire de logiciels et modules).

Un PC pour les fans


Le fabricant espagnol Slimbook a proposé aux développeurs KDE d’assembler un portable avec Plasma et les applications KDE préinstallées (distribution KDE neon). La compatibilité matérielle est donc particulièrement testée et assurée sur ses composants, et le groupe de design a préparé spécialement le logo à sérigraphier. Un démarche enthousiasmante, pour un résultat tout à fait honnête. À suivre !

Rafraîchissement du site officiel


Le site officiel a été rafraîchi par un membre du Visual Design Group. En plus d’être agréable à l’œil, le site est désormais adapté aux mobiles et aux tablettes. Le contenu a été remanié pour mettre en avant les produits KDE et les moyens de contribuer.

Rejoindre la partie Différentes façons de contribuer

Quelques exemples de façons d’aider qui ne viennent pas forcément à l’idée :

  • suivre les nouvelles et écrire des articles ;) ;
  • effectuer des traductions, rédiger les documentations et sites Web ;
  • l’organisation d’évènements ;
  • tenir à jour les paquets de votre distribution ou préparer les AppImages, FlatPacks ou installateurs Windows ;
  • prêter main forte à l’équipe d’administration système ;
  • résoudre des petits bogues, effectuer des tests, réaliser des fonctionnalités, améliorer l’architecture…

Même en étant néophyte, moyennant quelques explications on peut vite trouver un créneau où être à l’aise, et on a toujours droit aux erreurs !

Outils pour contribuer

Pour s’informer, poser ses questions : nouvelles (RSS) et blogs (RSS), listes de diffusion, IRC, bugzilla, forums, wiki
Pour traduire les applications et les documentations : Lokalize, pology.
Pour manipuler le code : Kdevelop, soumettre et discuter des correctifs : phabricator, corriger les avertissements d’analyse statique : clazy, cppcheck et covertity.

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 34 de l’année 2017

20 août, 2017 - 00:21

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 10 événements (0 en Belgique, 9 en France, 0 au Luxembourg, 1 au Québec, 0 en Suisse et 0 en Tunisie) est en seconde partie de dépêche.

Sommaire [QC Montréal] (3L)-Logiciels Libres en liberté groupe d’utilisateurs de Logiciels Libres, de niveau débutant - Le lundi 21 août 2017 de 18h00 à 21h00.

(3L)-Logiciels Libres en liberté groupe d’utilisateurs de Logiciels Libres, de niveau débutant qui tiendra sa rencontre régulière mensuelle tout les 3ième lundi de chaque mois. Amener vos portables et votre bonne humeur. Venez jaser sur les logiciels libres, Nous montrer vos découvertes, poser vos questions?

[FR Reims] G.L.O.U. - Le mardi 22 août 2017 de 18h00 à 20h30.

Le G.L.O.U. est l'occasion de boire un coup entre amis des libertés, et de discuter de tout et de rien.

Nous vous proposons de se retrouver, pour cette deuxième période de vacances estivale, autour d'un verre, mardi 22 août 2017 à 18h00.

Lieu : Grand comptoir de Reims à l'intérieur de la Gare de Reims centre.

[FR Grenoble] Atelier de la Guilde - Le mardi 22 août 2017 de 19h00 à 23h00.

GUILDE (Guilde des Utilisateurs Linux du Dauphiné) est une association loi 1901 qui s'est fixée pour objectifs de promouvoir le système Linux auprès des particuliers et des professionnels, de rassembler les utilisateurs de Linux de la région du Dauphiné.

Nous souhaitons faire naître des projets, des initiatives et créer des groupes de travail qui bénéficieront aussi bien à Linux qu'à ses utilisateurs.

Notre région est riche en entreprises de haute technologie, centres de recherches, universités et sociétés de services qui utilisent déjà Linux.

Par leur biais nous avons l'opportunité de faire connaître l'une des innovations logicielles les plus marquantes de ces dix dernières années.

[FR Chartres] OpenAtelier - Le mercredi 23 août 2017 de 20h00 à 23h59.

L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[FR Toulouse] Rencontre Tetalab - Le mercredi 23 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[FR Cognac] Journées estivales d'initiations de 3LC - Du vendredi 25 août 2017 à 09h00 au dimanche 27 août 2017 à 17h00.

Dernier rendez vous pour la période estivale. Sur 3 jours Vendredi 25, Samedi 26 et Dimanche 27 Aout Les bases de la programmation (à partir de 14 ans).

  • Initiation à la programmation structurée Faire un programme bash (téléchargement automatique de fichiers sur un site internet)
  • Initiation à la programmation fonctionnelle Faire un programme en C (créer une liste de mots du dictionnaire … et comprendre pourquoi il faut avoir des mots de passes fort…)
  • Initiation à la programmation orientée Objet Avec Python créer un interface graphique en quelques lignes / Avec Java gérer un tas de 52 cartes

Si vous êtes intéressés par une de ces journées, vous pouvez vous inscrire dès maintenant en envoyant un mail à l'adresse ci dessous.

Dès aujourd'hui vous pouvez aussi noter, la date du Samedi 28 Octobre
Initiation à l'utilisation d'internet avec des outils libre et initiation à la Neutralité du Réseau.

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 26 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 26 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR La Couronne] Permanence - accueil public - Le samedi 26 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[FR Valenciennes] Atelier (wiki) HainautPédi@ - Le samedi 26 août 2017 de 10h00 à 12h00.

Atelier pour les contributions au wiki territorial HainautPédi@

http://hainautpedia.vallibre.fr

Les ateliers HainautPédi@ sont organisés pour que les contributeurs se rencontrent et fassent évoluer ensemble le contenu du wiki.

Ces séance sont à accès libre, elles permettent également aux personnes intéressées de prendre contact avec la communauté afin d'apprendre concrètement le fonctionnement du projet.

Lors d'un atelier, des machines sont accessibles pour compléter le wiki ou simplement expérimenter.

Rendez-vous à l'espace numérique de la bibliothèque municipale de Valenciennes. Dernier samedi du mois.

Télécharger ce contenu au format Epub

Lire les commentaires

Terminal Overload : un FPS entièrement libre et récent, mais déjà abandonné ?

19 août, 2017 - 17:23

Terminal Overload est un FPS (First Person Shooter) libre multijoueur, qui se déroule dans un univers abstrait et futuriste. C’est un successeur de [Revenge Of The Cats: Ethernet](http://ethernet.wasted.ch/), sorte de mix entre KernelPanic et Warsow avec un rendu de type filiforme qui peut rappeler Tron. Les binaires 32 bits pour Windows et GNU/Linux sont fournis ainsi que le code source à compiler.

Un financement participatif (crowdfunding) avait été lancé par l’auteur de Revenge Of The Cats: Ethernet, Michael Goldener, le 6 décembre 2013, avec pour but de libérer l’ensemble du jeu dont le moteur n’était pas entièrement libre.

Torque3D, une version moderne et libre du moteur était apparue et fut adoptée. Le but de l’appel à financement était donc de porter le jeu sur ce moteur. Le financement ayant été atteint, une divergence (fork) a été créée et la version 0.1 sortie le 1er août 2014 sous le nom de Terminal Overload.

Il utilise donc désormais le moteur Torque3D sous licence MIT (au lieu du moteur Torque Game Engine). La licence du code est la GPL v3 et les données sont sous Creative Commons Attribution 4.0 International.

Malheureusement, il n’y a plus d’activité depuis le 5 février 2016.
Y aurait‐il un repreneur dans la salle ?

Télécharger ce contenu au format Epub

Lire les commentaires

Haiku a 16 ans

19 août, 2017 - 08:19

Le 18 août 2001, le premier message sur la liste de diffusion d’OpenBeOS était envoyé par Marcus Overhagen (« OK, let’s start »). Seize ans plus tard, le projet est toujours là, même si les versions se font rares. Faisons donc un point annuel sur les derniers développements et ce qu’il se passe dans le projet.

Sommaire Rappels sur le projet Haiku

Haiku est un système d’exploitation pour les ordinateurs de bureau (on ne vise ni les serveurs, ni les téléphones et tablettes, pour le moment). Il fonctionne sur les plates‐formes x86 (32 et 64 bits) et est compatible avec BeOS (au niveau binaire pour la version 32 bits, en recompilant les applications pour la version 64 bits).

L’objectif du projet est de continuer là ou BeOS s’est arrêté et de fournir un système d’exploitation facile à utiliser, réactif et efficace. Et, bien sûr, de permettre à tous les développeurs intéressés de se lancer dans un projet de grande envergure et de découvrir l’intérieur d’un système d’exploitation.

Haiku est écrit principalement en C++ et tous les composants (noyau, pilotes, applications, serveur graphique, etc.) sont réalisés par la même équipe, ce qui simplifie les possibilités d’intégration entre les différents composants. Il n’est pas encore complètement compatible POSIX, mais ça avance petit à petit.

En route pour la bêta La feuille de route de Haiku

Lors de la création du projet, l’objectif pour la version 1 de Haiku était simple : « fournir un système 100 % compatible avec BeOS R5 (la dernière version officielle publiée) et qui remplace complètement ce dernier ».

Des jalons ont été définis : la première version « alpha » ne serait publiée que lorsque le système serait suffisamment avancé et stable pour pouvoir se compiler lui‐même. La première version « bêta » ne serait publiée que lorsque toutes les API de BeOS R5 seraient implémentées (même s’il restait des bogues).

Après la première version alpha, les objectifs de la version 1 ont été réexaminés. En effet, cette version n’est arrivée qu’en 2009, et déjà à ce moment il était clair que BeOS était un système vieillissant et que le reproduire à l’identique ne serait pas suffisant. Une consultation parmi les développeurs de Haiku ainsi que parmi les utilisateurs a donc permis d’ajouter de nombreux points à la liste des fonctions nécessaires pour la version 1 (et donc pour la version bêta 1, qui doit comprendre les mêmes fonctionnalités).

Cette feuille de route élaborée dans l’enthousiasme de la sortie de la première version alpha était peut‐être un peu trop ambitieuse. Cependant, la plupart des fonctionnalités prévues (gestion du Wi‐Fi, par exemple) sont effectivement arrivées.

L’infrastructure de publication des paquets

C’est le gros point bloquant pour la prochaine publication.

L’un des derniers points restant était qu’« il doit être possible de mettre à jour le système sans tout réinstaller ». Après de longues discussions entre les développeurs et avec la communauté, la solution retenue fut de réaliser un gestionnaire de paquets, qui pourrait mettre le système à jour. Ce dernier présente quelques propriétés intéressantes. En particulier, les paquets ne sont pas extraits comme pour la plupart des systèmes existants, mais montés dans un système de fichiers virtuel. Ceci permet une installation et une désinstallation très rapide et sans utiliser d’outils spécifiques (il suffit de copier le paquet dans le dossier /system/packages prévu à cet effet).

Cependant, le gestionnaire de paquets est inutile si personne n’est capable de publier un dépôt de paquets et de le tenir à jour. Le projet Haiku espérait que ce serait fait par d’autres. En particulier, HaikuWare (le site sur lequel on trouvait la plupart des logiciels pour Haiku) et HaikuPorts (l’outil permettant de compiler des logiciels à partir des sources pour Haiku) auraient pu répondre à cette demande. Cependant, le responsable de HaikuWare n’a pas du tout aimé le système de gestion de paquets (jugé trop complexe pour les développeurs) et a finalement décidé de fermer son site et de cesser tout soutien à Haiku. Quant à HaikuPorts, l’outil a été mis à jour pour générer des paquets plutôt que d’installer les fichiers directement sur le système. Cependant, ce travail a été réalisé par les développeurs de Haiku et cette « intrusion » dans le développement de l’outil a fini par causer le départ du principal mainteneur de HaikuPorts. Les développeurs de Haiku se retrouvent donc seuls en charge de tout l’écosystème de logiciels.

En dehors de ces soucis d’infrastructure, il y a également du travail pour les outils graphiques permettant de gérer les dépôts et les logiciels installés. Dans Haiku, il y a plusieurs logiciels prévus à cet effet :

  • HaikuDepot, qui est un magasin d’applications un peu comme ceux que l’on trouve sur les smartphones ou Synaptic sur Debian. Il permet d’explorer la liste des logiciels avec captures d’écran et description, ainsi que les notes et commentaires d’autres utilisateurs. En plus du dépôt de paquets, il repose sur un service Web indépendant qui se charge uniquement des métadonnées (commentaires, notes, icônes, captures d’écran) qui ne sont pas présentes dans le paquet logiciel lui‐même ;
  • Repositories, l’application de préférences qui permet de choisir les dépôts de logiciels que l’on veut utiliser ; en plus des dépôts officiels fournis par Haiku et HaikuPorts, il existe à présent plusieurs dépôts complémentaires permettant la distribution de nombreux logiciels ;
  • enfin, SoftwareUpdater se charge de surveiller et de notifier la disponibilité de mises à jour pour le système et pour les applications ;
  • et bien sûr pkgman, l’outil en ligne de commande équivalent d’apt ou yum, est toujours présent et permet de faire tout ça sans cliquer.
Prise en charge du 64 bits et passage à GCC 6

La dernière version alpha 4 de Haiku n’était disponible que pour les machines 32 bits. À l’époque, la prise en charge du 64 bits était encore considérée comme expérimentale et nous avions choisi de ne pas la publier dans une version officielle tout de suite.

Cela va changer avec la version bêta 1, qui sera donc disponible en 32 et 64 bits. Il y a eu récemment des changements sur l’ABI 64 bits (par exemple, time_t est passé de 32 à 64 bits pour prévenir le bogue de l’an 2038).

La version 32 bits de Haiku utilise GCC en versions 2.95.3 (pour la compatibilité avec BeOS) et 5.4. La version 64 bits utilise uniquement GCC 5.4. Le passage à GCC 6 est en cours, mais comme souvent, cette nouvelle version de GCC apporte de nouvelles optimisations et de nouvelles alertes (warnings), qui révèlent des problèmes dans le code de Haiku. Il faut donc être prudent et prendre le temps d’investiguer chacun de ces problèmes avant de pouvoir officiellement mettre à jour la version de GCC prise en charge.

HaikuArchives

http://haikuarchives.github.io/

L’un des problèmes de Haiku est le manque de logiciels disponibles. En principe, la compatibilité avec BeOS devrait permettre de réutiliser tous les logiciels écrits pour BeOS, mais ceux‐ci ne sont plus maintenus. De plus, suite à la fermeture de HaikuWare et de BeBits (les deux principaux sites répertoriant ces logiciels), il était à craindre qu’ils soient perdus pour toujours.

Le projet HaikuArchives répond à ce problème. Le but de ce projet est de retrouver les auteurs de logiciels pour BeOS et de les convaincre de retrouver leurs sources (c’est le plus difficile) pour les publier (en général, ça ne pose pas trop de problèmes), de préférence sous une licence libre.

Ceci permet d’effectuer au moins une maintenance minimale sur le code, en attendant que les projets soient repris par d’autres développeurs. Cela permet de suivre les petits changements dans l’API, de vérifier que les logiciels compilent toujours avec un compilateur récent et de préparer le passage au 64 bits.

Développements dans l’année Le navigateur Web

Haiku utilise le moteur WebKit (partagé avec Safari et GNOME, entre autres). Le développement de ce moteur est très actif et il est difficile de suivre pour un projet qui n’a pas de développeurs affectés à plein temps pour cela.

Aussi, Haiku utilise actuellement une version de WebKit datant de début 2016 et commence à rencontrer des problèmes pour cette raison sur certains sites Web. Il est donc nécessaire de mettre à jour notre portage de WebKit et des efforts dans ce sens sont en cours.

D’autre part, la prise en charge des protocoles HTTP, HTTPS et Gopher mûrit doucement, avec encore de nombreux bogues corrigés.

Déboguer à distance

« Debugger » est, comme son nom l’indique, le débogueur fourni avec Haiku. C’est un outil indispensable pour les développeurs.

Cependant, il s’agit d’une application graphique et assez complexe, ce qui peut se révéler problématique lorsqu’il s’agit d’investiguer des problèmes dans les composants de Haiku comme le serveur graphique app_server.

La solution choisie est de permettre d’utiliser Debugger à distance, depuis une autre machine. Le code du débogueur est donc adapté petit à petit pour permettre ce fonctionnement à travers le réseau.

Flux médias

Haiku propose une implémentation du « Media Kit » de BeOS, qui permet entre autres choses le décodage, la lecture et l’encodage de sons et de vidéos.

Jusqu’à présent, ce décodage pouvait se faire uniquement à partir d’un fichier ou de données chargées en mémoire. Mais il est maintenant possible de l’utiliser avec des flux, ce qui rend par exemple possible la lecture de webradios avec MediaPlayer.

Prise en charge de l’impression

Pouvoir imprimer des documents est indispensable sur un système de bureau comme Haiku. Bien que la gestion des imprimantes soit présente, il reste encore de nombreux problèmes à traiter avant que cela soit complètement fonctionnel.

Les pilotes d’imprimantes utilisés sont ceux de Gutenprint, qui permet d’assurer la compatibilité avec un assez grand nombre de marques et de modèles. C’est maintenant la dernière version de Gutenprint qui est utilisée pour cela.

La version 64 bits de Haiku est capable d’imprimer aussi bien que la version 32 bits.

Un gros nettoyage a été effectué sur les diverses fenêtres de configuration de l’imprimante et de mise en page (gestion des marges, etc.), pour les simplifier et les uniformiser entre différentes applications.

La prochaine étape est de régler tous les problèmes de rendu lors de l’impression d’un document : texte mal positionné, dégradés de couleurs qui disparaissent, par exemple.

Le « launch daemon »

launch_daemon est un serveur qui se charge de séquencer le démarrage et l’extinction de la machine (des opérations courantes sur une machine de bureau — surtout que Haiku ne sait pas encore se mettre en veille).

Il remplace la procédure d’inititalisation qui était auparavant implémentée sous forme d’un simple script shell.

Launch daemon peut lancer plusieurs services en parallèle, en réagissant à des évènements (par exemple, « tous les disques sont montés »). Il permet également de redémarrer un service automatiquement en cas de plantage et même de mettre en attente les messages envoyés à un service qui n’est pas démarré.

Ceci permet par exemple de ne démarrer le serveur d’impression que lorsqu’on imprime un document pour la première fois, limitant ainsi le temps de démarrage du système et l’utilisation de la mémoire vive.

Systèmes de fichiers

Plusieurs corrections ont été effectuées dans la gestion des systèmes de fichiers.

BFS, le système de fichiers principal de Haiku, avait encore quelques différences avec celui de BeOS, qui sont maintenant corrigées afin d’assurer une complète interopérabilité entre les deux systèmes.

Divers petits problèmes ont été également corrigés dans le VFS (le code commun à tous les systèmes de fichiers), ainsi que dans rootfs (qui gère le système de fichiers racine monté en /), devfs (qui gère /dev et les fichiers représentants les périphériques) et packagefs (qui gère le montage des paquets logiciels dans un système de fichiers virtuel). Ces corrections permettent d’avoir un meilleur comportement dans des cas inhabituels, par exemple lors d’une tentative d’ouverture en écriture d’un dossier.

Enfin, du côté des systèmes de fichiers réseau, Haiku peut maintenant se connecter à des partages SMB (en plus du NFS qui était déjà présent), permettant d’échanger facilement des fichiers avec d’autres machines présentes sur le réseau.

Il est également possible d’utiliser un disque en mémoire vive (RAM disk) pour y stocker des données non persistantes qui n’ont pas besoin d’être sur un disque dur.

Des pilotes

La prise en charge matérielle est évidemment un problème pour un projet comme Haiku qui a fait le choix de ne pas utiliser un système existant. Cette année, les efforts ont porté principalement sur :

  • la prise en charge de xHCI (USB 3), qui devient indispensable sur les machines récentes où l’USB2 est en voie de disparition ;
  • la mise à jour du pilote intel_extreme, qui pilote toutes les cartes graphiques Intel à partir de la GMA 950 ;
  • la prise en charge de l’UEFI, pour démarrer sur les machines qui n’ont pas de BIOS ; ainsi que la prise en charge complète des tables de partitionnement GPT qui y sont souvent associées ;
  • la prise en charge des cartes réseau virtuelles virtio, permettant de lancer Haiku dans certaines machines virtuelles (Hyper-V, par exemple) ;
  • le pilote atheros813x est à jour avec la version de FreeBSD 11. Tous les autres pilotes réseau importés de FreeBSD sont pour l’instant à jour avec la version 9 uniquement.
Prise en charge de l’internationalisation

Depuis le début du projet, Haiku utilisait la police de caractères DejaVu Sans pour son interface graphique. Cependant, celle‐ci ne permettait pas la gestion de toutes les langues.

Désormais, c’est la police de caractères Noto qui est installée par défaut, ce qui permet la prise en charge, entre autres, du japonais et du coréen, en plus des langues latines et cyrilliques.

D’autre part, la méthode de saisie Canna, qui permet de taper du texte en japonais, est maintenant complètement fonctionnelle ; et KeymapSwitcher, qui permet de changer de disposition de clavier par une combinaison de touche, est disponible dans les dépôts de logiciels et sera probablement inclus directement dans la version bêta 1.

Terminal

On pourrait penser que ce n’est pas l’application la plus importante, mais les développeurs passent beaucoup de temps en face d’un shell Bash.

Le terminal de Haiku peut enfin avoir plus de six onglets ouverts dans une même fenêtre.

Plusieurs problèmes apparus avec ncurses 5.9 ont été résolus par l’implémentation de séquences d’échappement manquantes. En particulier, il est possible d’utiliser Nano avec le curseur affiché au bon endroit et tous les caractères visibles.

Des projets autour du système d’exploitation

Avoir un système, c’est bien. Mais avoir des applications, c’est mieux.

Portage de Qt 5

Grâce aux efforts mis en place pour la gestion des paquets, il est devenu possible de capitaliser les efforts de portage de logiciels et de maintenir en état de marche un grand nombre de bibliothèques portées.

Cela a rendu possible la reprise du développement de Qt 4, puis de Qt 5 pour Haiku, ce qui permet de bénéficier de nombreuses applications.

Bien que l’objectif final de Haiku soit de développer son propre écosystème d’applications, bien intégrées avec le reste du système, les applications Qt permettent d’avoir dès maintenant un système de bureau opérationnel avec des applications fonctionnelles.

Le portage de Qt se complète petit à petit, avec par exemple la gestion du glisser‐déposer et une apparence qui se rapproche autant que possible de celle des applications natives.

L’une des applications Qt souvent utilisées est Qupzilla, un navigateur Web qui permet de visiter certains sites qui ne fonctionnent pas bien avec le navigateur natif.

LibreOffice

Un gros manque sur Haiku est l’absence d’une suite bureautique digne de ce nom. Il existe quelques vieilles applications pour BeOS, en particulier la suite GoBe productive et le tableur Sum-It, mais ils sont loin d’être suffisants et les sources de GoBe productive ne sont pas disponibles pour la maintenir à jour.

En conséquence, la solution retenue est d’essayer de porter LibreOffice. C’est un gros travail, mais les premières captures d’écran semblent prometteuses.

Présence dans les manifestations autour du logiciel libre

Le projet Haiku reste assez peu connu. La présence dans différentes manifestations autour du logiciel libre nous permet de nous faire connaître et d’essayer d’attirer de nouveaux développeurs.

C’est aussi l’occasion d’aider certains projets à porter leurs applications sur Haiku lorsque cela est possible et pertinent.

FOSDEM

Cette année nous avons partagé un stand avec ReactOS, un projet aux objectifs similaires puisqu’il s’agit d’un système d’exploitation libre compatible avec Windows.

https://www.haiku-os.org/blog/mmu_man/2017-02-09_back_from_fosdem/

mmu_man a donné une conférence sur les idées que les autres bureaux devraient emprunter à Haiku.

RMLL

Haiku était également présent aux Rendez‐vous mondiaux du logiciel libre, avec un stand et une conférence faisant un point sur les progrès vers la prochaine version bêta de Haiku :

Ce fut également l’occasion de porter QElectrotech vers Haiku et d’essayer de mettre à jour le portage de Pytouhou pour une version un peu plus récente.

Capitole du Libre

Haiku était aussi présent au Capitole du Libre, avec un stand, et deux conférences :

La fin de BeGeistert

http://begeistert.org/

BeGeistert était depuis 1998 une conférence autour de BeOS, puis de Haiku. Organisée habituellement à Düsseldorf, elle permettait à la communauté de Haiku de se retrouver une fois par an, avec quelques présentations et un coding sprint consistant à enfermer plusieurs développeurs dans une pièce, à secouer, et à voir ce qui en ressort.

Avec un nombre de participants de plus en plus faible et des coûts de plus en plus élevés pour la location de la salle utilisée, l’association HSA (Haiku Support Association) organisatrice de l’évènement a décidé qu’il n’était plus pertinent de maintenir BeGeistert dans ce format.

Il n’y aura donc pas de BeGeistert en 2017, mais il y aura tout de même un coding sprint, organisé à Toulouse juste après le Capitole du Libre.

http://pulkomandy.tk/kdc

Participation au Google Code‐in

https://codein.withgoogle.com/archive/2016/organization/5146925732986880/

Le Google Code-In est un programme du bureau de l’open source de Google. Il s’adresse au 13 à 17 ans. Le but étant de leur faire découvrir le logiciel libre et l’informatique en général.

Cela se présente sous la forme d’un concours où les participants doivent réaliser des contributions à l’un des projets de logiciels libres participants. Les tâches à réaliser peuvent être par exemple la réalisation d’une icône, d’un prospectus, d’un fond d’écran, l’écriture de documentation, faire une présentation du projet ou, bien sûr, écrire un peu de code pour corriger un bogue.

Haiku est l’un des trois projets qui ont participé tous les ans depuis le lancement du Code‐in en 2010 (les deux autres étant KDE et Apertium). En effet, la participation à ce programme demande un gros investissement de la communauté pour accueillir efficacement des participants qui n’ont pas forcément l’habitude du fonctionnement des logiciels libres.

Haiku a pu gagner quelques nouveaux contributeurs grâce à ce concours, mais les résultats sont surtout à long terme d’encourager la contribution aux logiciels libres en général.

De retour dans le Google Summer of Code

https://www.haiku-os.org/community/gsoc/2017/ideas

Haiku participe également régulièrement au Google Summer of Code. Celui‐ci se présente sous la forme d’un stage où des étudiants sont rémunérés par Google mais encadré par les contributeurs de différents projets de logiciels libres.

Le résultat en termes de contribution aux logiciels participants étant en principe beaucoup plus important que pour le Google Code-in, il y a beaucoup plus de projets intéressés pour participer, aussi il n’est pas possible pour tous les projets de participer tous les ans (il faut laisser de la place aux autres). Haiku n’avait donc pas participé aux éditions 2015 et 2016, mais est de retour en 2017 avec sept étudiants contribuant entre autres à l’amélioration de la pile TCP, le prise en charge de l’écriture sur le système de fichiers Btrfs, ou encore l’écriture d’une application agenda et un travail sur l’interface graphique des préférences du système.

Le Google Summer of Code se termine à la fin du mois d’août, donc les contributions des étudiants participants sont intégrées petit à petit d’ici là et seront probablement présentes dans la version bêta de Haiku.

Télécharger ce contenu au format Epub

Lire les commentaires

Nouvelles de ZeMarmot, GIMP et GIMP Motion (greffon d’animation dans GIMP)

17 août, 2017 - 10:24

Un peu d’info sur les évolutions de ZeMarmot (déjà discutées sur LinuxFr.org), sur la partie logicielle et artistique.

Ce ne sont pas forcément des nouvelles pour ceux qui suivent l’avancée du projet sur le site Studio Girin, la liste de diffusion ou les réseaux sociaux. Mais pour tous ceux qui ne nous connaissent pas beaucoup ou ne suivent pas, j'espère que cela vous plaira.

Sommaire Logiciel libre GIMP core

Comme d’hab’, je reste un des contributeurs majeurs de GIMP avec 171 commits en 2017 (654 en tout, faisant de moi le 5e plus gros contributeur historique à ce jour) sur la branche master, et quelques commits mineurs sur babl et GEGL. Bien sûr, je fais aussi de la revue de code régulière (qui a eu pour résultat cette année au moins 18 commits poussés de contributeurs occasionnels), des rapports de bogues, des réponses aux bogues d’autrui, du suivi, de la maintenance, etc.

Mes récentes contributions comportent beaucoup de corrections de bogues, quelques nouvelles fonctionnalités et des détails d’implémentation. Tous ces détails font la différence, surtout maintenant qu’on se rapproche de la sortie de la 2.10. En fait, ces derniers temps, c’est même surtout la somme de tous ces petits détails que l’on améliore qui « m’excite ». Chacune de ces mini‐fonctionnalités à elle seule peut paraître insignifiante, mais toutes ensemble, je trouve vraiment GIMP 2.9/2.10 tellement plus agréable à utiliser et efficace par rapport à la 2.8, que cette version s’annonce pour moi comme une avancée majeure. N’hésitez pas à jeter un œil sur le journal de mes contributions pour avoir plus de détails.

Nous devrions bientôt sortir une version de développement 2.9.6, ce qui vous donnera une meilleure visibilité, surtout qu’il y a vraiment eu plein de choses super excitantes entre 2.9.4 et 2.9.6 (et pas que de moi ! Nous sommes maintenant trois gros codeurs sur GIMP et les choses se mettent vraiment à bouger énormément).

Un peu de fun avec GEGL et Android

À côté, j’ai commencé à m’amuser avec du développement Android. En particulier, j’ai fait la compilation croisée de glib et GEGL pour Android grâce à mon outil, Crossroad (dont j’avais parlé il y a quelques années ici). Je n’ai eu qu’une seule correction à faire pour rendre GEGL compilable pour Android (un commit sur babl, la bibliothèque de conversion de pixels de GEGL).
J’en parlerai probablement encore quand je sortirai Crossroad 0.8, la version qui permettra officiellement la compilation croisée pour toutes les plates‐formes prises en charge par Android (ARM, x86, MIPS, en 32 et 64 bits), car pour l’instant c’est fait avec la version de développement de Crossroad (mais ça marche déjà très bien ! Testé sur l’émulateur Android, mais aussi sur un vrai téléphone).

En attendant, je me suis amusé avec une application Android qui peut appliquer diverses opérations GEGL sur une image. L’application n’a pas pour but d’être complexe pour le moment et me sert surtout à expérimenter l’usage de ces bibliothèques libres sur des machines portables. Vous pouvez tout de même jeter un œil au code, si vous voulez, c’est libre ! :-)

Très franchement je ne sais pas encore où cela me mènera. C’est beaucoup d’expérimentation et je le fais surtout parce que ça m’amuse. Certains vont tout de suite s’imaginer GIMP pour Android, j’en suis sûr. ;-)
Après tout, une version Android de GIMP est clairement une des fonctionnalités demandées régulièrement. J’y ai pensé aussi, bien sûr (il va sans dire, ça serait cool d’avoir GIMP sur les appareils portables !), mais je ne vois absolument pas cela comme une possibilité à court ou moyen terme. GIMP pourrait sûrement être compilé pour Android, là n’est pas le problème, mais son interface n’est clairement pas pensée pour être utilisée sur de petits périphériques. Je sais qu’il y aurait beaucoup de choses à revoir et il est même fort probable qu’il puisse être bien plus intéressant de faire une nouvelle interface graphique à partir de zéro, basée sur GEGL. D’un autre côté, pour travailler sur des tablettes, il y a probablement quelque chose d’intéressant à faire.
Ne retenez donc pas votre respiration en vous imaginant du GIMP pour Android dans un futur proche. Néanmoins, oui, c’est une possibilité très réelle à terme comme résultat de mes expériences. C’est vrai. :-)

GIMP Motion

Début juillet, j’ai publié mon travail en cours sur notre greffon (156 commits additionnels à ce jour, qui ne sont pas encore dans la branche master) pour ajouter la prise en charge d’animations de qualité professionnelle avec GIMP. Le code est donc visible publiquement comme branche du dépôt de GIMP. Il n’est pas intégré encore à la branche master car je considère vraiment cela comme du travail en cours, avec son lot de bogues connus et inconnus et de changements que je fais dessus régulièrement. Cela ne nous empêche pas de l’utiliser quotidiennement (enfin surtout Aryeom, bien sûr), sans pour autant le considérer comme du travail fini et donc disponible dans une version « stable » de GIMP.

Pour l’occasion, j’ai publié deux vidéos pour introduire l’utilisation de base du greffon, lequel présente deux modes : un mode storyboard (que j’appelle aussi « animation simple », car ce serait typiquement le mode classique pour les gens qui font des GIF/WebP animés avec le concept un calque = une image) et un mode animation traditionnelle pour des animations plus complexes où chaque image sera une composition de plusieurs calques. Les deux vidéos sont accompagnées d’un message explicatif qui décrit un peu mieux le contenu de la vidéo et le futur du greffon (surtout le second message) :

En deux mots, pour ceux qui auront la flemme de lire les articles : dans l’avenir, ce greffon permettra de créer des animations composées de nombreux calques, avec animations de caméra (zooms, panoramique et inclinaison rapide, rotations…), animations d’effets (lumières, reflets, coloration, flous, déformation de caméra…). Tout effet GEGL pourrait être animé, ce qui permettra des animations avancées en quelques clics, ainsi que du motion graphics, etc.

Une des avancées indirectes apportée à GIMP par le développement de ce greffon, c’est de rendre libgimp (la bibliothèque utilisée par les greffons pour interagir avec GIMP) enfin thread‐safe, puisque j’en ai eu besoin et j’ai donc modifié GIMP pour travailler plus aisément en multi‐thread dans des greffons (seule ma branche possède ce changement pour le moment). Ce sera donc une autre amélioration dont bénéficiera l’ensemble de l’écosystème de greffons de GIMP.

Le film « ZeMarmot »

Sur le processus de production d’un film d’animation, vous serez peut‐être intéressé par les articles suivants.

De l’animatique à l’animation

Nous avons décrit les étapes de préproduction à production, en expliquant le passage du storyboard à l’animatique puis au keyframing et enfin à l’animation, illustré par une vidéo montrant les diverses étapes côte‐à‐côte.

Design

Nous avons publié un article sur le design d’arrière‐plans, en prenant le terrier de ZeMarmot comme base, à partir de nos photos de recherche sur terrain.

Et bien plus…

Bien sûr, il y a plus au niveau artistique, mais comme à notre habitude, nous essayons de garder un peu de mystère autour de la production pour ne pas vous gâcher le plaisir du premier visionnage. Un peu de patience… ;-)
Nous divulguons ceci dit un peu plus à nos financeurs Patreon/Tipeee, comme récemment la première scène animée (et on peut donner les liens à ceux qui ont contribué autrement ; si c’est votre cas, envoyez juste un courriel). Mais on met des avertissements clairs « SPOILER », car même en nous soutenant, vous ne voulez pas forcément en voir trop (je sais que personnellement je n’aime pas voir de versions non finies de films, hormis si je travaille dessus).

Financement participatif

Comme à mon habitude, je termine mes nouvelles du projet en rappelant que ZeMarmot est entièrement financé de manière participative. Nous utilisons deux plates‐formes de financement participatif mensuel :

Tout est géré par une association loi 1901 enregistrée en France, LILA, vous pouvez donc aussi faire des donations directement si vous le souhaitez (page de donation de LILA ; n’hésitez pas à envoyer un message en parallèle si vous donnez par ce biais, surtout si vous souhaitez préciser pourquoi vous donnez et nous indiquer votre nom), et sans frais de plate‐forme donc.

À ce jour, le financement du projet existe, mais il ne nourrit pas grand monde, ce qui explique aussi l’évolution bien plus lente du projet que nous l’espérions. Pour tout dire, on a eu quelques baisses de moral plus d’une fois durant lesquelles on s’est demandé si c’était bien raisonnable de continuer.

Si vous appréciez notre travail pour améliorer ou créer du logiciel libre et créer de l’art libre que tout le monde pourra télécharger et visionner, je vous appelle à nouveau pour aider notre projet. Le financement va entièrement dans ces objectifs, en salaires de production du film. Que ce soit pour améliorer les logiciels libres en général, GIMP en particulier, l’édition vidéo ou l’animation 2D libres, peut‐être même me pousser à continuer mes expérimentations de compilation croisée — certes, des objectifs annexes sans rapport direct, mais ces expérimentations sont nées de mon intérêt dans GIMP, donc de ZeMarmot — de bibliothèques libres sur diverses plates‐formes (que ce soit Android, d’autres plates‐formes embarquées, ou autres !) ou parce que vous aimez le concept ou l’histoire de notre film (une marmotte qui voyage et qui est libre), ou bien parce que vous souhaitez nous aider à professionnaliser l’art libre, ou toute autre raison qui vous plaît dans ce que nous faisons, alors vous savez comment nous aider en soutenant le projet. :-)

Et encore une fois, merci à tous ceux qui nous ont soutenus jusque‐là ! Sans vous, ZeMarmot n’existerait pas et tous les trucs dont j’ai parlé plus haut, ainsi que dans divers autres articles, ou encore mes centaines de commits sur GIMP, etc., tout cela n’existerait pas non plus.

Télécharger ce contenu au format Epub

Lire les commentaires

GCompris sort en version 0.80

15 août, 2017 - 09:23

Nous sommes heureux d’annoncer la publication de la nouvelle version de GCompris, le logiciel éducatif pour les enfants de deux à dix ans.

Cette nouvelle version contient entre autres six nouvelles activités, listées dans la suite de la dépêche. GCompris propose plus de 100 activités, dont des jeux, toujours avec un objectif pédagogique. Lecture, mathématiques, sciences, géographie et découverte de l’ordinateur sont les thèmes abordés par ces activités.

Nouvelles activités
  • Une activité de catégorisation d’images :

  • Une activité où il faut, à partir des nombres et des différentes opérations proposées, trouver un nombre donné :

  • Un jeu où l’on doit faire en sorte que l’adversaire place la dernière boule sur une ligne, qui se joue contre l’ordinateur ou un ami :

  • Le jeu de dames en version avec l’ordinateur ou avec un ami :

Plates‐formes prises en charge

Comme pour la précédente version, nous prenons en charge bien évidemment GNU/Linux, pour lequel nous avons des paquets dans plusieurs distributions :

  • Arch Linux ;
  • KaOS ;
  • KDE Neon ;
  • Mageia Cauldron ;
  • OpenSUSE.

Android est aussi pris en charge via le Play Store. Suite à l’ajout du SDK Qt dans F-Droid (https://gitlab.com/fdroid/fdroidserver/issues/202), nous espérons sortir aussi une version dessus.

Windows est toujours pris en charge en version 32 bits et 64 bits. Nous proposons une construction expérimentale pour la version 64 bits utilisant la suite d’outils MinGW.

Pour macOS et iOS, nous sommes en discussion avec deux contributeurs, mais nous n’avons toujours pas de paquet fonctionnel à distribuer.

Autres changements

Pour cette nouvelle version, on voit également arriver :

  • pour l’activité de vocabulaire, l’ajout des données pour le polonais, le suédois et l’ukrainien ;
  • de nouveaux graphismes pour plusieurs activités ;
  • la traduction du site est maintenant gérée dans l’infrastructure KDE :
    • cette version est complètement traduite en 17 langues,
    • elle est aussi traduite à plus de 85 % en 11 langues supplémentaires.

Télécharger ce contenu au format Epub

Lire les commentaires

Le programme de la LDAPCon 2017 est sorti !

13 août, 2017 - 19:22

Nous sommes heureux de vous annoncer la sortie du programme des conférences de la LDAPCon 2017 qui aura lieu à Bruxelles les 19 et 20 octobre prochain.

Cette conférence internationale sur LDAP et plus largement sur les questions de gestion des identités, d’authentification et d’habilitation, est l’occasion de rencontrer les acteurs les plus importants du domaine.

Pour en savoir plus : https://ldapcon.org/2017/conference-program/ (mots‐clés : ReOpenLDAP, Sparrow, OpenLDAP, Apache Mavibot, PHP-LDAP, load balancing, replication, SSO, FusionDirectory, ForgeRock, etc.).

De plus, la date de vente des tickets au tarif « inscription anticipée » de la LDAPCon 2017 a été étendue au 25 août ; vous pouvez encore acheter votre ticket Early Bird.

Télécharger ce contenu au format Epub

Lire les commentaires

Arkiv : Sauvegarde de fichiers et bases MySQL + archivage sur Amazon S3 et Amazon Glacier

13 août, 2017 - 09:30

Pour mes besoins personnels et professionnels, j’ai développé un script pour sauvegarder mes données (fichiers présents sur le disque local et bases de données MySQL) et les archiver sur Amazon S3 et Amazon Glacier.

Il est possible de choisir la fréquence de sauvegarde (jusque toutes les heures si nécessaire) et de définir une politique précise pour la purge des données. Il est ainsi possible d’avoir un comportement du type :

  • sauvegarde toutes les heures : les données sont enregistrées en local et envoyées sur Amazon S3 et Amazon Glacier ;
  • toutes les sauvegardes sont gardées en local pendant deux jours, puis on garde quatre sauvegardes par jour (une toutes les six heures) pendant cinq jours, puis une par jour pendant deux semaines, puis elles sont effacées ;
  • toutes les sauvegardes sont gardées sur Amazon S3 pendant deux semaines, puis on garde six sauvegardes par jour (une toutes les quatre heures) pendant deux semaines, puis deux par jour pendant un mois, puis elles sont effacées ;
  • toutes les données sont gardées sans limite de temps sur Amazon Glacier.

Le choix des services cloud d’Amazon se veut pragmatique. Amazon S3 est très utilisé pour stocker des données auxquelles on veut pouvoir accéder rapidement. Amazon Glacier est très pratique pour enregistrer des données sur le long terme pour un coût très bas.

Ce script propose une interface de configuration en ligne de commande qui se veut facile à utiliser. Les fichiers journaux se veulent aussi les plus lisibles possibles.

Exemple de configuration :

Exemple de fichier journal :

Le code a été placé sous la licence MIT (licence libre permissive).

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 33 de l’année 2017

13 août, 2017 - 09:30

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 9 événements (0 en Belgique, 6 en France, 0 au Luxembourg, 3 au Québec, 0 en Suisse et 0 en Tunisie) est en seconde partie de dépêche.

Sommaire [FR Chartres] OpenAtelier - Le mercredi 16 août 2017 de 20h00 à 23h59.

L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[FR Toulouse] Rencontre Tetalab - Le mercredi 16 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[QC Coteau du Lac] Émission #137 de bloguelinux - Le jeudi 17 août 2017 de 02h00 à 22h00.

bloguelinux.ca est un blogue québécois offrant la diffusion d'un podcast qui traite des logiciels libres, du système d'exploitation Linux et de la technologie en général ; il y a un processeur, il y a un système d'exploitation, c'est certain que ça nous intéresse!
bloguelinux.ca est enregistré le jeudi à 20 heures toutes les deux semaines.
Vous pouvez nous écouter en direct lors des enregistrements à l'adresse http://live.bloguelinux.ca ou directement sur notre site à http://www.bloguelinux.ca en cliquant sur la radio dans le panneau de gauche du site.

[QC Montréal] Atelier du Libre du Club Linux Atomic - Le jeudi 17 août 2017 de 18h00 à 21h30.

Le Club Linux Atomic
Le Club Linux Atomic (CLA) regroupe des utilisateurs, novices comme aguerris, de systèmes d’exploitation GNU/Linux et de logiciels libres. Il a pour principal objet de mieux faire connaître l’informatique libre et d’en favoriser l’utilisation par le plus grand nombre.
Atelier du Libre

[QC Montréal] UP des NCS - Atelier «Libérer l'informatique» - Le vendredi 18 août 2017 de 14h00 à 15h30.

Lors de cet atelier qui s'intitule «Libérer l'informatique», il sera question des nouvelles formes de résistance au numérique dominant, celui qui sert les intérêts du 1%.
Mathieu Gauthier-Pilote présentera principalement les initiatives de FACiL pour promouvoir l'appropriation collective de l'informatique libre (notamment le projet Services FACiLes, la Clé FACiL, la campagne Pacte du logiciel libre, etc.) tandis que Luc Levebvre présentera les initiatives de Crypto.Québec (le podcast «Les Chiens de garde», un livre en préparation, etc.) .
Cet atelier se déroule dans le cadre de l'Université populaire des Nouveaux Cahiers du socialisme (NCS), dont l'un des deux axes principaux cette année est «La révolution « numérique » : les enjeux pour le 99%».

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 19 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 19 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR La Couronne] Permanence - accueil public - Le samedi 19 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[FR Nanterre] Lightning talks de l'Electrolab - Le samedi 19 août 2017 de 16h00 à 18h00.

Les Lightning-Talks consistent en de courtes présentation (5 mn max + 3 mn de questions) de projets terminés, en cours, ou toujours en réflexion.

Toutes les personnes qui sont prêtes à partager leurs idées les plus folles devant une foule en délire sont invitées

Vous bénéficierez de retours des membres sur vos choix techniques et probablement de conseils bienvenus.

Télécharger ce contenu au format Epub

Lire les commentaires

Firefox 55 est prêt pour la rentrée 2017

10 août, 2017 - 13:47

Le 8 août dernier, Mozilla a annoncé la sortie de Firefox 55.

Les profils utilisateurs reçoivent des mises à jour incompatibles avec les anciennes versions de Firefox, ne vous précipitez donc pas sur la mise à jour et faites d’abord une sauvegarde de votre dossier .mozilla.

Mozilla indique que cette nouvelle version apporte des améliorations de performance, des technologies innovantes, telles que la réalité augmentée pour le Web (WebVR), de nouvelles options d’optimisation de gestion du matériel et des processus, plus de confidentialité et des améliorations de l’expérience utilisateur. Tous les détails sont disponibles dans la suite de la dépêche.

Sommaire Nouveautés générales

Tout d’abord, des modifications sont apportées dans les profils Firefox, ce qui rend les profils à partir de Firefox 55 incompatibles avec les anciennes versions de Firefox. Avant de mettre à jour votre navigateur, faites une sauvegarde de votre profil actuel afin de pouvoir revenir sur les anciennes versions si nécessaire.

Avec ces dernières versions (Firefox pour bureau et pour Android), Firefox améliore la confidentialité de votre vie privée par le refus d’utilisation des interfaces de géolocalisation pour les sites qui fournissent une connexion non sécurisée à leurs services.

Une nouveauté intéressante pour les développeurs est que Firefox pour GNU/Linux peut être utilisé sans interface graphique (mode headless à activer avec le paramètre de commande éponyme). Ceci permettra par exemple d’utiliser le moteur de Firefox pour exécuter des tests d’intégration continue, même si la machine d’intégration n’a pas de serveur graphique à disposition.

Firefox pour bureau

La nouveauté la plus mise en avant par Mozilla est que Firefox peut utiliser les périphériques de réalité virtuelle depuis le Web grâce à l’introduction de l’API WebVR. Un site dédié est à disposition pour découvrir cela. Mozilla insiste sur cette nouveauté dans son annonce pour bien afficher son intention de continuer à être un navigateur au cœur des innovations technologiques.

À côté de cette nouveauté, Firefox pour le bureau connaît plusieurs améliorations de son interface graphique dans cette version :

  • la barre de navigation principale a été retravaillée :
    • les suggestions de recherche sont activées par défaut pour les utilisateurs qui ne les ont pas désactivées explicitement (passage de opt-in à opt-out),
    • la recherche peut enfin y être effectuée avec un des différents moteurs configurés au lieu de l’unique moteur par défaut ;
  • les barres latérales (marque‐pages, historique, onglets synchronisés) peuvent être déplacées vers le côté droit de la fenêtre :
  • la capture d’écran des pages est possible directement depuis le navigateur avec l’outil Firefox Screenshots. Cet outil permet de créer des captures d’écran de pages entières ou d’une partie seulement et de les enregistrer localement ou sur le cloud de Firefox. Ce nouvel outil sera activé uniquement pour une partie des utilisateurs afin de continuer les tests du service :
  • l’impression depuis le mode lecture a été simplifiée ;
  • sur Mac OS X et macOS, Firefox permet d’assigner des raccourcis personnalisés aux menus via le menu Préférences systèmeClavierRaccourcis.

Firefox pour bureau continue de développer ses performances :

  • les sessions comportant un grand nombre d’onglets sont dorénavant restaurées instantanément ;
  • les performances peuvent être optimisées :
    • par l’activation de l’accélération matérielle, quand elle est disponible. Pour le format vidéo VP9, par exemple, il est nécessaire d’utiliser Windows 10 Anniversary Edition. L’option est désactivée si aucune accélération matérielle n’est disponible pour la configuration matérielle et logicielle de la machine,
    • par l’ajustement de la limite maximale du nombre de processus utilisés pour effectuer le rendu des pages Web (un maximum de 4 processus est recommandé, mais il peut être poussé jusqu’à 7).

Mozilla simplifie l’installation de Firefox sur Windows :

  • l’installateur par défaut est simplifié : son exécution télécharge et installe automatiquement Firefox sans action supplémentaire par l’utilisateur ;
  • Firefox 64 bits est automatiquement installé pour les ordinateurs disposant de Windows 64 bits et d’au moins 2 Gio de mémoire vive ;
  • Les installateurs complets sont toujours disponibles pour les utilisateurs avancés.

Quelques modifications permettent de protéger un peu mieux la confidentialité des données utilisateurs :

  • lors de la saisie d’un nom de domaine sans indication du protocole (http://, https://) dans la barre de navigation, Firefox tente d’abord la connexion avec le protocole sécurisé HTTPS au lieu de HTTP ;
  • le greffon Flash est par défaut en « cliquer pour activer » et uniquement autorisé en HTTP et HTTPS, ce changement va être lancé progressivement et ne sera pas visible par tous les utilisateurs immédiatement. Plus d’informations sur la feuille de route des greffons dans Firefox (en anglais).

En vrac, les autres modifications apportées pour cette version :

  • Firefox pour bureau est traduit en biélorusse (be) ;
  • l’implémentation WebRTC gère maintenant les microphones stéréos ;
  • l’interface utilisateur pour les mises à jour a été modernisée pour être moins intrusive et plus alignée avec le reste du navigateur. Seuls les utilisateurs qui n’ont pas redémarré leur navigateur huit jours après le téléchargement d’une mise à jour ou ceux qui ont désactivé les mises à jour automatiques verront ce changement.

Les développeurs ne sont pas en reste et les outils disponibles reçoivent aussi des mises à jour :

  • le moniteur réseau permet de sélectionner les colonnes à afficher ; de nouvelles colonnes apparaissent également : l’adresse IP distante, le protocole, le schéma, les cookies, les cookies créés ;
  • ce dernier fournit en plus une interface de filtre des connexions à afficher (par des filtres sur les valeurs des colonnes ou par expressions régulières) ;
  • l’en‐tête HTTP SourceMap est pris en compte pour aider le débogage des codes JavaScript « minifiés » ou générés automatiquement depuis d’autres sources].

Comme d’habitude, pour connaître tous les changements sur les technologies invisibles de Firefox (moteur de rendu HTML, DOM, JavaScript, API, WebExtensions…), vous pouvez vous référer aux notes de versions pour développeur (en anglais).

Firefox pour Android

La version 55 de Firefox pour Android est la dernière qui sera installable sur Android 4.0 (sorti en 2011). Ainsi, les dernières mises à jour apportées pour Android 4.0 contiennent :

  • de nouvelles actions qui ont été ajoutées pour gérer les onglets : il est maintenant possible d’ordonner les onglets par le maintien et le déplacement d’un onglet dans la boîte à onglets ;
  • une option d’accessibilité a été ajoutée pour respecter la configuration système des polices lors de l’affichage des pages Web ;
  • pour les vidéos non visibles sur une page Web, le rendu des images ne sera plus effectué pour économiser l’énergie de la batterie. L’audio de ces vidéos, quant à lui, continuera d’être joué ;
  • Firefox pour Android est traduit en grec (el) et en lao (lo)
Prochaines versions

La version 56 de Firefox est prévue pour le 26 septembre, une aide dans l’espace de rédaction est bienvenue pour sortir la prochaine dépêche à temps.

Les prochaines versions verront l’arrivée de :

  • la recherche dans l’écran Préférences, pour trouver rapidement les options de n’importe quelle catégorie ;
  • une restructuration de l’interface de Firefox en version 57. Le projet nommé Photon est déjà activé pour les utilisateurs de Firefox Nightly (la version de test de Firefox). Un débat a été lancé dans le journal de Jiehong : est‐ce que le nouveau projet Photon est un retour en arrière par rapport à l’ancien projet Australis ?
Autour de Firefox Campagne de financement réussie pour Grammalecte

Le développeur de Grammalecte pourra mettre à jour son extension Firefox grâce au succès de sa seconde campagne de financement participatif.

Comme Mozilla a changé son fusil d’épaule pour les recommandations des technologies à utiliser pour les développeurs d’extensions (WebExtensions à la place du SDK qui remplaçait déjà XUL), Olivier devra reprendre le code de l’extension Grammalecte créée suite à son premier financement participatif pour rester compatible avec les futures versions de Mozilla Firefox.

Pour plus d’informations, référez‐vous à la dépêche dédiée à la seconde campagne de financement de Grammalecte.

Polémique d’utilisation de Google Analytics dans Firefox via les pages Web de Mozilla intégrées dans l’interface

Le recours à Google Analytics dans Firefox même, sur la page des modules (about:addons), dans l’onglet Catalogue, fait polémique auprès des utilisateurs attachés au respect de leur vie privée.

Techniquement, cette page interne à Firefox n’utilise pas directement Google Analytics, elle contient uniquement un objet XUL browser qui est l’équivalent du conteneur iframe de HTML. Cependant, le contenu de la page pointée par le conteneur pointe sur une page du site Web https://discovery.addons.mozilla.org qui, lui, recourt à Google Analytics.

À noter, d’une part, que ce recueil de données ne semble pas pouvoir être bloqué avec la version WebExtension de uBlock Origin, d’autre part, que le navigateur Tor Browser (une version spécialisée de Firefox pour mieux protéger la vie privée) est aussi concerné.

Un correctif conçu le 13 juillet par Mozilla pour ses sites consiste à bloquer l’envoi de données à Google lorsque le visiteur de https://addons.mozilla.org a activé la fonction « Ne pas me pister » du navigateur. Ainsi, l’activation cette fonction empêche le recueil de données, que ce soit directement sur la page Web addons.mozilla.org ou indirectement par la page about:addons de Firefox.

Confronté à cette polémique, Mozilla a donc finalement décidé d’offrir le choix à l’utilisateur, mais selon la technique de l’opt‐out. Comme il s’agit de collecte de données à l’intérieur du navigateur, le choix de la technique de l’opt‐in aurait sans doute été plus éthique.

De leur côté, les utilisateurs de Tor Browser ont évidemment réagi et ouvert un rapport. La solution appliquée sera la suppression de cet onglet Catalogue dans l’interface de Tor Browser, comme c’était déjà prévu pour d’autres raisons dans ce projet.

Vous pouvez lire le journal d’antistress pour plus de détails et de débats à ce sujet.

Télécharger ce contenu au format Epub

Lire les commentaires

Loi Finances 2016 : un soulagement pour les logiciels de compta

9 août, 2017 - 08:43

Pour petit rappel la loi finances 2016, mise en application pour le 1er janvier 2018 introduit des contraintes pour les logiciels de caisse et de comptabilité (en gros, ne pas pouvoir supprimer des données) et un système d’attestation et de certification pour engager la responsabilité de quelqu’un en cas de fraude constatée avec le logiciel. Elle concerne tous les assujettis à la TVA.

Le 15 juin dernier (oui, ça date un peu), le gouvernement a indiqué que le champ d’application de cette loi ne concernerait plus les logiciels de comptabilité, et donc uniquement les logiciels d’encaissement. Le communiqué indique également une volonté de simplifier les contraintes.

LinuxFr.org a publié plusieurs dépêches sur le sujet grâce à la mobilisation de l’April et de la société Scil, éditrice du logiciel (libre) de caisse Pastèque.

C’est une très bonne nouvelle pour les logiciels de comptabilité qui évite ainsi l’obligation d’être certifiés ou attestés. Ouf !

En revanche, pas encore de détails du périmètre précis. Les nouveaux textes seront disponibles « d’ici la fin de l’année ». On espère juste que ce ne sera pas le 20 décembre.

Le texte indique qu’il reste six mois pour se mettre en conformité. C’est donc un flou par rapport à d’autres informations qui circulent indiquant que la mise en application serait repoussée de six mois. Information pour laquelle je n’ai pas trouvé de référence officielle. Le communiqué indique bien la mise en application de la loi au 1er janvier 2018.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de GHC 8.2.1

7 août, 2017 - 10:52

Une nouvelle version majeure du compilateur GHC pour Haskell est sortie.

Cette dépêche présente rapidement le langage Haskell, puis les nouveautés de la version 8.2.1 qui vient de sortir. En fin de dépêche, un exemple plus complet d’un code Haskell est présenté afin de motiver à l’usage de ce langage.

Sommaire Présentation d’Haskell et de GHC

Haskell est un langage de programmation fonctionnelle. Je vous invite à lire la dépêche de la sortie de GHC 8.0.1 qui réalise une présentation plus complète du langage.

Une reformulation de la page de présentation du langage pourrait être la suivante :

  • Haskell est un langage statiquement typé. Chaque expression a un type qui est déterminé à la compilation et le compilateur s'assure que l'assemblage d'expressions a un sens. Ceci permet de fournir quelques garanties sur le programme, mais cela permet aussi beaucoup d'expressivité.
  • Haskell est un langage au typage inféré. Cela signifie que tous les avantages du typage statique viennent gratuitement, sans devoir écrire de déclaration complexe de type.
  • Haskell est purement fonctionnel. C'est un des langages (sans parler des langages dérivés d'Haskell ou d'un de ses ancêtres, Miranda, purement fonctionnel et à évaluation paresseuse) qui a cette propriété où, de façon simplifiée, les effets de bords apparaissent explicitement.
  • Haskell est concurrent. GHC, son compilateur le plus connu propose des primitives efficaces pour la concurrence et est capable d'exploiter tous les cœurs de calcul d'une machine.
  • Haskell est rapide : dans certains cas, on peut approcher les performances de langages comme C++
  • Haskell est paresseux, c'est un des rares langages à ma connaissance ayant cette caractéristique.
  • Haskell vient avec de nombreux paquets pour de nombreuses applications.

À mon avis, Haskell / GHC est un outil intéressant à regarder, car il est un des rares langages « grand public » à proposer certaines fonctionnalités, comme la séparation explicite des effets de bords ou l'évaluation paresseuse. En outre, Haskell propose un système de type très puissant permettant de modéliser son domaine de travail de façon élégante. Il s'agit d'un outil capable dans beaucoup de domaines, allant du web au HPC, proposant de très bonnes performances et une sécurité accrue.

Changements

Comme d'habitude, de nombreux bugs et autres subtilités ont été réglés. J'ai essayé de résumer dans cette section les points que je trouve intéressants dans les notes de mise à jour.

Mon changement préféré est que le compilateur affiche maintenant ses messages d'erreur avec de la couleur et un petit symbole montrant la zone de l'erreur.

Performance

Un des gros apports de cette 8.2.1 concerne la performance du compilateur qui est annoncé comme plus rapide, mais les notes de versions sont pauvres d'informations à ce sujet.

De nombreux points visant les performances du code exécuté ont été traités, certains sont discutés dans les points suivants.

Join points

Les « join points » sont décrits sur le wiki et dans cette vidéo de Simon Peyton Jones : Compiling without continuations.

Il s'agit d'une optimisation permettant de détecter plus de code sujet à être transformé en appel récursif terminal, ceci permettant une réduction non négligeable des allocations, puisqu'un appel récursif terminal se résume à peu de choses près à un saut dans le programme.

Compact regions

Un des gros reproches faits à la gestion de mémoire par Ramasse-miettes_(informatique) est le temps que peuvent prendre les phases de collection de mémoire. Dans le cas d'Haskell, l’implémentation choisie est en mode « Stop the world », dit autrement, tout s’arrête pendant la phase de récupération de la mémoire. Cette phase peut être longue car toute la mémoire utilisée par le processus doit être scannée pour mettre à jour la liste des objets vivants ou morts, et ceci peut introduire des pauses peu acceptables dans certains contextes temps réel.

GHC 8.2 propose les compact regions qui sont des espaces de stockage d'objets qui ne font pas référence à d'autres objets en dehors de cet espace. Ainsi le ramasse-miettes peut ignorer cet espace pendant sa phase de parcours de la mémoire pour un gain de temps proportionnel à la quantité de mémoire qui n'a pas été parcourue.

Point intéressant, une région compacte peut être sérialisée sur le disque de façon efficace.

Types somme dépackés

La représentation en mémoire d'un objet hiérarchique en Haskell dans GHC est composée de nombreuses indirections de pointeurs qui consomment de la mémoire et coûtent cher en performance du fait de l'absence de localité et d'un stress supplémentaire sur le ramasse-miettes.

Le travail sur l'extension UnpackedSumTypes permet de représenter plus efficacement les types somme (i.e. les enums).

Numa

Des optimisations pour les architectures Numa (Non_Uniform_memory_Access) sont en place. Pour rappel, les architectures Numa ont des zones de la mémoire qui sont privilégiées par certains cœurs de calcul. Ainsi, il est plus efficace d'allouer la mémoire nécessaire pour un cœur dans une zone proche de celui-ci.

Meilleure gestion du format DWARF

Le format DWARF est utilisé par de nombreux outils de debug ou d'analyse de performance comme gdb, valgrind, perf. L'amélioration de sa gestion permet, entre autres, une meilleure prise en charge de ces outils.

Pour information, perf est un outil qui permet de faire du profiling statistique de tout programme. Au lieu d'instrumenter le code pour compter très précisément les appels de fonctions, ce que pourrait faire un compilateur, perf se contente de regarder l'état du programme à différent instants.

Cette méthode de profiling a de nombreux avantages. Elle ne nécessite pas de recompiler le code source pour ajouter l'instrumentation et ainsi elle ne modifie pas l'exécution du programme. Les résultats sont plus pertinents qu'une méthode avec instrumentation car celle-ci peut avoir un coût qui biaise les résultats. Elle permet aussi de lancer le profiling sur un programme qui s'exécute déjà.

Malheureusement, GHC génère des programmes avec un modèle d’exécution bien différent de ceux des langages plus traditionnels, d'où la difficulté d'utiliser ces outils. La page du wiki GHC sur DWARF détaille ces problématiques et les améliorations réalisées dans GHC 8.2.

BackPack

BackPack vise à proposer un système de module plus puissant.

On rappelle qu'en Haskell il existe une quantité impressionnante de types pouvant représenter une chaîne de caractères :

  • String, qui n'est autre qu'une liste chaînée de caractères Unicode. ([Char]). Celle-ci est déconseillée pour la gestion de vraie chaîne de caractères, du fait du coût en mémoire et des performances associées aux listes chaînées.
  • Text, qui est une représentation compacte de chaînes Unicode. Performante, elle est cependant critiquée par son choix de l'encodage interne — utf-16 — du fait du surcoût en mémoire comparé à de l'utf-8. Ce type vient en version stricte et paresseuse.
  • ByteString, qui est une représentation compacte de suite d'octets. Utilisée principalement pour les interactions binaires, elle vient en version stricte et paresseuse.
  • les Foundation String qui se veulent une alternative au Text en utilisant le codage interne en utf-8.

Il en existe sûrement d'autres.

Bref, c'est la jungle, car chaque type a son utilité en fonction de ses besoins en traitement correct des caractères, en traitement binaire, en évaluation paresseuse ou stricte.

Avant BackPack, faire un module gérant les différents types de chaîne de caractères disponibles dans Haskell revenait à devoir faire autant de modules que d’implémentations à gérer… bonjour la duplication de code.

Grâce à BackPack, les modules peuvent être paramétrés par une interface de type, permettant une implémentation générique du module. C'est très similaire aux modules paramétrés de OCaml.

Stratégie de dérivation

Haskell propose un mécanisme de dérivation de comportement automatique. Par exemple :

data Vector = Vector { x :: Float, y :: Float, z :: Float } deriving (Show, Eq)

Crée une classe Vector, représentant un triplet de flottant. La clause deriving permet au compilateur d'écrire automatiquement les fonctions d'affichage des égalités, par exemple :

>>> v = Vector 1 2 3 >>> v Vector {x = 1.0, y = 2.0, z = 3.0} >>> v2 = Vector 4 5 6 >>> v == v2 False >>> v == v True

On peut aussi imaginer dériver automatiquement les comportements de séralisation, hash, conversion avec JSON, …

Ce mécanisme a évolué au cours de la vie de Haskell, au départ il permettait de ne dériver que certains comportements fixes proposés par le compilateur. Puis de nouveaux comportements ont été ajoutés. Puis il est devenu possible pour un utilisateur de proposer son propre système pour dériver automatiquement des comportements. Du fait de la profusion de mécanismes de dérivation, certains cas sont devenus ambigus.

GHC 8.2 fait un peu le ménage en proposant DerivingStrategies qui permet de choisir explicitement la stratégie à utiliser. Cet article résume le problème et démontre la solution.

Amélioration du typage dynamique

Haskell est un langage au typage statique, à ce titre il prend en charge bien évidemment la notion de typage dynamique par le biais du module Data.Dynamic.

On peut encapsuler n’importe quel type dans un type Dynamic, mais pour le récupérer il faudra explicitement fournir le bon type :

Prelude Data.Dynamic> a = toDyn "Hello" Prelude Data.Dynamic> b = toDyn True Prelude Data.Dynamic> :type a a :: Dynamic Prelude Data.Dynamic> :type b b :: Dynamic Prelude Data.Dynamic> (fromDynamic a) :: Maybe String Just "Hello" Prelude Data.Dynamic> (fromDynamic a) :: Maybe Bool Nothing Prelude Data.Dynamic> (fromDynamic b) :: Maybe String Nothing Prelude Data.Dynamic> (fromDynamic b) :: Maybe Bool Just True

GHC 8.2 apporte l'implémentation du papier A reflection on types de Simon Peyton Jones, Stephanie Weirich, Richard A. Eisenberg et Dimitrios Vytiniotis, détaillé dans cette vidéo de SPJ. Ces changements ne seront pas forcément visibles pour un utilisateur final, mais ils simplifient et sécurisent l'implémentation de bibliothèques comme Dynamic en remplaçant un hack (un cast) par une opération garantie par le compilateur.

Overloaded record fields

La situation des record, i.e. des structures avec des champs nommés, n'est pas parfaite en Haskell.

Depuis GHC 8.0, beaucoup de travail est fait à ce sujet, notamment avec l'arrivée des extensions :

  • DuplicateRecordField qui permet de définir dans le même module deux types avec des noms de champs égaux.
  • OverloadedLabels qui permet de définir des labels, syntaxiquement #foo qui seront surchargés en fonction du type.

GHC 8.2 va un peu plus loin et propose la classe HasField qui permet d'extraire un champ de record de façon polymorphique, par exemple getField @"x" v permet d'extraire le champ x de v quel que soit le type de v.

Notez que GHC 8.2 est incompatible avec le code de OverloadedLabels de GHC 8.2 et qu'il faudra adapter son code.

Un meilleur support du polymorphisme "levity"

Richard A. Eisenberg - Levity Polymorphism (en anglais).

En Haskell (et dans de nombreux autres langages), il existe des objets « boxés » et des objets non « boxés ». Par exemple, un Int# est représenté par un entier machine sur 64 bits, alors qu'un Int est représenté par un pointeur de constructeur, que l'on pourrait assimiler à un tag de type, et par un Int#, tout cela pour deux fois plus de mémoire.

Généralement, on n'utilise pas les types "non boxés" et le compilateur optimise cela comme il peut. Cependant quand les performances sont attendues, il peut être intéressant d'écrire du code sur des types non "boxés" et à un moment, il devient important de pouvoir écrire des fonctions polymorphiques travaillant aussi bien sur des types "boxés" que "non boxés".

Exhaustivité des patterns

Le nouveau pragma COMPLETE permet de forcer l'exhaustivité des patterns.

Par défaut, chaque type crée aussi un pattern utilisable pour construire / déconstruire le type :

data Point = Point Float Float deriving (Show) isOrigin (Point 0 0) = True isOrigin _ = False getX (Point x _) = x translate (Point x y) (dx,dy) = Point (x + dx) (y + dy)

Il est cependant possible de créer ses propres patterns pour créer de nouvelles façons de construire / déconstruire ses types :

{-# LANGUAGE ViewPatterns #-} {-# LANGUAGE PatternSynonyms #-} pattern PolarPoint r phi <- (\ (Point x y) -> (sqrt (x*x+y*y), atan2 y x)) -> (r, phi) where PolarPoint r phi = Point (r * cos phi) (r * sin phi

Ici, je crée un pattern PolarPoint r phi qui représente un point en coordonnées polaires. On peut s'en servir autant pour créer que pour déconstruire :

> PolarPoint 10 0 Point 10.0 0.0 > PolarPoint 10 (pi / 2) Point (-4.371139e-7) 10.0 > PolarPoint r angle = Point 2 2 > r 2.8284271247461903 > angle 0.7853981633974483

Cependant, avant GHC 8.2, le compilateur râlait sur les fonctions utilisant ce pattern :

-- | Retourne `True` si le point est plus loin qu'un rayon de 10 isFar :: Point -> Bool isFar (PolarPoint r _) = r > 10 Polar.hs:18:1: warning: [-Wincomplete-patterns] Pattern match(es) are non-exhaustive In an equation for ‘isFar’: Patterns not matched: _ | 18 | isFar (PolarPoint r _) = r > 10 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

En effet, le compilateur ne peut pas prouver tous les cas de figure des patterns, ce qui se traduit par beaucoup de faux positifs dans lesquels les vrais positifs sont cachés, rendant cette fonctionnalité peu utilisable.

Depuis GHC 8.2, l'utilisateur peut fournir une directive de compilation {-# COMPLETE PolarPoint #-} permettant de spécifier que le pattern PolarPoint couvre tous les cas de figure.

L'écosystème

Stack est un outil de gestion de dépendance pour Haskell. Il peut sous-traiter à Nix pour les dépendances non Haskell, permettant ainsi la compilation dans un environnement contrôlé. Pour faire simple, un programme Haskell peut être compilé en une seule ligne de commande stack build sans devoir se préoccuper de l'installation de dépendances.

L'utilisation de Stackage qui fournit des snapshots de packages versionnés garantit qu'un programme compilé il y a quelques mois le sera dans les mêmes conditions.

Stack a gagné dernièrement une nouvelle commande script qui permet d’exécuter un programme Haskell comme un script en installant les dépendances listées dans le script lui-même. Nous verrons un cas d'usage dans la section d'exemples plus loin.

Le futur

Haskell (et GHC) évolue constamment. Cette section liste quelques projets excitants pour l'avenir.

Typage dépendant

Cet article de blog détaille le travail sur les types dépendants en Haskell qui devrait arriver plus ou moins rapidement, l'auteur parlant de GHC 8.6.

Les Types dépendants permettent d'enrichir le système de type afin de garantir plus de choses.

Pour expliciter cela, nous allons traiter un petit problème de multiplication de matrices.

Soit un type Matrice qui pourrait être représenté comme suit en Haskell :

data Matrice = Matrice { nLignes :: Int, nColonnes :: Int, donnée :: (... structure non détaillée ...) }

Le produit matriciel est une opération classique d’algèbre qui s'effectue entre deux matrices et renvoie une nouvelle matrice. Cependant il y a une contrainte entre la taille des matrices d'entrées et le résultat de la matrice de sortie. Une matrice de taille (m, n) ne peut être multipliée que par une matrice de taille (n, p) pour obtenir une matrice de taille (m, p).

Bien souvent cette contrainte est assurée par une vérification à l’exécution :

produitMatrice :: Matrice -> Matrice -> Matrice produitMatrice (Matrice m n dataA) (Matrice n' p dataB) | n == n' = (Matrice m p (... calcul non détaillé ...)) | otherwise = error "Pas les bonnes tailles"

Il est à l'heure actuelle possible en Haskell de spécifier ces tailles directement dans le type, tel que :

data Matrice nLignes nColonnes = Matrice { donnée :: (... structure non détaillée ...) }

Donnant ainsi le produit suivant :

produitMatrice :: Matrice m n -> Matrice n p -> Matrice m p produitMatrice (Matrice dataA) (Matrice dataB) = Matrice (... calcul non détaillé ...)

Cette approche force le compilateur à vérifier que les tailles de nos matrices sont correctes pendant la compilation, ce qui supprime totalement toute une classe d'erreur à l’exécution.

Justin Le a rédigé une très bonne série d'articles qui traite de l'état actuel du typage dépendant en Haskell en implémentant un réseau de neurone multi couches.

Une des limitations de cette approche est que les tailles, des réseaux de neurone ou des matrices de notre exemple, doivent être connue intégralement à la compilation, empêchant l'écriture d'un outil pouvant charger depuis le disque une matrice de taille quelconque.

Dans la seconde partie de son article, Justin Le parle de ce problème et montre les solutions existantes pour réaliser ce type d'opérations. On peut donc écrire une fonction de chargement de matrice depuis le disque avec des tailles statiques :

chargerMatrice :: Filename -> IO (Matrice n m)

Je ne détaillerais pas la solution, c'est, à mon avis, lourd et rébarbatif. Le travaille sur le typage dépendant qui est en cours dans GHC vise à simplifier cela.

Typage linéaire

Le typage linéaire devrait arriver sous peu dans GHC. Ce travail est en grande partie réalisé par une société française, tweag.io, donc cocorico ;) On note leur publication sur les types linéaires et leur premier article de Blog expliquant le projet.

Les types linéaires apportent à la fois un potentiel de performance et de sécurité / modélisation.

Pour simplifier, c'est une façon de dire qu'une valeur ne sera utilisée qu'une et une seule fois. Je ne rentrerai pas dans les détails de son implémentation en Haskell puisque c'est tout nouveau et que les choses peuvent beaucoup bouger, je me contenterai de donner deux exemples de problématiques que les types linéaires peuvent résoudre.

Sécurité et modélisation

Cet article de Blog détaille ce point, l'exemple qui suit est similaire.

Quand on utilise des sockets, on peut faire de nombreuses actions en fonction de l'état de la socket, qui sont résumées dans le graphe suivant:

Non initialisée ---bind()---> En attente ----listen()---> En écoute \ / \ accept() \-----connect()----> Envoyer/Recevoir <==========/

Ici, une flèche simple représente un changement d'état de la socket. Et la flèche === représente le fait que la fonction accept retourne une nouvelle socket directement dans l'état d'envoi et de réception de message.

À chaque état est associé une liste d'opérations possibles, par exemple recv et send ne sont possibles que dans l'état de transfert.

On pourrait modéliser ces états par des types différents :

data NonInitSocket = NonInitSocket Int data AttenteSocket = AttenteSocket Int data EcouteSocket = EcouteSocket Int data TransfertSocket = TransfertSocket Int

L'Int représentant le descripteur de fichier bas niveau de la socket.

Et à cela s'ajoute des fonctions :

create :: IO NonInitSocket bind :: NonInitSocket -> Addr -> IO AttenteSocket listen :: AttenteSocket -> Int -> IO EcouteSocket connect :: NonInitSocket -> Addr -> IO TransfertSocket accept :: EcouteSocket -> IO TransfertSocket send :: TransfertSocket -> String -> IO () recv :: TransfertSocket -> Int -> IO String closeEcoute :: EcouteSocket -> IO () closeTransfert :: TransfertSocket -> IO ()

Les IO matérialisant que chacune de ces fonctions réalise des effets de bord.

Et là tout est beau dans le meilleur des mondes, on ne peut pas exécuter une fonction qui n'a pas de sens sur une socket qui n'est pas dans le bon état.

Sauf que si… Observons le code suivant :

fonctionBugée = do s <- create attenteSocket <- bind s anAddr ecouteSocket <- listen attenteSocket 3 ... transfertSocket <- connect s anotherAddr

Ici on voit qu’on se sert deux fois de s ce qui est faux puisque à ce moment le descripteur de socket qui est stocké dans s correspond à une socket en état d'écoute.

On remarque aussi qu'on ne ferme jamais nos sockets.

Les types linéaires peuvent ici nous sauver en refusant à la compilation le second usage de s. De même, la compilation pourrait refuser ce code qui n'utilise pas ecouteSocket ni transfertSocket, la seule façon de les utiliser étant de les fermer. Ainsi les types linéaires permettent de détecter à la compilation des mauvais usages de ressources.

Performance

Haskell est un langage où on maximise la non mutabilité. Ainsi on va préférer créer une nouvelle structure de données plutôt que d'en modifier une. Haskell tire profit de cette non mutabilité pour partager au maximum les parties communes entre plusieurs données.

S'il existe des structures non mutables performantes (à lire, c'est très instructif), ce n'est pas le cas de toutes les structures. Ainsi, un vecteur n'est pas du tout adapté à la non mutabilité, car il faut recopier intégralement celui-ci en cas de modification d'une unique case.

Une des premières choses qui vient à l'esprit c'est que si personne d'autre n'utilise la donnée, on pourrait la modifier sans scrupule. Cette information n'est cependant pas connue à la compilation et serait trop coûteuse à calculer lors de l’exécution.

Les types linéaires permettent de garantir que notre valeur ne sera utilisée qu'une seule fois, sous peine de refuser de compiler. Cette information en main, une bibliothèque pourra proposer des fonctions optimisées avec mutation pour remplacer les fonctions qui copient. Et cela sans faire apparaître de mutation dans le code utilisateur.

Exemple d'Haskell : le dîner des philosophes

La fin de cette dépêche est consacrée à un exemple de résolution d'un problème en Haskell. Merci à jiehong de m'avoir soufflé l'idée de présenter la mémoire transactionnelle.

Introduction

Nous allons nous intéresser au problème des philosophes. Il s'agit d'un problème classique de programmation concurrente qui brille autant par son énoncé trivial que par le nombre de problématiques d’implémentation qu'il soulève.

À une table ronde d'un restaurant italien, des philosophes discutent en mangeant. Chaque philosophe a à sa droite et sa gauche une fourchette, qu'il partage avec son voisin de droite et de gauche.

Pour manger, un philosophe doit prendre les deux fourchettes, il pourra ensuite manger pendant un laps de temps variable, puis reposera les fourchettes. Cependant, en prenant les fourchettes, il empêche son voisin de droite et de gauche de manger.

Le problème est donc d'ordonnancer le repas des philosophes en évitant des situations d'interblocage courantes tel que :

  • des « dead lock », où un philosophe sera en attente d'une fourchette prise par une autre philosophe lui-même en attente d'une autre fourchette. On peut imaginer une situation ou tous les philosophes sont bloqués de cette manière.
  • des « live lock », où les fourchettes changent de main en permanence, mais sans que personne ne puisse manger.

Une solution simple à ce problème consiste en l'usage d'un verrou global. Chaque philosophe désirant manger va tenter de prendre le verrou global et une fois celui-ci verrouillé, il prendra ses deux fourchettes si et seulement si les deux sont disponibles. Cette solution est triviale à implémenter, mais ne passe pas à l'échelle, car elle séquence toutes les opérations de prise ou de dépose des fourchettes. Il faut donc employer une stratégie plus fine.

Il existe de nombreuses solutions à ce problème, nombreuses sont complexes à implémenter, et impose une grande rigueur. Par exemple en s'assurant de ne prendre et rendre les verrous toujours dans le même ordre, on s'assure théoriquement qu'il n'y a pas d'interblocage, par exemple si un philosophe s'assure de prendre la fourchette gauche avant la droite. Mais il y a le cas du dernier philosophe de la table qui doit prendre sa fourchette droite avant la gauche, la fourchette droite étant en fait la première de la table. Bref, vous l'aurez compris, ce n'est pas trivial.

Dans cet exemple de code Haskell, nous présenterons une solution utilisant les primitives de STM, "Software Transactional Memory", Mémoire transactionnelle logicielle. Cette technique offre de nombreux avantages, en termes de facilité de programmation et de composition du code.

STM et Haskell

En Haskell, nous pouvons créer une zone de mémoire modifiable par STM grâce à la fonction newTMVarIO. Cette zone contiendra ou pas une valeur. Grâce à putTMVar, nous pouvons mettre une valeur dans la zone. takeTMVar vide la zone et renvoie la valeur. Cette opération est bloquante.

Nous pouvons représenter une fourchette par une TMVar () contenant simplement un (). On aurait pu mettre n'importe quoi dedans, la seule chose nous intéressant étant de savoir si la valeur est dedans ou pas.

On peut composer ensemble un certain nombre d'opérations sur des TMVar et exécuter atomiquement le bloc grâce à atomically.

Les STM divergent d'une stratégie plus classique à base de mutex par :

  • des opérations sont composables. On peut créer une action plus complexe à partir d'une ensemble de petits actions. Bien évidemment, plus l'action est complexe, plus la transaction a des chances d'échouer et de devoir recommencer.
  • les opérations atomiques ont une granularité très fine, car elles ne « verrouillent » que les variables impliquées dans la transaction. Ainsi on peut facilement imaginer modifier une structure de données en plusieurs points par plusieurs threads sans qu'il n'y ait de conflit.
Exemple d’exécution

Pour exécuter le programme, nous ferons appel à stack qui après installation des bibliothèques nécessaires va utiliser GHC en mode interprété, ce programme ne demandant pas de performance particulière.

Le programme prend en paramètre le nombre de philosophes autour de la table. Chaque philosophe est nommé par une lettre. Quand celui-ci commence à manger, la console affiche une lettre majuscule, quand celui-ci s’arrête, elle affichera une lettre minuscule. Les philosophes essayent de manger pendant 30 secondes.

Avec deux philosophes, on est en situation où seulement l'un peut manger :

$ ./Philosopher.hs 2 AaBbAaBbAaBbAaBbA

Avec trois philosophes, seulement un peut manger

$ ./Philosopher.hs 3 AaBbCcAaBbCcA

Avec quatre, c'est plus intéressant. Les philosophes ne peuvent manger ensemble que par groupes de 2, c’est-à-dire soit A et C, soit B et D. Ainsi, pour changer de groupe, il faut que les deux philosophes du même groupe arrêtent de manger en même temps. L’implémentation fait manger les philosophes pendant un temps aléatoire compris entre 0 et 2 secondes, et ils se reposent pendant 100 ms avant de recommencer à essayer de prendre les fourchettes. Ainsi, le moment ou les deux philosophes d'un groupe viennent de s’arrêter de manger ensemble est assez rare :

$ ./Philosopher.hs 4 ACcCaAcCaAcCaAcCcaBDdDdDbBdDbdACcaBDdDbB # ----------------| ICI

Avec plusieurs philosophes, c'est bien plus drôle :

$ ./Philosopher.hs 10 ACEGIcgCGcCgGcaBiJjIeDgFbAiHdChIfGEgGeiEcICaAcCaAeiEIicICgGiIaAeEeEcCgGiIaAeEicICcCigH Implémentation

Cette section détaille une solution en Haskell de ce problème. Des paragraphes d'explications s’intercalent entre les blocs de code qui peuvent être copiés collés en tant que tels dans un fichier Philosopher.hs.

Prélude

On commence par le Shebang décrivant interpréteur à utiliser. Ici stack. La ligne suivante liste les packages nécessaires pour ce fichier, à savoir stm pour l'usage de la mémoire transactionnelle, random pour générer des nombres aléatoires et optparse-generic pour lire la ligne de commande.

#!/usr/bin/env stack -- stack script --resolver lts-9.0 --package "stm random optparse-generic" {-# LANGUAGE OverloadedStrings #-}

Viennent l'import des modules nécessaires pour notre code. J'ai choisi d'importer de façon qualifier chaque fonction afin que le lecteur puisse connaitre sa provenance.

module Main where import Control.Monad (replicateM, forever) import Control.Concurrent.STM (TMVar, putTMVar, takeTMVar, newTMVarIO, STM, atomically) import Control.Concurrent (forkIO, killThread, threadDelay, ThreadId) import System.Random (randomRIO) import Data.Char (toLower) import Options.Generic (getRecord) Fourchettes

La gestion des fourchettes. En premier lieu, le type Fork qui représente une fourchette. Celui-ci contient un TMVar (), c’est-à-dire un conteneur STM qui peut contenir un (), c’est-à-dire « rien ». Mais on peut connaitre la présence ou l'absence de ce rien et c'est ce qui nous intéressera.

data Fork = Fork (TMVar ())

takeFork et releaseFork respectivement prennent et reposent une fourchette. takeFork sera bloquant. On note au type des fonctions que ces opérations s'effectuent sous le contrôle de la STM.

-- | Prend une fourchette. Bloquant. takeFork :: Fork -> STM () takeFork (Fork var) = takeTMVar var -- | Repose une fourchette. Non Bloquant. releaseFork :: Fork -> STM () releaseFork (Fork var) = putTMVar var ()

La création d'une fourchette avec mkFork implique la création d'une TMVar avec newTMVarIO :

-- | Crée une fourchette mkFork :: IO Fork mkFork = do var <- newTMVarIO () pure (Fork var)

Ce morceau de code implique énormément de choses sur Haskell, nous allons nous y attarder un moment. Le type de la fonction est IO Fork, c'est une action d'entrée / sortie qui renvoie une fourchette. La première ligne réalise une action newTMVarIO () qui crée une nouvelle TMVar contenant un (). Celle-ci est stockée dans var. Il ne s'agit pas d'une égalité, mais d'une affectation, ici var est bien le résultat de l’exécution d'une action et non pas une égalité qui serait représentée avec le signe =.

La valeur de retour de la fonction est Fork var c’est-à-dire la TMVar encapsulée dans le type Fork. Cette expression Fork var, de type Fork ne représente pas une action à effet de bord, ainsi elle ne peut pas être la valeur finale de la fonction (qui est de type IO Fork). Il faut donc encapsuler de nouveau le Fork dans une IO, est cela est fait grâce à la fonction pure.

Ne vous en formaliser pas trop, c'est surprenant au début, mais on s'y fait vite.

La création de n fourchettes se fait grace à la fonction replicateM qui réplique l'action mkFork et donc renvoie une liste de Fork. le M ici signifie que on réplique une action. Sinon on pourrait écrire replicate 3 True == [True, True, True] sans le M car True n'est pas une action.

-- | `mkForks n` crée une liste de `n` `Fork` disponibles mkForks :: Int -> IO [Fork] mkForks n = replicateM n mkFork Philosophes

Un philosophe est simplement une structure qui comprend un nom, sous la forme d'un Char, et deux Fork.

-- | Un `Philosopher` est représenté par son nom et deux fourchettes data Philosopher = Philosopher Char Fork Fork

La création de plusieurs philosophes, en se servant de fourchettes est la suivante :

-- | Crée le nombre de philosophes associés aux fourchettes mkPhilosophers :: [Fork] -> [Philosopher] mkPhilosophers forks = zipWith3 Philosopher ['A'..] forks (last forks : forks)

Cette fonction est très concise mais complexe. Nous avons une liste de fourchettes (pour simplifier [fork0, fork1, fork2]) et nous voulons crée une liste de Philosophes chacun associé à une lettre et à deux fourchettes.

On aimerait la liste suivante : [Philosopher 'A' fork0 fork2, Philosopher 'B' fork1 fork0, Philosopher 'C' fork2 fork1].

Un motif apparaît, on voit qu'il s'agit de la fonction Philosopher appliquée à 3 arguments pris respectivement dans 3 listes distinctes grace à la fonction zipWith3 :

  • ['A', 'B', 'C'], que nous représentons ici avec la liste infinie ['A' .. ]
  • [fork0, fork1, fork2], c'est tout simplement forks
  • [fork2, fork0, fork1], qui est ici (last forks : forks)

Cela fonctionne car zipWith3 ne consomme qu'en fonction de la longueur de la liste la plus courte.

Vie d'un philosophe

Une étape de la vie d'un philosophe est une fonction assez longue, mais peu complexe. La prise et la relâche des fourchettes est réalisée dans un bloc atomically, le reste n’étant que des attentes et un peu d'affichage.

-- | Un `Philosopher` essaye de manger. runPhilosopher :: Philosopher -> IO () runPhilosopher (Philosopher name forkA forkB) = do -- Prends les fourchettes de façon atomique, garantie par STM atomically $ do takeFork forkA takeFork forkB -- Affiche son nom en majuscules putChar name -- Mange pendant un temps aléatoire compris entre 0 et 2 secondes time <- randomRIO (0, 2 * 1000 * 1000) threadDelay time -- Affiche la fin du repas (nom en minuscule) putChar (toLower name) -- Repose les fourchettes de façon atomique atomically $ do releaseFork forkA releaseFork forkB -- Attend avant de recommencer pendant 100 ms threadDelay (1000 * 100) forkPhilosopher

Cette fonction, pour un philosophe donné p, crée un green thread qui exécute en boucle infinie grâce à forever une étape de la vie de notre philosophe.

forkPhilosopher :: Philosopher -> IO ThreadId forkPhilosopher p = forkIO (forever (runPhilosopher p)) main

Le main contient un peu de logique pour lire la ligne de commande et crée les philosophes.

main :: IO () main = do -- Lit le nombre de philosophe sur la ligne de commande nPhilosopher <- getRecord "Philosopher" -- Crée les fourchettes et les philosophes forks <- mkForks nPhilosopher let philosophers = mkPhilosophers forks -- Crée les threads par philosophe tIds <- mapM forkPhilosopher philosophers -- Attend 10 secondes et tue les threads threadDelay (1000 * 1000 * 10) mapM_ killThread tIds

Quelques points à discuter dans cette fonction main. En premier lieu j'utilise getRecord pour lire la ligne de commande. Cette fonction, du module optparse-generic, est capable de créer toute seule une interface ligne de commande en fonction du type de retour demandé, ici un Int, en gérant automatiquement la lecture de la ligne de commande, la validation des arguments et l'affichage de l'aide si nécessaire. Cela m'a économisé 3 lignes de logique pour lire les arguments, vérifier qu'il y en avait au moins un, et le convertir en Int et afficher une erreur le cas échéant. Ce n'était pas forcement nécessaire dans ce contexte, mais cela devient extraordinaire avec une interface plus complexe impliquant des arguments optionnels, des drapeaux booléens, ou autres.

La création des fourchettes est une opération avec effets de bord, d'où l'affectation du résultat avec <-. La création des philosophes elle ne réalise pas d'effet de bord, c'est une fonction pure, d'où l’égalité = qui signifie réellement que philosophers est sémantiquement équivalent à mkPhilosopher forks dans les lignes qui suivent. C'est un outil de compréhension de code que je trouve plaisant.

Pour finir, la création des threads se fait avec mapM qui va applique la fonction forkPhilosopher à chaque philosophe et renvoyer l'identifiant du thread crée.

Conclusion

GHC 8.2 c'est sympa, il y a pleins de nouvelles fonctionnalités qui rendent heureux un développeur Haskell régulier. Mais soyons réaliste, ce n'est pas ces nouvelles fonctionnalités qui vont vous motiver à utiliser Haskell, c'est pourquoi j'ai essayé de présenter un cas concret d'utilisation du langage sur un problème assez classique d'algorithmie.

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 32 de l’année 2017

6 août, 2017 - 00:17

Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 13 événements (0 en Belgique, 7 en France, 0 au Luxembourg, 6 au Québec, 0 en Suisse et 0 en Tunisie) est en seconde partie de dépêche.

Sommaire [QC Montréal] DebConf17 - la conférence annuelle de Debian - Du dimanche 6 août 2017 à 09h00 au samedi 12 août 2017 à 17h00.

DebConf est la conférence annuelle où les gens qui développent Debian et autres personnes intéressées se réunissent dans le but d'améliorer Debian.  Les DebConf précédentes ont accueilli des présentateurs et participants de partout dans le monde pour parler de Debian.  Par exemple, l'année passée, à Cape Town en Afrique du Sud, DebConf16 a vu venir du monde de 30 pays différents.
Étant donné que le travail qui est fait sur Debian par ce monde divers est effectué en anglais, les événements DebConf ont lieu en anglais, aussi.  Cependant, pour l'Open Day, la journée portes-ouvertes qui précède DebConf17, nous encourageons les gens qui le veulent de présenter en français.
Pour plus de renseignements par rapport à DebConf17, voir le site web à https://debconf17.debconf.org/

[QC Montréal] Ring on! Célébrez et échangez avec l’équipe Ring! - Le mardi 8 août 2017 de 18h30 à 21h30.

Vous êtes amicalement invité à la soirée "Ring on! Célébrez et échangez avec l’équipe Ring", ce mardi 8 août de 18 h 30 à 21 h 30 dans les locaux de Savoir-faire Linux.
Célébrons ensemble la sortie de la première version stable de Ring "Ring 1.0 - Liberté, Égalité, Fraternité ", un logiciel de communication libre et universel, paquet GNU, soutenu par la Free Software Foundation.
Rencontrez l’équipe Ring! Échangez, essayez et commentez cette version autour d’un cocktail dînatoire convivial. L’équipe sera ravie de recueillir vos avis et impressions sur cette nouvelle version!

  • Savoir-faire Linux, 7275, rue Saint-Urbain, Montréal
  • URL: https://framadate.org/FMX77NhhRVqW86JE
  • Mots-clés: linux, ring [FR Chartres] OpenAtelier - Le mercredi 9 août 2017 de 20h00 à 23h59. ----- L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[QC Montréal] Wikimania 2017 - Du mercredi 9 août 2017 à 08h00 au dimanche 13 août 2017 à 21h00.

Wikimania est la conférence annuelle célébrant Wikipédia et ses projets frères ; trois jours de conférences, de discussions, de formations et d'ateliers. Des centaines de bénévoles et les sommités du savoir libre du monde entier se réunissent pour débattre, s’informer sur les nouvelles idées et approches, échanger et mettre en commun leurs idées.
Les thèmes de la conférence incluent l’avancement du savoir libre, le rôle des institutions académiques et culturelles au sein du mouvement, la vie privée, les droits de l'être humain et le rôle de la technologie pour faire avancer ces objectifs. Wikimania 2017 portera également un regard plus approfondi sur le rôle du Mouvement au sein de la Francophonie, et la programmation d’événements axés sur la promotion du français et des cultures francophones au sein des projets.
Au-delà de l'événement principal, il y a les événements connexes : le « Hackathon » où la communauté technique qui entoure les projets Wikimedia s’unit pour travailler et contribuer, et le « Sourcethon » où les vétérans et les nouveaux arrivants mettent leurs efforts en commun pour préserver et rendre disponibles des documents écrits historiques.

[FR Toulouse] Rencontre Tetalab - Le mercredi 9 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[QC Coteau du Lac] Émission #137 de bloguelinux - Le jeudi 10 août 2017 de 20h00 à 22h00.

bloguelinux.ca est un blogue québécois offrant la diffusion d'un podcast qui traite des logiciels libres, du système d'exploitation Linux et de la technologie en général ; il y a un processeur, il y a un système d'exploitation, c'est certain que ça nous intéresse!
bloguelinux.ca est enregistré le jeudi à 20 heures toutes les deux semaines.
Vous pouvez nous écouter en direct lors des enregistrements à l'adresse http://live.bloguelinux.ca ou directement sur notre site à http://www.bloguelinux.ca en cliquant sur la radio dans le panneau de gauche du site.

[FR Strasbourg] Réunion mensuelle ouverte d'ARN - Le vendredi 11 août 2017 de 18h00 à 22h00.

ARN vous accueil un vendredi par moi pendant le Stammtisch du Hackstub !

Dans ces réunions :
• nous accueillons des visiteur-se-s qui veulent en savoir plus sur notre démarche ou apprendre à nous connaître ;
• nous évoquons les sujets actuels relatifs à l'association et au numérique autour de Strasbourg ;
• nous faisons le point tous-toutes ensemble sur l'avancée des projets de l'association et des projets associatifs environnants ;
• nous profitons de ces instants pour faire avancer les projets de l'association sous forme de groupes de travail ouverts.

Ces réunions se concluent par un repas convivial à l'extérieur.
Ces réunions sont ouvertes à tout le monde, membre d'ARN ou non. Pas d'inscription préalable.

N'hésitez pas à venir échanger avec nous !

[QC Montréal] WordCamp Montréal - Du samedi 12 août 2017 à 08h00 au dimanche 13 août 2017 à 17h00.

WordCamp Montréal est une conférence de deux jours à propos de WordPress, la plateforme de blogue et le système de gestion de contenu le plus populaire au monde. Développeurs, designers, professionnels du Web et blogueurs se rassembleront pour assister à des présentations et des ateliers au sujet de WordPress, et à réseauter.

Cette année, l’événement aura lieu à l’école de gestion John Molson School of Business au centre-ville de Montréal les 12 et 13 août, 2017.

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 12 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 12 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR Morogues] Atelier libre - Le samedi 12 août 2017 de 10h00 à 12h00.

Ateliers d'entraide informatique & bricolages divers

Vous souhaitez apprendre à réparer votre ordinateur De l'aide pour installer votre premier linux 

Vous souhaitez aller plus loin avec un ordinateur et héberger vos outils Un coup de main pour finir un montage électronique

[FR La Couronne] Permanence - accueil public - Le samedi 12 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[QC Montréal] Réparothon INSERTECH à la Foire Écosphère - Le samedi 12 août 2017 de 13h00 à 16h00.

La Foire Écosphère, Éco2Fest et Insertech co-organisent un Réparothon ! Apportez vos appareils défectueux à nos bénévoles. Ils vous montreront comment s’y prendre pour les réparer et les optimiser, afin de prolonger leur durée de vie et de réduire leur empreinte écologique.
Événement gratuit, le nombre de places est limité : premier arrivé, premier servi.
Appareils acceptés :

Télécharger ce contenu au format Epub

Lire les commentaires