{"id":3147,"date":"2026-09-29T00:26:18","date_gmt":"2026-09-28T22:26:18","guid":{"rendered":"https:\/\/libreduc.cc\/blog\/astuce\/2026\/09\/29\/pourquoi-un-noyau-naissance-ucblockly\/"},"modified":"2026-09-29T01:34:34","modified_gmt":"2026-09-28T23:34:34","slug":"pourquoi-un-noyau-naissance-ucblockly","status":"publish","type":"post","link":"https:\/\/libreduc.cc\/blog\/astuce\/2026\/09\/29\/pourquoi-un-noyau-naissance-ucblockly\/","title":{"rendered":"Pourquoi un noyau : naissance de \u00b5cBlockly"},"content":{"rendered":"<p>Si vous suivez mon travail depuis un moment, vous avez crois\u00e9 BlocklyDuino, Blockly@rduino, parfois Studio4Education. Derri\u00e8re ces interfaces, une m\u00eame question revient : comment faire vivre un moteur de blocs Arduino sans le recoller \u00e0 chaque nouveau logiciel\u00a0?<\/p>\n<p>La r\u00e9ponse, en 2026, s\u2019appelle <strong>\u00b5cBlockly<\/strong> : un noyau open source, bas\u00e9 sur Blockly\u00a013, qui transforme des blocs en C++ Arduino \u2014 et qui peut s\u2019embarquer dans une d\u00e9mo, dans BlocklyDuino, dans une Factory, ou dans votre propre application.<\/p>\n<p><strong><span style=\"color: #ff0000;\">D\u00e9mos vid\u00e9o<\/span><\/strong> (cha\u00eene PeerTube Sciences &amp; Technologies) : <a href=\"https:\/\/tube-sciences-technologies.apps.education.fr\/c\/ucblockly\/videos\">https:\/\/tube-sciences-technologies.apps.education.fr\/c\/ucblockly\/videos<\/a><\/p>\n<h2>Le probl\u00e8me : un moteur coll\u00e9 \u00e0 l\u2019appli<\/h2>\n<p>Pendant des ann\u00e9es, la programmation visuelle pour microcontr\u00f4leurs a progress\u00e9 par produits complets : une UI, des blocs, un g\u00e9n\u00e9rateur, parfois un moniteur s\u00e9rie. Chaque avanc\u00e9e (accessibilit\u00e9, typage, nouvelles cartes) risquait d\u2019\u00eatre recopi\u00e9e ou fork\u00e9e d\u2019un outil \u00e0 l\u2019autre.<\/p>\n<p>R\u00e9sultat typique :<\/p>\n<ul>\n<li>un correctif dans BlocklyDuino n\u2019arrive pas tout de suite ailleurs ;<\/li>\n<li>un fork p\u00e9dagogique diverge silencieusement ;<\/li>\n<li>mettre \u00e0 jour Blockly (Google) devient un chantier monumental \u00e0 chaque d\u00e9p\u00f4t.<\/li>\n<\/ul>\n<p>Autrement dit : on inventait souvent plusieurs fois le m\u00eame moteur, au lieu d\u2019inventer plusieurs interfaces.<\/p>\n<h2>L\u2019id\u00e9e du noyau<\/h2>\n<p><a href=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/apple-touch-icon.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3156 alignleft\" src=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/apple-touch-icon.png\" alt=\"\" width=\"180\" height=\"180\" srcset=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/apple-touch-icon.png 180w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/apple-touch-icon-150x150.png 150w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/apple-touch-icon-100x100.png 100w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/><\/a>\u00b5cBlockly inverse la logique. On s\u00e9pare volontairement trois couches :<\/p>\n<ul>\n<li><strong>Blockly<\/strong> \u2014 le moteur visuel g\u00e9n\u00e9rique (workspace, toolbox, s\u00e9rialisation) ;<\/li>\n<li><strong>\u00b5cBlockly<\/strong> \u2014 les blocs Arduino typ\u00e9s, le g\u00e9n\u00e9rateur C++, l\u2019API d\u2019int\u00e9gration ;<\/li>\n<li><strong>les produits<\/strong> \u2014 BlocklyDuino, Factory, d\u00e9mo, vos projets.<\/li>\n<\/ul>\n<p>Le noyau ne doit pas embarquer toute la coque p\u00e9dagogique (Monaco \u00ab produit \u00bb, barre d\u2019outils m\u00e9tier, choix de carte \u00ab marque \u00bb), il fournit ce qui est commun et r\u00e9utilisable, le reste appartient \u00e0 chaque application.<\/p>\n<p>Cette id\u00e9e n\u2019est pas n\u00e9e en 2026 : d\u00e8s 2021, on parlait d\u00e9j\u00e0 d\u2019un noyau commun pour \u00b5cBlockly, BlocklyDuino et Studio4Education. La v3, sur Blockly\u00a013, en est la forme aboutie et publiable.<\/p>\n<h2>Ce que change Blockly 13<\/h2>\n<p>\u00b5cBlockly 3.x s\u2019aligne sur Blockly\u00a013 et les plugins <code>@blockly\/*<\/code> de la m\u00eame g\u00e9n\u00e9ration. Ce n\u2019est pas un d\u00e9tail de version :<\/p>\n<ul>\n<li>accessibilit\u00e9 et navigation clavier plus coh\u00e9rentes ;<\/li>\n<li>\u00e9cosyst\u00e8me de plugins maintenu ;<\/li>\n<li>base saine pour les ann\u00e9es \u00e0 venir.<\/li>\n<\/ul>\n<p>Cons\u00e9quence claire : un projet encore en Blockly\u00a012 reste sur \u00b5cBlockly 2.x. La rupture est assum\u00e9e pour ne pas tra\u00eener deux g\u00e9n\u00e9rations dans le m\u00eame d\u00e9p\u00f4t.<\/p>\n<h2>H\u00e9ritage Blockly@rduino \u2014 sans tout jeter<\/h2>\n<p>Blockly@rduino reste une r\u00e9f\u00e9rence p\u00e9dagogique (instances, niveaux, packs de blocs\u2026). \u00b5cBlockly reprend des id\u00e9es fortes (typage, instances nomm\u00e9es, structure de programme) dans une architecture moderne.<\/p>\n<p>Les projets existants ne sont pas abandonn\u00e9s : documentation legacy et guide de conversion sont l\u00e0 pour migrer quand vous le souhaitez.<\/p>\n<p><a href=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3153 size-full\" src=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001.png\" alt=\"\" width=\"1298\" height=\"816\" srcset=\"https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001.png 1298w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-300x189.png 300w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-1024x644.png 1024w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-768x483.png 768w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-100x63.png 100w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-150x94.png 150w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-200x126.png 200w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-450x283.png 450w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-600x377.png 600w, https:\/\/libreduc.cc\/blog\/astuce\/wp-content\/uploads\/sites\/2\/2026\/09\/Image-001-900x566.png 900w\" sizes=\"auto, (max-width: 1298px) 100vw, 1298px\" \/><\/a><\/p>\n<h2>Pourquoi publier le noyau maintenant\u00a0?<\/h2>\n<p>Parce qu\u2019il fallait une source de v\u00e9rit\u00e9 technique claire pour mon travail \u2014 et pour ceux qui s\u2019appuient dessus :<\/p>\n<ul>\n<li>code sur GitHub (AGPL-3.0-or-later) \u2014 <a href=\"https:\/\/github.com\/A-S-T-U-C-E\/ucBlockly\">https:\/\/github.com\/A-S-T-U-C-E\/ucBlockly<\/a> ;<\/li>\n<li>doc sur le wiki LibrEduc ;<\/li>\n<li>entraide sur le forum \u2014 <a href=\"https:\/\/forum.libreduc.cc\/\">https:\/\/forum.libreduc.cc\/<\/a> ;<\/li>\n<li>d\u00e9mos vid\u00e9o \u2014 h<a href=\"ttps:\/\/tube-sciences-technologies.apps.education.fr\/c\/ucblockly\/videos\">ttps:\/\/tube-sciences-technologies.apps.education.fr\/c\/ucblockly\/videos<\/a> ;<\/li>\n<li>produits d\u00e9riv\u00e9s qui s\u2019appuient dessus au lieu de le forker en silence.<\/li>\n<\/ul>\n<p>Sans noyau partag\u00e9, chaque \u00ab nouveau Blockly pour Arduino \u00bb recommence \u00e0 z\u00e9ro. Avec \u00b5cBlockly, on recommence surtout l\u2019exp\u00e9rience utilisateur \u2014 l\u00e0 o\u00f9 l\u2019innovation p\u00e9dagogique a le plus de sens.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pourquoi \u00b5cBlockly existe : s\u00e9parer le moteur Blockly\/Arduino des applications, pour arr\u00eater de recoller le m\u00eame\u2026<\/p>\n<p class=\"read-more\"><a class=\"more-link\" href=\"https:\/\/libreduc.cc\/blog\/astuce\/2026\/09\/29\/pourquoi-un-noyau-naissance-ucblockly\/\">Read more \u2192<\/a><\/p>\n<p><!-- end of .read-more --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[16,3,20],"tags":[],"class_list":["post-3147","post","type-post","status-publish","format-standard","hentry","category-blocklyduino","category-technologie","category-cblockly"],"_links":{"self":[{"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/posts\/3147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/comments?post=3147"}],"version-history":[{"count":4,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/posts\/3147\/revisions"}],"predecessor-version":[{"id":3157,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/posts\/3147\/revisions\/3157"}],"wp:attachment":[{"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/media?parent=3147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/categories?post=3147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/libreduc.cc\/blog\/astuce\/wp-json\/wp\/v2\/tags?post=3147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}