Vue normale

Reçu hier — 27 février 2025Linux

Prestataire de paiement : quel rôle joue-t-il auprès des e-commerçants ?

26 février 2025 à 17:00

Le prestataire de services de paiement (PSP) est un professionnel spécialisé dans les paiements électroniques. Il est le fournisseur vers qui se tourne l’e-commerçant à la recherche d’une solution pour encaisser les paiements en ligne. En tant qu’intermédiaire, il propose aux clients diverses fonctionnalités de paiement, tout en facilitant leur gestion pour les vendeurs professionnels. […]

The post Prestataire de paiement : quel rôle joue-t-il auprès des e-commerçants ? first appeared on UnderNews.

Façonner l’avenir de la connectivité mondiale : le rôle essentiel des réseaux sous-marins

24 février 2025 à 09:45

Le monde numérique, souvent perçu comme immatériel, repose fondamentalement sur une infrastructure physique faisant le lien entre les mondes numérique et physique. Sous les vagues, un réseau silencieux de câbles sous-marins à fibres optiques pulse la vie numérique. Cette infrastructure invisible est à l’origine du monde interconnecté d’aujourd’hui, alimentant tout, des affaires mondiales au divertissement […]

The post Façonner l’avenir de la connectivité mondiale : le rôle essentiel des réseaux sous-marins first appeared on UnderNews.
Reçu avant avant-hierLinux

Une intelligence artificielle libre est-elle possible ?

26 février 2025 à 20:47

Ces derniers temps, on a beaucoup parlé d’intelligence artificielle sur LinuxFr.org. D’IA propriétaires, et d’IA libres. Mais peut-on vraiment faire une IA libre ? La notion n’est pas sans poser quelques difficultés. Une (pas si) courte discussion du problème.

    Sommaire

    On appellera IA un réseau de neurones artificiels

    Commençons par définir notre objet d’étude : qu’est-ce qu’une IA ? Par « intelligence artificielle », on pourrait entendre tout dispositif capable de faire réaliser par un ordinateur une opération réputée requérir une tâche cognitive. Dans cette acception, un système expert qui prend des décisions médicales en implémentant les recommandations d’une société savante est une IA. Le pilote automatique d’un avion de ligne est une IA.

    Cependant, ce n’est pas la définition la plus couramment employée ces derniers temps. Une IA a battu Lee Sedol au go, mais ça fait des années que des ordinateurs battent les humains aux échecs et personne ne prétend que c’est une IA. Des IA sont employées pour reconnaître des images alors que reconnaître un chien nous semble absolument élémentaire, mais l’algorithme de Youtube qui te suggère des vidéos pouvant te plaire parmi les milliards hébergées fait preuve d’une certaine intelligence et personne ne l’appelle IA. Il semble donc que le terme « IA » s’applique donc à une technique pour effectuer une tâche plus qu’à la tâche en elle-même, ou plutôt à un ensemble de techniques partageant un point commun : le réseau de neurones artificiels.

    Dans la suite de cette dépêche, j’utiliserai donc indifféremment les termes d’IA et de réseau de neurones1.

    Pour comprendre le réseau de neurones, il est nécessaire de disposer de bases statistiques

    Les statistiques (ou la statistique, on peut dire les deux, comme en Alexandrie), c’est la branche des mathématiques qui s’intéresse aux moyens, à partir de données observées et fondamentalement probabilistes, d’en tirer des conclusions généralisables (et idéalement, de prédire l’avenir à partir du passé).

    La data science, c’est la branche de l’informatique qui s’intéresse aux moyens, à partir de données emmagasinées sur lesquelles on ne fait pas d’hypothèse de mode de génération, d’en tirer des conclusions généralisables (et idéalement, de prédire les données futures).

    Ça vous semble similaire ? Ça l’est. Les deux champs vont avoir des divergences de vocabulaire, de langages (les stateux préfèreront R, les data scientists Python), de formation (les stateux sont plutôt des universitaires, les data scientists plutôt des informaticiens au niveau licence, mais ils ont les mêmes masters et doctorats), mais fondamentalement, et surtout mathématiquement, c’est la même chose. Les connaissances en inférence statistique (notamment bayésienne, pour ceux à qui ça parle) se généralisent très bien à la data science.

    Pour faire court, un statisticien est un data scientist qui se la pète, alors qu’un data scientist est un informaticien qui, n’étant pas assez bon pour survivre à la rude concurrence universitaire, a multiplié son salaire par 10 ou 20 en allant vendre ses compétences statistiques à Facebook.

    Les statistiques reposent sur la modélisation

    En statistique, la manière la plus courante de répondre à une question est de construire un modèle. Prenons une question simple : je dispose d’un jeu de données où j’ai enregistré, pour 1000 personnes, leur IMC et leur taux de cholestérol. Je souhaite savoir s’il y a un lien entre les deux. On souhaiterait, dans ce cas simple, rechercher une relation monotone, sans faire d’hypothèse sur le type de relation.

    Un exemple : la régression linéaire

    Une manière de répondre à ma question est d’écrire Cholestérol = A\times IMC + B et de trouver les meilleurs A et B pour que la droite « colle » le mieux possible au nuage de points. On démontre que la meilleure droite est celle qui minimise un certain critère, la somme des carrés des erreurs. Une fois qu’on a la meilleure droite possible, on peut faire plein de choses avec :

    • On peut rétro-prédire le taux de cholestérol des personnes déjà observées et voir de combien la prédiction s’écarte du réel, ce qui fournit une erreur moyenne de prédiction ;
    • On peut faire de même en prédisant juste le taux de cholestérol moyen pour tous les individus et comparer les erreurs moyennes de prédiction, ce qui permet de voir de combien le modèle améliore la prédiction (et donc de quantifier la quantité d’info apportée par la donnée IMC sur la variable cholestérol) ;
    • On peut étudier le signe de A : si A est négatif, prendre du poids fait baisser le cholestérol : si A est positif, prendre du poids augmente le cholestérol : si A est nul, le poids n’apporte pas d’info sur le cholestérol.
    • Par contre, on ne peut rien dire de la causalité. Tout ce qu’on a observé, ce sont des personnes qui, au même moment, avaient un IMC et un taux de cholestérol donnés. Impossible de dire s’ils ont ce cholestérol parce qu’ils ont cet IMC, s’ils ont cet IMC parce qu’ils ont ce cholestérol, ou s’ils ont ce cholestérol et cet IMC parce qu’ils ont une troisième exposition.
    • On peut enfin faire effectuer de la prédiction à notre modèle : en lui passant une personne dont on ne connaît que l’IMC, on peut estimer son taux de cholestérol et assortir cette prédiction d’un niveau de certitude (ça demande un peu plus de maths, mais c’est l’idée).

    On peut vouloir ajouter une troisième variable, mettons le tabagisme. On écrira alors :

    Avec la variable tabac codée à 0 (non fumeur) ou 1 (fumeur). Noter que notre modèle est alors passé en dimension 3 : on ne cherche plus à faire passer la meilleure droite par rapport au nuage de points en 2D, mais à faire passer le meilleur plan par rapport au nuage de points en 3D. Noter aussi qu’on peut facilement inclure des variables qualitatives : il suffit de les coder 0 ou 1. On peut d’ailleurs inclure des variables à n modalités : il suffit de les recoder en n-1 sous-variables en 0-1 (la modalité de référence étant celle pour laquelle toutes les sous-variables sont à 0).

    Les \beta sont appelés des paramètres : c’est en les faisant varier qu’on ajuste le modèle aux données.

    On peut ainsi ajouter un nombre quelconque de variables… Ou peut-être pas. En effet, on va finir par atteindre un seuil où le meilleur hyperplan est tout simplement celui qui passe par tous les points ! Si j’ai 50 individus et 50 paramètres, il est facile de choisir un plan qui passe par tous les individus. C’est ce qu’on appelle le surapprentissage : le modèle a tout simplement appris le jeu de données par cœur ! Le surapprentissage est un écueil des modèles trop complexes et un réseau de neurones est tout à fait capable de surapprendre.

    Le réseau de neurones

    Le neurone naturel

    Les neurones sont les cellules du système nerveux. Elles sont spécialisées dans la transmission d’information.

    Neurone naturel

    Comme tu peux le voir sur cette image issue de Wikimedia (source), un neurone comprend un nombre quelconque de dendrites, un corps cellulaire, et un axone. Point crucial : l’axone est unique. Il peut lui-même transmettre de l’information à différents neurones en aval, mais il transmet la même information. Or l’information, dans un neurone, peut entrer par les dendrites et par le corps cellulaire, mais elle ne peut ressortir que par l’axone (on peut faire abstraction de la gaine de myéline et des nœuds de Ranvier, qui ont un rôle central dans la vitesse de conduction de l’information mais qui ne changent rien aux calculs effectués). Autrement dit, un neurone transmet la même information à tous les neurones d’aval, et si ceux-ci en font un usage différent, c’est uniquement lié à leurs propres calculs en interne.

    Le neurone formel

    On peut modéliser un neurone, par analogie avec le neurone naturel. Notre neurone formel pourra donc prendre un nombre quelconque d’entrées, mais comme un neurone naturel, il ne produira qu’une seule sortie. Notre neurone est donc une fonction de ses entrées :

    En pratique (mais ça n’a rien d’obligatoire), on prend souvent une fonction d’une combinaison linéaire des entrées :

    Avec une contrainte : la fonction f (qu’on appelle fonction d’activation) doit être monotone (idéalement strictement monotone), dérivable presque partout (c’est nécessaire à l’optimisation du réseau, qu’on verra plus tard), définie sur un intervalle suffisamment large pour qu’on soit toujours dedans, et non linéaire (sinon mettre les neurones en réseau n’a aucun intérêt, autant faire directement une unique régression linéaire).

    En pratique, on prend donc quelques fonctions classiques :

    • La fonction binaire : f(x) = 0 si x < 0, 1 sinon
    • La fonction logistique, une amélioration de la fonction binaire : f(x) = \frac{1}{1 + e^{-x}}. Avantage : elle est strictement monotone, dérivable partout, et elle prend quand même ses valeurs entre 0 et 1.
    • La fonction Rectified Linear Unit (ReLU, qu’on peut prononcer « relou ») : f(x) = 0 si x<0, x sinon. Avantage : elle est très facile (donc rapide) à calculer et à dériver. On peut la rendre strictement monotone en la modifiant à la marge : f(x) = \epsilon\times x si x<0, x sinon, avec 0<\epsilon << 1.

    La mise en réseau

    Tout l’intérêt du neurone formel réside dans sa mise en réseau. Un unique neurone ne fait pas mieux qu’une régression linéaire. On construit donc un réseau de neurones. Pour ce faire, on va donc générer plusieurs neurones, chacun prenant en entrée la sortie de plusieurs neurones et produisant une sortie unique, qui sera à son tour utilisée en entrée par d’autres neurones. On ajoute un ensemble de neurones qu’on pourrait qualifier de « sensitifs », au sens où ils prennent en entrée non pas la sortie d’un neurone antérieur, mais directement l’input de l’utilisateur, ou plutôt une partie de l’input : un pixel, un mot… Enfin, une sortie est ajoutée : elle produit le résultat final.

    Étant donné que les neurones sont virtuels et n’ont pas d’emplacement géographique, il est assez logique de les représenter en couches : la couche 0 est constituée des neurones sensitifs, la couche 1 prend en entrée les résultats de la couche 0, et ainsi de suite. Classiquement, tous les neurones de la couche n+1 prennent en entrée les sorties de tous les neurones de la couche n.

    Se pose alors la question : combien de neurones par couche, et combien de couches au total ?
    On peut considérer deux types de topologies : soit il y a plus de neurones par couche que de couches : le réseau est plus large que long, on parlera de réseau large. Soit il y a plus de couches que de neurones par couche, auquel cas le réseau est plus long que large, mais on ne va pas parler de réseau long parce que ça pourrait se comprendre « réseau lent ». On parlera de réseau profond. C’est de là que viennent les Deep et les Large qu’on voit un peu partout dans le marketing des IA. Un Large Language Model, c’est un modèle, au sens statistique, de langage large, autrement dit un réseau de neurones avec plus de neurones par couche que de couches, entraîné à traiter du langage naturel. On constate empiriquement que certaines topologies de réseau sont plus efficaces pour certaines tâches. Par exemple, à nombre de neurones constant, un modèle large fera mieux pour du langage. À l’inverse, un modèle profond fera mieux pour de la reconnaissance d’images.

    Le réseau de neurones est Turing-complet

    Un résultat théorique important est que les réseaux de neurones sont Turing-complets. C’est-à-dire que, pour tout programme que l’on peut coder et qui sorte une réponse algorithmique, il existe un réseau de neurones qui donne le même résultat. La réciproque est vraie aussi : ce qui est faisable avec un réseau de neurones est faisable en C ou dans un autre langage, au pire en recodant le réseau dans ce langage.

    Le réseau de neurones présente un effet boîte noire important

    Prenons maintenant un élément d’information et essayons de suivre son trajet dans le modèle jusqu’à la sortie. Dans une régression linéaire, c’est assez facile : le poids de l’IMC va peser pour \beta_{IMC} dans le résultat final. Dans une forêt aléatoire, on peut toujours isoler les arbres où apparaît une donnée et essayer de regarder combien elle pèse. C’est fastidieux mais ça reste faisable. Dans un réseau de neurones, c’est impossible. Chaque neurone de la couche 1 va passer un résultat agrégé à la couche 2, où chaque donnée de la couche 0 ne compte plus que comme partie d’un tout. De même, chaque neurone de la couche 2 va agréger tous les résultats de la couche 1. Il devient impossible d’individualiser l’effet d’une donnée ou même celui d’un neurone.

    Ainsi, même si je connais l’intégralité du contenu du modèle, il m’est impossible de donner du sens à une partie du modèle, prise isolément. Le modèle se comporte comme un bloc monolithique, et la seule manière d’étudier un nouvel exemple est de lui appliquer tout le modèle et de voir ce qui sort. C’est ce qu’on nomme l’effet boîte noire.

    Attention : l’effet boîte noire n’est pas lié au nombre de paramètres du modèle. Si je fais de la génétique, et que j’étudie 2000 mutations génétiques individuelles (des SNP, pour single nucleotide polymorphism), je peux assez facilement ajuster un modèle de régression logistique (qui est une variante de la régression linéaire où on fait prédire non pas une variable quantitative, mais une probabilité) à 2000 paramètres (un \beta pour chaque SNP). Chaque paramètre sera parfaitement compréhensible et il n’y aura pas d’effet boîte noire.

    Il n’est pas non plus lié à ta méconnaissance des mathématiques, cher lectorat. Des statisticiens chevronnés se cassent les dents sur l’effet boîte noire. Il est intégralement lié à la structure du modèle. Certains types de modèles en ont, d’autres n’en ont pas. Les réseaux de neurones en ont.

    Cet effet a une conséquence perturbante : même si on sait ce que fait un réseau de neurones, il est impossible de savoir comment il le fait ! On pourrait argumenter que ce n’est pas forcément différent de ce que nous faisons : si on montre à un enfant de 3 ans une photo de chien, il saura dire que c’est un chien, mais il ne saura pas dire pourquoi c’est un chien. Cependant, on demande rarement à un programme d’être réflexif, mais on demande toujours à son auteur de savoir comment il tourne. C’est un peu la base de la programmation.

    Le réseau de neurones est un modèle statistique

    Reprenons : on a un paradigme (le réseau de neurones) capable d’effectuer n’importe quelle tâche pour laquelle il existe une solution algorithmique, à condition de le programmer correctement… Mais on ne sait pas le programmer ! Heureusement, il existe un contournement : on ne va pas le programmer, on va l’ajuster, comme un modèle statistique. Ou l’entraîner, si on préfère le terme de « machine learning ».

    Tu t’en souviens, cher lecteur, un réseau de neurones est un ensemble de fonctions dont chacune prend en entrée différentes données avec des coefficients (les fameux \beta_i). On va commencer par initialiser l’apprentissage en donnant des valeurs aléatoires à ces coefficients. Ensuite, on va soumettre à notre réseau de neurones des tas et des tas de données correctes, et qu’on va comparer ce qu’il prédit à ce qu’on attend. La différence s’appelle l’erreur. Et à chaque itération, on va identifier les neurones les plus générateurs d’erreur et les pénaliser (réduire leur poids, ou plutôt réduire leur poids dans les neurones où c’est nécessaire), tout en favorisant les meilleurs neurones. Les détails de la technique (qui s’appelle la rétropropagation de l’erreur) dépassent largement le cadre de cette courte introduction, mais l’essentiel est qu’à la fin, on obtient un réseau capable de donner des réponses proches de ce qui existait dans l’ensemble des données correctes qu’on lui a passé et de généraliser quand la demande est différente d’une donnée de l’ensemble d’apprentissage. Avantage : en pratique, un réseau de neurones est capable de prendre en entrée n’importe quel type de structure de données : image, texte, son… Tant que les neurones d’entrée sont adaptés et qu’il existe un ensemble d’apprentissage suffisamment grand, c’est bon.

    Tous les modèles sont faux, certains sont utiles, et c’est vrai aussi pour le réseau de neurones

    Bien sûr, il y a des limites. La première est la complexité algorithmique. Un réseau de neurones nécessite de réaliser un nombre astronomique d’opérations simples : pour chaque couche, il faut, pour chaque neurone, calculer la somme des produits des coefficients avec toutes les sorties de la couche antérieure, soit c\times n^2 multiplications, où n est le nombre de neurones par couche et c le nombre de couches. Par exemple, pour un petit réseau de 10 couches de 20 neurones, plus une couche d’entrée, on réaliserait à chaque itération 10\times 20^2 = 4000 multiplications en virgule flottante, et encore, c’est ici un tout petit réseau : un réseau comme ChatGPT a des neurones qui se comptent par millions, voire dizaines de millions !

    Une autre limite est la précision des réponses. Le réseau de neurones étant un modèle statistique, il n’est capable que d’interpoler, c’est-à-dire trouver une réponse à partir de cas similaires. Cette interpolation est rarement aussi précise que celle que donnerait une réponse formelle si elle existait : si Newton avait eu accès à des réseaux de neurones, nous aurions une prédiction du mouvement des planètes qui ne baserait sur aucune théorie, qui serait à peu près exacte mais insuffisamment précise pour envoyer des sondes sur Mars. Quant à s’interroger sur la précession du périhélie de Mercure, on oublie.

    De manière générale, on peut s’interroger sur ce qui amène un réseau de neurones à se planter. On peut diviser les erreurs en plusieurs catégories :

    • La question posée n’a aucun rapport avec les données passées en entrée. Par exemple : « Sachant que la dernière personne que j’ai croisée dans la rue avait 42 ans, indique-moi son genre ». Le modèle n’a pas assez d’information pour répondre.
    • La question posée n’a aucun rapport avec l’ensemble d’apprentissage. Par exemple, demander à un modèle entraîné à reconnaître des photos de chien de reconnaître une voiture. En général, ce problème est résolu en contraignant le format des questions ; dans cet exemple, il suffirait de ne pas permettre à l’utilisateur de poser une question, juste de poster une photo et de recevoir une réponse. D’ailleurs, on ne voit pas très bien pourquoi entraîner un tel modèle à traiter du langage.
    • L’ensemble d’apprentissage est trop restreint/biaisé. L’exemple typique est le modèle qui prétendait reconnaître les délinquants à une simple photo et identifiait en fait tous les noirs : ben oui, ils étaient majoritaires dans les délinquants de l’ensemble d’apprentissage. Noter qu’il existe des problèmes où l’ensemble d’apprentissage sera toujours trop restreint pour un certain niveau de précision exigé. Si on demande à un réseau de dire si un point donné est à l’intérieur ou à l’extérieur d’un flocon de Koch, il va falloir lui passer une infinité de données d’apprentissage pour qu’il apprenne les cas limites juste par interpolation (alors qu’avec un modèle formel, ça serait assez facile).
    • Le modèle est parasité par une donnée annexe : c’est une problématique assez spécifique du réseau de neurones. L’exemple le plus classique est celui des images de mains : après tout, le voisin le plus probable d’un doigt, c’est un autre doigt. L’amusant, c’est que ce problème serait résolu assez facilement en demandant au modèle de compter 4 doigts et un pouce. Mais comme on ne peut pas programmer directement un réseau de neurones…
    • Enfin, si les motifs précédents ont été écartés, je dois me demander si mon modèle n’est pas inadapté : soit qu’il n’a pas assez de neurones, soit que la topologie n’est pas bonne. Plus de neurones permettent de traiter des données plus complexes et leur disposition permet d’augmenter leur efficacité.

    En définitive, on peut voir le réseau de neurones comme un outil qui résout approximativement un problème mal posé. S’il existe une solution formelle, et qu’on sait la coder en un temps acceptable, il faut le faire. Sinon, le réseau de neurones fera un taf acceptable.

    Le but du logiciel libre est de rendre le pouvoir à l’utilisateur

    On a beaucoup glosé, et on continuera de le faire longtemps, sur la philosophie du Libre. Free Software Foundation d’un côté, Open Source Initiative de l’autre, les sujets de discorde ne manquent pas. Mais il faut au moins créditer l’OSI sur un point : avoir clarifié le fait que le Libre est avant tout un mouvement politique, au sens noble du terme : il vise à peser sur la vie de la cité, alors que l’Open Source vise avant tout à disposer de logiciels de qualité.

    La première des libertés est celle de savoir ce que je fais

    Ça paraît évident dans la vie de tous les jours : je sais ce que je fais. Si je décide de prendre une pelle et de planter un arbre dans mon jardin, je sais que je suis en train de prendre une pelle et de planter un arbre dans mon jardin. Si je décide de prendre un couteau et de le planter dans le thorax de mon voisin, je sais ce que je fais. C’est une liberté fondamentale, au sens où elle fonde toutes les autres. Si je ne sais pas ce que je fais, je ne peux signer un contrat, par exemple (c’est d’ailleurs le principe qui sous-tend le régime de la tutelle en droit). D’ailleurs, comme toute liberté, elle fonde une responsabilité. Si je ne savais pas ce que je faisais (et que je peux le prouver), je peux plaider l’abolition du discernement et échapper à ma responsabilité pénale, quelle que soit l’infraction commise, même les plus graves2

    Dans la vie de tous les jours, donc, il est évident que je sais ce que je fais. Mais avec un ordinateur, c’est beaucoup moins évident. Quand j’exécute Windows, je ne sais pas ce que je fais. Pas seulement parce que je ne connais pas la séquence de boot, mais de façon beaucoup plus fondamentale : parce que n’ayant pas accès au code source, je ne sais pas ce que fait le programme que j’exécute. Ce qui pose un problème majeur de confiance dans le logiciel exécuté :

    • Confiance dans le fait que le programme fait bien ce que son programmeur a voulu qu’il fasse (absence de bugs)
    • Confiance dans le fait que le programmeur avait bien mon intérêt en tête et pas seulement le sien (sincérité du programmeur, fréquemment prise en défaut dans le logiciel non libre)

    Dans le système des 4 libertés du logiciel libre, cette liberté est la liberté 1. Elle passe après la liberté 0 (liberté d’exécuter le programme) et avant la liberté 2 (liberté de redistribuer le programme). On pourrait légitimement discuter de sa priorité par rapport à la liberté 0 (est-il raisonnable d’exécuter un programme dont on ne sait pas ce qu’il fait ?) mais ça dépasserait l’objet de cette dépêche.

    Si je sais ce que je fais, je dois pouvoir modifier ce que je fais

    Conséquence logique de la liberté précédente : si je n’aime pas ce que fait un programme, je dois pouvoir l’améliorer. Si je ne sais pas le faire moi-même, je dois pouvoir payer quelqu’un pour l’améliorer. Là encore, ça suppose l’accès au code source, ne serait-ce que pour savoir ce que fait le programme. Il s’agit de la liberté 3 du logiciel libre.

    Le réseau de neurones est difficilement compatible avec le libre

    Personne ne sait vraiment ce que fait un réseau de neurones

    On l’a vu, les réseaux de neurones présentent un effet boîte noire important. Déjà, la plupart des IA commerciales ne sont accessibles qu’au travers d’une interface ou une API. Elles n’exposent que rarement les neurones. Mais même pour une personne disposant de tous les neurones, autrement dit de la description complète du réseau, l’effet boîte noire est tel que le fonctionnement du réseau de neurones est inintelligible. D’ailleurs, s’il était intelligible, il serait très vite simplifié !

    En effet, on peut recoder tout réseau de neurones dans un langage plus rapide, dès lors qu’on comprend ce qu’il fait (puisqu’il est Turing-complet). Vu la consommation astronomique d’énergie des réseaux de neurones, s’il existait un moyen de comprendre ce que fait un réseau de neurones et de le traduire dans un autre langage, on le ferait très vite. Ce qui fournirait d’ailleurs des réponses à des questions théoriques ouvertes comme : qu’est-ce que comprendre une phrase ? Comment reconnaît-on un chien, un visage, un avion ?

    Disposer de la description complète d’un réseau de neurones ne permet pas de l’améliorer

    On l’a vu : si je dispose de la totalité des neurones, je dispose de la totalité de la description du réseau de neurones. Mais comme je suis incapable de savoir ce qu’il fait, je ne suis pas plus avancé pour l’améliorer, qu’il s’agisse de retirer un défaut ou d’ajouter une fonctionnalité. Noter d’ailleurs que ceci n’est pas forcément impactant de la même manière pour tous les aspects du réseau de neurones : si je n’ai aucun moyen d’être sûr de l’absence de bugs (c’est même le contraire ! Il y a forcément des bugs, c’est juste que je ne les ai pas trouvés ou qu’ils ne sont pas corrigeables), j’ai en revanche peu d’inquiétude à avoir concernant la sincérité du programmeur : comme lui non plus ne maîtrise pas sa bestiole, pas de risque qu’il soit insincère3.

    La définition du code source d’un réseau de neurones est ambiguë

    Posons-nous un instant la question : qu’est-ce que le code source d’un réseau de neurones ? Est-ce la liste des neurones ? Comme on l’a vu, ils ne permettent ni de comprendre ce que fait le réseau, ni de le modifier. Ce sont donc de mauvais candidats. La GPL fournit une définition : le code source est la forme de l’œuvre privilégiée pour effectuer des modifications. Dans cette acception, le code source d’un réseau de neurones serait l’algorithme d’entraînement, le réseau de neurones de départ et le corpus sur lequel le réseau a été entraîné.

    Cette ambiguïté fait courir un risque juridique sous certaines licences libres

    Tu devines alors, cher lecteur, là où je veux en venir… Si le corpus comprend des œuvres non libres, tu n’as tout simplement pas le droit de le diffuser sous une licence libre ! Et si tu t’es limité à des œuvres libres pour entraîner ton modèle, tu risques fort d’avoir un ensemble d’apprentissage trop restreint, donc un réseau de neurones sans intérêt.

    Alors il y a quatre moyens de tricher.
    Le premier, c’est de t’asseoir sur la GPL et de considérer qu’en distribuant les neurones, tu as fait le taf. La ficelle est grossière. Je viens de passer une dépêche à te démontrer que c’est faux, tu pourrais au moins me montrer un peu plus de respect.

    Le deuxième, c’est de distribuer sous une licence non copyleft, genre BSD ou WTFPL. Une licence qui ne nécessite pas de distribuer le code source. Certes, mais en fait tu ne fais pas du Libre.

    Le troisième, c’est de considérer le réseau de neurones comme une donnée, pas un exécutable. Donc pas de code source. La partie sous GPL serait alors l’interface graphique, et le réseau, une donnée. C’est assez limite. Une donnée exécutable, ça s’approche dangereusement d’un blob binaire.

    Le quatrième, c’est de repenser complètement le paradigme du logiciel libre et de considérer qu’il vise avant tout à rééquilibrer les rapports de pouvoir entre programmeur et utilisateur, et qu’en redistribuant les neurones, tu as fait le job. Sur les rapports de pouvoir, tu n’as pas tort ! Mais d’une part, ça ne tiendra pas la route devant un tribunal. D’autre part, il persiste une asymétrie de pouvoir : tu as accès au corpus, pas l’utilisateur.

    Quand bien même on admettrait que le code source est l’ensemble corpus + algorithme d’optimisation + réseau de neurones de départ, l’optimisation d’un réseau de neurones consomme autrement plus de ressources que la compilation d’un programme plus classique, des ressources qui sont loin d’être à la portée du quidam classique. À quoi servirait un code source impossible à compiler ?

    Enfin, même cette définition du code source pose problème : elle n’est en fait pas beaucoup plus lisible que le réseau lui-même. Ce n’est pas parce que j’ai accès aux centaines (de milliers) de textes sur lesquels un réseau a été entraîné que je peux prédire comment il va se comporter face à une nouvelle question.

    Comment les boîtes qui font de l’IA non libre résolvent-elles ce dilemme ? Elles ne le résolvent pas

    C’est presque enfoncer une porte ouverte que dire que l’IA pose de nombreuses questions de droit d’auteur, y compris dans le petit microcosme du non-libre. Cependant, les IA non-libres ont un avantage sur ce point : si le réseau de neurones ne permet pas de remonter au corpus initial (donc en l’absence de surapprentissage), alors elles peuvent tranquillement nier avoir plagié une œuvre donnée. Tu ne me verras pas défendre les pauvres auteurs spoliés, car j’ai toujours considéré que la nature même de l’information est de circuler sans barrières (Information wants to be free, tout ça) et que le droit d’auteur en est une, et particulièrement perverse.

    La définition d’une IA open source ressemble furieusement à un constat d’échec

    L’OSI a publié une définition d’IA open source. Cette définition mérite qu’on s’y attarde.

    Premier point intéressant : après des années à tenter de se démarquer du Libre, notamment via la définition de l’Open Source qui tente de reformuler les 4 libertés sans recopier les 4 libertérs, l’OSI baisse les bras : est open source une IA qui respecte les 4 libertés.

    Deuxième point intéressant : est open source une IA qui publie la liste des neurones, le corpus d’entraînement et la méthode d’entraînement. En fait, ça revient à ne pas choisir entre les neurones et leur méthode d’entraînement. Soit, mais ça ne résout pas le problème de l’effet boîte noire. Au mieux, ça revient à admettre qu’il est le même pour le programmeur et l’utilisateur.

    Conclusion : qu’attendre d’une IA libre ?

    Il ne fait aucun doute que développer des IA libres exigera de nouvelles licences. La GPL, on l’a vu, expose à un risque juridique du fait de l’ambiguïté de la définition du code source.

    Il est à noter, d’ailleurs, qu’une IA repose rarement exclusivement sur son réseau de neurones : il y a systématiquement au moins un logiciel classique pour recueillir les inputs de l’utilisateur et les passer au réseau de neurones, et un second en sortie pour présenter les outputs. Ces briques logicielles, elles, peuvent tout à fait suivre le paradigme classique du logiciel libre.

    En définitive, cher lecteur qui ne développes pas d’IA, je t’invite surtout à te demander : qu’attends-tu d’une IA ? Qu’entends-tu quand on te parle d’IA libre ? Plus fondamentalement, l’IA serait-elle un des rares domaines où il existe une distinction pratique entre libre et Open Source ?

    Il n’y a pas de façon simple de faire une IA libre, il n’y a peut-être pas de façon du tout. Mais le principe du libre, c’est que c’est à l’utilisateur in fine de prendre ses décisions, et les responsabilités qui vont avec. Je n’espère pas t’avoir fait changer d’avis : j’espère modestement t’avoir fourni quelques clés pour enrichir ta réflexion sur le sens à donner au vocable IA open source qu’on voit fleurir ici et là.


    1. Et je mettrai « artificiel » à la poubelle parce que Implicit is better than explicit, rien que pour embêter Guido). 

    2. Bon, certaines infractions complexes à exécuter, comme le trafic de drogue ou le génocide, requièrent une certaine implication intellectuelle et sont donc peu compatibles avec l’altération du discernement, mais c’est lié au fait que l’infraction elle-même requiert un certain discernement. 

    3. Du moins au niveau du réseau de neurones lui-même. Les entrées et les sorties peuvent tout à fait passer par une moulinette insincère et codée dans un langage tout à fait classique. 

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Red Hat annonce la sortie de Red Hat OpenShift 4.18 qui améliore la sécurité et l'expérience de virtualisation

    26 février 2025 à 12:46
    Red Hat annonce la sortie de Red Hat OpenShift 4.18 qui améliore la sécurité et l'expérience de virtualisation

    Red Hat annonce la sortie de Red Hat OpenShift 4.18, qui renforce la sécurité, simplifie la gestion des machines virtuelles et des conteneurs, et offre une plus grande flexibilité pour les environnements cloud hybrides.

    Red Hat annonce la disponibilité générale de Red Hat OpenShift 4.18, la dernière version en date de la plateforme cloud hybride soutenu par Kubernetes. Red Hat OpenShift 4.18...

    L’IA au service de la protection des Datacenters

    26 février 2025 à 10:39

    L’intelligence artificielle est désormais un sujet stratégique qui vient s’inviter dans notre vie quotidienne et profondément faire évoluer de nombreux processus au sein des entreprises. Dans ce contexte, l’IA va jouer un nouveau rôle stratégique au sein des datacenters : les préserver de problèmes électriques pouvant compromettre leur intégrité et provoquer un incendie. Tribune par […]

    The post L’IA au service de la protection des Datacenters first appeared on UnderNews.

    Réviser SQL en jouant au détective : SQLNoir

    26 février 2025 à 09:30

    SQL Noir est un jeu libre (licence MIT) par Hristo « Cool as a cucumber » Bogoev, où vous incarnerez le rôle d’une personne enquêtant sur un crime, mais à grand renfort de requêtes SQL. Le SQL pour Structured Query Language ou « langage de requêtes structurées » est un langage informatique normalisé servant à exploiter des bases de données relationnelles (Wikipédia).

    Logo SQL Noir

    Bref vous avez une interface web qui vous permet de faire des requêtes dans les bases de données de témoins, suspects, enregistrements audio ou vidéo, etc., et vous devez trouver qui est la personne ayant commis le crime. Sur le principe vous allez identifier des éléments dans les données, traquer les infos correspondantes ou manquantes, faire le lien entre les éléments, repérer des liens entre personnes ou des transactions, et tout cela avec des requêtes SQL.

    Il y a actuellement 4 enquêtes disponibles (et probablement plus à venir). C'est rapide, ludique, joli et ergonomique. L'outil aide en suggérant les mots clés SQL ou les noms de tables par exemple. L'outil dispose d'une zone pour prendre des notes, ce qui est à la fois pratique pour garder trace des requêtes SQL, mais surtout des résultats, et vous en aurez besoin pour les cas compliqués.

    Le premier commit du projet date du début du mois, et le projet est donc assez jeune, tout en étant à la fois prometteur, et déjà très sympa.

    Note: full disclosure, LinuxFr.org utilise du SQL. Cette information est-elle pertinente ici ? Absolument pas, mais des fois il y a des infos inutiles dans les enquêtes. Et merci à @siltaer d'avoir partagé ce message qui m'a fait découvrir ce jeu.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Décès de Jean-Pierre Archambault

    25 février 2025 à 22:16

    Jean-Pierre Archambault est décédé le 23 février 2025. Ancien enseignant et professeur agrégé de mathématiques, il présidait notamment l'association Enseignement Public et Informatique (EPI). Il a été un acteur essentiel des ressources libres et des logiciels pour l'Éducation nationale en France et dans la francophonie.

    L'étiquette jean-pierre_archambault vient nous remémorer combien il était actif autour du logiciel libre et de l'éducation depuis longtemps, que nous le croisions régulièrement lors de conférences et d'événements, et combien il était une personne appréciée, active, humaine et de convictions.

    LinuxFr.org présente ses plus sincères condoléances à sa famille et à ses proches.

    Jean-Pierre Archambault (photo tirée d'une citation pour l'April)

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    SentinelLabs dévoile une nouvelle campagne de malware Ghostwriter ciblant l’opposition biélorusse et des organisations ukrainiennes

    25 février 2025 à 14:04

    SentinelLabs, la division de recherche de SentinelOne, révèle une nouvelle campagne de cyberattaques utilisant des documents Excel corrompus pour cibler l’opposition biélorusse ainsi que des organisations militaires et gouvernementales en Ukraine. Une campagne active depuis plusieurs mois Les chercheurs de SentinelLabs révèlent que cette opération malveillante, en préparation depuis juillet-août 2024, est entrée en phase […]

    The post SentinelLabs dévoile une nouvelle campagne de malware Ghostwriter ciblant l’opposition biélorusse et des organisations ukrainiennes first appeared on UnderNews.

    Piratage de Bybit : un signal d’alarme pour la sécurité des cryptomonnaies et l’avenir de la protection multisignature

    25 février 2025 à 09:19

    Dans l’un des détournements les plus spectaculaires jamais enregistrés dans l’univers des cryptoactifs, des cybercriminels ont infiltré un portefeuille hors ligne Ethereum pour s’emparer d’actifs numériques évalués à 1,5 milliard de dollars, principalement composés de tokens Ethereum. Ce dernier incident sur Bybit, une plateforme d’échange de cryptomonnaies basée à Dubaï, marque le début d’une nouvelle […]

    The post Piratage de Bybit : un signal d’alarme pour la sécurité des cryptomonnaies et l’avenir de la protection multisignature first appeared on UnderNews.

    Revue de presse de l’April pour la semaine 8 de l’année 2025

    Par :echarp
    25 février 2025 à 08:21

    Cette revue de presse sur Internet fait partie du travail de veille mené par l’April dans le cadre de son action de défense et de promotion du logiciel libre. Les positions exposées dans les articles sont celles de leurs auteurs et ne rejoignent pas forcément celles de l’April.

    [clubic.com] DeepSeek continue de bousculer l'IA en partageant plus largement ses modèles

    ✍ Samir Rahmoune, le vendredi 21 février 2025.

    La start-up chinoise continue de faire son trou dans le monde des grandes IA. Et elle se distingue encore par son engagement pour l’open source.

    Et aussi:

    [leParisien.fr] Polémique Wikipédia: cinq minutes pour comprendre les critiques qui visent l'encyclopédie en France - Le Parisien

    Le vendredi 21 février 2025.

    Le Point, magazine hebdomadaire d’actualité français, a déclenché une guerre médiatique contre Wikipédia. Ils s’accusent mutuellement, l’un d’intimidation, l’autre de désinformation.

    Et aussi:

    [Next] Donald Trump supprime l'indépendance des agences de régulation FTC, FCC et SEC

    ✍ Martin Clavey, le jeudi 20 février 2025.

    Les agences FTC, FCC et SEC régulent les marchés américains et surveillent notamment les entreprises américaines du numérique. Elles opéraient jusque ici de manière indépendante du pouvoir exécutif fédéral américain. Un décret de Donald Trump publié le 18 février dernier veut leur imposer une supervision présidentielle.

    [Next] GNOME 47.4 et 48 Beta disponibles: quelles nouveautés?

    ✍ Vincent Hermann, le mardi 18 février 2025.

    Durant le week-end, l’équipe de développement de GNOME a publié coup sur coup deux versions. La première, stable, contient des améliorations pour l’actuelle branche 47 et est diffusée sur l’ensemble des distributions Linux l’utilisant. L’autre, en bêta, représente la prochaine branche majeure et contient des nouveautés plus importantes.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Illico Editor : nouveautés depuis 2021

    25 février 2025 à 08:17

    Illico Editor est un (petit) couteau suisse de la qualification de données développé à l’origine pour permettre aux experts métiers de transformer les données sans recourir à la programmation… le tout dans une simple page HTML (pas de serveur Web) donc une utilisation à travers le navigateur.

    Aujourd’hui, plus de 150 transformations de données sont disponibles prêtes à l'emploi.

    Particularité : chaque transformation exécutée ainsi que son résultat sont inscrits dans un journal de bord créant ainsi une sorte de procédure-type sans effort.

    Publié sous licence GPL, le code d’Illico est globalement très basique : standards HTML5/CSS3/JS, et zéro dépendance, bibliothèque ou appel à un code tiers. Les données restent dans le (cache du) navigateur.
    Les algorithmes sont très simples. La complexité est plutôt liée à la manière d’imaginer de nouvelles transformations de données, à la fois génériques (paramétrables) tout en restant simples pour l’utilisateur (nombre réduit de paramètres).

    Sommaire

    Quelques limites à connaître

    Dans mon usage, des crashs du navigateur ont été constatés sur des grands jeux de données avec les fonctionnalités qui sollicitent le plus grand nombre de comparaisons (précisément le calcul de la distance d’édition / lignes).

    Pour un grand volume de données, mon conseil serait d’opter pour Opera/Vivaldi qui proposent à l’utilisateur d’augmenter la mémoire allouée à la page (plutôt que de faire crasher l’onglet/navigateur) ; de réduire le jeu de données aux colonnes/lignes à traiter (ce qui réduirait la taille), avant de se lancer dans les transformations ; ou d’opter pour des outils plus adaptés à cette volumétrie.

    Un test sur des données factices m’avait permis d’identifier des tailles limites de jeu de données : https://illico.ti-nuage.fr/doc/build/html/fct/principes.html#jeu-de-donnees-volumineux

     Objet de la dépêche

    Cette dépêche fait écho à la précédente de janvier 2021.

    Au-delà des corrections de bug et des améliorations (gestion des nombres décimaux et négatifs pour les intervalles, options supplémentaires pour décider l’interprétation de “valeurs” vides), je voulais présenter ici la trentaine de nouvelles fonctionnalités/traitements et les nouveaux tutoriels.

    Avant de commencer

    Dans Illico, l’expression valeurs en liste désigne

    • des données présentées sous la forme a, b, c (le séparateur peut être un caractère ou une chaîne)
    • des listes de couples de valeurs xxx:1 / yyy:2 / zzz:3 (un séparateur de liste / + un délimiteur {clé => valeur} ici :

    Nouveaux tutoriels

    La section tutoriels décrit des cas concrets pour lesquels il n’existe pas de résolution « en 1 étape ».
    Dans certains cas, une fonctionnalité a été développée pour couvrir tout ou partie de la résolution.

    Ces tutoriels sont détaillés pas à pas dans la section “tutoriels” afin d’être utilisés comme support de formation.

    Je résume ici leur logique.

    Transposer une matrice

    Au sens “mathématique” du terme, bascule les lignes en colonnes et vice-versa :

    nombre d’étapes/actions du tutoriel : 6

    une nouvelle fonctionnalité a été développée par la suite pour transposer les données en 1 clic/étape/action

    Comparer (rapidement) des groupes de colonnes

    Comparer des groupes de colonnes prises deux à deux était déjà possible. Cependant, avec un grand nombre de colonne, l’opération pouvait s’avérer fastidieuse et source d’erreurs.
    Le tutoriel présente une manière plus générique de comparer un grand nombre de colonne de deux fichiers sources avec le même en-tête, par exemple la description d’une même population sur deux années différentes.

    nombre d’étapes/actions du tutoriel : (2 par fichier source) + 4

    l’intérêt de ce tutoriel réside surtout dans le fait de rendre la complexité du traitement indépendante du nombre (de paires) de colonnes à comparer

    Comparer des lignes dans un fichier cumul

    On souhaite identifier des différences mais cette fois au sein d’un même fichier de données décrivant un cumul.
    Il peut s’agir par exemple de deux jeux de données mis bout-à-bout décrivant une même population sur deux années différentes.

    nombre d’étapes/actions du tutoriel : 3

    Créer un fichier cumul à partir de deux sources aux formats proches

    Le cas a été rencontré lors d’une analyse de journaux comptables où les jeux de données présentaient des rubriques/codes comptables en colonne.
    D’un mois sur l’autre, le nombre et l’ordre de ces colonnes/rubriques différaient. Le tutoriel permet de s’affranchir de ces variations de la structure des données.

    nombre d’étapes/actions du tutoriel : (4 par fichier source) + 3

    Reconstituer des calendriers

    Autre cas de figure rencontré, les données décrivent des personnes présentes sur des périodes avec en colonne la date de début, la date de fin, puis les autres données.
    À partir de ces données, on recherche les dates/jours exactes qui ont rassemblé le plus de personne.

    La résolution consiste à générer l’ensemble des jours (entre la date de début et la date de fin), c’est-à-dire une description des faits à une échelle unitaire/atomique (chaque ligne décrivant alors une date et non une période).

    Trois approches sont proposées dans le tutoriel : entre 3 et 6 étapes/actions

    Fidélisation (suivre une cohorte)

    La problématique soulevée était de comprendre les parcours, trajectoires pour une population donnée.

    Exemple simplifié : 4 lignes de données décrivent (dans l’ordre chronologique) les états/statuts successifs d’un individu, à raison d’un par ligne : a -> b -> c -> d.

    dans la pratique, le jeu de données décrivait une population d’individu avec des trajectoire de 4 à 50 états, parfois circulaires a -> b -> a -> d -> c

    On souhaite identifier :

    1. le parcours par rapport à l’état initial pour l’individu pris en exemple, le résultat sera la relation suivante : a => {b -> c -> d}
    2. les changements d’état (de proche en proche) pour le même exemple, le résultat sera une liste de couple de valeurs : (a => b), (b => c), (c => d)
    3. les relations entre l’état initial et n’importe quel autre état du parcours même exemple, le résultat sera trois couples de valeurs : (a => b), (a => c), (a => d)
    4. les relations entre n’importe quel état du parcours et n’importe quel autre état rencontré par la suite même exemple, le résultat sera six couples :
      • (a => b), (a => c), (a => d)
      • (b => c), (b => d)
      • (c => d)

    La fonctionnalité utilisée possède une option “scénario” avec les 4 choix.
    Ainsi, on définit « ce que représente les données » en précisant le ou les séparateurs, et la transformation est appliquée selon la demande.

    Les 4 scénarios sont proposés dans le tutoriel : 3 étapes/actions (une 4ème étape est nécessaire si on souhaite étudier à part le 1er état et l’état terminal de la trajectoire)

    Nouvelles fonctionnalités

    La majorité des nouvelles fonctionnalités concerne

    • des traitements de dates (décalage, conversion)
    • des traitements d’intervalles numériques
    • des traitements de périodes (intervalles de dates)

    Elles sont présentées ci-dessous dans leur rubrique respective (dans l’ordre d’apparition des rubriques dans Illico et dans la documentation).

    (dans l’application, chaque écran permettant d’exécuter une transformation possède un lien vers la section/page concernée dans la documentation)

    Valeurs en liste : compacter, inverser l’ordre, filtrer

    compacter les listes

    rubrique « valeurs en liste : agrégats"

    Pour une liste qui présente des répétitions—a,a,b,c,a,d,b—les deux options de cette transformation permettent d’obtenir :

    • a,b,c,a,d,b : réduire à une occurrence, pour chaque série
    • a,b,c,d : conserver globalement les premières occurrences
    • c,a,d,b : conserver globalement les dernières occurrences

    inverser l’ordre des éléments des listes

    rubrique « valeurs en liste : structure"

    Pour une colonne décrivant des listes d’éléments—a:1, b:2—,

    • inverse l’ordre des valeurs des listes (b:2, a:1)
    • inverse l’ordre des valeurs des listes imbriquées seulement (1:a, 2:b)
    • inverse l’ordre des listes imbriquées et des valeurs dans ces listes (2:b, 1:a)

    filtrer ou exclure les valeurs d’une liste

    rubrique « valeurs en liste : filtres"

    compare les listes de valeurs d’une colonne par rapport à une autre colonne de référence

    • égal
    • différent de
    • supérieur/inférieur ou égal à
    • strictement supérieur/inférieur à

    réduire la liste à certaines clés

    conserver/exclure certains couples {clé:valeur} lorsque la clé existe dans une autre colonne (qui contient pour chaque ligne la liste de clés à conserver ou à exclure)

    Par exemple—et sans devoir utiliser des regex/expressions rationnelles—la liste 2021=3,2022=1,2024=4 pourra être réduite à 2022=1,2024=4 si la clé 2021 existe dans la colonne de contrôle.

    Valeurs en liste : lister les permutations, mélanger la liste

    rubrique valeurs en liste : enrichissement

    lister les permutations des valeurs d’une liste

    produit la liste de toutes les permutations des valeurs des listes de la colonne sélectionnée.

    mélanger les valeurs de la liste

    applique le mélange de Fisher-Yates sur les valeurs de la liste

    enlever les accents et les cédilles de l’en-tête

    rubrique « en-tête"

    surtout utile lorsque l’on part d’un tableur et que l’on cherche à injecter les données dans une base de données ne tolérant pas ces caractères dans les en-têtes

    Permuter les colonnes

    rubrique « colonnes : ordre"

    Dans le cas d’un export de données depuis un logiciel métier, ou suite à certaines transformations, certaines colonnes peuvent être générées dans un ordre qui ne s’avère pas très intuitif.

    Cette nouvelle fonctionnalité inverse en 1 clic l’ordre des colonnes sélectionnées en permutant (au choix)

    • 1ʳᵉ et 2ᵉ, 3ᵉ et 4ᵉ, etc.
    • 1ʳᵉ et dernière, 2ᵉ et avant-dernière, etc.

    Numéroter chaque série

    rubrique “lignes”

    Dans Illico, le terme série désigne une suite de lignes contiguës qui possèdent la même valeur dans la colonne sélectionnée (un identifiant par exemple).
    Si l’identifiant réapparaît plus loin dans les données, il s’agira d’une nouvelle série.

    (une autre transformation permet déjà de numéroter chaque ligne de la série)

    Obtenir les méta-données des colonnes sélectionnées

    rubrique “agrégats”

    Pour les colonnes sélectionnées, indique

    • si la colonne ne contient que des valeurs uniques (les valeurs vides sont comptées à part)
    • le nombre de lignes sans valeur (valeur vide)
    • le nombre de valeurs renseignées (valeur non-vide)
    • la cardinalité : nombre de valeurs différentes rencontrées dans la colonne

    Décaler les dates

    rubrique “temps”

    décaler les dates avec 1 constante (saisie par l’utilisateur)

    permet de décaler les dates d’une colonne à partir d’une constante (on précise l’unité : nombre de jours, de semaines, de mois ou d’années)

    décaler des dates selon 1 autre colonne

    idem précédemment mais en se basant sur les valeurs d’une autre colonne plutôt qu’une constante

    Jours de la semaine

    rubrique “temps”

    donner le nom des jours de la semaine

    la date est alors recodée : lundi, mardi…

    compter chacun des jours de la semaine

    nombre de lundis, de mardis, etc. dans l’intervalle décrit par des colonnes début et fin de la période

    obtenir le numéro du jour dans l’année

    1 pour le 1ᵉʳ janvier, 32 pour le 1ᵉʳ février…

    Transformation des périodes « temps : intervalles »

    compléter un intervalle de date (2 colonnes : début et fin de la période)

    crée une liste de jour/date dans l’intervalle décrit

    rechercher une date dans un intervalle de date

    compare 1 colonne (date recherchée) par rapport à 2 autres colonnes décrivant une période (début et fin de la période)

    combiner deux périodes (4 colonnes)

    option (au choix) : obtenir

    • une fusion : période englobant les deux [min, max]
    • une union : période englobant les deux seulement si intersection
    • une intersection : plus petite période commune

    comparer les dates et une liste de seuils (saisie par l’utilisateur)

    détecter des collisions de périodes

    portée de la détection

    • rechercher pour l’ensemble des données
    • rechercher dans les lignes qui partagent un même identifiant (les lignes comparées ne sont pas forcément contiguës)
    • rechercher dans les lignes qui décrivent une série (lignes contiguës avec un même identifiant)

    Calculs

    rubrique “calculs”

    calculer une opération sur 1 colonne : options

    options :

    • opérations : minimum, maximum, moyenne, somme
    • valeurs vides : ignorées ou traduites par zéro
    • calcul : total ou cumulé
      • option si cumulé : en partant de la première ou dernière ligne
    • résultat : global ou local
      • option si local : pour chaque série ou pour chaque identifiant

    calculer une opération avec 1 constante (saisie par l’utilisateur)

    calculer une somme ou une moyenne sur x colonnes

    Convertir d’un système de numération à un autre

    rubrique “enrichissement”

    conversion depuis et vers une base binaire, octale, décimale, hexadécimale

    Matrice : transposée, inverser, trier

    rubrique “matrice”

    calculer la transposée

    Transpose le jeu de données : les lignes deviennent les colonnes et inversement ; la ligne d’en-tête devient la première colonne ; la première colonne devient la ligne d’en-tête.

    inverser l’ordre des lignes

    Inverse l’ordre des lignes du jeu de données : la première ligne devient la dernière, la dernière devient la première, etc.

    trier par ordre alphabétique

    options

    • ordre des lettres : A…Z…a…z…É…é ou A…É…Z…a…é…z
    • placer les valeurs vides : au début ou à la fin

    trier par ordre numérique

    option : les valeurs vides sont

    • les plus petites (seront placées au début du tableau)
    • les plus grandes (seront placées à la fin du tableau)
    • égales à zéro

    trier par ordre chronologique

    option : les valeurs vides sont

    • dans le passé lointain
    • dans un futur lointain
    • égales à la date du jour
    • égales à une date précise (à saisir)

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    ESET Research découvre DeceptiveDevelopment, un groupe aligné sur la Corée du Nord qui cible les développeurs

    24 février 2025 à 15:08

    En 2024, ESET a identifié des activités malveillantes liées à la Corée du Nord, nommées DeceptiveDevelopment. Ces attaques ciblent les développeurs via de fausses offres d’emploi. Les cybercriminels se font passer pour des recruteurs et distribuent des logiciels malveillants dissimulés dans des projets. Leur but est de dérober des cryptomonnaies et des données de connexion. […]

    The post ESET Research découvre DeceptiveDevelopment, un groupe aligné sur la Corée du Nord qui cible les développeurs first appeared on UnderNews.

    L'intégration de Rust dans le noyau Linux trouve un autre soutien de poids en Greg Kroah-Hartman, le mainteneur en chef des versions stables de Linux en souligne les avantages

    24 février 2025 à 17:14
    L'intégration de Rust dans le noyau Linux trouve un autre soutien de poids en Greg Kroah-Hartman,
    le mainteneur en chef des versions stables de Linux en souligne les avantages

    Le débat sur la politique du noyau Linux concernant le langage de programmation Rust se poursuit... Alors que certains responsables du noyau s'y opposent, Linus Torvalds a clarifié sa position concernant l'intégration de Rust. Greg Kroah-Hartman, le commandant en second de Linux, est également un fervent partisan du code...

    Réglementation DORA : le stockage hors ligne et le chiffrement matériel des solutions accessibles pour les entreprises ?

    24 février 2025 à 13:52

    Avec la numérisation croissante des services et une dépendance accrue aux technologies, les entreprises sont de plus en plus exposées aux risques de cyberattaques. Le règlement DORA (Digital Operational Resilience Act), en vigueur depuis le 17 janvier 2025, impose aux institutions financières de renforcer leur résilience opérationnelle numérique. Cette dernière vise à garantir que ces […]

    The post Réglementation DORA : le stockage hors ligne et le chiffrement matériel des solutions accessibles pour les entreprises ? first appeared on UnderNews.

    Les institutions gouvernementales et le secteur du BTP enregistrent une diminution par trois des incidents cyber critiques en 2024

    24 février 2025 à 10:51

    Selon le dernier rapport Managed Detection and Response (MDR) de Kaspersky, le secteur public et les entreprises de BTP ont connu une baisse significative du nombre d’incidents de haute gravité avec implication humaine directe en 2024, tandis que les secteurs relatifs à l’alimentation, à l’informatique, aux télécommunications et à l’industrie ont enregistré une hausse. Tribune […]

    The post Les institutions gouvernementales et le secteur du BTP enregistrent une diminution par trois des incidents cyber critiques en 2024 first appeared on UnderNews.

    Programmer des démonstrations : une modeste invitation aux assistants de preuve

    24 février 2025 à 12:07

    En principe, une démonstration mathématique ne fait que suivre des règles logiques bien définies, et devrait donc pouvoir être encodée informatiquement et vérifiée par un ordinateur. Où en est-on dans la pratique et dans la théorie ? Petit tour au pays des assistants de preuve, des langages de programmation dédiés aux démonstrations, et de leur fondement théorique le plus commun, la théorie des types.

    Sommaire

    Vérifier des programmes

    Comme nous sommes sur LinuxFr.org, je devrais peut-être commencer par ceci : nous passons énormément de temps à découvrir des bugs, et pour les personnes du développement logiciel, à les comprendre, à les résoudre, et de préférence à les éviter en écrivant des tests.

    Dans une formation universitaire de base en informatique, on rencontre des algorithmes, mais aussi des méthodes pour prouver que ces algorithmes terminent et répondent bien au problème posé. Les premières introduites sont typiquement les variants de boucle (montrer qu’une certaine valeur décroît à chaque itération, ce qui assure que le programme termine si elle ne peut pas décroître à l’infini), et les invariants de boucle (montrer qu’une certaine propriété vraie au début d’une boucle est préservée entre deux itérations, ce qui assure qu’elle reste encore vraie à la fin de la boucle).

    On a donc, d’une part, un algorithme, implémentable sur machine, d’autre part une preuve, sur papier, que l’algorithme est correct. Mais si l’implémentation a une erreur par rapport à l’algorithme sur papier ? Et puisque nous n’arrêtons pas de nous tromper dans nos programmes, il est fort possible que nous nous trompions dans notre preuve (qui n’a jamais oublié qu’il fallait faire quelque chose de spécial dans le cas n = 0 ?).

    En tant que programmeurs, on peut imaginer une approche où non seulement l’algorithme est implémenté, mais sa preuve de terminaison et de correction est aussi « implémentée », c’est-à-dire encodée dans un langage qui ressemble à un langage de programmation, pour être ensuite non pas interprétée ou compilée mais vérifiée.

    La vérification est un très vaste domaine de l’informatique, dont je ne suis pas spécialiste du tout, et dans lequel il existe énormément d’approches : la logique de Hoare (voir par exemple l’outil why3), qui est essentiellement un raffinement des variants et invariants de boucle, la logique de séparation spécialement conçue pour raisonner sur la mémoire mutable (voir Iris), le model checking qui se concentre sur des programmes d’une forme particulièrement simple (typiquement des systèmes de transition finis) pour en vérifier des propriétés de façon complètement automatisée, etc.

    Dans cette dépêche, je vais parler d’une approche avec quelques caractéristiques particulières :

    • On vérifie des programmes purement fonctionnels (pas d’effets de bord, même si on peut les simuler).

    • Le même langage mélange à la fois les programmes et leurs preuves.

    • Plus précisément, le langage ne fait pas (ou peu) de distinction entre les programmes et les preuves.

    Vérifier des démonstrations mathématiques

    Pour se convaincre de l’ampleur que les démonstrations ont prise dans les mathématiques contemporaines, il suffit d’aller jeter un œil, par exemple, au projet Stacks : un livre de référence sur la géométrie algébrique, écrit collaborativement sur les 20 dernières années, dont l’intégrale totalise plus de 7500 pages très techniques. Ou bien la démonstration du théorème de classification des groupes finis simples : la combinaison de résultats répartis dans les dizaines de milliers de pages de centaines d’articles, et une preuve « simplifiée » toujours en train d’être écrite et qui devrait faire plus de 5000 pages. Ou bien le théorème de Robertson-Seymour, monument de la théorie des graphes aux nombreuses applications algorithmiques : 20 articles publiés sur 20 ans, 400 pages en tout. Ou bien, tout simplement, le nombre de références dans la bibliographie de la moindre thèse ou d’articles publiés récemment sur arXiv.

    Inévitablement, beaucoup de ces démonstrations contiennent des erreurs. Parfois découvertes, parfois beaucoup plus tard. Un exemple assez célèbre est celui d’un théorème, qui aurait été très important s’il avait été vrai, publié en 1989 par Vladimir Voedvodsky, un célèbre mathématicien dont je vais être amené à reparler plus bas, avec Mikhail Kapranov. Comme raconté par Voedvodsky lui-même, un contre-exemple a été proposé par Carlos Simpson en 1998, mais jusqu’en 2013, Voedvodsky lui-même n’était pas sûr duquel était faux entre sa preuve et le contre-exemple !

    Il y a aussi, souvent, des « trous », qui ne mettent pas tant en danger la démonstration mais restent gênants : par exemple, « il est clair que la méthode classique de compactification des espaces Lindelöf s’applique aussi aux espaces quasi-Lindelöf », quand l’auteur pense évident qu’un argument existant s’adapte au cas dont il a besoin mais que ce serait trop de travail de le rédiger entièrement. Donc, assez naturellement, un but possible de la formalisation des maths est de produire des démonstrations qui soient certifiées sans erreur (et sans trou).

    Mais c’est loin d’être le seul argument. On peut espérer d’autres avantages, qui pour l’instant restent de la science-fiction, mais après tout ce n’est que le début : par exemple, on peut imaginer que des collaborations à grande échelle entre beaucoup de mathématiciens deviennent possibles, grâce au fait qu’il est beaucoup plus facile de réutiliser le travail partiel de quelqu’un d’autre s’il est formalisé que s’il est donné sous formes d’ébauches informelles pas complètement rédigées.

    Brouwer-Heyting-Kolmogorov

    Parmi les assistants de preuve existants, la plupart (mais pas tous) se fondent sur une famille de systèmes logiques rangés dans la famille des « théories des types ». L’une des raisons pour lesquelles ces systèmes sont assez naturels pour être utilisés en pratique est qu’en théorie des types, les preuves et les programmes deviennent entièrement confondus ou presque, ce qui rend facile le mélange entre les deux.

    Mais comment est-ce qu’un programme devient une preuve, au juste ? L’idée de base est appelée interprétation de Brouwer-Heyting-Kolomogorov et veut que les preuves mathématiques se comprennent de la façon suivante :

    • Le moyen de base pour prouver une proposition de la forme « P et Q » est de fournir d’une part une preuve de P et une preuve de Q. En d’autres mots, une preuve de « P et Q » rassemble en un même objet une preuve de P et une preuve de Q. Mais en termes informatiques, ceci signifie qu’une preuve de « P et Q » est une paire d’une preuve de P et d’une preuve de Q.

    • De même, pour prouver « P ou Q », on peut prouver P, ou on peut prouver Q. Informatiquement, une preuve de « P ou Q » va être une union disjointe : une preuve de P ou une preuve de Q, avec un bit pour savoir dans quel cas on est.

    • Pour prouver « Vrai », il suffit de dire « c’est vrai » : on a une unique preuve de « Vrai ».

    • On ne doit pas pouvoir prouver « Faux », donc une preuve de « Faux » n’existe pas.

    • Et le plus intéressant : pour prouver « si P alors Q », on suppose temporairement P et on en déduit Q. Informatiquement, ceci doit devenir une fonction qui prend une preuve de P et renvoie une preuve de Q.

    Curry-Howard

    L’interprétation de Brouwer-Heyting-Kolmogorov est informelle, et il existe plusieurs manières de la rendre formelle. Par exemple, on peut interpréter tout ceci par des programmes dans un langage complètement non-typé, ce qui s’appelle la réalisabilité.

    Mais en théorie des types, on prend plutôt un langage statiquement typé pour suivre l’idée suivante : si une preuve de P et Q est une paire d’une preuve de P et d’une preuve de Q, alors le type des paires de P et Q peut se comprendre comme le type des preuves de « P et Q ». On peut faire de même avec les autres types de preuves, et ceci s’appelle la correspondance de Curry-Howard. Autrement dit, là où Brouwer-Heyting-Kolmogorov est une correspondance entre les preuves et les programmes, Curry-Howard est un raffinement qui met aussi en correspondance les propositions logiques avec les types du langage, et la vérification des preuves se confond entièrement avec le type checking.

    Sur les cas que j’ai donnés, la correspondance de Curry-Howard donne :

    • La proposition « P et Q » est le type des paires d’un élément de P et d’un élément de Q,

    • La proposition « P ou Q » est le type somme de P et Q (comme Either en Haskell et OCaml, les tagged unions en C, et std::variant en C++ : l’un ou l’autre, avec un booléen pour savoir lequel),

    • La proposition « Vrai » est le type trivial à une seule valeur (comme () en Haskell et Rust, unit en OCaml),

    • La proposition « Faux » est le type vide qui n’a aucune valeur (comme ! en Rust),

    • La proposition « si P alors Q » est le type des fonctions qui prennent un argument de type P et renvoient une valeur de type Q.

    Quantificateurs et types dépendants

    La version de Curry-Howard que j’ai esquissée donne une logique dite « propositionnelle » : il n’y a que des propositions, avec des connecteurs entre elles. Mais en maths, on ne parle évidemment pas que des propositions. On parle de nombres, de structures algébriques, d’espaces topologiques, …, bref, d’objets mathématiques, et des propriétés de ces objets. Les deux types principaux de propositions qui manquent sont ce qu’on appelle les quantificateurs : « Pour tout x, … » et « Il existe x tel que… ». Ici, ce qui est une évidence en logique devient moins évident, mais très intéressant, du côté des programmes.

    Prenons pour l’exemple le théorème des deux carrés de Fermat, qui énonce (dans l’une de ses variantes) qu’un nombre premier impair est de la forme 4n+1 si et seulement s’il peut s’écrire comme somme de deux carrés parfaits. À quoi doit ressembler le type associé à cette proposition ? Par analogie avec les implications, on a envie de dire que cela devrait être une fonction, qui prend un nombre premier impair p, et renvoie une preuve de l’équivalence. Problème : ce qui est à droite de l’équivalence est une proposition paramétrée par p. Autrement dit, en notant P le type des nombres premiers impairs, on ne veut plus un simple type fonction P → E, mais un type fonction où le type de retour peut dépendre de la valeur passée à la fonction, noté par exemple (p : P) → E(p). Ces types qui dépendent de valeurs sont appelés types dépendants.

    Dans les langages de programmation populaires, il est rare de trouver des types dépendants. Mais on en retrouve une forme faible en C avec les tableaux de longueur variable (VLA pour « variable-length arrays ») : on peut écrire

    … f(int n) {
      int array[n];
      …
    }
    

    qui déclare un tableau dont la taille n est une expression. Néanmoins, en C, même si on dispose de ce type tableau qui est en quelque sorte dépendant, on ne peut pas écrire une fonction « int[n] f(int n) » qui renvoie un tableau dont la longueur est passée en paramètre. Plus récemment, en Rust, il existe les const generics, où des valeurs se retrouvent dans les types et où on peut écrire fn f<const n: usize>() -> [u8; n], ce qui est un vrai type dépendant, mais cette fois avec la restriction assez sévère que toutes ces valeurs peuvent être calculées entièrement à la compilation, ce qui à cause de la façon dont fonctionne ce type de calcul en Rust empêche par exemple les allocations mémoire. (Donc l’implémentation est assez différente, elle efface ces valeurs en « monomorphisant » tous les endroits où elles apparaissent.)

    En théorie des types, le langage est (normalement) purement fonctionnel, donc les problèmes d’effets de bord dans les valeurs à l’intérieur des types dépendants ne se pose pas. Le type checking peut déclencher des calculs arbitrairement complexes pour calculer les valeurs qui se trouvent dans les types.

    Et le « il existe », au fait, à quoi correspond-il ? Cette fois, ce n’est plus une fonction dépendante mais une paire dépendante : une preuve de « Il existe x tel que E(x) » est une paire d’une valeur x et d’une preuve de E(x). La différence avec une paire normale est que le type du deuxième élément peut dépendre de la valeur du premier élément.

    Comme on peut commencer à s’en douter, le fait d’avoir des types dépendants est utile pour prouver des affirmations mathématiques, mais aussi, bien qu’il puisse sembler inhabituel, pour prouver des programmes, et plus précisément pour encoder des propriétés des valeurs dans les types. Là où on aurait dans un langage moins expressif une fonction qui renvoie deux listes, avec une remarque dans la documentation qu’elles sont toujours de même taille, dans un langage avec des types dépendants, on peut renvoyer un triplet d’un entier n, d’une liste dont le type indique qu’elle est de taille n, et une deuxième liste elle aussi de taille n. Et là où on aurait un deuxieme_liste[indice_venant_de_la_premiere] avec un commentaire que cela ne peut pas produire d’erreur, car les deux listes sont de même taille, on a un programme qui utilise la garantie que les deux listes sont de même taille, et le typage garantit statiquement que cette opération t[i] ne produira pas d’erreur.

    Logique intuitionniste

    Reprenons l’exemple du théorème des deux carrés de Fermat. Nous pouvons maintenant traduire cette proposition en un type : celui des fonctions qui prennent un nombre premier impair p et renvoient une paire de :

    • Une fonction qui prend n tel que p = 4n+1 et renvoie deux entiers a, b accompagnés d’une preuve que a^2 + b^2 = p,

    • Réciproquement, une fonction qui prend a, b et une preuve de a^2 + b^2 = p, et renvoie n tel que p = 4n+1.

    Prouver le théorème des deux carrés de Fermat en théorie des types, c’est donner un élément (on dit plutôt « habitant ») de ce type, soit un programme dont le langage peut vérifier qu’il a ce type. Mais que fait au juste ce programme quand on l’exécute ? On voit qu’il permet notamment de calculer une décomposition d’un nombre premier impair congru à 1 modulo 4 comme somme de deux carrés.

    Là, c’est le côté « programmes » qui apporte un élément moins habituel du côté « preuves » : l’exécution d’un programme va correspondre à un processus de simplification des preuves. Notamment, si on a une preuve de « si P alors Q » et une preuve de P, on peut prendre la preuve de P et remplacer chaque utilisation de l’hypothèse P dans la preuve de « si P alors Q », pour obtenir une preuve de Q qui peut contenir de multiples copies d’une même preuve de P. Cette opération de simplification du côté logique correspond naturellement au fait que la manière en théorie des types de prouver Q à partir d’une preuve f de P ⇒ Q et d’une preuve x de P est tout simplement d’écrire f(x), et que calculer f(x), informatiquement, se fait bien en remplaçant le paramètre de f à tous les endroits où il apparaît par la valeur x et à simplifier le résultat. On dit que la logique de Curry-Howard est constructive, parce qu’elle se prête à une interprétation algorithmique.

    Mais ceci peut sembler gênant. Par exemple, il est trivial en maths « normales » de prouver que tout programme termine ou ne termine pas. Mais par Curry-Howard, une preuve que tout programme termine ou ne termine pas doit être une fonction qui prend un programme, et qui renvoie soit une preuve qu’il termine, soit une preuve qu’il ne termine pas. Autrement dit, si cette proposition censément triviale était prouvable dans Curry-Howard, on aurait un algorithme pour résoudre le problème de l’arrêt, ce qui est bien connu pour être impossible.

    L’explication à cette différence tient au fait que la preuve « triviale » de cette proposition utilise une règle de déduction qui a un statut un peu à part en logique, dite règle du tiers exclu : pour n’importe quelle proposition P, sans aucune hypothèse, on peut déduire « P ou (non P) » (autrement dit, que P est vraie ou fausse). Or cette règle n’admet pas d’interprétation évidente par Curry-Howard : le tiers exclu devrait prendre une proposition P et renvoyer soit une preuve de P, soit une preuve que P est fausse (ce qui s’encode par « si P alors Faux »), autrement dit, le tiers exclu devrait être un oracle omniscient capable de vous dire si une proposition arbitraire est vraie ou fausse, et ceci est bien évidemment impossible.

    (Cela dit, si vous voulez vous faire mal à la tête, apprenez que c’est l’opérateur call/cc et pourquoi l’ajouter permet de prouver le tiers exclu. Exercice : call/cc existe dans de vrais langages, comme Scheme, pourtant on vient de voir que le tiers exclu semble nécessiter un oracle omniscient, comment expliquer cela ?)

    Pour être précis, la logique sans le tiers exclu est dite intuitionniste (le terme constructive étant un peu flou, alors que celui-ci est précis). On peut faire des maths en restant entièrement en logique intuitionniste, et même si ce n’est pas le cas de l’écrasante majorité des maths, il existe tout de même un certain nombre de chercheurs qui le font, et ceci peut avoir divers intérêts. Il y a notamment l’interprétation algorithmique des théorèmes, mais aussi, de manière beaucoup plus avancée, le fait que certaines structures mathématiques (topos, ∞-topos et consorts) peuvent s’interpréter comme des sortes d’univers mathématiques alternatifs régis par les règles de la logique intuitionniste (techniquement, des « modèles » de cette logique), et que parfois il est plus simple de prouver un théorème en le traduisant à l’intérieur de l’univers et en prouvant cette version traduite de manière intuitionniste.

    Pour pouvoir malgré tout raisonner en théorie des types de manière classique (par opposition à intuitionniste), il suffit de postuler le tiers exclu comme axiome. Du point de vue des programmes, cela revient à rajouter une constante qui est supposée avoir un certain type mais qui n’a pas de définition (cela peut donc rendre les programmes impossibles à exécuter, ce qui est normal pour le tiers exclu).

    Quelques exemples

    Si vous aviez décroché, c’est le moment de reprendre. Parlons un peu des assistants de preuve qui existent. Les plus connus sont :

    • Rocq, anciennement nommé Coq, développé à l’Inria depuis 1989, écrit en OCaml, sous licence LGPL 2.1. Il est assez lié à l’histoire de la théorie des types, car il a été créé par Thierry Coquand comme première implémentation du calcul des constructions, une théorie des types inventée par Coquand et devenue l’une des principales existantes. (Oui, Coq a été renommé en Rocq à cause de l’homophonie en anglais entre « Coq » et « cock ». J’apprécierais que les commentaires ne se transforment pas en flame war sur ce sujet très peu intéressant, merci.)

    • Lean, créé par Leonardo de Moura et développé depuis 2013 chez Microsoft Research, écrit en C++, placé sous licence Apache 2.0.

    • Agda, créé par Ulf Norrell en 1999, écrit en Haskell et sous licence BSD 1-clause.

    • D’autres que je connais moins, notamment Isabelle et F* (liste sur Wikipédia).

    Pour illustrer comment peuvent fonctionner les choses en pratique, voici un exemple très simple de code en Agda :

    open import Agda.Primitive using (Level)
    open import Data.Product using (_×_; _,_)
    
    swap : {ℓ₁ ℓ₂ : Level}  {P : Set ℓ₁} {Q : Set ℓ₂}  P × Q  Q × P
    swap (p , q) = (q , p)

    Vue comme un programme, cette fonction swap inverse simplement les deux éléments d’une paire. Vue comme une preuve, elle montre que pour toutes propositions P et Q, si P et Q, alors Q et P. Comme le veut Curry-Howard, les deux ne sont pas distingués. Les types P et Q sont eux-mêmes dans des types \mathsf{Set}_\ell avec un « niveau » \ell, ceci parce que, pour des raisons logiques, il serait incohérent que le type des types soit de son propre type, donc on a un premier type de types \mathsf{Set}_0, qui est lui-même de type \mathsf{Set}_1, et ainsi de suite avec une hiérarchie infinie de niveaux appelés univers. À un niveau plus superficiel, on remarquera qu’Agda a une syntaxe qui ressemble fort à Haskell (et utilise intensivement Unicode).

    Voilà la même chose en Rocq :

    Definition swap {P Q : Prop} : P /\ Q -> Q /\ P :=
      fun H => match H with conj p q => conj q p end.

    La syntaxe est assez différente et ressemble plutôt à OCaml (normal, vu que Rocq est écrit en OCaml et Agda en Haskell). Mais à un niveau plus profond, on voit apparaître un type Prop dont le nom évoque furieusement les propositions. Or j’avais promis que les propositions seraient confondues avec les types, donc pourquoi a-t-on un type spécial pour les propositions ?

    En réalité, pour diverses raisons, il peut être intéressant de briser l’analogie d’origine de Curry-Howard et de séparer les propositions et les autres types en deux mondes qui se comportent de façon extrêmement similaire mais restent néanmoins distincts. Notamment, un principe qu’on applique sans réfléchir en maths est que si deux propositions sont équivalentes, alors elles sont égales (extensionnalité propositionnelle), mais on ne veut clairement pas ceci pour tous les types (on peut donner des fonctions bool -> int et int -> bool, pourtant on ne veut certainement pas bool = int), donc séparer les propositions des autres permet d’ajouter l’extensionnalité propositionnelle comme axiome. (Mais il y a aussi des différences comme l'imprédicativité dans lesquelles je ne vais pas rentrer.)

    Et voici encore le même code, cette fois en Lean :

    def swap {P Q : Prop} : P  Q  Q  P :=
      fun p, q => q, p

    À part les différences de syntaxe, c’est très similaire à Rocq, parce que Lean a aussi une séparation entre les propositions et les autres types.

    Cependant, en Rocq et Lean, on peut aussi prouver la même proposition de façon différente :

    Lemma swap {P Q : Prop} : P /\ Q -> Q /\ P.
    Proof.
      intros H. destruct H as [p q]. split.
      - apply q.
      - apply p.
    Qed.

    et

    def swap {P Q : Prop} : P  Q  Q  P := by
      intro h
      have p := h.left
      have q := h.right
      exact q, p

    Avec Proof. ou by, on entre dans un mode où les preuves ne sont plus écrites à la main comme programmes, mais avec des tactiques, qui génèrent des programmes. Il existe toutes sortes de tactiques, pour appliquer des théorèmes existants, raisonner par récurrence, résoudre des inégalités, ou même effectuer de la recherche automatique de démonstration, ce qui s’avère extrêmement utile pour simplifier les preuves.

    Ce mode « tactiques » permet aussi d’écrire la preuve de façon incrémentale, en faisant un point d’étape après chaque tactique pour voir ce qui est prouvé et ce qui reste à prouver. Voici par exemple ce qu’affiche Rocq après le destruct et avant le split :

      P, Q : Prop
      p : P
      q : Q
      ============================
      Q /\ P
    

    Cette notation signifie que le contexte ambiant contient les variables P et Q de type Prop ainsi que p une preuve de P (donc un élément du type P) et q une preuve de Q. Le Q /\ P en dessous de la barre horizontale est le but à prouver, c’est-à-dire le type dont on cherche à construire un élément.

    Agda fonctionne assez différemment : il n’y a pas de tactiques, mais il existe néanmoins un système de méta-programmation qui sert à faire de la recherche de preuves (donc contrairement à Rocq et Lean, on n’écrit pas la majeure partie des preuves avec des tactiques, mais on peut se servir d’un équivalent quand c’est utile). Pour écrire les preuves incrémentalement, on met ? dans le programme quand on veut ouvrir une sous-preuve, et Agda va faire le type-checking de tout le reste et donner le contexte à l’endroit du ?.

    Quelques succès de la formalisation

    En 2025, la formalisation reste très fastidieuse, mais elle a déjà eu plusieurs grands succès :

    Actuellement, Lean a réussi à attirer une communauté de mathématiciens qui développent mathlib (1,1 million de lignes de code Lean au moment où j’écris), une bibliothèque de définitions et théorèmes mathématiques qui vise à être la plus unifiée possible.

    Les équivalents dans d’autres assistants de preuve se développent même s’ils ne sont pas (encore) aussi gros : citons mathcomp, unimath, agda-unimath entre autres.

    Un autre grand succès, dans le domaine de la vérification cette fois, est CompCert (malheureusement non-libre), qui est un compilateur C entièrement écrit en Rocq et vérifié par rapport à une spécification du C également encodée en Rocq.

    La recherche en théorie des types

    La théorie des types est un domaine de recherche à part entière, qui vise à étudier du point de vue logique les théories des types existantes, et à en développer de nouvelles pour des raisons à la fois théoriques et pratiques.

    Historiquement, une grande question de la théorie des types est celle de comprendre à quel type doivent correspondre les propositions d’égalité. Par exemple, on veut que deux propositions équivalentes soient égales, et que deux fonctions qui prennent les mêmes valeurs soient égales, et éventuellement pour diverses raisons que deux preuves de la même proposition soient égales, mais s’il est facile d’ajouter toutes ces choses comme axiomes, il est très compliqué de les rendre prouvables sans obtenir, comme avec le tiers exclu, des programmes qui ne peuvent pas s’exécuter à cause des axiomes qui sont déclarés sans définition.

    Vladimir Voedvodsky a fait une contribution majeure en proposant un nouvel axiome, appelé univalence, qui dit très sommairement que si deux types ont la même structure (on peut donner une « équivalence » entre les deux), alors ils sont en fait égaux (résumé simpliste à ne pas prendre au mot). Cet axiome est très pratique pour faire des maths parce qu’on travaille souvent avec des objets qui ont la même structure (on dit qu’ils sont isomorphes), et qui doivent donc avoir les mêmes propriétés, et cet axiome permet de les identifier (même s’il a aussi des conséquences qui peuvent paraître choquantes). Sa proposition a donné naissance à une branche appelée théorie homotopique des types, qui explore les maths avec univalence. Le prix à payer est que les types ne se comprennent plus comme de simples ensembles de valeurs (ou de preuves d’une proposition), mais comme des espaces géométriques munis de toute une structure complexe (techniquement, les égalités sont des chemins entre points, et il y a des égalités non-triviales, des égalités entre égalités, etc.), et la compréhension de ces espaces-types est fondée sur la théorie de l’homotopie. Il y a bien d’autres théories des types, avec univalence ou non : théorie cubique des types, théorie des types observationnelle, etc.

    Conclusion

    J’espère avoir communiqué un peu de mon enthousiasme pour le domaine (dans lequel je suis probablement parti pour démarrer une thèse). Si vous voulez apprendre un assistant de preuve, une ressource assez abordable est la série Software Foundations avec Rocq. Il existe également Theorem proving in Lean 4 et divers tutoriels Agda. Vous pouvez aussi essayer ces assistants de preuve directement dans votre navigateur : Rocq, Lean ou Agda. Et bien sûr les installer et jouer avec : Rocq, Lean, Agda.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Agenda du Libre pour la semaine 9 de l’année 2025

    23 février 2025 à 15:06

    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 37 événements (France: 34, internet: 3) est en seconde partie de dépêche.

    Sommaire

    [FR Montpellier] Émission | Radio FM-Plus | Temps Libre | Diffusion – Le lundi 24 février 2025 de 09h00 à 10h00.

    Montpel'libre réalise une série d’émissions régulières à la Radio FM-Plus intitulées « Temps Libre ». Ces émissions sont la présentation hebdomadaire des activités de Montpel’libre.

    Après le jingle où l’on présente brièvement Montpel'libre, nous donnerons un coup de projecteur sur les activités qui seront proposées prochainement.

    Ces émissions seront l’occasion pour les auditeurs de découvrir plus en détails les logiciels libres et de se tenir informés des dernières actualités sur le sujet.

    Alors, que vous soyez débutant ou expert en informatique, que vous ayez des connaissances avancées du logiciel libre ou que vous souhaitiez simplement en savoir plus, Montpel'libre, au travers de cette émission, se fera un plaisir pour répondre à vos attentes et vous accompagner dans votre découverte des logiciels libres, de la culture libre et des communs numériques.

    Vous vous demandez peut-être ce qu’est un logiciel libre. Il s’agit simplement d’un logiciel dont l’utilisation, la modification et la diffusion sont autorisées par une licence qui garantit les libertés fondamentales des utilisateurs. Ces libertés incluent la possibilité d’exécuter, d’étudier, de copier, d’améliorer et de redistribuer le logiciel selon vos besoins.

    Inscription | GPS 43.60524/3.87336

    Fiche activité:
    https://montpellibre.fr/fiches_activites/Fiche_A5_017_Emission_Radio_Montpellibre_2024.pdf

    [internet] Mapathon 2024-2025 par CartONG – Le lundi 24 février 2025 de 18h00 à 20h00.

    Vous voulez vous engager pour une cause, rencontrer de nouvelles personnes et découvrir la cartographie participative et humanitaire? CartONG vous invite à participer à un ou plusieurs mapathons en ligne! 🗺️​💻​

    Venez cartographier les régions encore absentes des cartes pour soutenir les organisations humanitaires et de solidarité internationale qui ont besoin de cartes précises et à jour pour agir plus efficacement en cas de crise ou initier des projets de développement local.

    Les ateliers de cartographie sont organisés dans le cadre du projet Missing Maps, qui a pour objectif de cartographier de façon préventive les régions vulnérables aux catastrophes naturelles, crises sanitaires, environnementales, aux conflits et à la pauvreté. On peut penser qu’aujourd’hui toutes les parties du monde sont cartographiées, mais en réalité de nombreuses régions ne possèdent encore aucune carte!

    🤔​ Pour qui? Pas besoin d’être un·e expert·e, les ateliers sont accessibles à tout le monde!

    📌​ Où ? 100% en ligne! Un lien de connexion vous sera envoyé après votre inscription

    🖱️​ Comment? Avec la plateforme de cartographie libre et contributive OpenStreetMap (OSM, le «Wikipédia des cartes») tout le monde peut participer à la cartographie de n’importe quelle zone de la planète: il suffit d’un ordinateur, d’une souris et d’une connexion internet! Accessibles à tout·es, nous serons là pour vous accompagner pour vos premiers pas avec OSM.

    Le programme des mapathons

    18h00: Introduction, présentation de la cartographie collaborative et solidaire et démonstration OSM pour les nouveaux·elles

    18h30: On cartographie tous ensemble sur un projet

    20h00: Fin du mapathon, conclusion sur les contributions de la soirée

    Pour s’inscrire c’est par ici

    Si vous avez besoin de plus d’info, vous pouvez nous contacter directement à l’adresse suivante: missingmaps@cartong.org

    [FR Saint-Étienne] OpenStreetMap, rencontre Saint-Étienne et sud Loire – Le lundi 24 février 2025 de 19h00 à 21h00.

    Depuis la rentrée 2023, les temps de rencontre autour d’OpenStreetMap sont relancés.

    L’occasion de se rencontrer (ou de se retrouver), d’échanger sur OpenStreetMap et de lancer des projets en commun.

    [internet] Émission «Libre à vous!» – Le mardi 25 février 2025 de 15h30 à 17h00.

    L’émission Libre à vous! de l’April est diffusée chaque mardi de 15 h 30 à 17 h sur radio Cause Commune sur la bande FM en région parisienne (93.1) et sur le site web de la radio.

    Le podcast de l’émission, les podcasts par sujets traités et les références citées sont disponibles dès que possible sur le site consacré à l’émission, quelques jours après l’émission en général.

    Les ambitions de l’émission Libre à vous!

    Découvrez les enjeux et l’actualité du logiciel libre, des musiques sous licences libres, et prenez le contrôle de vos libertés informatiques.

    Donner à chacun et chacune, de manière simple et accessible, les clefs pour comprendre les enjeux mais aussi proposer des moyens d’action, tels sont les objectifs de cette émission hebdomadaire.

    L’émission dispose:

    [FR Vallauris – Sophia Antipolis] Rencontre Accès Libre – Le mardi 25 février 2025 de 18h00 à 21h00.

    Rencontres Accès Libre

    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…

    Entre autres, c’est l’occasion de:

    • discuter, échanger, expliquer;
    • installer des logiciels libres;
    • et, toute autre idée coopérative de solidarité à but non lucratif!

    C’est un évènement organisé conjointement par Linux Azur et le SHL.

    [FR Pau] Assemblée générale de l’association PauLLA – Le mardi 25 février 2025 de 19h00 à 22h00.

    L’association PauLLA organise son assemblée générale annuelle le mardi 25 février 2025 à Pau.

    Si vous voulez découvrir l’association, rencontrer ses membres et échanger avec le bureau, c’est le meilleur moment de l’année. Rejoignez-nous pour promouvoir le logiciel libre à Pau et dans les environs.

    Toutes les infos sont sur cette page: https://www.paulla.asso.fr/Evenements/assemblee-generale-paulla-2025

    Au plaisir de vous rencontrer !

    [FR Lille] Permanence associative autour du Libre – Le mardi 25 février 2025 de 20h00 à 22h00.

    Vous avez décidé de reprendre en main votre vie numérique? Venez nous rencontrer le dernier mardi de chaque mois au Café Citoyen à Lille!

    La permanence associative autour du Libre est une manifestation conviviale, ouverte à toutes et tous, organisée le dernier mardi (ou jeudi) de chaque mois par les collectifs de Chtinux (Raoull, Deuxfleurs, Mycélium, CLX, Cliss XXI…).

    Rejoignez-nous pour y discuter joyeusement de Logiciel Libre, de Culture Libre, de données ouvertes (open data), de bidouille sous Linux, ou proposer vos idées d’évènements.

    C’est aussi l’occasion d’obtenir un coup de main si vous rencontrez une difficulté sous Linux, ou si vous avez besoin de conseils pour migrer sur du Logiciel Libre.

    Si vous venez avec votre ordinateur pour obtenir de l’aide technique, pour permettre à l’équipe bénévole de s’organiser, prévenez-nous via un courrier électronique à l’adresse: chtinux-diffusion CHEZ deuxfleurs POINT fr.

    Le Café Citoyen est accessible en métro (station République – Beaux Arts). Une connexion Internet y est disponible, des prises électriques, de la place… Au bar, vous trouverez aussi de bonnes boissons avec et sans alcool, ainsi que de la petite restauration (notamment fromage ou tartines véganes).

    Pour soutenir le Café Citoyen, nous vous demandons d’y acheter au minimum une consommation. Après avoir pris votre boisson ou votre en-cas au bar, vous pouvez nous rejoindre directement au deuxième étage.

    Au plaisir de vous retrouver!

    [internet] Permanence numérique (visio) – Le mardi 25 février 2025 de 20h00 à 21h30.

    L’association Ailes-52 tient sa permanence numérique tous les mardis à 20h.

    Pour les adhérents ou visiteurs curieux, qui souhaitent:

    • trouver des réponses à vos questions concernant les logiciels libres?
    • utiliser et découvrir des logiciels libres et respectueux de la vie privée?
    • gagner en autonomie numérique, à votre rythme avec des outils libres?

    Alors venez nous rencontrer et discuter lors de cette permanence.

    • rendez-vous est donné aux participants à 20h à l’adresse: https://visio.chapril.org/ailes52-permanence-web

    • Un temps d’accueil et de présentation sera consacré aux participants, à l’identification des thématiques que chacun souhaite aborder, au temps à y consacrer et aux éventuels groupes de travail à constituer

    • ~ 20h30 à 21h30: séance de travail sur les thématiques identifiées avec échanges sur la fin d’atelier

    La séance de travail se terminera au maximum à 21h30, le salon restera disponible pour des échanges éventuels entre les participants sans les animateurs.

    Ailes-52 est une association loi 1901 reconnue d’intérêt général.

    L’atelier est animé par des bénévoles de l’association.

    [FR Le Mans] Permanence du mercredi – Le mercredi 26 février 2025 de 12h30 à 17h00.

    Assistance technique et démonstration concernant les logiciels libres.

    Il est préférable de réserver votre place à contact (at) linuxmaine (point) org

    Planning des réservations consultableici.

    [FR Le Blanc] Ateliers “Libres” – Le mercredi 26 février 2025 de 14h00 à 14h00.

    Échanger sur Linux et les Logiciels Libres,
    Acheter un ordinateur reconditionné,
    Gérer mes contacts sur mon ordiphone et mon PC,
    Installer/configurer un logiciel libre sous Linux,
    Configurer une imprimante/scanner,
    Essayer une distribution Linux,
    Installer GNU/Linux sur mon ordi c’est possible ?

    [FR Le Blanc] Ateliers “Libres” de Linux au Blanc – Le mercredi 26 février 2025 de 14h00 à 17h00.

    [FR Pessac] Cours gratuit d’Espéranto, langue Libre – Le mercredi 26 février 2025 de 17h30 à 19h00.

    Cours d’espéranto tous les mercredis de 17h30 à 19h,

    Université Bordeaux Montaigne,
    Esplanade des Antilles,
    Domaine Universitaire
    33600 Pessac

    Les cours sont animés par Elvezio & Jean-Seb. Ils sont totalement gratuits et sans droits d’inscription à la fac, 100% gratuits.

    Veuillez contacter le 06 72 17 22 97 avant votre venue afin de connaître la salle ou pour plus d’informations.

    [FR Vandœuvre-lès-Nancy] Réunion OpenStreetMap – Le mercredi 26 février 2025 de 18h00 à 20h00.

    Le groupe local Nancy de l’association OpenStreetMap France vous propose de participer aux réunions mensuelles ouvertes à tou·te·s !

    Avec OpenStreetMap, participez à la construction d’une carte en ligne libre et gratuite, partagée avec le monde entier!

    Participation aux ateliers

    Le lieu la Fabrique des possibles nous est librement accessible lors de nos réunions.

    Si vous souhaitez participer à distance, cela est possible depuis ce lien. Toutefois merci de nous en avertir pour que nous nous organisions en nous équipant et installant le matériel nécessaire.

    [FR Beauvais] Sensibilisation et partage autour du Libre – Le mercredi 26 février 2025 de 18h00 à 20h00.

    Chaque mercredi soir, l’association propose une rencontre pour partager des connaissances, des savoir-faire, des questions autour de l’utilisation des logiciels libres, que ce soit à propos du système d’exploitation Linux, des applications libres ou des services en ligne libres.

    C’est l’occasion aussi de mettre en avant l’action des associations fédératrices telles que l’April ou Framasoft, dont nous sommes adhérents et dont nous soutenons les initiatives avec grande reconnaissance.

    [FR Simandre] Causerie numérique – Le mercredi 26 février 2025 de 18h00 à 20h00.

    Nous poursuivons ces rencontres et vous proposons d’échanger
    autour de nos outils numériques quotidiens et des alternatives possibles.

    [FR Parempuyre] Participez au prochain ĞBlabla – Le mercredi 26 février 2025 de 18h30 à 22h30.

    Participez au prochain Ĝblabla à Parempuyre (33)

    🥁 Dans le (joli) cadre des rencontres mensuelles du ĞBlabla en Gironde, donnons-nous cette fois rendez-vous à Parempuyre (33), le 26 février 2025 à partir de 18:30 et jusqu’à 22:00/22:30, pour des questions/réponses sur la Monnaie Libre Ğ1 et sur la Monnaie Locale la Gemme, pour des découvertes de Cesium, des certifications… et bien sûr, pour manger et boire ce que nous apporterons !

    L’adresse exacte vous sera donnée lors de votre inscription – alors vous savez ce qu’il vous reste à faire 😀 À bientôt !

    [FR Saint Laurent du Pont] Permanence Rézine Chartreuse – Le mercredi 26 février 2025 de 19h00 à 20h00.

    Rézine est un fournisseur d’accès à Internet qui défend une vision politique des technologies et des réseaux. Pour cela, Rézine met notamment en œuvre un accès Internet local, à prix juste, respectant la neutralité du Net, piloté par ses usagères et usagers, dans une démarche émancipatrice.

    Nous fournissons Internet via la fibre, via wifi (radio) et proposons également des VPN.

    Par ailleurs, fournir une critique du numérique, et en particulier des réseaux, est une activité inhérente à notre activité de fournisseur d’accès à Internet, que nous avons affirmée dans l’objet de la structure. Nous inscrivons notre démarche dans une tradition d’éducation populaire, qui vise à contribuer à l’émancipation des personnes, dans leur rapport aux technologies et aux réseaux, quel que soit leur niveau de connaissance.

    Venez nous rencontrer pour discuter, devenir membre, poser vos questions sur la fibre, sur Internet, ou juste par curiosité!

    [FR Montpellier] Permanence | OpenStreetMap | HérOSM (hybride) – Le mercredi 26 février 2025 de 19h00 à 22h00.

    Ces rencontres mensuelles se veulent être des instants conviviaux pour faire un compte-rendu des activités du mois précédent, mais aussi pour présenter les opérations et rendez-vous à venir que proposent les groupes HérOSM. Naturellement, elles sont également ouvertes à tout public, en présence et à distance.

    Si vous avez des propositions n’hésitez pas à compléter la page dédiée.

    Programme:

    • Contribution sur les points d’eau incendie de l’Hérault;
    • Poursuite du Mapathon humanitaire au Nigeria et au Togo:
    • Cartographie «Au fil de l’eau» à Gusau (Capitale de l’État de Zamfara, au Nigeria)
    • Cartographie du canton de Barkoissi (Région des Savanes au Togo)
    • Cartographie du village de Konohoué (Région des Plateaux au Togo)
    • Cartographie du village de Djeregou (Région de la Kara au Togo)

    Déroulement de la rencontre
    Nous vous présenterons les projets en cours, nous vous proposerons de contribuer, faire de la production de données.
    Comme d’habitude, chacun amène ce qu’il veut à manger et à boire pour un repas partagé.
    N’oubliez pas vos ordinateurs portables pour la séance de saisie!

    Tramway lignes 1 et 3, arrêts Port-Marianne et Rives du Lez
    GPS Latitude: 43.603095 | Longitude: 3.898166
    Carte OpenStreetMap

    [FR Joué-lès-Tours] Atelier du Libre – Le jeudi 27 février 2025 de 13h30 à 16h00.

    Programmation des Ateliers du Libre 2025

    De janvier à mai 2025, Résoudre vous propose 6 ateliers numériques de 3 séances pour découvrir les logiciels libres (gratuits).

    Télécharger l’affiche ici!

    TRAITEMENT DE TEXTE

    TABLEAU DE CALCUL

    DIAPORAMA

    TRAITEMENT VIDEO

    RETOUCHE PHOTO

    MIXAGE AUDIO

    OUVERT TOUT PUBLIC, Inscrivez-vous à l’accueil.

    Participation sous forme d’adhésion 10 € par atelier de 3 séances.

    Télécharger ici la programmation «Ateliers du Libre 2025»

    [FR Sète] Permanence | GNU/Linux et Logiciels Libres – Le jeudi 27 février 2025 de 18h00 à 20h00.

    Dans le cadre des JPO, La Palanquée en fête.

    Venez découvrir Linux et vous faire aider pour l’installer et à la prise en main, dans différents lieux, dans et à proximité de la métropole montpelliéraine

    L’équipe de Montpel’libre vous propose une permanence Logiciels Libres : discussions libres et accompagnements techniques aux systèmes d’exploitation libres pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien.

    Le contenu de l’atelier s’adapte aux problèmes et aux questionnements des personnes présentes avec leur(s) ordinateur(s), qu’il soit fixe ou portable, et permet ainsi l’acquisition de nouvelles compétences nécessaires à une autonomie numérique certaine, au rythme de chacun.

    Les thèmes :
    Vous pourrez y aborder plusieurs thèmes (liste non exhaustive) :

    • discussions conviviales entre utilisateurs autour de Linux en général ;
    • pré-inscription aux prochains Cafés Numériques et Linux-Party ;
    • premières explorations du système ;
    • installations et configurations complémentaires ;
    • mise à jour et installation de nouveaux logiciels ;
    • prise en main, découverte et approfondissement du système

    Les permanences techniques ont lieu une fois par semaine, dans un lieu et à des jours et heures différents.

    Entrée libre et gratuite sur inscription. Une simple adhésion à l’association est possible. Rejoindre le groupe Montpel’libre sur Telegram S’inscrire à la Newsletter de Montpel’libre.

    Sur inscription | GPS 43.405195/3.695778

    Fiche activité: https://montpellibre.fr/fiches_activites/Fiche_A5_002_Permanence_GNU-Linux_Montpellibre_2024.pdf

    [FR Toulouse] Repas du Libre – Le jeudi 27 février 2025 de 20h30 à 23h00.

    Le groupe d’utilisateurs de logiciels libres de Toulouse Toulibre en collaboration avec Tetaneutral.net fournisseur d’accès internet et hébergeur libre proposent aux sympathisants de se retrouver l’un des mardis ou jeudis de chaque mois pour échanger autour des logiciels libres, des réseaux libres, discuter de nos projets respectifs et lancer des initiatives locales autour du Libre. Ce repas est ouvert à tous, amateurs de l’esprit du Libre, débutants ou techniciens chevronnés.

    Ce Qjelt aura lieu le jeudi 27 février 2025 à 20h30, au restaurant la Paniolade situé au 146 Boulevard de Suisse à Toulouse. C’est à proximité des ponts jumeaux et des minimes, et donc accessible par bus ou métro même tard le soir (bus 16 ou métro B en marchant un peu). Il n’y a pas de formule prévue, c’est à la carte : pizzas, viandes, poissons, salades…

    Pour des raisons de logistique, une inscription préalable avant la veille est demandée sur toulibre.org/qjelt

    [FR Quimperlé] Point info GNU/Linux – Le vendredi 28 février 2025 de 13h30 à 17h30.

    Médiathèque de Quimperlé, place Saint Michel, pas d’inscription, entrée libre !

    Mickaël, Johann, Alain, Pierre, et Yves vous accueillent (ou l’un d’eux, on se relaie !).

    Conseils, aide et infos pratiques GNU/Linux et Logiciels Libres.

    Curieux ? Déjà utilisateur ? Expert ? Pour résoudre vos problèmes, vous êtes le bienvenu ; pas besoin de prendre rendez-vous !

    N’hésitez pas à venir avec votre PC si vous voulez une installation de GNU/Linux ou de venir avec votre périphérique récalcitrant (imprimante, scanner…) si possible.

    [FR Lyon] Permanence contre l’obsolescence – Le vendredi 28 février 2025 de 16h00 à 18h30.

    On vous accueille tous les premiers mercredi du mois de 16h à 18h30 à la Maison de l’Économie Circulaire 36 cours général giraud 69001 Lyon (Maison qui se situe dans le parc des Chartreux)

    Conseil et aide à la réparation:
    On vous accompagne dans l’entretien, la réparation ou le reconditionnement de votre ordinateur Vente d’ordinateurs à prix solidaires:
    Ordinateurs fixes et portables à petit prix reconditionnés par nos soins sous Linux Reconditionnement solidaire:
    Vous aimez bidouiller des ordis ? Venez nous filer un coup main ! Ouvert à tous et à toutes sans inscription

    Pour toutes questions: contact@eisenia.org

    [FR Toulon] Install Partie Linux – Le vendredi 28 février 2025 de 17h00 à 21h00.

    Dans le cadre de son animation "Répar'Café", l'Alternativ', Tiers Lieu Numérique

    Propose une présentation du système informatique gratuit et sécurisé,
    capable de régénérer un vieil ordinateur.

    Pour installer des logiciels libres sur sa machine personnelle en se faisant conseiller
    et aider par des membres du groupe d’utilisateurs.

    Pour tous: grands débutants et curieux, connaisseurs et experts sont bienvenus !

    Ordinateurs à disposition pour découvrir.

    [FR Annecy] Réunion hebdomadaire AGU3L Logiciels Libres – Le vendredi 28 février 2025 de 20h00 à 23h59.

    L’AGU3L Logiciels Libres à Annecy votre association se réunit tous les vendredis à partir 20h00 et jusque vers 1h00 du matin. Passez quand vous voulez.

    Entrée par le côté, entre les 2 bâtiments la MJC le Cairn et la maison des associations. La salle est au fond du couloir à droite, là où il y a de la lumière.

    ⚠️ Vérifiez sur le site avant de vous déplacer, y a un bandeau en haut qui confirme bonne la tenue de la réunion.

    Le programme de la réunion, s’il y en a un, est sur notre site. 😉 ⬇️

    Ou sur Mastodon https://piaille.fr/@agu3l

    Digression du programme possible, voire probable.

    Vous pouvez aussi nous soumettre un ou plusieurs sujets de programme:

    Exemples:

    • Libre Office les listes à puces, j’aimerais en savoir plus

    • Pouvez-vous nous présenter le système Linux pour les débutants ?

    • plus technique: recompiler un noyau Linux avec les options spécifiques

    • Kubernetes est-ce pour moi ?

    • Démo sur un logiciel libre en particulier ex: Gimp, flameshot

    • Ou même votre logiciel que vous souhaitez partager

    • À l’aide ! 😱 pas de panique, on a probablement une solution pour vous.

    • Vous développez du code libre ? oui

    • etc, etc.

    Apportez à boire, à manger. Un ordi ça peut aider. De la bonne humeur et un brin de Liberté.

    Et tout ce que vous trouvez sympa: des amis, des projets, des trouvailles, etc.

    Besoin d’une installation Linux?

    Pas de problème! Laissez-nous un petit message avant au cas où l’on soit pas dispo ce soir-là.

    C’est install party à la demande !

    [FR Marignier] Utilisation d’internet – Le samedi 1 mars 2025 de 09h00 à 12h00.

    Utilisation d’internet sans flicage et efficacement

    DNS, adresse internet, continuer sans accepter, sécurisé, flicage, fake news, réseaux sociaux, adresse IP, chercher une recette de soupe à l’oignon, d’aïoli ou de Jalebi facile.

    Être sur internet sans maitriser quelques notions de base c’est faire du vélo sans chaine sur l’autoroute.

    Pour mettre tout ça au clair, tous les Samedis du 18 janvier 2025 au 8 mars 2025, de 9h à 12h, Micro Môle organise des ateliers pour tout âge et tout niveaux.

    Il est conseillé de suivre dans l’ordre chacun des ateliers, mais vous pouvez venir en cours de saison.

    Ouvert à tous les niveaux, dès 14 ans jusqu’à 110 ans.

    Laquadrature du net, vous connaissez?

    Animé par le 'collectif les fous du code'.

    [FR Contamine sur Arve] Bidouille Informatique – Le samedi 1 mars 2025 de 09h00 à 12h00.

    Le rendez-vous mensuel pour partager nos connaissances et échanger nos savoirs du monde du numérique.
    Le 1ᵉʳ Samedi dès 9h00 à 12h00

    [FR Vanves] Portes ouvertes – Installations – Dépannages – Le samedi 1 mars 2025 de 09h30 à 18h00.

    Le premier samedi de chaque mois (sauf août et septembre), de 9h30 à 18h, nous organisons une journée porte ouverte pour présenter notre association et son but.

    Lors de cette journée vous êtes invités à venir nous rencontrer pour découvrir les possibilités des logiciels libres.

    Venez avec vos questions, vos souhaits, vos matériels, nous verrons ensemble comment y répondre.

    Nous acceptons le don de Matériels informatique (surtout portables), Tablette et Smartphone, de préférence avec leur alimentation / chargeur.

    Le Wiki pour vous aider à passer au Libre: https://wiki.llv.asso.fr/doku.php

    Pour le déjeuner, une participation vous sera demandé.

    IMPORTANT: Lisez la "Préparation pour l’installation": https://wiki.llv.asso.fr/doku.php?id=wiki:installer:preparation_installation

    Localisation précise: https://www.openstreetmap.org/note/4365747

    Proche du Métro (13) Malakoff Plateau de Vanves (à 5 minutes)

    [FR Figeac] Café bidouille, réparation informatique – Le samedi 1 mars 2025 de 10h00 à 13h00.

    Cet atelier convivial d’auto-réparation et d’entretien des appareils électriques, électroniques et informatiques a pour objectif de les faire durer, réduire les déchets et nous rendre plus autonomes face aux technologies.

    Tu n’oses pas ouvrir ton grille-pain ou ton mixer en panne ? Ton écran de smartphone est cassé ? Ton ordinateur devient très très lent ?

    À l’aide de multimètre, tournevis et d’outils informatiques libres, on s’entraide et on trouve la solution ensemble.

    Cet atelier est gratuit et ouvert à tous, que tu sois un bricoleur qui souhaite aider ou que tu aies besoin d’être aidé.

    Attention, tous les intervenants sont bénévoles et il n’y a aucune garantie de succès, mais nous pourrons t’orienter vers des professionnels en cas de besoin.

    En attendant ce rendez-vous, tu peux consulter les fiches informatiques de l’atelier numérique des 3L: ricochets-figeac.fr

    Tous les premiers samedis du mois et le vendredi après-midi qui suit.

    [FR Ivry sur Seine] Cours de l’École du Logiciel Libre – Le samedi 1 mars 2025 de 10h30 à 18h30.

    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.

    Comme toutes les écoles, son rôle est d’apprendre à ses élèves les logiciels libres, c’est-à-dire:

    • comment en trouver de bons parmi les nombreux sites qui en proposent,
    • comment en prendre possession en fonction des licences,
    • comment les installer en fonction de ses besoins,
    • comment les tester et les utiliser,
    • comment en comprendre le fonctionnement pour ensuite les modifier,
    • comment écrire ses propres logiciels libres.

    En fait, l’école du logiciel libre est une université populaire, comme celles qui ont vu le jour en France à partir du 19ᵉ siècle, et dont le but est de transmettre des connaissances théoriques ou pratiques à tous ceux qui le souhaitent. Et pour atteindre ce but, sa forme juridique est de type « association à but non lucratif ».

    Comment fonctionne l’école?

    Cette école étant une association, elle possède, comme toutes les autres, un bureau, élu chaque année en assemblée générale, pour l’administrer. Mais elle a aussi des responsables pédagogiques dont le rôle est essentiel, car ce sont eux qui établissent les programmes des cours en fonction des souhaits des adhérents, valident les candidatures des enseignants et affectent les sessions.

    Les membres du bureau et les responsables pédagogiques forment « l’encadrement de l’école ». Tous les membres “encadrants” doivent être membres de l’association.

    Les locaux où se déroulent les cours seront ceux que l’on veut bien nous prêter: une salle des fêtes, un théâtre, une salle de réunion publique, un amphi dans une école publique, ou autre.

    Les thèmes des cours sont définis par les adhérents en fonction de leurs envies, de leurs besoins. Les cours sont ensuite décidés par les responsables pédagogiques de l’école en fonction des enseignants disponibles.

    Afin de permettre au plus grand nombre de participer et d’assister aux cours, les sessions se tiennent essentiellement le samedi. Une première, sous forme d’atelier public, de 10h30 à 13h, et une autre, sous forme de cours, de 14h30 à 18h30.

    Programme détaillé sur le site http://e2li.org

    [FR Rennes] Atelier Pixel Quest – Le samedi 1 mars 2025 de 14h00 à 17h00.

    Créer sa BD interactive en 7 étapes. Session 5.

    Rassemblez le scénario, les assets et l’interface pour préparer votre BD.

    [FR Rennes] Atelier Pixel Quest – Le samedi 1 mars 2025 de 14h00 à 17h00.

    Créer sa BD interactive en 7 étapes. Session 6.

    Découvrez le Sound Design.

    [FR Le Mans] Permanence mensuelle du samedi – Le samedi 1 mars 2025 de 14h00 à 18h00.

    Assistance technique et démonstration concernant les logiciels libres.

    Attention, réservez votre place par contact (at) linuxmaine.org

    Planning des réservations consultableici.

    [FR Quimper] Permanence Linux Quimper – Le samedi 1 mars 2025 de 16h00 à 18h00.

    Tous les samedis de 16h à 18h, Linux Quimper vous donne rendez-vous au centre social des Abeilles, 4 rue Sergent Le Flao (quartier de la Terre Noire) Quimper.

    Nous vous proposons lors de ces rencontres d’échanger autour du Libre et de Linux en particulier

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

    Recommandations:

    • Sauvegardez vos données avant de venir.
    • Pour une installation de Linux si vous voulez conserver Windows, libérez de la place sur le disque dur (20 Go minimum) et défragmentez Windows.
    • Nous prévenir, éventuellement, de votre passage via le forum.

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

    [FR Vire] Atelier Cartographie participative – Le samedi 1 mars 2025 de 17h00 à 19h00.

    Samedi 1ᵉʳ mars #AtelierLibre #Cartographie Participative, entre 17h et 19h à la Maison du temps libre de Saint Martin de Tallevende, #Vire #Normandie.

    L’objectif est de se familiariser avec la cartographie participative et d’apporter sa contribution sur un projet concret sur Vire, avec #JOSM, un éditeur de données d’OpenStreetMap.

    Cet atelier permettra d’apprendre à contribuer individuellement pour corriger facilement des manques ou compléter des informations sur #OpenStreetMap.

    [FR Montigny Le Bretonneux] Soirée Cult' : Plongée dans l’univers du hacking – Le samedi 1 mars 2025 de 19h00 à 20h30.

    Samedi 1ᵉʳ mars 2025 | à 19h | Médiathèque du CanalQuai François Truffaut, 78180 Montigny-le-Bretonneux
    Plongez dans l’univers fascinant des hackers à travers des extraits cultes de films et séries ! Véritables génies de l’ombre ou légendes amplifiées par Hollywood ? Entre réalités techniques et fantasmes cinématographiques, nos experts décrypteront avec vous les mythes et enjeux de la cybersécurité.

    Démos, quiz, débats, popcorn et convivialité pour une soirée immersive !
    Que vous soyez passionné d’informatique, curieux ou cinéphile, cette soirée unique est faite pour vous. Venez échanger et explorer ce monde mystérieux dans une ambiance décontractée.

    Entrée libre – Venez avec vos questions et votre curiosité !

    Lien médiathèque :
    https://e-mediatheque.sqy.fr/Default/doc/CALENDAR/7478/soiree-cult-au-canal

    pour venir:

    RER C
    Lignes N et U

    Pour en savoir plus:
    https://root66.net/?post/2025/02/20/Soir%C3%A9e-Cult%E2%80%99-plong%C3%A9e-dans-l%E2%80%99univers-du-hacking-%3A-Dans-l%E2%80%99%C5%93il-des-experts

    [FR Gaillac] Repair café – Le dimanche 2 mars 2025 de 10h00 à 13h00.

    Repair café, atelier informatique, etc.

    Tous les premiers dimanches du mois à “Mosaïque”.

    • Mosaïque, 7 rue Marcellin Berthelot, Gaillac, Occitanie, France

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Linus Torvalds clarifie sa position concernant l'intégration du code Rust dans le noyau Linux, affirmant qu'il n'est pas question d'imposer Rust aux mainteneurs qui ne souhaitent pas travailler avec ce langage

    23 février 2025 à 14:23
    Face à la polémique, Linus Torvalds clarifie sa position concernant l'intégration du code Rust dans le noyau Linux,
    affirmant qu'il n'est pas question d'imposer Rust aux mainteneurs qui ne souhaitent pas travailler avec ce langage

    Dans une récente discussion au sein de la communauté du noyau Linux, Linus Torvalds a clarifié sa position concernant l'intégration du code Rust dans le noyau, en réponse aux objections de certains mainteneurs. Cette intervention fait suite aux préoccupations exprimées...

    Au café libre - « Libre à vous ! » du 11 février 2025 - Podcasts et références

    Deux-cent trente-cinquième émission « Libre à vous ! » de l’April. Podcast et programme :

    • sujet principal : Au café libre, débat autour de l’actualité du logiciel libre et des libertés informatiques
    • chronique Que libérer d'autre que du logiciel sur les 10 ans d'Antanak
    • chronique Le truc que (presque) personne n’a vraiment compris mais qui nous concerne toutes et tous de Benjamin Bellamy, intitulée « La guerre des IA »
    • quoi de Libre ? Actualités et annonces concernant l'April et le monde du Libre

    Rendez‐vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 FM en Île‐de‐France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.

    Mardi 25 février 2025, notre sujet principal portera sur le réseau français des FabLabs. Si vous avez des questions, n’hésitez pas à les mettre en commentaires de cette dépêche.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Le mainteneur du pilote graphique Nouveau du noyau Linux se retire du projet en évoquant « un environnement non inclusif et toxique », tandis que le désaccord sur l'ajout de Rust dans le noyau se poursuit

    22 février 2025 à 19:45
    Le mainteneur du pilote graphique Nouveau du noyau Linux se retire du projet en évoquant « un environnement non inclusif et toxique »
    tandis que le désaccord sur l'ajout de Rust dans le noyau se poursuit

    La communauté du noyau Linux semble se déchirer ces derniers mois. Entre autres, l'on assiste à des tensions entre les factions au sein de la communauté du noyau et à des démissions très médiatisées. La dernière personne en date à avoir quitté le projet est Karol Herbst ; il était chargé du pilote...

    ❌