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.
fl_nodes_v2 — the node editor
Section titled “fl_nodes_v2 — the node editor”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.
dart_monty — Python, in a sandbox
Section titled “dart_monty — Python, in a sandbox”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.
Everything else
Section titled “Everything else”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.