A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 46KB

  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Noir sur blanc (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="https://nrkn.fr/blog/2017/01/28/noir-sur-blanc/">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Noir sur blanc (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="https://nrkn.fr/blog/2017/01/28/noir-sur-blanc/">Source originale du contenu</a></h3>
  445. <p>Il est plus que temps d’écrire le dernier chapitre de cette trilogie improvisée en guise de réponse à la réflexion lancée par Antoine : “<a href="https://www.quaternum.net/2017/01/06/interroger-nos-pratiques-de-publication-en-ligne/">Interroger nos pratiques de publication en ligne</a>“. <br/></p>
  446. <p>Après avoir exposé <a href="https://nrkn.fr/blog/2017/01/17/interroger-nos-pratiques-de-publication-en-ligne/">ce que représentait pour moi la démarche de publier dans un environnement auto-hébergé et auto-géré</a>, je me suis risqué à <a href="https://nrkn.fr/blog/2017/01/18/l-insoutenable-legerete-de-l-etre/">me demander ce qui pouvait bien pousser une grande majorité à préférer des plateformes comme Medium ou Facebook</a>, par exemple. J’ai émis autant de réserves dans cette démarche que j’en ai extrait de suppositions, compte tenu de mon absence de compétences dans le domaine des sciences humaines et sociales. J’insiste d’autant sur ce terme de “<i>suppositions</i>” puisque certaines de ces dernières me servent en partie de postulats pour la suite de cet article.</p>
  447. <p>Je m’offre encore le temps d’une dernière précision avant d’entrer dans le vif du sujet. Histoire de rajouter un morceau de contexte dans ce qui va suivre. Pour ceux qui ne le sauraient pas, puisqu’au fond je n’ai pas trop laissé de traces, j’ai fait partie de l’équipe “<i>canal historique</i>” du projet <a href="https://fr.dotclear.org/">Dotclear</a>. J’étais présent lors de l’accouchement de la première version stable (1.2) par <a href="https://neokraft.net/">Olivier</a>. J’étais encore dans la bande pendant la longue et douloureuse gestation de Dotclear 2 et les premiers pas de ce nouveau bébé. J’ai également trouvé le moyen de verser dans le lobbying pro-<a href="https://fr.dotclear.org/association">association</a> alors que j’avais déjà un pied et demi en dehors du projet.</p>
  448. <p>Maintenant que toutes les réserves et précisions d’usage ont été émises, nous pouvons passer à la suite…</p>
  449. <h3><span class="caps">TL</span>;<span class="caps">DR</span></h3>
  450. <blockquote><p>C’est génial !<br/>Faut tout refaire.</p><p><a href="https://neokraft.net/">Olivier Meunier</a><br/></p></blockquote>
  451. <h3>Et si nous devions revoir nos copies ?</h3>
  452. <p>Je compte parler de notre façon de concevoir les outils de publication en ligne, en tant que développeurs / contributeurs. Mais aussi de la manière de les promouvoir, de les diffuser et de les rendre séduisants auprès du plus grand nombre , en tant que projets ouverts et libres. Cela risque d’impliquer de gros mots et beaucoup de choses sales pour les plus libristes et plus évangélisateurs du lot. Du moins, c’est ce que je crois. Mais sans débat, nous n’avancerons pas.</p>
  453. <p>D’abord, nous parlons - en tout cas, je parle - souvent d’outils. Ce terme, “outil”, n’est pas sans connotations. Il y a un petit côté bricoleur. Un côté artisan et/ou passionné. Et en parlant d’outils, nous nous adressons directement à des “utilisateurs”. En face de nous, on nous toise avec des “services” et l’on s’adresse alors à des “usagers”, plus qu’à des utilisateurs. Quand il s’agit de mesurer, on parle plus volontiers de “comptes actifs” ou d‘“abonnés”, là où nous utilisons encore et toujours, presque systématiquement… “utilisateurs”. Et si cette fixation sur l‘“outil” était tellement profonde chez nous qu’elle nous aurait fait louper un glissement essentiel. À rabâcher “outil”, n’en oublions-nous pas de penser “produit” (et/ou “service”) ?</p>
  454. <p>Prenons donc l’un de nos “outils” et son projet associé et considérons désormais cela comme un produit et des services liés et voyons ce que nous pouvons en retirer. Ce sont des dents qui commencent à grincer, que j’entends ? Je n’espère pas, il est encore tôt…</p>
  455. <h3>Penser différemment le produit</h3>
  456. <p>Voilà, j’enfonce le clou avec une masse !</p>
  457. <p>Prenons comme cobaye notre blogware ou <span class="caps">CMS</span> favori. Je fais l’impasse, pour l’instant, sur la phase d’installation. Mais nous y reviendrons. Disons que l’engin est installé et fonctionnel et que nous souhaitions maintenant nous immerger enfin dans ce monde merveilleux. Bien souvent, la première impression est un “<i>humpf!</i>“…</p>
  458. <h4><span class="dquo">“</span>Cachez cette administration que je ne saurais voir !”</h4>
  459. <p>La grande majorité des moteurs de blog et autres <span class="caps">CMS</span> présente ce même “travers” : vous tombez par défaut sur une interface d’administration et/ou un tableau de bord. La liste des derniers articles publiés, des dernières réactions reçues, etc. Ce n’est plutôt pas mal me direz-vous. Surtout si vous êtes actuellement blogueur. Oui, vous avez été conditionné ou vous vous êtes conformé à un certain moule…</p>
  460. <p>Si les versions successives sont devenues un peu plus “<i>user friendly</i>” avec le temps, elles demeurent l’incarnation d’une certaine pensée “geek et technique” de leurs créateurs. Mais ne jetons pas la pierre à qui que ce soit : cette bonne vielle page de tableau de bord reste très pratique. Je ne la remets d’ailleurs pas en question. C’est sa prédominance que je trouve gênante.</p>
  461. <p>Avec un peu de recul, avec l’expérience de certains réseaux sociaux ou autres services de publication, j’estime désormais que nous lui avons vraisemblablement accordé une place trop importante. Pour quelle raison principe nous connectons-nous à ce back-office ? Pour administrer, surveiller ou… Publier ? On pourra toujours me rétorquer “pour modérer les commentaires”, mais ça restera un petit morceau de mauvaise foi.</p>
  462. <h4>Rendre sa priorité à l’acte de publier</h4>
  463. <p>D’ailleurs, très tôt dans le cycle de vie de Dotclear, Olivier avait introduit une zone “<i>QuickPost</i>” au sein de ce fameux tableau de bord. L’idée a depuis été abandonnée - me semble-t-il - car elle n’avait pas les faveurs du plus grand nombre. Sans doute parce que son intégration était un peu prématurée, ou maladroite, ou contre nature compte tenu de ce qui l’accompagnait alors</p>
  464. <p>Mais maintenant - bien plus qu’alors, je l’avoue -, je pense qu’il s’agissait d’une très bonne idée.</p>
  465. <p>Ainsi, en lieu et place d’une entrée “Nouveau billet” dans un menu ou sous forme de bouton dans le tableau de bord, pourquoi ne pas réintroduirions-nous pas une telle zone de saisie ? Réfléchissons à comment la rendre flexible mais surtout simple et efficace. Comment faire en sorte de lever un frein et favoriser le passage à l’acte ? Comment inciter notre utilisateur/usager à créer et diffuser son contenu en lui facilitant la tâche ? Tout cela dans le but évident que cette tâche soit réalisée sur son système, sur son serveur, dans sa demeure.</p>
  466. <p>J’ai glissé, en catimini, la notion de flexibilité dans l’une des phrases précédentes. Ce n’était pas innocent. C’était même un complot pour tordre le cou à ce bon vieux “<i>Billet</i>” ou “<i>Article</i>“. Oui, oui, si je continue à m’en prendre à toutes ces parties qui caractérisent tant nos systèmes actuels, ça risque de finir en génocide, non ?</p>
  467. <p>Pour l’instant, je vous laisse avec l’idée d’une réponse de normand.<br/></p>
  468. <h4>Du contenu. Pas des billets ou des articles. Du contenu, bon sang !</h4>
  469. <p>Le weblog a toujours été vu comme la transposition sur le Web du principe de journal ou de carnet papier, comme certains d’entre nous pouvaient en tenir (et en tiennent toujours, à mon avis). Dans mes carnets, je ne laisse pas que de longues litanies sur mes émois ou de longues (et pseudo) réflexions métaphysiques. Il y a également de simples notes. Des listes de tâches. Des post-it en guise de pièces rapportées qui peuvent contenir des choses exotiques (si, si, j’ai des post-it avec des adresses <span class="caps">IP</span> et des numéros de ports, par exemple). Des schémas ou autres dessins. Etc.</p>
  470. <p>Si tout cela n’a pas forcément sa place sur un blog, en partie publique qui plus est, cet inventaire est tout de même transposable dans ce contexte. Nous avons besoin de publier des “trucs” dans des tailles et des formats hétéroclites. Dès lors, pourquoi vouloir tout faire rentrer dans la notion de “billet”. Évidemment, le “post” anglo-saxon est sans doute moins marqué “article”. Dans la même veine, il y a déjà des systèmes qui proposent des types de “posts” différents ou qui permettent de construire des déclinaisons. Mais ce que j’en ai vu jusqu’à maintenant, tant chez Dotclear que chez <a href="https://wordpress.org/">WordPress</a>, ne me parait pas suffisamment intuitif pour tout un chacun.</p>
  471. <p>Oh ? Mais…</p>
  472. <p>… Entre le “<i>QuickPost</i>” et les multiples types de contenus traités sur un mode d’égal à égal, ne serait-ce pas <a href="https://www.tumblr.com">Tumblr</a> que je décrirais tranquillement là ?<br/></p>
  473. <h4>Un modèle nommé Tumblr ?</h4>
  474. <p>Mais pourquoi pas ?</p>
  475. <p>S’il y a bien une plateforme que je serais apte à qualifier de “<i>micro-blogging</i>“, c’est indiscutablement Tumblr. Aussi ludique que Twitter à l’utilisation mais bien plus riche et plus souple au niveau du contenu publiable. J’utilise sciemment le qualificatif “ludique”, puisque le but de ma réflexion, je vous le rappelle, est de déterminer comment attirer et de “<i>capt(iv)er</i>” le plus grand nombre possible d’usagers. Présenté comme cela, ça pourrait néanmoins être réduit au fait de proposer un moteur de blog auto-hébergé orienté grand public. S’arrêter là serait, à mon avis, dommage et n’aurait pas fait avancer le schmilblick d’un poil.</p>
  476. <p>Surtout sans parler de la notion d’abonnés et d’abonnements que nous retrouvons sur ces deux services (mais également sur ton bon réseau social digne de ce nom). Car, si j’essaie d’être logique avec moi-même - chose pas toujours très évidente, je vous le concède -, il faudrait penser notre solution non plus pour un(e) auteur(e) à tendance ours(s) solitaire mais également pour un animal social à tendance colibri. Pour ceux qui n’auraient pas suivi, je fais allusion <a href="https://nrkn.fr/blog/2017/01/18/l-insoutenable-legerete-de-l-etre/">au fameux besoin d’appartenance que je soupçonne et que j’ai rapidement abordé dans le “volume” précédent</a>.<br/></p>
  477. <p>Notre outil/produit ne pourra fort logiquement pas adresser cet aspect-là à lui tout seul. Mais nous pourrions déjà lui adjoindre un pan en lui faisant embarquer l’agrégation de flux <span class="caps">RSS</span>/Atom, dans un premier temps. Au passage, nous pourrions envisager de nous débarrasser d’un autre service tiers tel qu’un Feedly, par exemple, pour ceux qui comme moi y ont recours. Un tel système embarqué permettrait d’envisager 2 changements majeurs : l’introduction d’une fonction “reblog”, très proche de ce que propose Tumblr ou sous une forme un peu plus édulcorée et surtout plus saine pour remonter à l’origine du contenu, ainsi qu’une notion de… <i>&lt; roulements de tambour &gt;</i>… timeline !</p>
  478. <p>Oui, oui ! Une timeline en guise de cœur battant du back-office. <br/></p>
  479. <h4>Non, je ne suis pas en plein trip sous <span class="caps">LSD</span>…</h4>
  480. <p>Faisons juste preuve d’un petit peu d’imagination. Au-delà du “<i>reblog</i>“/”<i>repost</i>“, nous pourrions également implémenter une méthode pour commenter depuis chez soi, sans avoir à faire un véritable post soi-même. En gros, une sorte de webmention qui ne dirait pas son nom et qui serait également l’équivalent d’une réponse sur Twitter. Poussons le bouchon jusqu’à intégrer ce cher “<i>Like</i>“. Vous voyez le tableau ou je dois vous faire un dessin ?</p>
  481. <p>Non, je ne parle pas d’héberger l’équivalent d’un réseau social chez vous, sur votre machine personnelle ou sur un bout de serveur dédié. Cela reviendrait à faire un nouveau silo, à la pérennité plus fragile et à l’intérêt moindre. Cette approche-là existe déjà ou a déjà été tentée. Si cela peut avoir un peu de sens au sein d’une entreprise, par exemple, je n’en vois aucun en dehors de ce contexte. Ce dont je parle, c’est de transformer (ou adapter) votre demeure en nœud d’un réseau social entièrement décentralisé.</p>
  482. <p>Introduisons maintenant les <a href="https://www.w3.org/TR/activitystreams-core/">Activity Streams</a>. Publier devient une activité. Commenter depuis chez vous, devient une activité, etc. Notre cher produit/outil ne se contenterait plus de créer un fil <span class="caps">RSS</span>/Atom, il pourrait également publier un fil de votre activité. Et au même titre que nous parlions un peu plus haut d’agréger des fils de contenus, nous pourrions intégrer ces fils d’activités en provenance des systèmes compatibles utilisés par vos pairs. Un bon vieux principe d’abonnements/d’abonnés.</p>
  483. <p>Comme nous ne changerons pas les habitudes de tous du jour au lendemain, ni ne devons nous couper du monde des silos, il faudrait également que nos solutions puissent aisément émettre des notifications vers les différents réseaux sociaux. De nombreuses solutions existent déjà pour répondre à ce besoin, telles que Buffer, <span class="caps">IFTTT</span> ou Zapier. Mieux : nous avons même des alternatives libres qui apparaissent. N’est-ce pas, <a href="https://trigger-happy.eu/">Trigger Happy</a> ? N’est-ce pas, <a href="https://brid.gy/">Bridgy</a> ?</p>
  484. <p>Techniquement, les charges d’agrégations et de notifications devraient pouvoir trouver des réponses acceptables, à court terme, en travaillant sur la base de <a href="https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html">PubSubHubbub</a>. Idéalement, l’outil/produit devrait pouvoir fonctionner autant en client qu’en serveur PuSH. Mais un mode dégradé pourrait être possible, en déléguant une partie de cette mécanique.</p>
  485. <p>Et la boucle est presque bouclée.<br/></p>
  486. <h4>Pour un choix ajouté, 10 choix masqués</h4>
  487. <p>Voilà une offre alléchante, n’est-ce pas ?</p>
  488. <p>De fait, le choix est typiquement la médaille et son revers des offres actuelles (je parle toujours de nos outils “libres”). Pour une grosse poignée d’utilisateurs, les choix sont synonymes de liberté et de contrôle. Au moment de l’installation et du paramétrage, l’outil va présenter une multitude d’options. Au moment de la personnalisation, l’outil va présenter une multitude d’options. Au moment de publier, l’outil va présenter une multitude d’options. Bien entendu, il y a un peu d’aide et quelques recommandations pour faire les bons, pour ne retenir parmi toutes ces options que les bonnes, c’est-à-dire celles qui nous intéressent. Je fais partie de cette grosse poignée, je l’avoue.</p>
  489. <p>Mais, parfois, je me laisserais bien aller à un peu plus de facilité. Et je comprends alors l’épouvante que peut subir une plus grosse poignée d’utilisateurs potentiels. Trop de choix, ça fait peur. Ça demande de réfléchir et de comprendre avant même de pouvoir faire quoi que ce soit. Avant même d’être certain que le choix déjà fait pour choisir l’outil est bien le bon. Et si nous simplifions tout cela ? Et si je faisais hurler quelques uns d’entre vous en proposant non pas d’enlever des options mais d’en choisir les valeurs par défaut, passant ainsi de l’opt-in systématique à l’opt-out ?</p>
  490. <p>Notre utilisateur devenu usager se verrait peu à peu confier les pleines responsabilités. Quand il se sentirait prêt. Quand il serait impliqué et intéressé. Il découvrirait qu’il pourrait choisir un tout autre thème pour son chez lui et pas seulement un bandeau et une palette. Il découvrirait qu’il pourrait restreindre les commentaires et les rétroliens sur chaque billet s’il le souhaitait. Qu’il pourrait protéger l’accès à une section entière ou à une page, s’il le souhaitait. Qu’il pourrait décider de mettre une description complémentaire / alternative, s’il le souhaitait. Qu’il pourrait décider d’apprendre, de devenir utilisateur/artisan/passionné, s’il le souhaitait. Ou d’occulter tout cela à tout jamais, s’il le souhaitait.</p>
  491. <p>Et pour en revenir au point central de l’interface back-office, il y aurait un nouveau choix à prévoir et à laisser bien visible selon moi : le mode d’utilisation. Choisir entre un mode “live”, qui serait cet affichage en <i>timeline</i> façon Twitter avec du post rapide façon Tumblr, et un mode “zen”, qui serait une interface d’écriture proche de ce qu’offre <a href="https://medium.com/">Medium</a>.<br/></p>
  492. <h4>C’est bon, là ? Ou il y en a encore ?</h4>
  493. <p>Il y en aurait encore beaucoup, à mon avis. D’ailleurs, j’espère qu’il y en aura encore beaucoup suite à la lecture de ce billet et aux réactions que cela pourrait susciter. <br/></p>
  494. <p>Notez, pour l’exemple, que j’ai volontairement évité de discuter d’éventuelles applications mobiles natives. Pourtant, plus j’y réfléchis, plus que je crois que ce passage serait obligé. Ce ne serait pas des applications complètes qui viendraient singer ce que nous pouvons obtenir au sein d’un navigateur. Ce serait plutôt des compléments permettant de s’intégrer profondément et parfaitement dans les usages du système mobile hôte.</p>
  495. <p>Mais, au delà de l’outil/produit, il y a le projet, comme nous l’appelons souvent.<br/></p>
  496. <h3>Réorienter le projet et redéfinir ses services</h3>
  497. <p>Actuellement, derrière chaque outil, il y a une équipe, une communauté, un écosystème complet - ou presque -. C’est tout cela que je case sous l’étiquette “projet et services associés” afin de me simplifier la vie pour la suite de mon exposé.</p>
  498. <p>Nous retrouvons majoritairement des bénévoles et cela ne va pas sans poser de problèmes. Problèmes de disponibilité, risques de lassitude - quand cela ne frôle pas le burn-out -, absences de moyens, etc. Pourtant, je vais trouver le culot de leur charger encore un peu plus la mule. Drôle de remerciement, n’est-ce pas ?</p>
  499. <p>Car, oui, au-delà du code de l’outil, de la documentation et du support, d’autres tâches attendent ces braves troupes si nous voulons envisager une reconquête du Web. Et nous y trompons pas : si cela n’apparait qu’en filigrane, c’est pourtant bien ce dont il s’agit. Avec un tel objectif, quelques tâches techniques supplémentaires seront nécessaires. Côté développement - évidemment - mais également sur des aspects d’exploitation et d’opérations.</p>
  500. <p>Mais les défis à relever ne seront pas exclusivement techniques ou documentaires. En cela, les projets actuels auraient tout intérêt à séduire et recruter d’autres types de profils.<br/></p>
  501. <h4><span class="dquo">“</span>Notre produit est bon. Mais attendez de voir nos services…”<br/></h4>
  502. <p>Nous pourrions convenir que les services qu’offre un projet tiennent dans cette liste : la production et la distribution du produit, la documentation et le support (essentiellement sur la base d’un forum et d’une <span class="caps">FAQ</span>). Et si cela n’était en fait que le package produit ? Tiens, d’ailleurs, je pousse la provocation jusqu’à l’affirmer ouvertement. Mais alors quels seraient les services ?</p>
  503. <p>Sur l’infrastructure du projet, nous pourrions avoir un principe d’annuaire. Cet annuaire serait alimenté automatiquement à chaque création d’un nouveau site avec l’outil. Au moment de l’installation de l’outil, ou de la création d’un nouveau site avec ce dernier (pour les outils multi-sites), une entrée serait créée dans l’annuaire (pour peu que l’<span class="caps">URL</span> du nouveau site soit publique, bien entendu). Et régulièrement, les thématiques associées à ce site seraient évaluées et mises à jour en fonction des publications.</p>
  504. <p>La bonne vieille blogroll telle que nous la connaissions pourrait se transformer de fait en une liste d’abonnements. Ces abonnements pourraient alors être vérifiés auprès de l’annuaire du projet (en premier lieu, mais pas que) et deviendraient alors actifs. Cela déclencherait ainsi l’agrégation des contenus et, éventuellement, des activités en provenance de chacun de ses abonnements. Chaque source recevrait également une notification d’un nouvel abonné (et l’<span class="caps">URL</span> du site correspondant, au minimum).</p>
  505. <p>De cet annuaire, le projet pourrait également en décliner un portail de contenus : simplement un gros “<i>Planet</i>” présentant les extraits agrégés, renvoyant directement vers la source de chacun mais également indexant le contenu de chacune (en total respect du fichier <i>robots.txt</i>, cela va de soi) et pouvant ainsi servir de moteur de recherche.</p>
  506. <p>L’image se fait-elle plus nette ?<br/></p>
  507. <h4>L’union fait la force (et l’oignon, la soupe)</h4>
  508. <p>J’ai soupé des querelles de clochers qui polluent régulièrement les projets libres. Qu’il s’agisse des débats houleux et stériles sur le mode “telle techno est meilleure que telle autre” ou encore “<span class="caps">XXX</span> sucks! <span class="caps">YYY</span> rocks!”. Sérieusement ? Nous ne serions pas de sérieuses bandes de cons ? Le mode interrogatif n’est là que pour la rhétorique. Désolé pour le spoiler.</p>
  509. <p>La charge de travail nécessaire pour assurer la mise en œuvre et le bon fonctionnement des quelques services donnés en exemple dans le paragraphe précédent justifierait qu’elle soit partagée. Que les travaux soient mutualisés et qu’une véritable collaboration sur ces aspects s’installe entre des projets “concurrents”. Trois d’entre eux reposent sur <span class="caps">PHP</span> ? Parfait ! Il y a 3 groupes de développeurs en mesure de travailler sur une implémentation de référence commune dans ce langage. Rien n’empêche ensuite chacun de ces groupes de travailler sur une surcouche de spécialisation propre à son produit, si son projet le juge souhaitable. Mais pitié… Arrêtons de réinventer la roue à chaque fois, de chaque côté.</p>
  510. <p>Et évitons également le communautarisme. Je parlais d’annuaire et d’abonnés/d’abonnements. Connectons-les entre eux ! Qu’est-ce qui a fini par vous échapper dans le sens premier d’”<i>Internet</i>” ? Faut-il vraiment que je vous dessine une toile d’araignée pour que vous vous rappeliez ce qu’il y a derrière le terme “<i>Web</i>” ? Nous crions à la liberté et à l’ouverture. Franchement, notre propre application de l’ouverture n’est pas uniquement discutable. Elle en devient parfois risible. Nos discours sont beaux. Passons aux actes et à la pleine mise en application. Prouvons en montrant l’exemple. Et ce sera également l’occasion de vérifier si nous ne nous trompons pas.<br/></p>
  511. <h4><span class="dquo">“</span>T’es gentil, Bibi. Mais… Il faut du monde et des moyens pour tes idioties !”</h4>
  512. <p>Effectivement. Je n’ai dit ni le contraire ni que ce serait facile.</p>
  513. <p>D’après moi, il faudrait commencer par les nouvelles recrues. Et là aussi, beaucoup des équipes actuelles pourraient être amenées à faire preuve d’une plus grande ouverture. De nouveaux profils, de nouvelles compétences : des gestionnaires, des négociateurs, des vendeurs et des acheteurs, des juristes et des avocats. Comble du comble : même des “<i>marketeux</i>“ !</p>
  514. <p><i>&lt; Hérésie ! Hérésie ! &gt;</i></p>
  515. <p>Et pourtant… Ce serait peut-être le premier type de profils à recruter. Justement pour nous aider à attirer les autres. Les dernières neiges de l’utopie du Web sont en train de fondre très rapidement. L’horloge tourne vite et nous devons admettre que l’évangélisation seule prend trop de temps. Pire, elle ne suffira jamais. Il faut lui adjoindre des techniques d’influence et de séduction. Notre discours, notre démarche doivent être affutés, alignés sur les standards actuels de notre société. Il n’est pas question d’en changer le fond mais les formes.</p>
  516. <p>Nos projets ont besoin de gagner en visibilité et en notoriété pour pouvoir grimper en “puissance”. Ne serait-ce que pour ces questions de moyens nécessaires pour assurer de bons niveaux de services. Il y aura besoin de connectivité, de serveurs, de stockage. Dans des proportions que les seuls dons ou cotisations aux associations ne pourront sans doute suffire à couvrir. Il faudra donc aller négocier du sponsoring, du partenariat. Faire comprendre aux hébergeurs indépendants qu’ils ont tout à gagner en fournissant gracieusement quelques VMs et gigaoctets à des projets qui sont les derniers remparts face à des silos qui ne leur confieront jamais la gestion de leurs infrastructures. En tout cas jamais dans des conditions financières saines. <br/></p>
  517. <h4>Travailler à l’instauration d’un cercle vertueux<br/></h4>
  518. <p>Les Google, Microsoft, Facebook, Amazon et autres (ne nous limitons pas aux seuls GAFAs, Ok ?) remettent en question un bon nombre de libertés mais menacent également tout un écosystème : petits éditeurs, hébergeurs indépendants et même certains vendeurs de noms de domaines. Autant d’alliés qu’il nous faudrait gagner. Il faudra donc parfois également savoir parler d’argent. Comprendre qu’il en faut, c’est comme ça et nous n’y changerons rien d’un coup de baguette magique. Comprendre que rentabilité ne signifie pas forcément profit. Qu’un peu de profit pour alimenter les investissements, ce n’est pas sale. Arrêter de se raconter des craques et de se contenter de se bercer d’illusions. Ainsi, il faudra jouer le jeu commercial et savoir renvoyer la balle.</p>
  519. <p>Un hébergeur aura tout à gagner à s’associer avec un projet si ce dernier lui permet également de gagner de nouveaux clients. Tout cela peut se faire intelligemment. Des équipes mixtes peuvent se concentrer sur le bon déploiement et les bonnes performances de l’outil chez l’hébergeur. Le projet peut émettre des recommandations auprès des utilisateurs en quête d’une solution d’hébergement. Il n’y a aucun mal à cela tant que cela se fait dans la transparence et dans l’intérêt premier des utilisateurs mais également des autres parties prenantes. Je vous invite à relire le paragraphe juste au dessus si vous ressentez déjà l’envie de maugréer.</p>
  520. <p>Et de tels alliés pourraient également aider à porter d’autres projets un peu fous. Pourquoi ne pas imaginer un soutien à l’<a href="https://www.eff.org/"><span class="caps">EFF</span></a> en vue d’une démarche auprès de l’<span class="caps">ICANN</span> et de l’<span class="caps">IANA</span> destinée à la création d’une extension générique ? L’<span class="caps">EFF</span> pourrait alors gérer ce nouveau registre afin de fournir des noms de domaines aux <i>Netizens</i> enfin retrouvés, à la façon qui se répand actuellement pour les certificats avec <a href="https://letsencrypt.org/">LetsEncrypt</a>.</p>
  521. <p>Ne pas se bercer d’illusions n’implique pas non plus d’arrêter de rêver…<br/></p>
  522. <h3>Concevons les réponses ensemble</h3>
  523. <p>Je m’imaginais être en mesure de faire un texte plus bref, plus condensé. Malheureusement, je manque de pratique et je ne souhaitais pas laisser trainer cela plus longtemps. J’aurais encore beaucoup à dire. Beaucoup à écrire, à corriger, à préciser. Beaucoup trop pour une personne seule. Avec beaucoup trop de risques d’une approche condamnée à être biaisée, pour cette dernière raison. Et puis cette grosse montagne pourrait bien n’accoucher que d’une minuscule souris (sans fil ?).<br/></p>
  524. <p>Ne vous y trompez pas. Ce texte n’est pas un manifeste. Je n’ai fait que mettre noir sur blanc une grosse poignée d’idées et de réflexions qui me traversent la tête ou m’occupent l’esprit depuis plusieurs années, de manière récurrente. Tout cela a ressurgi avec l’incitation d’Antoine à réfléchir et débattre du propos de la publication en ligne. Je me suis donc précipiter par l’entrebâillement de porte ainsi présenté.</p>
  525. <p>Pour les plus “techos” d’entre vous, vous aurez noté que je ne parle pas de Blockchain, d’<span class="caps">IPFS</span>, etc. C’est volontaire. Il y a sans doute de vrais gros et beaux potentiels derrière tout cela. Je garde d’ailleurs un œil rivé sur tout ce qui peut porter une étiquette “<i>Decentralized Web</i>“. Mais tout ceci est encore trop loin de la maturité et nous manquons cruellement de retours d’expériences. Ce qui n’est pas le cas de ces bons <span class="caps">HTTP</span>, <span class="caps">JSON</span>, <span class="caps">XML</span> et consorts, protocoles et formats avec lesquels les vieux routards du Web sont familiers.</p>
  526. <p>Tout ce qui figure dans ce texte est critiquable et devrait être critiqué. La seule condition étant de le faire dans une démarche constructive. D’ailleurs, je vous invite tous à envisager <a href="http://www.christian-faure.net/2013/06/05/lapproche-pre-mortem-dun-projet/">une approche pre-mortem</a>. Pour chaque frein identifié, essayez de livrer des pistes pour tenter de le lever. Et pour lever toute ambiguïté, en cas de besoin si ça peut servir, <a href="https://creativecommons.org/licenses/by/4.0/">ce texte est sous licence Creative Commons 4.0 - Attribution (<span class="caps">CC</span>-<span class="caps">BY</span>)</a>.</p>
  527. <p>Sinon…<br/>On en rediscute ensemble quand vous voulez !<br/></p>
  528. </article>
  529. </section>
  530. <nav id="jumpto">
  531. <p>
  532. <a href="/david/blog/">Accueil du blog</a> |
  533. <a href="https://nrkn.fr/blog/2017/01/28/noir-sur-blanc/">Source originale</a> |
  534. <a href="/david/stream/2019/">Accueil du flux</a>
  535. </p>
  536. </nav>
  537. <footer>
  538. <div>
  539. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  540. <p>
  541. Bonjour/Hi!
  542. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  543. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  544. </p>
  545. <p>
  546. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  547. </p>
  548. <p>
  549. Voici quelques articles choisis :
  550. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  551. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  552. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  553. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  554. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  555. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  556. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  557. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  558. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  559. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  560. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  561. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  562. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  563. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  564. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  565. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  566. </p>
  567. <p>
  568. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  569. </p>
  570. <p>
  571. Je ne traque pas ta navigation mais mon
  572. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  573. conserve des logs d’accès.
  574. </p>
  575. </div>
  576. </footer>
  577. <script type="text/javascript">
  578. ;(_ => {
  579. const jumper = document.getElementById('jumper')
  580. jumper.addEventListener('click', e => {
  581. e.preventDefault()
  582. const anchor = e.target.getAttribute('href')
  583. const targetEl = document.getElementById(anchor.substring(1))
  584. targetEl.scrollIntoView({behavior: 'smooth'})
  585. })
  586. })()
  587. </script>