Skip to content

Open source underneath

Ripple Effect is proprietary and its source is not published. Several of the packages it is built on are open source, and two of them are ours. This page is the distinction, kept straight: the packages are open, the app is not.

github.com/WilliamKarolDiCioccio/fl_nodes_v2 · MIT

The canvas. Geometry, wiring, selection, undo, the execution model — control pushed, data pulled — and the minimap. It knows nothing about narrative: a node is whatever the host says a node is, and Ripple Effect is one host. Everything in the boards overview about how a card behaves on the canvas is this package behaving, which is why a contribution there reaches Ripple Effect and every other app built on it.

It is a Flutter package, published on its own, and it takes pull requests.

dart_read_time — how long a passage takes to read

Section titled “dart_read_time — how long a passage takes to read”

github.com/WilliamKarolDiCioccio/dart_read_time · MIT

The estimate under every passage: fifty-four languages, mixed scripts counted a run at a time, and an honest word about whether the figure for a language is measured or reasoned. Pure Dart, no Flutter in it, so a browser or a command line can use it too. The passages overview says what the row under the editor does with it.

pub.dev/packages/dart_monty · MIT

Not ours. dart_monty is written and maintained by runyaga, someone we know, and it has been instrumental in making Ripple Effect what it is: it is how a Script node, a {{ … }} span in a passage, and the console all run Python at all. It wraps monty, a sandboxed Python interpreter from the pydantic team, and hands Dart a way to run a snippet with a time limit, on native and on the web.

The interpreter is a subset of Python — no filesystem, no network, no class, and a standard library that is a short list — which is exactly what makes it safe to run a stranger’s story. The Python overview says how to find out what the sandbox allows on the day you ask, and the reference lists what the app binds into it.

The complete list of third-party components and their licences is in the application, under About → Third-party licences. Each is governed by its own licence, which the app’s does not touch.