Some of these features are real (https://github.com/samsquire/live-interface) and some are yet to be implemented.
See the prototypes directory at https://github.com/samsquire/live-interface
Imagine you have an unassuming list.
We can deconstruct
the list to see the data behind it.
Now imagine you had a more complex list such as a todo list or a list of products as in this example where I am writing a review.
The text in this list is but a small subset of data about the product. In the context of my review, this is the price, my rating and a review. What if you could make the document be aware of your data model?
You are repeatedly asked what something is.
Your answer is used to create the next query.
Eventually you have a relationship model:
When you write your list, you can specify what product you want to refer to as well as the particular fact about that product, such as its rating.
Now you might want to customize all occurences of a given attribute. Here I can see visualizations of the 'rating'.
Our list might not be very useful if we have to hand maintain it all the time. What if we could define a list as the result of a calculation - a bit like a spreadsheet?
So we type some code.
The code is recognised by its syntax - red is Ruby and grey is C.
Then it becomes more than just text on a page. It becomes a block of code.
This code block could be anything, a Processing script, sourcecode, LATEX or a DSL.
You should be able to interact with the code block. You might execute it or run syntax checkers over it.
Each high level thing on the page has a type and a set of interactions you can carry out with it. The operations and the data for this thing can be provided by another service. This could be a microservice that advertizes its functionality via HAL.
Semantic autocomplete
gives us a set of options we can use to interact with the document.
Embed
is to include a thing or a subset of another thing. Here I have three documents. The last document is embedded in the middle and the middle in the first.
We should also be able to transform the thing at this point. Like a spreadsheet, I can define one cell in terms of another. I should be able to click two elements and browse a set of search results for valid transformations involving them.
I can dump output from the terminal into the document for slicing up and reconstruction into something different.
This would hopefully make creating arbitrary documents possible from different data sources.