Yellow is an engine for web sites with certain characteristics:
Each page has a "back" and a "next" button.
A page may collect data from the user via input-elements.
The choice of next page and what it shows may depend on previously entered data.
The user may go back to change their previously entered data.
Such web sites could be:
a survey
an exam
an interactive tutorial
an interactive story
a registration process
a payment process
an interactive problem solver.
A user's possible paths through the pages is described by a javascript program,
together with some page templates and auxiliary files. Let's call all this together a story.
The program is executed once for every user that visits the web.
It is executed on the server.
It constructs the pages for the user.
The user-entered data appears as variables in the program.
The author of a story has to write:
a simple javascript program that describes the possible paths
for each page, an html template for the page
any CSS or images that appear in the pages.
The data that the user entered may appear in a page and influence its composition.
Which skills must a story author have?
very basic javascript
standard html 5
a little bit of syntax for using user data in the pages.
This web site is a proof-of-concept implementation of the idea.
The language for the program that I use here is javascript.
In principle, any imperative language can be used.
Javascript is a good choice because the people that would be story authors already know (simple) javascript.
On the technical side, for the implementation, I need continuations,
and the rhino implementation of javascript has continuations.