Why Blockly

Blockly lets you focus on applying blocks to your domain without worrying about the complexities of how those blocks should be rendered, dragged, or connected.

It is applicable to a wide range of educational use-cases, such as:

  • Working students toward text-based programming.
  • Encouraging computational thinking.
  • Exploring other concepts (e.g. physics) computationally.

As well as many many industry use-cases, such as:

  • Data analysis and cleaning.
  • Automation (e.g. in robotics, process workflows, etc).
  • Configuration (e.g. in online shops, IoT, etc).

Strengths

Blockly has a number of strengths that make it the most popular option for building a block-based programming environment.

  • Availability. Blockly is published on NPM, so you can require it in the same way you require any other web dependency.
  • Fully featured. Blockly comes bundled with common blocks that generate code in 5 popular programming languages (JavaScript, Python, Lua, Dart, and PHP). Plus it has a thriving plugin ecosystem that gives you even more capabilities.
  • Customizability. Blockly lets you easily define your own blocks, fields, and inputs. Plus many of its core functionalities can be swapped out for your own custom ones.
  • Internationalization. Blockly's core library of blocks comes with translations in 90+ languages, including right-to-left versions for Arabic and Hebrew.
  • Open Source. Google shares Blockly's technology with everyone so, together, we can educate the next generation of developers.

Alternatives

There are some use cases where it makes sense to use a library other than Blockly. Here are some other options:

  • PXT: This is an editor built on Blockly that powers MakeCode. It outputs JavaScript exclusively, which enables it to convert from code to blocks. It also comes bundled with a compiler and a simulator.
  • Droplet: This is the editor that powers Pencil Code. It lets you type to create blocks without dragging, and also supports going from code to blocks.
  • Node-red: This is a node-based rather than block-based programming editor, but it fulfills a similar function. It is popular for wiring together hardware devices, often in industry contexts.