µcBlockly : ce qu’est (et n’est pas) ce noyau
Dans l’article précédent — « Pourquoi un noyau : naissance de µcBlockly » (https://libreduc.cc/blog/?p=81) — 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 ».
Trois niveaux, une seule pile
- Blockly — workspace, toolbox, sérialisation, plugins @blockly. Rien de spécifique Arduino ici.
- µcBlockly — ce qui est commun et réutilisable pour programmer des microcontrôleurs en blocs : typage des variables, générateurs C++ (Arduino) et Python, contrôle des structures / connexions, instances d’objets, point d’entrée d’intégration.
- Produits — l’expérience métier : barre d’outils, choix de carte « produit », Monaco, compilation web, scénarios d’utilisation en classe possibles.
Si vous ne retenez qu’une phrase : BlocklyDuino n’est pas le noyau ; il s’appuie dessus. Idem pour la Factory (ben oui là aussi il y a du boulot et ça sera un super truc indispensable pour créer ses blocs !!!) et pour la démo du dépôt (et puis aussi un autre truc pour remplacer Studio4Education, mais plus tard…).
Ce qu’est le noyau
Le noyau, c’est la surface publique documentée dans KERNEL (wiki) qui permet de :
- 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, etc.
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é, il existe aussi un gestionnaire de cycle de vie (UcBlocklyWorkspaceManager) sans coller le shell de la démo.
Il y a aussi une couche hôte (µcBlockly/host) : aides d’interface réutilisables (thèmes, accessibilité, éditeur de code…). Ce n’est pas « le produit BlocklyDuino », mais ce n’est pas non plus le strict minimum du générateur : utile quand on construit une appli, sans forcer la coque pédagogique complète.
Ce que le noyau n’est pas
- Pas BlocklyDuino — BlocklyDuino v3 (publication bientôt…) est l’application pour la classe (cartes AVR filtrées, UI, compile / Web Serial, réglages produit).
- Pas la Factory — le créateur de blocs / packs d’extension est un outil à part, qui consomme le même écosystème.
- Pas la démo du dépôt — menus, panneaux, session : pratique pour tester, pas un contrat d’API.
- Pas un fork pédagogique « tout-en-un » — on refuse de remettre Monaco, la topbar métier ou des getElementById de shell dans src/core.
- Pas Blockly 12 — la v3 est sur Blockly 13 ; les projets en 12 restent sur µcBlockly 2.x.
Autrement dit : si une fonctionnalité n’a de sens que pour une appli (une marque de carte, un parcours de cours, un bouton « téléverser »), elle appartient au produit, pas au noyau.
Licence, code, doc
- Licence — AGPL-3.0-or-later (copyleft y compris pour une version modifiée proposée en service réseau).
- Code — https://github.com/A-S-T-U-C-E/ucBlockly
- Doc noyau — wiki LibrEduc (page µcBlockly / KERNEL) et fichiers docs/KERNEL.md, INTEGRATION_DEPOT.md dans le dépôt.
- Forum — https://forum.libreduc.cc/ pour l’entraide technique et pédagogique du réseau.
Les composants Blockly (Google / Apache-2.0) restent clairement attribués ; le travail µcBlockly / produits LibrEduc sont sous AGPL.
Pour qui, concrètement ?
- Enseignant·e / formateur·rice — vous utiliserez surtout un produit (BlocklyDuino, etc.). Cet article sert à comprendre pourquoi les mises à jour du « moteur » et de l’UI ne sont plus le même chantier.
- Développeur·euse / intégrateur·rice — commencez par createUcBlockly + KERNEL ; n’importez la démo que comme exemple, pas comme dépendance.
- Contributeur·rice — patch noyau dans µcBlockly ; patch produit dans le dépôt du produit. Éviter les PR du style « j’ai collé ma barre d’outils dans le core ».
Bientôt la suite...
Réseau LibrEduc — comprendre pour ne pas dépendre, partager pour progresser.