Journal Progressive Web Office : et si une suite bureautique n’avait tout simplement pas besoin de serveur ?

Posté par  (site web personnel) . Licence CC By‑SA.
-12
5
oct.
2026

Sommaire

Salut Nal,

Il y a quelque temps, un journal intitulé Hexagone : une suite collaborative souveraine… pour quoi faire ? avait suscité ici pas mal de discussions.

Une remarque m'était particulièrement restée : on peut être sensible aux questions de maîtrise des données et continuer à utiliser Google Sheets ou Google Slides simplement parce que… ça marche bien.

Et au fond, c'est difficile de répondre à ça.

La plupart des utilisateurs ne choisissent pas leur traitement de texte parce que son architecture est souveraine, local-first, décentralisée ou conforme à tel principe. Ils veulent ouvrir leur document, le modifier, l'enregistrer et passer à autre chose.

Je développe depuis quelque temps une autre expérimentation autour de cette question :

Progressive Web Office (PWO)

https://progressive-web-office.github.io/

Code source :

https://github.com/progressive-web-office/progressive-web-office.github.io

Le projet est libre, sous AGPL-3.0-or-later, et encore jeune, actuellement en 0.1.x.

Encore une suite bureautique Web ?

C'est justement la question que je me pose.

Il existe déjà LibreOffice, Collabora, OnlyOffice, CryptPad, Microsoft 365, Google Workspace, etc.

L'idée de Progressive Web Office n'est donc pas de prendre LibreOffice ou OnlyOffice, de les mettre derrière un nouveau portail, d'ajouter un stockage, un système de comptes et quelques services autour.

L'approche est assez différente.

Il n'y a pas de serveur Progressive Web Office.

Le site distribue une application statique. Une fois chargée, le navigateur fait le travail.

Quand j'ouvre un fichier .odt, .docx, .ods, .xlsx, .odp, .pptx, .pdf, Markdown, LaTeX ou autre, le document est lu et traité directement dans le navigateur.

Pour modifier un document local, il n'est donc pas nécessaire de :

  • créer un compte ;
  • envoyer le fichier sur un serveur ;
  • installer un serveur chez soi ;
  • installer une application native.

On ouvre la page, on ouvre le fichier, on travaille.

L'application peut ensuite être installée comme PWA (Progressive Web App) et continuer à fonctionner hors connexion.

Dit autrement, je vois moins Progressive Web Office comme une "suite bureautique en ligne" que comme une application locale dont la plateforme d'exécution est le navigateur.

Et la "souveraineté" là-dedans ?

Elle n'est finalement peut-être pas le bon argument.

J'ai d'abord eu tendance à considérer comme essentiel le fait que les documents ne soient pas envoyés ailleurs.

Techniquement, je continue à trouver cela très important.

Mais je doute que quelqu'un se mette à utiliser PWO simplement pour cette raison.

Le bénéfice utilisateur est peut-être beaucoup plus banal :

Je reçois un DOCX. Je l'ouvre dans mon navigateur. Je le modifie. Je l'enregistre. C'est tout.

L'absence de backend devient alors une conséquence intéressante de l'architecture, pas forcément le slogan commercial.

Et bien sûr, certaines fonctions ont besoin du réseau. Si l'utilisateur configure GitHub, GitLab, WebDAV, Nextcloud, Grist ou un fournisseur d'IA, l'application communique avec le service choisi.

La différence est qu'il n'y a pas de backend PWO obligatoire au milieu.

Formats ouverts, mais pas exclusivement

Les nouveaux documents utilisent par défaut OpenDocument : ODT, ODS, ODP.

Mais l'objectif n'est pas de vivre dans un monde où les DOCX/XLSX/PPTX n'existent pas.

Ils sont donc aussi lus et écrits directement par l'application.

C'est probablement l'un des morceaux les plus difficiles du projet.

Et je préfère être clair : PWO est encore jeune et je ne prétends évidemment pas assurer aujourd'hui la fidélité de LibreOffice ou Microsoft Office sur tous les documents OOXML/ODF produits depuis vingt ans.

C'est d'ailleurs l'une des raisons de ce journal : je cherche des vrais documents qui cassent.

Un rapport_final_v7_definitif_corrigé.docx avec sections, tableaux, images mal ancrées et quelques bizarreries historiques m'intéresse davantage qu'un document de démonstration parfaitement propre.

Pas uniquement Word + Excel + PowerPoint

À force de développer le projet, une autre différence est apparue.

Un document peut contenir des équations, des diagrammes Mermaid, mais aussi des cellules de code Python ou JavaScript.

Elles s'exécutent localement dans un bac à sable sans accès réseau.

Cela permet par exemple d'avoir :

  1. des mesures dans un document ;
  2. un calcul Python (numérique et/ou formel);
  3. un graphique ;
  4. le commentaire du résultat ;
  5. les équations ;
  6. puis d'exporter le tout en document bureautique ou en PDF.

Python tourne avec Pyodide dans le navigateur.

Les cellules peuvent aussi être réactives : une cellule dépend d'une autre, les dépendances forment un graphe et les résultats concernés peuvent être recalculés.

Il existe également un support des widgets interactifs, notamment anywidget.

À cet endroit, PWO commence donc à se situer quelque part entre la suite bureautique, le notebook et l'environnement scientifique léger.

Je ne sais pas encore si c'est une excellente idée ou le début d'un gigantesque problème de périmètre :-)

Et les fichiers restent des fichiers

C'est un point auquel je tiens beaucoup.

Je ne voudrais pas que PWO devienne un système où l'on "importe" ses données dans une base opaque propre à l'application.

Un fichier Markdown doit rester un fichier Markdown.

Un document ODT doit rester un ODT.

Une base SQLite peut être ouverte comme un document et enregistrée de nouveau comme fichier SQLite.

Un dossier de notes Markdown reste un dossier de fichiers Markdown.

Le stockage du navigateur existe pour les brouillons, fichiers récents, préférences ou documents que l'utilisateur décide explicitement d'y placer, mais il ne doit pas devenir une prison à données.

Cela rend aussi possible l'utilisation avec Git, WebDAV ou simplement le système de fichiers local.

Collaboration sans transformer PWO en SaaS

Il y a également de la collaboration temps réel entre navigateurs.

Les navigateurs se découvrent puis échangent directement les modifications, avec Yjs et WebRTC.

Je travaille aussi depuis quelque temps sur QRShare, intégré à PWO.

Cela permet de transférer un document entre deux appareils en montrant une succession de QR codes à l'écran (fountain code).

Pas de Wi-Fi, pas de Bluetooth, pas de câble.

C'est probablement inutile pour la majorité des gens qui disposent d'AirDrop, de messagerie ou d'un stockage en ligne.

En revanche, dans certains environnements isolés ou industriels, cela peut devenir intéressant.

Je préfère donc le considérer comme une possibilité particulière plutôt que comme la raison d'utiliser PWO.

Pourquoi une PWA ?

Cette expérience m'a aussi amené à prendre le navigateur un peu plus au sérieux comme plateforme applicative.

Aujourd'hui on y trouve notamment :

  • stockage local structuré ;
  • accès au système de fichiers sur certains navigateurs ;
  • WebAssembly ;
  • workers ;
  • WebRTC ;
  • WebAuthn/passkeys ;
  • service workers et fonctionnement hors connexion ;
  • accès caméra ;
  • presse-papiers ;
  • partage avec les autres applications ;
  • gestion de fichiers associée à une PWA.

Une bonne partie de ce que j'aurais historiquement écrit comme application desktop peut donc fonctionner sans backend directement dans le navigateur.

Cela a évidemment des limites et les différences entre Chromium, Firefox et Safari restent parfois sportives.

Mais je trouve l'expérience intéressante.

Et le périmètre commence justement à m'inquiéter

Le projet sait maintenant traiter documents, tableurs, présentations, PDF, notes, fichiers source, bases SQLite…

Il y a également des expérimentations autour du calendrier, des contacts, des coffres KDBX et d'autres fonctions.

À ce rythme, on peut assez facilement réinventer Emacs, mais avec 300 Mo de JavaScript :-)

C'est pourquoi je commence à réfléchir sérieusement à une séparation entre :

  • un socle PWO : fichiers, stockage, PWA, sécurité, commandes, synchronisation, sandbox ;
  • des modules bureautiques ;
  • des modules notes/connaissance ;
  • des outils développeur/scientifiques ;
  • éventuellement des extensions optionnelles.

Une architecture de plugins fait partie des pistes de travail.

Comment c'est fait ?

Pour ceux que cela intéresse :

  • TypeScript ;
  • Vite ;
  • pas de gros framework UI ;
  • ProseMirror pour l'édition structurée ;
  • pdf.js pour les PDF ;
  • Pyodide pour Python ;
  • MathLive pour les équations ;
  • Mermaid pour les diagrammes ;
  • Yjs pour certaines fonctions collaboratives ;
  • tests unitaires avec Vitest ;
  • tests navigateur avec Playwright ;
  • spécifications écrites en EARS, avec des identifiants repris dans les tests.
  • développement avec l'aide d'IA (oui honte à moi ;-) … je n'aurai pas eu le temps de développer cela seul)

Tout le parsing et la sérialisation des documents sont faits côté client.

Ce dernier point représente d'ailleurs une quantité de travail assez déraisonnable.

Pourquoi j'en parle maintenant ?

Pas parce que le logiciel est "terminé".

Il ne l'est clairement pas.

Et pas non plus parce que je pense avoir trouvé le remplaçant de LibreOffice, Microsoft Office ou Google Docs.

Je commence plutôt à arriver au moment où développer seul dans son coin devient dangereux.

Je peux ajouter des fonctionnalités que personne ne souhaite, tester uniquement mes propres documents et finir par optimiser une architecture pour des cas d'usage imaginaires.

J'aimerais donc confronter le projet à autre chose.

En particulier :

  • Est-ce que la proposition "j'ouvre simplement mon fichier dans le navigateur" vous semble avoir un intérêt ?
  • Qu'est-ce qui vous empêcherait réellement d'utiliser ce genre d'outil ?
  • Quels formats ou fonctions sont indispensables pour vos documents courants ?
  • Où trouvez-vous que PWO réinvente inutilement quelque chose qui existe déjà ?
  • Si vous lui donnez des documents réels, qu'est-ce qui casse ?

Je suis particulièrement intéressé par cette dernière question.

Le test est ici :

https://progressive-web-office.github.io/

Et le code :

https://github.com/progressive-web-office/progressive-web-office.github.io

Les critiques, y compris les "ça existe déjà et en mieux ici", sont les bienvenues. C'est précisément le genre de retour qui m'intéresse à ce stade.

  • # Ca sent l texte générté ar IA ce truc ...

    Posté par  . Évalué à 4 (+2/-0).

    Ca a l'air généré par Claude

    Formats ouverts, mais pas exclusivement

    Pas uniquement Word + Excel + PowerPoint

    Pas parce que le logiciel est "terminé".

    Et pas non plus parce que je pense avoir trouvé le remplaçant de LibreOffice, Microsoft Office ou Google Docs.

    Le genre de tournure que je déteste dans les textes générés par IA.

  • # SLOP SLOP SLOP

    Posté par  . Évalué à 6 (+4/-0).

    développement avec l'aide d'IA (oui honte à moi ;-) … je n'aurai pas eu le temps de développer cela seul)

    bah ouais, gros, ça se voit tellement. Mais quelle flemme ces IA SLOP.

    Encore une fois l'IA vient résoudre un problème qu'on a pas, et dont on s'en fout.

    -"Eh les gars, si vous voulez pas utiliser un office dans le cloud…
    - euh chaipas, j'utilise un client lourd comme libreoffice?
    - … "eh bien tu peux utiliser un client dans le navigateur sans cloud!! lol xptdr! chuis un génie"
    - euh, je m'en fous?

    Ce dernier point représente d'ailleurs une quantité de travail assez déraisonnable.

    REALLY? "vazy, IA, bosse". Oooolala, j'ai travaillé de manière déraisonnable.

    • [^] # Re: SLOP SLOP SLOP

      Posté par  (site web personnel) . Évalué à -6 (+0/-6).

      Encore une fois l'IA vient résoudre un problème qu'on a pas, et dont on s'en fout.

      Ah les haters… c'est toujours formidable.

      Un problème que TU n'as pas…

      Pour ma part prendre un zip extrait de Moodle et l'envoyer par glisser déposé pour consulter et annoter des docx, des pdf, des odt… ça simplifie mon travail.

      • [^] # Re: SLOP SLOP SLOP

        Posté par  (Mastodon) . Évalué à 6 (+3/-0).

        ça simplifie mon travail.

        C'est très bien de simplifier ton travail et c'est une excellente utilisation de l'IA. Mais ne pense pas que tu vas simplifier le travail des autres, chacun sa route, chacun son besoin, chacun son IA slop.

        On s'en fout des annonces de softs vibe-codés, on en supprime des dizaines par semaines.

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

      • [^] # Re: SLOP SLOP SLOP

        Posté par  . Évalué à 3 (+1/-0).

        Ah les haters… c'est toujours formidable.

        Ah les vibe-coders… c'est toujorus formidable, ils sont persuadés qu'ils ont révolutionner le monde avec leur super outil et que le monde va les acclamer en leur envoyant des PR, des demandes d'améliorations, que le vibe coder ajoutera magnanimement en promptant amoureusement son agent via des skills qu'il a crafté avec patience. Heureusement que vous êtes là, vibe coders! Le monde logiciel vous remercie! Que dis-je, le monde logiciel, le monde entier! Il faut annoncer au monde ta révolution! Steve Jobs, Zuckerberg, Linus, bill gates, octane, et Ritchie se demandent comment ils ont pu vivre sans ton code! (bon, il y a un intrus dans le groupe)

        Déso que ça tombe sur toi, mais c'est lassant cette mode d'annoncer avec fracas un énième projet vibe-codé qui a 4j d'existence sur github (et 5000 commits) et dont on sait tous qu'il va mourir dans 3 semaines, sachant qu'il réinvente (mal) la roue, et que mais putain, il fait ton projet? Je te demande pas 300 lignes d'IA slop, juste que toi tu dises à quoi il sert?

        Voilà ta réponse:

        l'envoyer par glisser déposé pour consulter et annoter des docx

        ça fait des années que les logiciels savent ouvrir des fichiers par glisser déposer, je vois pas ce que tu résouds avec ton programme? Surtout que ton IA vend ton projet comme un outil office, rien à voir avec du glisser déposer, quoi. Pourquoi se fader 500 lignes de slop, de machin office, de progressive et le tralala si tu as besoin d'un glisser-déposer?

        Moodle fourre tout dans un zip? Ouais, y'a ptet un truc à faire: comment modifier un fichier dans un zip, ça pourrait être une idée, mais ton projet en parle pas. Et plan9 permettait de monter des tgz comme des systèmes de fichiers, autant dire que ça fait des années que le pb est résolu. Et sous linux on a fuse-archive: https://github.com/fdegros/mount-archive, c'est fou, tous ces projets qui existent et qui fonctionnent. Je suis vraiment un gros hater dis donc.

        Bref, vibe-coder c'est la hype du moment, mais c'est juste pénible pour 99% des gens qui la subisse, encore plus sur ce site (tu as lu un peu les archives?).

  • # Intérêt du projet par rapport aux dégâts nécessaires pour le créer ?

    Posté par  (site web personnel, Mastodon) . Évalué à 5 (+3/-0).

    Bonjour,

    Les IA génératives ont des impacts négatifs très importants, tu en trouveras une liste assez complète ici : https://davidbeck.fr/blog/pourquoi-ia-non.html

    En résumé, on parle :

    • Du fait que les entreprise d’IA privilégient leurs profits aux droits fondamentaux de la population ;
    • Des impacts écologiques massifs ;
    • De l’esclavage pour entrainer et corriger les modèles d’IA ;
    • Des impacts mesurés et forts sur nos capacités cérébrales ;
    • L’amplification de biais et d’inégalité ;
    • Le vol de la connaissance humaine ;
    • Le renforcement d’un pouvoir antidémocratique ;
    • La destruction du travail et des travailleurs eux-mêmes ;
    • La destruction du web libre et ouvert ;
    • Le techno-solutionnisme à base de solutions qui n’ont généralement pas fait leurs preuves ;
    • Une bulle spéculative d’une ampleur jamais vue, largement au-dessus de celle d’Internet en 2000 ou des subprimes en 2008.

    En quoi est-ce que ce projet valait la peine de provoquer autant de dégâts ?

    Si tu n'étais pas au courant de ces externalités, est-ce que tu prévois de continuer à utiliser de telles IA, et si oui pourquoi ?

    Bonne journée.

    Littératures de l’imaginaire, libres, pour tout le monde : https://renardspatial.com/ | La connaissance libre : https://zestedesavoir.com

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.