- 
                Notifications
    You must be signed in to change notification settings 
- Fork 24
Description
Percival makes Datalog so much more accessible! Now instead of needing to pick an implementation, install it, read the manual, figure out syntax highlighting in your editor, etc etc etc - we can just visit https://percival.ink. There's a bunch of examples, syntax highlighting, and a quick syntax to fetch data. That's great.
But though you've broken the barrier to access a Datalog implementation, there's more we can do to make Datalog useable.
- 
Bring JS into the Percival notebook: We should add JS code blocks that can consume relations and emit new data to the DAG. This will allow learners to use Percival for analysis even if they're Datalog beginners. The user can attempt analysis in Datalog, and bail out to JS if they hit a roadblock. As they gain fluency, users gradually transition to Datalog. If we allow cells to return Promise, Percival becomes end-user extendable via ES6 modules. We can now import anything from NPM - not just CSV & JSON data.The simplest implementation of this idea would be to parse plot cells of the form output_name = (more, than, one, arg) => ....
- 
Bring Datalog rules out of Percival into the wider JS world: publish percival-wasmand/orsrc/lib/**as experimental packages on NPM. Advanced users can build on top of the work here incentivizes further contribution. The risk of publishing to NPM a backwards compatibility burden. But, given the niche nature of Datalog today, I don't expect this to be a substantial issue if we publish using alpha tags like 0.0.0-alpha001
For both (1) and (2), I'm personally excited to explore integrating Percival <--> ObservableHQ.
- We use Plot already. We could also use @observablehq/inspector and @observablehq/stdlib in plot/JS code blocks.
- Observable's runtime is open source. We could investigate replacing the notebook toposort engine with @observablehq/runtime. This could allow importing Observable notebooks into Percival.
- If we publish runtime.buildto NPM, we can import Percival and run datalog within ObservableHQ notebooks. But, we won't have syntax highlighting :(