Coming Soon: MicroBlocks 3.0 Pilot Release!

For the past six months, the MicroBlocks team has been working on a major rewrite of the MicroBlocks editor -- and it is almost ready to be released as a pilot release!

For a sneak peek, open the URL below.

MicroBlocks 3.0 JS version

MicroBlocks 3.0 UI, dark mode

MicroBlocks 3.0 (details)

We're still putting the finishing touches on MicroBlocks 3.0 so the alpha version still has a few rough edges. But you'll immediately notice how much faster it is than the current pilot release. The increased speed is one of the biggest benefits of the rewrite.

The new version also includes improvements we've wanted to make for some time such as:

  • Automatic backup to the browser's local storage as you work so if anything goes wrong -- or you accidentally close the MicroBlocks tab -- you can recover your work.
  • MicroBlocks now offers to install MicroBlocks if the board doesn't respond, a boon to folks with brand-new boards, or boards that have an Arduino, MicroPython, or Makecode project installed.
  • ESP32 firmware installs continue even when you switch to another tab.

Those are only a few of the improvements we've already made, and there are more in the works.

What do you mean, "major rewrite"?

When MicroBlocks started in 2017, it was built on a language called GP Blocks, which had its own libraries and graphics system.

Initially, MicroBlocks was a stand-alone application that had to be downloaded and installed because browsers didn't yet support WebUSB or WebBluetooth. When those features were added to the Chromium browser, MicroBlocks was ported to operate in the browser as a web application. To enable that, the GP system was compiled using the Emscripten C++ compiler.

However, GP Blocks was becoming difficult to maintain. There were four variations: stand-alone apps for Windows, MacOS, and Linux as well as the web app. In addition, GP Blocks is, frankly, a poorly documented, non-mainstream language, so it was difficult for anyone outside of the immediate team to contribute to the MicroBlocks code. Furthermore, GP is much slower than native Javascript so things became sluggish when working with large numbers of scripts.

This past summer, we began the transition away from GP Blocks by migrating the UI to Javascript and CSS. That was MicroBlocks 2.5, released in July. However, the blocks editor and all of the core functionality (the "engine") were still implemented in GP.

The upcoming MicroBlocks 3.0 release will complete the migration. Everything will be implemented in Javascript and CSS, with a fond farewell to GP Blocks. The new MicroBlocks blocks engine is built on the mature blocks and morphic systems from Snap! -- with heartfelt thanks to Jens Mönig for his amazing work.

From the user standpoint, MicroBlocks 3.0 will look and feel the same as MicroBlocks 2.5, only much, much faster. All the libraries and example projects are the same as before and the blocks will look the same. No changes will be needed to existing projects, libraries, or learning materials.

I want to acknowledge Sam McHardy for his huge contributions to this transition. I did not think we'd be finished with the transition until next summer. Then Sam jumped in and things started to move quickly. Sam has contributed hundreds of pull requests and run extensive tests comparing the pure Javascript system to the GP system to make sure the new system is 100% backwards compatible and that no bugs have crept in. (In fact, Sam also found and fixed a number of bugs in the GP system.)

Thank you, Sam!