About Rune.js

There is a ton of great open source JavaScript drawing libraries on web, and favorites like D3.js, p5.js and Two.js is a great fit for many projects.

However, while teaching my algorithmic graphic design course, I have run into several issues with these frameworks. Either the syntax is too complex, the scene graph is too simple, the renderer supports canvas-only, or there’s a general lack of the features that I care about (typography, color, computational geometry, etc). So I have decided to write something that fits my taste.

My main goal for the project is to make rune.js the best library for making 2D design systems in code. Here’s a quick overview of what I’m working towards:

rune.js was inspired by the Two.js scene graph, Processing’s drawing functions, and Geomerative’s geometry and color classes. It uses Color.js for color support, virtual-dom for DOM diffing, Bezier.js for curve math, and underscore.js for enumerables.

Why not …?

Here’s why I didn’t just use the following libraries.