twosigma/beakerx

provide two-way autotranslation

scottdraves opened this issue · 2 comments

Beaker Notebook supported two-way autotranslation between any supported language.
BeakerX has so far a prototype that goes from Python and JVM languages to JavaScript and D3.
Further support is planned to be based on https://github.com/apache/arrow

other ideas for implementation:
use http://www.tornadoweb.org/en/stable/queues.html
to fix https://github.com/twosigma/beaker-notebook-archive/blob/master/beaker/runtime.py#L436

another way: make autotranslation be an invisible (?) widget, and let its machinery do the synchronization. this has the downside of duplicating the data, but a lot of upsides of making it more accessible and using an existing implementation.

We are going to go with the widget for 1.0.

complication: widgets do not support multiple kernels.
so while that would do two-way translation eg groovy↔javascript, it would not provide groovy↔python.
proposed solution: each kernel creates its own widget, and our extension keeps the client-sides in sync.
some extra sauce is required on the client anyway to make the values accessible via "beakerx.foo".