µcBlockly : ce qu’est (et n’est pas) le noyau

Dans l’article précédent — Pourquoi un noyau : naissance de µcBlockly — https://libreduc.cc/blog/astuce/2026/09/29/pourquoi-un-noyau-naissance-ucblockly/ — on a vu pourquoi séparer le moteur des applications. Ici, on fixe le vocabulaire : ce qu’est µcBlockly, et surtout ce qu’il n’est pas — pour éviter de confondre le noyau avec BlocklyDuino, la démo, ou « un autre Blockly pour Arduino ».

Démos vidéo (chaîne PeerTube Sciences & Technologies) : https://tube-sciences-technologies.apps.education.fr/c/ucblockly/videos

Trois niveaux, une seule pile

Niveau 1
Blockly 13
moteur visuel générique
Niveau 2 — noyau
µcBlockly
blocs Arduino typés + générateur C++ + API
Niveau 3 — produits
Produits dérivés
BlocklyDuino · Factory · démo · vos applis
Pile Blockly → µcBlockly → produits : une seule base, plusieurs peaux.
  • Blockly — workspace, toolbox, sérialisation, plugins @blockly/*. Rien de spécifique Arduino ici.
  • µcBlockly — ce qui est commun et réutilisable : typage, générateurs C++ (Arduino) et Python, contrôle des structures / connexions, instances, API d’intégration.
  • Produits — l’expérience métier : barre d’outils, choix de carte « produit », Monaco, compilation web, scénarios de classe.

Si vous ne retenez qu’une phrase : BlocklyDuino n’est pas le noyau ; il s’appuie dessus. Idem pour la Factory et pour la démo du dépôt.

Ce qu’est le noyau

Le noyau, c’est la surface publique documentée dans KERNEL (wiki / dépôt) :

  • injecter un workspace Blockly « Arduino-ready » dans une page ;
  • générer du C++ Arduino à partir des blocs ;
  • enregistrer blocs, types et plugins de façon idempotente ;
  • sauver / recharger un workspace, changer de langue, redimensionner, disposer proprement.

Point d’entrée principal :

import { createUcBlockly } from 'µcBlockly/core';

const uc = createUcBlockly(document.getElementById('editor'), {
  language: 'fr',
  // toolbox, thème, enforceurs, plugins, onCodeChange…
});

console.log(uc.getCode());

createUcBlockly(container, options) renvoie une instance (workspace, getCode(), saveWorkspace() / loadWorkspace(), resize(), dispose()…). Pour un host plus avancé : UcBlocklyWorkspaceManager, sans coller le shell de la démo.

Couche hôte (µcBlockly/host) : aides d’interface réutilisables (thèmes, accessibilité, éditeur de code…). Utile pour construire une appli, sans forcer la coque pédagogique complète.

Ce que le noyau n’est pas

  • Pas BlocklyDuino — BDuino v3 est l’application pour la classe (cartes AVR, UI, compile / Web Serial).
  • Pas la Factory — créateur de blocs / packs d’extension, outil à part.
  • Pas la démo du dépôt — pratique pour tester, pas un contrat d’API.
  • Pas un fork « tout-en-un » — pas de Monaco / topbar métier dans src/core.
  • Pas Blockly 12 — la v3 est sur Blockly 13 ; les projets en 12 restent sur µcBlockly 2.x.

Si une fonctionnalité n’a de sens que pour une appli, elle appartient au produit, pas au noyau.

Licence, code, doc, vidéos

Blockly (Google / Apache-2.0) reste clairement attribué ; µcBlockly et les produits dérivés sont sous AGPL.

Pour qui ?

  • Enseignant·e / formateur·rice — vous utiliserez surtout un produit (BlocklyDuino, etc.).
  • Développeur·euse — commencez par createUcBlockly + KERNEL.
  • Contributeur·rice — patch noyau dans µcBlockly ; patch produit dans le dépôt du produit.

Bientôt la suite…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*