µ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

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 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

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.

Laisser un commentaire

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

*