Linux France

S'abonner à flux Linux France
Mis à jour : il y a 2 heures 16 min

Lugaru enfin libre

Vendredi 16 Décembre

Peut-être vous souvenez-vous encore de Lugaru, jeu vidéo indépendant faisant partie du premier «Humble Indie Bundle», du temps où ceux-ci contenaient encore des jeux indépendants et tenaient la promesse de fournir des versions GNU/Linux.
Suite au succès de cette opération, le code de 4 des 5 jeux avait été libéré, dont celui de Lugaru.

Après quelques temps les libristes avaient obtenu de Wolfire, l’éditeur, la libération d’une partie des données fournies avec la démo. Cela laissait entrevoir une possibilité de libération complète en remplaçant le reste par des données libres. Si une timide tentative en ce sens a vu le jour, cela n’a jamais abouti.

Mais Wolfire approchant de plus en plus de la sortie de leur prochain jeu Overgrowth, ils ont finalement accepté de mettre sous licence libre l’ensemble du jeu !

Le développement a repris de plus belle (et il y en a besoin, l’état du code est catastrophique), et nous (l'équipe d'OSS Lugaru) venons de sortir Lugaru 1.1, première version libre publiée par la communauté.
Plus d’informations sur les nouveautés et projets futurs dans la suite de la dépêche.

Cette version inclut toutes les nouveautés développées depuis la libération, dont certaines avaient été fusionnées upstream comme la barre de vie, mais d’autres n’étaient encore jamais sorties dans des versions pré-compilées pour le commun des mortels, comme le support multi-campagne.

En effet il existe des campagnes alternatives (mods) pour Lugaru mais jusqu’ici en installer une revenait à remplacer la campagne officielle.
Dans cette version, vous pouvez sélectionner la campagne à lancer dans le menu, votre progression au sein de chaque campagne est sauvegardée.

Nous avons réussi à contacter les auteurs de 3 de ces campagnes alternatives qui ont accepté de placer leur travail sous licence libre, il y a donc 4 campagnes jouables dans cette version !

Par ailleurs, le moteur a été porté de SDL 1.2 vers SDL 2.0, ce qui améliore grandement la gestion de la résolution d'affichage et du clavier. En particulier, les utilisateurs de clavier AZERTY ne devraient plus être des utilisateurs de seconde zone grâce à l'utilisation de scancodes.

Changements

Projet :

  • Passage de Mercurial à Git et de Bitbucket à GitLab.com
  • Mise en place d’intégration continue avec gitlab-ci pour différentes plateformes : Linux GCC, Linux Clang, Windows MinGW32, Windows MinGW64
  • Suppression des dépendances intégrées et souvent obsolètes

Moteur :

  • Support du multi-campagne
  • Migration de SDL 1.2 à SDL 2 (avec l’utilisation des scancodes pour le clavier pour que les contrôles par défaut fonctionnent sur tout clavier)
  • Support d’une vraie installation avec les données dans /usr/share
  • Amélioration du support des arguments en ligne de commande, ajout d’un --devtools pour passer en mode debug sans éditer son fichier de configuration
  • Sauvegarde automatique après chaque niveau passé (utile en cas de crash)
  • Support de la norme XDG et des dossiers standards pour stocker configuration et sauvegardes:
    • Linux: XDG_CONFIG_HOME (par défaut ~/.config/lugaru) et XDG_DATA_HOME (par défaut ~/.local/share/lugaru)
    • OSX: ~/Library/Application Support/Lugaru
    • Windows: %APPDATA%\Lugaru, par exemple C:\Users<you>\AppData\Roaming\Lugaru
  • Ajout d’un .desktop, une icône, un appdata.xml, tout ce qu’il faut pour packager/installer sur nos distributions
  • Correction du paramètre --nomousegrab
  • Ajout d’une option plein écran dans le menu options, et support de Alt+Entrée pour passer en plein écran ou fenêtré
  • Passage de la résolution par défaut à 1024x768 au lieu de 640x480, et du niveau de détail au maximum par défaut
  • Beaucoup de nettoyage de code

Contenu de jeu :

  • Toutes les données de Lugaru HD sont désormais sous licence Creative Commons (CC-BY-SA 3.0)
  • Ajout de trois campagnes alternatives : «Temple» par Silb (CC-BY-SA 3.0), «Empire» par Jendraz (CC-BY-SA 4.0) et «The Seven Tasks» («Les sept tâches») par Philtron R. (CC-BY-SA 4.0)
  • Réorganisation des données, corrections des chemins erronés vers celles-ci dans les cartes existantes

Veuillez noter que le format des sauvegardes a changé, ainsi que le chemin de la plupart des données, donc les cartes alternatives pour la version originale de Lugaru peuvent présenter quelques problèmes de compatibilité, mais peuvent être adaptées.

Aidez-nous !

N’hésitez pas à ouvrir tout un tas de rapport de bugs et de suggestions sur notre GitLab, il est là pour ça.

Si vous connaissez le C++ et n’avez pas froid aux yeux, vous pouvez participer au nettoyage du code en vue de l’ajout de fonctionnalités futures.
C’est assez funky, des fois on remplace des tableaux par des vecteurs et on obtient une segfault parce que le jeu tape en dehors des tableaux, mais jusqu’ici ça marchait parce que les tableaux étaient côte à côte donc ça tombait bien…

Vous pouvez aussi aider coté packaging pour que Lugaru soit disponible dès que possible dans toutes les distributions.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Tryton 4.2

Mercredi 14 Décembre

Fidèle à son rendez-vous semestriel, Tryton est de retour pour sa nouvelle version 4.2. Tryton est une plate-forme 3-tiers de développement d'applications pour entreprise (progiciel de gestion intégré/PGI/ERP) sous licence GPL-3+.

Ses modules de base ne cessent de croître au fil des versions et couvrent la plupart des nombreux besoins de l'entreprise. Son architecture modulaire permet une adaptation selon votre utilisation et vos nécessités.

Avec cette version, Tryton élargit son horizon à des applications utilisateur personnalisées comme Chronos mais aussi comme backend de service web. Un effort particulier a été fourni afin de réduire l'écart de fonctionnalités entre le client Web et le client natif. Le client Web a encore un peu de retard en termes de fonctionnalités mais au rythme actuel cet écart disparaîtra dans quelques versions. Cette version contient de nombreuses corrections de bugs et des améliorations de performances. Le polonais est maintenant une langue officielle de Tryton.

Bien entendu, la migration des versions précédentes est entièrement prise en charge.

Certaines présentations de la conférence annuelle qui a eu lieu en octobre à Barcelone décrivent les nouveautés de cette version, la suite de la dépêche vous propose de les passer en revue. Et elles sont nombreuses ..

Sommaire Les clients

Toutes les nouvelles fonctionnalités sont systématiquement ajoutées au client bureau et web.

Indicateur de comptage

Les onglets des tabulations peuvent désormais avoir un compteur indiquant à l'utilisateur le nombre d'enregistrements concernés. Cette fonctionnalité est activée par défaut sur les onglets où il est intéressant de voir en un coup d’œil le nombre d'enregistrements restants à traiter et ainsi vérifier rapidement les tâches en attente.

Confirmation multiple

Il est maintenant possible de configurer les boutons afin d'avoir un certain nombre de clics d'utilisateurs différents avant validation. Le nombre de clics déjà reçus sera visible sur le bouton et le nom des utilisateurs sera affiché via une info-bulle.

Couleurs dans les calendriers

Dans la vue calendrier, on peut attribuer une couleur à chaque enregistrement et ainsi pouvoir facilement les regrouper visuellement.

Meilleures icônes

Les icônes des champs "relation" prêtaient à confusion auprès de certains utilisateurs pensant chercher un nouvel enregistrement alors qu'ils étaient en train de l'éditer. Le bouton d'édition a donc été déplacé à la gauche du champ et un nouveau bouton permettant d'effacer la valeur a été ajouté.

Fonctionnalités manquantes ajoutées dans le client web (SAO)
  • L'import et l'export CSV ;
  • la vue calendrier ;
  • les champs traduisibles ;
  • les favoris ;
  • le tri des colonnes.
Le serveur Infrastructure Service Web

Le serveur Tryton s'ouvre à de nouveaux usages au delà du modèle client/serveur. Il est maintenant possible pour chaque module d'enregistrer ses propres points d'entrée (URL routing). Pour ce faire, un ensemble d'outils est mis à disposition pour gérer les transactions et l'authentification des utilisateurs. Pour cette dernière, un système d'enregistrement de l'application sur le compte de l'utilisateur a été mis en place. Il permet de ne pas avoir à demander le mot de passe de l'utilisateur mais de simplement stocker une clé qui ne donne accès qu'à un nombre limité d'API.

C'est sur cette infrastructure que repose la première Web Extention Chronos (pour Google Chrome) qui permet d'encoder ses feuilles de présence depuis le navigateur et en mode déconnecté.

Comptabilité

Il est possible maintenant de comparer le bilan et le compte de résultats avec une période précédente dans la même vue. Quand on active la comparaison et que l'on choisit une date ou une période, une nouvelle colonne apparaît contenant le nouveau montant.

La configuration de l'objet taxe peut être parfois complexe. Il est apparu que pouvoir simuler le calcul d'une configuration simplifie cette tâche. Un nouveau wizard de simulation a été développé pour cela.

Par défaut, les impressions des factures étaient stockées définitivement dans la base de données. Mais dans certains cas cela surchargeait le système en terme de volume à sauvegarder. Une nouvelle option permet maintenant de stocker les factures dans le système de fichiers.

Le processus de comptabilisation des factures a été amélioré pour le traitement en masse. Il utilise les toutes dernières améliorations de l'ORM.

L'identifiant fiscal de la société émettrice de la facture est enregistré. C'est utile dans le cas où elle a plusieurs identifiants par exemple un numéro de TVA dans un pays étranger.

La gestion des paiements a aussi bénéficié de quelques améliorations comme la possibilité de les bloquer, mais aussi la mise à niveau du SEPA pour novembre 2016, et également la gestion automatique du statut en fonction des relevés etc.

La comptabilité analytique a aussi reçu une refonte en profondeur. Beaucoup de champs redondants avec la comptabilité générale ont été supprimés. Un nouveau type de compte est disponible pour faire des distributions automatiques. Les lignes de comptabilité générale ont un statut analytique permettant de retrouver les lignes qui doivent encore être affectées. Les amortissements utilisent les écritures analytiques au lieu de la facture fournisseur.

Référentiels

Création d'un enregistrement plus générique des adresses. L'encodage du champ "rue" n'est plus limité à 2 lignes. Il est également possible de configurer le formattage de l'adresse par pays (65 pays sont pré-configurés).

Pour limiter les doublons de tiers dans le système, un nouveau wizard permet de fusionner des tiers ensemble. L'ancien tiers sera désactivé pour garder la liaison avec l'historique des enregistrements, mais l'ensemble des documents seront transférés aux nouveaux, consolidant ainsi les informations comme le montant à payer etc.

Les numéros de téléphones sont formatés en utilisant la librairie : phonenumbers library.

Production

L'ajout de la gestion des délais de production, en fonction de la gamme et nomenclature, améliore la planification de la production.

Deux nouveaux modules viennent étendre les fonctionnalités de la gestion de production : le premier permet de tracer les temps de travail par production et le second offre la possibilité de diviser une production pour une meilleure répartition de la fabrication.

Achats

Un nouveau module pour la gestion des demandes d'achats employés est disponible. Ces demandes d'achats devront passer par un processus d'approbation. Le service achat récupère les demandes validées pour traitement.

Stocks

Configuration d'un délai pour les transferts internes entre entrepôts. Durant cette période les marchandises sont dans une zone de transit.

La zone de stockage, par défaut définie au niveau d'un produit, est maintenant utilisée par le module production.

Le délai d'approvisionnement est configurable pour un fournisseur.

La gestion de l'expédition des colis permet d'imprimer les étiquettes et stocker les références d'expédition. Déjà 2 services supportés par le système : UPS et DPD.

Authentification

Le processus d'authentification a été revu en profondeur pour devenir modulable. Il est possible de spécifier différentes méthodes d'authentification sans devoir modifier le client. Déjà 2 modules proposés :

  • SMS : envoi d'un code par SMS à l'utilisateur pour effectuer l'entrée en session, qui peut être couplé avec un mot de passe pour fournir un système à 2 facteurs d'authentification ;
  • LDAP : l'authentification est déléguée à une base de données LDAP.
Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Proxmox VE 4.4

Mercredi 14 Décembre

Proxmox Server Solutions GmbH vient d’annoncer la sortie de Proxmox Virtual Environment 4.4. Proxmox VE est une solution de virtualisation libre complète qui permet de gérer des machines virtuelles KVM et des conteneurs LXC sur une même machine, via une interface Web. Proxmox permet aussi de créer facilement des grappes de serveurs (clusters) à haute disponibilité, en proposant un gestionnaire complet, assorti d’un simulateur intégré. Enfin, il s’intègre à de nombreux stockages externes.

Tableau de bord Ceph

Le nouveau tableau de bord permet de surveiller le statut global de la grappe de serveurs Ceph, l’état des moniteurs Ceph, l’état des OSD Ceph, ainsi que les performances de la grappe. Conjointement avec l’interface de gestion de disques de Proxmox VE, cette nouvelle version montre la voie vers un centre de données « software defined » complet.

Conteneurs LXC en mode non privilégié

La création de conteneurs en mode non privilégié a été ajoutée à l’interface Web. Ce mode permet un degré de sécurité bien plus important que les conteneurs habituels. Par ailleurs, il est maintenant possible d’affecter un nombre fixe de processeurs à un conteneur, pour une allocation plus fine des ressources. Enfin, le nouveau mode « Restart Migration » permet de déplacer rapidement les conteneurs d’un serveur à un autre.

Amélioration de la haute disponibilité

L’interface de gestion de la pile haute disponibilité a été améliorée, les widgets de statut et de gestion des ressources ont été fusionnés, et un nouveau widget de gestion des priorités a été ajouté, permettant de définir des préférences sur les nœuds physiques sur lesquels les machines virtuelles doivent tourner. Par ailleurs, il est maintenant possible de définir un réseau de migration spécifique pour la migration des ressources de la grappe de serveurs.

Quelques chiffres

Proxmox VE est utilisé par environ 140 000 systèmes dans 140 pays. Les forums de Proxmox regroupent près de 32 900 membres, et plus de 7 500 entreprises utilisent le support professionnel de Proxmox Server Solutions GmbH.

Télécharger ce contenu au format Epub

Lire les commentaires

C++17 garantit le court-circuit de copie (suite de la précédente dépêche)

Mardi 13 Décembre

Le calendrier de l’Avent du C++ continue son bonhome de chemin. Chaque jour, ou presque, une nouvelle surprise est offerte aux lecteurs de LinuxFr.org. La dépêche sur l’élision de la copie nous a mis l’eau à la bouche :

Comment résoudre le dilemme entre cette optimisation et le fait de ne pas pouvoir en bénéficier dans un code portable ?

Alors, entrons dans les entrailles de la spécification technique P0135 guidé par cette dépêche pédagogique, et découvrons comment le C++ s’améliore de version en version.

Sommaire La problématique

Nous avons vu dans la dépêche « C++ se court-circuite le constructeur de copie » les problèmes de l’élision du constructeur de copie.

En effet, cette optimisation est optionnelle : selon le compilateur, sa version, ses options de compilation, ou encore selon le code source, l’élision sera appliquée ou pas.

Donc, dans un code portable, de façon générale, nous ne pouvons pas nous passer des constructeurs de copie et de déplacement car l’élision pourrait ne pas avoir lieu. Cela interdit aux types indéplaçables d’avoir des fonctions qui retournent par valeur, telles que les fabriques.

int n; // compte le nombre d’appel du constructeur de copie struct A { A(int) {} A(const A&) { ++n; } }; int main() { A a = A( A( A( A(42) ) ) ); return n; // valeur non déterminée avant C++17 } // toujours 0 avec C++17 L’astuce de la TS P0135

La spécification technique P0135 ne rend pas obligatoire l’élision. Pour la garantir, cette TS redéfinit la taxonomie des expressions dans le but d’éviter toute création inutile d’objet temporaire. Le cas des Named Return Value Optimization n’est pas concerné par cette spécification technique, faute de pouvoir apporter une garantie simple.

Une taxonomie des expressions ?

La taxonomie est la science du classement, pour identifier et décrire le vivant. Un taxon est un groupe d’organismes classés ensemble parce qu’ils ont des caractéristiques communes. Comme des poupées russes, un taxon peut contenir un sous-ensemble plus petit de taxons. Voir aussi le documentaire « Espèces d’espèces ».

Le C++ reprend ce principe pour classer ses expressions. La classification historique (C++98) définit deux taxons : lvalue et rvalue.

À l’origine, ces termes ont été choisis car, dans les cas simples, le lvalue se trouve à gauche (left value) et le rvalue (right value) se trouve à droite. Mais cette disposition n’est pas toujours vraie.

left_value = right_value;
\ \
`--se trouve `--se trouve
à gauche à droite

Chacun des taxons a des propriétés spécifiques. Par exemple, seul lvalue peut être la cible d’une affectation.

Note : La norme définit un objet comme une zone mémoire pouvant contenir des données.

Une taxonomie contre intuitive

La taxonomie du C++11 a inscrit la nouvelle catégorie xvalue, nécessaire pour la sémantique de déplacement (move semantics). Ce qui a rendu l’évaluation des expressions C++ plus confus et difficile à s’approprier :

Taxon Caractères discriminants lvalue Désigne une fonction ou un objet xvalue Un objet proche de la fin de vie et certains types d’expressions impliquant des références rvalue rvalue Une xvalue, un objet temporaire, un sous-objet ou une valeur pas associé avec objet. prvalue Une rvalue qui n’est pas une xvalue glvalue Taxon supérieur d’une lvalue et xvalue

Ainsi, il y a des contradictions dans de nombreux cas. Par exemple, une expression qui crée un objet temporaire est une rvalue. Alors que selon les critères discriminant, elle aurait pu tout aussi bien être une lvalue.

Autre paradoxe, une expression qui construit un objet puis accède à un membre, telle que A().a est une xvalue. En effet, l’objet construit A() expire à la fin de l’évaluation de l’expression. Or dans une situation où il est indéplaçable, c’est contradictoire avec une xvalue, ce qui sous-entend être déplaçable. Donc elle devrait être une prvalue. On y perd son latin !

Ci-dessous, un schéma très simplifié, pour mieux comprendre ce classement.

Redéfinir pour garantir l’élision de copie

La spécification technique propose de faire la distinction entre les expressions prvalue et glvalue. Désormais, une glvalue définit la localisation d’un objet, une prvalue son initialisation.

Taxon Caractères discriminants glvalue Identifie une fonction, un objet, un champ de bits prvalue Initialise un objet, un champ de bits xvalue une glvalue dont la ressource peut être réutilisé lvalue Une glvalue qui n'est pas une xvalue rvalue Une prvalue qui n'est pas une xvalue

struct X { int n; }; extern X x; X{4}; // prvalue car initialise un objet temporaire X x.n; // glvalue car localise l'attribut n de x X{4}.n; // glvalue car localise l'attribut n de X{4} using T = X[2]; T{{5}, {6}}; // prvalue car initialise un tableau de X

Si une prvalue est utilisée pour initialiser un objet de même type, il le sera directement. Par conséquent, l’initialisation de la valeur de retour d’une fonction avec un temporaire entraîne l’initialisation directe de la valeur, sans copie, ni déplacement. Cela signifie que le constructeur de copie ou de déplacement de l’objet n’a plus besoin d’être défini.

struct NonDeplacable { NonDeplacable(int); NonDeplacable(NonDeplacable &) = delete; NonDeplacable(NonDeplacable &&) = delete; std::array<int, 1024> arr; }; NonDeplacable make() { return NonDeplacable(42); // Construit directement l'objet renvoyé } auto nm = make(); // Construit directement l'objet renvoyé dans 'nm' NonDeplacable x = {5}; // Ok avant C++17 NonDeplacable x = 5; // Équivaut à NonDeplacable x = NonDeplacable(5) // Erreur avant C++17 parce qu'il crée un objet non déplaçable // Maintenant, plus d'erreur

Ce changement est sans conséquence pour l’optimisation « Named Return Value Optimization » (NRVO). Comme mentionné précédemment, la modification implique seulement les prvalues. Avec la NRVO, la valeur retournée est une glvalue.

A f() { A a; return a; // Retourne une glvalue } // Donc sans garantie d'élision int main() { A a = f(); } Et les xvalues ?

La définition d’une xvalue gagne en clarté. Désormais, elle désigne une expression dont la ressource (les données) peut être réutilisée. Ce qui correspond bien à un objet déplaçable, dont ses données peuvent être réutilisées dans un autre objet.

Dernier changement, le compilateur est autorisé à convertir l’initialisation d’un objet temporaire (prvalue) vers une xvalue.

struct X { int n; } int k = X().n; // X() est une prvalue convertie en xvalue. Conclusion

Nous venons d'aborder un sujet complexe du C++. Nous pourrions trouver le C++ beaucoup trop compliqué. Mais cette dépêche a montré que le standard se simplifie. Un standard C++ plus compréhensif, de meilleures optimisations, et un code plus intuitif. Que demander de plus ?

Réutilisation

Le texte de cette dépêche est protégé par le droit d’auteur la gauche d’auteur et réutilisable sous licence CC BY-SA 4.0. Les images utilisées sont aussi sous licence libre (cliquer sur l’image pour plus de détails).

Donc, n’hésitez pas à réutiliser ce contenu libre pour créer, par exemple, des supports de formation, des présentations (Meetups), des publications sur d’autres blogs, des articles pour des magazines, et aussi un article C++17 sur Wikipédia dès que Wikipédia passera de la licence CC BY-SA 3.0 à la CC BY-SA 4.0 (le contenu de cette dépêche utilise la version la CC BY-SA 4.0).

Les auteurs

Par respect de la licence, merci de créditer les auteurs :

Continuer à améliorer ce document

Malgré tout le soin apporté, il reste certainement des oublis, des ambiguïtés, des fôtes… Bien que cette dépêche restera figée sur le site LinuxFr.org, il est possible de continuer à l’enrichir sur le dépôt Git du Groupe des utilisateurs C++ francophone (C++FRUG). C’est donc sur ce dépôt que se trouvent les versions les plus à jour.   (ღ˘⌣˘ღ)

Alors que cet article restera figé sur le site LinuxFr.org, il continuera d’évoluer sur le dépôt Git. Merci de nous aider [à maintenir ce document à jour][md] avec vos questions/suggestions/corrections. L’idée est de partager ce contenu libre et de créer/enrichir des articles Wikipédia quand la licence sera CC BY-SA 4.0.   ٩(•‿•)۶

Appel à contribution

Nous nous efforçons de vous fournir une dépêche de qualité chaque jour ouvré. Et, en plus, avec une illustration sympathique. Mais cela demande beaucoup de travail, et tenir les délais n’est pas toujours simple.

Merci de nous donner un coup de main, que ce soit sur la correction orthographique, le dessin, la lecture des spécifications techniques, la rédaction d’une nouvelle dépêche à intégrer au calendrier de l’Avent du C++. Tu peux aussi apporter ta contribution à la dépêche Faut‐il continuer à apprendre le C++ ?

Rejoins‐nous sur la page du groupe de travail C++ sur LinuxFr.org (un compte est nécessaire pour y accéder).

À suivre…

Télécharger ce contenu au format Epub

Lire les commentaires

Retour sur le mini‐hackathon LinuxFr.org et Agenda du Libre du 8 décembre 2016

Lundi 12 Décembre

Le premier mini-hackathon LinuxFr.org / Agenda du Libre a eu lieu le 8 décembre 2016, dans le cadre de l'événement hebdomadaire « Soirée de Contribution au Libre » organisé par Parinux (que l'on remercie pour l'organisation, ainsi que la Fondation pour le Progrès de l'Homme qui nous accueillait).

Une quarantaine de libristes étaient présents : Agenda du Libre, April, Fedora-fr, LinuxFr.org, Mageia.org, Parinux, OpenStreetMap, UbuntuFr… ainsi qu'Aryeom et Jehan qui réalisent le film d'animation ZeMarmot.

Nos retours sont en seconde partie de la dépêche.

En vrac, les retours :

Télécharger ce contenu au format Epub

Lire les commentaires

Revue de presse de l'April pour la semaine 49 de l'année 2016

Lundi 12 Décembre

La revue de presse de l'April est régulièrement éditée par les membres de l'association. Elle couvre l'actualité de la presse en ligne, liée au logiciel libre. Il s'agit donc d'une sélection d'articles de presse et non de prises de position de l'association de promotion et de défense du logiciel libre.

Sommaire

[Techniques de l'Ingénieur] Le monde sous surveillance

Par Philippe Richard, le vendredi 9 décembre 2016. Extrait:

Tous nos pas dans le cyberespace sont suivis, enregistrés, analysés, et nos profils se monnayent en permanence. Face à ce «tracking» de masse, un livre donne des solutions accessibles au grand public.

Lien vers l'article original: http://www.techniques-ingenieur.fr/actualite/articles/le-monde-sous-surveillance-38752

[Le Telegramme] Install Party. Li-bé-rez les ordinateurs!

Par la rédaction, le lundi 5 décembre 2016. Extrait:

Les bénévoles de l'association Rhizome ont mis leur talent de surdoués de l'informatique samedi, au profit des utilisateurs d'ordinateurs qui souhaitaient installer un logiciel libre sur leur machine. Une démarche destinée à faire la nique aux géants du secteur, comme Windows ou Apple.

Lien vers l'article original: http://www.letelegramme.fr/morbihan/auray/install-party-li-be-rez-les-ordinateurs-05-12-2016-11318892.php

[Next INpact] Open Government: plusieurs associations vont boycotter le sommet mondial de Paris

Par Xavier Berne, le lundi 5 décembre 2016. Extrait:

Alors que la France s’apprête à accueillir le sommet mondial du Partenariat pour un gouvernement ouvert, sorte de «COP21 de la démocratie», plusieurs associations ont annoncé aujourd’hui qu’elles boycotteraient l’événement. En cause : des choix «radicalement incompatibles» avec l’esprit du PGO, par exemple sur le fichier TES ou les logiciels libres.

Lien vers l'article original: http://www.nextinpact.com/news/102375-open-government-plusieurs-associations-vont-boycotter-sommet-mondial-paris.htm

Et aussi:

Voir aussi:

[Numerama] L'Union européenne investit près de 2 millions d'euros pour renforcer sa sécurité informatique

Par Corentin Durand, le lundi 5 décembre 2016. Extrait:

Le budget 2017 de l'Union Européenne consacrera plus de 1,9 million d'euros au soutien des logiciels libres et à la création d'un programme de Bug Bounty.

Lien vers l'article original: http://www.numerama.com/politique/214305-lunion-europeenne-investit-pres-de-2-millions-deuros-pour-renforcer-sa-securite-informatique.html

Et aussi:

Télécharger ce contenu au format Epub

Lire les commentaires

Faites tourner les PCB !

Lundi 12 Décembre

Dans un circuit numérique, il y a toujours une dose d’analogique. Une carte toute faite comme une Arduino, ou une Raspberry Pi, ne suffit pas — ou alors, il faut gérer de la puissance — on doit donc créer une carte.

Cette carte aura besoin de connecteurs, de composants, d'énergie, et d'être réalisée.

Sommaire Le schéma

Il existe un grand nombre de logiciels pour faire des schémas et les traduire en layout ou pour le dessiner directement. Certains dessinent même directement sur le typon à la main. J'ai vu de magnifiques chassis de télé à tube haut de gamme, routé à la main, avec des tracés courbes pour limiter les interférences.

Les logiciels sont parfois pénibles pour le choix des composants, ils demandent une référence précise, rarement présent dans la bibliothèque fournie, quand un composant "générique" suffirait. Le choix de l'empreinte du boîtier pourrait se faire plus tard, en fonction de ce que l'on a sous la main. Cela signifie le plus souvent qu'il faut créer un composant et dessiner ou choisir sa bonne empreinte.

Parfois l'outil propose de faire des bibliothèques de schémas (par exemple un IC avec ses capacités de découplage). Attention, si l'outil ne génère pas de schéma "à plat", il sera difficile de savoir à quoi correspond la résistance "R25" de la carte.

PCB

Pour réaliser un circuit imprimé, il faut convertir le schéma électrique en un schéma d'implantation (layout) en respectant plusieurs contraintes : l'encombrement des composants, leur orientation, les dimensions des pistes, etc.

Une carte classique est composée d’une feuille d’époxy de quelques millimètres d'épaisseur, ayant une ou deux couches de cuivre. C’est le fameux circuit imprimé ou PCB (« printed circuit board ») en anglais.

Il n’est pas toujours nécessaire de fabriquer ce genre de carte. Il existe des cartes à trous métallisés ayant des espacements standardisés (2,54 mm comme pour les composants DIP, 1,27 ou 1  mm pour les composants de montage en surface CMS). Les connexions se font avec des morceaux de fil. Si la carte est complexe, cela peut être long et fastidieux à souder, mais cela ne nécessite pas d’outillages particuliers, en dehors d’un fer à souder et de l'huile de coude.

Cela ressemble aux anciennes cartes wrappées. Les composants étaient mis sur des supports ayant des pattes longues. Des fils étaient enroulés autour de ces pattes pour les relier. On se retrouvait ainsi avec une grosse couche de fils sous la carte.


— Carte wrappée – Wikinaut - Wikipedia

Ce genre de cartes peut poser un problème de fiabilité, à cause du nombre de soudures ou de contacts. Mais les fils sont plus courts que les lignes d’un PCB, de plus les traces sont parallèles alors que les fils s’entrecroisent de façon anarchique. Ainsi, comparés aux PCB, le bruit et les parasites sont inférieurs sur les cartes utilisant des fils. Les cartes de tests peuvent alors avoir de meilleurs performances analogiques.

Le dessin du layout

Pour faire ces cartes, qu’il s'agisse de cartes de test à souder, ou du routage d’un schéma sur Kicad, il s’agit de placer les composants en premier, en choisissant l’emplacement des connecteurs puis le reste. Il est souhaitable de disposer de façon systématique les composants pour éviter les erreurs de soudure (soudure tête bêche), on peut faire en sorte que les inscriptions des composants se lisent toutes dans le même sens, par exemple.

Pour router les fils, on commence en général par le +, qui doit rester au centre de la carte, la masse est plutôt à l’extérieur, en étoile, sans boucle. Cela évite les catastrophes en cas de contact avec un châssis métallique, ou avec les vis de fixation au châssis. La piste + peut être faite un peu plus large que le reste, pour la remarquer plus facilement. Il faut une grosse intensité pour avoir besoin de pistes larges pour limiter les pertes ohmiques. Mais dans ce cas, la piste de la masse a aussi besoin d'être plus large (2,5 à 5 A par mm de large, pour du cuivre classique de 35µm d'épaisseur).

Les problèmes liés à la fréquence arrivent avec des signaux de 10 Mhz et plus, pour des signaux numériques (1Mhz pour l’analogique, il ne faut pas oublier les harmoniques). Au-delà de 10 Mhz, il faut tenir compte de beaucoup de paramètres, comme les retours de masse, les capacités parasites entre pistes proches, les effets inductifs, le fait que le signal avance à un peu plus de 10 cm par ns. Donc sur un signal d’une fréquence de 1 Ghz, vous pouvez voir un « ventre » ou un « creux » sur une piste de 10 cm. Il s’agit presque de la vitesse de la lumière. C’est toujours surprenant de ne pas considérer cette vitesse comme infinie.

Les signaux analogiques nécessitent un grand soin, selon la précision voulue : une variation de 1mV étant significative (ADC 12 bits pour des signaux 3,3 V max), une interférence peut perturber les résultats de la mesure. L'audio, par exemple, manipule des µV.

Il est intéressant de limiter la longueur des pistes, et de limiter le nombre de trous. Cela augmente la fiabilité de la carte et diminue le nombre de trous à percer. Cette phase d’optimisation n’est pas à négliger, en cas de modification manuelle de la carte. On évite de se demander pourquoi une piste semble faire trois fois le tour.

Il ne faut pas faire des pistes fines sans besoin. Les pistes épaisses tiennent mieux à l’époxy, si il faut ressouder un composant, ou faire un trou pour en ajouter un, ou pour ajouter un composant CMS entre deux pistes proches, pour rajouter un condensateur de découplage, par exemple. Il est plus fiable de réduire la largeur d'une piste pour passer entre deux pads, que d'avoir une piste fine en continu.

Une petite LED, dans un coin, pour visualiser la présence de l’alimentation, évite de perdre du temps en debug. Une autre peut servir dans une carte à microcontrôleur, quand rien ne semble marcher, pour la faire clignoter.

Les connecteurs


— Connecteurs HE10 (pas de 2,54 mm) 20 points, mâle pour PCB et femelle auto-dénudant pour une nappe

C’est souvent le composant négligé par le hobbyiste, car il est rapidement coûteux. On soude directement les câbles sur les cartes. Malheureusement, la soudure les raidit et ils finissent toujours par casser (non, pas toujours, juste quand il ne fallait pas ;-) ). On peut solidifier la soudure avec un serre-joint sur le fil, passant dans 2 trous faits sur la carte, mais cela prend plus de place.

On découvre ensuite que les connecteurs à vis sont tout de même bien pratiques. Ils sont peu coûteux, et laissent passer beaucoup de courant. Et puis un jour, malgré le signe + métallisé, et les points de couleur noire et rouge, on branche la batterie à l’envers. La diode de protection conduit, mais le fusible ne fond pas assez vite, et toute l’électronique de puissance y passe, ou explose littéralement (vécu, avec une série de 7805).

Il faut donc, de préférence, des connecteurs avec détrompeur. Il faut aussi des câbles (avec les connecteurs) « standards » : cela évite les catastrophes quand on intervertit deux câbles ayant les mêmes connecteurs, mais avec le câblage croisé.

Les connecteurs ont plusieurs caractéristiques : le nombre de points de connexion, l’intensité du courant maximal, la tension maximale, mais aussi la tenue mécanique de la connexion contre les vibrations, le nombre de connexions/déconnexions prévues (certains connecteurs ne tiennent plus au-delà d’un certain nombre assez faible).

Je remarque trois besoins typiques pour les connecteurs : les nappes pour connecter les cartes numériques entre elles, les connexions pour l’alimentation et la puissance, et les connexions des capteurs et/ou effecteurs (contacteur, servomoteur peu puissant, …).

Il existe une infinité de connecteurs différents, à des prix très différents également. Pour la puissance (batterie ou moteur), j’aime bien les connecteurs type « molex » : ceux que l’on trouve dans les PC. Ils sont bon marché, tiennent mécaniquement, et laissent passer beaucoup de courant.

Concernant les données, les connecteurs de type HE10, qui s’utilisent avec des nappes du genre de l’IDE 33 (oui, je suis vieux), sont assez pratiques. On trouve bien mieux en terme de densité, mais ceux-ci sont plus faciles à souder. Il ne faut pas oublier qu’un fil de données ne supporte pas plus de 1 A, mais on peut toujours faire plusieurs lignes d’alimentation et de masse (attention, cela fonctionne toujours par paire, il ne faut pas oublier le retour du courant par la masse).

Attention aux connecteurs RCA, les connecteurs ronds utilisés en audio, ils ne sont pas construits pour être défaits souvent, et finissent par ne plus tenir. De plus, n'étant pas conçus pour la puissance, il n’est pas souhaitable d'y faire passer plus de 1 A. Donc, c’est à oublier comme connecteur de batterie.

Mais pourquoi utiliser des connecteurs ?

Si vous le pouvez (une carte numérique, au lieu de deux) et si vous avez le choix, je vous conseille de tout mettre sur la même carte. Pas de connecteur est toujours plus fiable. De plus, cela simplifie le routage de la carte. On évite plein de fils qui se dirigent vers le même endroit : le connecteur de nappe.

Méfiez-vous de la fausse réutilisation, qui coûte cher en temps de travail, mais qui ne servira jamais, surtout si vous êtes contraint par l’espace, donc par la taille et la forme des cartes. La réutilisation de schéma permet de faire déjà beaucoup de choses.

Pour les capteurs, il existe beaucoup de connecteurs linéaires au pas de 2,54 mm (le DIP standard), jusqu’à une dizaine de connexions à fils. Les contacteurs, comme les switchs mécaniques, ont des plots à souder : il n’est donc pas possible d’utiliser une nappe classique.


— Switch mécanique

Je vous conseille les connecteurs qui disposent de système auto-dénudant. Les autres systèmes imposent de souder chaque fil, à un bout de métal minuscule, avant d’être introduits dans un support plastique. Cela peut représenter un gain de temps précieux et une plus grande fiabilité : on rentre tous les câbles, puis on clipe un support, et c’est terminé.

Évitez aussi d’avoir plusieurs types de connecteurs vaguement compatibles, vous n’aurez jamais les bons câbles sous la main, ou alors les connecteurs entrés en force pourraient abîmer les connecteurs mâles des PCB, voire les contacts seraient mauvais, ce qui introduit des pannes aléatoires. Vous ne voulez pas de pannes aléatoires.

Il est aussi possible d’acheter un rouleau de petites nappes (avec chaque fil qui se sépare) et les connecteurs qui vont avec, pour être le plus « standardisé » possible.

Du simple câble réseau doit pouvoir faire l’affaire. Il faut, par contre, avoir l’outil pour sertir correctement les fils dans les connecteurs RJ45. Dans le cas d’usage d’un câble blindé, il faut respecter la règle de répartition en étoile, et ne surtout pas faire de boucle de masse (cela génère beaucoup de parasites, par induction) et donc ne connecter le blindage que d’un coté du câble. La dernière précaution est de ne pas mélanger les connections avec celles d’un réseau ethernet, au risque de griller quelque chose.

Support de IC

Un support n’est pas toujours nécessaire pour les composants, même complexes. On veut souvent facilement changer un composant grillé, mais un tel support peut être plus coûteux que le composant lui-même. Il est souvent possible de dessouder deux ou trois fois un composant avant d’abîmer les pistes.

Il est aujourd’hui facile de prévoir deux pins de programmation. Le temps où il fallait un programmateur d’eeprom, produisant du 12V pour les microcontrôleurs, est révolu.

Les radiateurs

Les radiateurs permettent d’évacuer la chaleur produite par un composant de puissance. Le but est d’éviter la destruction du composant par augmentation de la température, ou sa coupure par mise en sécurité.

Pour des questions de solidité, il vaut mieux que celui-ci soit vissé à la carte, au lieu de simplement tenir sur le composant. Ces radiateurs sont souvent en matériau conducteur, les bons conducteurs thermiques étant souvent de bons conducteurs électriques. Or la plupart des éléments de puissance, ont une de leurs pattes connectée à la partie métallique de leur boîtier.

Attention à la proximité de plusieurs composants type TO-220 dont une partie du boîtier est métallique et conductrice, attention aussi au contact avec un châssis, souvent relié à la masse.

Il ne faut pas oublier non plus que du cuivre sur le PCB peut être utilisé dans une certaine mesure, comme dissipateur thermique.

Un gros radiateur coûte cher. Un radiateur de CPU de PC est construit pour évacuer une centaine de watts de chaleur, cela peut être un très bon compromis efficacité/prix. Mais si vous avez besoin de dissiper autant de chaleur, il faudrait plutôt repenser la fonction.

Les batteries

Il existe plusieurs sortes de batteries. Les différences se situent sur le poids par rapport à l’énergie embarquée, mais aussi sur la quantité de courant maximum que l’on peut tirer et leurs fragilités.

La batterie au plomb est la plus ancienne technologie. On en trouve de 6 ou 12  V avec des charges différentes. Cette charge s’exprime en A.h (Ampère fois des Heures et non par heure). Une batterie 2500 mA.h, peut débiter 1125  mA pendant 2  h ou 10  A pendant 15 minutes.

Une batterie au plomb peut se charger avec une alimentation de labo, dont on utilise la limitation en courant. En général, on charge en 1 h ou plus pour ne pas user la batterie. Une batterie de 2500 mA.h, se charge donc avec un courant de 2,5  A pendant une heure ; voire, si on a le temps, avec un courant de 250 mA pendant 10 h (une nuit). Une charge lente évite la surchauffe, et la fait durer plus longtemps.

Une batterie au plomb peut fournir 10  C sans problème. Cela veut dire qu’une batterie au plomb de C  =  2500  mA.h, peut fournir 25  A.

Les piles rechargeables actuelles ont fait beaucoup de progrès pour supprimer l’effet mémoire. L’auto-décharge a aussi baissé. Il y a quelques années une pile rechargeable pouvait se vider toute seule en 6 mois. Une pile rechargeable fournit 1,2 V (et non 1,5 V comme les piles alcalines), ce qui peut être pénalisant pour réaliser des tension de 12 V (10 modules).

Il n’est pas conseillé de faire débiter plus de 1C à des batteries AA, sous peine de les user très vite, car elles chauffent. Attention aussi à la recharge, une pile Ni-Cd oubliée sur une alimentation finit par dégager une fumée blanche irritante, très désagréable (vécu). Les piles Ni-Cd sont aujourd’hui difficilement trouvables (voire interdite en UE). Il vaut mieux utiliser un vrai chargeur dédié. Les piles NiMh sont moins nocives.

Il existe aussi des piles lithium-ion , des modules de 3V, que l’on trouve dans les batteries des ordinateurs portables. La densité d’énergie est encore plus élevée. On peut récupérer quelques modules fonctionnels, dans une batterie de portable ”morte”.

Il existe les piles au lithium-polymère, qui sont une version plate du modèle précédent. La batterie peut prendre toute sorte de forme. Sa densité énergétique est élevé. Ce genre de batterie est notamment utilisé en aéromodélisme. Par contre, une telle batterie peut s’enflammer en cas de gros choc. Vous pouvez trouver des photos de sièges automobiles brûlés, sur Internet, après que des modélistes aient oublié leur batterie en train de charger, sur l’allume-cigare.

Si vous oubliez une batterie sur une alimentation de laboratoire et que vous dépasser son temps de charge, elle va chauffer d'autant plus que le courant est fort. La chaleur diminue la durée de vie de la batterie, voire celle-ci peut s’enflammer.


— Des fusibles souvent utilisés pour protéger une carte

Les PCB

Un PCB est le support des composants. Il existe deux méthodes de fabrication, par fraiseuse ou par insoleuse. Par fraiseuse, l'outil retire mécaniquement le cuivre en dehors des pistes du circuit.

Par insoleuse, une plaque d’époxy est couverte de cuivre, et de résine photosensible. Un masque (typon) est posé dessus et le tout est mis dans une insoleuse. La résine soumise aux UV de l’insoleuse est ensuite retirée par un bain, seule reste la résine sous le masque, puis la plaque est plongé dans un acide. Le cuivre non protégé est enlevé.

Pour faire un double face, il faut utiliser une plaque ayant du cuivre des deux côtés. Pour plus de faces, les plaques sont collées entre elles. Il existe des PCB à plus de 12 couches (le maximum que j'ai vu est 24).

Il existe une grande quantité d’information disponible sur Internet, pour savoir comment réaliser cela en pratique. Une grande partie de la qualité du résultat dépend du masque, les résines étant très (très) précises.

Il est souvent réalisé, avec une impression sur un transparent. Or si on regarde un transparent à la loupe, on voit une série de fissures, dans les traits normalement opaques. On retrouve toutes ces micro-fissures sur les pistes de cuivre. Si la piste est trop fine, cela peut introduire des coupures. Ces coupures peuvent être réduites en utilisant des pistes assez larges, ou bien en repassant un peu de soudure (c’est fastidieux).

Le résultat peut être amélioré en opacifiant les zones noires du transparent avec un feutre. Il semblerait que les transparents faits avec une imprimante jet d’encre, soient plus efficaces qu’avec une imprimante laser. Certaines personnes ont déjà modifié une imprimante jet d’encre, pour remplacer les 3 encres couleur par de l’encre noire, pour avoir un noir plus profond. Il est aussi possible d’utiliser 2 transparents superposés.

On peut faire faire un pcb sur Internet pour moins de 100€. Les tirages coûtent en fonction de la surface d’époxy, ou alors le prix est celui du grand panneau d’époxy utilisé à la base, qui peut permettre de faire un certain nombre de plaques à la fois. Les fabricants les moins chers limitent aussi le nombre de types différents de trous qui entraînent des changements d’outils. La finesse des pistes est aussi un paramètre à prendre en compte : est-il possible de faire passer 2 fils entre les 2 pattes d’un composant DIP ou un seul ?

Les composants traversants tel qu'on les connaît, ont tendance à être remplacé par les CMS. Il est très facile d’utiliser les composant 0805 et plus. Cela veut dire 0,8 mm par 0,5 mm. Il existe aussi des 1206. Le 0604 est, par contre, plus difficile à souder. Les composants CMS évitent beaucoup de trous, c’est intéressant si on doit les faire soi-même.

En résumé, concevoir et souder un PCB CMS n’est pas si complexe, la production de la carte elle-même peut l’être un peu plus.

Vous pouvez reprendre une activité normale (comme regarder les réseaux sociaux).

(Merci à BAud, Yves Bourguignon, kantien, palm123, pulkomandy, gusterhack pour leur relecture.)

Télécharger ce contenu au format Epub

Lire les commentaires

Libre OS USB, un an et demi après un financement participatif réussi

Lundi 12 Décembre

Il y a donc un an et demi, la jeune entreprise Libre Expert (Entreprise du Numérique Libre située à Clermont-Ferrand) lançait le projet Libre OS USB. L'idée était simple, proposer une clef USB bootable Linux, francisée, avec persistance des données, qui pourrait démarrer sur tout PC d'architecture 64bits, y compris les dernières générations ayant un Bios UEFI avec Secure Boot. Un article était publié sur LinuxFr.org et une campagne de crowdfunding était lancée sur le site Ulule qui réunira une cinquantaine de soutiens. Après avoir écouté ces "partenaires" de la première heure, des ajustements ont été fait, le répertoire utilisateur a été chiffré, des logiciels ont été ajoutés et diverses modifications ergonomiques ont été appliquées. Aujourd'hui ce produit est arrivé à maturité dans sa version 4.0, basée sur Xubuntu 16.04 LTS. Il est proposé sous différentes formes, y compris la possibilité de télécharger directement l'image disque en raw. Une version en langue anglaise est aussi proposée.

Au niveau logiciel, on se trouve aujourd'hui en présence d'une sorte de couteau suisse informatique :

  • basé sur Xubuntu 16.04 LTS ;
  • interface Xfce ;
  • chiffrement Ecryptfs (chiffré en AES-256) ;
  • navigateur Firefox ;
  • outils Internet (Filezilla, Bittorent, Thunderbird…) ;
  • nombreux jeux classiques ;
  • suite bureautique LibreOffice ;
  • lecteur vidéo et musique VLC, édition vidéo avec Openshot ;
  • édition et enregistrement audio avec Audacity ;
  • graphisme avec The Gimp et Inkscape, Scribus et Simple Scan ;
  • gravure et extraction de DVD et CD-Audio ;
  • outil de partitionnement avec GParted.
Télécharger ce contenu au format Epub

Lire les commentaires

La plateforme MongooseIM est disponible en version 2.0.0

Lundi 12 Décembre

La plateforme MongooseIM est disponible en version 2.0.0 ! Pour information ou rappel, c’est une plateforme de messagerie mobile instantanée, massivement scalable, dont le cœur est basé sur XMPP (Jabber). Elle permet de bâtir des applications de chat, ou de simplement déployer la partie serveur pour une communauté, association, entreprise ou administration, en utilisant des clients XMPP/Jabber standard. Cette version 2.0.0 est une étape majeure dans le développement de MongooseIM, les nouveautés sont spécialement conçues et contribuées pour les développeurs (backend, iOS et Android), également les administrateurs systèmes et devops.

Survol des nouveautés, détaillées en seconde partie :

  • Pivot : d'un serveur isolé vers une plateforme complète client/serveur ;
  • PubSub, ou « publish-and-subscribe » ;
  • MUC light, la discussion de groupe simplifié ;
  • une API REST pour les clients et pour les serveurs ;
  • contributions significatives aux bibliothèques XMPP/Jabber :
  • documentation revue et augmentée ;
  • des tests fonctionnels et performance en continu.

Sommaire

Les nouveautés en détail Pivot : d'un serveur isolé vers une plateforme homogène et cohérente

Ceci va grandement faciliter la vie des développeurs et intégrateurs. Avant, le serveur XMPP/Jabber MongooseIM était livré tout seul. Pour l'intégrer, il fallait chercher les composants logiciels serveur ou client qui avaient les mêmes fonctionnalités. Et on en trouvait, mais la disponibilité de ces fonctionnalités était relativement inégale sur l'ensemble des composants. Donc il fallait coder+contribuer la fonctionnalité manquante sur les composants pour lesquels celle-ci manquait, et pour nos clients c'était très rageant ! Cela faisait perdre beaucoup de temps et cela donnait une mauvaise image de XMPP/Jabber : le paysage était ressenti comme incohérent, voire obsolète, en tout cas frustrant.

Depuis le début de l'année 2016, nous contribuons activement aux bibliothèques client Smack pour Android et XMPPFramework pour iOS : nous codons les mêmes fonctionnalités que celles existantes sur le serveur MongooseIM. Donc une fonctionnalité prise en charge côté serveur existe dorénavant côté bibliothèque client. Bien sûr, nous avons testé et validé l'interopérabilité, en codant de vrais clients. Ceci retire une belle épine du pied des développeurs, sauvant beaucoup de temps de codage, intégration et test. L'ensemble des composants que nous codons et auxquels contribuons est donc maintenant complètement cohérent et homogène (en plus d'être open source), plus de questions à se poser, tout va beaucoup plus vite.

Voici les composants de la « plateforme » :

  • le serveur XMPP/Jabber MongooseIM est développé en Erlang sous licence GPLv2 par Erlang Solutions ;
  • les bibliothèques sont :
    • pour la partie XMPP/Jabber, nous contribuons activement à ces deux projets majeurs : XMPPFramework en Objective-C pour iOS sous licence BSD et Smack de la communauté igniterealtime (développant également le célèbre et très facile Openfire) en Java pour Android sous licence Apache 2.0 ;
    • pour la partie API REST : Jayme d’Inaka pour iOS en Swift sous licence Apache 2.0 et Retrofit de Square en Java pour Android sous licence Apache 2.0 ;
  • escalus, le client XMPP/Jabber en Erlang sous licence Apache 2.0 par Erlang Solutions ;
  • amoc, l'outil de test de charge en Erlang sous licence Apache 2.0 par Erlang Solutions ;
  • WombatOAM, l'outil d'opérations et de maintenance des systèmes Erlang et Elixir (propriétaire) par Erlang Solutions.

Bientôt, peut-être, si nous recevons de la demande :

  • Icicle, un serveur ICE, standard ouvert de l'IETF, pour la traversée des NAT et le relai de flux média (STUN+TURN) : en gros, MongooseIM avec le client peut déjà faire le signalling c'est-à-dire la négociation de l'appel (faire sonner, décrocher, raccrocher) ;ensuite les clients peuvent faire de la voix et/ou vidéo en P2P, ou pair à pair, mais lorsqu'il y a des NAT, cela se complique énormément, et un serveur ICE est la solution pour faire transiter la voix et la vidéo ;
  • Platypus, serveur de notifications (vers APNS et GCM), basé sur le standard ouvert XEP-0357: Push Notifications, donc déjà disponible dans les bibliothèques client conseillées ;
  • Mangosta, des clients mobiles libres pour iOS et Android, orientés « chat » et social, très modernes en termes de fonctionnalités, mais très peu aboutis en termes d'interface utilisateur ;les clients Mangosta ne sont à ce stade que des démonstrations technologiques, offrant une « expérience utilisateur » pas encore soignée ;
  • Tide, un environnement de tests de charge en continu, que l'on a montré au POSS (Paris Open Source Summit) 2016.

En résumé, la plateforme MongooseIM est cohérente et homogène, donc vous sauvera énormément de temps d'intégration. Elle continuera de s'étendre en fonction de vos besoins.

PubSub ou Publish-and-Subscribe : du social en temps-réel

Les « innovateurs » vont bondir de joie ! Un des problèmes des protocoles et autres « solutions » de messagerie instantanée, c'est que tout est (trop) centré sur le message instantané (et la présence), il n'existe que peu de place pour d'autres types d'interactions temps-réel. Donc peu de possibilité de créer ou « innover » de nouvelles expériences utilisateur.

PubSub ou Publish-and-Subscribe (peut-on traduire par « publier-et-souscrire » ?) est bien connu de tous les développeurs. Il s'agit ici de l'implémentation du PubSub standardisé de XMPP/Jabber : XEP-0060: Publish-Subscribe. Vous êtes encouragés à (re)lire au passage l'excellent série « Parlons XMPP » de Goffi, en particulier Parlons XMPP - épisode 8 - PubSub et PEP. Ce PubSub de XMPP permet entre autre d'ajouter des fonctionnalités de réseaux sociaux, comme le font Movim et Salut à Toi (Libervia) (et Jappix).

En effet, la tendance est la suivante : le modèle « réseau social avec en fonctionnalité secondaire une messagerie » atteint ses limites (Facebook, Twitter, Instagram) et est un marché complètement saturé. On voit donc émerger le modèle « messagerie instantanée avec réseau social », inversant cette approche. Car la messagerie instantanée est encore et toujours en croissance, dans un contexte ou les applications et leur monétisation sont en ralentissement. Les « chatbots » et « intégrations » sont quelques-uns des catalyseurs actuels de cette croissance. Nous poussons donc logiquement ce modèle « messagerie instantanée avec réseau social », avec une démonstration technologique sans prétention, et en supportant les efforts de Movim.

Ici un exemple de publication d'article avec photo, suivi de commentaires, le tout dans un client XMPP sur le web. Movim utilise PubSub pour cette partie sociale.

MUC light, ou le « group chat » simplifié et optimisé

Ceci est notre contribution pour les utilisateurs, pour une bien meilleure expérience. Le standard MUC ou Multi-User Chat, le « group chat » ou salon de discussion, souffre de gros défauts de conception. XEP-0045: Multi-User Chat a été conçu dans la fin des années 90 et début 2000. À cette époque, la connexion au réseau des réseaux était temporaire, car elle se faisait à travers les modems téléphoniques, et précède l'arrivée massive de connexions fixes permanentes, telles que l'ADSL et le câble, et le smartphone constamment connecté via réseaux mobiles et wifi.

Les MUC se reposent donc entièrement sur la présence. Ce qui a pour effet direct ce problème majeur : quand vous perdez votre connexion (tunnel, changement de réseau, mode économie d'énergie, etc.), vous êtes déconnecté du MUC. Ce n'est que lorsque vous pouvez enfin vous reconnecter que vous pouvez (éventuellement automatiquement) rejoindre à nouveau vos salons (ou pas, car c'est une option). Vous « perdez » (vous ne recevez jamais) alors tous les messages échangés dans vos salons durant cette période d'ombre.

Côté serveur, cela génère énormément de présences à broadcaster en permanence, consommant de la bande passante à tous les participants. De plus, les utilisateurs reçoivent constamment ces pollutions visuelles de présences « on » et « off » (ce n'est pas toujours une option). Pour finir dans les défauts de MUC, pour les développeurs, la XEP présente de nombreux cas d'usages quasiment jamais implémentés ou pas du tout utilisés par les utilisateurs finaux, complexifiant énormément les développements.

Perte de messages, pollution de présence, sur-complexité : voici les peines dont ne souffrent pas la plupart des messageries modernes du marché du vrai monde de la vie réelle.

Nous avons donc retiré les présences du coeur du group chat (les présence sont de toute façon accessibles individuellement, au niveau du compte, en dehors du context d'un group chat). Donc l'utilisateur souscrit à un salon indépendamment de sa connectivité réseau. Le bénéfice direct est que s'il perd sa connexion, il recevra toujours tous les messages du group chat dans son archive (XEP-0313: Message Archive Management). Donc il pourra tout lire après une reconnection transparente. Donc pas de pertes de messages, et pas de bruit de présences non plus.

Nous avons également nettoyé tous les cas d'usages marginaux. La résultante est un group chat ultra simple : MUC light (léger). C'est l'expérience utilisateur que tout le monde attend depuis si longtemps. Côté serveur, nous avons aussi clusterisé la solution, ce qui a pour effet technique de consommer beaucoup moins de bande passante, d'être beaucoup plus tolérant aux pannes, et d'être beaucoup plus scalable. Côté client, nous l'avons implémenté, contribué et testé dans Smack pour Android et XMPPFramework pour iOS, prêt au développement client. Vos utilisateurs apprécieront sans aucun doute.

Nous avions contribué les spécifications de MUC light à la XSF début 2015 qui l'a prise en compte fin 2015, sous forme de XEP-0369: Mediated Information eXchange (MIX). La XSF en est toujours à un stade expérimental, avec très peu d'implémentations permettant l'avancement raisonné de la spécification. MIX n'entre toutefois pas en conflit avec MUC light : MIX servira un très large panel de cas d'usages, alors MUC light est très concentré sur un group chat optimal et simple, facile à développé et à maintenir, avec du code de qualité tournant en très large production actuellement. MUC light est une spécification ouverte.

Exemple de MUC rempli de présences, sans réelles discussions. Pollutions visuelles au mieux, surconsommation de bande passante au pire. Cette copie d'écran ne montre pas les pertes de messages.

Une API REST pour les clients et pour les serveurs

API REST pour les clients

Ceci devrait faire plaisir à beaucoup de développeurs de clients, qu'ils soient sur mobile ou sur le web. Un des principaux problèmes est que XMPP et XML perdent du terrain, puisque énormément de développeurs se tournent plutôt vers des API REST avec du format JSON. Un autre problème est que la programmation asynchrone est parfois difficile ou incomprise. Il devient par conséquent difficile de trouver des développeurs XMPP.

Nous livrons donc une API REST très simple avec format JSON. Elle va s'étendre avec le temps, selon vos besoins. Avec cette API REST, la barrière d'entrée est abaissée et la courbe d'apprentissage amoindrie. Il vous sera donc plus facile d'embaucher les développeurs qu'il vous faut.

Notez bien : nous conservons le cœur XMPP/Jabber propre à MongooseIM, et nous nous engageons publiquement à continuer de supporter les communautés XMPP. Nous n'offrons qu'un nouveau choix d'interface.

Dans notre documentation, nous introduisons donc ce qu'est un JID, ou Jabber ID, ou adresse XMPP, de la forme user@domain (comme une adresse email). Et nous livrons une documentation Swagger, simple et facile à lire, standard de fait.

API REST pour les serveurs

Une API REST existe aussi pour développeurs backend et sysadmin/devops, CTOs et architects. Jusqu'à aujourd'hui, il était possible d'utiliser le système de hooks et la ligne de commande pour intégrer MongooseIM dans une infrastructure backend. C'était assez difficile…

Donc nous avons fourni une API REST API côté serveur, et les avantages sont certains : il est beaucoup plus facile de coder et d'intégrer MongooseIM avec les autres composants serveurs.

Contributions aux bibliothèques mobiles, iOS et Android

Ceci s'adresse aux développeurs sur mobile, iOS et Android. Le problème se situait dans l'incohérence entre des bibliothèques libres tierces pour les clients et le serveur MongooseIM : une fonctionnalité pouvait apparaître sur un composant, mais pas les deux autres. Difficile dans ces conditions d'avancer vite et proprement dans le développement de votre application : besoin de coder, intégrer, tester et contribuer.

Alors nous avons contribué les fonctionnalités disponibles dans le serveur MongooseIM aux bibliothèques iOS XMFFFramework et Android Smack. Nos contributions se reposent sur de vrais clients qui intègrent respectivement ces deux bibliothèques. Maintenant, il est beaucoup plus rapide de coder une application complète.

XMPP/Jabber

Les contributions portent sur :

API REST

Ce bibliothèques n'ont été qu'intégrées :

Documentation revue et augmentée

Suite à discussions et commentaires avec les communautés et clients, la documentation a reçu beaucoup de soin :

Passez à l'action

Vous souhaitez contribuer, influencer ?

La suite ?

Avez-vous besoin d'un serveur ICE pour la voix et la vidéo ? Icicle pourrait vous être utile. Vous nécessitez absolument d'un serveur de push notifications ? Platypus peut vous servir. Vous désirez faire tourner des tests de charge en continu ? Tide vous aiderait sans doute. Nous avons besoin de vos avis pour prioriser nos activités.

Nous sommes en cours de développement de clients libres pour Android et iOS. Nous nous orientons vers de la messagerie de 3ème génération, donc plus proche des propriétaires Slack, HipChat (ce dernier est basé sur XMPP) et des libres MatterMost et Rocket.Chat, hélas non basés sur XMPP/Jabber.

Pour rappel ou pour information :

  • la première génération était centré sur la présence et le desktop via connexion modem. Exemples : ICQ, MSN, AIM, Yahoo!Messenger, Gadu-Gadu, QQ, NateOn. Cette génération est révolue.
  • la seconde génération était centrée sur smartphone, proche de l'expérience SMS/MMS. Exemples : WhatsApp, WeChat, LINE, Google Talk/Hangouts, KakaoTalk, Viber. Cette génération va arriver en fin de vie.
  • la troisième génération est centrée sur le group chat et le multi-device, les intégrations et les chatbots. Exemples : Slack, HipChat, Otalk, Kaiwa, Zulip, Mattermost, Let's Chat, Rocket.Chat. Cette génération est en pleine explosion.
Télécharger ce contenu au format Epub

Lire les commentaires

C++ se court-circuite le constructeur de copie

Dimanche 11 Décembre

Le calendrier de l’Avent du C++ continue. Après quelques trous dans le calendrier, aujourd’hui une nouvelle surprise : le court-circuit du constructeur de copie.

Cette fonctionnalité est présente dans le C++ depuis la nuit des temps et pourtant peu connue, alors que ses effets de bords peuvent être redoutables. Cette dépêche très pédagogique explique tous les détails d’une optimisation ultime.

Sommaire Terminologie

Cette dépêche contient des mots français peu utilisées au quotidien. Ces mots sont le résultat de la traduction des termes du standard C++. Pour ne pas être trop perdu, un petit tour de la signification spécifique à cette dépêche.

Élision
  • « élision du constructeur de copie » : traduction de l’anglais « copy elision » qui est une optimisation évitant de passer par le constructeur de copie ;
  • “élider” : en anglais “elide”, supprimer le constructeur de copie ;
  • “éluder” : éviter avec adresse le constructeur de copie, éclipser, court-circuiter, outrepasser, contourner.

Cette dépêche n’utilise pas “éluder”, mais “élider” car l’orthographe est proche du terme anglais “elide”.

Constructeur de copie

Cette dépêche utilise la traduction « constructeur de copie » pour l’expression anglaise « copy constructor ». D’autres documents en français utilisent des traductions sensiblement différentes :

  • « constructeur par copie » ;
  • « constructeur de recopie » ;
  • « constructeur par recopie ».

Les auteurs de cette dépêche ont opté pour l’expression « constructeur de copie » car sémantiquement le mot “de” identifie, alors que le mot “par” décrit. Et car l’orthographe de “copie” est plus proche de l’anglais “copy” (un peu comme choisir “paquet” au lieu de “paquetage” pour traduire “package” en informatique). Il en est de même pour « constructeur de déplacement ».

Si vous souhaitez apporter vos idées sur la traduction, merci de vos commentaires constructifs (par copie) ;-)

Le constructeur de copie peut être coûteux

Lors des appels et retours de fonctions, il arrive qu’un objet temporaire soit créé, avant d’être copié à son emplacement mémoire définitif. Cette approche consomme inutilement des ressources (mémoire, temps d’exécution).

struct GrosseStructure { // ... des attributs volumineux // et des références vers d'autres objets }; GrosseStructure f() { GrosseStructure immense; // ... // Copie de l'objet immense // par retour de fonction return immense; } void g (GrosseStructure arg) { // ... } int main() { // Copie d'un objet temporaire // dans l'appel de fonction g() g( f() ); } Élider le constructeur de copie

Dans certains cas, il est possible d’éviter la copie, en créant directement l’objet à son emplacement de destination final. Le C++98 autorise le compilateur à faire une telle optimisation.

L’exemple suivant construit un objet a par une succession de six constructeurs de copie.
GCC et Clang n’exécutent pas le constructeur de copie. Ces deux compilateurs optimisent le code, même avec l’option -O0 (qui signifie pourtant « pas d’optimisation »). Cette optimisation est quand même désactivée avec -fno-elide-constructors.

#include <iostream> struct A { int i; // incrémenté à chaque copie A() { i = 0; } A(A const& a) { i = a.i + 1; } }; A f() { return A(A()); } int main() { A a = A( A( A( f() ) ) ); std::cout << "a.i = " << a.i << std::endl; } Option de compilation   GCC-6.2   Clang-3.8 -std=c++98 -O0   a.i = 0   a.i = 0 -fno-elide-constructors   a.i = 6   a.i = 6 Explications

Dans l’exemple précédent, la fonction f() crée un objet temporaire A. Le compilateur élide le constructeur de copie et crée cet objet A directement dans la pile d’appel (call stack) de la fonction appelante main().

Le compilateur court-circuite autant de fois que nécessaire. Cette optimisation s’applique aussi à l’initialisation de copie (copy initialization). Ainsi l’objet temporaire retourné par la fonction f() est directement construit dans a. Et cela indépendamment de l’extension inline. C’est-à-dire que le corps de la fonction f() aurait pu se trouver dans une bibliothèque à part.

Plus généralement, et contrairement au langage C, le standard C++ autorise le compilateur à effectuer toutes les optimisations possibles du moment que le résultat soit conforme à celui attendu par le code source. Et l’élision du constructeur de copie va plus loin, car le standard C++ part du principe que les développeur code le constructeur de copie pour faire la même chose que les autres constructeurs, le résultat des constructeurs se valent. Le compilateur ne vérifie pas si le corps des différents constructeurs font la même chose (se serait trop compliqué).

Avertissement : Le standard C++ privilégie cette optimisation, quitte à ne pas exécuter les instructions du constructeur de copie. Si ton constructeur de copie réalise des opérations particulières parce que tu es certain qu’il sera forcément appelé avec A(A()), alors le compilateur risque de te faire tourner en bourrique !

Et le constructeur de déplacement ?

Le compilateur remplace le constructeur de copie par le constructeur de déplacement quand cela est possible. Par contre, généralement, le compilateur préfère élider le constructeur de copie quand cela est possible, donc ne pas utiliser le constructeur par déplacement.

Nous pouvons nous poser la même question pour les opérateurs d’affectation de copie et de déplacement. Donc, expérimentons un peu plus en généralisant le précédent exemple :

#include <iostream> int t[6] = { 0, 0, 0, 0, 0, 0 }; struct A { A() { ++t[0]; } A(A const&) { ++t[1]; } A& operator=(A const&) { ++t[2]; return *this; } #if __cplusplus > 201100 A(A &&) { ++t[3]; } A& operator=(A &&) { ++t[4]; return *this; } #endif ~A() { ++t[5]; } }; A f() { return A( A() ); } int main() { { A a = A( A( A( f() ) ) ); } std::cout << "Dflt = " << t[0] << "\n" "Copy = " << t[1] << "\n" "CpAs = " << t[2] << "\n" #if __cplusplus > 201100 "Move = " << t[3] << "\n" "MvAs = " << t[4] << "\n" #endif "Dtor = " << t[5] << '\n'; }

Quatre tests produisent le résultat Élision :

g++ -std=c++98 ; clang++ -std=c++98 g++ -std=c++11 ; clang++ -std=c++11

Deux tests produisent le résultat C++98 :

g++ -std=c++98 -fno-elide-constructors clang++ -std=c++98 -fno-elide-constructors

Deux tests produisent le résultat C++11 :

g++ -std=c++11 -fno-elide-constructors clang++ -std=c++11 -fno-elide-constructors Résultats Élision C++98 C++11 Dflt Constructeur par défaut 1 1 1 Copy Constructeur de copie - 6 - CpAs Opérateur d'affectation de copie - - - Move Constructeur de déplacement - - 6 MvAs Opérateur d'affectation de déplacement - - - Dtor Destructeur 1 7 7 Cas autorisés

Le standard C++11 définit les trois cas suivants pour lesquels le compilateur peut élider le constructeur de copie.

Cas 1 – Un objet temporaire utilisé pour initialiser un autre objet

Ci-dessous, l’objet temporaire A() peut bénéficier de l’élision. Dans ce cas, le constructeur par défaut A() crée l’argument a directement sur la pile d’appel de la fonction f().

void f (A a) {} int main() { f( A() ); } // ^--- objet temporaire

Donc l’objet temporaire n’est pas copié, mais directement créé à l’emplacement mémoire de destination, comme si le constructeur de copie avait été appelé.

Cas 2 – Retour par valeur pour une variable sur le point de sortir de sa portée

Ce sont les fameux « Return Value Optimization » (RVO) et « Named Return Value Optimization » (NRVO) que nous pourrions traduire par :

  • Optimisation du retour par valeur

    A rvo() { return A(); } int main() { A a = rvo(); }
  • Optimisation du retour par valeur à partir d’une variable nommée

    A nrvo() { A a; return a; } int main() { A a = nrvo(); }
Cas 3 – Levée ou capture d’une exception par valeur

Note : Dans ce cas, GCC ne réalise pas l’élision. Ce n’est pas parce que le standard l’autorise que les compilateurs doivent l’implémenter. Et ce n’est pas parce que le standard C++98 a normalisé cette pratique que les compilateurs le faisaient depuis les années 90. Les compilateurs les plus populaires ont progressivement implémenté ces optimisations au fur des années.

void f() { A a; throw a; } int main() { try { f(); } catch (A a) { //… } } Problématiques

Ces optimisations laissées à la discrétion des compilateurs posent quelques problèmes ennuyeux. Le TS P0135r0 indique que le fil de discussion sur ISO C++ Future Proposals a produit une longue liste des inconvénients. Ces inconvénients découlent de la formulation actuelle du standard C++ à propos de cette élision. Les améliorations effectuées entre C++98 et C++14 n’ont pas supprimés ces inconvénients. Voici trois inconvénients parmi les plus notables :

Inconvénient 1 - Type indéplaçable

Le code qui exploite l’élision se heurte aux types indéplaçables. Dans l’exemple suivant, la fonction f() retourne un objet par valeur. Le compilateur sait qu’il peut élider le constructeur de copie, et que le constructeur de déplacement ne lui est pas utile. Le développeur sait que le compilateur peut le faire. Tous, humains et logiciels sont d’accord pour dire que ce code est possible.
Mais pas le standard !

struct NonDeplacable { NonDeplacable() = default; NonDeplacable(NonDeplacable const&) = default; NonDeplacable(NonDeplacable &&) = delete; }; // ^-- pas de constructeur de déplacement NonDeplacable f() { return NonDeplacable(); // Clang-3.9 error: call to deleted constructor of 'NonDeplacable' // GCC-7 error: use of deleted function 'NonDeplacable::NonDeplacable(NonDeplacable&&)' } int main() { NonDeplacable x = f(); }

Pour rappel, cette optimisation est optionnelle. Et donc, le standard C++ en interdisant l’élision dans ce cas, évite du code C++ “valide” qui ne puisse pas être compilé par les compilateurs ne sachant pas élider.

Cette situation rend très difficile (voire impossible) l’implémentation d’une fabrique ou d’un constructeur nommé pour les types non déplaçables.

De plus, le standard ne permet pas non plus l’initialisation par inférence des objets non déplaçables, c’est-à-dire avec le mot-clé auto. Alors que Herb Sutter, animateur en chef du comité de standardisation du C++, préconise de recourir, le plus souvent, au mot-clé auto.

int main() { auto x = f(); // Erreur } Inconvénient 2 - Un code portable est moins performant que l’élision

L’écriture d’un code portable ne peut pas se baser sur une hypothétique optimisation, d’autant plus si la construction de copie présente des effets de bords, chose peu recommandable de fait. Par exemple, un développeur pourrait hésiter entre ces deux approches ci-dessous.

2.1. Retour par valeur

Si le compilateur n’élide pas, l’appel du constructeur de copie peut devenir pénalisant donc ce n’est pas portable (pour des questions de performance).

A f1() { A a; a.data = 42; return a; } int main() { A a = f1(); }

Heureusement, le C++11 prend le relai et impose que la valeur retournée soit non pas copiée, mais déplacée. Si l’objet occupe plus de mémoire que ce que son sizeof va retourner (cas des chaînes, des vecteurs, etc), alors déplacer va faire une différence : on gagne une copie, et ce n’est pas négligeable. En revanche, si l’objet est simple et que son sizeof compte vraiment toute l’information qu’il représente (comme un quaternion), déplacer va coûter aussi cher que copier.

2.2. Paramètre de sortie

Le compilateur écrit directement dans la donnée préalablement construite par l’appelant. Cela permet de limiter la casse si le compilateur n’élide pas, mais cela peut être moins performant que l’élision.

void f2 (A& a) { a.data = 42; // on écrit directement dedans // ou on déplace par affectation b dans a A b; a = std::move(b); } int main() { A a; f2(a); }

Cette technique présente à la fois des avantages et des inconvénients. Elle est très dépendante du contexte.

D’un côté, le compilateur ne saura plus résoudre correctement les problèmes d’aliasing sur des fonctions non inline.

De l’autre, on évite de construire un A à chaque appel. Si A est un gros objet, un vector<> par exemple, même avec l’élision, à chaque appel on construit et on libère un objet A. L’approche du paramètre sortant f2(A&a) peut à la place redimensionner ce vector<> et le remplir ensuite. Un code appelant f2(A&a) en boucle permet d’économiser des millions d’allocations et de libérations, l’objet A étant alors un cache extérieur. Les gains réalisés ainsi sont intéressants.

Inconvénient 3 - Un code portable est moins naturel

C’est le point le plus important de cette dépêche, l’intérêt d’écrire A f1() plutôt que void f1(A& out). Mais pourquoi donc cette dépêche s’obstine à vouloir écrire A f1() alors que void f1(A& out) fait très bien l’affaire ?

    Car utiliser A f1() est bien plus naturel !

En mathématiques, nous écrivons y = f(x), c’est naturel, notre cerveau est habitué à penser comme cela. Alors pourquoi on devrait écrire f(x_in,y_out) ?

Réponse : Le développeurs sont priés d’écrire f(x_in,y_out) car y = f(x) n’est pas portable (pour les raisons évoquées sur les points précédents).

Ce serait bien de pouvoir coder avec le retour par valeur A f() { return A(); } afin de porter la sématique d’éxecution du logiciel et donc de mieux comprendre et maintenir le code source, non ?

Conclusion

Cette dépêche présente une optimisation intéressante permise par le standard C++, mais qui malheureusement n’est pas vraiment exploitée.

Alors que faire pour résoudre tous ces inconvénients et démocratiser les possibilités de code offertes par l’élision du constructeur de copie ?

Réponse surprise dans la prochaine dépêche :-)

Réutilisation

Le texte de cette dépêche est protégé par le droit d’auteur la gauche d’auteur et réutilisable sous licence CC BY-SA 4.0. Les images utilisées sont aussi sous licence libre (cliquer sur l’image pour plus de détails).

Donc n’hésitez pas à réutiliser ce contenu libre pour créer, par exemple, des supports de formation, des présentations (Meetups), des publications sur d’autres blogs, des articles pour des magazines, et aussi un article C++17 sur Wikipédia dès que Wikipédia utilisera la licence CC BY-SA-4.0.   ٩(•‿•)۶

Les auteurs

Par respect de la licence, merci de créditer les nombreux auteurs :

Continuer à améliorer ce document

Malgré tout le soin apporté, il reste certainement des oublis, des ambiguïtés, des fôtes… Bien que cette dépêche restera figée sur le site LinuxFr.org, il est possible de continuer à l’enrichir sur le dépôt Git du Groupe des Utilisateurs C++ Francophone (C++FRUG). C’est donc sur ce dépôt que se trouve les versions les plus à jour.   (ღ˘⌣˘ღ)

Appel à contribution

Nous nous efforçons de vous fournir une dépêche de qualité chaque jour ouvré. Et en plus, avec une illustration sympathique. Mais cela demande beaucoup de travail, et tenir les délais n’est pas toujours simple.

Merci de nous donner un coup de main, que ce soit sur la correction orthographique, le dessin, la lecture des spécifications techniques, la rédaction d’une nouvelle dépêche à intégrer au calendrier de l’Avent du C++. Tu peux aussi apporter ta contribution à la dépêche « Faut-il continuer à apprendre le C++ ? ».

Rejoins-nous sur la page du groupe de travail C++ sur LinuxFr.org (un compte est nécessaire pour y accéder).

À suivre…

Télécharger ce contenu au format Epub

Lire les commentaires

API Platform 2 : un framework pour créer des API web hypermedia en quelques minutes

Samedi 10 Décembre

Après une année de développements et plus de 700 commits réalisés par plus d’une centaine de contributeurs à travers le monde, la nouvelle version d’API Platform vient d'être publiée. API Platform v2 est une réécriture profonde du framework incluant une refonte complète de la conception, des ajouts de nouvelles fonctionnalités et des corrections de bugs.

API Platform est un framework libre (license MIT) écrit en PHP 7 et basé sur Symfony destiné à la création d’API web modernes, puissantes et sécurisées. Cet outil est particulièrement adapté à la construction de systèmes d'informations API-centric basés sur l’hypermedia et les Linked Data. Il permet de réaliser facilement des Single-Page Applications (en utilisant des bibliothèques JavaScript telles que React ou Angular) et des applications mobiles.

Le sponsor principal de API Platform est la société coopérative lilloise Les-Tilleuls.coop. Il s'agit d'une SCOP spécialisée dans la conception et la réalisation de logiciels comptant une vingtaine de salariés qui pratiquent l'autogestion et se partagent égalitairement les bénéfices engrangés.

En seconde partie de la dépêche, vous trouverez une traduction en français de l'annonce de sortie de cette version 2, qui revient sur les fonctionnalités principales du framework.

Sommaire

API Platform repose sur 3 principes fondateurs :

  • créer une API facilement et rapidement : n’importe quel développeur web doit pouvoir créer une API REST et obtenir le support du CRUD, une documentation auto-générée, l’authentification via JSON Web Token ou OAuth, la gestion des en-têtes CORS, la validation des données, les tris et les filtres, le cache…
  • les formats ouverts modernes sont gérés nativement, sans demander de travail supplémentaire pour le développeur : Swagger/OpenAPI, JSON-LD, Hydra, HAL, API Problem (RFC 7807), Schema.org sont supportés par défaut et la couche d’abstraction fournie par le framework permet d’ajouter facilement le support d’autres nouveaux formats d’API (JSONAPI et GraphQL sont actuellement en cours de développement) ;
  • chaque fonctionnalité du framework doit être extensible, modulaire et débrayable.
Exposer une API en quelques secondes grâce au nouveau système des configuration et de métadonnées

Grâce au nouveau système de configuration et au composant de métadonnées (la couche d’abstraction entre les différents formats supportés), vous pouvez créer une API hypermedia de qualité simplement en modélisant vos données sous forme de classes PHP et en ajoutant quelques annotations.

Exemple :

<?php // src/AppBundle/Entity/Book.php namespace AppBundle\Entity; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; /** * A book. * * @ApiResource * @ORM\Entity */ class Book { /** * @var int The id of this book. * * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ public $id; /** * @var string|null The ISBN number if this book (or null if doesn't have one). * * @ORM\Column(nullable=true) * @Assert\Isbn */ public $isbn; /** * @var string The title of this book. * * @ORM\Column * @Assert\NotBlank */ public $title; // Prefer private properties, accessors and mutators in real applications }

Cette classe est suffisante pour obtenir une API fonctionnelle, supportant les fonctionnalités suivantes :

  • des opérations CRUD ;
  • la validation des données et la sérialisation des erreurs Les formats JSON-LD, Swagger, Hydra ;
  • la pagination ;
  • une interface utilisateur agréable et une documentation autogénérée utilisant les données de la PHPDoc.

Consultez la démo pour tester un exemple plus avancé (code source de seulement 2 classes) !

Les relations hypermédias entre les différentes ressources exposées par l’API sont gérées nativement. Utiliser n’importe quelle autre fonctionnalité de API Platform consiste juste à ajouter quelques lignes de configuration. Découvrez ça dans le guide de démarrage.

Si vous n’aimez pas les annotations, vous pouvez utiliser les fichiers de configuration au format XML ou YAML à la place. Si vous n’aimez pas l’ORM Doctrine ou si vous ne souhaitez pas utiliser le validateur Symfony, vous pouvez créer des adaptateurs pour brancher votre code personnalisé et utiliser vos bibliothèques préférées. En somme, API Platform a été conçu pour être complètement extensible.

Intégration de Docker

La distribution officielle d’API Platform est fournie avec une configuration Docker adaptée au développement d’API. Cela inclut Apache + PHP7 et une image MySQL. Pour faire fonctionner une application API Platform de manière optimisée sur votre machine, tapez les commandes suivantes dans son répertoire racine :

$ docker-compose up -d # Télécharge, construit et exécute les images Docker $ docker-compose exec web bin/console doctrine:schema:create # Crée le schéma MySQL, nécessaire une seule fois

Une fois que l’application est démarrée, rendez vous sur http://localhost pour commencer à jouer avec votre API.

Les images API Platform peuvent également être déployées en production facilement en utilisant Docker Swarm (Amazon Web Services, Azure…) ou Google Container Engine (avec Kubernetes).

Un générateur de modèle de données amélioré

Au lieu de créer votre propre modèle de données, pourquoi ne pas réutiliser des vocabulaires ouverts comme le très populaire Schema.org et ainsi profiter de la puissance des Linked Data et du web sémantique ? Exactement comme le fait Google, mais grâce à un framework 100% libre.

Depuis sa première sortie, API Platform est fourni avec un générateur de code permettant de créer un modèle de données en PHP incluant les classes, les propriétés, les getters et setters, une PHPDoc complète, les mappings avec l’ORM Doctrine, les annotations de validation et le mapping avec le vocabulaire externe supporté par API Platform. Ce générateur a été mis à jour afin d’être compatible avec la nouvelle configuration d’API Platform 2. Grâce à ce générateur couplé au système de création d’API de API Platform, vous pouvez réaliser une API fonctionnelle sans écrire une seule ligne de PHP :

types: Book: parent: false # Generate only one class, not the full hierarchy from Schema.org properties: isbn: ~ name: ~ description: ~ author: { range: Text } dateCreated: ~ Review: parent: false properties: reviewBody: ~ rating: { range: Integer, nullable: false } # This is a custom field that doesn't exist in the vocab itemReviewed: { range: Book, nullable: false, cardinality: '(*..1)' }

Découvrez-en plus au sujet du générateur dans la documentation et la démo.

La négociation de contenu et le support intégré pour JSON-LD, Hydra, HAL, YAML, CSV et XML # app/config/config.yml api_platform: formats: jsonld: ['application/ld+json'] jsonhal: ['application/hal+json'] xml: ['application/xml', 'text/xml'] json: ['application/json'] yaml: ['application/x-yaml'] csv: ['text/csv'] html: ['text/html'] # This is the API Platform UI

Cette configuration donne accès à l’ensemble des formats disponibles (Symfony 3.2 - actuellement en RC - est requise pour le support du YAML et du CSV). Dès lors vous pouvez préciser le format souhaité à travers l’UI ; en utilisant les entêtes HTTP adéquates, ou en ajoutant le nom du format en extension de n’importe quelle URL de l’API (exemple: https://demo.api-platform.com/books.jsonld). L’ajout et utilisation de formats non supportés par défaut peuvent être réalisés en écrivant des adaptateurs personnalisés.

Découvrez plus de détails au sujet de la négociation de contenu dans API Platform

Une "UI" pratique et une documentation Swagger 2 automatique

API Platform 2 génère une documentation extensive au format Swagger 2/OpenAPI. Toute les URLs et types sont automatiquement décrits grâce à notre système d’extraction des métadonnées.

Une interface web construite à partir de Swagger UI est aussi automatiquement mise à disposition. Faites appel à n’importe quelle URL de l’API en utilisant un navigateur web et (grâce à l’en-tête HTTP Accept envoyé par le navigateur) API Platform va afficher la requête envoyée à l’API ainsi que la réponse reçue dans une interface web agréable. Une documentation compréhensible par les humains de l’opération en cours sera également affichée.

Explorez la page d’accueil de votre API pour découvrir la documentation de toutes les opérations disponibles, incluant la description de toutes les ressources et propriétés extraites des métadonnées PHP. Utilisez le bac à sable pour jouer avec votre API.

De nouveaux filtres

Quelques nouveaux filtres ont été ajoutés en complément des filtres existants de recherche, d’ordre, de tri ou de date :

  • le filtre booléen permettant de filtrer les propriétés booléennes ;
  • le filtre numérique permettant de filtrer les champs numériques.

Ces filtres sont désormais disponibles depuis l’UI et documentés dans les formats Hydra et Swagger. Découvrez comment ajouter des filtres dans votre collection d’API.

Les filtres sont désormais implémentés grâce à l’utilisation du tout nouveau système d’extension. Ce système permet de se brancher aux processus de génération des requêtes base de données afin de les modifier. Ce système est particulièrement utile pour implémenter des fonctionnalités de sécurité. Découvrez comment exploiter le mécanisme d’extension pour filtrer le résultat d’un point d’entrée en fonction du rôle de l’utilisateur connecté.

Sécurisé par défaut, respectant les recommandations de l’OWASP

Toutes les fonctionnalités d'API Platform 2 suivent les recommandations de sécurité édictée par l’OWASP. Nous avons créé une suite de tests pour nous assurer que toutes ces recommandations soient respectées et documentées. Découvrez comment API Platform 2 sécurise votre API.

Amélioration des performances

Nous sommes continuellement en train d’améliorer les performances d’API Platform et des composants Symfony que le framework utilise (comme le Serializer ou le composant PropertyAccess). Cette nouvelle version est plus rapide que la V1 et optimise automatiquement les requêtes SQL en fonction des groupes de sérialisation. API Platform 2 est également compatible avec PHP PM. En l’utilisant, les temps de réponse de l’API sont divisés par 10.

Mise à disposition en tant que composants autonomes, dissociés de Symfony et Doctrine

API Platform est conçu comme un ensemble de composants PHP indépendants : son système de métadonnées, les sérialiseurs JSON-LD, Hydra, Swagger et HAL, les bridges Doctrine et Symfony… Tous ces composants peuvent être utilisés séparément pour créer votre propre API. Pour le moment, la bibliothèque Core doit être téléchargée mais une sous-division du dépôt principal (subtree split) sera disponible pour la version 2.1. Ce split permettra l’installation spécifique d’un composant. Les classes spécifiques peuvent déjà être utilisées séparément de la distribution standard, et sans Symfony.

Nous avons également déplacé le code assez générique de API Platform vers Symfony. Par exemple, le nouveau composant Symfony PropertyInfo a été extrait d’API Platform. Quelques corrections de bugs et des nouvelles fonctionnalités telles que le support des profondeurs maximales de sérialisation ou encore des formats YAML et CSV au sein du Serializer de Symfony ont été réalisées durant le développement d’API Platform.

L'ORM Doctrine n’a jamais été obligatoire pour utiliser API Platform mais l’ensemble des interfaces permettant d’implémenter un backend de persistance différence a été repensé et est désormais documenté.

Qualité du code et tests automatisés

Nous avons considérablement amélioré la qualité de code d’API Platform pour sa V2. API Platform v1 était déjà testé via Behat. Dans la v2, nous avons ajouté des tests unitaires supplémentaires afin de prévenir les bugs et de démontrer que chaque classe respecte les principes SOLID. La couverture du code est désormais de 96%. Notre suite de tests est automatiquement lancée sous Linux (en utilisant Travis) et sous Windows (en utilisant AppVeyor).

Nous avons également utilisé Scrutinizr et SensioLabs Insight afin de détecter les mauvaises pratiques et améliorer la qualité globale du code. API Platform est désormais noté 8.7/10 sur Scrutinizr et a reçu la médaille Platinum (meilleure évaluation, donc) sur Insight.

Réécriture de la documentation et nouveau site web

La documentation a été améliorée et toutes les nouvelles fonctionnalités sont désormais documentées. Le guide de démarrage a été complètement réécrit. Un nouveau site web construit avec React et Redux a également été développé. Il est notamment doté d’un puissant moteur de recherche fourni par Algolia.

Une communauté en pleine essor

API Platform, c’est plus de 100 contributeurs à travers le monde, une core team composée de Hamza Amrouche , Antoine Bluchet, Samuel Roze, Teoh Han Hui, Théo Fidry, Vincent Chalamon et Kévin Dunglas), des workshops et des conférences données à travers le monde (d’ailleurs, ne loupez pas le workshop API Platform de demain lors de la Symfony Con de Berlin).

API Platform est régulièrement classé dans les dépôts PHP les plus populaires de Github auprès de grands projets tels que Laravel, Symfony et Wordpress. Nous avons d’ailleurs dépassé le millier d’étoiles sur Github début novembre ! Des formations, des prestations de développements, un support commercial ainsi que les workshops sont dispensés dans toute l’Europe par Les-Tilleuls.coop, principal sponsor du framework.

Merci à toutes les personnes qui ont travaillé sur ces développements, à celles qui ont contribué à la documentation ou qui ont participé à populariser API Platform ! Ce projet ne serait rien sans vous !

Les prochaines étapes

La sortie de la V2 d’API Platform n’est que la première étape ! Nous travaillons déjà sur de nouvelles fonctionnalités et certaines sont déjà sur le point d’être mergées dans la branche 2.1 :

  • le support natif de MongoDB et le support de JSONAPI ;
  • une auto génération de l’administration via l’utilisation de React et Admin On Rest.

Restez à l’écoute des prochaines mises à jour ! Si vous ne l’avez pas encore fait, c’est l’occasion ou jamais de tester API Platform !

Si vous aimez le projet, vous pouvez nous aider en nous donnant une étoile sur GitHub !

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 50 de l'année 2016

Samedi 10 Décembre

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 46 événements (0 en Belgique, 44 en France, 1 au Québec et 1 en Suisse) est en seconde partie de dépêche.

Sommaire Agenda du Libre pour la semaine 50 de l'année 2016 [FR Montpellier] Formation Prestashop - Du lundi 12 décembre 2016 à 09h00 au mercredi 14 décembre 2016 à 17h00.

Lundi 12 au mercredi 14 décembre 2016 de 9h00 à 12h30 et de 13h30 à 17h00 (Prestashop)
Aplose Pole Realis - 710, rue Favre de Saint-Castor, 34080 Montpellier
Prestashop, création de boutique en ligne

[FR Rennes] Apéro de Noël CapLibre - Le lundi 12 décembre 2016 de 18h00 à 18h30.

Bonjour,Les soirées sont ouvertes à tous ceux qui ont un rapport professionnel avec le logiciel libre et open-source, membres de CapLibre / Alliance Libre ou non, étudiants, salariés travaillant sur des technologies libres, enseignants, DSI intéressés de rencontrer des acteurs régionaux du logiciel libre…
 Rendez-vous au Couleur Café, 27 rue Legraverend à Rennes lundi 12 décembre à partir de 18h30.
L'équipe de CapLibre

[FR Montpellier] WikiPermanence - Le lundi 12 décembre 2016 de 18h00 à 20h00.

Une WikiPermanence est une rencontre physique entre des wikipédiens chevronnés et de nouveaux ou futurs wikipédiens qui souhaitent acquérir des connaissances et des conseils sur le fonctionnement de Wikipédia. Il ne s’agit pas d’une simple rencontre entre wikipédiens : la WikiPermanence est là pour répondre aux questions, permettre des démonstrations, offrir une aide aux premiers pas et, si cela se fait régulièrement, permettre un suivi.
Elles nous permettront d’aborder les sujets tels que :
Un instant est prévu pour l’initiation des débutants

[FR Grenoble] Rencontre groupe local OpenStreetMap - Le lundi 12 décembre 2016 de 18h30 à 21h30.

Les contributeurs à OpenStreetMap de la région de Grenoble tiendront leur réunion mensuelle le lundi 12 décembre à 18h30.
Ordre du jour : traitement des données d'accessibilité
On va traiter l'ensemble des données récoltées lors de la cartopartie accessibilité du 26 novembre.

[FR Castelnau-le-Lez] Section GNU/Linux - Le mardi 13 décembre 2016 de 10h00 à 12h00.

L’équipe de Montpel’libre vous propose une permanence de dépannages pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien. Le contenu de l’atelier s’adapte aux problèmes des personnes présentes et permet ainsi d’adapter l’acquisition de nouvelles compétences au rythme de chacun.
Vous pourrez y aborder plusieurs thèmes :
Présentation de Linux

[FR Montpellier] Ateliers Logiciels Libres Blender, Audacity, GNU/Linux - Le mardi 13 décembre 2016 de 17h00 à 19h00.

Salle Nino Rota, Médiathèque Federico Fellini place Paul Bec, 34000 Montpellier
Créer un bonhomme de neige avec Blender Découvrir Blender, logiciel libre de modélisation, d’animation et de rendu en 3D. Il possède de nombreuses fonctions avancées comme, entre autres, la gestion de montage vidéo et la création de jeux vidéo grâce à son moteur de jeu intégré.
Retoucher des pistes audio avec Audacity Retouchez vos pistes audio pour vos montages vidéos ou autres applications, pour les améliorer, les couper, les mixer…

[FR Biot] RAL Learning Centre - Le mardi 13 décembre 2016 de 18h00 à 20h30.

Certains les appellent « install party », d’autres encore « Soirées Linux », mais les Rencontres Accès Libre sont tout cela en même temps, et bien plus encore…
c'est l’occasion de :
discuter, échanger, expliquer ;

[FR Charleville-Mézières] Permanence Informatique Libre - Le mardi 13 décembre 2016 de 18h00 à 20h00.

Permanence de l’association «Informatique Libre en Ardenne»
Aide collaborative,dépannage, installation Linux
Référents:  Thierry E. et Jean-Christophe G.

[FR Oullins] Assemblée Générale Hadoly - Le mardi 13 décembre 2016 de 19h00 à 23h00.

Mardi 13 décembre à partir de 19H00, Hadoly fêtera son premier anniversaire lors de son assemblée générale.
Hébergeur Associatif Décentralisé et Ouvert à Lyon
Hadoly est un projet d'hébergeur associatif, militant et local, à Lyon. Nous avons pour but de fournir des services numériques, à la fois à des particuliers et à des structures (associations, coopératives). Ces services peuvent inclure du mail, de l'hébergement web, de la messagerie instantanée, du stockage de fichiers, etc.

[FR Grenoble] Permanence des libristes dauphinois - Le mardi 13 décembre 2016 de 19h00 à 21h00.

Le Laboratoire Ouvert Grenoblois organise, tous les deuxièmes mardis du mois, une permanence ouverte à tou·te·s, où sont présents les acteurs du Libre locaux :
Le LOG, hackerspace grenoblois ;
La Guilde, groupe d'utilisateurs de Logiciel Libre ;

[FR Grenoble] Permanence des libristes dauphinois - Le mardi 13 décembre 2016 de 19h00 à 21h00.

Le Laboratoire Ouvert Grenoblois organise, tous les deuxièmes mardis du mois, une permanence ouverte à tou·te·s, où sont présents les acteurs du Libre locaux :
Le LOG, hackerspace grenoblois ;
La Guilde, groupe d'utilisateurs de Logiciel Libre ;

[FR Paris] Tuppervim - Le mardi 13 décembre 2016 de 20h00 à 22h00.

Le tuppervim est un évènement mensuel organisé dans les locaux de Ingima France.
Il a lieu un mardi du mois (généralement le premier).
Le texte suivant a été honteusement copié du site http://tuppervim.org

[FR Paris] MOOC pour découvrir Wikipédia - Le mercredi 14 décembre 2016 de 12h00 à 23h00.

Les inscriptions au WikiMOOC – des cours en ligne gratuits pour découvrir le fonctionnement de Wikipédia et apprendre à y contribuer – ouvrent le 14 décembre 2016 sur FUN (France université numérique).
Wikipédia est le cinquième site web le plus visité au monde, il est entièrement rédigé par des internautes bénévoles et tous ses contenus sont placés sous licence libre Creative Commons.
Un MOOC est un cours en ligne, massif et ouvert. Ce MOOC en six semaines, ouvert à tous et gratuit, vous permettra d'apprendre à contribuer à Wikipédia et plus largement de découvrir comment fonctionne cette encyclopédie collaborative.

[FR Auch] Initiation à Linux - Le mercredi 14 décembre 2016 de 14h00 à 17h00.

Cette découverte de Linux est proposée au Café associatif d'Auch, l'Abri des Possibles, tous les mercredi.

[FR Pont-Audemer] Café Linux - Le mercredi 14 décembre 2016 de 14h30 à 16h30.

Libérez votre ordinateur en adoptant le logiciel libre.
Installation possible de Linux sur votre ordinateur (apportez votre tour, clavier, souris et l'écran (si possible) ou votre portable et sauvegarder vos données au préalable).
Débutants : découvrez l'univers du logiciel libre. Initiés : venez partager vos connaissances !

[FR Sète] Formation sécurité informatique et cryptographie Tails, Tor, PGP - Le mercredi 14 décembre 2016 de 16h00 à 20h30.

Montpel’libre premier centre formateur Tails en France a le plaisir de vous proposer un nouveau cycle de formation, cryptographie et sécurité informatique. En partenariat avec
Merci d’avoir choisi de participer aux ateliers « Sécurité Informatique et Cryptographie » organisés par Le Club de la Presse et Montpel’libre.
Formation Crypto, séance de préparation, premier module :

[FR Callian] Linux et les Logiciels Libres - Le mercredi 14 décembre 2016 de 18h00 à 21h00.

Venez découvrir Linux et les logiciels libres, mais aussi vous faire aider avec votre matériel informatique quel qu'il soit, imprimante, box, tablette, smartphone y compris.
Venez avec vos machines, même sous Windows ou Mac/os.

[FR Amiens] Open Source Ecologie, présentation du projet - Le mercredi 14 décembre 2016 de 18h30 à 21h30.

Une ou deux présentations de 15-20 min du groupe OSE Lille, de l'association OSE France, du mouvement global et des projets.
Discussion générale avec questions réponses.
Proposition de lancement d'un groupe local sur Amiens

[FR Bordeaux] Atelier artiste - hacker - Le mercredi 14 décembre 2016 de 19h00 à 21h00.

Ateliers-cours à la fabrique-pola - L@bx
tout les mercredi, 19h00, à partir du 07 décembre 2016
Passer aux logiciels libres pour toute sa pratique artistique :

[FR Lyon] Rencontre Python - Trucs, astuces et hacks pour écrire du code python plus rapide - Le mercredi 14 décembre 2016 de 19h00 à 22h00.

Matthieu Gautier nous présentera une série de techniques permettant d'écrire du code python qui s'exécute plus rapidement que ce qu'on a l'habitude de faire naturellement.
Récoltant Manipulant est un bar à vin qui propose également de la bière ou des jus de fruit. Pour grignoter, nous pourrons compter sur la carte basée sur du fromage et de la charcuterie. N'hésitez pas à ramener et à partager d'autres produits qui ne sont pas vendus sur place (sodas, chips, etc…).
Comme d'habitude, comportez vous en accord avec la charte de l'AFPy !

[FR Paris] La gratuité, une économie réparatrice ? - Le mercredi 14 décembre 2016 de 19h30 à 21h30.

Conférence organisée par le magazine Kaizen
Oeil pour oeil, don pour don, de nouvelles économies basées sur l’échange et la gratuité sont en train de modifier notre rapport à l’autre, au travail, à l’argent.
Une boutique qui propose des produits gratuits, les logiciels libres, les SEL qui émergent un peu partout en France, les Incroyables Comestibles qui verdissent nos villes : autant d’exemples de ce mouvement citoyen qui transforme l’économie.

[FR Toulouse] Rencontre Logiciels Libres - Le mercredi 14 décembre 2016 de 19h30 à 22h30.

L'association Toulibre organise une rencontre autour des Logiciels Libres le mercredi 14 décembre, de 19h30 à 22h30 au Centre Culturel Bellegarde, 17 rue Bellegarde à Toulouse.
Pendant toute la soirée, venez poser vos questions au sujet du Logiciel Libre et trouver de l'aide pour installer ou utiliser des Logiciels Libres sur votre ordinateur.
Pour cela, vous pouvez si besoin apporter votre ordinateur, un accès Internet est disponible sur place.

[FR Toulouse] Rencontre Tetalab - Le mercredi 14 décembre 2016 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

[CH Genève] DIASPORA - Découvrons le Facebook de l'Alternative - Le jeudi 15 décembre 2016 de 17h30 à 20h00.

Tous ensemble apprenons à connaître le réseau social alternatif et à faire la différence du côté des libertés individuelles.
Si plus d'affinité, créez votre nouveau compte et faite partie de la rEvolution ;)
Co-organistation Alternatiba-Léman

[FR Martigues] Cycle le livre numérique - Le jeudi 15 décembre 2016 de 16h30 à 18h15.

L’association ULLM (les Utillisateurs de Logiciels Libres du Pays Martégal) en collaboration avec ECM vous présente le programme de ses ateliers du troisième trimètre 2016.
Le jeudi 15 décembre de 16h30 à 18h15
Responsable Alain Riffart

[FR Marseille] Repair Café - Le jeudi 15 décembre 2016 de 17h00 à 19h00.

Pour lutter contre l’obsolescence programmée et favoriser le recyclage créatif,  Repair Cafés et l’association CercLL (CercLL d’Entraide et Réseau Coopératif autour des Logiciels Libres).
Le jeudi 15 décembre 2016 de 17h00 à 19h00 réparons ensemble nos outils informatiques, chez France Nature Environnement 28 rue Saint Savournin 13001 Marseille
Repair Café Marseille est une initiative citoyenne qui s’inscrit dans le contexte de la transition énergétique.

[FR Digne-les-Bains] April 20 ans de promotion et défense du logiciel libre - Le jeudi 15 décembre 2016 de 17h30 à 22h30.

L'April vous invite à fêter 20 ans de promotion et défense du logiciel libre, jeudi 15 décembre 2016 à 17h30 chez Xsalto, 33 allée des Fontainiers à Digne.
Programme
Jean-Christophe Becquet, président de l'April : 20 ans de promotion et défense du logiciel libre

[FR Paris] APL et Soirée de Contribution au Libre - Le jeudi 15 décembre 2016 de 19h30 à 22h30.

Pour ce dernier RDV de l'année, Parinux propose de combiner àpéro et contributions!
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 jeudis soirs dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies).

[FR Paris] Soirée création "Album Autocollant du Libre" - Le jeudi 15 décembre 2016 de 19h30 à 22h30.

L'Album Autocollant du Libre est un projet initialement proposé par la LDN (Lorraine Data Network, fournisseur d'accès internet associatif français) puis repris par l'association LILA, association d'Art Libre et de création artistique avec les Logiciels Libres.
Seuls 2 ateliers furent mis en place à ce jour (une Ubuntu Party et lors des RMLLs 2015).
Nous souhaiterions passer la seconde vitesse avec des ateliers plus réguliers.

[QC Coteau du Lac] Émission #122 de bloguelinux - 5e anniversaire - Le jeudi 15 décembre 2016 de 20h00 à 22h00.

C'est le 5e anniversaire de bloguelinux
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.

[FR Montpellier] Permanence « Les logiciels libres, parlons-en ! » - Le vendredi 16 décembre 2016 de 17h00 à 19h00.

Le Faubourg Marché, qu’est-ce que c’est ?
Le Faubourg Marché est une permanence partagée qui permet aux associations d’accueillir ensemble, les publics de ces associations une fois par semaine, le vendredi entre 17h00 et 19h00, au 19, rue du Faubourg de Nîmes, 34000 Montpellier.
L’idée est de s’informer et d’informer les adhérents des diverses associations sur le fonctionnement du lieu et des associations, et notamment sur les 5 partenaires qui l’animent et lui permettent ainsi d’exister (autour.com, L’Accorderie, enercoop, modulauto, La Nef). Lors de cette permanence partagée vous pourrez rencontrer les associations La Graine (monnaie locale de Montpellier), éCOhabitons, Montpellier à pied, et bien sûr Montpel’libre.

[FR Montpellier] Formation sécurité informatique et cryptographie (Tails - Tor - PGP) - Le vendredi 16 décembre 2016 de 18h00 à 22h30.

Montpel’libre premier centre formateur Tails en France a le plaisir de vous proposer un nouveau cycle de formation, cryptographie et sécurité informatique. En partenariat avec
Merci d’avoir choisi de participer aux ateliers « Sécurité Informatique et Cryptographie » organisés par Le Club de la Presse et Montpel’libre.
Formation Crypto, séance de préparation, premier module :

[FR Paris] Atelier Wikidata - Le vendredi 16 décembre 2016 de 19h30 à 23h00.

Wikimédia France continue sa série d'ateliers mensuels de formation à Wikidata.
Pour cette réunion, le thème sera :
« Ranger le monde » : le suivi des contraintes, présentations et défis !

[FR Le Tholonet] Réunion mensuelle de l'Axul - Le vendredi 16 décembre 2016 de 20h00 à 23h55.

Les membres de l'Axul (Association du Pays d'Aix des Utilisateurs de Linux et des Logiciels Libres) vous invitent à leur réunion mensuelle qui aura lieu le vendredi 16 décembre de 20h00 à 23h55 au 1er étage du centre culturel Georges Duby du Tholonet (859 avenue Paul Julien, à proximité de la place du marché) à Palette, premier village sur la D7n au Sud-Est d'Aix.
Ordre du jour
20h00 - 20h15 : Accueil

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 17 décembre 2016 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.

[FR Courbevoie] Atelier RASPBERRY-PI - Le samedi 17 décembre 2016 de 09h30 à 18h00.

L'association StarinuX, promotion de GNU/Linux, du logiciel Libre et Opensource, organise l'atelier RASPBERRY-PI.

LIEU : 48 rue de Colombes 92400 Courbevoie, dans notre belle salle dédiée, (WiFi + ETH internet et intranet),(7min de la gare SNCF Courbevoie, ligne Saint Lazare La Défense).

[FR Castelnau-le-Lez] Atelier de développement et programmation - Le samedi 17 décembre 2016 de 10h00 à 12h00.

Pour cette nouvelle saison, les ateliers Dev/Prog de Castelnau auront lieu chaque semaine le samedi matin, pour satisfaire aux attentes de toutes et tous.
Rendez-vous hebdomadaire, tous les samedis, salle 38 de la mjc (fermé pendant les vacances).
Cet atelier de développement est essentiellement axé sur les langages du Web : html, css (même si ce ne sont pas des langages à proprement parler) javascript et PHP, possibilité aussi d’utiliser Ajax, Jquery, Sqlite et MySql, mais il peut aussi aborder d’autres langages à la demande.

[FR Valbonne] Rencontre accès Libre - Le samedi 17 décembre 2016 de 10h00 à 12h00.

Linux Azur propose une rencontre accès libre au Cyberkiosc de Valbonne.
Venez découvrir Linux et les logiciels libres.
Venez nombreux.

[FR Rambouillet] AlterNoël, le noël des alternatives - Le samedi 17 décembre 2016 de 11h00 à 22h00.

Le 17 décembre 2016 on refait le monde à Rambouillet lors d'un grand événement AlterNoël, événement autour de la question cruciale de la réduction des déchets, de l’économie circulaire et des logiciels libres.
Pour ne plus jeter, 12 associations participeront à cette grande journée :
Répare café, répare vélo, répare couture, répare ordi, installe partie et café vie privée.

[FR Ivry sur Seine] Cours de l'Ecole du Logiciel Libre - Le samedi 17 décembre 2016 de 14h00 à 18h00.

Présentation de l'E2L
Quel est le rôle de l'école du logiciel libre ?
Tout d'abord, ce n'est pas une école comme les autres. Elle n'a pas d'établissement fixe, pas de cours de récréation, pas de carte d'étudiant, ni de diplôme de fin d'année.

[FR Marseille] Install Party GNU/Linux - Le samedi 17 décembre 2016 de 14h00 à 19h00.

L’association CercLL (CercLL d’Entraide et Réseau Coopératif autour des Logiciels Libres) vous invite à une install party GNU/Linux, le samedi 17 décembre 2016 de 14h00 à 19h00, dans la salle du Foyer du Peuple 50 rue Brandis 13005 Marseille.
Vous avez envie de découvrir un système d’exploitation libre, simple d’utilisation, stable, rapide et sécurisé. Une nouvelle façon d’utiliser votre ordinateur.
Vous vous sentez une affection naissante pour le Gnou et le Manchot, les mascottes de GNU/ Linux.

[FR Ramonville-Saint-Agne] Openstreetmap: Devenez cartographe - Le samedi 17 décembre 2016 de 14h00 à 18h00.

Openstreetmap est un projet international de cartographie libre, c’est une alternative intéressante à google map… ou à l’IGN.
Vous découvrirez comment est organisé le projet, quels sont les intérêts d’openstreetmap, ses spécificités, mais aussi ses limitations, comment chacun peut s’impliquer dans le projet.
Venez donc découvrir comment on peut :

[FR Lyon] Contribuer sur Wikipédia - Le samedi 17 décembre 2016 de 14h00 à 16h00.

Familiarisez-vous avec la célèbre encyclopédie libre et participative.
Apprenez ses règles et son fonctionnement.
Devenez contributeur ou contributrice en enrichissant des articles à l'aide des documents de la bibliothèque.

[FR Rouen] Journée Mensuelle du Logiciel Libre - Le samedi 17 décembre 2016 de 14h00 à 18h00.

Stop Press : La Mairie de Rouen met à notre disposition une salle au rez-de-chaussée qui sera plus pratique et accessible pour tous. On vous attend!
Le samedi 17 Décembre 2016, nous organisons notre Journée Mensuelle du Logiciel Libre à la Maison St Sever à Rouen (Centre Commercial St Sever, 10-12 rue Saint-Julien 76100 Rouen) de 14h00 à 18h00. Rouen, Normandie.
On fera connaissance avec la toute dernière version de openSUSE, la openSUSE Leap 42.1, Gnome 3.16.2, LibreOffice et beaucoup d’autres distributions Linux. Nous fêterons l'arrivée de la SUSE Linux Enterprise 12 SP2 qui comme vous le savez est la pièce maitresse de Leap 42.1, (bientôt 42.2) et qui est maintenue par des ingénieurs SUSE.

[FR Juvisy-sur-Orge] Permanence GNU/LINUX - Le samedi 17 décembre 2016 de 14h30 à 16h30.

Permanence GNU/LINUX, installation et maintenance par LINESS en partenariat avec l'ACJ (Association Culture et Jeunesse) de Juvisy-sur-Orge.
Il s'agit d'une assistance pour vous aider à installer et utiliser LINUX, mais ce n'est pas un cours à proprement parler.
Aucune inscription préalable n'est nécessaire, aucune assiduité n'est requise.

[FR Nantes] Fête des 20 ans de l'APRIL & Permanence Linux - Le samedi 17 décembre 2016 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.

Télécharger ce contenu au format Epub

Lire les commentaires

Le père Noël arrive avec des jeux

Samedi 10 Décembre

« Mais non !
— Mais si ! »
Voici un nouveau CD de jeux libres mis à votre disposition pour toujours plus de plaisir. Ce CD pour petits et grands enfants est le deuxième CD de l'année et le premier sorti sous l'égide de LibreGamesInitiatives. Les jeux sont toujours en version Windows mais existent en version Linux, même s'il faut parfois les compiler à partir des sources. Pour 40% d'entre eux toutefois, ils sont exécutables sous Linux grâce à Wine.

La série 3.3 est la mise à jour de la 3.2 avec quatre suppressions : StepMania, Train Director, Wormux et UFO Alien Invasion, et dix jeux rajoutés pour un total de 20 jeux. Les jeux initialement fournis en archives zip, ont été remplacés par des installeurs réalisés avec NSIS.

Un effort a été fait pour la traduction en français. Ont été traduits par l'association : Commander Staline , The Butterfly Effect (il reste quelques chaînes à intégrer), Torus Trooper (manuel traduit par l'association), Kiki The Nano Bot (traduit par l'association, mais intégration au jeu échouée).

 Liste des jeux :
  • Atomorun 2008 ;
  • Biloba ;
  • Briquolo ;
  • Commander Staline ;
  • DigiBand ;
  • Duo ;
  • Genetic Invasion ;
  • Globulation 2 ;
  • Kiki Le Nano Robot ;
  • LinCity NG ;
  • Maniadrive ;
  • Newton adventure ;
  • Pingus ;
  • PixPang ;
  • Sable ;
  • Sudoku Portable ;
  • The Butterfly Effect ;
  • Torus Trooper ;
  • X-Moto ;
  • zeRace.
Télécharger ce contenu au format Epub

Lire les commentaires

Soirée de création de l'Album d'Autocollants du Libre: jeudi 15 déc. 2016 à 19h30 - Paris, France

Vendredi 9 Décembre

L'Album d'Autocollants du Libre est un projet initialement proposé par la LDN (Lorraine Data Network, fournisseur d'accès internet associatif français) puis repris par l'association LILA, association d'Art Libre et de création artistique avec les Logiciels Libres (vous avez peut-être entendu parler de notre projet principal : le film d'animation ZeMarmot).

Il s'agit d'un album d'autocollants « comme quand on était petits », pour y coller les autocollants divers des associations francophones. Vous savez, ces autocollants que vous récupérez dans diverses évènements autour du logiciel ou de l'art libre, que vous collez sur votre portable, votre frigo, votre porte…

Seuls 2 ateliers furent mis en place à ce jour (Ubuntu Party et RMLL 2015). Nous souhaiterions passer la seconde vitesse avec des ateliers plus réguliers. Ce jeudi soir 15 décembre sera le premier atelier de cette série régulière, pour lequel nous allons nous greffer à la Soirée de Contribution au Libre parisienne, organisée par Parinux, au moins dans un premier temps.

Nous expliciterons un peu plus le projet dans la seconde partie de la dépêche. Vous y trouverez aussi l'adresse exacte.

L'activité durant l'atelier

Les participants pourront voir tout (ou seulement la partie qui les intéresse) dans la publication d'une œuvre imprimée. Cela inclut :

  • contenu : autocollants et écriture des textes ;
  • design des pages ;
  • mise en page ;
  • production éventuelle de graphismes inédits (pour ceux qui le souhaitent, par exemple pour les pages de couverture, ou pour personnaliser l'intérieur, etc.) ;
  • retouche d'image (par exemple un effet sur l'image des autocollants pour indiquer où les placer sans pour autant reproduire l'image réelle) ;
  • gestion de la problématique des licences ;
  • relation avec l'imprimeur ;
  • etc…

Si besoin, on pourra vous enseigner Scribus, Inkscape, GIMP, LibreOffice, git… ou bien peut-être serez-vous ceux qui nous feront découvrir des fonctionnalités et usages ? Car cette soirée de création est aussi le moyen de partager et de contribuer autrement au Libre !

Il ne s'agira d'ailleurs pas seulement de contribuer numériquement. On pourra aussi designer et travailler sur papier (on a des grandes feuilles A3 pour vos œuvres d'art!), parce que même libristes, les artistes et designers ne bossent pas seulement avec l'ordinateur.

Le vrai projet : éducation populaire

Du point de vue de LILA, le but n'est absolument de faire l'album nous-même. Premièrement on sait déjà faire. Et surtout le projet lui-même est marrant, mais n'est pas primordial en soi. ;-)

Le but est vraiment de faire avec tout le monde, que chacun apporte sa pierre et sa sensibilité. Et ainsi faire découvrir les logiciels libres de création, les licences libres hors-logiciel, et le processus de création d'œuvre imprimée. :-)

Vous pourrez alors réutiliser cette connaissance plus tard, que ce soit pour vos cartes de visites, le poster du concert de votre groupe de musique, des fascicules pour votre PME, votre livre d'art, ou que sais-je encore !

En dehors même de la technique pure et des logiciels, beaucoup de mystères ont leur place dans l'esprit des gens sur le sujet de l'impression. On entend vraiment tout et son contraire, et beaucoup de "légendes" trainent sur le web. Faut-il travailler en CMJN ? Et qu'en est-il des couleurs solides ? Vous avez des questions au sujet de la calibration des écrans et des imprimantes ? Vous voulez comprendre à quoi servent les marges et le fond perdu ? Vous êtes fana des polices de caractères et voulez en discuter avec nous ? Et qu'en est-il de la résolution (DPI ? PPI ? Est-ce différent ? Est-ce grave si mon graphique fait moins de 300 PPI ? Ces notions ont-elles une importance pour une image destinée à l'écran seulement ?) ? À quoi sert la haute précision de couleur (16/32 bits par canal) ? Ce sont autant de questions, et plus, que vous pourrez nous poser, et peut-être aurons-nous des réponses, ou au moins des débuts de réponses pour chercher ensemble !
Pour vous rassurer, énormément de professionnels du graphisme comprennent bien peu de ces sujets (même si certains vous assènent parfois des aberrations techniques sans frémir), et il faut bien le dire, ce sont des sujets très complexes. Il n'y a donc pas de question bête.

Enfin peut-être souhaitez vous simplement venir pour réaliser un projet marrant et sympa, sous une licence libre, et sans vous prendre trop la tête. Et si c'est votre cas, vous êtes absolument bienvenus également ! :-)

Où et quand?

Nous nous incrustons à la "Soirée de Contribution au Libre" organisée par Parinux, ce jeudi 15 décembre 2016, de 19h30 à 22h30.
Si cela se passe bien, et surtout que vous êtes nombreux à être intéressés, nous souhaitons ensuite reproduire régulièrement l'évènement jusqu'à la création physique de l'album chez un imprimeur. D'ailleurs pour se motiver, il serait sympa si l'album pouvait être envoyé à l'impression avant les prochains RMLL, non ? :-)

Venez nombreux !

Adresse:

FPH Fondation Charles-Léopold Mayer pour le Progrès de l'Homme
38 rue Saint-Sabin 75011 Paris (digicode: contactez nous)
Tél : 01 43 14 75 75
M°5 Bréguet Sabin, ou M°8 Chemin Vert, ou Bastille
Bus 20 ou 65, arrêt Chemin Vert
Vélib 11033 au 23 Bd Richard Lenoir
Site FPH

Nous apprécierions d'avoir une idée du nombre de personnes qui prévoient de venir d'ailleurs. Donc n'hésitez pas à nous envoyer au préalable un courriel ou à laisser un message sous cette annonce.

Télécharger ce contenu au format Epub

Lire les commentaires

Silence : XMPP, chiffrement et méta‐données

Vendredi 9 Décembre

Silence est une application libre (GPLv3) pour Android de SMS et MMS, permettant de chiffrer les communications avec les autres utilisateurs de Silence. Silence vous permet donc d'envoyer du texte et des images en tout sécurité, mais le texte et les images passeront en clair par les réseaux vers les utilisateurs classiques. Cette application est disponible sous forme de code source sur GitHub et binaire sur F-Droid et Play Store.

Silence est le nouveau nom de SMSSecure, fork de Signal (anciennement TextSecure) de Open Whisper Systems. On avait déjà parlé de l'abandon du chiffrement des SMS/MMS de Signal, à cause des limites des API de iOS, d'une expérience utilisateur compliquée en ce qui concerne l'échange de clés, et aussi des méta-données des SMS/MMS qui transitent forcément en clair. Silence/SMSSecure était né de ce constat, ainsi que de la volonté de se débarrasser des dépendances aux services Google.

Aujourd'hui, Silence est en cours d'ajout d'un transport XMPP.

Chiffrement des SMS/MMS et méta-données

Le rôle premier de Silence est de chiffrer les SMS et MMS entre deux utilisateurs de l'application. C'est une des raisons historiques du fork de l'application, quand TextSecure a abandonné cette fonctionnalité.

Après un échange de clés, l'utilisateur pourra, de manière simple et transparente, chiffrer ses communications par SMS avec les autres utilisateurs de Silence. Et pour les autres contacts qui n'utilisent pas l'application, Silence se comportera comme n'importe quelle application de SMS, c'est-à-dire que les messages ne seront pas chiffrés.

Le gros problème des SMS est qu'ils laissent beaucoup de méta-données. Les méta-données, globalement qui parle à qui, quand, et à quelle fréquence, permettent de calculer des graphes sociaux et sont massivement utilisés par les agences de renseignement. Silence ne peut pas masquer les méta-données, puisque celles-ci sont intrinsèquement nécessaires pour que le SMS soit correctement envoyé. Les opérateurs téléphoniques (ainsi que les agences ayant accès aux bases de données des opérateurs) peuvent donc savoir vers quels numéros un utilisateur discute, même si le contenu des messages reste inaccessible grâce au chiffrement de bout-en-bout du message par Silence.

Le projet parent de Silence, TextSecure (aujourd'hui Signal), a choisi de se concentrer sur les messages qui passent par Internet. Les opérateurs téléphoniques n'ont alors pas accès aux méta-données. En revanche, TextSecure/Signal utilise les services de Google. Même si un effort est fait pour réduire les informations exploitables par la firme, des méta-données restent accessibles à Google. En outre, TextSecure/Signal n'a pas de système fédéré de serveurs et l'intégralité des contacts des utilisateurs est sauvegardée en ligne.

Les méta-données des SMS sont un vrai problème et il est nécessaire de proposer une solution. Cependant, il ne s'agit pas de supprimer la prise en charge des SMS/MMS, mais seulement de proposer une meilleure solution. XMPP étant décentralisé et ouvert, Silence se dirige vers ce choix et va bientôt permettre de transmettre les messages via XMPP.

XMPP

XMPP est décentralisé. Mais il faut quand même un certain nombre de paramétrages côté serveur, tant en terme de sécurité que de fonctionnalités (notamment la XEP-0198: Stream Management pour ne pas perdre de message quand la connectivité est mauvaise).

Pour acheminer les messages XMPP, il vaut mieux se reposer sur des serveurs gérés par des organisations en qui on peut avoir relativement confiance. Certes, les messages continueront d'être chiffrés de bout-en-bout et ne pas avoir confiance en son serveur XMPP n'est pas rédhibitoire. Pour autant, c'est un plus appréciable.

Ainsi, Silence va intégrer une liste de serveurs XMPP « de confiance », c'est-à-dire répondant aux critères de sécurité, de configuration et opérés par des organisations à but non lucratif. Bien entendu, il vaut mieux un grand nombre de serveurs afin de réduire l’intérêt et les dégâts potentiels d’une attaque.

Prenons Bob qui envoie un message à Alice. Bob est connecté à son serveur XMPP : le serveur de Bob voit un message en provenance d'une adresse XMPP inconnue (il n'y a pas de lien entre l'adresse XMPP de Bob et le numéro de téléphone de Bob ; le serveur ne connaît même pas l'identité réelle de Bob) à destination d'une autre adresse XMPP inconnue. Le serveur de Bob connaît l'IP qui s'est connectée mais ne peut pas l'associer à une personne (encore moins si Bob passe par Tor). Il ne connaît pas non plus l'adresse IP d'Alice. Le serveur XMPP d'Alice voit arriver un message XMPP, mais ne connaît pas l'adresse IP de Bob. En outre, les FAI de Bob et Alice ne connaissent pas les adresses XMPP, puisque les connexions sont encapsulées dans TLS. Et aucun contact n'est envoyé en ligne, tout reposant sur le carnet d'adresses local de chaque utilisateur.

Appel aux hébergeurs

Silence doit donc reposer sur un « réseau » composé d'opérateurs de serveurs XMPP. De tels opérateurs peuvent être des associations, des fédérations d'hébergeurs (au hasard, des membres du collectif Chatons), des hébergeurs indépendants, etc. Ce « réseau » doit être mis en place avant la publication de la première version de Silence ajoutant le transport XMPP, puisque l'utilisateur va créer un compte sur un de ces serveurs en fonction de la liste incluse dans l'application. Il sera bien sûr également possible pour l'utilisateur de paramétrer un autre serveur s'il le souhaite.

Si vous êtes intéressés par le projet, envoyez un courrier électronique à « support chez silence point im » ! ;)

Télécharger ce contenu au format Epub

Lire les commentaires

Appel à candidatures responsables de thèmes RMLL 2017

Vendredi 9 Décembre

Les RMLL 2017 (Rencontres Mondiales du Logiciel Libre) se dérouleront à Saint‐Étienne du 1er au 7 juillet 2017. La liste des thèmes présents pour cette édition a été finalisée (lien plus bas) et un bon nombre de responsables de thèmes sont déjà présents pour s’en occuper. Mais, afin d’amener un surplus d’énergie, de diversité et d’idées neuves, nous faisons un appel ouvert à candidature pour de nouveaux responsables de thèmes.

Intérêts de cette mission :

  • en tant que contact privilégié, vous aurez des échanges riches avec les conférenciers ;
  • au sein de l’organisation de cette conférence généraliste et ouverte, vous rencontrerez des personnes aux parcours et aux motivations variées mais toujours enthousiastes, ce qui permet un véritable enrichissement.

Donc, si vous souhaitez participer à l’animation d’un des thèmes en question, inscrivez‐vous sur la liste de diffusion Thèmes@ et postez votre candidature (qui suis‐je, pourquoi je viens, pour quel thème). Accueil bienveillant assuré. :-)

Vous pouvez même proposer un nouveau thème, mais uniquement si vous avez une idée très claire et construite de votre proposition et que vous n’arrivez pas seul.

La description détaillée du travail d’un responsable de thème est disponible en lien ci‐dessous.

Télécharger ce contenu au format Epub

Lire les commentaires

Les journaux LinuxFr.org les mieux notés du mois de novembre 2016

Jeudi 8 Décembre

LinuxFr.org propose des dépêches et articles, soumis par tout un chacun, puis revus et corrigés par l'équipe de modération avant publication. C'est la partie la plus visible de LinuxFr.org, ce sont les dépêches qui sont le plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanée, par courriel, ou encore via médias sociaux.

Ce que l’on sait moins, c’est que LinuxFr.org vous propose également à tous de tenir vos propres articles directement publiables, sans validation a priori des modérateurs. Ceux-ci s'appellent des journaux. Voici un florilège d'une dizaine de ces journaux parmi les mieux notés par les utilisateurs… qui notent. Lumière sur ceux du mois de novembre passé.

Télécharger ce contenu au format Epub

Lire les commentaires

C++17 exprime la virgule flottante en hexadécimal et offre des cadeaux aux lecteurs LinuxFr.org

Mercredi 7 Décembre

Chaque jour (ouvré) de décembre a droit à sa surprise. Après le if constexpr, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0245 concernant le littéral pour exprimer la virgule flottante en hexadécimal.

Sommaire Spécification technique

La réunion de Jacksonville en février 2016 a amendé le TS P0245 qui permet d’exprimer les virgules flottantes (IEEE 754) en hexadécimal. Le C++ permet enfin d’avoir une représentation exacte des virgules flottantes. Cette fonctionnalité était déjà présente depuis longtemps dans d’autres langages : C99, Java 5 (2004)…

Représentation exacte

La représentation hexadécimale a l’avantage d’être celle du registre (mémoire binaire). Attention à la notation décimale des virgules flottantes. Par exemple, 0.1f ne vaut pas exactement 0.1 mais 0.10000000149…. Un exemple :

#include <stdint.h> // int64_t #include <iostream> // std::cout int main() { float un_dixieme = 0.1f; float f_1e11 = un_dixieme * 1e12f; // Erreur d'arrondi int64_t i_1e11 = 0.1 * 1e12; // Pas d'erreur d'arrondi double diff = f_1e11; diff -= i_1e11; // soustraction f_1e12 - i_1e11 std::cout.precision(99); std::cout << "un_dixieme = "<< un_dixieme << "\n" "f_1e12 = "<< f_1e11 << "\n" "i_1e12 = "<< i_1e11 << "\n" "diff = "<< diff << '\n'; }

Qui donne le résultat :

un_dixieme = 0.100000001490116119384765625 f_1e12 = 99999997952 i_1e12 = 100000000000 diff = -2048

Les hexadécimaux permettent d’écrire la représentation exacte des virgules flottantes en s’affranchissant de ces erreurs d’arrondis.

La pratique

Passons à la pratique des fractions hexadécimales :

float v = 0xa.bp3f; assert(v == 85.5f);
  • 0xA.B = 0xA*16^0 + 0xB*16^-1
  • 0xA = 10
  • 0x.B = 11/16 = 0,6875
  • 0xA.B = 10,6875
  • p3 = 2^3 = 8
  • v = 10,6875*8 = 85,5
  • 'f' final = type 'float'
double w = 0xC0DE2017.1CAFEp-1; assert(w == 1617891339.55602931976318359375);
  • 0xC0DE2017 = 3235782679
  • 0x1CAFE = 117502
  • 0xFFFFF = 1048576
  • p-1 = 2^-1 = 1/2
  • w = (3235782679 + 117502/1048576) / 2
Concours

Chère lectrice, cher lecteur LinuxFr. org, as-tu d’autres idées de jeux de mots avec cette notation hexadécimale ? Alors défoule-toi dans les commentaires ;-)

Les plus beaux jeux de mots seront récompensés avec des cadeaux de la part de LinuxFr.org. Alors tu as un peu de temps disponible aujourd’hui ? Fait comme les Nerdettes (les deux filles sur l’illustration), bogue du cerveau et propose ton code source de folie pour tenter de remporter un des lots.

Les modalités :

  • les jeux de mots peuvent utiliser le nom des variables, la forme des caractères et symboles, les opérateurs ;
  • il faut au moins un littéral hexadécimal à virgule flottante ;
  • le code source doit pouvoir être compilable par un compilateur C++17 ;
  • le code source doit être sous licence libre (licence de ton choix) ;
  • les meilleures réponses seront sélectionnées parmi celles qui auront le plus de points « pertinents » et le moins de points « inutiles » ;
  • la liste des gagnants sera diffusée quelques jours plus tard dans une autre dépêche C++ ;
  • les vainqueurs auront un livre à choisir parmi ceux des éditions Eyrolles et ENI ;
  • réception des récompenses par courrier électronique postal.
Notation

Remarquons le p à la fin. Celui-ci représente l’exposant binaire et il est suivi par un entier décimal (et non pas hexadécimal). Cet exposant binaire est obligatoire pour plusieurs raisons :

  • il évite l’ambiguïté du f final dans 0xA.Bf (float ou le chiffre F hexadécimal ?) ;
  • il évite l’ambiguïté du E dans 0xa.bE-12 (exposant -12 ou 0xA.BE – 12 ?) ;
  • il correspond à la norme IEEE 754 (puissance de deux) ;
  • 100% compatible avec la notation C99 (et celle d’autres langages).

Tentons de représenter cette notation hexadécimale en regex :

  • 0[xX][0-9a-fA-F]+[.] ?[pP][+-] ?[0-9]+[fFlL] ?
  • 0[xX][0-9a-fA-F]*[.][0-9a-fA-F]+[pP][+-] ?[0-9]+[fFlL] ?
Termes du standard

Allez, soyons curieux, regardons comment le standard C++ spécifie cette notation avec un extrait du chapitre § 2.13.4 Floating literals du brouillon C++17 :

hexadecimal-floating-literal:
hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffixopt
hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffixopt
hexadecimal-fractional-constant:
hexadecimal-digit-sequenceopt . hexadecimal-digit-sequence
hexadecimal-digit-sequence .
binary-exponent-part:
  p signopt digit-sequence
  P signopt digit-sequence
sign: one of
  + -
digit-sequence:
digit
digit-sequence ’opt digit
floating-suffix: one of
  f l F L

Et l’équivalent chez cppreference.com :

0x | 0X hex-digit-sequence
0x | 0X hex-digit-sequence .
0x | 0X hex-digit-sequence(optional) . hex-digit-sequence

Hexadecimal digit-sequence representing a whole number without a radix separator. The exponent is never optional for hexadecimal floating-point literals: 0x1ffp10, 0X0p-1, 0x1.p0, 0xf.p-1, 0x0.123p-1, 0xa.bp10l

The exponent syntax for hexadecimal floating-point literal has the form
p | P exponent-sign(optional) digit-sequence

exponent-sign, if present, is either + or -

suffix, if present, is one of f, F, l, or L. The suffix determines the type of the floating-point literal:

  • (no suffix) defines double
  • f F defines float
  • l L defines long double
Utilisation de strtof() et std::hexfloat

En attendant C++17, il est possible d’utiliser strtof() et std::hexfloat pour jouer avec les virgules flottantes hexadécimales :

#include <iostream> #include <cstdlib> #include <cstdio> int main (int argc, char *argv[]) { if (argc != 2) { std::cout <<"Usage: "<< argv[0] <<" 0xA.Bp-1 => Decode hexfloat" "\n"; return 1; } std::cout <<"Decode floating point hexadecimal = "<< argv[1]; long double l = std::strtold(argv[1],NULL); if(errno==ERANGE)std::cout<<"\nstrtold() erreur"; double d = std::strtod (argv[1],NULL); if(errno==ERANGE)std::cout<<"\nstrtod() erreur"; float f = std::strtof (argv[1],NULL); if(errno==ERANGE)std::cout<<"\nstrtod() erreur"; std::cout <<"\n" "long double = "<< std::defaultfloat << l <<'\t'<< std::hexfloat << l <<"\n" "double = "<< std::defaultfloat << d <<'\t'<< std::hexfloat << d <<"\n" "float = "<< std::defaultfloat << f <<'\t'<< std::hexfloat << f <<'\n'; }

Nous pouvons regretter qu’il faille utiliser des fonctions strtof() issues du C, qui imposent de vérifier si errno == ERANGE. En théorie, std::hexfloat devrait fonctionner pour l’entrée (istream). Mais dans la pratique std::hexfloat semble ne fonctionner que pour la sortie (ostream). L’exemple suivant ne fonctionne toujours pas avec GCC-6.2, Clang-3.9 et MSVC++15 :

double d; std::istringstream iss("0xA.Bp-1"); iss >> std::hexfloat >> d; std::cout << d;

Notons que c’est l’extraction qui ne s’effectue pas correctement. Le std::istringstream reste quand à lui dans un état correct, ainsi les erreurs sont vérifiables.

std::cout << std::boolalpha << iss.fail() << '\n' // false << iss.bad() << '\n' // false << iss.eof() << '\n' // false << iss.str() << '\n';// "0xA.Bp-1" Réutilisation

Le texte de cette dépêche est protégé par le droit d’auteur la gauche d’auteur et réutilisable sous licence CC BY-SA 4.0. Les images utilisées sont aussi sous licence libre (cliquer sur l’image pour plus de détails).

Donc n’hésitez pas à réutiliser ce contenu libre pour créer, par exemple, des supports de formation, des présentations (Meetups), des publications sur d’autres blogs, des articles pour des magazines, et aussi un article C++17 sur Wikipédia dès que Wikipédia passera de la licence CC-BY-SA-3.0 à la CC-BY-SA-4.0 (le contenu de cette dépêche utilise la version la CC-BY-SA-4.0).

Les auteurs

Par respect de la licence, merci de créditer les auteurs :

Continuer à améliorer ce document

Malgré tout le soin apporté, il reste certainement des oublis, des ambiguïtés, des fôtes… Bien que cette dépêche restera figée sur le site LinuxFr.org, il est possible de continuer à l’enrichir sur le dépôt Git du Groupe des Utilisateurs C++ Francophone (C++FRUG). C’est donc sur ce dépôt que se trouve les versions les plus à jour.   (ღ˘⌣˘ღ)

Alors que cet article restera figé sur le site LinuxFr.org, il continuera d’évoluer sur le dépôt Git. Merci de nous aider à maintenir ce document à jour avec vos questions/suggestions/corrections. L’idée est de partager ce contenu libre et de créer/enrichir des articles Wikipédia quand la licence sera CC BY-SA 4.0.   ٩(•‿•)۶

Appel à contribution

Nous nous efforçons de vous fournir une dépêche de qualité chaque jour ouvré. Et en plus, avec une illustration sympathique. Mais cela demande beaucoup de travail, et tenir les délais n’est pas toujours simple.

Merci de nous donner un coup de main, que ce soit sur la correction orthographique, le dessin, la lecture des spécifications techniques, la rédaction d’une nouvelle dépêche à intégrer au calendrier de l’Avent du C++. Tu peux aussi apporter ta contribution à la dépêche « Faut-il continuer à apprendre le C++ ? ».

Rejoins-nous sur la page du groupe de travail C++ sur LinuxFr.org (un compte est nécessaire pour y accéder).

À suivre…

Télécharger ce contenu au format Epub

Lire les commentaires

Dons aux associations, épisode 5

Mercredi 7 Décembre

Cette dépêche est la 5e de sa série, après celles de 2011, 2013, 2014 et 2015. Une nouvelle fois j'ai entendu des échos comme « merci d'avoir généré des dons l'année passée » ou « n'oublie pas de refaire ta dépêche sur les dons aux assos », donc nous y voilà.

Pour la 5e fois, je m'adresse à toi libriste, qui a procrastiné jusqu'aux dernières heures pour faire des dons déductibles des impôts (ou non). Tu t'étais promis toute l'année (et celle d'avant) de soutenir telle ou telle action sur tel ou tel sujet qui te semblait extrêmement important. Citons par exemple quelques associations de promotion et défense du libre, des droits dans l'espace numérique ou de la liberté d'expression, dont les dons sont déductibles en France : Amnesty France, Debian France, Framasoft, Fédération internationale des ligues des droits de l'homme (FIDH), Ligue des Droits de l'Homme (LDH), OpenStreetMap France, Reporters Sans Frontières (RSF), Wikimedia France, etc.

Et comme tu fais vivre les principes du libre, que tu contribues à des projets libres et défends des idées, tu soutiens aussi des associations ne bénéficiant pas de la déductibilité des dons en France (par exemple des associations jugées trop dérangeantes ou trop critiques par le gouvernement… ou des associations européennes ou non). Citons par exemple AFUL, April, European Digital Rights (EDRi), FACIL, FFII, FSF (avec une longue liste de méthodes pour donner), FSF Europe (à confirmer, voir la décision C-318/07 évoquée plus bas), Internet Archive (déductible aux États-Unis), GNOME, KDE e.V, Léa-Linux, LILA, LQDN, OKFN, Toile Libre, Ubuntu-Fr, etc. (notez qu'elles peuvent parfois avoir la déductibilité des dons dans d'autres pays).

Cette dépêche récurrente vit aussi grâce à vos remarques, propositions d'ajouts, de compléments et vos retours sur les systèmes fiscaux et les dons dans vos pays respectifs. N'hésitez pas à la commenter pour l'enrichir.

    Sommaire

    Précision : la dépêche parle bien de « don » (je soutiens sans rien obtenir à titre personnel), pas de « financement participatif avec contrepartie » (je co-finance en échange de goodies/avantages), les deux étant destinés à des choses différentes. Pour ceux qui ont lu jusqu'ici, un dessin xkcd sur le sujet en récompense (et d'autres images plus loin pour récompenser les libristes patients qui liront jusqu'au bout).

    Pourquoi les associations ayant des permanents ont des besoins récurrents d'argent ? (tiré de l'épisode 3)

    Quand une association veut passer de zéro à un permanent ou à un permanent de plus, elle n'a généralement pas en réserve de quoi le payer sur une année complète. Elle prend donc un risque avec une visibilité sur x mois (comme n'importe quel chef d'entreprise), en faisant de son mieux pour que l'argent rentre (le nouveau permanent va « produire », une campagne de communication ou d'appels à don ou autres sera lancée, une subvention sera recherchée, une convention sera signée avec tel ou tel, des goodies seront vendus, etc.).

    Une association qui ne veut pas s'embêter à rechercher des fonds ou qui ne vise pas à passer le cap du premier permanent n'a pas du tout ce souci et peut être très indolente si elle veut.

    Dès qu'il y a un besoin récurrent de payer des salariés, de payer à date les charges de l'employeur — qu'il faut prévoir à 3 mois s'il faut gérer un préavis de licenciement économique ou pas, etc. cela devient plus compliqué (comme pour n'importe quel chef d'entreprise). Une association militante qui ne prendrait pas de risque financier du tout, ce n'est pas envisageable à mon avis. Toute la question étant de savoir combien elle réussit à faire rentrer d'argent au moment où c'est nécessaire, si elle peut continuer à embaucher pour grossir/faire plus d'actions/faire mieux, si elle doit licencier ou si elle doit stagner/continuer ainsi dans l'immédiat.

    Donc oui, on a toujours l'impression que les associations ayant des permanents recherchent de l'argent (et décembre est particulier car c'est la fin de l'exercice fiscal et traditionnellement la période des dons défiscalisés, notamment côté humanitaire associé aux bons sentiments des fêtes de fin d'année). Et oui en décembre, la Croix Rouge, April, RSF, LQDN, la FSF, Amnesty, Framasoft et bien d'autres font des appels à don.

    Petit rappel pour ceux concernés par les impôts en France (tiré de l'épisode 4 et mis à jour)
    • l'article 200 du code général des impôts prévoit pour un particulier une déduction fiscale de 66 % (réduction d'impôt sur le revenu dans la limite de 20 % du revenu imposable, reportable sur cinq ans en cas de dépassement de ce plafond) des dons vers les associations d'intérêt général ou reconnues d'utilité publique. Ce pourcentage monte même à 75 % pour les organismes d'aide aux personnes en difficulté (dans la limite de 521 €, au-delà, on retombe sur les 66 %) ;
    • l'article 238bis du CGI prévoit une déduction fiscale de 60 % des dons pour une entreprise (réduction d'impôt sur le revenu ou d'impôt sur les sociétés dans la limite de 5 ‰ du chiffre d'affaires hors taxes, reportable sur cinq ans en cas de dépassement de ce plafond) vers les associations d'intérêt général ou reconnues d'utilité publique ;
    • Fiche pratique ServicePublic.fr : « À savoir : les sommes versées à des organismes agréés situés dans un État membre de l'Union européenne, en Islande ou en Norvège ouvrent également droit à la réduction d'impôt. À défaut d'agrément, vous devez justifier que l'organisme poursuit des objectifs et présente des caractéristiques similaires aux organismes situés en France. »

    Exemple pour un particulier : je suis imposable et donne 99 € à l'association XYZ bénéficiant de la déductibilité des dons à hauteur de 66 %. Mon don me coûte en fait (au final) 33 €, j'ai temporairement avancé 66 € qui seront ensuite déduits de mon imposition fiscale (dit autrement, j'ai choisi l'attribution de 66 € du budget de l'État).

    Autres infos :

    Petit rappel pour ceux concernés par les impôts hors France (tiré de l'épisode 4 et mis à jour)

    Forcément je connais mieux le sujet pour la France, mais voici néanmoins quelques infos glanées pour d'autres pays (et je ne doute pas que les visiteurs compléteront dans les commentaires) :

    Exemple de dons financiers et parfois de temps (tiré de l'épisode 4 mais mis à jour)

    « Sacrifier une partie de son revenu pour faire un don à une association, c'est une affaire sérieuse. » (patrick_g)

    Liste non exhaustive de dons financiers ou de temps à des associations du libre ou pour libérer quelque-chose :

    Exemple de dons de matériel / ressources (tiré de l'épisode 4 mais mis à jour)

    Liste non exhaustive :

    Diffusion des idées et questionnements autour du don (tiré de l'épisode 4 et mis à jour)

    Liste non exhaustive :

    Don à une entreprise ? (tiré de l'épisode 4 et mis à jour)

    Une question un peu annexe ici vu le titre « dons aux associations » mais qui a déjà été posée ici ou sur LinuxFr.org : peut-on faire un don (sans contrepartie) à une entreprise ? Pour prendre deux sites que j'aime bien : il semblerait que Next INpact (SARL de presse) ait opté pour un statut premium (avec contrepartie donc) parce que ce n'était pas possible, mais bénéficie en plus de dons déductibles via la plateforme de dons pour la presse en ligne « J'aime l'info ». Tandis que Reflets.info (SAS) accepte les dons.

    Lors d'une recherche rapide précédente, j'avais vu évoquer l'utilisation du compte 7713 « libéralités perçues » du plan comptable, d'un justificatif clair pour la comptabilité (un expert comptable et/ou un notaire sont évoqués), d'une exonération de TVA si aucune vente de bien/service n'est associée ; bref la question des taxes/impôts à payer pour le donateur (60% entre non-parents ?) et l'entreprise n'est pas forcément claire. Cela reste assez flou et hypothétique, et ça mériterait une question aux impôts.

    .

    Logiciels libres pour gérer les dons (tiré de l'épisode 4 et mis à jour)

    La question avait été posée lors de l'épisode 3 de cette série de dépêches : quel(s) logiciel(s) libre(s) utiliser pour faire les dons ? Ou pour les gérer ? En général pour les faire, un navigateur fait l'affaire : paiement en ligne, réception de l'éventuel reçu fiscal, réception d'un éventuel message de remerciement.

    Pour les reçus fiscaux, il convient de les conserver avec les documents des impôts pendant le temps nécessaire (suivant la législation locale).

    Pour les dons via des intermédiaires, par exemple Liberapay, HelloAsso ou Tipeee, il faut conserver soigneusement les identifiants du compte créé pour l'année suivante.

    Si vous avez opté pour l'adhésion à une structure plutôt que le don, vous allez recevoir des identifiants aussi et probablement une lettre interne ou des choses du genre, ainsi qu'une convocation à une assemblée générale annuelle certainement.

    Et si vous avez opté pour versement régulier (virement ou prélèvement), ça ne change pas fondamentalement les choses ; éventuellement l'organisme qui prélève vous prévient un peu avant chaque prélèvement par courriel.

    Il existe aussi dans le libre des logiciels ou des événéments spécialement prévus pour les dons :

    À ma connaissance, le site HelloAsso évoqué dans un commentaire récent n'utilise pas une plateforme libre, contrairement à Liberapay.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Lancement de la branche « Software Toolchain » de l’Open Compute Project

    Mercredi 7 Décembre

    Dans le cadre du projet Open Compute qui vise à définir des conceptions ouvertes de matériel, une avancée importante a été réalisée avec la perspective d'utiliser une chaîne d'outils logiciels de conception ouverte, dont les implémentations de référence seront faites en utilisant des logiciels libres, mettant fin au problème pécuniaire de l'utilisation des fichiers aux formats propriétaires (et ouvrant des perspectives d'audit communautaire et d'utilisation de méthodes formelles pour prouver la validité de la conception).

    Sont concernés notamment : la conception électronique et mécanique, l'affichage sur le web de contenus 3D, de données de type CAO électronique, de résultats de simulations physiques (analyse thermique, analyse mécanique…), etc.

    Toute aide sera bienvenue. Nous réaliserons une démonstration lors de l'évènement Open Compute Summit — les 8 et 9 mars 2017 à Santa Clara, Californie— où nous emmènerons les meilleurs contributeurs.

    Comme vous le savez, je suis impliqué dans le projet Open Compute (dit OCP, pour « Open Compute Project » — site www.opencompute.org). Ce projet est présenté — en reprenant les termes de la page d'accueil — comme consistant à ré-imaginer le matériel informatique, le rendant plus efficace, flexible et extensible. Rassemblant notamment des ténors du marché, le projet est annoncé comme visant à ouvrir la boîte noire des infrastructures informatiques propriétaires pour obtenir plus de choix, de la personnalisation et une réduction des coûts.

    Je suis aussi contributeur au projet FreeCAD (www.freecadweb.org) — FreeCAD, ainsi que KiCad, sont majoritairement développés en Europe — et nous avons œuvré pour éduquer la communauté Open Compute aux problèmes liés à l'utilisation des fichiers aux formats propriétaires pour les membres de la communauté qui n'ont pas les moyens de s'offrir des licences logicielles propriétaires qui valent une fortune (et je mesure mon propos).

    Dans le cadre du projet Open Compute, notre implication est passée à un niveau supérieur la semaine dernière suite a cette annonce (en anglais) du lancement du sous-groupe « Software Toolchain » (avec notamment l'ouverture de la liste de discussion opencompute-toolchain).

    Nous avons réussi à franchir une étape et ça fait plaisir : l'objectif du sous-groupe Software Toolchain est de construire une chaîne d'outils logiciels de conception ouverte qui permettra aux équipes de développement de travailler de manière collaborative sur un même schéma de conception et de développer les technologies associées. Les implémentations de référence seront faites en utilisant des logiciels libres.

    Pour détailler un peu plus, voici un extrait significatif de l'annonce précitée, traduit en français (et enrichi de quelques liens pédagogiques) :

    En créant une chaîne d'outils logiciels de conception ouverte pour des solutions de conception électrique, électronique, électromagnétique [NdT : electrical engineering renvoie généralement à ces trois domaines de la physique] et mécanique, le sous-groupe Software Toolchain vise à accélérer la collaboration à l'intérieur du projet Open Compute. Pour aider les ingénieurs à améliorer la qualité de conception et pour aider la communauté à fournir des remontées d'information efficaces, le sous-groupe se concentrera initialement sur la définition d'API (cf. interface de programmation) standards pour simplifier la publication des fichiers de conception sur le web et sur les moyens d'annoter les fichiers de conception pour fournir des remontées d'information directement via les outils de conception.

    La première implémentation sera basée sur des logiciels libres existants tels que FreeCAD et KiCaD. Cependant, l'ouverture de l'API permettra à des vendeurs de logiciel indépendants d'implémenter des fonctionnalités au sein de leurs propres applications.

    Ce sous-groupe peut inclure des partenaires intéressés à différents domaines incluant :

    • outils d'affichage sur le web de contenus 3D ;
    • outils d'affichage sur le web de données du type CAO électronique (en anglais EDA pour « Electronic Design Automation » — cf. conception assistée par ordinateur pour l'électronique) ;
    • système de fichiers orienté objet en réseau ;
    • moteurs 3D avancés ;
    • outils d'affichage de résultats de simulation physique tels que l'analyse thermique, l'analyse mécanique, et bien plus à venir.

    Pour ceux qui veulent nous aider à faire avancer le sujet :

    • si vous avez des compétences à partager et ressentez le même enthousiasme que nous, n’hésitez pas à rejoindre la liste de diffusion (en anglais) ;
    • si déjà vous lisez cette dépêche et prenez conscience des enjeux, faites du bruit dans vos LUG et sur les réseaux sociaux autour de cette nouvelle :)

    Nous avons du boulot et nous emmènerons les meilleurs contributeurs à l'Open Compute Summit (« OCP US Summit 2017 », les 8 et 9 mars, à Santa Clara, en Californie, États-Unis d'Amérique) pour présenter la première démonstration de la chaîne d'outils logiciels libres. Naturellement, en trois mois, on ne risque pas de révolutionner la planète, mais nous ne pouvons pas louper l’événement !

    Les plus gros membres du projet Open Compute sont Facebook, Microsoft, Google, Intel, Rackspace, et les convaincre de considérer favorablement ces solutions a été un exercice relativement intéressant. J’espère qu'on pourra leur prouver que l'on peut construire quelque chose d'aussi innovant que RuggedPOD (cf. le mot-clé « ruggedpod » sur LinuxFr.org)  !

    Addendum :

    Certains observateurs font remarquer que de manière générale, dans le cadre du matériel libre, la preuve formelle de code (cf. méthode formelle (informatique)) peut être considérée comme un atout particulièrement important du fait que des failles de sécurité dans la conception sont identifiables par des groupes malveillants de manière plus aisée qu'avec du matériel fermé, ces groupes pouvant garder pour eux leurs découvertes, de manière à les exploiter dans le secret.

    Ils notent que, via le projet Software Toolchain, s'ouvrent des perspectives d'audit communautaire renforcé du code source définissant le matériel libre (avec des outils libres) ainsi que des perspectives de production de preuve formelle appliquée aux processus logiciels — ce qui n'a de sens, en termes de confiance, que si le code source des logiciels est ouvert —, notamment :

    • la preuve formelle de validité des données binaires de fabrication (qui se retrouveront en entrée des machines, notamment pour la gravure des circuits intégrés, la gravure des circuits imprimés, leur percement, le positionnement des composants sur les cartes, etc.) relativement au code source définissant le matériel libre ;
    • la preuve formelle de validité des simulations relativement au code source définissant le matériel et aux conditions de simulation ;
    • la preuve formelle de validité des processus comme le routage, etc. ;
    • la preuve formelle de validité du code source définissant le matériel libre par rapport aux spécifications ;
    • voire d'autres preuves formelles comme la robustesse du code définissant le matériel (que ce soit le code binaire de fabrication, le code source, ou même les spécifications) relativement à des types d'attaques répertoriées.

    De plus, avec la libération des fichiers de conception matérielle viendra la capacité accrue de répliquer l'expérience en produisant des versions alternatives et dérivées, or la sécurité est influencée positivement par la diversité. Ceci dit, pour favoriser la diversité en conservant le bénéfice de la preuve formelle de code — sans quoi l'avantage de la diversité pourrait être compensé par la perte de couverture de la preuve de code — il sera avantageux de privilégier des approches génériques de preuve de code dans la mesure du possible (ce qui est également d'un intérêt scientifique certain).

    Certains ajoutent qu'il est déjà acquis que la direction prise est la bonne, même si, d'une part, des fonctions parasites resteront intégrables par des fabricants malveillants — par exemple, des chevaux de Troie matériels furtifs, réalisés au niveau du dopage du substrat en silicium des circuits intégrés (cf. ce commentaire de Misc< référençant des résultats de recherches) —, incitant avantageusement la communauté à superviser la fabrication, et même si, d'autre part, la substitution malveillante du matériel restera possible pendant la phase de distribution, incitant là aussi la communauté à organiser une forme de supervision.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Pages