Tombstone
Jove3
Aug 2007 โ Feb 2008 ยท age 25โ26
What it was
The ground-up rewrite of Jeff's web-application compiler, pulled apart into languages and layers after the first suite hit its wall. An application's reactive state became its own language: cells and database-backed sets with lifecycle hooks, compiled with a cycle check ("Cyclicness is bad") and a topological sort, plus typed input and output ports so one application could be embedded in another. Styling became a second language whose rules sliced and stretched bitmaps into button sprites, then emitted the CSS. The runtime became a JavaScript kernel with reactive cells, a batching query cache and a tiny VM through which the server told the client what to forget. The desktop editor rendered controls by screenshotting them in an embedded browser, and a layout editor running in the browser itself was begun. Two demos compiled and ran. Then it was packed up, on purpose.
Wins, for the age
- At twenty-five, alone, on Visual C# Express, this primate wrote the reactive state graph as a language with typed ports, four years before the Elm architecture (2012) and Redux (2015) made that shape famous.
- Server-directed cache invalidation through a client VM, four years before Meteor and Firebase live data (2012).
- Asked the browser what a control looks like, arriving the same year as Dreamweaver CS4's Live View (2008), and generated sprites from stylesheets alongside Compass and SpriteMe (2009).
- A file watcher that pushed a designer's saved images to the server, the same year Dropbox (2008) launched.
What it taught
- The rewrite extracts the invariant. Three projects in, the dependency graph moved from inferred, to checked, to written as a language.
- Separate what was tangled: the old 4,800-line compiler became ten projects, the largest new file under 900 lines.
- Put the weight in the runtime so generated code stays small.
- The tool must live where the output lives; the diagnosis came late, and was still right.
Genealogy
Ancestors: Career Brkz Rednova: the startup years this rewrite ran beside. HUROX: the social network whose next version it was built for. HUROX JS: the batching cache and opcode RPC, grown into a kernel. Jovian Katana V1: a designer that compiles a whole site. Jovian Suite: the cycle-checked dependency graph, now given its own language. Descendants: Adama: a declared reactive state graph, separate from any view. Kira Project: typed contracts that generate their own client stubs. Lamancha II: reactive fields and viewer formulas as a language again.
Epitaph
Here lies Jove3, which finally saw that its compiler was a reactive graph with a view attached. It was packed up on February 22, 2008, three hundred lines into the version that would have lived in the browser.