Blockly

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Blockly
Original authorsNeil Fraser, Quynh Neutron, Ellen Spertus, Mark Friedman
DevelopersGoogle, MIT
Initial releaseMay 2012; 13 years ago (2012-05)
Stable release
12.1.0 / 30 May 2025; 10 months ago (2025-05-30)[1]
Repositorygithub.com/google/blockly
Written inJavaScript
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    PlatformWeb browser
    Size150 KB
    Available in50 languages
    List of languages
    English
    TypeLibrary
    LicenseApache License 2.0
    Websitedevelopers.google.com/blockly

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal'). Blockly is a client-side library for the programming language JavaScript for creating block-based visual programming languages (VPLs) and editors. A project of Google, it is free and open-source software released under the Apache License 2.0.[2] It typically runs in a web browser, and visually resembles the language Scratch.

    Blockly uses visual blocks that help simplify programming, and can generate code in JavaScript, Lua, Dart, Python, or PHP. It can also be customized to generate code in textual programming language.[3]

    History

    [edit | edit source]

    Blockly development began in summer 2011. The first public release was in May 2012 at Maker Faire. Blockly was originally designed as a replacement for OpenBlocks in App Inventor.[4] Neil Fraser began the project with Quynh Neutron, Ellen Spertus, and Mark Friedman as contributors.

    In October 2025, the Raspberry Pi Foundation announced that from 10 November 2025, the Blockly open source library and assets, and key members of the Blockly team will transition from Google to the Raspberry Pi Foundation.[5]

    User interface

    [edit | edit source]
    Example of Blockly code to convert from Fahrenheit to Celsius
    Example of Blockly code with a while loop

    The default graphical user interface (GUI) of the Blockly editor consists of a toolbox, which holds available blocks, and where a user can select blocks, and a workspace, where a user can drag and drop and rearrange blocks. The workspace also includes, by default, zoom icons, and a trashcan to delete blocks.[6] The editor can be modified easily to customize and limit the available editing features and blocks.

    Customization

    [edit | edit source]

    Blockly includes a set of visual blocks for common operations, and can be customized by adding more blocks. New blocks require a block definition and a generator. The definition describes the block's appearance (user interface) and the generator describes the block's translation to executable code. Definitions and generators can be written in JavaScript, or using a visual set of blocks, the Block Factory, which allows new blocks to be described using extant visual blocks; the intent is to make creating new blocks easier.

    Applications

    [edit | edit source]

    Blockly is used in several notable projects, including:

    • MIT's Scratch (since version 3.0), visual programming environment for education[7]
    • MIT's App Inventor, to create applications for Android.[8]
    • MIT's CoCo, visual collaborative programming website for education.
    • Code.org, to teach introductory programing to millions of students in their Hour of Code program[9]
    • Microsoft's MakeCode, "a free online learn-to-code platform where anyone can build games, code devices, and mod Minecraft" [10][11]
    • RoboBlockly, a web-based robot simulation environment for learning coding and math
    • PICAXE, to control their educational microchips[12]

    Features

    [edit | edit source]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]