Description
Patch is a Python-for-Scratchers coding environment that shares many of Leopard's goals and challenges. I've been meeting with the BX Coding team (particularly Elliot) to share what we're working on and what we've learned, and we've been thinking a lot about where we can find win-win opportunities for collaboration.
The purpose of this issue is to discuss how the projects are similar, how they are different, and where there are opportunities for collaboration.
What is Leopard? Patch?
Leopard
What:
- Leopard: A JavaScript game engine that provides a one-to-one mapping between Scratch blocks and JavaScript methods
- sb-edit: An automatic Scratch-to-JavaScript translator that converts .sb3 files to JavaScript code using the Leopard game engine library
- Project editor (alpha): A static website code editor that thoughtfully combines the user experience of VSCode with the user experience of the Scratch project editor
- Social website (later this summer): A social website, analogous to Scratch, which allows users to share static websites (which will generally–but not always–be Leopard games)
Why: To help Scratchers transition to JavaScript & web development.
How: By thoughtfully blending the concepts and conventions from each world.
- The Leopard library ("game engine") provides a one-to-one analogue for each Scratch block. When a Scratch block or tool corresponds nicely to an equivalent tool in JavaScript, we map it directly.
- The Leopard editor provides a visual layout that is similar to Scratch while operating on a directory-based static file system that allows users to build any static website they want.
- The Leopard social website will provide a Scratch-like project sharing experience, extended to meet the needs of a slightly more mature audience (but not drastically different) and incorporating features specifically for sharing static web pages and sites.
Patch
The Patch folks can paint a more accurate picture, but I would describe Patch in the following way:
What:
- Patch editor: A Scratch-like program that enables students to build projects by typing Python code rather than dragging and dropping blocks.
- Patch curriculum: Scratch and Patch lessons and experiences designed to be used by teachers in classrooms.
- Classroom features (later this summer?): More features built into the editor and website that allow teachers to design classroom coding experiences for students–including customized editing experiences that add or remove "magic" to provide on-ramps for students learning to code.
- Non-profit organization: The BXCoding organization teaches coding camps to Ohio students and acts as a source of development funding/resources.
Why: To make computer science education more accessible for both students and teachers.
How: I don't have a great "how" because I'm not on the team. But I will note that they are doing a very good job of focusing on curriculum development and teaching in the real world, not just building a tech tool.
Similarities & Differences
We are both building Scratch -> [language] transition tools. This leads to a lot of inherent similarities.
- We are both building runtimes that emulate Scratch in some way
- We are both building editors that are designed to look like Scratch but allow for text-based code editing
- We are both aiming to help primarily young people who know Scratch develop skills with other languages
Leopard focuses on JavaScript. Patch focuses on Python. But the other differences are more subtle:
- Leopard provides a custom runtime that behaves the same as Scratch. Patch is wiring into the real scratch-vm.
- Leopard takes a zero-magic approach, generating static HTML/CSS/JS that can be run with zero specialized tooling. Patch uses a bit of behind-the-scenes magic to execute Python code in the browser in a way that is attached to the Scratch VM.
- The Leopard editor is, at its core, designed to be un-special. It should rely on standard tooling that developers are familiar with. (In the future, we would hope to support lots of the IDE features that you get in, for example, VSCode.) The Patch editor aims to be customizable so that teachers and curriculum designers can create tailored experiences for students. (For example, you might want specialized autocomplete that only reveals certain functions, etc.)
- The Leopard library/editor/website/approach to everything is designed with at-home enthusiasts in mind. (I always imagine myself from a few years ago as the user.) Patch is designed to be used by teachers and students in classrooms as part of a CS curriculum.
- Leopard has no registered organization and no monetary support. (We're broke, except out of my own pocket. I've been looking at setting up a Patreon, but that hasn't happened yet.) Patch lives under the BX Coding umbrella and has resources and support from the university.
Searching for Win-Wins
I've been chatting with the Patch/BXCoding team, particularly Elliot, and Elliot brought up the idea of combining efforts and finding development win-wins between Leopard and Patch where we can.
There are essentially three layers of infrastructure that both projects are independently building at the moment:
- The code runtime. For Leopard, this means the Leopard game engine/library. For Patch, this means the code that wires up PyScript (Python in browser) to the Scratch VM.
- The code editor. For Leopard, this is currently a more traditional static html/css/js editor (VSCode-inspired), just with the option to view the file tree in a Scratch-like layout. For Patch, this is a more customized Python editor.
- The social/sharing features. For Leopard, this is a Scratch-like website for sharing html/css/js projects (most likely Leopard projects, but there's no limit!) For Patch, this is a website for sharing Patch projects.
At each layer, there are big philosophical and technical differences, but also lots that is the same.
The question for this discussion: Are there win-win opportunities where we can collaborate or share code/knowledge/infrastructure between Leopard and Patch?