{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreicqm7fdy3pwfv7xf6e3a3jvwegufgfx6u4zuwvt6wjth6bsmxac44",
"uri": "at://did:plc:j5mqslyzgl77u6fdkb6wk662/app.bsky.feed.post/3mp4xqf53pje4"
},
"content": {
"$type": "org.wordpress.html",
"html": "<h2 class=\"wp-block-heading\">RFC sur Atmosphere</h2>\n<span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{"id":18175,"href":"https:\\/\\/www.disnetdev.com\\/blog\\/rfcs-on-the-atmosphere","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18176,"href":"https:\\/\\/requested.fyi","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":17981,"href":"https:\\/\\/atproto.com","archived_href":"https:\\/\\/web-wp.archive.org\\/web\\/20260620111107\\/https:\\/\\/atproto.com\\/","redirect_href":"","checks":[{"date":"2026-06-20 20:38:48","http_code":200},{"date":"2026-06-24 01:36:44","http_code":200}],"broken":false,"last_checked":{"date":"2026-06-24 01:36:44","http_code":200},"process":"done"},{"id":18003,"href":"https:\\/\\/constellation.microcosm.blue","archived_href":"https:\\/\\/web-wp.archive.org\\/web\\/20260619200433\\/https:\\/\\/constellation.microcosm.blue\\/","redirect_href":"","checks":[{"date":"2026-06-20 20:40:16","http_code":404}],"broken":false,"last_checked":{"date":"2026-06-20 20:40:16","http_code":404},"process":"done"},{"id":18177,"href":"https:\\/\\/requested.fyi\\/d\\/did:plc:4vjd3fe2cgzq5d24j4f3zvar\\/3mmrzwwxz2w2l","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18178,"href":"https:\\/\\/www.disnetdev.com\\/blog\\/an-atmospheric-website","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":934,"href":"https:\\/\\/bsky.app","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"done"},{"id":18179,"href":"https:\\/\\/skyreader.app","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18180,"href":"https:\\/\\/skyboard.dev","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18181,"href":"https:\\/\\/sembleit.dev","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18182,"href":"https:\\/\\/semble.pub","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18183,"href":"https:\\/\\/overreacted.io\\/a-social-filesystem","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18184,"href":"https:\\/\\/standard.site","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":17988,"href":"https:\\/\\/leaflet.pub","archived_href":"https:\\/\\/web-wp.archive.org\\/web\\/20260619141022\\/https:\\/\\/leaflet.pub\\/","redirect_href":"","checks":[{"date":"2026-06-20 20:39:01","http_code":200},{"date":"2026-06-24 14:47:42","http_code":200}],"broken":false,"last_checked":{"date":"2026-06-24 14:47:42","http_code":200},"process":"done"},{"id":18185,"href":"https:\\/\\/pckt.blog","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18186,"href":"https:\\/\\/offprint.app","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18187,"href":"https:\\/\\/www.disnetdev.com\\/blog","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18188,"href":"https:\\/\\/www.disnetdev.com\\/reading","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"},{"id":18189,"href":"https:\\/\\/www.disnetdev.com\\/library","archived_href":"","redirect_href":"","checks":[],"broken":false,"last_checked":null,"process":"new"}]\"></span>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https://www.disnetdev.com/blog/rfcs-on-the-atmosphere\">RFCs on the Atmosphere</a> publié le 30 mai 2026. </p>\n\n\n\n<p class=\"wp-block-paragraph\">Je travaillais récemment sur une RFC dans le cadre d’un projet open source et je ne savais pas vraiment où la publier. Google Docs n’est pas pratique pour tout ce qui est technique, et un dépôt Git, c’est trop lourd si on n’en a pas déjà un en place avec un processus prêt à l’emploi.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce que je cherchais, c’était un site Web spécialisé qui permette simplement de publier des documents au format Markdown sur lesquels les gens peuvent laisser des commentaires.</p>\n\n\n\n<p class=\"wp-block-paragraph\">J’ai donc créé <a href=\"https://requested.fyi/\">requested.fyi</a>, un site Web qui répond exactement à ce besoin.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui est génial : mon site Web n’héberge ni les documents ni les commentaires. Requested est une application Atmospheric; les documents résident donc sur le PDS <a href=\"https://atproto.com/\">atproto</a> de l’auteur, qu’il contrôle<sup class=\"modern-footnotes-footnote modern-footnotes-footnote--hover-on-desktop \" data-mfn=\"1\" data-mfn-post-scope=\"00000000000009070000000000000000_10816\"><a href=\"javascript:void(0)\" role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000009070000000000000000_10816-1\">1</a></sup><span id=\"mfn-content-00000000000009070000000000000000_10816-1\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"1\">Notez que « contrôlé » ne signifie pas que vous devez le gérer vous-même. Lorsque vous vous inscrivez pour obtenir un compte Bluesky (ou Blacksky, Eurosky, etc.), vous recevez <strong>gratuitement un PDS géré par Bluesky </strong>qui stocke toutes vos données. Ce qui est génial avec atproto, c’est que le protocole facilite le transfert de la gestion de votre PDS à quelqu’un d’autre quand vous le souhaitez.</span>, et les commentaires sont hébergés sur le PDS de la personne qui les a publiés (avec un lien vers le document et, au choix, vers une ligne spécifique).</p>\n\n\n\n<p class=\"wp-block-paragraph\">C’est à peu près tout! L’application Requested n’a pas de backend compliqué. Elle se contente d’interroger et de mettre en cache les enregistrements de documents provenant du PDS de l’auteur, puis utilise <a href=\"https://constellation.microcosm.blue/\">constellation</a> pour trouver les commentaires liés.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Essayez-la si vous avez des documents sur lesquels vous souhaitez obtenir des commentaires!</p>\n\n\n\n<p class=\"wp-block-paragraph\">À ce propos, si vous souhaitez apporter votre aide, j’ai rédigé un <a href=\"https://requested.fyi/d/did:plc:4vjd3fe2cgzq5d24j4f3zvar/3mmrzwwxz2w2l\">document expliquant comment ajouter une phase de préproduction</a> à Requested. Jetez-y un coup d’œil et laissez un commentaire si vous avez des suggestions!</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n\n\n\n<h1 class=\"wp-block-heading\">Un site Web Atmospheric</h1>\n\n\n\n<p class=\"wp-block-paragraph\">Traduction de <a href=\"https://www.disnetdev.com/blog/an-atmospheric-website\">An Atmospheric Website</a>, paru le 23 avril 2026</p>\n\n\n\n<p class=\"wp-block-paragraph\">Notes sur la cinquième et dernière migration.</p>\n\n\n\n<p class=\"wp-block-paragraph\">J’ai migré ce blogue quatre fois au cours des 20 dernières années<sup class=\"modern-footnotes-footnote modern-footnotes-footnote--hover-on-desktop \" data-mfn=\"2\" data-mfn-post-scope=\"00000000000009070000000000000000_10816\"><a href=\"javascript:void(0)\" role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000009070000000000000000_10816-2\">2</a></sup><span id=\"mfn-content-00000000000009070000000000000000_10816-2\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"2\">Mon premier billet date de 2006 environ, mais il s’est perdu lors d’une migration en cours de route. Heureusement, même Internet Archive n’a pas trace de mes premiers billets, lol</span>. WordPress, Jekyll, Hugo, Eleventy. Tous les quelques années, je troquais une série de compromis contre une autre en me disant que c’était la dernière fois.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Il s’agit de la cinquième migration. C’est aussi la dernière. Non pas parce que j’ai enfin trouvé le générateur de site statique parfait, mais parce que le blogue n’est plus vraiment d’actualité. Mon site Web est désormais une <em>vue</em> sur un dépôt que je contrôle sur le réseau ouvert, et le blogue n’est qu’un des éléments que cette vue peut afficher.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la communauté atproto, les applications construites sur le protocole sont appelées « Atmospheric ». Ainsi : mon site web est désormais Atmospheric, et cet article explique ce que cela signifie concrètement.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Le cycle sans fin des migrations</h2>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque plateforme de blogue que j’ai utilisée a été un compromis.</p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress m’offrait un CMS, mais me liait à une pile technique que je ne souhaitais pas entretenir. Jekyll, Hugo et Eleventy m’offraient le contrôle et des fichiers Markdown simples, ce que j’adorais, mais ils liaient discrètement la publication à mon ordinateur portable. Pour publier quelque chose, je devais me trouver devant la bonne machine, dans le bon environnement, avec les bons fichiers, dans la bonne branche Git. Si une idée me venait sur mon téléphone, elle devait attendre.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Et les données (articles, ébauches, liens que je voulais partager, livres que je lisais) étaient éparpillées entre un dossier sur mon ordinateur portable, un compte Bluesky, une application de lecture et une application de notes. Mon site Web « personnel » ne montrait qu’une infime partie de moi, car la plupart de mes données se trouvaient ailleurs.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Je voulais une configuration où la source de vérité ne soit pas un dossier sur un seul ordinateur, et où mon site Web puisse puiser dans tous les endroits où je passe réellement du temps en ligne.</p>\n\n\n\n<h2 class=\"wp-block-heading\">C’est là qu’intervient atproto</h2>\n\n\n\n<p class=\"wp-block-paragraph\">Au cours des derniers mois, je me suis plongé dans <a href=\"https://atproto.com/\">atproto</a>, le protocole derrière <a href=\"https://bsky.app/\">Bluesky</a> et un écosystème grandissant d’autres applications. J’ai déjà lancé quelques projets dessus : <a href=\"https://skyreader.app/\">Skyreader</a> (un lecteur RSS), <a href=\"https://skyboard.dev/\">Skyboard</a> (un tableau Kanban) et <a href=\"https://sembleit.dev/\">SembleIt</a> (un client alternatif pour <a href=\"https://semble.pub/\">Semble</a>, un outil permettant de recueillir et de partager des liens de recherche).</p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui m’a séduit chez atproto, c’est la façon dont il inverse la relation habituelle entre les applications et les données.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans une application Web classique, vos publications, vos signets, vos notes et vos tâches constituent des lignes dans la base de données de quelqu’un d’autre. Sur atproto, vos données résident dans votre propre dépôt, hébergé sur un serveur qui, de par sa conception, peut être déplacé. Les applications écrivent dans votre dépôt en utilisant des schémas partagés. Les publications Bluesky, les partages Skyreader, les fiches Semble et tout ce qui viendra ensuite peuvent tous coexister dans le même écosystème, affichés par différents clients<sup class=\"modern-footnotes-footnote modern-footnotes-footnote--hover-on-desktop \" data-mfn=\"3\" data-mfn-post-scope=\"00000000000009070000000000000000_10816\"><a href=\"javascript:void(0)\" role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000009070000000000000000_10816-3\">3</a></sup><span id=\"mfn-content-00000000000009070000000000000000_10816-3\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"3\">Si cela vous semble abstrait, <a href=\"https://overreacted.io/a-social-filesystem/\">« The Social Filesystem » de Dan Abramov</a> est l’explication la plus claire que j’aie lue.</span>.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Alors, que signifie « Atmospheric » pour un site Web?</h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cela signifie que mon site n’est plus un amoncellement de fichiers Markdown qui sont convertis en HTML au moment de la compilation. C’est une application SvelteKit qui lit directement à partir de mon dépôt atproto et affiche ces données sur le site public.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Mes articles de blogue se trouvent désormais dans mon dépôt sous forme d’enregistrements <a href=\"https://standard.site/\">site.standard</a>, le même schéma utilisé par <a href=\"https://leaflet.pub/\">Leaflet</a>, <a href=\"https://pckt.blog/\">pckt</a>, <a href=\"https://offprint.app/\">Offprint</a> et d’autres applications de rédaction de longs formats. Un enregistrement ressemble à peu près à ceci :</p>\n\n\n\n<pre class=\"wp-block-code\"><code>{</code></pre>\n\n\n\n<pre class=\"wp-block-code\"><code> \"$type\": \"site.standard.document\",</code></pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\"title\": \"Mon site Web est maintenant Atmospheric\",</code></pre>\n\n\n\n<pre class=\"wp-block-code\"><code> \"createdAt\": \"2026-04-22T10:00:00Z\",</code></pre>\n\n\n\n<pre class=\"wp-block-code\"><code> \"body\": \"J’ai migré ce blogue quatre fois...\"</code></pre>\n\n\n\n<pre class=\"wp-block-code\"><code>}</code></pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les quelque 50 articles ont tous été entièrement importés, et les nouveaux articles sont publiés directement dans le même système.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Rédaction dans le « studio »</h2>\n\n\n\n<p class=\"wp-block-paragraph\">J’avais besoin d’un endroit pour rédiger mes articles; j’ai donc créé un petit panneau d’administration privé que j’appelle le « studio », accessible uniquement par moi-même via OAuth atproto.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Il s’agit d’une poignée de routes SvelteKit accessibles après connexion : un tableau de bord, un éditeur Markdown, un bouton de publication. Pas de base de données, pas de serveur API, pas de backend d’administration. Enregistrer un brouillon écrit un enregistrement de brouillon directement dans mon dépôt. La publication écrit un enregistrement de type `site.standard.document` dans le même dépôt que celui à partir duquel le site public lit ses données. Tout le cycle de création repose sur des jetons OAuth et des appels XRPC.</p>\n\n\n\n<p class=\"wp-block-paragraph\">L’avantage intéressant, c’est que le « studio » n’est pas le seul à pouvoir écrire dans mon dépôt. N’importe quelle autre application qui utilise le lexique `site.standard.document` pourrait publier directement dans ce dépôt, et l’article s’afficherait sur mon site de la même manière. Si quelqu’un crée un meilleur éditeur demain, je pourrai changer sans avoir à migrer un seul article. Le CMS n’est pas soudé au site Web.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Le site en tant que vue</h2>\n\n\n\n<p class=\"wp-block-paragraph\">Voici ce qui m’enthousiasme le plus : comme le site est un moteur de rendu basé sur mon dépôt, il peut afficher tout ce que j’y place.</p>\n\n\n\n<p class=\"wp-block-paragraph\">La nouvelle page d’accueil en est le reflet. Outre le blogue, on y trouve des sections consacrées à ce que j’ai partagé via Skyreader et aux liens de recherche provenant de ma bibliothèque Semble. Je ne gère pas ces sections manuellement. Je partage un article dans Skyreader ou j’ajoute une fiche à une collection dans Semble, et cela s’affiche automatiquement sur le site.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Le blogue se trouve toujours à l’adresse <a href=\"https://www.disnetdev.com/blog\"><code>/blog</code></a>, généré à partir des enregistrements <code>site.standard.document</code>. <a href=\"https://www.disnetdev.com/reading\"><code>/reading</code></a> affiche les liens que j’ai partagés via Skyreader, et <a href=\"https://www.disnetdev.com/library\"><code>/library</code></a> récupère les fiches et les collections de Semble.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Je vois cela comme des fenêtres. Chaque application que j’utilise est une fenêtre donnant sur une partie de mon dépôt. Skyreader est la fenêtre pour le partage d’articles. Semble est la fenêtre pour la collecte de liens de recherche. Le studio est la fenêtre pour la rédaction des articles. Le site Web n’est qu’une autre fenêtre, celle destinée au public, qui rassemble tous ces éléments pour quiconque le visite.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette façon de penser change la perception de ce que signifie « ajouter une fonctionnalité » au site. Il n’y a pas de migration de schéma, pas d’importation de données, pas de scraping de l’API de quelqu’un d’autre. Si je veux une nouvelle section, j’ajoute un itinéraire, j’interroge le lexique approprié à partir de <em>mon</em> dépôt, et je l’affiche. Les données sont déjà là parce qu’une autre fenêtre les y a placées. Le site s’adapte à ma vie plutôt que de me demander de les copier manuellement.</p>\n\n\n\n<p class=\"wp-block-paragraph\">Si je crée ou adopte une nouvelle application Atmospheric demain, le site web lui consacrera une nouvelle interface dès le lendemain. C’est pourquoi il s’agit de la dernière migration. Le site a cessé d’être ce que je construisais. Il est devenu une fenêtre sur une vie qui existait déjà.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n\n\n\n<p class=\"has-text-align-center has-small-font-size wp-block-paragraph\">Liste évolutive des <a href=\"https://1drv.ms/x/c/52b2e58f9a01f490/IQApkc2vwYtfTpsZ-j248N0MAUKIOl08sRQqs_6JWIhCmM4?e=YYS5CH\">traductions</a> par <em>Gilles en vrac</em><br>Les<strong> caractères gras</strong> dans le texte sont de Gilles.</p>\n<h3 class=\"modern-footnotes-list-heading \">Notes </h3><ul class=\"modern-footnotes-list \"><li><span>1</span><div>Notez que « contrôlé » ne signifie pas que vous devez le gérer vous-même. Lorsque vous vous inscrivez pour obtenir un compte Bluesky (ou Blacksky, Eurosky, etc.), vous recevez <strong>gratuitement un PDS géré par Bluesky </strong>qui stocke toutes vos données. Ce qui est génial avec atproto, c’est que le protocole facilite le transfert de la gestion de votre PDS à quelqu’un d’autre quand vous le souhaitez.</div></li><li><span>2</span><div>Mon premier billet date de 2006 environ, mais il s’est perdu lors d’une migration en cours de route. Heureusement, même Internet Archive n’a pas trace de mes premiers billets, lol</div></li><li><span>3</span><div>Si cela vous semble abstrait, <a href=\"https://overreacted.io/a-social-filesystem/\">« The Social Filesystem » de Dan Abramov</a> est l’explication la plus claire que j’aie lue.</div></li></ul>"
},
"description": "RFC sur Atmosphere RFCs on the Atmosphere publié le 30 mai 2026. Je travaillais récemment sur une RFC dans le cadre d’un projet open source et je ne savais pas vraiment où la publier. Google Docs n’est pas pratique pour tout ce qui est technique, et un dépôt Git, c’est trop lourd si on n’en...",
"path": "/carnet/deux-pages-de-disnetdev/",
"publishedAt": "2026-06-25T17:35:54.000Z",
"site": "at://did:plc:j5mqslyzgl77u6fdkb6wk662/site.standard.publication/3moq7i52krgrm",
"textContent": "RFC sur Atmosphere RFCs on the Atmosphere publié le 30 mai 2026. Je travaillais récemment sur une RFC dans le cadre d’un projet open source et je ne savais pas vraiment où la publier. Google Docs n’est pas pratique pour tout ce qui est technique, et un dépôt Git, c’est trop lourd si on n’en a pas déjà un en place avec un processus prêt à l’emploi. Ce que je cherchais, c’était un site Web spécialisé qui permette simplement de publier des documents au format Markdown sur lesquels les gens peuvent laisser des commentaires. J’ai donc créé requested.fyi, un site Web qui répond exactement à ce besoin. Ce qui est génial : mon site Web n’héberge ni les documents ni les commentaires. Requested est une application Atmospheric; les documents résident donc sur le PDS atproto de l’auteur, qu’il contrôle1Notez que « contrôlé » ne signifie pas que vous devez le gérer vous-même. Lorsque vous vous inscrivez pour obtenir un compte Bluesky (ou Blacksky, Eurosky, etc.), vous recevez gratuitement un PDS géré par Bluesky qui stocke toutes vos données. Ce qui est génial avec atproto, c’est que le protocole facilite le transfert de la gestion de votre PDS à quelqu’un d’autre quand vous le souhaitez., et les commentaires sont hébergés sur le PDS de la personne qui les a publiés (avec un lien vers le document et, au choix, vers une ligne spécifique). C’est à peu près tout! L’application Requested n’a pas de backend compliqué. Elle se contente d’interroger et de mettre en cache les enregistrements de documents provenant du PDS de l’auteur, puis utilise constellation pour trouver les commentaires liés. Essayez-la si vous avez des documents sur lesquels vous souhaitez obtenir des commentaires! À ce propos, si vous souhaitez apporter votre aide, j’ai rédigé un document expliquant comment ajouter une phase de préproduction à Requested. Jetez-y un coup d’œil et laissez un commentaire si vous avez des suggestions! Un site Web Atmospheric Traduction de An Atmospheric Website, paru le 23 avril 2026 Notes sur la cinquième et dernière migration. J’ai migré ce blogue quatre fois au cours des 20 dernières années2Mon premier billet date de 2006 environ, mais il s’est perdu lors d’une migration en cours de route. Heureusement, même Internet Archive n’a pas trace de mes premiers billets, lol. WordPress, Jekyll, Hugo, Eleventy. Tous les quelques années, je troquais une série de compromis contre une autre en me disant que c’était la dernière fois. Il s’agit de la cinquième migration. C’est aussi la dernière. Non pas parce que j’ai enfin trouvé le générateur de site statique parfait, mais parce que le blogue n’est plus vraiment d’actualité. Mon site Web est désormais une vue sur un dépôt que je contrôle sur le réseau ouvert, et le blogue n’est qu’un des éléments que cette vue peut afficher. Dans la communauté atproto, les applications construites sur le protocole sont appelées « Atmospheric ». Ainsi : mon site web est désormais Atmospheric, et cet article explique ce que cela signifie concrètement. Le cycle sans fin des migrations Chaque plateforme de blogue que j’ai utilisée a été un compromis. WordPress m’offrait un CMS, mais me liait à une pile technique que je ne souhaitais pas entretenir. Jekyll, Hugo et Eleventy m’offraient le contrôle et des fichiers Markdown simples, ce que j’adorais, mais ils liaient discrètement la publication à mon ordinateur portable. Pour publier quelque chose, je devais me trouver devant la bonne machine, dans le bon environnement, avec les bons fichiers, dans la bonne branche Git. Si une idée me venait sur mon téléphone, elle devait attendre. Et les données (articles, ébauches, liens que je voulais partager, livres que je lisais) étaient éparpillées entre un dossier sur mon ordinateur portable, un compte Bluesky, une application de lecture et une application de notes. Mon site Web « personnel » ne montrait qu’une infime partie de moi, car la plupart de mes données se trouvaient ailleurs. Je voulais une configuration où la source de vérité ne soit pas un dossier sur un seul ordinateur, et où mon site Web puisse puiser dans tous les endroits où je passe réellement du temps en ligne. C’est là qu’intervient atproto Au cours des derniers mois, je me suis plongé dans atproto, le protocole derrière Bluesky et un écosystème grandissant d’autres applications. J’ai déjà lancé quelques projets dessus : Skyreader (un lecteur RSS), Skyboard (un tableau Kanban) et SembleIt (un client alternatif pour Semble, un outil permettant de recueillir et de partager des liens de recherche). Ce qui m’a séduit chez atproto, c’est la façon dont il inverse la relation habituelle entre les applications et les données. Dans une application Web classique, vos publications, vos signets, vos notes et vos tâches constituent des lignes dans la base de données de quelqu’un d’autre. Sur atproto, vos données résident dans votre propre dépôt, hébergé sur un serveur qui, de par sa conception, peut être déplacé. Les applications écrivent dans votre dépôt en utilisant des schémas partagés. Les publications Bluesky, les partages Skyreader, les fiches Semble et tout ce qui viendra ensuite peuvent tous coexister dans le même écosystème, affichés par différents clients3Si cela vous semble abstrait, « The Social Filesystem » de Dan Abramov est l’explication la plus claire que j’aie lue.. Alors, que signifie « Atmospheric » pour un site Web? Cela signifie que mon site n’est plus un amoncellement de fichiers Markdown qui sont convertis en HTML au moment de la compilation. C’est une application SvelteKit qui lit directement à partir de mon dépôt atproto et affiche ces données sur le site public. Mes articles de blogue se trouvent désormais dans mon dépôt sous forme d’enregistrements site.standard, le même schéma utilisé par Leaflet, pckt, Offprint et d’autres applications de rédaction de longs formats. Un enregistrement ressemble à peu près à ceci : { \"$type\": \"site.standard.document\", \"title\": \"Mon site Web est maintenant Atmospheric\", \"createdAt\": \"2026-04-22T10:00:00Z\", \"body\": \"J’ai migré ce blogue quatre fois...\" } Les quelque 50 articles ont tous été entièrement importés, et les nouveaux articles sont publiés directement dans le même système. Rédaction dans le « studio » J’avais besoin d’un endroit pour rédiger mes articles; j’ai donc créé un petit panneau d’administration privé que j’appelle le « studio », accessible uniquement par moi-même via OAuth atproto. Il s’agit d’une poignée de routes SvelteKit accessibles après connexion : un tableau de bord, un éditeur Markdown, un bouton de publication. Pas de base de données, pas de serveur API, pas de backend d’administration. Enregistrer un brouillon écrit un enregistrement de brouillon directement dans mon dépôt. La publication écrit un enregistrement de type `site.standard.document` dans le même dépôt que celui à partir duquel le site public lit ses données. Tout le cycle de création repose sur des jetons OAuth et des appels XRPC. L’avantage intéressant, c’est que le « studio » n’est pas le seul à pouvoir écrire dans mon dépôt. N’importe quelle autre application qui utilise le lexique `site.standard.document` pourrait publier directement dans ce dépôt, et l’article s’afficherait sur mon site de la même manière. Si quelqu’un crée un meilleur éditeur demain, je pourrai changer sans avoir à migrer un seul article. Le CMS n’est pas soudé au site Web. Le site en tant que vue Voici ce qui m’enthousiasme le plus : comme le site est un moteur de rendu basé sur mon dépôt, il peut afficher tout ce que j’y place. La nouvelle page d’accueil en est le reflet. Outre le blogue, on y trouve des sections consacrées à ce que j’ai partagé via Skyreader et aux liens de recherche provenant de ma bibliothèque Semble. Je ne gère pas ces sections manuellement. Je partage un article dans Skyreader ou j’ajoute une fiche à une collection dans Semble, et cela s’affiche automatiquement sur le site. Le blogue se trouve toujours à l’adresse /blog, généré à partir des enregistrements site.standard.document. /reading affiche les liens que j’ai partagés via Skyreader, et /library récupère les fiches et les collections de Semble. Je vois cela comme des fenêtres. Chaque application que j’utilise est une fenêtre donnant sur une partie de mon dépôt. Skyreader est la fenêtre pour le partage d’articles. Semble est la fenêtre pour la collecte de liens de recherche. Le studio est la fenêtre pour la rédaction des articles. Le site Web n’est qu’une autre fenêtre, celle destinée au public, qui rassemble tous ces éléments pour quiconque le visite. Cette façon de penser change la perception de ce que signifie « ajouter une fonctionnalité » au site. Il n’y a pas de migration de schéma, pas d’importation de données, pas de scraping de l’API de quelqu’un d’autre. Si je veux une nouvelle section, j’ajoute un itinéraire, j’interroge le lexique approprié à partir de mon dépôt, et je l’affiche. Les données sont déjà là parce qu’une autre fenêtre les y a placées. Le site s’adapte à ma vie plutôt que de me demander de les copier manuellement. Si je crée ou adopte une nouvelle application Atmospheric demain, le site web lui consacrera une nouvelle interface dès le lendemain. C’est pourquoi il s’agit de la dernière migration. Le site a cessé d’être ce que je construisais. Il est devenu une fenêtre sur une vie qui existait déjà. Liste évolutive des traductions par Gilles en vracLes caractères gras dans le texte sont de Gilles. Notes 1Notez que « contrôlé » ne signifie pas que vous devez le gérer vous-même. Lorsque vous vous inscrivez pour obtenir un compte Bluesky (ou Blacksky, Eurosky, etc.), vous recevez gratuitement un PDS géré par Bluesky qui stocke toutes vos données. Ce qui est génial avec atproto, c’est que le protocole facilite le transfert de la gestion de votre PDS à quelqu’un d’autre quand vous le souhaitez.2Mon premier billet date de 2006 environ, mais il s’est perdu lors d’une migration en cours de route. Heureusement, même Internet Archive n’a pas trace de mes premiers billets, lol3Si cela vous semble abstrait, « The Social Filesystem » de Dan Abramov est l’explication la plus claire que j’aie lue.",
"title": "Deux pages de disnetdev",
"updatedAt": "2026-06-25T17:35:58.000Z"
}