58 points par GN⁺ 2026-02-24 | 5 commentaires | Partager sur WhatsApp
  • Framework d’applications desktop basé sur TypeScript utilisant Bun pour le processus principal et Zig pour les bindings natifs
  • Compatible avec macOS, Windows et Ubuntu, avec génération automatique des installateurs, des mises à jour automatiques et des artefacts de patch différentiel
  • Fournit un ensemble complet de fonctionnalités desktop : contrôle des fenêtres, menus, raccourcis, presse-papiers, boîtes de dialogue, stockage de session, etc., ainsi qu’une webview stable basée sur OOPIF
  • Son architecture interne exploite le FFI de Bun et son modèle de mémoire partagée pour rester efficace même dans un environnement multi-processus
  • Développé pendant deux ans par un créateur confronté aux limites d’Electron et de Tauri, après avoir appris Zig, C, C++, et Objective-C
  • L’objectif est un workflow unifié permettant d’écrire du code en 5 minutes et de déployer en 10 minutes

Vue d’ensemble et objectifs du projet Electrobun

  • Architecture où Bun exécute le processus principal et bundle la webview TypeScript, tandis que Zig sert à écrire les bindings natifs
  • Le processus principal et la webview sont tous deux écrits en TypeScript, avec une isolation entre processus et une communication RPC rapide et typée
  • Taille d’un bundle d’application auto-extractible d’environ 12 Mo (avec la webview système, principalement due à la taille du runtime Bun)
  • Les mises à jour différentielles basées sur bsdiff peuvent réduire la taille des patchs jusqu’à 14 Ko minimum
  • L’objectif est de fournir un workflow unifié unique permettant de commencer à coder en 5 minutes et de terminer le déploiement en 10 minutes
  • Il est possible de démarrer un projet à partir d’un template avec la commande npx electrobun init

Contexte de création

  • Le créateur développe des applications desktop depuis l’époque de Visual Basic 6, avec comme point de départ son expérience de diffusion de plusieurs produits de startup à des milliers d’utilisateurs à l’ère d’Adobe AIR
  • Bien qu’il ait passé plus de 20 ans comme ingénieur des débuts de startup à construire et faire évoluer des produits à l’échelle licorne, l’environnement de développement desktop a au contraire régressé
  • En développant co(lab), un navigateur web hybride + éditeur de code + terminal PTY, il s’est heurté à trop de contraintes et a décidé de créer son propre framework
  • La première version a été réalisée avec Electron, mais la signature de code, la notarisation, la distribution et les mises à jour donnaient davantage l’impression de se battre contre le framework que de développer l’application
  • Il voulait une livraison continue (continuous shipping) comme sur le web, mais la toolchain existante rendait cela inutilement difficile
  • Il a aussi essayé Tauri, mais a estimé que Rust ne convenait pas à tous les développeurs ; comme Bun était alors encore à quelques mois de sa version 1.0, il a lancé son propre développement

De macOS au cross-platform

  • Au départ, seules des applications macOS pouvaient être compilées, mais la prise en charge de macOS, Windows et Ubuntu est désormais de premier ordre pour la compilation comme pour le déploiement
  • Les installateurs, artefacts de mise à jour automatique et patchs différentiels sont tous générés automatiquement
  • Il suffit de connecter un hébergement statique (R2, S3, GitHub Releases) pour terminer le déploiement
  • Les mises à jour différentielles sont assurées par zig-bsdiff, porté de C vers Zig et optimisé avec SIMD et zstd
  • Avec la stabilisation du FFI de Bun, la majeure partie de la couche FFI Zig écrite auparavant a été remplacée par Bun
  • L’architecture a évolué de manière positive : Bun utilise la mémoire partagée lors de la création des workers, ce qui maintient l’efficacité en multi-processus

Fonctionnalités disponibles

  • Le framework offre désormais un ensemble complet de fonctionnalités : contrôle des fenêtres cross-platform, menus, raccourcis clavier (accelerators), raccourcis globaux, presse-papiers, boîtes de dialogue, partitions de webview, stockage de session, recherche dans la page (find-in-page), ainsi que les outils de bundling et de mise à jour
  • L’implémentation de OOPIF (Out-of-Process Iframe) fonctionne désormais réellement
    • La balise <webview> d’Electron a été dépréciée dans Chromium, sans véritable alternative à ce jour
    • <electrobun-webview> est un véritable « super iframe » où le positionnement DOM, l’isolation des processus et la gestion des couches fonctionnent correctement
    • Le fonctionnement est cross-platform, sans scintillement du curseur et sans patch du moteur de navigateur

État de la prise en charge des plateformes

  • macOS 14+ : pris en charge officiellement
  • Windows 11+ : pris en charge officiellement
  • Ubuntu 22.04+ : pris en charge officiellement
  • Autres distributions Linux (gtk3, webkit2gtk-4.1) : prise en charge par la communauté

Feuille de route

  • La réécriture complète de co(lab) sur Electrobun est terminée, et le développement de co(lab) va désormais s’accélérer sérieusement sur la base de la stabilisation de la v1
  • L’objectif central est d’avoir un framework suffisamment stable pour construire des produits ambitieux sur le long terme, sans être perturbé par le platform churn
  • La communauté Discord continue de grandir, et les utilisateurs ayant contribué via les bêta-tests, les signalements de problèmes et les retours ont participé à façonner le framework
  • Electrobun est le premier grand produit lancé par Blackboard

5 commentaires

 
myname1260 2026-03-03

Comme il est écrit qu’il s’agit d’une réécriture complète de co(lab), j’ai d’abord pensé qu’il s’agissait d’améliorer avec Google la stabilité du cloud pour l’exécution des fichiers ipynb, mais en réalité cela n’a absolument aucun lien : c’est un projet de développement de l’équipe Blackboard.

Cela dit, le fait qu’un OOPIF accessible puisse être installé via npx semble malgré tout être une expérience importante.

 
geekbini 2026-02-24

« Le processus de signature du code, de notarisation, de distribution et de mise à jour donne l’impression de se battre davantage avec le framework que de développer l’application. »

L’article mentionne notamment ce contexte de création,
et il arrive en effet que le déploiement demande plus de travail que le développement de l’application lui-même.
Rien que le fait d’avoir corrigé ce problème mérite déjà beaucoup d’estime.

 
bus710 2026-02-24

Il semble qu’ajouter Zig à Flutter soit aussi assez simple et facile.
Pas très différent de la documentation Dart/C FFI...

 
mammal 2026-02-24

Je me demande pourquoi les principales distributions Linux ne fournissent pas de WebView par défaut. C'est un obstacle majeur à l'élargissement de l'écosystème applicatif.

Pour un système d'exploitation avec environnement GUI, j'ai l'impression que WebView devrait désormais s'imposer comme composant par défaut.

 
GN⁺ 2026-02-24
Commentaires sur Hacker News
  • Bonjour, je suis le créateur d’Electrobun
    Je viens de publier la version stable v1. L’architecture est désormais figée et, si vous avez besoin d’un bug fix ou d’une API que vous utilisiez sur Electron/Tauri, laissez un message dans les issues GitHub et je le traiterai en priorité
    Au cours du dernier mois, j’ai modifié 50 000 lignes de code pour finaliser le travail de stabilisation
    Il y a aussi une vidéo de démo de Colab, un projet open source construit avec Electrobun (navigateur web + éditeur de code + terminal PTY)
    Electrobun utilise par défaut le WebView du système, mais il est aussi possible d’inclure CEF avec l’option bundleCEF. L’architecture est indépendante du WebView, donc dès que Servo ou Ladybird seront prêts, ils pourront être remplacés immédiatement
    En plus, chaque release peut générer un package auto-compressé basé sur zstd, ce qui réduit la taille du téléchargement initial et permet de garder les mises à jour à environ 14 KB

    • Je me demande si les définitions de types correspondent bien à la documentation. Par exemple, si on met la clé partition dans BrowserWindow, TypeScript renvoie une erreur
    • Merci d’avoir créé Electrobun
  • Electrobun semble très prometteur. Je compte faire mon prochain projet avec
    C’est ce qu’il y a de plus productif dans une stack Full TypeScript. Je suis ravi d’avoir une alternative à Electron, plus légère et plus rapide, sans Rust ni longues phases de compilation

    • Je viens tout juste de terminer ma première app Tauri, et j’ai été surpris de voir à quel point les builds Windows prennent du temps. Je vais clairement essayer Electrobun
  • Sur Discord, beaucoup de développeurs de jeux expérimentent des jeux desktop avec Electrobun
    Il pourrait remplacer une partie d’Electron sur le marché des jeux indé Steam
    En particulier, l’expérience de développement de jeux TypeScript avec rechargement instantané via bun --watch game.ts est très rapide et fluide

    • En tant que personne qui fait beaucoup de développement web, indépendamment des outils, Bun représente un grand bond en avant côté performances
    • Il n’y a pas tant de jeux construits avec Electron. Je me souviens surtout de CrossCode. La plupart utilisent Unity ou Godot
    • Je me demande sur quel serveur Discord ces expérimentations ont lieu. J’aimerais bien participer
    • Node prend désormais aussi en charge le mode watch et l’exécution de TypeScript
  • Le principal problème de Tauri, c’est que la qualité du WebView système varie selon les OS
    Linux n’a pas de WebView officiel, et sous Windows 7 ou les premières versions de Windows 10, l’Edge WebView n’est pas utilisé. À cause de ces différences, le démarrage peut parfois prendre plus de 20 secondes
    Je me demande s’il vaut vraiment la peine d’accepter ce genre de compromis pour économiser 100 MB
    La plupart des utilisateurs ont une connexion rapide, donc la vitesse de téléchargement n’est pas un vrai problème
    Je me demandais si Electrobun prenait en charge un renderer Chromium intégré, mais ce n’était pas clair dans la documentation

    • Electrobun utilise par défaut le WebView système, mais peut embarquer CEF (Chromium) si nécessaire. C’est indiqué dans la documentation officielle
    • Le site du produit dit aussi « System’s native webview as renderer, CEF optional ». Donc oui, c’est optionnel
    • Quand j’ai créé une app Tauri pour Windows, j’ai dû utiliser l’embedded bootstrapper. Je suis content de voir qu’Electrobun semble bien résoudre ce problème
    • Je me demande pourquoi les principales distributions Linux ne fournissent pas de WebView par défaut. C’est un obstacle majeur à l’élargissement de l’écosystème applicatif
    • Une version de Tauri basée sur CEF est également en cours de développement. Voir cette branche associée. Vu la faible qualité des WebView fournis par les OS, cette approche me semble être une bien meilleure amélioration
  • J’aurais aimé que le titre précise qu’il s’agit d’un billet de blog rétrospectif sur le projet
    Pour le projet lui-même, il vaut mieux consulter le lien vers la documentation officielle

  • La page principale du projet est ici
    L’interface a l’air propre, et comme je connais bien Zig, cela me semble plus accessible que Rust

  • On va déployer une nouvelle app Electron au travail cette semaine, et je me dis qu’Electrobun aurait été bien utile s’il était sorti un an plus tôt
    Electron Builder simplifie un peu les mises à jour et la signature, mais ça reste fastidieux
    Je pense essayer Electrobun pour mon prochain projet perso

  • Le billet mentionnait les problèmes de notarizing et de stapling, et Apple rend vraiment ce processus très difficile si on n’utilise pas Xcode
    Sur Windows aussi, l’automatisation CI n’est pas simple. Si Electrobun propose une meilleure solution, ça m’intéresse beaucoup

    • Dans la plupart des cas, c’est pris en charge avec la configuration par défaut. Il suffit de définir quelques variables d’environnement et de builder avec notarize: true
      J’ai fait plusieurs signatures et notarizations avec Electrobun sans problème. Il y a aussi un escape hatch pour les cas complexes
      Si tu as besoin d’aide, envoie-moi un DM sur Discord. (Je ne suis pas affilié à Electrobun, mais je connais bien la douleur qu’est le système de notarization d’Apple)
  • Si une app Electron fait plus de 500 MB, les 14 MB d’Electrobun paraissent vraiment très légers

    • Une app Electron typique pour macOS (DMG) fait plutôt autour de 80 MB, alors qu’Electrobun est aux environs de 16 MB
  • Dommage que les distributions autres qu’Ubuntu soient pour l’instant hors du périmètre de support
    La discussion associée peut être consultée dans ce commentaire d’issue