Linux
LinuxFr.org
FOSDEM 2027 : les appels à conférences sont ouverts et les archives numériques ont leur devroom ! il y a 20h

Ça n'a pas dû échapper à une bonne partie des Linuxfrisés, le FOSDEM 2027 se tiendra samedi 30 et dimanche 31 janvier 2027, sur le campus de l'Université libre de Bruxelles (ULB). L'appel à conférences du programme principal est ouvert jusqu'au 16 novembre, et les 77 devrooms sélectionnées il y a quelques jours ont déjà commencé à leur tour à recruter des intervenants. Parmi ces dernières, et en tant qu'ambassadeur du projet Software Heritage, j'aimerai mettre en valeur la devroom Archives, Libraries, and Digital Memory qui propose notamment de discuter des infrastructures nécessaires à la préservation de notre patrimoine numérique.

Pour ceux qui l'ignorent, le FOSDEM a une particularité : les devrooms (ce que d'aucuns appellent des tracks, ou sessions en bon français) sont organisées de manière indépendante par les communautés elles-mêmes. Les organisateurs du FOSDEM font un appel à Devrooms et une fois sélectionnées, l'équipe qui a vu sa Devroom retenue a une grande autonomie et est responsable de son propre appel à participation et de la construction de son programme.

Et comme chaque année, l'accès au FOSDEM est gratuit. Pas de billet à acheter pour venir écouter des conférences, retrouver des contributeurs ou troller débattre de vos distros et/ou éditeur préféré autour d'un jus de houblon.

Sommaire

Le programme principal cherche ses conférences

Le 5 octobre dernier, les organisateurs du FOSDEM ont publié leur appel à conférences pour le programme principal (Main Track).

Ces conférences s'adressent à un public assez large, au-delà des communautés techniques réunies dans les différentes devrooms. Elles peuvent porter sur des sujets transversaux, des problématiques communes aux projets libres ou des questions qui méritent une salle plus grande.

Pas besoin pour autant d'éviter les sujets techniques : les organisateurs recherchent aussi bien des présentations pointues que des réflexions plus générales intéressant les communautés du logiciel libre.

Quelques informations pratiques :

  • Deux formats possibles : 25 ou 50 minutes, questions comprises.
  • Les présentations doivent être en anglais et porter sur les logiciels libres ou open source.
  • Les enregistrements, supports de présentation et autres contenus fournis seront publiés sous licence CC BY.
  • Date limite de soumission : 16 novembre 2026.

Les propositions sont à déposer sur leur plateforme de soumission du FOSDEM (basée du Pretalx).

77 devrooms sélectionnées

Le 21 octobre, les organisateurs ont annoncé les devrooms retenues. Sur 128 propositions, 77 ont été sélectionnées. Ces salles thématiques, organisées directement par les communautés donc, constituent une part importante du FOSDEM. On y retrouve des sujets historiques comme notre noyau préféré, les distributions, PostgreSQL, Rust ou la virtualisation, mais aussi des sujets plus d'actualité autour de la souveraineté numérique, de l'accessibilité, de la recherche ouverte ou des communications décentralisées (aka le Fediverse).

La plupart des appels à participation sont maintenant ouverts. Attention : chaque devroom possède son propre calendrier et ses propres modalités de soumission.

Coup de projecteur sur « Archives, Libraries, and Digital Memory »

Full disclosure : je suis ambassadeur de Software Heritage, le projet qui vise à collecter, préserver et rendre accessible le code source des logiciels. C'est une des raisons pour laquelle je souhaite mettre en avant cette devroom, organisée avec Software Heritage et d'autres initiatives de préservation numérique (https://Safeguar.de / https://SciOp.net et https://ecosyste.ms).

La devroom Archives, Libraries, and Digital Memory s'intéresse à une question souvent moins visible que le développement de nouveaux logiciels (ou de leur maintenance, elle aussi parfois négligée, mais c'est un autre sujet) : comment préserver durablement les ressources numériques et permettre aux générations futures d'y accéder ?

Codes sources, logiciels, publications scientifiques, collections numériques, documents historiques… Ces ressources ne resteront accessibles que si nous disposons des formats, des outils, des infrastructures et des compétences nécessaires pour les conserver. L'enjeu dépasse donc largement la simple sauvegarde de fichiers. Préserver une ressource implique de pouvoir la retrouver, vérifier son intégrité, comprendre son contexte et assurer son accessibilité dans la durée.

Et les logiciels libres ont évidemment un rôle à jouer : formats ouverts, infrastructures maîtrisées, outils réutilisables et possibilité de maintenir les logiciels sans dépendre exclusivement d'un fournisseur.

La devroom se tiendra le samedi 30 janvier 2027, de 15h à 19h CET.

Une table ronde et deux types de présentation

La devroom s'articulera autour d'une table ronde intitulée « Managing Infrastructure for Archives and Libraries » (Gérer les infrastructures informatiques des archives et des bibliothèques en bon français). Et les sujets de discussion possibles ne manquent pas : stockage à long terme, réplication, supervision, intégrité des données, gestion des métadonnées, interopérabilité, maintien en condition opérationnelle (aka MCO) des services ou encore pérennisation des plateformes logicielles. Et avec l'explosion des contenus générés par IA, comment conserver des pétaoctets de données sans exploser les coûts ? Comment migrer des infrastructures ? Comment éviter qu'une archive ne devienne inaccessible parce que le logiciel permettant de l'exploiter a disparu ? Autant de questions auxquelles sont confrontés les responsables d'infrastructures, administrateurs système, développeurs et mainteneurs (ne les oublions pas, c'est mon combat !) de ces plateformes documentaires et, osons le mot, patrimoniales !

Comme d'habitude, l'idée est de partager des retours d'expérience concrets, des difficultés rencontrées et des solutions libres que d'autres organisations pourraient réutiliser. L'appel à participation propose trois possibilités :

  • Participer à cette fameuse table ronde Managing Infrastructure for Archives and Libraries ;
  • Présenter une conférence de 30 minutes, questions comprises ;
  • Proposer une présentation éclair (lightning talk) de 7 minutes.

Les organisateurs restent ouverts à d'autres formats, à condition de pouvoir les intégrer au programme.

Pour participer, il faut soumettre une proposition sur la plateforme Pretalx du FOSDEM, sélectionner la piste Archives, Libraries, and Digital Memory, puis indiquer dans le champ « Submission Notes » le format souhaité.

Et le reste ?

Et si les archives numériques ne sont pas votre tasse de thé, il reste la main track et 76 autres devrooms. Parmi celles-ci, oserais-je vous recommander :

  • Tool the Docs, votre serviteur étant un fervent promoteur de l'outillage de la doc, de préférence en Asciidoc quand c'est possible et pertinent ;
  • Railways and Open Transport, car vous y trouverez forcément Walid, le responsable du podcast de LinuxFr.org : Projets Libres !
  • Audio, Video, Graphics and Podcast, vous devriez aussi l'y croiser ;
  • Open Source & EU Policy Devroom, parce que le logiciel (et donc l'open source) est de plus en plus régulé (et que je travaille pour l'une des fondations organisatrice !) ;
  • Beyond the CRA - Building Secure and Resilient Open Source, parce que cela va forcément vous impacter très vite, que vous le vouliez ou non ;
  • Et sinon, il reste aussi /dev/random 😉

Chacune a ses propres dates de clôture, mais la soumission se fait sur la même plateforme du FOSDEM et la date de publication du programme pour toutes les devroom est fixée au 7 décembre. Et dans tous les cas, la liste de diffusion du FOSDEM est votre amie. Ne procrastinez pas.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Revue de presse de l’April pour la semaine 44 de l’année 2026 hier

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.

[ZDNET] Libre et open source express: apocalypse de vulnérabilité, entreprises européennes, sortir des Gafam, boycott d’Omarchy

✍ Thierry Noisette, le samedi 31 octobre 2026.

En bref. L’open source a besoin de financements et d’entreprises qui participent, alertent l’EFF et la fondation Linux. Alternatives à la Big Tech. Une distribution Linux controversée.

[Libération] Message anonyme, couacs en série, secret… Dans les coulisses de la crise «PHP», cette journée où le web a tremblé (€)

✍ Elise Viniacourt, le samedi 31 octobre 2026.

La semaine dernière, des milliers de sites, dont celui des impôts ou de préfectures, ont dû être débranchés en urgence. En cause: deux failles découvertes grâce à l’IA dans PHP, un langage informatique. Retour sur un «effet boule de neige» qui a semé la panique.

[Le Monde Informatique] Anthropic révèle que Mythos 5 a tenté de soumettre du code malveillant à un projet open source

✍ Louise Costa, le mercredi 28 octobre 2026.

Lors d’un test de cybersécurité mené par l’AI Security Institute britannique, Mythos 5, le modèle d’Anthropic, a tenté de faire accepter du code malveillant dans un dépôt GitHub. Malgré un premier refus, l’IA a renouvelé sa tentative.

[Next] IA: la Linux Foundation constate l'épuisement croissant des contributeurs

✍ Vincent Hermann, le mardi 27 octobre 2026.

Quel effet produit l’IA sur le développement open source ? Selon un rapport de la Linux Foundation, il est conséquent, entre augmentation de la production brute, abaissement du ticket d’entrée, obligation plus intense de relecture et épuisement d’une partie des personnes impliquées.

[LaDepeche.fr] La Cour des comptes alerte: 100 millions d'euros dépensés par l'État pour Microsoft, des économies possibles avec des logiciels libres

✍ Philippe Rioux, le mardi 27 octobre 2026.

Parler de souveraineté numérique, c’est bien; la mettre en pratique, c’est mieux. Et cela est d’autant plus vrai en ce qui concerne l’État. Telle est la vision de la Cour des comptes qui vient de publier un rapport sur “Les outils bureautiques et collaboratifs au sein de l’État”. À la suite d’une campagne d’initiative citoyenne menée en septembre 2024 par l’institution de la rue Cambon, celle-ci s’est intéressée aux suites bureautiques (traitement de texte, tableur, supports de présentation) et aux logiciels collaboratifs (messageries électroniques ou instantanées, visioconférences, partages de documents, etc.) dans les administrations centrales et déconcentrées de l’État. Ce qui représente rien moins que 860 000 postes de travail informatique.

[01net.] Le Danemark abandonne en silence son test d'un Office open source, sans même en tirer le bilan

✍ Thomas Estimbre, le mardi 27 octobre 2026.

Annoncé en grande pompe l’an dernier, le test d’une suite bureautique open source au ministère danois de la Numérisation a été arrêté sans bruit. Faute d’évaluation, personne ne saura si le ministère pouvait vraiment se passer de Microsoft.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Capitole du Libre les 14 & 15 novembre 2026 à Toulouse hier

Le Capitole du Libre est un week-end dédié au Logiciel Libre et à la culture libre en Occitanie. Cette année, la treizième édition se tiendra les samedi 14 et dimanche 15 novembre 2026 à l’INP-N7 en centre‐ville de Toulouse.

Comme chaque année, Toulouse va connaitre les 14 et 15 novembre un week-end placé sous le signe du partage communautaire, autour du numérique et des solutions libres. L’entrée est gratuite, sur simple inscription en ligne.

Sous le slogan « L’événement du Logiciel Libre et de la culture libre en Occitanie », le Capitole du Libre s’adresse à toute personne : novice curieuse, bidouilleuse confirmée, passionnée, ou simple flâneuse numérique.

Que nous réserve ce week-end libre & convivial ?

  • Beaucoup de personnes ont voulu partager leur passion en proposant de nombreuses présentations parmi lesquelles près de 120 conférences et 10 ateliers ont été retenues. Au menu : sécurité informatique, DevOps, développement web, création graphique libre, jeux libres, enjeux sociétaux autour du numérique ouvert, de nombreux débats sur l'Intelligence Artificielle et ses impacts, il y en aura pour tous les goûts !
  • Un village associatif riche de personnes engagées du libre : discutez avec de nombreuses associations et leurs bénévoles. C'est l'occasion de découvrir, et pourquoi pas, de s’impliquer !
  • Un espace “Adoptez le logiciel libre” : que ce soit pour installer Linux ou simplement poser vos questions, des bénévoles efficaces seront là pour vous renseigner, et peut-être repartir avec des outils libres ! L'atelier est ouvert aux propriétaires d'ordinateurs mais aussi de téléphones. Organisé en collaboration avec le club informatique de l'N7.
  • Un atelier "Initiation au Code" : venez découvrir de manière ludique le code. L'atelier est adapté à tous les âges (y compris les plus jeunes) et est réalisé en collaboration avec l'EPITECH.
  • Et bien sûr, la convivialité : un week-end pour rencontrer de nouvelles personnes, échanger avec les habitué·e·s, et surtout apprendre dans une ambiance détendue. Le samedi soir, un moment festif est prévu.

Deux conférences plénières

Quelques exemples de conférences/ateliers

Pourquoi faut-il y aller ?

Le libre ne se limite pas au code : c’est d'abord une culture et des valeurs partagées, des projets humains qui se construisent ensemble.
Nous avons la chance de vivre dans une région peuplée de passionnés de technologie libre, et comme le Capitole du Libre attire aussi des visiteurs·ses de bien au delà de l'Occitanie, c'est un rendez-vous à ne pas manquer pour aller à leur rencontre.
Que l'on souhaite y passer par simple curiosité, découvrir de nouvelles choses, ou bien retrouver d'autres passionné·e·s, toutes et tous sont les bienvenues !
Et en plus c'est gratuit, alors pourquoi se priver ?

Infos pratiques

  • 📅 Dates : samedi 14 et dimanche 15 novembre 2026.
  • 📍 Lieu : INP-N7, 2 rue Charles Camichel, 31000 Toulouse.
  • 🎟️ Entrée gratuite, mais inscription en ligne obligatoire.
  • ✅ Ouvert à tous les ages et tous les niveaux.
  • 🍴 Sur place : food-trucks pour les midis (et de nombreux choix à l'extérieur dans le quartier).

En un mot

Avec le Capitole du Libre, plongez dans l’univers du libre sous toutes ses formes : un lieu de découvertes, de rencontres et de partages.
Réservez votre week-end : inscrivez-vous gratuitement et venez vivre le numérique autrement !

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Découverte du langage Elixir 02/11

Beaucoup de Rust par-ci… Un peu de Go par-là… Saupoudrez de LLM selon vos goûts et vous aurez une bonne photographie des sujets qui préoccupent les développeurs sur l'Internet d'aujourd'hui.
Alors, n'est-ce pas le meilleur moment pour se rafraîchir l'esprit avec des langages plus discrets ?
Je vous propose ici une présentation accélérée d'Elixir.

Sommaire

Un langage de programmation fonctionnelle

Ceux qui ont déjà fait de la programmation orientée objet organisent principalement leur code autour d'objets et d'instances. Cette approche a ses avantages, mais cela nécessite d'encapsuler la donnée et la gestion des changements d'état peut parfois devenir complexe.
De son côté, la programmation fonctionnelle privilégie les fonctions qui, au lieu de masquer les données, transforment simplement des entrées en sorties.
Elixir s'appuie essentiellement sur ce paradigme.

Correspondance de motifs (ou Pattern matching)

En Elixir, le signe égal n'est pas une affectation mais plutôt une assertion.
Ainsi, on n'affecte ou ne modifie la valeur que de la variable située à gauche du signe égal. À droite, la variable est remplacée par sa valeur. Exemple avec iex, la console interactive :

iex> a = 2
2
iex> 2 = a
2
iex> 1 = a
** (MatchError) no match of right hand side value: 2

Cette ligne de code échoue car elle équivaut à 1 = 2, ce qui provoque une erreur.
À noter que le caractère _ sert à ignorer une valeur, ainsi :

iex> [1, _, _] = [1, 2, 3]
[1, 2, 3]

La correspondance de motifs en Elixir est similaire à celle d'Erlang (ces deux langages utilisent la même VM).
Joe Armstrong, le créateur d'Erlang, compare ce signe égal à celui utilisé en algèbre : lorsque vous écrivez l'équation x = a + 1, vous n'attribuez pas la valeur de a + 1 à x.
Cette correspondance sert essentiellement à vérifier la forme d'une valeur, à en extraire des éléments et à traiter différemment les résultats d'une opération selon qu'elle réussit ou échoue.
Tout cela est un peu déroutant au début mais très puissant.

Module, fonctions et clauses de garde

Dès qu'un programme dépasse quelques lignes, il devient nécessaire de le structurer.
En Elixir, les fonctions nommées doivent être écrites à l'intérieur de modules :

defmodule BestMovie do
  def ever(name) do
    IO.puts "Le meilleur film de tous les temps est `#{name}`."
  end
end
BestMovie.ever("La cité de la peur") #=> Le meilleur film de tous les temps est `La cité de la peur`.

De son côté, la macro defp définit une fonction privée, c'est-à-dire une fonction qui ne peut être appelée qu'au sein du module qui la déclare :

defmodule MonModule do
  def fonction_publique do
    fonction_privée()
  end

  defp fonction_privée do
    IO.puts "Je suis appelé depuis une fonction privée"
  end
end
MonModule.fonction_privée()   #=> ** (UndefinedFunctionError) function MonModule.fonction_privée/0 is undefined or private.
MonModule.fonction_publique() #=> Je suis appelé depuis une fonction privée

En Elixir, la correspondance de motifs s'applique aux arguments des fonctions : plusieurs peuvent porter le même nom mais le langage choisira la fonction dont les motifs correspondent aux arguments.
Au moyen du mot clé when, les clauses de garde permettent d'étendre cette correspondance de motifs à des vérifications plus complexes comme la distinction des types d'arguments ou un test portant sur leurs valeurs :

defmodule GuardClause do
  def what_is(x) when is_number(x) and x > 0 do
    IO.puts "#{x} est un nombre positif"
  end

  def what_is(x) when is_list(x) do
    IO.puts "#{inspect(x)} est une liste"
  end
end
GuardClause.what_is(99)      #=> 99 est un nombre positif
GuardClause.what_is([1,2,3]) #=> [1,2,3] est une liste

Toutes les expressions ne sont pas autorisées dans les clauses de garde, mais seulement quelques-unes.
Il s'agit d'un choix délibéré du langage pour garantir une exécution efficace.

Listes et récursivité

En Elixir, une liste peut être vide ou se composer d'une tête et d'une queue. La tête (head) contient une valeur et la queue (tail) est elle-même une liste :

iex> [ head | tail ] = [ 1, 2, 3 ]
[1, 2, 3]
iex> head
1
iex> tail
[2, 3]

Ainsi, une liste à un seul élément (que nous écririons habituellement sous la forme [4]) peut s'écrire comme la valeur 4 jointe à une liste vide, soit [ 4 | [ ] ].
Cette définition permet d'aborder certains problèmes de manière récursifs et donc sans s'appuyer sur une variable de boucle et/ou les traditionnels if et else :

defmodule MyList do
  def flip([]), do: []
  def flip([ head | tail ]) do
    flip(tail) ++ [head] # `++` permet de concaténer des listes
  end
end
MyList.flip([1, 2, 3, 4, 5]) #=> [5, 4, 3, 2, 1]
# Explication pas à pas :
#   flip([1, 2, 3, 4, 5])
#     ↳ flip([2, 3, 4, 5]) ++ [1]
#         ↳ flip([3, 4, 5]) ++ [2] ++ [1]
#             ↳ flip([4, 5]) ++ [3] ++ [2] ++ [1]
#                 ↳ flip([5]) ++ [4] ++ [3] ++ [2] ++ [1]
#                     ↳ flip([]) ++ [5] ++ [4] ++ [3] ++ [2] ++ [1]
#                         ↳ [] ++ [5] ++ [4] ++ [3] ++ [2] ++ [1]
#                             ↳ [5, 4, 3, 2, 1]

Note : l'usage de ++ est moins efficace qu'une version utilisant une variable pour accumuler le résultat mais cette approche reste plus didactique pour découvrir la récursion.

L'opérateur pipe

Nous avons tous déjà croisé du code séquentiel où chaque étape dépend du résultat de la précédente :

  cart = ShoppingCart.for_user(user_id)
  items = Inventory.check_availability(cart)
  total = Pricing.calculate_total(items, tax: 1.2)

L'ordre des opérations est clair, mais au final les variables intermédiaires sont là pour éviter des appels imbriqués :

Pricing.calculate_total(
  Inventory.check_availability(
    ShoppingCart.for_user(user_id)
  ),
  tax: 1.2
)

Elixir propose d'écrire ce type de code d'une façon fluide et sans variable intermédiaire :

user_id
|> ShoppingCart.for_user()
|> Inventory.check_availability()
|> Pricing.calculate_total(tax: 1.2)

L'opérateur |> prend le résultat de l'expression située précédemment et l'insère en tant que premier paramètre de l'appel de la fonction suivante.

L'exercice sympa qui utilise tout ça (ou presque)

Maintenant que vous avez les bases, je vous propose un exercice qui m'avait bien plu lorsque j'ai découvert le langage au travers le livre de Dave Thomas : trouver un nombre compris dans un intervalle donné (ex : 1..100 dans une expression ou 1..100//1 pour effectuer une correspondance de motifs, //1 correspondant au pas).
Il existe plusieurs façon de résoudre le problème mais voici ma solution :

defmodule Devine do
  def en_tatonnant(cible, min..max//1) when is_integer(cible) and is_integer(min) and is_integer(max) and cible > min and cible < max do
    estimation = div(min + max, 2)
    IO.puts "Est-ce #{estimation} ?"
    guess(cible, min..max, estimation)
  end
  def en_tatonnant(cible, min..max//1) when not is_integer(cible) or not is_integer(min) or not is_integer(max) or cible < min or cible > max do
    IO.puts "Très drôle…"
  end
  defp guess(cible, min.._//1, estimation) when estimation > cible do
    IO.puts "Non, c'est plus petit… Maintenant on va rechercher entre #{min} et #{estimation}"
    en_tatonnant(cible, min..estimation)
  end
  defp guess(cible, _..max//1, estimation) when estimation < cible do
    IO.puts "Non, c'est plus grand… Maintenant on va rechercher entre #{estimation} et #{max}"
    en_tatonnant(cible, estimation..max)
  end
  defp guess(cible, _, estimation) when estimation == cible do
    IO.puts "Mais oui, c'est bien #{estimation} 🤩"
  end
end
Devine.en_tatonnant(273, 1..1000)
#=> Est-ce 500 ?
#=> Non, c'est plus petit… Maintenant on va rechercher entre 1 et 500
#=> Est-ce 250 ?
#=> Non, c'est plus grand… Maintenant on va rechercher entre 250 et 500
#=> Est-ce 375 ?
#=> Non, c'est plus petit… Maintenant on va rechercher entre 250 et 375
#=> Est-ce 312 ?
#=> Non, c'est plus petit… Maintenant on va rechercher entre 250 et 312
#=> Est-ce 281 ?
#=> Non, c'est plus petit… Maintenant on va rechercher entre 250 et 281
#=> Est-ce 265 ?
#=> Non, c'est plus grand… Maintenant on va rechercher entre 265 et 281
#=> Est-ce 273 ?
#=> Mais oui, c'est bien 273 🤩

Et maintenant

Vous vous doutez bien que je n'ai fait qu'effleurer le sujet mais j'ai trouvé le langage Elixir tellement singulier que je n'ai pas résisté à l'envie de vous le présenter.
Je continue ma découverte de ce langage, à mon rythme ; en ce moment, j'aborde la programmation concurrente.
À n'en pas douter, j'enchaînerai sur le framework Phoenix !

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Emacs a 50 ans 02/11

Joyeux anniversaire Emacs ! Comme Slashdot l’a opportunément relevé, ce bel éditeur a maintenant un demi-siècle, ce qui semble complètement dingue.

J’avais déjà clamé mon admiration ici il y a quelques années, alors c’est l’occasion de revenir sur ce beau morceau de logiciel, qui ne fait pas son âge (comme moi, donc), et sur ce qu’on peut encore faire avec aujourd’hui.

Il a eu une vie un poil mouvementée, né à partir de TECO, réécrit complètement par Richard Stallman pour devenir GNU Emacs, forké vers XEmacs… On pourra bien entendu rappeler les innombrables flame wars avec Vim, les aphorismes usuels (Eight megs and constantly swapping, Emacs est un système d’exploitation auquel il manque un bon éditeur de texte…). C’était le bon temps.

Emacs a perdu de sa superbe aux grands moments des IDE tout intégrés, mais finalement c’est de là qu’est venue la libération, et ironiquement on peut remercier Microsoft. Avec l’apparition du Language Server Protocol, qui a découplé le langage de l’éditeur et permis le lint, l’auto-complétion, les erreurs en ligne et autres, Emacs est redevenu tout à fait productif, et j’aurais envie de dire, tout du moins dans mon cas, un meilleur éditeur C++ que les VScode et CLion, proposant des fonctionnalités similaires, voire supérieures (Mode tramp ssh + docker par exemple), pour une bien plus grande légèreté et stabilité. Et à chaque fois que je dois écrire ou lire quelque chose, que ce soit du texte, ma TODO list, du C++, du shell, du Latex, du Yaml, ou, Cthulhu me protège, du Python, eh bien Emacs reste l’endroit le plus pratique pour tout ça, avec dans le pire des cas un petit paquet melpa à installer rapidos pour être complètement dans le bain.

Emacs est surprenamment encore pertinent en ces jours de vibe coding: les LLMs sont plutôt doués en LISP, et faire écrire son propre mode devient trivial. Il y a tout un tas de modes pour s’intégrer avec un agent, dont agent-shell est l’un des plus aboutis. J’ai ainsi codé un petit mode très spécialisé qui m’affiche ma liste de projets, et me permet de créer un nouveau workspace git en m’ouvrant une fenêtre magit, une fenêtre agent-shell, et une fenêtre dired, le tout à travers un tramp - Me donnant un espace de travail complet et intégré pour travailler sur une machine de dev à distance comme si j’y étais.

Prochaine étape, le centenaire !

Ce texte a bien entendu été tapé dans Emacs. On ne se refait pas.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

It's FOSS
I Got Tired of Remembering Ports for 30 Docker Apps in My Homelab. Here's How I Fixed it il y a 4h

My homelab runs on 5 machines with around 30 Docker containers. For a long time, the way I reached them was a bookmarks folder full of entries like http://100.101.12.4:8096.

Tailscale took care of getting me into my network from anywhere, but once I was in, I was back to remembering which box ran what on which port.

The usual fixes each have a catch. A reverse proxy with your own domain works, but it's one more thing to maintain, and every new app means touching two config files instead of one. Giving each container its own Tailscale sidecar gets you nice names, but it also turns the Machines page into a list of containers, each with its own auth key and state volume.

When Tailscale released Services, it looked like the thing I had actually wanted: names for apps, not for machines. I've been running my containers that way since, and this is a write-up of how it works, how to set it up by hand, and the two things worth knowing before you start.

What a Tailscale Service actually is

A Service is a name plus a virtual IP on your tailnet, for example jellyfin.your-tailnet.ts.net. It doesn't belong to a device. Instead, one or more of your machines advertise it, and Tailscale routes clients to them.

So your Docker host stays a single machine in the tailnet, and the apps on it become Services. Access rules can point at a Service directly, so you can let someone reach Jellyfin without giving them the whole host.

Here is what a request looks like once it's set up:

Two details in that picture matter later: tailscaled on the host terminates HTTPS and talks plain HTTP to your app, and it adds an X-Forwarded-For header. To your app, Tailscale behaves like a reverse proxy.

Setting one up by hand

Before automating anything, it's worth doing it manually once for a single container. You need three things.

1. A tagged host. Services are advertised by tagged machines, so give your Docker host a tag:

sudo tailscale up --advertise-tags=tag:server --reset

2. A policy that allows it. In the admin console under Access controls, the tags must exist, and an auto-approver saves you from clicking "Approve" for every Service:

{
  "tagOwners": {
    "tag:server": ["autogroup:admin"],
    "tag:container": ["tag:server"]
  },
  "autoApprovers": {
    "services": {
      "tag:container": ["tag:server"]
    }
  }
}

3. The Service itself. On the Services page of the admin console, choose Advertise, then Define a Service, name it jellyfin and give it the tag:container tag. Then, on the host, point it at the app:

tailscale serve --service=svc:jellyfin --https=443 127.0.0.1:8096

This assumes Jellyfin publishes port 8096 on the host. If HTTPS certificates are enabled for your tailnet (DNS page in the admin console), https://jellyfin.your-tailnet.ts.net now works from every device that runs Tailscale.

For one app, that's fine. For 30, it gets old quickly: one definition in the console and one serve command per app, plus published ports again. And nothing updates by itself when you add, remove or move a container.

Why I ended up scripting it

The part that bothered me most was that the configuration lived in two places. The app was defined in a Compose file, and how to reach it was defined somewhere in the admin console and in tailscaled's state. Remove a container and its Service just stays there.

Traefik solved the same problem for reverse proxies years ago with Docker labels, and I didn't find anything like that for Tailscale Services. So I wrote a small Go program that does it, DockTail. It runs as one container per host, watches Docker events, and turns labels like these into the steps above:

services:
  docktail:
    image: ghcr.io/marvinvr/docktail:latest
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/run/tailscale:/var/run/tailscale
    environment:
      - TAILSCALE_OAUTH_CLIENT_ID=${TAILSCALE_OAUTH_CLIENT_ID}
      - TAILSCALE_OAUTH_CLIENT_SECRET=${TAILSCALE_OAUTH_CLIENT_SECRET}

  jellyfin:
    image: jellyfin/jellyfin:latest
    restart: unless-stopped
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /path/to/media:/media:ro
    labels:
      - "docktail.service.enable=true"
      - "docktail.service.name=jellyfin"
      - "docktail.service.port=8096"
      - "docktail.service.service-port=443"

With an OAuth client (Services: Write, Devices Core: Write, scoped to tag:server) it also creates the Service definition, so the manual console step goes away. Note that Jellyfin has no ports: section: the traffic goes straight to the container's IP on its Docker network.

That's also why this needs something that watches Docker. If you skip published ports and point serve at a container IP by hand, it breaks the next time the container is recreated:

DockTail is open source (AGPL-3.0). You don't need it to use Services, though, and everything in the next section applies either way.

Two things worth knowing

If a Service doesn't show up, it's almost always the tag. The host needs to be tagged (check tailscale status), and if you haven't set up an auto-approver, the Service waits for you on the Services page.

Apps that check proxy headers may complain at first, because Tailscale adds an X-Forwarded-For header. Home Assistant answers with "400: Bad Request" until you trust the proxy in configuration.yaml:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1

On a Docker bridge network, use the address Home Assistant names in its log instead of 127.0.0.1. Jellyfin has the same setting under Dashboard → Networking → Known proxies, but it works fine without it.

Was it worth switching?

For me, yes. What I like most is that the network config now sits right next to the app in the same Compose file. Adding an app means adding labels, removing it takes its Service with it, and my Machines page shows machines again.

I'd still use a reverse proxy for anything public with my own domain. Tailscale Funnel is great for a webhook or sharing one thing with a friend, but it's not a replacement for that. And if you run a handful of containers that rarely change, the manual tailscale serve route above is perfectly fine and needs no extra tool.

If you want to try the label approach, the code and docs (including complete guides for Jellyfin and Home Assistant) are at github.com/marvinvr/docktail and docktail.org/docs.

And if you've solved this differently, I'd honestly like to hear how. Leave a comment, I'll read all of them.

✍️The article is contributed by Marvin von Rappard, creator of open source project Docktail.
What's New in Fedora 45? il y a 19h

Building a Fedora release means tracking an enormous amount of formal change proposals planned for each release cycle on a public Change Set page, where every entry carries an owner and a status.

These proposals undergo community review and require approval from the Fedora Engineering Steering Committee (FESCo), either in batches or individually, depending on their scope.

But approval only means a change is accepted for the planned release, not that it is guaranteed to ship. The beta for Fedora 45 came out last month, and several proposals that were meant for the stable release were pushed to Fedora 46.

What we have now is a release that was initially set for October 20, but was pushed back to October 27, and then again, to today, November 3, because there were some late-stage teething issues with the release.

Better Kernel Panic Handling

If you have ever hit a kernel panic on Fedora, you might have spotted a QR code on the screen. The DRM Panic component has shown it by default since Fedora 42, but scanning it only got you a raw trace that not many people can read.

Fedora 45 changes that with a web frontend for DRM Panic. Scanning the QR code with your phone now takes you to a Fedora-hosted page that walks you through what went wrong.

From there, you can start a Bugzilla report with your system details and the trace already filled in.

Inclusion of kmscon

Similarly, if you have pressed Ctrl+Alt+F3 and landed on a full-screen text login, you have seen the Linux virtual console. That screen is drawn by the kernel's fbcon, and Fedora 45 swaps it for a userspace program called kmscon.

The switch brings back scrolling, adds basic mouse support, and a crash no longer results in a kernel panic. You also get resizable fonts, better Unicode support, and the ability to use the same keyboard layout as your desktop.

Don't worry about things breaking. If kmscon fails to launch, Fedora falls back to the old getty and fbcon setup automatically, and you can switch back yourself if you prefer.

Linux 7.2

Fedora 45 ships with Linux 7.2, and a few of its changes are easy to appreciate without digging through the changelog. Radeon users get initial HDMI 2.1 support years after the HDMI Forum blocked it from the open source driver, and the new ISP4 driver completes webcam support on the HP ZBook Ultra G1a and other upcoming Ryzen laptops.

Existing laptop users get more hardware support too. The ASUS ROG Strix G16, Zephyrus G14, and TUF Gaming F16 are now supported, Lenovo laptops can limit their battery charge, and Microsoft's 12-inch Surface Pro gets a platform driver.

Though, I must say, it's a bit weird to see Fedora skip out on Linux 7.3, given that Ubuntu 26.10 got it in before the kernel was even officially released. Perhaps the release delay had something to do with the switch, but that's just speculation on my part.

Desktop Environment Upgrades

Fedora Workstation 45 comes with GNOME 51, and its handful of practical upgrades include offline map downloads in the Maps app, a new fingerprint manager in the Users panel of Settings, and monitor brightness that is saved and restored across sessions.

The Files app picks up rename and trash options in the file previewer, and Mutter drops support for legacy NVIDIA drivers.

Fedora KDE Plasma Desktop 45 comes with Plasma 6.7, and the feature to talk about is per-screen virtual desktops. This is a useful thing for multi-monitor setups where your laptop display and external monitor no longer have to be limited to the same set of virtual displays.

Additionally, the classic Oxygen and Air themes from the KDE 4 days are back as full Global Themes, and if you have separate day and night themes set up, a new toggle in the Brightness & Color quick settings lets you switch between them.

Podman 6

Podman is a container tool that lets you run and manage containers and pods using Docker-style commands without needing to run a daemon in the background.

With this Fedora release, Podman moves up to the 6.1.x series, and most of the significant changes come from the major 6.0 release it builds on.

That release retired slirp4netns, CNI, cgroups v1, and iptables in favor of Pasta, Netavark, cgroups v2, and nftables, and it migrates an old BoltDB database to SQLite automatically.

Beyond the removals, network isolation is now on by default, podman volume prune only clears anonymous volumes that aren't in use, and Quadlet files live in their own subdirectories.

Podman 6.1 then adds smaller conveniences like podman volume rename, podman machine restart, and retry options for podman manifest push.

Miscellaneous Changes

Here are a few additional improvements that didn't make it into the sections earlier:

  • A new gold-colored, gears-themed default wallpaper.
  • NetworkManager now has support for IPv6-mostly networks enabled by default.
  • Stratis storage can now be used during installation, with support in both Kickstart files and the Anaconda WebUI's manual partitioning.
  • Fedora Atomic Desktops, such as Silverblue and Kinoite, switch from the old GTK-based Anaconda installer to the new WebUI one.
  • For confidential computing on UEFI systems, there's a new stripped-down GRUB package that can quickly boot Unified Kernel Images while the regular GRUB stays in place.
  • A slow move away from GnuPG with a new RPM macro that uses Sequoia by default and brings post-quantum cryptography support.

📥 Download Fedora 45

You can get the stable release from the official website. Pick the image that suits your use case, and expect there to be some minor breakage that could affect your machine.

Fedora 45
These Linux Distros Can Run on Apple Silicon Mac il y a 20h

Personally, I have never owned an Apple device, mostly due to its pricey nature and how the brand loves to lock people in their walled garden. But that's just me ranting there for a bit.

There are many who do like what Apple has to offer and are willing to see what additional value they can get out of that hardware by breaking free from macOS.

This list covers six such options that ought to awaken the tinkerer inside you. 🧑‍🔧

📋Every install route here boots directly on Apple Silicon hardware instead of a virtual machine, sitting alongside the macOS installation.

1. Fedora Asahi Remix

📋Good to know: The flagship distro of the Asahi Linux project.

Fedora Asahi Remix is Fedora Linux with the Apple Silicon work from the Asahi Linux project built in. KDE Plasma on Wayland is the default desktop, and GNOME, Minimal, and Server images are there if you want something different.

On M1 and M2 Macs, almost everything works, from the webcam and microphones to Wi-Fi and Bluetooth. The graphics drivers also pass the OpenGL 4.6 and Vulkan 1.4 conformance tests.

M3 owners can try it too, but support is quite new. Sleep does not work, HDMI on MacBooks is unavailable, and 3D graphics don't run well yet. The M3 Ultra Mac Studio is not supported at all.

Installation begins in macOS. Run the following command in the Terminal app and follow the prompts to continue with the installation of Fedora Asahi Remix on your Mac:

curl -L https://alx.sh/ | sh

M3 owners are recommended to run dnf upgrade --refresh after the install finishes.

Fedora Asahi Remix

2. Ubuntu Asahi

0:00 /0:20 1×
📋Good to know: Ubuntu's desktop and server images, built on Asahi Linux work.

If Ubuntu is already familiar to you, then this community project has ported it to M1 and M2 Macs by carrying over the Apple Silicon support from Asahi Linux.

The installer comes in four flavors, covering 26.04 and 26.10 for Ubuntu Desktop and Server. The goal is to provide the same feature set as Fedora Asahi Remix, while new hardware support only arrives after the Fedora base ships it.

As a result, you can expect system updates to be behind by a few weeks.

Like earlier, you get the installer as a script and run it in Terminal. It shrinks the existing macOS partition and lets you pick a release and build, leaving your macOS installation intact:

curl -sL https://ubuntuasahi.org/install | sh
Ubuntu Asahi

3. Debian Bananas

📋Good to know: An unofficial Debian port for M1 and M2 Macs, run by the Bananas Team.

Debian doesn't officially run on Apple Silicon yet, but the Bananas Team is working to change that. It packages the missing pieces and ships them from an unofficial archive of its own.

Official support is stuck on the kernel. The Asahi Linux patches it needs aren't upstream yet. Most other pieces, like the m1n1 bootloader and the audio stack, have been in Debian since Trixie.

The team's installer offers GNOME, KDE, or a console-only setup:

 curl -L https://bananas.debian.net/install | sh

The install page contains the necessary steps.

Debian Bananas

4. NixOS on Apple Silicon

📋Good to know: NixOS on bare metal, configured through Nix files.

Write the whole system down in a Nix config file, rebuild, and the Mac matches it. That's the NixOS way, and this community port brings it to Apple Silicon. The maintainers keep versions close to Fedora Asahi Remix and turn away changes that stray far from it.

Hardware support follows whatever Asahi Linux supports, and setting it up is quite a hands-on affair. You’ll prep a UEFI environment from macOS with the Asahi Linux installer, boot a NixOS installer from a USB drive, and finish the job from the command line.

NixOS on Apple Silicon

5. Omarchy M

📋Good to know: Omarchy's Hyprland desktop for Apple Silicon, still in early stages.

Omarchy M is a dedicated team rather than a separate distro that has been put together to handle Omarchy support on Macs. It's bringing the Arch-based, Hyprland desktop to Apple Silicon while also giving some attention to older Macs.

The first release targets M1 and M2 Macs, along with their Pro and Max variants. On the roadmap are a native installer, full GPU support, USB-C external monitors, Touch ID, MLX, and disk encryption.

Support enablement work for newer Macs will take place alongside this too!

The native installer is a community-built app by team member Marcelo Alcantara, and it sets up Omarchy on a Mac machine without needing a USB stick.

Omarchy M

6. Gravity Linux

📋Good to know: A Fedora remix aimed at M4 and newer Macs, currently an early alpha.

Gravity Linux is built to go away. It's a Fedora remix with KDE Plasma on Wayland, and the plan is to retire it once the drivers land upstream and any mainstream distro can run on supported Mac devices.

It started as a fork of Asahi Linux over a difference in policy on LLM use. Everything it offers comes from clean-room reverse engineering.

The first alpha release runs on the M4 Mac mini and is meant for developers. The display controller and GPU work, but suspend, USB-C display output, Thunderbolt, and USB4 don't; shutdown and reboot behavior is flaky.

You can install it on macOS with the command below, but do plan a full reinstall when the beta lands, as there's no established upgrade path.

curl -fsSL https://install.gravitylinux.org | sh
Gravity Linux

I will be adding more to this list as I come across reliable new projects. Meanwhile, if you know some, please mention it in the comments.

One Open-Source Repo to Replace Adobe, Microsoft, and Salesforce il y a 22h

Adobe charges $60 a month. Microsoft 365 keeps raising its price. Salesforce will take $150 per user without blinking. These are not tools you own. They are subscriptions that expire the moment you stop paying, often taking your files and workflows with them.

The Puter team thinks that is worth fixing. Remember Puter? The folks behind the PuterOS that gives you a workable operating system in a web browser.

Their new project, called everything, is a single GitHub repository with one specific goal and that is to rebuild the world's software from scratch, free and open source.

This is what they are aiming for. Over 50 web-based applications spanning nine categories, including a photo studio, full office suite, CRM, CAD tools, video editor, and circuit design app. Every one of them is open source under the MIT-license. And they can be self-hosted, too.

Basically, it targets all the major Software as a Service (SaaS) companies.

Tapping Into Everything

The applications are all listed on the official GitHub page, they're all in a table, and very helpfully, the cell next to the application name states what popular software it is an alternative to. For example, "Notes" is an alternative to Microsoft OneNote, Evernote, Apple Notes. It is all put in well organized categories.

The apps are all hosted online, and can be opened by pressing the "Try it" link. They're completely usable, however, and in case you have a slow system that can't handle some heavy duty tasks such as video editing, this is genuinely a better option. Nevertheless, you have to remember that you'll be uploading your data to this service, and if that is a privacy concern then you may have to reconsider.

📋Several features are only available to you if you make a Puter account and sign in. These include several AI features, such as auto-generation of captions in the video editor, but some applications require a sign-in straight away to use them in the first place, such as the Notes app.

Local Hosting

On the other hand, you can also host the applications locally, the instructions for which are given on the GitHub page, again.

For example, here I am running the Video Studio locally:

cd everything/src/video-studio/
npm install
npm run dev

This returns a link you can open up in your browser and use the application.

Storage

📋Another important issue is that the free tier of the Puter account only gives you 25MB storage on the cloud, making it tough to work on larger projects, especially when it comes to video editing. To resolve this, you can buy a subscription, starting at $10/month for 100GB.
💡The storage limitation kicks in only when you've logged into a Puter account and using the cloud storage. However, if you are not logged in, meaning you are only using local storage, it works with however large file you want.

Background

HeyPuter launched Puter in 2024 as a self-hostable internet computer: a full desktop environment running in a browser, with cloud storage, apps, and developer tools baked in. It was well received by the community.

With Everything, rather than building one great alternative to one piece of software, the project takes on the entire proprietary stack at once.

The logic is that the vendor lock-in does not come from a single app. It comes from an ecosystem. Adobe keeps you because Lightroom talks to Premiere talks to Acrobat. Microsoft keeps you because Word talks to Excel talks to Teams. Breaking one link does not free you. Everything is trying to break all of them.

The MIT license matters here. Unlike the GPL, MIT places almost no restrictions on use. You can take these apps, modify them, and run them anywhere without obligation. For businesses and developers worried about compliance, that removes the last excuse to keep paying for proprietary software.

Experiencing the Everything apps

I've tested some of the apps to check the quality of the production, and pretty much to see if the job gets done.

🚧A major observation I made was that progress on projects can only be saved if you've logged in with a Puter account. If not, you have to get it all done in one go. Exporting is fine, either way.

PDF Editor

The PDF editor has great options, adding texts or links, images, stitching PDFs together and so on.

You can even draw diagrams to add to the PDF in the app itself. You can also add sticky notes, highlight text etc. These are quite basic features on a PDF editing menu, but they work seamlessly here, which is great to see.

Since the software is in early stages, there are some bugs. Like when I tried editing the preexisting text in a PDF file, it was not entirely accurate. The text doesn't always get detected in proper blocks, and the formatting gets all over the place as a result of that.

Video Studio

I tried some of the features, such as the AI caption generation, and the film grain effect, with transitions in between clips and it worked quite well.

It also generated captions and allowed me to edit them if a word was incorrect.

The export menu showed options to separately export the audio in a WAV file and captions in an SRT file, which is great.

I had an issue with one of my video clips where it said my browser couldn't decode the video file, but then there was no further information on how to fix it, which essentially rendered the video file uneditable.

Music Studio

Being used to Ableton myself, the interface was different here for me. Don't get me wrong, the app itself is pretty intuitive to navigate through, the major actions are all laid out in a great way.

It has all the effects you might need, such as compression, reverb, delay, parametric EQ, stereo and so on. They work quite well, and the options for each are ample.

Nothing too technical, but just as much as you need.

Interface of the Music Studio

Even the export showed options to export the stems as well as MIDI files separately, which is a great feature to have. Out of all the three that I tested, the music studio worked most to my satisfaction.

Conclusion

There is a new trend in the developer world these days to reverse engineer everything with AI. Puter's new project is part of the same trend.

The apps on The Everything Projects have their ups and downs but on the larger scale, they work incredibly well for the most part, giving features that almost match the professional level. At least for beginning professionals everywhere, who cannot afford expensive software, these apps are a great way to get things done.

It requires an account to access the AI features and to save the progress on projects unless you have an account, where you will probably need a Puter subscription because 25MB is too small a storage to actually get anything done.

That actually is understandable to avoid the service abuse but the 25 MB could have been 250 MB at least. In any case, self-hosting option is always there.

What do you think about this wave of reverse engineering apps and open sourcing them? Let us know in the comments. Cheers!

Schools in Six German States Can Now Opt For a Nextcloud-Based Open Source Cloud Solution hier

govdigital eG has awarded IONOS a four-year framework contract under KoDaS, the abbreviation for a collaboration and file storage system. The service delivered under it is built on Nextcloud and sold as Nextcloud Workspace.

It is meant for schools and school authorities in the German states of Berlin, Hamburg, Bremen, North Rhine-Westphalia, Rhineland-Palatinate, and Hesse. Other German states can join later, and schools are not mandated to implement it.

How the deal works

IONOS is the main contractor. It is tasked with delivering and operating the service, running the cloud infrastructure located in German data centers, and building it all on Nextcloud's open source software.

The tender notice for KoDaS sets a maximum value of 67.5 million euros and a maximum term of 48 months from the award. Nextcloud's announcement names the six states and their schools as the main parties who can order, leaving room for other states to be added later.

The announcement does not say what the contract will actually be worth. 📝

The notice calls for procuring software available under an OSI-approved open source license, citing digital sovereignty, lasting availability, and the ability to switch providers.

Among its asks for bidders are ISO 27001 certification, at least 10 million euros in turnover, liability insurance of at least 5 million euros, and a reference project with at least 10,000 active users and fully separated tenants.

For the features, the notice calls for central file hosting and sharing, a browser-based office suite for working on documents together, calendar and contact management, and an integrated email client.

Pricing depends on how many people actively use the service, and it is split into five tiers that start at the up to 50,000 users mark, ending above 500,000. No school authority has to commit to a set volume up front, so each can begin with its current users and grow from there.

Nextcloud's main argument is that public institutions should have alternatives to proprietary platforms so they keep control of their data. The company also believes students who start out using open source tools are less likely to reach for big-vendor products afterward.

We have seen this already

Other German institutions are also reworking their software. Last year, we heard that almost 80% of Schleswig-Holstein's state government workplaces had switched away from Microsoft.

Mecklenburg-Vorpommern is replacing SharePoint with a self-hosted Nextcloud that around 5,000 employees use today, and the state plans to bring that to 50,000 across the public sector.

Then there's the federal Deutschland-Stack, published by the Federal Ministry for Digital Transformation and Government Modernization, which covers all levels of public administration and permits use of only ODF and PDF/UA for documents.

I anticipate more such moves across Europe as governments realize that keeping sensitive data with providers that fall under foreign law can expose it to access they have no say over, irrespective of where the servers are located.

The ongoing US midterms could also shift the conversation depending on who comes out ahead.

Suggested Read 📖: France's absurd per-gigabyte tax could cost VLC over €1 million a year.

Debian
Updated Debian 13: 13.7 released 12/09
The Debian project is pleased to announce the seventh update of its stable distribution Debian 13 (codename trixie). This point release mainly adds corrections for security issues, along with a few adjustments for serious problems. Security advisories have already been published separately and are referenced where available.
Debian 11 Long Term Support reaches end-of-life 31/08
The Debian Long Term Support (LTS) Team hereby announces that Debian 11 bullseye support has reached its end-of-life today, 31 August 2026, five years after its initial release on 14 August 2021.
DebConf26 closes in Santa Fe and DebConf27 announced 07/08
On Saturday 25 July 2026, the annual Debian Developers and Contributors Conference came to a close.
Security support for Bookworm handed over to the LTS team 12/07
On 12 July 2026, three years after the initial release, the regular support for Debian 12, alias bookworm, has come to an end. The Debian Long Term Support (LTS) Team is taking over security support from the Security and Release Teams.
Updated Debian 12: 12.15 released 11/07
The Debian project is pleased to announce the fifteenth and final update of its oldstable distribution Debian 12 (codename bookworm). This point release mainly adds corrections for security issues, along with a few adjustments for serious problems. Security advisories have already been published separately and are referenced where available.
PHP
PHP.net
Updated PHP Windows builds for Brotli security fix 26/10
The PHP team announces updated Windows builds: PHP 8.5.12-1, 8.4.27-1, 8.3.36-1 and 8.2.35-1. These builds include Brotli 1.2.1, which fixes CVE-2026-111497, an out-of-bounds write vulnerability in Brotli decompression. In PHP Windows builds, the vulnerable decoder can be reached through the cURL extension when automatic HTTP response decompression is enabled. This is disabled by default in cURL, but applications and HTTP client libraries can enable it. The -1 suffix identifies a Windows package rebuild with updated dependencies. These builds use the same PHP source releases, and the PHP runtime versions remain unchanged. The updated packages are available on the downloads page.
Informational advisory: Session upload progress 23/10
We suggest you set session.upload_progress.enabled=0 until the next regular bugfix release, to fully protect from an unlikely RCE vector. This setting was already listed as a mitigation in the GHSA-6wmf-4rv5-p3rp advisory for CVE-2026-109619 published on Oct 21st, 2026. If you applied it then, keep it in place and no further action is needed. The issue can only occur under an unusual combination of configuration and application code. An application must set session.serialize_handler to php_binary or php_serialize in its configuration and then switch it to php at runtime with ini_set() before calling session_start(). Session upload progress must also still be enabled. Applications that never change the serialize handler at runtime can keep the feature enabled. Since this setup is unlikely in practice, we are handling it in the regular release cycle and will publish a full advisory for CVE-2026-115560 with the next release.
Security advisory: Critical remote code execution vulnerabilities, update now 21/10
PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. All PHP users are strongly encouraged to update immediately.Who is at risk: all PHP installations serving web requests, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. We consider the risk highest for mod_php, with a demonstrated exploit where an unauthenticated request can trigger the attack before any application code runs.The vulnerabilities:RCE via OOM corruption, CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): out-of-memory handling can interrupt PHP while internal request data is only partially initialized. Request cleanup may then treat the invalid data as valid.RCE via stale global state, CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): request-owned internal state can survive after its backing memory has been freed. A later request handled by the same worker may use that stale state before normal initialization resets it.How to update:Update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35. Source downloads are on our downloads page. Windows source and binaries are on the same page.Linux distributions and LTS vendors received the patches in advance, so check your vendor for updated packages.PHP 8.1 and older no longer receive updates from the PHP project. Some distributions and LTS vendors provide backported fixes, so contact your vendor for details, or upgrade to a supported version.Given the severity of these vulnerabilities, the PHP security team provided minimal source-backports for PHP 7.4, PHP 8.0, and PHP 8.1 to help people building from source or without access to an LTS vendor. If you cannot update immediately: while only an update is a complete solution, the following measures reduce exposure to specific attack paths but do not make an installation safe.RCE via OOM corruption (CVE-2026-109618):Set memory_limit=-1, preferably in a way applications can't override, such as php_admin_value in the FPM pool or Apache configuration, and check that no pool, directory or application setting puts a finite limit back. This removes the controllable PHP memory limit failure, but an underlying allocation failure can still reach the vulnerable path.Set a low post_max_size. For applications that don't require file uploads, set post_max_size = 8M. If file uploads are necessary, set post_max_size = 32M. Keep upload_max_filesize below post_max_size. Consider enforcing limits at the web server or proxy level for decoded request size, input field count, multipart part count, header count, and nesting depth. These limits must also cover requests without a usable Content-Length.Use a container or cgroup limit as an availability boundary, preferably with a policy that kills only the affected worker. Do not substitute RLIMIT_AS or RLIMIT_DATA, as these can cause the vulnerable allocation failure.RCE via stale global state (CVE-2026-109619):Set session.upload_progress.enabled=0 and restart every worker. Use php.ini, an FPM pool or server configuration that applies before request parsing. Do not rely on ini_set() or FPM .user.ini. This blocks the confirmed session paths but not other variants.On PHP 8.5, set fatal_error_backtraces=0 and restart every worker. This blocks the confirmed fatal backtrace path only.Remove invalid or deprecated settings applied per request that emit diagnostics before initialization. Hiding diagnostics with error_reporting, display_errors or @ does not help.Fix attacker-reachable fatal errors and execution timeouts, including failures in callbacks, upload or import processing and cleanup.The advisories linked above have the full technical details.
PHP 8.6.0 RC4 available for testing 21/10
The PHP team is pleased to announce the third release candidate of PHP 8.6.0, RC4. This continues the PHP 8.6 release cycle, whose rough outline is specified in the PHP Wiki.Source downloads of PHP 8.6.0 RC4 are available on the download page.Please carefully test this version and report any issues found in the GitHub Issues.This version also contains the fixes for two critical vulnerabilities that can allow unauthenticated remote code execution. Everyone running earlier builds of PHP 8.6.0 is strongly encouraged to update immediately.Please DO NOT use this version in production, it is an early test version.For more information on the new features and other changes, you can read the NEWS file, or the UPGRADING file for a complete list of upgrading notes. These files can also be found in the release archive.The next release will be the last release candidate (RC5), planned for 5 November 2026.The signatures for the release can be found in the manifest or on the pre-release builds page.Thank you for helping us make PHP better.
Upcoming Critical PHP Security Release 20/10
The PHP security team would like to give advance notice of an upcoming security release. It is scheduled for Wednesday, 21 October 2026 at 14:00 UTC. It addresses two critical vulnerabilities, both rated CVSS v4.0 9.2. All PHP users are encouraged to prepare now so they can upgrade as soon as the release is available. We reserve the right to release earlier should details of either vulnerability become public, or should evidence of active exploitation appear in the wild. Full details, affected versions, and the fixed versions will be published with the release. Thank you for helping us keep PHP secure.
Journal du Hacker
Proxmox : Monter un dossier de l'hôte dans un conteneur LXC sans casser les snapshots il y a 21h
Refactorer son poste de travail : un guide ergonomique pour les développeuses et développeurs hier
Mon manager d'artiste est une IA hier
Liens intéressants Journal du hacker semaine #44 02/11
Migration en urgence, failles en pagaille et retour de CSS-Tricks 30/10
Externals.io
[RFC] grapheme_str_pad() il y a 11h

Hi internals,

I'd like to start the discussion on a new RFC:
https://wiki.php.net/rfc/grapheme_str_pad

It proposes grapheme_str_pad(), the grapheme cluster counterpart of str_pad() and mb_str_pad(), following the Future Scope of the mb_str_pad
RFC. The length is counted in grapheme clusters, so text in NFD, kana with
a combining dakuten, Indic scripts and emoji sequences are padded to the
same visible length as their single code point equivalents, and the padding
string is only cut on grapheme cluster boundaries.

Semantics and errors mirror mb_str_pad(). For ASCII input the result is
identical to str_pad().

Implementation: https://github.com/php/php-src/pull/25179

Thanks,
Chris Abner Herrera Navarro

[RFC] openssl_get_channel_binding il y a 22h

Hi

I changed the RFC to reflect this. openssl_get_channel_binding can no
longer return null, but it can throw a (newly introduced)
UnsupportedChannelBindingException.

Thank you. I've given the RFC another read and have some more comments:

  1. The naming of the $channel_binding_type parameter. It seems there
    is no current policy and using underscores is consistent with
    ext/openssl overall, but from what I see, new parameters are typically
    using camelCase. No strong opinion either way from my side, but
    potentially worth a discussion.

  2. “Introducing a new Error hierarchy for ext/openssl is a larger API
    decision that would affect more than this function, and none of the
    existing ext/openssl APIs currently use an Error subclass”

Not really. The “look and feel” of Openssl\OpensslError is already
required by policy, so there's no API design to be resolved here. I
don't disagree with the choice of ValueError (and even suggested it as
one of two alternatives), but that argument in the RFC stood out and
should probably be rephrased or dropped.

  1. Overall and tying a little into (2), I feel that the RFC
    “overjustifies” some of its choices. This is also visible in the “why an
    enum” paragraph where the RFC goes great lengths to explain why a union
    type is not chosen and how there is prior art - when an enum is just
    obvious and consistent with what we recently did. To me this made the
    RFC a bit tedious to read and harder to extract the parts where an
    actual design decision happened. Similarly the “Mapping a configured
    name to the enum” example just shows how enums work (which can be
    assumed to be general knowledge at this point). Not a blocker of course,
    but potentially something to keep in mind for future RFCs.

Best regards
Tim Düsterhus

[RFC] openssl_get_channel_binding il y a 23h

Thank you for the thorough review.

An operation that is not applicable sounds like an Exception to me.
I can see the appeal of throwing a specific exception (e.g. UnsupportedChannelBinding extends OpensslExtension). Then if the function returns something the caller knows it is a valid channel binding value.

I changed the RFC to reflect this. openssl_get_channel_binding can no longer return null, but it can throw a (newly introduced) UnsupportedChannelBindingException.

Regards,

Sjoerd

[RFC] PDO binary parameter support hier

Sorry for the later response and not doing the follow-ups on the previous email, I got incredibly busy with PHP stuff at work... you can guess why.

Content sniffing can't settle this. A bytea or varbinary value can be valid text, and text can contain a NUL, so the driver has to be told. It also doesn't help native prepares: pdo_pgsql sends text-format parameters as C strings, so they truncate at the first NUL regardless of quoting. That's the strongest argument for the RFC imho.

Agreed a binary param type is unavoidable for quoters.

The driver break decides between using a type versus a flag. A new type 6 is a fatal error in pdo_sqlsrv and IM001 in pdo_ibm until each driver ships an update. A flag that core masks before quoting allows fetch to fall back to STR/LOB in any driver that ignores it. I'd go with the flag, and reject combinations with INT/BOOL/NULL with a ValueError.

We have shipped breaking changes in PDO before (i.e. zend_stringification), so expecting these drivers to update for newer releases isn't unreasonable. But easing compatibility is another small point in favour of the flag.

pdo_sqlite already marks blobs in getColumnMeta()'s "flags" array, which is a good precedent for leaving pdo_type alone.

Sounds like we can just make it a standard part of the array's expected values then.

[RFC] Time\Instant and Time\Clock hier

Hi

We have now made the SystemClock a singleton with a
SystemClock::get() factory / getter. The constructor is private now.

Something I forgot doing then, but I did now: SystemClock is now marked
as @not-serializable, because well, it is not supposed to be
serialized as a singleton.

Best regards
Tim Dsüterhus

Symfony Blog
New in Symfony 8.2: Firewalls and Routes il y a 2h

Symfony 8.2 connects firewalls and routes more closely: routes can choose their firewall, you can load the routes of all firewalls with a single import, and redirecting anonymous users to a login page no longer requires a custom class.

Selecting the Firewall in the Route

Contributed by tilaven in #63112

Symfony selects the firewall of a request by checking the pattern or the request_matcher of each firewall in the security.firewalls configuration. This keeps the routes and their authentication apart, which is inconvenient in modular applications where each module defines its own routes. In Symfony 8.2, routes can define the firewall that handles them using the new firewall option:

Attributes YAML PHP
// src/Controller/OrderController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

class OrderController
{
    #[Route('/api/orders', name: 'api_orders', firewall: 'api_jwt')]
    public function orders(): Response
    {
        // ...
    }
}
# config/routes.yaml
api_orders:
    path: /api/orders
    controller: App\Controller\OrderController::orders
    firewall: api_jwt
// config/routes.php
use App\Controller\OrderController;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;

return function (RoutingConfigurator $routes): void {
    $routes->add('api_orders', '/api/orders')
        ->controller([OrderController::class, 'orders'])
        ->firewall('api_jwt');
};

The given firewall is used instead of the ones matching the request, and routes that don't define this option work as before. If the firewall doesn't exist, Symfony throws an exception instead of falling back to another firewall.

The firewall option only changes how users are authenticated: your access_control rules still apply as usual, regardless of the firewall that handled the request. To check the firewall of a route, run the debug:router command, which displays it as the _firewall route default.

Loading the Routes of All Firewalls

Contributed by Nicolas Grekas in #66881

Some firewall features need routes to work, like the logout path or the OpenID Connect callback. Symfony generates these routes from your security configuration, but your application must import the service that loads them. Until now, this meant importing security.route_loader.logout, and features like OpenID Connect login added in Symfony 8.2 also need their own routes.

Symfony 8.2 adds a security.route_loader service that loads the routes of all firewalls, so your application only needs one import. The security.route_loader.logout service is deprecated and will be removed in Symfony 9.0, so update your configuration as follows:

# config/routes/security.yaml
-_security_logout:
-    resource: security.route_loader.logout
+_security:
+    resource: security.route_loader
     type: service

Redirecting Anonymous Users Without an Entry Point Class

Contributed by Damian D'amico in #67140

Some authenticators, like json_login and many custom ones, don't redirect anonymous users to a login page. Until now, doing that required creating a class that implements AuthenticationEntryPointInterface just to return a redirect. In Symfony 8.2, use the new entry_point_path firewall option instead:

YAML PHP
# config/packages/security.yaml
security:
    firewalls:
        main:
            json_login:
                check_path: api_login
            entry_point_path: app_login
// config/packages/security.php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;

return App::config([
    'security' => [
        'firewalls' => [
            'main' => [
                'json_login' => ['check_path' => 'api_login'],
                'entry_point_path' => 'app_login',
            ],
        ],
    ],
]);

Like the login_path option, its value can be a path, an absolute URL or a route name. In stateful firewalls, Symfony also saves the requested URL so users can return to it after logging in. This option can't be combined with the entry_point option in the same firewall.

Sponsor the Symfony project.
SymfonyCon Warsaw 2026: Fixing PHP2Shell il y a 3h

Join devs from all over at SymfonyCon Warsaw 2026 on November 26-27 for two days of talks, workshops, and shared experiences.

🎤 Speaker announcement

Huge welcome to Volker Dusch, Head of Engineering, Tideways, as he joins our lineup with Fixing PHP2Shell. Excited to see this live on stage!

"This talk reflects on the PHP2Shell vulnerability, telling the full story of what happened and discussing its impact and why it gained so much attention.

We will cover the whole process, from what led to its discovery to testing and validation to remediation and how the PHP team coordinated and rolled out the fix.

Discussion will include how agentic security research combined with human expertise led researchers to the exploit and how LLMs are changing the landscape of security going forward.

We will reflect on lessons learned, share advice for other projects and the wider PHP ecosystem, and provide practical suggestions for organizations and projects."

Click here to see more talks. The full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!

Ready to join us?

🏨 Accommodation

The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our dedicated link to book your room and stay right where the action happens!

🥳 Save the date for the Community Party!

Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of Thursday, November 26. Get ready for a great night of networking, fun, and connecting with peers!

💻 Hackday

Ready to contribute? The Hackday on Saturday, November 28 (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!

🎟️ Get your tickets

Tickets are available here: Secure your ticket today!

Join us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Sponsor the Symfony project.
SymfonyCon Warsaw 2026: Zero to production on SymfonyCloud, live il y a 21h

Heading to Poland this fall? SymfonyCon Warsaw 2026 (Nov 26-27) will feature 3 parallel tracks and plenty of opportunities to meet other community members.

🎤 Speaker announcement

We're happy to confirm Vincent Robert, Technical Enablement Lead, Upsun, for his presentation Zero to production on SymfonyCloud, live. We can't wait to bring his experience to our community!

"You have an idea for a Symfony app. How long until it is in production, safe and observable?

Live on stage, we create a small app and deploy it to SymfonyCloud, the official cloud for Symfony, without writing a single build or deploy script.

Then you use it from your phone.

Next, we add a slow feature on a copy of production, your votes included, find the bottleneck with Blackfire, move the work to a background worker, and ship it safely.

No prior Symfony experience needed."

A special thanks to Upsun for sponsoring this 3rd track on November 27th.

Click here to see more talks. The full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!

Ready to join us?

🏨 Accommodation

The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our dedicated link to book your room and stay right where the action happens!

🥳 Save the date for the Community Party!

Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of Thursday, November 26. Get ready for a great night of networking, fun, and connecting with peers!

💻 Hackday

Ready to contribute? The Hackday on Saturday, November 28 (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!

🎟️ Get your tickets

Tickets are available here: Secure your ticket today!

Join us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Sponsor the Symfony project.
New in Symfony 8.2: Polymorphic Form Collections hier

The CollectionType field is the standard way of editing a list of items in a Symfony form, but it has two limitations: all its entries must use the same form type, and submitted rows are matched to entries by their position in the collection. Symfony 8.2 removes both of them.

Collections with Different Entry Types

Contributed by Michael Käfer in #63487

Consider a CMS page built from a list of blocks, where each block can be a heading, a paragraph or a footer. Each kind of block needs its own form type, so a single entry_type option is not enough. The new PolymorphicCollectionType field lets you declare one form type per kind of entry, and a provider that picks one of them for each entry:

use App\Form\Block\BlockEntryTypeProvider;
use App\Form\Block\FooterType;
use App\Form\Block\HeadingType;
use App\Form\Block\ParagraphType;
use Symfony\Component\Form\Extension\Core\Type\PolymorphicCollectionType;
// ...

$builder->add('blocks', PolymorphicCollectionType::class, [
    'entry_types' => [
        'heading' => HeadingType::class,
        'paragraph' => ParagraphType::class,
        'footer' => FooterType::class,
    ],
    'entry_type_provider' => new BlockEntryTypeProvider(),
    'allow_add' => true,
    'allow_delete' => true,
]);

When allow_add is enabled, Symfony builds one prototype per entry type and renders them as data-prototype-<name> HTML attributes (data-prototype-heading, data-prototype-paragraph, etc.), so your JavaScript code can pick the one to insert. The entry_options, prototype_options and prototype_data options work as in CollectionType, but their values are indexed by entry name.

Choosing the Type of Each Entry

Contributed by Michael Käfer in #63487

The entry_type_provider option decides which form type each entry uses. The provider receives the data of an entry in two different shapes, so it defines two methods:

namespace App\Form\Block;

use App\Entity\Footer;
use App\Entity\Heading;
use Symfony\Component\Form\EntryTypeProviderInterface;

class BlockEntryTypeProvider implements EntryTypeProviderInterface
{
    public function forModelData(mixed $data): int|string
    {
        return match (true) {
            $data instanceof Heading => 'heading',
            $data instanceof Footer => 'footer',
            default => 'paragraph',
        };
    }

    public function forSubmittedData(mixed $data): int|string
    {
        return $data['type'] ?? 'paragraph';
    }
}

The forSubmittedData() method is only needed for entries added in the browser. Their submitted data only contains the values of their fields, so each entry type in this example adds a hidden and unmapped type field with its entry name.

Naming Entries After Their Data

Contributed by Nicolas Grekas in #66217

The forms of a collection are named after the keys of its entries. If the order of the entries changes between rendering the form and submitting it (for example, because another user edited the same data), the values submitted for row 0 are written to whatever entry is now at key 0.

The new entry_name option, available in both CollectionType and PolymorphicCollectionType, names each form after the entry itself. Its value can be a property path that is read from each entry:

use Symfony\Component\Form\Extension\Core\Type\CollectionType;
// ...

$builder->add('tags', CollectionType::class, [
    'entry_type' => TagType::class,
    'entry_name' => 'id',
]);

It can also be a callable that receives the entry and its key, which is useful when some entries don't have an ID yet:

$builder->add('tags', CollectionType::class, [
    'entry_type' => TagType::class,
    'entry_name' => fn (Tag $tag, int $key) => $tag->getId() ?? 'new_'.$key,
]);

This option only changes how the form identifies each entry, not your data. If the tag with ID 42 is stored at key 0, its fields are now named post[tags][42][name] instead of post[tags][0][name], but the submitted values are still written to that tag and the collection keeps its original keys.

Caution

When using allow_add, a new row whose name matches an existing entry updates that entry. A numeric counter can match the ID of an entry, so use names that entries can't have, such as new_1.

Sponsor the Symfony project.
SymfonyCon Warsaw 2026: Works on my machine. The agent said so. hier

Always better when we learn together. SymfonyCon Warsaw 2026 is happening November 26-27, bringing developers together for 3 tracks of presentations and informal networking.

🎤 Speaker announcement

We are delighted to welcome Jonas Kröger, Senior Director, Customer Solutions, Upsun, as he takes the stage with his talk Works on my machine. The agent said so.. We can't wait to share his insights with you!

"What it takes to run coding agents in production across your team.

Every team has a coding agent that ships great code on someone's laptop, and that stops working once the whole team relies on it. Drawing on what we learned running (and building) a software factory at Upsun, we'll dig into a few problems: sandboxing untrusted code, keeping non-deterministic models on a deterministic track, giving agents shared context instead of per-developer prompt files, and evaluating agent work beyond "the tests passed."

Click here to see more talks. The full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!

A special thanks to Upsun for sponsoring this 3rd track on November 27th.

Ready to join us?

🏨 Accommodation

The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our dedicated link to book your room and stay right where the action happens!

🥳 Save the date for the Community Party!

Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of Thursday, November 26. Get ready for a great night of networking, fun, and connecting with peers!

💻 Hackday

Ready to contribute? The Hackday on Saturday, November 28 (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!

🎟️ Get your tickets

Tickets are available here: Secure your ticket today!

Join us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Sponsor the Symfony project.
Actualités
Sud Ouest - Périgny
Prix Goncourt : l’écrivain Philippe Jaenada a utilisé modérément l’IA dans son roman primé, « il faut l’apprivoiser et ne pas se faire remplacer » il y a 52 min
Le lauréat du prix Goncourt 2026, Philippe Jaenada, a révélé mercredi 4 novembre avoir intégré une phrase générée par ChatGPT dans son livre
Cyberattaque des frigos de supermarchés en Europe : pour le géant de la distribution Ahold Delhaize, l’incident va coûter jusqu’à 250 millions d’euros de chiffre d’affaires il y a 1h
Le géant de la distribution Ahold Delhaize revoit ses prévisions à la baisse après une série de cyberattaques ayant perturbé ses magasins en Europe et aux États-Unis
Réseaux sociaux : le marché des créateurs de contenu français est estimé à près de 9 milliards d’euros en 2026, selon une étude il y a 1h
Une étude du cabinet Coherent Market Insights dévoile le poids économique de l’écosystème des créateurs de contenus en France et de fortes disparités de revenus
Mobilisation lycéenne : « on a vraiment l’impression de ne pas se faire entendre », à Bordeaux, la contestation se poursuit il y a 1h
Ce mardi, près de 200 élèves ont bloqué le lycée François Magendie pour dénoncer les annonces du gouvernement sur l’éducation, jugées insuffisantes. Entre manque de professeurs, moyens budgétaires et réforme
Midterms 2026 aux États-Unis : en France, la gauche fête l’échec de Trump et dresse un parallèle avec le RN, qui ne voit aucun « rapport » il y a 1h
De Marine Tondelier à Raphaël Glucksmann en passant par Manuel Bompard ou Olivier Faure, la gauche française s’est réjouie de l’échec des républicains aux élections de mi-mandat
Ouest-France
PORTRAIT. Midterms : Jon Ossoff, l’étoile montante démocrate qui nourrit les spéculations pour la présidentielle de 2028 il y a 46 min
Réélu en Géorgie, le sénateur Jon Ossoff a de nouveau contribué à porter les démocrates vers la majorité au Sénat, se taillant une réputation nationale et nourrissant les spéculations sur une potentielle candidature à la présidentielle américaine de 2028.
Cinq lieux incontournables à voir autour de ce petit archipel breton, véritable bijou de la mer d’Émeraude il y a 46 min
L’archipel des Ébihens est un petit îlot privé situé au large du village de Saint-Jacut-de-la-Mer, dans les Côtes-d’Armor. Il est à découvrir pendant les grandes marées grâce à des visites guidées. Voici cinq sites à ne pas manquer autour de cette balade dans un cadre naturel saisissant.
ENTRETIEN. François Cusset : « Un ensemble intellectuel flou mais très tendance » il y a 47 min
Vingt ans après French Theory, l’historien des idées revient sur l’étrange destin des philosophies de Foucault, Derrida et Deleuze : récupérés par les campus américains, diabolisés par les conservateurs, mais toujours d’une actualité brûlante.
« Raclée à la Mike Tyson », « un tyran », « ouragan » : la presse salue l’écrasante domination du PSG contre Villarreal il y a 1h
Mardi 3 novembre 2026, le PSG a encore fait parler sa supériorité en ce début de saison sur la scène européenne en écrasant une faible équipe du Villarreal (0-6) lors de la 4e journée de Ligue des champions. Le lendemain, la presse espagnole ne peut que constater la supériorité de l’équipe de Luis Enrique et critiquer l’attitude des joueurs espagnols.
Le Crédit Mutuel Arkéa victime d’une cyberattaque : plusieurs millions d’euros auraient disparu il y a 1h
La banque Crédit Mutuel Arkéa a été victime d’une attaque informatique. De l’argent a été subtilisé. « Cet incident est aujourd’hui maîtrisé », assure la banque, qui indique que « cet incident n’a aucune conséquence financière » pour ses clients.
Le Monde
Midterms 2026 : Donald Trump subit une défaite historique, du Texas au Michigan il y a 1h
La défaite brutale des républicains est d’abord liée au rejet du président américain, de son administration, de sa guerre en Iran avec Israël ou de la corruption institutionnalisée. Il n’a pas tenu compte des préoccupations des électeurs, qui s’inquiètent avant tout du coût de la vie.
Midterms 2026 : James Talarico, le démocrate chrétien qui déclenche un séisme politique au Texas il y a 2h
Ce séminariste de 37 ans a mis en avant sa foi pour séduire les électeurs modérés et remporter la bataille du Sénat, dans un Etat acquis aux républicains depuis des décennies. Les attaques contre son physique ou ses propos passés en faveur des minorités ne lui ont finalement pas porté tort.
Budget 2027 : devant l’impasse des débats, Sébastien Lecornu explore la voie des ordonnances il y a 6h
Alors que l’Assemblée nationale s’apprête à rejeter la partie recettes du projet de loi de finances, le gouvernement est soupçonné de laisser filer la discussion pour mettre en œuvre son texte initial par ordonnances, une solution jugée plus sûre que le recours au 49.3 par des membres du camp présidentiel, mais aussi de l’opposition.
L’ultradroite, cette mouvance qui utilise la violence pour défendre une idéologie d’extrême droite il y a 1h
Le profil de Kevin T., l’auteur de l’attentat raciste de Trappes (Yvelines), relève de « l’ultradroite radicale violente », a confirmé le parquet, mardi 3 novembre. Un phénomène en croissance : 23 procédures liées à l’ultradroite ont été recensées depuis 2019.
Procès des parents de « la petite inconnue de l’A10 » : au kilomètre 135, un ravin, une couverture bleue et le début d’une enquête il y a 3h
Le premier témoin, un gendarme et un médecin confrontés à la vision du corps supplicié d’Inass Touloub, le 11 août 1987, ont déposé mardi devant la cour d’assises du Loir-et-Cher. A leurs souvenirs toujours vifs s’est opposé le mutisme des parents de l’enfant, Halima El Bakhti et Ahmed Touloub, jugés pour « actes de torture et de barbarie » et complicité de ce crime.
France Info
Propositions de loi, enquêtes visant l'administration et le clan Trump... Que peuvent faire les démocrates après leurs victoires lors des midterms 2026 ? il y a 2h
L'opposition démocrate a décroché la majorité au Sénat, puis à la Chambre des représentants, lors des élections de mi-mandat aux Etats-Unis, mardi.
Midterms 2026 : raz-de-marée démocrate au Congrès, les derniers résultats attendus pour la Chambre des représentants et le Sénat il y a 1h
Les démocrates ont remporté la majorité absolue dans les deux chambres du Congrès américain mardi, lors des élections de mi-mandat.
"Je serai monsieur Veto" : que pourra faire Donald Trump jusqu'à la fin de son mandat face à un Congrès démocrate, après la défaite des républicains aux midterms ? il y a 3h
Le président américain va devoir gérer un Sénat et une Chambre des représentants hostiles à sa politique, après les élections de mi-mandat.
Les démocrates remportent la majorité à la Chambre des représentants et au Sénat lors des midterms 2026 il y a 3h
L'opposition à Donald Trump signe une victoire sans appel lors des élections de mi-mandat aux Etats-Unis, un vote sanction pour le président américain deux ans après le retour du républicain à la Maison Blanche.
Les démocrates prennent le contrôle du Congrès, Donald Trump promet d'accepter les résultats… Les enseignements des midterms 2026 aux Etats-Unis il y a 2h
Les élections de mi-mandat ont débouché sur une déroute du Parti républicain, mercredi. Donald Trump, qui fait désormais face à un Sénat et à une Chambre des représentants hostiles à son action, a salué le "bon boulot" des démocrates.
Météo
Périgny
Charente-Maritime (17)
8°
Eclaircies
17 km/h · 67% · 1020.1 hPa
Mer.
12° 4°
Jeu.
13° 6°
Ven.
15° 6°
Sam.
15° 6°
Dim.
16° 7°
Triaize
Vendée (85)
8°
Faibles passages nuageux
18 km/h · 65% · 1020.3 hPa
Mer.
12° 5°
Jeu.
13° 6°
Ven.
14° 6°
Sam.
14° 5°
Dim.
16° 6°
Dernière mise à jour : 04/11/2026 à 11:47:15 · Cache : 1h · Auto-refresh : 30 min