58 points par GN⁺ 2026-02-24 | Aucun commentaire pour le moment. | 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

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.